236 lines
12 KiB
TypeScript
236 lines
12 KiB
TypeScript
// 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 <View style={useStyles().divider} />;
|
|
};
|
|
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 <Backdrop blur="none" style={useAnimatedStyle(n)} accessibleDismissStyle={styles2.accessibleDismiss} onDismiss={onPress2} accessibilityLabel={isAndroid() ? intl.string(_index_native.t.hPBScv) : intl.string(_index_native.t.xs0juG)} />;
|
|
};
|
|
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 = [<ContextMenuBackdrop onPress={callback3} visible={sharedValue} />, ,];
|
|
const r146 = title2 != null ? <>
|
|
<View style={styles.titleContainer}>
|
|
<Text variant="text-md/bold" color="mobile-text-heading-primary" accessibilityRole="header">{title2}</Text>
|
|
</View>
|
|
<ContextMenuDivider />
|
|
</> : null;
|
|
const items = items2;
|
|
const title = title2;
|
|
const state3 = state;
|
|
const callback = callback4;
|
|
const dividerIndexes = dividerIndexes2;
|
|
r135[1] = <GestureDetector gesture={memo}>
|
|
<ReanimatedRexport.ScrollView onLayout={callback2} bounces={false} style={[styles.container, r78, animatedStyle]} keyboardShouldPersistTaps={keyboardShouldPersistTaps2} accessibilityRole="list">
|
|
{r146}
|
|
{items.map(({ label, action, iconSource, IconComponent, trailingIndicator, variant, accessibilityRole }, a1) => {
|
|
const r41 = <ContextMenuItem key={`${label}-${a1}`} index={a1} label={label} start={a1 === 0 && title == null} end={a1 === items.length - 1} lastInSection={dividerIndexes.includes(a1 + 1)} iconSource={iconSource} IconComponent={IconComponent} trailingIndicator={trailingIndicator} state={state3} onPress={(event) => {
|
|
if (isAndroid() && getIsScreenReaderEnabled()) {
|
|
action();
|
|
}
|
|
if (callback != null) {
|
|
callback(event);
|
|
}
|
|
}} variant={variant} accessibilityRole={accessibilityRole} />;
|
|
return dividerIndexes.includes(a1) ? <>
|
|
<ContextMenuDivider key={`divider-${a1}`} />
|
|
{r41}
|
|
</> : r41;
|
|
})}
|
|
</ReanimatedRexport.ScrollView>
|
|
</GestureDetector>;
|
|
return <>{r135}</>;
|
|
}
|