// Metro module 5609 (f5610). import _classCallCheck from "./_classCallCheck"; import _createClass from "./_createClass"; import _possibleConstructorReturn from "./_possibleConstructorReturn"; import _getPrototypeOf from "./_getPrototypeOf"; import _inherits from "./_inherits"; import { Component, createRef } from "react"; import { Platform, StyleSheet, Animated, InteractionManager, View } from "react-native"; import { jsx } from "react/jsx-runtime"; import getInvertedMultiplier from "./getInvertedMultiplier"; import getDistanceForDirection from "./getDistanceForDirection"; import { GestureState, PanGestureHandler } from "./Module5575"; import memoize from "./memoize_5607"; import Color from "./Color"; import Module5620 from "./Module5620"; import Module5621 from "./Module5621"; import * as _Module5622 from "./Module5622"; let _excluded, c3454_16, styles; let Card; let env3454 = {}; env3454[15] = function _isNativeReflectConstruct() { let c14943_0; try { c14943_0 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch ($e) {} const _isNativeReflectConstruct2 = function _isNativeReflectConstruct() { return !!c14943_0; }; env3454[15] = _isNativeReflectConstruct2; return _isNativeReflectConstruct2(); }; _excluded = ["styleInterpolator", "interpolationIndex", "current", "gesture", "next", "layout", "insets", "overlay", "overlayEnabled", "shadowEnabled", "gestureEnabled", "gestureDirection", "pageOverflowEnabled", "headerDarkContent", "children", "containerStyle", "contentStyle"]; Platform; const StyleSheet2 = StyleSheet; c3454_16 = true; Card = function Card(...args) { _classCallCheck(this, Card); const r13 = [...args]; const r12 = _getPrototypeOf(Card); const r30 = _possibleConstructorReturn(this, (0, env3454[15])() ? Reflect.construct(r12, r13, _getPrototypeOf(this).constructor) : r12.apply(this, r13)); r30.isCurrentlyMounted = false; r30.isClosing = new Animated.Value(0); r30.inverted = new Animated.Value(getInvertedMultiplier(r30.props.gestureDirection)); r30.layout = { width: new Animated.Value(r30.props.layout.width), height: new Animated.Value(r30.props.layout.height) }; r30.isSwiping = new Animated.Value(0); r30.animate = ({ closing, velocity }) => { const props = this.props; const { gesture, transitionSpec, onOpen, onClose, onTransition } = props; const animateToValue = this.getAnimateToValue({ ...this.props, closing }); this.lastToValue = animateToValue; this.isClosing.setValue(closing ? 1 : 0); const r25 = closing ? transitionSpec.close : transitionSpec.open; const r30 = r25.animation === "spring" ? Animated.spring : Animated.timing; this.setPointerEventsEnabled(!closing); this.handleStartInteraction(); clearTimeout(this.pendingGestureCallback); if (onTransition != null) { onTransition({ closing, gesture: velocity !== void 0 }); } r30(gesture, { ...r25.config, velocity, toValue: animateToValue, useNativeDriver: c3454_16, isInteraction: false }).start(({ finished }) => { this.handleEndInteraction(); clearTimeout(this.pendingGestureCallback); if (finished) { if (closing) { onClose(); } else { onOpen(); } if (this.isCurrentlyMounted) { this.forceUpdate(); } } }); }; r30.getAnimateToValue = ({ closing: closing2, layout, gestureDirection }) => closing2 ? getDistanceForDirection(layout, gestureDirection) : 0; r30.setPointerEventsEnabled = (a0) => { const r3 = a0 ? "box-none" : "none"; const current = this.ref.current; if (current != null) { current.setPointerEvents(r3); } }; r30.handleStartInteraction = () => { if (this.interactionHandle === void 0) { this.interactionHandle = InteractionManager.createInteractionHandle(); } }; r30.handleEndInteraction = () => { if (this.interactionHandle !== void 0) { InteractionManager.clearInteractionHandle(this.interactionHandle); this.interactionHandle = void 0; } }; r30.handleGestureStateChange = ({ nativeEvent }) => { let translationX, velocityX, width; const props = this.props; const { layout, onClose: onClose2, onGestureBegin, onGestureCanceled, onGestureEnd, gestureDirection, gestureVelocityImpact } = props; const state = nativeEvent.state; if (GestureState.ACTIVE === state) { this.isSwiping.setValue(1); this.handleStartInteraction(); if (onGestureBegin != null) { onGestureBegin(); } } else if (GestureState.CANCELLED === state) { this.isSwiping.setValue(0); this.handleEndInteraction(); this.animate({ closing: this.props.closing, velocity: gestureDirection !== "vertical" && gestureDirection !== "vertical-inverted" ? nativeEvent.velocityX : nativeEvent.velocityY }); if (onGestureCanceled != null) { onGestureCanceled(); } } else if (GestureState.END === state) { this.isSwiping.setValue(0); if (gestureDirection !== "vertical" && gestureDirection !== "vertical-inverted") { width = layout.width; translationX = nativeEvent.translationX; velocityX = nativeEvent.velocityX; } else { width = layout.height; translationX = nativeEvent.translationY; velocityX = nativeEvent.velocityY; } const closing2 = (translationX + velocityX * gestureVelocityImpact) * getInvertedMultiplier(gestureDirection) > width / 2 ? velocityX !== 0 || translationX !== 0 : this.props.closing; this.animate({ closing: closing2, velocity: velocityX }); if (closing2) { this.pendingGestureCallback = setTimeout(() => { onClose2(); this.forceUpdate(); }, 32); } if (onGestureEnd != null) { onGestureEnd(); } } }; r30.getInterpolatedStyle = memoize((a0, a1) => a0(a1)); r30.getCardAnimation = memoize((a0, a1, a2, a3, a4, a5, a6, a7) => { const next = a2 ? { progress: a2 } : a2; return { index: a0, current: { progress: a1 }, next, closing: this.isClosing, swiping: this.isSwiping, inverted: this.inverted, layouts: { screen: a3 }, insets: { top: a4, right: a5, bottom: a6, left: a7 } }; }); r30.ref = createRef(); return r30; }; _inherits(Card, Component); const r56 = _createClass(Card, [{ key: "componentDidMount", value: function componentDidMount() { this.animate({ closing: this.props.closing }); this.isCurrentlyMounted = true; } }, { key: "componentDidUpdate", value: function componentDidUpdate(a0) { const props = this.props; const { layout, gestureDirection, closing: closing2 } = props; const { width, height } = layout; if (width !== a0.layout.width) { this.layout.width.setValue(width); } if (height !== a0.layout.height) { this.layout.height.setValue(height); } if (gestureDirection !== a0.gestureDirection) { this.inverted.setValue(getInvertedMultiplier(gestureDirection)); } const animateToValue = this.getAnimateToValue(this.props); if (!(this.getAnimateToValue(a0) === animateToValue && this.lastToValue === animateToValue)) { this.animate({ closing: closing2 }); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.props.gesture.stopAnimation(); this.isCurrentlyMounted = false; this.handleEndInteraction(); } }, { key: "gestureActivationCriteria", value: function gestureActivationCriteria() { const props = this.props; const { layout, gestureDirection, gestureResponseDistance = gestureDirection !== "vertical" ? gestureDirection === "vertical-inverted" ? 135 : 50 : 135 } = props; if (gestureDirection === "vertical") { return { maxDeltaX: 15, minOffsetY: 5, hitSlop: { bottom: -layout.height + gestureResponseDistance }, enableTrackpadTwoFingerGesture: true }; } if (gestureDirection === "vertical-inverted") { return { maxDeltaX: 15, minOffsetY: -5, hitSlop: { top: -layout.height + gestureResponseDistance }, enableTrackpadTwoFingerGesture: true }; } const right = -layout.width + gestureResponseDistance; return getInvertedMultiplier(gestureDirection) === 1 ? { minOffsetX: 5, maxDeltaY: 20, hitSlop: { right }, enableTrackpadTwoFingerGesture: true } : { minOffsetX: -5, maxDeltaY: 20, hitSlop: { left: right }, enableTrackpadTwoFingerGesture: true }; } }, { key: "render", value: function render() { const props = this.props; const { styleInterpolator, interpolationIndex, current, gesture, next, layout, insets, overlay: overlay2, overlayEnabled, shadowEnabled, gestureEnabled, gestureDirection, pageOverflowEnabled } = props; props.headerDarkContent; const { children, containerStyle, contentStyle, ...rest } = props; const cardAnimation = this.getCardAnimation(interpolationIndex, current, next, layout, insets.top, insets.right, insets.bottom, insets.left); const interpolatedStyle = this.getInterpolatedStyle(styleInterpolator, cardAnimation); const { containerStyle: containerStyle2, cardStyle, overlayStyle, shadowStyle } = interpolatedStyle; const onGestureEvent = gestureEnabled ? Animated.event([{ nativeEvent: gestureDirection !== "vertical" && gestureDirection !== "vertical-inverted" ? { translationX: gesture } : { translationY: gesture } }], { useNativeDriver: c3454_16 }) : void 0; const backgroundColor = StyleSheet.flatten(contentStyle || {}).backgroundColor; const r63 = typeof backgroundColor === "string" ? Color(backgroundColor).alpha() === 0 : typeof backgroundColor === "string"; const r82 = [null, , ,]; const r93 = [overlayEnabled ? {overlay2({ style: overlayStyle })} : null, ,]; const View2 = Animated.View; const props2 = { enabled: layout.width !== 0 && gestureEnabled, onGestureEvent, onHandlerStateChange: this.handleGestureStateChange, ...this.gestureActivationCriteria() }; props2.children = {shadowEnabled ? shadowStyle ? r63 ? null : : null : null} {children} ; r93[1] = ; r82[2] = {r93}; return {r82}; } }]); r56.defaultProps = { shadowEnabled: false, gestureEnabled: true, gestureVelocityImpact: 0.3, overlay: ({ style }) => style ? (0, jsx)(Animated.View, { pointerEvents: "none", style: [styles.overlay, style] }) : null }; styles = StyleSheet2.create({ container: { flex: 1 }, overlay: { flex: 1, backgroundColor: "#000" }, shadow: { position: "absolute", shadowRadius: 5, shadowColor: "#000", shadowOpacity: 0.3 }, shadowHorizontal: { top: 0, bottom: 0, width: 3, shadowOffset: { width: -1, height: 1 } }, shadowLeft: { left: 0 }, shadowRight: { right: 0 }, shadowVertical: { left: 0, right: 0, height: 3, shadowOffset: { width: 1, height: -1 } }, shadowTop: { top: 0 }, shadowBottom: { bottom: 0 } }); export default r56; export const getIsModalPresentation = (a0) => a0 === _Module5622.forModalPresentationIOS || a0.name === "forModalPresentationIOS";