/* Metro module 12800; source: design/components/ContextMenu/native/ContextMenuPopout.native.tsx; dependencies: [57, 31, 27, 33, 4501, 697, 8813, 4017, 4508, 5463, 1478, 477, 4577, 8812, 5321, 4573, 12798, 4559, 4562, 1244, 2] */ function _fun97641(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#97641, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6, offset: 0x0218b393, size: 659 bytes, params: 8, frame: 25 var object3; let env0_0 = require; const renderMenuItems = function(a0) { var items = a0.items; var env0_0 = items; var env0_1 = a0.title; var env0_2 = a0.state; var env0_3 = a0.onPress; var env0_4 = a0.dividerIndexes; return items.map(_fun97644); }; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let env0_3 = importDefault(57) /* metro dependency 57 */; let env0_4 = importAll(31) /* metro dependency 31 */; let value = require(27) /* metro dependency 27 */; const env0_5 = value.View; const StyleSheet = value.StyleSheet; value = require(33) /* metro dependency 33 */; const env0_6 = value.jsx; const env0_7 = value.Fragment; const env0_8 = value.jsxs; value = require(4501) /* metro dependency 4501: createStyles */; let createStyles = value.createStyles; object3 = {}; const object5 = {'position': 'absolute', 'backgroundColor': null, 'borderWidth': 1}; const BACKGROUND_SURFACE_HIGHEST = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_SURFACE_HIGHEST; object5.backgroundColor = BACKGROUND_SURFACE_HIGHEST; let BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE; object5.borderColor = BORDER_SUBTLE; object5.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.lg; const CONTEXT_MENU_MIN_WIDTH = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_MIN_WIDTH; object5.minWidth = CONTEXT_MENU_MIN_WIDTH; const SHADOW_HIGH = (importDefault(697) /* metro dependency 697: native */).shadows.SHADOW_HIGH; copyDataProperties(object5, SHADOW_HIGH, undefined); object3.container = object5; const CONTEXT_MENU_ITEM_PADDING = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_ITEM_PADDING; object3.titleContainer = {padding: CONTEXT_MENU_ITEM_PADDING}; const object7 = {}; const CONTEXT_MENU_DIVIDER_HEIGHT = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_DIVIDER_HEIGHT; object7.borderBottomWidth = CONTEXT_MENU_DIVIDER_HEIGHT; BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE; object7.borderBottomColor = BORDER_SUBTLE; object3.divider = object7; const env0_9 = Reflect.apply(createStyles, value, [object3]); object3 = {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)}]};}"}; object3 = {code: 'function ContextMenuPopoutNativeTsx2(finished){const{transitionState,TransitionStates,runOnJS,cleanUp,onClose}=this.__closure;if(finished&&transitionState===TransitionStates.YEETED){runOnJS(cleanUp)();runOnJS(onClose)();}}'}; object3 = {code: 'function update_ContextMenuPopoutNativeTsx3(e){const{updateContextMenuState,state}=this.__closure;updateContextMenuState(e.absoluteX,e.absoluteY,state);}'}; object3 = {code: 'function ContextMenuPopoutNativeTsx4(){const{state,runOnJS,requestClose}=this.__closure;const{activeIndex:activeIndex}=state;const isDismiss=activeIndex.get()===-1;runOnJS(requestClose)(isDismiss);}'}; value = require(4501) /* metro dependency 4501: createStyles */; createStyles = value.createStyles; object3 = {}; const CONTEXT_MENU_BACKDROP_BACKGROUND = (importDefault(697) /* metro dependency 697: native */).colors.CONTEXT_MENU_BACKDROP_BACKGROUND; object3.backdrop = {backgroundColor: CONTEXT_MENU_BACKDROP_BACKGROUND}; const object8 = {}; copyDataProperties(object8, StyleSheet.absoluteFillObject, undefined); object8['height'] = 'auto'; object3.accessibleDismiss = object8; const env0_14 = Reflect.apply(createStyles, value, [object3]); object3 = {code: 'function ContextMenuPopoutNativeTsx5(){const{withSpring,visible,CONTEXT_MENU_SPRING}=this.__closure;return{opacity:withSpring(visible.get(),CONTEXT_MENU_SPRING)};}'}; (require(2) /* metro dependency 2 */).fileFinishedImporting('design/components/ContextMenu/native/ContextMenuPopout.native.tsx'); exports.ContextMenuPopout = ContextMenuPopout; } function ContextMenuDivider() { // fn#97642, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:2461, offset: 0x0218b626, size: 41 bytes, params: 1, frame: 14 const styles = useStyles(); return ; } function renderMenuItems({items, title, state, onPress, dividerIndexes}) { // fn#97643, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:2531, offset: 0x0218b64f, size: 71 bytes, params: 2, frame: 12 return items.map(_fun97644); } function ContextMenuBackdrop({onPress, visible}) { // fn#97646, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:3467, offset: 0x0218b84f, size: 334 bytes, params: 2, frame: 21 const styles = useStyles(); const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; const useAnimatedStyle = reanimatedRexportModule.useAnimatedStyle; const closure = ContextMenuBackdropN; const object2 = {}; object2.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring; object2.visible = visible; const CONTEXT_MENU_SPRING = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_SPRING; object2.CONTEXT_MENU_SPRING = CONTEXT_MENU_SPRING; closure.__closure = object2; closure.__workletHash = 6862317967896; closure.__initData = env0_15; const value2 = Reflect.apply(useAnimatedStyle, reanimatedRexportModule, [closure]); const Backdrop = (require(4562) /* metro dependency 4562: BackdropNative */).Backdrop; const items2 = [styles.backdrop, value2]; const isAndroid2 = (require(477) /* metro dependency 477: PlatformUtils */).isAndroid(); const intl = (require(1244) /* metro dependency 1244: indexNative */).intl; const string = intl.string; const t = (require(1244) /* metro dependency 1244: indexNative */).t; return ( ); } function ContextMenuPopout({menu, transitionState, cleanUp}) { // fn#97648, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:4157, offset: 0x0218b9eb, size: 1316 bytes, params: 2, frame: 39 const x = menu.x; const positionX = menu.positionX; const positionY = menu.positionY; const env0_3 = positionY; const height = menu.height; const env0_4 = height; const items2 = menu.items; const state = menu.state; const requestClose = menu.requestClose; const onClose = menu.onClose; const title = menu.title; const keyboardShouldPersistTaps = menu.keyboardShouldPersistTaps; const r11 = keyboardShouldPersistTaps === undefined ? 'handled' : keyboardShouldPersistTaps; const dividerIndexes = menu.dividerIndexes; const y = menu.y; const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; const useSharedValue = reanimatedRexportModule.useSharedValue; const TransitionStates = (require(4508) /* metro dependency 4508: TransitionGroup */).TransitionStates; const MOUNTED = TransitionStates.MOUNTED; const value4 = Reflect.apply(useSharedValue, reanimatedRexportModule, [transitionState !== MOUNTED ? 0 : 1]); let binding = env0_4; binding.useEffect(_fun97649, [transitionState, value4]); const styles = useStyles(); const {top, bottom} = (importDefault(5463) /* metro dependency 5463: useSafeAreaInsetsKeyboardAwareNative */)({includeKeyboardHeight: true}).insets; const value5 = (importDefault(1478) /* metro dependency 1478: useWindowDimensionsNative */)({ignoreKeyboard: (require(477) /* metro dependency 477: PlatformUtils */).isAndroid()}); const width = value5.width; const height2 = value5.height; const value6 = positionY === 'below'; const value7 = height2 - y; const r1 = value6 ? value7 - bottom - (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_EDGE_OFFSET : value7 - top - (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_EDGE_OFFSET; const value13 = env0_3(env0_4.useState(height >= r1), 2); const property = value13[0]; const env0_10 = property; const env0_11 = value13[1]; object = {}; object[value6 ? 'top' : 'bottom'] = y; object[positionX] = x; object['maxHeight'] = r1; const CONTEXT_MENU_EDGE_OFFSET = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_EDGE_OFFSET; object['maxWidth'] = width - CONTEXT_MENU_EDGE_OFFSET - x; const moduleValue3 = reanimatedRexportModule; const useAnimatedStyle = moduleValue3.useAnimatedStyle; const closure = ContextMenuPopoutW; const object3 = {maxHeight: r1, height: height}; const CONTEXT_MENU_MIN_WIDTH = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_MIN_WIDTH; object3.CONTEXT_MENU_MIN_WIDTH = CONTEXT_MENU_MIN_WIDTH; object3.positionY = positionY; object3.positionX = positionX; const CONTEXT_MENU_MIN_SCALE = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_MIN_SCALE; object3.CONTEXT_MENU_MIN_SCALE = CONTEXT_MENU_MIN_SCALE; object3.withSpring = (require(4577) /* metro dependency 4577: spring */).withSpring; object3.interpolate = reanimatedRexportModule.interpolate; object3.visible = value4; const CONTEXT_MENU_SPRING = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_SPRING; object3.CONTEXT_MENU_SPRING = CONTEXT_MENU_SPRING; object3.transitionState = transitionState; object3.TransitionStates = TransitionStates; object3.runOnJS = reanimatedRexportModule.runOnJS; object3.cleanUp = cleanUp; object3.onClose = onClose; closure.__closure = object3; closure.__workletHash = 16778623591634; closure.__initData = env0_10; const value16 = Reflect.apply(useAnimatedStyle, moduleValue3, [closure]); binding = env0_4; const value17 = binding.useMemo(_fun97652, [state, requestClose, property]); const value18 = binding.useCallback(_fun97656, [r1]); const value19 = binding.useCallback(function() { requestClose(true); }, [requestClose]); const value20 = binding.useCallback(function() { requestClose(false); }, [requestClose]); const jsxRuntimeEnv0_7Binding = jsxRuntimeEnv0_7; const contextMenuBackdrop = ; const GestureDetector = (require(5321) /* metro dependency 5321 */).GestureDetector; const ScrollView = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).ScrollView; const items7 = [styles.container, object, value16]; object = [title != null ? <>{((Text) => {title})((require(4573) /* metro dependency 4573: Text */).Text)} : null]; object[1] = renderMenuItems({items: items2, title: title, state: state, onPress: value20, dividerIndexes: dividerIndexes}); return ( <> {contextMenuBackdrop} {object} ); } function _fun97644({label, action, iconSource, IconComponent, trailingIndicator, variant, accessibilityRole}, a1) { // fn#97644, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:2624, offset: 0x0218b696, size: 332 bytes, params: 3, frame: 29 var r0; const value2 = items.length - 1; const ContextMenuItem = (require(12798) /* metro dependency 12798: ContextMenuItemNative */).ContextMenuItem; const r16 = a1 === 0 && title == null; const dividerIndexesBinding = dividerIndexes; let value = ; if (dividerIndexesBinding.includes(a1)) { value = <>{value}; r0 = value; } else { r0 = value; } return r0; } function ContextMenuBackdropN() { // fn#97647, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:3562, owner: ContextMenuBackdrop.n, offset: 0x0218b99d, size: 78 bytes, params: 1, frame: 17 let value = environment.__proto__; value = require(4577) /* metro dependency 4577: spring */; const withSpring = value.withSpring; const value3 = visible.get(); const CONTEXT_MENU_SPRING = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_SPRING; return {opacity: Reflect.apply(withSpring, value, [value3, CONTEXT_MENU_SPRING])}; } function _fun97649() { // fn#97649, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:4490, offset: 0x0218bf0f, size: 85 bytes, params: 1, frame: 13 const transitionStateBinding = transitionState; const TransitionStates = (require(4508) /* metro dependency 4508: TransitionGroup */).TransitionStates; const YEETED = TransitionStates.YEETED; if (transitionStateBinding === YEETED) { env0_8.set(0); } else { env0_8.set(1); } } function ContextMenuPopoutW() { // fn#97650, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:4969, owner: ContextMenuPopout.w, offset: 0x0218bf64, size: 755 bytes, params: 1, frame: 32 const Math = global.Math; const min = Math.min; const value3 = Reflect.apply(min, Math, [env0_9, height]) / 2; const CONTEXT_MENU_MIN_WIDTH = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_MIN_WIDTH; const value5 = CONTEXT_MENU_MIN_WIDTH / 2; const positionYBinding = positionY; const value6 = 1; const r19 = positionYBinding !== 'below' ? value6 : -1; const r6 = positionX !== 'left' ? value6 : -1; const object3 = {}; const springModule = require(4577) /* metro dependency 4577: spring */; let withSpring = springModule.withSpring; const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; let interpolate = reanimatedRexportModule.interpolate; const value10 = Reflect.apply(interpolate, reanimatedRexportModule, [env0_8.get(), [0, 1], [0, 1]]); const CONTEXT_MENU_SPRING = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_SPRING; const closure = wT; const object4 = {}; object4.transitionState = transitionState; const TransitionStates = (require(4508) /* metro dependency 4508: TransitionGroup */).TransitionStates; object4.TransitionStates = TransitionStates; object4.runOnJS = reanimatedRexportModule.runOnJS; object4.cleanUp = cleanUp; object4.onClose = onClose; closure.__closure = object4; closure.__workletHash = 4025068986009; closure.__initData = env1_11; object3.opacity = Reflect.apply(withSpring, springModule, [value10, CONTEXT_MENU_SPRING, 'respect-motion-settings', closure]); const moduleValue3 = springModule; withSpring = moduleValue3.withSpring; const moduleValue4 = reanimatedRexportModule; interpolate = moduleValue4.interpolate; const value11 = env0_8.get(); const CONTEXT_MENU_MIN_SCALE = (require(8813) /* metro dependency 8813: ContextMenuConstantsNative */).CONTEXT_MENU_MIN_SCALE; const items3 = [{translateX: Reflect.apply(withSpring, moduleValue3, [Reflect.apply(interpolate, moduleValue4, [value11, [0, 1], [r6 * value5 + CONTEXT_MENU_MIN_SCALE * -r6 * value5, 0]]), CONTEXT_MENU_SPRING])}]; const moduleValue5 = springModule; withSpring = moduleValue5.withSpring; const moduleValue6 = reanimatedRexportModule; items3[1] = {translateY: Reflect.apply(withSpring, moduleValue5, [moduleValue6.interpolate(env0_8.get(), [0, 1], [r19 * value3 + CONTEXT_MENU_MIN_SCALE * -r19 * value3, 0]), CONTEXT_MENU_SPRING])}; const moduleValue7 = springModule; withSpring = moduleValue7.withSpring; const moduleValue8 = reanimatedRexportModule; interpolate = moduleValue8.interpolate; let value = env0_8.get(); value = Reflect.apply(interpolate, moduleValue8, [value, [0, 1], [CONTEXT_MENU_MIN_SCALE, value6]]); items3[2] = {scale: Reflect.apply(withSpring, moduleValue7, [value, CONTEXT_MENU_SPRING])}; object3.transform = items3; return object3; } function _fun97652() { // fn#97652, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6349, offset: 0x0218c2dd, size: 188 bytes, params: 1, frame: 18 let value = _fun97653(); const Gesture = (require(5321) /* metro dependency 5321 */).Gesture; value = Gesture.Pan().enabled(!env0_10).onStart(value).onUpdate(value); const onEnd = value.onEnd; const closure = t_97655; const object2 = {}; object2.state = state; object2.runOnJS = (require(4017) /* metro dependency 4017: ReanimatedRexport */).runOnJS; object2.requestClose = requestClose; closure.__closure = object2; closure.__workletHash = 14495067009140; closure.__initData = env1_13; return Reflect.apply(onEnd, value, [closure]); } function _fun97656({nativeEvent}) { // fn#97656, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6887, offset: 0x0218c481, size: 78 bytes, params: 2, frame: 14 const binding = env0_11; let Math = global.Math; const value2 = Math.round(nativeEvent.layout.height); Math = global.Math; binding(value2 >= Math.round(env0_9)); } function onPress_97645(a0) { // fn#97645, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:2917, offset: 0x0218b7e2, size: 109 bytes, params: 2, frame: 13 var r1; let value = environment.__proto__.__proto__; const isAndroid2 = (require(477) /* metro dependency 477: PlatformUtils */).isAndroid(); if (isAndroid2) { value = require(4559) /* metro dependency 4559: useIsScreenReaderEnabledNative */; value = value.getIsScreenReaderEnabled(); r1 = value; } else { r1 = isAndroid2; } if (r1) { action(); } value = environment.__proto__; if (onPress != null) { onPress(a0); } } function wT(a0) { // fn#97651, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:5209, owner: ContextMenuPopout.w.t, offset: 0x0218c257, size: 134 bytes, params: 2, frame: 16 var r0; var transitionStateBinding; var runOnJS; var value2; let value = a0; if (value) { value = environment.__proto__; transitionStateBinding = transitionState; value = environment.__proto__.__proto__; value = transitionStateBinding === (require(4508) /* metro dependency 4508: TransitionGroup */).TransitionStates.YEETED; r0 = value; } else { r0 = value; } if (r0) { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; runOnJS = value.runOnJS; value2 = environment.__proto__; Reflect.apply(runOnJS, value, [cleanUp])(); value = require(4017) /* metro dependency 4017: ReanimatedRexport */; runOnJS = value.runOnJS; Reflect.apply(runOnJS, value, [onClose])(); } } function _fun97653() { // fn#97653, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6362, offset: 0x0218c399, size: 92 bytes, params: 1, frame: 14 const closure = update_97654; const object2 = {}; object2.updateContextMenuState = (require(8812) /* metro dependency 8812: ContextMenuStateNative */).updateContextMenuState; object2.state = state; closure.__closure = object2; closure.__workletHash = 4218299258082; closure.__initData = env2_12; return closure; } function t_97655() { // fn#97655, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6685, offset: 0x0218c433, size: 78 bytes, params: 1, frame: 13 const value = environment.__proto__; const value2 = state.activeIndex.get(); const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; reanimatedRexportModule.runOnJS(requestClose)(value2 === -1); } function update_97654({absoluteX, absoluteY}) { // fn#97654, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12990:6384, offset: 0x0218c3f5, size: 62 bytes, params: 2, frame: 16 let value = environment.__proto__.__proto__.__proto__; value = require(8812) /* metro dependency 8812: ContextMenuStateNative */; value.updateContextMenuState(absoluteX, absoluteY, state); }