@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.
@@ -38068,9 +38068,8 @@ var TourPopover = function TourPopover(_ref) {
38068
38068
  var click = useClick(context, {
38069
38069
  enabled: !isControlled
38070
38070
  });
38071
- var dismiss = useDismiss(context);
38072
38071
  var role = useRole(context);
38073
- var _useInteractions = useInteractions([click, dismiss, role]),
38072
+ var _useInteractions = useInteractions([click, role]),
38074
38073
  getFloatingProps = _useInteractions.getFloatingProps;
38075
38074
  var contextValue = React__default.useMemo(function () {
38076
38075
  return {
@@ -38146,17 +38145,21 @@ function useDelayedState(initialState, delay) {
38146
38145
  var _React$useState = React__default.useState(initialState),
38147
38146
  _React$useState2 = _slicedToArray(_React$useState, 2),
38148
38147
  delayedState = _React$useState2[0],
38149
- setDelayedState = _React$useState2[1];
38148
+ _setDelayedState = _React$useState2[1];
38150
38149
  var timeoutRef = React__default.useRef(undefined);
38151
38150
  React__default.useEffect(function () {
38152
38151
  timeoutRef.current = window.setTimeout(function () {
38153
- setDelayedState(initialState);
38152
+ _setDelayedState(initialState);
38154
38153
  }, delay);
38155
38154
  return function () {
38156
38155
  window.clearTimeout(timeoutRef.current);
38157
38156
  };
38158
38157
  }, [delay, initialState]);
38159
- return delayedState;
38158
+ var setDelayedState = React__default.useCallback(function (newState) {
38159
+ _setDelayedState(newState);
38160
+ window.clearTimeout(timeoutRef.current);
38161
+ }, []);
38162
+ return [delayedState, setDelayedState];
38160
38163
  }
38161
38164
 
38162
38165
  /**
@@ -38428,10 +38431,19 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38428
38431
  setSize = _useState4[1];
38429
38432
 
38430
38433
  // delayed state is used to let the transition finish before reacting to the state changes
38431
- var delayedActiveStep = useDelayedState(activeStep, transitionDelay);
38432
- var delayedSize = useDelayedState(size, transitionDelay);
38434
+ var _useDelayedState = useDelayedState(activeStep, transitionDelay),
38435
+ _useDelayedState2 = _slicedToArray(_useDelayedState, 1),
38436
+ delayedActiveStep = _useDelayedState2[0];
38437
+ var _useDelayedState3 = useDelayedState(size, transitionDelay),
38438
+ _useDelayedState4 = _slicedToArray(_useDelayedState3, 2),
38439
+ delayedSize = _useDelayedState4[0],
38440
+ setDelayedSize = _useDelayedState4[1];
38433
38441
  // keep track of when we are transitioning between steps
38434
38442
  var isTransitioning = useIsTransitioningBetweenSteps(activeStep, transitionDelay);
38443
+ var _useState5 = useState(false),
38444
+ _useState6 = _slicedToArray(_useState5, 2),
38445
+ isScrolling = _useState6[0],
38446
+ setIsScrolling = _useState6[1];
38435
38447
  var currentStepRef = refIdMap.get((_steps$activeStep = steps[activeStep]) === null || _steps$activeStep === void 0 ? void 0 : _steps$activeStep.name);
38436
38448
  var intersection = useIntersectionObserver(currentStepRef, {
38437
38449
  threshold: 0.5
@@ -38478,6 +38490,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38478
38490
  }, []);
38479
38491
  var updateMaskSize = useCallback(function () {
38480
38492
  var _steps$activeStep2;
38493
+ var shouldSkipDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
38481
38494
  var ref = refIdMap.get((_steps$activeStep2 = steps[activeStep]) === null || _steps$activeStep2 === void 0 ? void 0 : _steps$activeStep2.name);
38482
38495
  if (!(ref !== null && ref !== void 0 && ref.current)) return;
38483
38496
  var rect = ref.current.getBoundingClientRect();
@@ -38487,7 +38500,15 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38487
38500
  width: rect.width,
38488
38501
  height: rect.height
38489
38502
  });
38490
- }, [activeStep, refIdMap, steps]);
38503
+ if (shouldSkipDelay) {
38504
+ setDelayedSize({
38505
+ x: rect.x,
38506
+ y: rect.y,
38507
+ width: rect.width,
38508
+ height: rect.height
38509
+ });
38510
+ }
38511
+ }, [activeStep, refIdMap, setDelayedSize, steps]);
38491
38512
  var scrollToStep = useCallback(function () {
38492
38513
  var _steps$delayedActiveS;
38493
38514
  var ref = refIdMap.get((_steps$delayedActiveS = steps[delayedActiveStep]) === null || _steps$delayedActiveS === void 0 ? void 0 : _steps$delayedActiveS.name);
@@ -38495,36 +38516,42 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38495
38516
 
38496
38517
  // If the element is already in view, don't scroll
38497
38518
  if (intersection !== null && intersection !== void 0 && intersection.isIntersecting) return;
38519
+ setIsScrolling(true);
38498
38520
  smoothScroll(ref.current, {
38499
38521
  behavior: 'smooth',
38500
38522
  block: 'center',
38501
38523
  inline: 'center'
38502
38524
  }).then(function () {
38503
- updateMaskSize();
38525
+ // wait for the scroll to finish before updating the mask size
38526
+ // We also don't want to delay the size update since its already delayed by the scroll
38527
+ updateMaskSize(true);
38504
38528
  })["finally"](function () {
38505
- // do nothing
38529
+ setIsScrolling(false);
38506
38530
  });
38507
38531
  }, [delayedActiveStep, refIdMap, steps, updateMaskSize, intersection === null || intersection === void 0 ? void 0 : intersection.isIntersecting]);
38508
38532
 
38509
38533
  // Update the size of the mask when the active step changes
38510
38534
  useIsomorphicLayoutEffect(function () {
38511
38535
  updateMaskSize();
38512
- }, [isOpen, activeStep, refIdMap, steps, updateMaskSize]);
38536
+ }, [activeStep, updateMaskSize]);
38513
38537
 
38514
38538
  // Scroll into view when the active step changes
38515
38539
  useIsomorphicLayoutEffect(function () {
38540
+ // We need to wait for the transition to finish before scrolling
38541
+ // Otherwise the browser sometimes interrupts the scroll
38542
+ var scrollDelay = 100;
38516
38543
  setTimeout(function () {
38517
38544
  if (!isOpen) return;
38518
38545
  if (isTransitioning) return;
38519
38546
  scrollToStep();
38520
- }, transitionDelay);
38547
+ }, scrollDelay);
38521
38548
  }, [isOpen, scrollToStep, isTransitioning]);
38522
- useLockBodyScroll(isOpen);
38523
38549
 
38524
38550
  // reset the mask size when the tour is closed
38525
- React__default.useEffect(function () {
38551
+ useIsomorphicLayoutEffect(function () {
38526
38552
  if (isOpen) {
38527
- updateMaskSize();
38553
+ // on initial mount, we don't want to delay the size update
38554
+ updateMaskSize(true);
38528
38555
  onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange({
38529
38556
  isOpen: isOpen
38530
38557
  });
@@ -38539,6 +38566,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38539
38566
  }
38540
38567
  // eslint-disable-next-line react-hooks/exhaustive-deps
38541
38568
  }, [isOpen]);
38569
+ useLockBodyScroll(isOpen);
38542
38570
  var contextValue = useMemo(function () {
38543
38571
  return {
38544
38572
  attachStep: attachStep,
@@ -38549,7 +38577,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
38549
38577
  value: contextValue,
38550
38578
  children: [/*#__PURE__*/jsx$1(FloatingPortal, {
38551
38579
  children: isOpen ? /*#__PURE__*/jsx$1(SpotlightPopoverTourMask, {
38552
- isTransitioning: isTransitioning,
38580
+ isTransitioning: isTransitioning || isScrolling,
38553
38581
  padding: theme.spacing[4],
38554
38582
  size: delayedSize
38555
38583
  }) : null