// Metro module 11253 (f11254). import { forwardRef, useRef, useLayoutEffect, useCallback, useState } from "react"; import { View, Platform } from "react-native"; import NativeMenuStore from "../../native_menu/native/NativeMenuStore"; import * as _PlatformUtils from "../../../utils/PlatformUtils"; import { isAndroid } from "../../../utils/PlatformUtils"; import { createStyles } from "../../../design/components/Styles/native/createStyles"; import Module712 from "../../../_bundle/Module712"; import { ActionSheetDragHandle, ACTION_SHEET_DRAG_HANDLE_HEIGHT } from "../../../design/components/experimental/native"; import { useIsScreenReaderEnabled } from "../../a11y/native/useIsScreenReaderEnabled.native"; import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport"; import ReanimatedRexport, { useDerivedValue, useAnimatedReaction, useAnimatedStyle } from "../../reanimated/ReanimatedRexport"; import { useMobileVisualRefreshConfig } from "../../themes/experiments/MobileVisualRefreshExperiment"; import useCustomKeyboardBottomSheetConfig from "../../action_sheet/native/useCustomKeyboardBottomSheetConfig"; import { TransitionStates } from "../../../design/components/TransitionGroup/TransitionGroup"; import { useBottomSheetImperativeHandle } from "../../../design/components/Sheet/native/BottomSheetHandle"; import { useStateFromStores } from "../../../_bundle/Module589"; import Module5245, { ANIMATION_SOURCE, BottomSheetBackdrop, BottomSheetFooter } from "../../../_bundle/Module5245"; import { triggerHapticFeedback, HapticFeedbackTypes } from "../../haptics/HapticUtils.native"; import { isChannelFocused } from "../../panels/isChannelFocused.native"; import * as _KeyboardManagerUtils from "../../../utils/native/KeyboardManagerUtils"; import useMountEffect from "../../../hooks/useMountEffect"; import { useToken } from "../../../design/tokens/native/useToken"; import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native"; import useWindowDimensions_native from "../../screen/useWindowDimensions.native"; import { PortalHost } from "../../../_bundle/Module4060"; import useColorThemeBackground from "../../client_themes/native/useColorThemeBackground"; import { ThemeContextProvider } from "../../../_bundle/Module3901"; import { AccessibilityViewAnimated } from "../../../design/components/AccessibilityView/AccessibilityView.native"; import PortalKeyboardFooterIOS_ios from "./PortalKeyboardFooterIOS.ios"; import { NavScrim } from "../../../design/components/Navigator/native/NavScrim.android"; let isIOS, useStyles, PortalKeyboardBackground, __initData, __initData2, __initData3, __initData4, __initData5, __initData6; const PortalKeyboardBottomSheetHeader = function PortalKeyboardBottomSheetHeader(props) { const { style, handleCollapse: handleCollapse2 } = props; const styles = useStyles(); return ; }; PortalKeyboardBackground = function PortalKeyboardBackground(props) { const { pointerEvents, style, roundingStyle } = props; return ; }; Platform; isIOS = _PlatformUtils.isIOS(); useStyles = createStyles({ container: { position: "absolute", top: 0, left: 0 }, background: { backgroundColor: Module712.colors.MOBILE_KEYBOARD_PANEL_BACKGROUND, overflow: "hidden" }, headerContainer: { borderTopLeftRadius: Module712.radii.none, borderTopRightRadius: Module712.radii.none, width: "100%", height: ACTION_SHEET_DRAG_HANDLE_HEIGHT, marginBottom: -ACTION_SHEET_DRAG_HANDLE_HEIGHT }, headerContainerScreenReaderEnabled: { marginBottom: -Module712.space.PX_8 }, roundingView: { overflow: "hidden", display: "flex" } }); __initData = { code: "function PortalKeyboardBottomSheetTsx1(){const{animatedIndex}=this.__closure;return animatedIndex.get()>0.975;}" }; __initData2 = { code: "function PortalKeyboardBottomSheetTsx2(){const{isFullyExpanded}=this.__closure;return isFullyExpanded.get();}" }; __initData3 = { code: "function PortalKeyboardBottomSheetTsx3(isFullyExpanded,isFullExpandedPrevious){const{forceMaxHeight,runOnJS,dismissGlobalKeyboard}=this.__closure;if(isFullExpandedPrevious==null){return;}if(!isFullyExpanded&&!forceMaxHeight){runOnJS(dismissGlobalKeyboard)();}}" }; __initData4 = { code: "function PortalKeyboardBottomSheetTsx4(){const{interpolate,animatedIndex,cornerRadiusInputStart,cornerRadiusInputEnd,cornerRadius}=this.__closure;return{borderTopLeftRadius:interpolate(animatedIndex.get(),[cornerRadiusInputStart,cornerRadiusInputEnd],[0,cornerRadius],'clamp'),borderTopRightRadius:interpolate(animatedIndex.get(),[cornerRadiusInputStart,cornerRadiusInputEnd],[0,cornerRadius],'clamp')};}" }; __initData5 = { code: "function PortalKeyboardBottomSheetTsx5(){const{animatedIndex}=this.__closure;return Math.max(animatedIndex.get(),0)>0;}" }; __initData6 = { code: "function PortalKeyboardBottomSheetTsx6(result,previous){const{runOnJS,setAccessibilityViewIsModal}=this.__closure;if(result===previous)return;runOnJS(setAccessibilityViewIsModal)(result);}" }; const r75 = forwardRef(function PortalKeyboardBottomSheet(props, a1) { let isScreenReaderEnabled, derivedValue, token, c18683_13, c18683_14, animatedStyle, setState; const { animatedIndex, animatedPosition, chatInputRef, children, isAppsKeyboard = false } = props; let c18683_2 = isAppsKeyboard; const { animationConfigs, onClose, transitionState } = props; let backdropComponent = props.backdropComponent; const { headerStyle, disableHeaderRoundingAnimation, roundingViewStyle, onAnimate, rendersHandle = true } = props; let c18683_6 = rendersHandle; let width2 = props.width; let forceMaxHeight = props.forceMaxHeight; if (forceMaxHeight === void 0) { forceMaxHeight = false; } let c18683_7 = forceMaxHeight; let enablePanDownToClose = props.enablePanDownToClose; if (enablePanDownToClose === void 0) { enablePanDownToClose = false; } let renderExpressionFooter = props.renderExpressionFooter; if (renderExpressionFooter === void 0) { renderExpressionFooter = false; } isScreenReaderEnabled = void 0; derivedValue = void 0; token = void 0; c18683_13 = void 0; c18683_14 = void 0; animatedStyle = void 0; setState = void 0; const styles = useStyles(); const ref = useRef(null); const mobileVisualRefreshConfig = useMobileVisualRefreshConfig({ location: "AutocompleteWrapper" }); const { enabled, chatInputFloating } = mobileVisualRefreshConfig; const customKeyboardBottomSheetConfig = useCustomKeyboardBottomSheetConfig({ forceMaxHeight, enablePanDownToClose }); const r3 = transitionState === TransitionStates.YEETED; let c18683_9 = r3; useBottomSheetImperativeHandle(a1, ref); useLayoutEffect(() => { if (c18683_9) { const current = ref.current; if (current != null) { current.forceClose(); } } }, [ref, r3]); const stateFromStores = useStateFromStores([NativeMenuStore], () => NativeMenuStore.isOpen()); if (renderExpressionFooter) { renderExpressionFooter = !r3; } isScreenReaderEnabled = useIsScreenReaderEnabled(); const callback3 = useCallback((a0, a1, a2) => { L21: { if (c18683_9 && a1 !== -1) { if (onClose == null) { break L21; } onClose(); } else if (a0 !== a1 && a1 !== -1) { if (onAnimate != null) { onAnimate(a0, a1, a2); } if (a0 === 0) { if (a2 !== ANIMATION_SOURCE.KEYBOARD) { triggerHapticFeedback(HapticFeedbackTypes.IMPACT_LIGHT); } } else if (a0 === 1 && a1 === 0 && !isChannelFocused() && c18683_2) { const current = chatInputRef.current; if (current != null) { current.closeCustomKeyboard(); } } } } }, [chatInputRef, r3, onAnimate, onClose, isAppsKeyboard]); const U = function U() { return animatedIndex.get() > 0.975; }; U.__closure = { animatedIndex }; U.__workletHash = 2001839633402; U.__initData = __initData; derivedValue = useDerivedValue(U); const W = () => derivedValue.get(); W.__closure = { isFullyExpanded: derivedValue }; W.__workletHash = 9531298805666; W.__initData = __initData2; const X = function X(a0, a1) { if (a1 != null && !(a0 ? a0 : c18683_7)) { _ReanimatedRexport.runOnJS(_KeyboardManagerUtils.dismissGlobalKeyboard)(); } }; X.__closure = { forceMaxHeight, runOnJS: _ReanimatedRexport.runOnJS, dismissGlobalKeyboard: _KeyboardManagerUtils.dismissGlobalKeyboard }; X.__workletHash = 14649856286006; X.__initData = __initData3; useAnimatedReaction(W, X); useMountEffect(() => () => { if (onClose != null) { onClose(); } }); const callback4 = useCallback((a0) => , []); const callback = useCallback(() => c18683_6 !== false ? : null, [headerStyle, ref, rendersHandle, derivedValue, isScreenReaderEnabled]); token = useToken(Module712.modules.mobile.MOBILE_KEYBOARD_TOP_BORDER_RADIUS); const cornerRadiusInputStart = chatInputFloating ? -1 : 0; c18683_13 = cornerRadiusInputStart; const cornerRadiusInputEnd = chatInputFloating ? 0 : 1; c18683_14 = cornerRadiusInputEnd; const ee = () => { const r17 = animatedIndex.get(); return { borderTopLeftRadius: _ReanimatedRexport.interpolate(r17, [c18683_13, c18683_14], [0, token], "clamp"), borderTopRightRadius: _ReanimatedRexport.interpolate(animatedIndex.get(), [c18683_13, c18683_14], [0, token], "clamp") }; }; ee.__closure = { interpolate: _ReanimatedRexport.interpolate, animatedIndex, cornerRadiusInputStart, cornerRadiusInputEnd, cornerRadius: token }; ee.__workletHash = 6979425892410; ee.__initData = __initData4; const animatedStyle2 = useAnimatedStyle(ee); animatedStyle = chatInputFloating ? disableHeaderRoundingAnimation ? void 0 : animatedStyle2 : void 0; const callback5 = useCallback((a0) => , [animatedStyle]); const safeAreaInsets_native = useSafeAreaInsets_native(); const { left, right } = safeAreaInsets_native; const windowDimensions_native = useWindowDimensions_native({ ignoreKeyboard: true }); const { height, width } = windowDimensions_native; const callback2 = useCallback((a0) => , []); let accessibilityViewIsModal; [accessibilityViewIsModal, setState] = useState(false); const ne = () => Math.max(animatedIndex.get(), 0) > 0; ne.__closure = { animatedIndex }; ne.__workletHash = 8952872079740; ne.__initData = __initData5; const te = function te(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState)(a0); } }; te.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setAccessibilityViewIsModal: setState }; te.__workletHash = 16051387075966; te.__initData = __initData6; useAnimatedReaction(ne, te); const r177 = isScreenReaderEnabled ? isScreenReaderEnabled : r3; const colorThemeBackground = useColorThemeBackground(); const gradient = enabled ? colorThemeBackground : null; const importantForAccessibility = stateFromStores ? "no-hide-descendants" : void 0; const style = [styles.container, { marginLeft: left, marginRight: right }, ,]; const r44 = Math; if (width2 == null) { width2 = Number.MAX_SAFE_INTEGER; } style[2] = { width: r44.min(width2, width - left - right), height }; const renderFooter = isAndroid() ? renderExpressionFooter ? callback2 : void 0 : void 0; if (backdropComponent == null) { backdropComponent = callback4; } const r229 = [ {children} , , ,]; let r230 = isIOS; if (isIOS) { r230 = renderExpressionFooter; } if (r230) { r230 = ; } r229[1] = r230; r229[2] = ; return {r229} ; }); export default r75;