// Metro module 13211 (f13212). import { useEffect, useState, useMemo, useCallback } from "react"; import { View, StyleSheet } from "react-native"; import { createStyles } from "../../Styles/native/createStyles"; import Module712 from "../../../../_bundle/Module712"; import * as _ContextMenuConstants_native from "./ContextMenuConstants.native"; import { CONTEXT_MENU_ITEM_PADDING, CONTEXT_MENU_DIVIDER_HEIGHT, CONTEXT_MENU_EDGE_OFFSET } from "./ContextMenuConstants.native"; import * as _ReanimatedRexport from "../../../../modules/reanimated/ReanimatedRexport"; import ReanimatedRexport, { useAnimatedStyle, useSharedValue } from "../../../../modules/reanimated/ReanimatedRexport"; import * as _TransitionGroup from "../../TransitionGroup/TransitionGroup"; import useSafeAreaInsetsKeyboardAware_native from "../../../../modules/safe_area/useSafeAreaInsetsKeyboardAware.native"; import useWindowDimensions_native from "../../../../modules/screen/useWindowDimensions.native"; import { isAndroid } from "../../../../utils/PlatformUtils"; import * as _spring from "../../../animation/reanimated/spring/spring"; import * as _ContextMenuState_native from "./ContextMenuState.native"; import { Gesture, GestureDetector } from "../../../../_bundle/Module5273"; import { Text } from "../../Text/native/Text"; import { ContextMenuItem } from "./ContextMenuItem.native"; import { getIsScreenReaderEnabled } from "../../../../modules/a11y/native/useIsScreenReaderEnabled.native"; import { Backdrop } from "../../Backdrop/native/Backdrop.native"; import * as _index_native from "../../../../intl/index.native"; import { intl } from "../../../../intl/index.native"; let useStyles, __initData, __initData2, __initData3, __initData4, useStyles2, __initData5, ContextMenuBackdrop; const ContextMenuDivider = function ContextMenuDivider() { return ; }; ContextMenuBackdrop = function ContextMenuBackdrop(props) { const { onPress: onPress2, visible } = props; const styles2 = useStyles2(); const n = function n() { return { opacity: _spring.withSpring(visible.get(), _ContextMenuConstants_native.CONTEXT_MENU_SPRING) }; }; n.__closure = { withSpring: _spring.withSpring, visible, CONTEXT_MENU_SPRING: _ContextMenuConstants_native.CONTEXT_MENU_SPRING }; n.__workletHash = 6862317967896; n.__initData = __initData5; return ; }; useStyles = createStyles({ container: { position: "absolute", backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGHEST, borderWidth: 1, borderColor: Module712.colors.BORDER_SUBTLE, borderRadius: Module712.radii.lg, minWidth: _ContextMenuConstants_native.CONTEXT_MENU_MIN_WIDTH, ...Module712.shadows.SHADOW_HIGH }, titleContainer: { padding: CONTEXT_MENU_ITEM_PADDING }, divider: { borderBottomWidth: CONTEXT_MENU_DIVIDER_HEIGHT, borderBottomColor: Module712.colors.BORDER_SUBTLE } }); __initData = { code: "function ContextMenuPopoutNativeTsx1(){const{maxHeight,height,CONTEXT_MENU_MIN_WIDTH,positionY,positionX,CONTEXT_MENU_MIN_SCALE,withSpring,interpolate,visible,CONTEXT_MENU_SPRING,transitionState,TransitionStates,runOnJS,cleanUp,onClose}=this.__closure;const visibleHeight=Math.min(maxHeight,height);const halfHeight=visibleHeight/2;const halfWidth=CONTEXT_MENU_MIN_WIDTH/2;const translateYDirection=positionY==='below'?-1:1;const translateXDirection=positionX==='left'?-1:1;const translateY=translateYDirection*halfHeight+CONTEXT_MENU_MIN_SCALE*-translateYDirection*halfHeight;const translateX=translateXDirection*halfWidth+CONTEXT_MENU_MIN_SCALE*-translateXDirection*halfWidth;return{opacity:withSpring(interpolate(visible.get(),[0,1],[0,1]),CONTEXT_MENU_SPRING,'respect-motion-settings',function(finished){if(finished&&transitionState===TransitionStates.YEETED){runOnJS(cleanUp)();runOnJS(onClose)();}}),transform:[{translateX:withSpring(interpolate(visible.get(),[0,1],[translateX,0]),CONTEXT_MENU_SPRING)},{translateY:withSpring(interpolate(visible.get(),[0,1],[translateY,0]),CONTEXT_MENU_SPRING)},{scale:withSpring(interpolate(visible.get(),[0,1],[CONTEXT_MENU_MIN_SCALE,1]),CONTEXT_MENU_SPRING)}]};}" }; __initData2 = { code: "function ContextMenuPopoutNativeTsx2(finished){const{transitionState,TransitionStates,runOnJS,cleanUp,onClose}=this.__closure;if(finished&&transitionState===TransitionStates.YEETED){runOnJS(cleanUp)();runOnJS(onClose)();}}" }; __initData3 = { code: "function update_ContextMenuPopoutNativeTsx3(e){const{updateContextMenuState,state}=this.__closure;updateContextMenuState(e.absoluteX,e.absoluteY,state);}" }; __initData4 = { code: "function ContextMenuPopoutNativeTsx4(){const{state,runOnJS,requestClose}=this.__closure;const{activeIndex:activeIndex}=state;const isDismiss=activeIndex.get()===-1;runOnJS(requestClose)(isDismiss);}" }; useStyles2 = createStyles({ accessibleDismiss: { ...StyleSheet.absoluteFillObject, height: "auto" } }); __initData5 = { code: "function ContextMenuPopoutNativeTsx5(){const{withSpring,visible,CONTEXT_MENU_SPRING}=this.__closure;return{opacity:withSpring(visible.get(),CONTEXT_MENU_SPRING)};}" }; export function ContextMenuPopout(props) { let c20412_9, state2, setState; const { menu, transitionState, cleanUp } = props; c20412_9 = void 0; state2 = void 0; setState = void 0; const { x: r14, positionX, positionY, height, items: items2, state, requestClose, onClose, title: title2, keyboardShouldPersistTaps: keyboardShouldPersistTaps2 = "handled", dividerIndexes: dividerIndexes2, y: r18 } = menu; const sharedValue = useSharedValue(transitionState === _TransitionGroup.TransitionStates.MOUNTED ? 1 : 0); useEffect(() => { if (transitionState === _TransitionGroup.TransitionStates.YEETED) { sharedValue.set(0); } else { sharedValue.set(1); } }, [transitionState, sharedValue]); const styles = useStyles(); const insets = useSafeAreaInsetsKeyboardAware_native({ includeKeyboardHeight: true }).insets; const { top, bottom } = insets; const windowDimensions_native = useWindowDimensions_native({ ignoreKeyboard: isAndroid() }); const { width, height: height2 } = windowDimensions_native; const r4 = positionY === "below"; const r60 = height2 - r18; const maxHeight = r4 ? r60 - bottom - CONTEXT_MENU_EDGE_OFFSET : r60 - top - CONTEXT_MENU_EDGE_OFFSET; c20412_9 = maxHeight; [state2, setState] = useState(height >= maxHeight); const r77 = r4 ? "top" : "bottom"; const r78 = {}; r78[r77] = r18; r78[positionX] = r14; r78.maxHeight = maxHeight; r78.maxWidth = width - CONTEXT_MENU_EDGE_OFFSET - r14; const R = function R() { const r5 = Math.min(c20412_9, height) / 2; const r4 = _ContextMenuConstants_native.CONTEXT_MENU_MIN_WIDTH / 2; const r1 = positionY === "below" ? -1 : 1; const r2 = positionX === "left" ? -1 : 1; const r41 = _ReanimatedRexport.interpolate(sharedValue.get(), [0, 1], [0, 1]); const r44 = function t(a0) { if (a0 ? transitionState === _TransitionGroup.TransitionStates.YEETED : a0) { _ReanimatedRexport.runOnJS(cleanUp)(); _ReanimatedRexport.runOnJS(onClose)(); } }; r44.__closure = { transitionState, TransitionStates: _TransitionGroup.TransitionStates, runOnJS: _ReanimatedRexport.runOnJS, cleanUp, onClose }; r44.__workletHash = 4025068986009; r44.__initData = __initData2; return { opacity: _spring.withSpring(r41, _ContextMenuConstants_native.CONTEXT_MENU_SPRING, "respect-motion-settings", r44), transform: [{ translateX: _spring.withSpring(_ReanimatedRexport.interpolate(sharedValue.get(), [0, 1], [r2 * r4 + _ContextMenuConstants_native.CONTEXT_MENU_MIN_SCALE * -r2 * r4, 0]), _ContextMenuConstants_native.CONTEXT_MENU_SPRING) }, { translateY: _spring.withSpring(_ReanimatedRexport.interpolate(sharedValue.get(), [0, 1], [r1 * r5 + _ContextMenuConstants_native.CONTEXT_MENU_MIN_SCALE * -r1 * r5, 0]), _ContextMenuConstants_native.CONTEXT_MENU_SPRING) }, { scale: _spring.withSpring(_ReanimatedRexport.interpolate(sharedValue.get(), [0, 1], [_ContextMenuConstants_native.CONTEXT_MENU_MIN_SCALE, 1]), _ContextMenuConstants_native.CONTEXT_MENU_SPRING) }] }; }; R.__closure = { maxHeight, height, CONTEXT_MENU_MIN_WIDTH: _ContextMenuConstants_native.CONTEXT_MENU_MIN_WIDTH, positionY, positionX, CONTEXT_MENU_MIN_SCALE: _ContextMenuConstants_native.CONTEXT_MENU_MIN_SCALE, withSpring: _spring.withSpring, interpolate: _ReanimatedRexport.interpolate, visible: sharedValue, CONTEXT_MENU_SPRING: _ContextMenuConstants_native.CONTEXT_MENU_SPRING, transitionState, TransitionStates: _TransitionGroup.TransitionStates, runOnJS: _ReanimatedRexport.runOnJS, cleanUp, onClose }; R.__workletHash = 16778623591634; R.__initData = __initData; const animatedStyle = useAnimatedStyle(R); const memo = useMemo(() => { const update = function update(a0) { _ContextMenuState_native.updateContextMenuState(a0.absoluteX, a0.absoluteY, state); }; update.__closure = { updateContextMenuState: _ContextMenuState_native.updateContextMenuState, state }; update.__workletHash = 4218299258082; update.__initData = __initData3; const r25 = Gesture.Pan().enabled(!state2).onStart(update).onUpdate(update); const r27 = function t() { const r8 = state.activeIndex.get(); _ReanimatedRexport.runOnJS(requestClose)(r8 === -1); }; r27.__closure = { state, runOnJS: _ReanimatedRexport.runOnJS, requestClose }; r27.__workletHash = 14495067009140; r27.__initData = __initData4; return r25.onEnd(r27); }, [state, requestClose, state2]); const callback2 = useCallback((a0) => { setState(Math.round(a0.nativeEvent.layout.height) >= Math.round(c20412_9)); }, [maxHeight]); const callback3 = useCallback(() => { requestClose(true); }, [requestClose]); const callback4 = useCallback(() => { requestClose(false); }, [requestClose]); const r135 = [, ,]; const r146 = title2 != null ? <> {title2} : null; const items = items2; const title = title2; const state3 = state; const callback = callback4; const dividerIndexes = dividerIndexes2; r135[1] = {r146} {items.map(({ label, action, iconSource, IconComponent, trailingIndicator, variant, accessibilityRole }, a1) => { const r41 = { if (isAndroid() && getIsScreenReaderEnabled()) { action(); } if (callback != null) { callback(event); } }} variant={variant} accessibilityRole={accessibilityRole} />; return dividerIndexes.includes(a1) ? <> {r41} : r41; })} ; return <>{r135}; }