{"version":3,"sources":["../src/components/style.ts","../src/components/SvgMask.tsx","../src/components/ViewMask.tsx","../src/components/default-ui/StepNumber.tsx","../src/contexts/CopilotProvider.tsx","../src/components/CopilotModal.tsx","../src/components/default-ui/Tooltip.tsx","../src/components/default-ui/Button.tsx","../src/hooks/useStateWithAwait.ts","../src/hooks/useStepsMap.ts","../src/hocs/walkthroughable.tsx","../src/components/CopilotStep.tsx","../src/index.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\n\nexport const STEP_NUMBER_RADIUS: number = 14;\nexport const STEP_NUMBER_DIAMETER: number = STEP_NUMBER_RADIUS * 2;\nexport const ZINDEX: number = 100;\nexport const MARGIN: number = 13;\nexport const OFFSET_WIDTH: number = 4;\nexport const ARROW_SIZE: number = 6;\n\nexport const styles = StyleSheet.create({\n  container: {\n    position: \"absolute\",\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    zIndex: ZINDEX,\n  },\n  arrow: {\n    position: \"absolute\",\n    borderWidth: ARROW_SIZE,\n  },\n  tooltip: {\n    position: \"absolute\",\n    paddingTop: 15,\n    paddingHorizontal: 15,\n    backgroundColor: \"#fff\",\n    borderRadius: 3,\n    overflow: \"hidden\",\n  },\n  tooltipText: {},\n  tooltipContainer: {\n    flex: 1,\n  },\n  stepNumberContainer: {\n    position: \"absolute\",\n    width: STEP_NUMBER_DIAMETER,\n    height: STEP_NUMBER_DIAMETER,\n    overflow: \"hidden\",\n    zIndex: ZINDEX + 1,\n  },\n  stepNumber: {\n    flex: 1,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderWidth: 2,\n    borderRadius: STEP_NUMBER_RADIUS,\n    borderColor: \"#FFFFFF\",\n    backgroundColor: \"#27ae60\",\n  },\n  stepNumberText: {\n    fontSize: 10,\n    backgroundColor: \"transparent\",\n    color: \"#FFFFFF\",\n  },\n  button: {\n    padding: 10,\n  },\n  buttonText: {\n    color: \"#27ae60\",\n  },\n  bottomBar: {\n    marginTop: 10,\n    flexDirection: \"row\",\n    justifyContent: \"flex-end\",\n  },\n  overlayRectangle: {\n    position: \"absolute\",\n    backgroundColor: \"rgba(0,0,0,0.2)\",\n    left: 0,\n    top: 0,\n    bottom: 0,\n    right: 0,\n  },\n  overlayContainer: {\n    position: \"absolute\",\n    left: 0,\n    top: 0,\n    bottom: 0,\n    right: 0,\n  },\n});\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n  Animated,\n  Dimensions,\n  Easing,\n  View,\n  type LayoutChangeEvent,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\n\nimport type { MaskProps, SvgMaskPathFunction, ValueXY } from \"../types\";\n\nconst AnimatedSvgPath = Animated.createAnimatedComponent(Path);\nconst windowDimensions = Dimensions.get(\"window\");\n\nconst defaultSvgPath: SvgMaskPathFunction = ({\n  size,\n  position,\n  canvasSize,\n}): string => {\n  const positionX = (position.x as any)._value as number;\n  const positionY = (position.y as any)._value as number;\n  const sizeX = (size.x as any)._value as number;\n  const sizeY = (size.y as any)._value as number;\n\n  return `M0,0H${canvasSize.x}V${canvasSize.y}H0V0ZM${positionX},${positionY}H${\n    positionX + sizeX\n  }V${positionY + sizeY}H${positionX}V${positionY}Z`;\n};\n\nexport const SvgMask = ({\n  size,\n  position,\n  style,\n  easing = Easing.linear,\n  animationDuration = 300,\n  animated,\n  backdropColor,\n  svgMaskPath = defaultSvgPath,\n  onClick,\n  currentStep,\n}: MaskProps) => {\n  const [canvasSize, setCanvasSize] = useState<ValueXY>({\n    x: windowDimensions.width,\n    y: windowDimensions.height,\n  });\n  const sizeValue = useRef<Animated.ValueXY>(\n    new Animated.ValueXY(size)\n  ).current;\n  const positionValue = useRef<Animated.ValueXY>(\n    new Animated.ValueXY(position)\n  ).current;\n  const maskRef = useRef<any>(null);\n\n  const animationListener = useCallback(() => {\n    const d: string = svgMaskPath({\n      size: sizeValue,\n      position: positionValue,\n      canvasSize,\n      step: currentStep,\n    });\n\n    if (maskRef.current) {\n      maskRef.current.setNativeProps({ d });\n    }\n  }, [canvasSize, currentStep, svgMaskPath, positionValue, sizeValue]);\n\n  const animate = useCallback(\n    (toSize: ValueXY = size, toPosition: ValueXY = position) => {\n      if (animated) {\n        Animated.parallel([\n          Animated.timing(sizeValue, {\n            toValue: toSize,\n            duration: animationDuration,\n            easing,\n            useNativeDriver: false,\n          }),\n          Animated.timing(positionValue, {\n            toValue: toPosition,\n            duration: animationDuration,\n            easing,\n            useNativeDriver: false,\n          }),\n        ]).start();\n      } else {\n        sizeValue.setValue(toSize);\n        positionValue.setValue(toPosition);\n      }\n    },\n    [\n      animated,\n      animationDuration,\n      easing,\n      positionValue,\n      position,\n      size,\n      sizeValue,\n    ]\n  );\n\n  useEffect(() => {\n    const id = positionValue.addListener(animationListener);\n    return () => {\n      positionValue.removeListener(id);\n    };\n  }, [animationListener, positionValue]);\n\n  useEffect(() => {\n    if (size && position) {\n      animate(size, position);\n    }\n  }, [animate, position, size]);\n\n  const handleLayout = ({\n    nativeEvent: {\n      layout: { width, height },\n    },\n  }: LayoutChangeEvent) => {\n    setCanvasSize({\n      x: width,\n      y: height,\n    });\n  };\n\n  return (\n    <View\n      style={style}\n      onLayout={handleLayout}\n      onStartShouldSetResponder={onClick}\n    >\n      {canvasSize ? (\n        <Svg pointerEvents=\"none\" width={canvasSize.x} height={canvasSize.y}>\n          <AnimatedSvgPath\n            ref={maskRef}\n            fill={backdropColor}\n            fillRule=\"evenodd\"\n            strokeWidth={1}\n            d={svgMaskPath({\n              size: sizeValue,\n              position: positionValue,\n              canvasSize,\n              step: currentStep,\n            })}\n          />\n        </Svg>\n      ) : null}\n    </View>\n  );\n};\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { Animated, View } from \"react-native\";\nimport { styles } from \"./style\";\n\nimport type { MaskProps, ValueXY } from \"../types\";\n\nexport const ViewMask = (props: MaskProps) => {\n  const sizeValue = useRef<Animated.ValueXY>(\n    new Animated.ValueXY(props.size)\n  ).current;\n  const positionValue = useRef<Animated.ValueXY>(\n    new Animated.ValueXY(props.position)\n  ).current;\n  const [animated, setAnimated] = useState(false);\n\n  const animate = useCallback(\n    (size: ValueXY = props.size, position: ValueXY = props.position): void => {\n      if (animated) {\n        Animated.parallel([\n          Animated.timing(sizeValue, {\n            toValue: size,\n            duration: props.animationDuration,\n            easing: props.easing,\n            useNativeDriver: false,\n          }),\n          Animated.timing(positionValue, {\n            toValue: position,\n            duration: props.animationDuration,\n            easing: props.easing,\n            useNativeDriver: false,\n          }),\n        ]).start();\n      } else {\n        sizeValue.setValue(size);\n        positionValue.setValue(position);\n        setAnimated(props.animated);\n      }\n    },\n    [\n      animated,\n      positionValue,\n      props.animated,\n      props.animationDuration,\n      props.easing,\n      props.position,\n      props.size,\n      sizeValue,\n    ]\n  );\n\n  useEffect(() => {\n    if (props.position || props.size) {\n      animate(props.size, props.position);\n    }\n  }, [animate, props.position, props.size]);\n\n  const width = props.layout ? props.layout.width : 500;\n  const height = props.layout ? props.layout.height : 500;\n\n  const leftOverlayRight = Animated.add(\n    width,\n    Animated.multiply(positionValue.x, -1)\n  );\n  const rightOverlayLeft = Animated.add(sizeValue.x, positionValue.x);\n  const bottomOverlayTopBoundary = Animated.add(sizeValue.y, positionValue.y);\n  const topOverlayBottomBoundary = Animated.add(\n    height,\n    Animated.multiply(-1, positionValue.y)\n  );\n  const verticalOverlayLeftBoundary = positionValue.x;\n  const verticalOverlayRightBoundary = Animated.add(\n    width,\n    Animated.multiply(-1, rightOverlayLeft)\n  );\n\n  return (\n    <View style={props.style} onStartShouldSetResponder={props.onClick}>\n      {[\n        {\n          right: leftOverlayRight,\n          backgroundColor: props.backdropColor,\n        },\n        {\n          left: rightOverlayLeft,\n          backgroundColor: props.backdropColor,\n        },\n        {\n          top: bottomOverlayTopBoundary,\n          left: verticalOverlayLeftBoundary,\n          right: verticalOverlayRightBoundary,\n          backgroundColor: props.backdropColor,\n        },\n        {\n          bottom: topOverlayBottomBoundary,\n          left: verticalOverlayLeftBoundary,\n          right: verticalOverlayRightBoundary,\n          backgroundColor: props.backdropColor,\n        },\n      ].map((style, index) => (\n        <Animated.View key={index} style={[styles.overlayRectangle, style]} />\n      ))}\n    </View>\n  );\n};\n","import React, { type FunctionComponent } from \"react\";\nimport { Text, View } from \"react-native\";\nimport { useCopilot } from \"../../contexts/CopilotProvider\";\n\nimport { styles } from \"../style\";\n\nexport const StepNumber: FunctionComponent<unknown> = () => {\n  const { currentStepNumber } = useCopilot();\n\n  return (\n    <View style={styles.stepNumber}>\n      <Text style={styles.stepNumberText}>{currentStepNumber}</Text>\n    </View>\n  );\n};\n","import mitt, { type Emitter } from \"mitt\";\nimport React, {\n  createContext,\n  useCallback,\n  useContext,\n  useMemo,\n  useRef,\n  useState,\n  type PropsWithChildren,\n} from \"react\";\nimport { findNodeHandle, type ScrollView } from \"react-native\";\nimport {\n  CopilotModal,\n  type CopilotModalHandle,\n} from \"../components/CopilotModal\";\nimport { OFFSET_WIDTH } from \"../components/style\";\nimport { useStateWithAwait } from \"../hooks/useStateWithAwait\";\nimport { useStepsMap } from \"../hooks/useStepsMap\";\nimport { type CopilotOptions, type Step } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype Events = {\n  start: undefined;\n  stop: undefined;\n  stepChange: Step | undefined;\n};\n\ninterface CopilotContextType {\n  registerStep: (step: Step) => void;\n  unregisterStep: (stepName: string) => void;\n  currentStep: Step | undefined;\n  start: (\n    fromStep?: string,\n    suppliedScrollView?: ScrollView | null\n  ) => Promise<void>;\n  stop: () => Promise<void>;\n  goToNext: () => Promise<void>;\n  goToNth: (n: number) => Promise<void>;\n  goToPrev: () => Promise<void>;\n  visible: boolean;\n  copilotEvents: Emitter<Events>;\n  isFirstStep: boolean;\n  isLastStep: boolean;\n  currentStepNumber: number;\n  totalStepsNumber: number;\n}\n\n/*\nThis is the maximum wait time for the steps to be registered before starting the tutorial\nAt 60fps means 2 seconds\n*/\nconst MAX_START_TRIES = 120;\n\nconst CopilotContext = createContext<CopilotContextType | undefined>(undefined);\n\nexport const CopilotProvider = ({\n  verticalOffset = 0,\n  children,\n  ...rest\n}: PropsWithChildren<CopilotOptions>) => {\n  const startTries = useRef(0);\n  const copilotEvents = useRef(mitt<Events>()).current;\n  const modal = useRef<CopilotModalHandle | null>(null);\n\n  const [visible, setVisibility] = useStateWithAwait(false);\n  const [scrollView, setScrollView] = useState<ScrollView | null>(null);\n\n  const {\n    currentStep,\n    currentStepNumber,\n    totalStepsNumber,\n    getFirstStep,\n    getPrevStep,\n    getNextStep,\n    getNthStep,\n    isFirstStep,\n    isLastStep,\n    setCurrentStepState,\n    steps,\n    registerStep,\n    unregisterStep,\n  } = useStepsMap();\n\n  const moveModalToStep = useCallback(\n    async (step: Step) => {\n      const size = await step?.measure();\n\n      if (!size) {\n        return;\n      }\n\n      await modal.current?.animateMove({\n        width: size.width + OFFSET_WIDTH,\n        height: size.height + OFFSET_WIDTH,\n        x: size.x - OFFSET_WIDTH / 2,\n        y: size.y - OFFSET_WIDTH / 2 + verticalOffset,\n      });\n    },\n    [verticalOffset]\n  );\n\n  const setCurrentStep = useCallback(\n    async (step?: Step, move: boolean = true) => {\n      setCurrentStepState(step);\n      copilotEvents.emit(\"stepChange\", step);\n\n      if (scrollView != null) {\n        const nodeHandle = findNodeHandle(scrollView);\n        if (nodeHandle) {\n          step?.wrapperRef.current?.measureLayout(\n            nodeHandle,\n            (_x, y, _w, h) => {\n              const yOffset = y > 0 ? y - h / 2 : 0;\n              scrollView.scrollTo({ y: yOffset, animated: false });\n            }\n          );\n        }\n      }\n\n      setTimeout(\n        () => {\n          if (move && step) {\n            void moveModalToStep(step);\n          }\n        },\n        scrollView != null ? 100 : 0\n      );\n    },\n    [copilotEvents, moveModalToStep, scrollView, setCurrentStepState]\n  );\n\n  const start = useCallback(\n    async (fromStep?: string, suppliedScrollView: ScrollView | null = null) => {\n      if (scrollView == null) {\n        setScrollView(suppliedScrollView);\n      }\n\n      const currentStep = fromStep ? steps[fromStep] : getFirstStep();\n\n      if (startTries.current > MAX_START_TRIES) {\n        startTries.current = 0;\n        return;\n      }\n\n      if (currentStep == null) {\n        startTries.current += 1;\n        requestAnimationFrame(() => {\n          void start(fromStep);\n        });\n      } else {\n        copilotEvents.emit(\"start\");\n        await setCurrentStep(currentStep);\n        await moveModalToStep(currentStep);\n        await setVisibility(true);\n        startTries.current = 0;\n      }\n    },\n    [\n      copilotEvents,\n      getFirstStep,\n      moveModalToStep,\n      scrollView,\n      setCurrentStep,\n      setVisibility,\n      steps,\n    ]\n  );\n\n  const stop = useCallback(async () => {\n    await setVisibility(false);\n    copilotEvents.emit(\"stop\");\n  }, [copilotEvents, setVisibility]);\n\n  const next = useCallback(async () => {\n    await setCurrentStep(getNextStep());\n  }, [getNextStep, setCurrentStep]);\n\n  const nth = useCallback(\n    async (n: number) => {\n      await setCurrentStep(getNthStep(n));\n    },\n    [getNthStep, setCurrentStep]\n  );\n\n  const prev = useCallback(async () => {\n    await setCurrentStep(getPrevStep());\n  }, [getPrevStep, setCurrentStep]);\n\n  const value = useMemo(\n    () => ({\n      registerStep,\n      unregisterStep,\n      currentStep,\n      start,\n      stop,\n      visible,\n      copilotEvents,\n      goToNext: next,\n      goToNth: nth,\n      goToPrev: prev,\n      isFirstStep,\n      isLastStep,\n      currentStepNumber,\n      totalStepsNumber,\n    }),\n    [\n      registerStep,\n      unregisterStep,\n      currentStep,\n      start,\n      stop,\n      visible,\n      copilotEvents,\n      next,\n      nth,\n      prev,\n      isFirstStep,\n      isLastStep,\n      currentStepNumber,\n      totalStepsNumber,\n    ]\n  );\n\n  return (\n    <CopilotContext.Provider value={value}>\n      <>\n        <CopilotModal\n          ref={modal}\n          {...rest}\n        />\n        {children}\n      </>\n    </CopilotContext.Provider>\n  );\n};\n\nexport const useCopilot = () => {\n  const value = useContext(CopilotContext);\n  if (value == null) {\n    throw new Error(\"You must wrap your app inside CopilotProvider\");\n  }\n\n  return value;\n};\n","import React, {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n  useState,\n} from \"react\";\nimport {\n  Animated,\n  Easing,\n  Modal,\n  NativeModules,\n  Platform,\n  StatusBar,\n  View,\n  type LayoutChangeEvent,\n  type LayoutRectangle,\n  type ViewStyle,\n} from \"react-native\";\nimport { useCopilot } from \"../contexts/CopilotProvider\";\nimport type { CopilotOptions } from \"../types\";\nimport { StepNumber } from \"./default-ui/StepNumber\";\nimport { Tooltip } from \"./default-ui/Tooltip\";\nimport {\n  ARROW_SIZE,\n  MARGIN,\n  STEP_NUMBER_DIAMETER,\n  STEP_NUMBER_RADIUS,\n  styles,\n} from \"./style\";\n\ntype Props = CopilotOptions;\n\nconst noop = () => {};\n\nconst makeDefaultLayout = (): LayoutRectangle => ({\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n});\n\nexport interface CopilotModalHandle {\n  animateMove: (obj: LayoutRectangle) => Promise<void>;\n}\n\nexport const CopilotModal = forwardRef<CopilotModalHandle, Props>(\n  function CopilotModal(\n    {\n      easing = Easing.elastic(0.7),\n      animationDuration = 400,\n      tooltipComponent: TooltipComponent = Tooltip,\n      tooltipStyle = {},\n      stepNumberComponent: StepNumberComponent = StepNumber,\n      overlay = typeof NativeModules.RNSVGSvgViewManager !== \"undefined\"\n        ? \"svg\"\n        : \"view\",\n      animated = typeof NativeModules.RNSVGSvgViewManager !== \"undefined\",\n      androidStatusBarVisible = false,\n      backdropColor = \"rgba(0, 0, 0, 0.4)\",\n      labels = {\n        finish: \"Finish\",\n        next: \"Next\",\n        previous: \"Previous\",\n        skip: \"Skip\",\n      },\n      svgMaskPath,\n      stopOnOutsideClick = false,\n      arrowColor = \"#fff\",\n      arrowSize = ARROW_SIZE,\n      margin = MARGIN,\n    },\n    ref,\n  ) {\n    const { stop, currentStep, visible } = useCopilot();\n    const [tooltipStyles, setTooltipStyles] = useState({});\n    const [arrowStyles, setArrowStyles] = useState({});\n    const [animatedValues] = useState({\n      top: new Animated.Value(0),\n      stepNumberLeft: new Animated.Value(0),\n    });\n    const layoutRef = useRef(makeDefaultLayout());\n    const [layout, setLayout] = useState<LayoutRectangle | undefined>(\n      undefined,\n    );\n    const [maskRect, setMaskRect] = useState<LayoutRectangle | undefined>();\n\n    const [isAnimated, setIsAnimated] = useState(false);\n    const [containerVisible, setContainerVisible] = useState(false);\n\n    useEffect(() => {\n      if (visible) {\n        setContainerVisible(true);\n      }\n    }, [visible]);\n\n    useEffect(() => {\n      if (!visible) {\n        reset();\n      }\n    }, [visible]);\n\n    const handleLayoutChange = ({\n      nativeEvent: { layout: newLayout },\n    }: LayoutChangeEvent) => {\n      layoutRef.current = newLayout;\n    };\n\n    const measure = async (): Promise<LayoutRectangle> => {\n      return await new Promise((resolve) => {\n        const updateLayout = () => {\n          if (layoutRef.current.width !== 0) {\n            resolve(layoutRef.current);\n          } else {\n            requestAnimationFrame(updateLayout);\n          }\n        };\n\n        updateLayout();\n      });\n    };\n\n    const _animateMove = useCallback(\n      async (rect: LayoutRectangle) => {\n        const newMeasuredLayout = await measure();\n        if (!androidStatusBarVisible && Platform.OS === \"android\") {\n          rect.y -= StatusBar.currentHeight ?? 0;\n        }\n\n        let stepNumberLeft = rect.x - STEP_NUMBER_RADIUS;\n\n        if (stepNumberLeft < 0) {\n          stepNumberLeft = rect.x + rect.width - STEP_NUMBER_RADIUS;\n          if (stepNumberLeft > newMeasuredLayout.width - STEP_NUMBER_DIAMETER) {\n            stepNumberLeft = newMeasuredLayout.width - STEP_NUMBER_DIAMETER;\n          }\n        }\n\n        const center = {\n          x: rect.x + rect.width / 2,\n          y: rect.y + rect.height / 2,\n        };\n\n        const relativeToLeft = center.x;\n        const relativeToTop = center.y;\n        const relativeToBottom = Math.abs(center.y - newMeasuredLayout.height);\n        const relativeToRight = Math.abs(center.x - newMeasuredLayout.width);\n\n        const verticalPosition =\n          relativeToBottom > relativeToTop ? \"bottom\" : \"top\";\n        const horizontalPosition =\n          relativeToLeft > relativeToRight ? \"left\" : \"right\";\n\n        const tooltip: ViewStyle = {};\n        const arrow: ViewStyle = {};\n\n        arrow.position = \"absolute\";\n\n        if (verticalPosition === \"bottom\") {\n          tooltip.top = rect.y + rect.height + margin;\n          arrow.borderBottomColor = arrowColor;\n          arrow.borderTopColor = \"transparent\";\n          arrow.borderLeftColor = \"transparent\";\n          arrow.borderRightColor = \"transparent\";\n          arrow.top = tooltip.top - arrowSize * 2;\n        } else {\n          tooltip.bottom = newMeasuredLayout.height - (rect.y - margin);\n          arrow.borderTopColor = arrowColor;\n          arrow.borderLeftColor = \"transparent\";\n          arrow.borderRightColor = \"transparent\";\n          arrow.borderBottomColor = \"transparent\";\n          arrow.bottom = tooltip.bottom - arrowSize * 2;\n        }\n\n        if (horizontalPosition === \"left\") {\n          tooltip.right = Math.max(\n            newMeasuredLayout.width - (rect.x + rect.width),\n            0,\n          );\n          tooltip.right =\n            tooltip.right === 0 ? tooltip.right + margin : tooltip.right;\n          tooltip.maxWidth = newMeasuredLayout.width - tooltip.right - margin;\n          arrow.right = tooltip.right + margin;\n        } else {\n          tooltip.left = Math.max(rect.x, 0);\n          tooltip.left =\n            tooltip.left === 0 ? tooltip.left + margin : tooltip.left;\n          tooltip.maxWidth = newMeasuredLayout.width - tooltip.left - margin;\n          arrow.left = tooltip.left + margin;\n        }\n\n        sanitize(arrow);\n        sanitize(tooltip);\n        sanitize(rect);\n\n        const animate = [\n          [\"top\", rect.y],\n          [\"stepNumberLeft\", stepNumberLeft],\n        ] as const;\n\n        if (isAnimated) {\n          Animated.parallel(\n            animate.map(([key, value]) => {\n              return Animated.timing(animatedValues[key], {\n                toValue: value,\n                duration: animationDuration,\n                easing,\n                useNativeDriver: false,\n              });\n            }),\n          ).start();\n        } else {\n          animate.forEach(([key, value]) => {\n            animatedValues[key].setValue(value);\n          });\n        }\n\n        setTooltipStyles(tooltip);\n        setArrowStyles(arrow);\n        setLayout(newMeasuredLayout);\n        setMaskRect({\n          width: rect.width,\n          height: rect.height,\n          x: Math.floor(Math.max(rect.x, 0)),\n          y: Math.floor(Math.max(rect.y, 0)),\n        });\n      },\n      [\n        androidStatusBarVisible,\n        animatedValues,\n        animationDuration,\n        arrowColor,\n        easing,\n        isAnimated,\n        arrowSize,\n        margin,\n      ],\n    );\n\n    const animateMove = useCallback<CopilotModalHandle[\"animateMove\"]>(\n      async (rect) => {\n        await new Promise<void>((resolve) => {\n          const frame = async () => {\n            await _animateMove(rect);\n            resolve();\n          };\n\n          setContainerVisible(true);\n          requestAnimationFrame(() => {\n            void frame();\n          });\n        });\n      },\n      [_animateMove],\n    );\n\n    const reset = () => {\n      setIsAnimated(false);\n      setContainerVisible(false);\n      setLayout(undefined);\n    };\n\n    const handleStop = () => {\n      reset();\n      void stop();\n    };\n\n    const handleMaskClick = () => {\n      if (stopOnOutsideClick) {\n        handleStop();\n      }\n    };\n\n    useImperativeHandle(\n      ref,\n      () => {\n        return {\n          animateMove,\n        };\n      },\n      [animateMove],\n    );\n\n    const modalVisible = containerVisible || visible;\n    const contentVisible = layout != null && containerVisible;\n\n    if (!modalVisible) {\n      return null;\n    }\n\n    return (\n      <Modal\n        animationType=\"none\"\n        visible\n        onRequestClose={noop}\n        transparent\n        supportedOrientations={[\"portrait\", \"landscape\"]}\n      >\n        <View style={styles.container} onLayout={handleLayoutChange}>\n          {contentVisible && renderMask()}\n          {contentVisible && renderTooltip()}\n        </View>\n      </Modal>\n    );\n\n    function renderMask() {\n      const MaskComponent =\n        overlay === \"svg\"\n          ? // eslint-disable-next-line @typescript-eslint/no-var-requires\n            require(\"./SvgMask\").SvgMask\n          : // eslint-disable-next-line @typescript-eslint/no-var-requires\n            require(\"./ViewMask\").ViewMask;\n\n      const size = maskRect && {\n        x: maskRect.width,\n        y: maskRect.height,\n      };\n\n      const position = maskRect;\n\n      return (\n        <MaskComponent\n          animated={animated}\n          layout={layout}\n          style={styles.overlayContainer}\n          size={size}\n          position={position}\n          easing={easing}\n          animationDuration={animationDuration}\n          backdropColor={backdropColor}\n          svgMaskPath={svgMaskPath}\n          onClick={handleMaskClick}\n          currentStep={currentStep}\n        />\n      );\n    }\n\n    function renderTooltip() {\n      if (!currentStep) {\n        return null;\n      }\n      return (\n        <>\n          <Animated.View\n            key=\"stepNumber\"\n            style={[\n              styles.stepNumberContainer,\n              {\n                left: animatedValues.stepNumberLeft,\n                top: Animated.add(animatedValues.top, -STEP_NUMBER_RADIUS),\n              },\n            ]}\n          >\n            <StepNumberComponent />\n          </Animated.View>\n          {!!arrowSize && (\n            <Animated.View key=\"arrow\" style={[styles.arrow, arrowStyles]} />\n          )}\n          <Animated.View\n            key=\"tooltip\"\n            style={[styles.tooltip, tooltipStyles, tooltipStyle]}\n          >\n            <TooltipComponent labels={labels} />\n          </Animated.View>\n        </>\n      );\n    }\n  },\n);\n\nconst floorify = (obj: Record<string, any>) => {\n  Object.keys(obj).forEach((key) => {\n    if (typeof obj[key] === \"number\") {\n      obj[key] = Math.floor(obj[key]);\n    }\n  });\n};\n\nconst removeNan = (obj: Record<string, any>) => {\n  Object.keys(obj).forEach((key) => {\n    if (typeof obj[key] === \"number\" && isNaN(obj[key])) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete obj[key];\n    }\n  });\n};\n\nconst sanitize = (obj: Record<any, any>) => {\n  floorify(obj);\n  removeNan(obj);\n};\n","import React from \"react\";\nimport { Text, TouchableOpacity, View } from \"react-native\";\n\nimport { Button } from \"./Button\";\n\nimport { styles } from \"../style\";\n\nimport type { TooltipProps } from \"../../types\";\nimport { useCopilot } from \"../../contexts/CopilotProvider\";\n\nexport const Tooltip = ({ labels }: TooltipProps) => {\n  const { goToNext, goToPrev, stop, currentStep, isFirstStep, isLastStep } =\n    useCopilot();\n\n  const handleStop = () => {\n    void stop();\n  };\n  const handleNext = () => {\n    void goToNext();\n  };\n\n  const handlePrev = () => {\n    void goToPrev();\n  };\n\n  return (\n    <View>\n      <View style={styles.tooltipContainer}>\n        <Text testID=\"stepDescription\" style={styles.tooltipText}>\n          {currentStep?.text}\n        </Text>\n      </View>\n      <View style={[styles.bottomBar]}>\n        {!isLastStep ? (\n          <TouchableOpacity onPress={handleStop}>\n            <Button>{labels.skip}</Button>\n          </TouchableOpacity>\n        ) : null}\n        {!isFirstStep ? (\n          <TouchableOpacity onPress={handlePrev}>\n            <Button>{labels.previous}</Button>\n          </TouchableOpacity>\n        ) : null}\n        {!isLastStep ? (\n          <TouchableOpacity onPress={handleNext}>\n            <Button>{labels.next}</Button>\n          </TouchableOpacity>\n        ) : (\n          <TouchableOpacity onPress={handleStop}>\n            <Button>{labels.finish}</Button>\n          </TouchableOpacity>\n        )}\n      </View>\n    </View>\n  );\n};\n","import React from \"react\";\nimport {\n  View,\n  Text,\n  type StyleProp,\n  type ViewStyle,\n  type TextStyle,\n  type TextProps,\n} from \"react-native\";\n\nimport { styles } from \"../style\";\n\ntype Props = {\n  wrapperStyle?: StyleProp<ViewStyle>;\n  style?: StyleProp<TextStyle>;\n} & Omit<TextProps, \"style\">;\n\nexport const Button = ({ wrapperStyle, style, ...rest }: Props) => (\n  <View style={[styles.button, wrapperStyle]}>\n    <Text style={[styles.buttonText, style]} {...rest} />\n  </View>\n);\n","import { useEffect, useRef, useState } from \"react\";\n\n/**\n * A hook like useState that allows you to use await the setter\n */\nexport const useStateWithAwait = <T = any>(\n  initialState: T\n): [T, (newValue: T) => Promise<void>] => {\n  const endPending = useRef(() => {});\n  const newDesiredValue = useRef(initialState);\n\n  const [state, setState] = useState(initialState);\n\n  const setStateWithAwait = async (newState: T) => {\n    const pending = new Promise<void>((resolve) => {\n      endPending.current = resolve;\n    });\n    newDesiredValue.current = newState;\n    setState(newState);\n    await pending;\n  };\n\n  useEffect(() => {\n    if (state === newDesiredValue.current) {\n      endPending.current();\n    }\n  }, [state]);\n\n  return [state, setStateWithAwait];\n};\n","import { useCallback, useMemo, useReducer, useState } from \"react\";\nimport { type Step, type StepsMap } from \"../types\";\n\ntype Action =\n  | {\n      type: \"register\";\n      step: Step;\n    }\n  | {\n      type: \"unregister\";\n      stepName: string;\n    };\n\nexport const useStepsMap = () => {\n  const [currentStep, setCurrentStepState] = useState<Step | undefined>(\n    undefined\n  );\n  const [steps, dispatch] = useReducer((state: StepsMap, action: Action) => {\n    switch (action.type) {\n      case \"register\":\n        return {\n          ...state,\n          [action.step.name]: action.step,\n        };\n      case \"unregister\": {\n        const { [action.stepName]: _, ...rest } = state;\n        return rest;\n      }\n      default:\n        return state;\n    }\n  }, {});\n\n  const orderedSteps = useMemo(\n    () => Object.values(steps).sort((a, b) => a.order - b.order),\n    [steps]\n  );\n\n  const stepIndex = useCallback(\n    (step = currentStep) =>\n      step\n        ? orderedSteps.findIndex(\n            (stepCandidate) => stepCandidate.order === step.order\n          )\n        : -1,\n    [currentStep, orderedSteps]\n  );\n\n  const currentStepNumber = useMemo(\n    (step = currentStep) => stepIndex(step) + 1,\n    [currentStep, stepIndex]\n  );\n\n  const totalStepsNumber = useMemo(() => orderedSteps.length, [orderedSteps]);\n\n  const getFirstStep = useCallback(() => orderedSteps[0], [orderedSteps]);\n\n  const getLastStep = useCallback(\n    () => orderedSteps[orderedSteps.length - 1],\n    [orderedSteps]\n  );\n\n  const getPrevStep = useCallback(\n    (step = currentStep) => step && orderedSteps[stepIndex(step) - 1],\n    [currentStep, stepIndex, orderedSteps]\n  );\n\n  const getNextStep = useCallback(\n    (step = currentStep) => step && orderedSteps[stepIndex(step) + 1],\n    [currentStep, stepIndex, orderedSteps]\n  );\n\n  const getNthStep = useCallback(\n    (n: number) => orderedSteps[n - 1],\n    [orderedSteps]\n  );\n\n  const isFirstStep = useMemo(\n    () => currentStep === getFirstStep(),\n    [currentStep, getFirstStep]\n  );\n\n  const isLastStep = useMemo(\n    () => currentStep === getLastStep(),\n    [currentStep, getLastStep]\n  );\n\n  const registerStep = useCallback((step: Step) => {\n    dispatch({ type: \"register\", step });\n  }, []);\n\n  const unregisterStep = useCallback((stepName: string) => {\n    dispatch({ type: \"unregister\", stepName });\n  }, []);\n\n  return {\n    currentStepNumber,\n    totalStepsNumber,\n    getFirstStep,\n    getLastStep,\n    getPrevStep,\n    getNextStep,\n    getNthStep,\n    isFirstStep,\n    isLastStep,\n    currentStep,\n    setCurrentStepState,\n    steps,\n    registerStep,\n    unregisterStep,\n  };\n};\n","import React, { type FunctionComponent } from \"react\";\nimport { type NativeMethods } from \"react-native/types\";\n\ninterface CopilotType {\n  ref?: React.RefObject<NativeMethods>;\n  onLayout?: () => void;\n}\n\nexport function walkthroughable<P = any>(\n  WrappedComponent: React.ComponentType<P>,\n) {\n  const Component: FunctionComponent<P> = (props: P) => {\n    const { copilot, ...rest } = props as { copilot: CopilotType } & P;\n    return <WrappedComponent {...copilot} {...(rest as any)} />;\n  };\n\n  Component.displayName = \"Walkthroughable\";\n\n  return Component;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport { type NativeMethods } from \"react-native\";\n\nimport { useCopilot } from \"../contexts/CopilotProvider\";\n\ninterface Props {\n  name: string;\n  order: number;\n  text: string;\n  children: React.ReactElement<any>;\n  active?: boolean;\n}\n\nexport const CopilotStep = ({\n  name,\n  order,\n  text,\n  children,\n  active = true,\n}: Props) => {\n  const registeredName = useRef<string | null>(null);\n  const { registerStep, unregisterStep } = useCopilot();\n  const wrapperRef = React.useRef<NativeMethods | null>(null);\n\n  const measure = async () => {\n    return await new Promise<{\n      x: number;\n      y: number;\n      width: number;\n      height: number;\n    }>((resolve) => {\n      const measure = () => {\n        // Wait until the wrapper element appears\n        if (wrapperRef.current != null && \"measure\" in wrapperRef.current) {\n          wrapperRef.current.measure((_ox, _oy, width, height, x, y) => {\n            resolve({\n              x,\n              y,\n              width,\n              height,\n            });\n          });\n        } else {\n          requestAnimationFrame(measure);\n        }\n      };\n\n      measure();\n    });\n  };\n\n  useEffect(() => {\n    if (active) {\n      if (registeredName.current && registeredName.current !== name) {\n        unregisterStep(registeredName.current);\n      }\n      registerStep({\n        name,\n        text,\n        order,\n        measure,\n        wrapperRef,\n        visible: true,\n      });\n      registeredName.current = name;\n    }\n  }, [name, order, text, registerStep, unregisterStep, active]);\n\n  useEffect(() => {\n    if (active) {\n      return () => {\n        if (registeredName.current) {\n          unregisterStep(registeredName.current);\n        }\n      };\n    }\n  }, [name, unregisterStep, active]);\n\n  const copilotProps = useMemo(\n    () => ({\n      ref: wrapperRef,\n      onLayout: () => {}, // Android hack\n    }),\n    []\n  );\n\n  return React.cloneElement(children, { copilot: copilotProps });\n};\n","import { StepNumber } from \"./components/default-ui/StepNumber\";\nimport { Tooltip } from \"./components/default-ui/Tooltip\";\nexport { walkthroughable } from \"./hocs/walkthroughable\";\nexport { CopilotStep } from \"./components/CopilotStep\";\nexport { CopilotProvider, useCopilot } from \"./contexts/CopilotProvider\";\nexport type { CopilotOptions as CopilotProps, TooltipProps } from \"./types\";\n\nexport const DefaultUI = {\n  StepNumber,\n  Tooltip,\n};\n"],"mappings":"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","names":["React","View","React","useCallback","useEffect","useRef","useState","Animated","View","React","Text","View","React","useCallback","useMemo","useRef","useState","React","useCallback","useEffect","useRef","useState","Animated","Easing","View","React","Text","View","React","View","Text","CopilotModal","Easing","useState","Animated","useRef","useEffect","useCallback","React","View","useEffect","useRef","useState","useRef","useState","useEffect","useCallback","useState","useState","useCallback","useRef","useState","useCallback","_a","currentStep","useMemo","React","React","View","Text","React","React","React","useEffect","useMemo","useRef","useRef","React","measure","useEffect","useMemo"]}