// Metro module 1812 (f1813).
import Module19, { useCallback, useMemo, forwardRef } from "react";
import { View } from "react-native";
import * as _Module1606 from "./Module1606";
import Module1606, { useSharedValue, useDerivedValue, runOnUI, useAnimatedStyle } from "./Module1606";
import { useTranslateAnimation, useKeyboardAnimation } from "./Module1813";
import { useWindowDimensions } from "./useResizeMode";
import { findNodeHandle } from "./Module1796";
import { KeyboardControllerNative } from "./Module1596";
import _default from "./_default_1814";
const defaultLayout = {
x: 0,
y: 0,
width: 0,
height: 0
};
const __initData = {
code: "function pnpm_indexTsx1(){const{initialFrame,defaultLayout}=this.__closure;return initialFrame.value||defaultLayout;}"
};
const __initData2 = {
code: "function pnpm_indexTsx2(){const{screenHeight,keyboard,keyboardVerticalOffset,frame}=this.__closure;const keyboardY=screenHeight-keyboard.heightWhenOpened.value-keyboardVerticalOffset;return Math.max(frame.value.y+frame.value.height-keyboardY,0);}"
};
const __initData3 = {
code: "function pnpm_indexTsx3(value){const{interpolate,relativeKeyboardHeight}=this.__closure;return interpolate(value,[0,1],[0,relativeKeyboardHeight()]);}"
};
const __initData4 = {
code: "function pnpm_indexTsx4(layout){const{keyboard,initialFrame,behavior}=this.__closure;if(keyboard.isClosed.value||initialFrame.value===null||behavior!==\"height\"){initialFrame.value=layout;}}"
};
const __initData5 = {
code: "function pnpm_indexTsx5(){const{enabled,interpolateToRelativeKeyboardHeight,keyboard,translate,padding,frame,behavior}=this.__closure;if(!enabled){return{};}const bottom=interpolateToRelativeKeyboardHeight(keyboard.progress.value);const translateY=interpolateToRelativeKeyboardHeight(translate.value);const paddingBottom=interpolateToRelativeKeyboardHeight(padding.value);const height=frame.value.height-bottom;switch(behavior){case\"height\":if(!keyboard.isClosed.value&&height>0){return{height:height,flex:0};}return{};case\"position\":return{bottom:bottom};case\"padding\":return{paddingBottom:bottom};case\"translate-with-padding\":return{paddingTop:paddingBottom,transform:[{translateY:-translateY}]};default:return{};}}"
};
export default forwardRef((a0, a1) => {
let derivedValue, translate, padding, keyboardAnimation, height, callback, callback2, callback3, animatedStyle, contentContainerStyle;
const { behavior, children, contentContainerStyle: contentContainerStyle2, enabled = true, keyboardVerticalOffset: _keyboardVerticalOffset, automaticOffset: _automaticOffset, style, onLayout, ...props } = a0;
let c13236_1 = enabled;
let keyboardVerticalOffset = a0.keyboardVerticalOffset;
if (keyboardVerticalOffset === void 0) {
keyboardVerticalOffset = 0;
}
let c13236_2 = keyboardVerticalOffset;
let automaticOffset = a0.automaticOffset;
if (automaticOffset === void 0) {
automaticOffset = false;
}
let c13236_3 = automaticOffset;
derivedValue = void 0;
translate = void 0;
padding = void 0;
keyboardAnimation = void 0;
height = void 0;
callback = void 0;
callback2 = void 0;
callback3 = void 0;
animatedStyle = void 0;
contentContainerStyle = void 0;
const sharedValue = useSharedValue(null);
const ref = Module19.useRef(null);
const K = () => sharedValue.value || defaultLayout;
K.__closure = {
initialFrame: sharedValue,
defaultLayout
};
K.__workletHash = 4703969179658;
K.__initData = __initData;
derivedValue = useDerivedValue(K);
const translateAnimation = useTranslateAnimation();
translate = translateAnimation.translate;
padding = translateAnimation.padding;
keyboardAnimation = useKeyboardAnimation();
height = useWindowDimensions().height;
const V = function V() {
return Math.max(derivedValue.value.y + derivedValue.value.height - (height - keyboardAnimation.heightWhenOpened.value - c13236_2), 0);
};
V.__closure = {
screenHeight: height,
keyboard: keyboardAnimation,
keyboardVerticalOffset,
frame: derivedValue
};
V.__workletHash = 10539040422992;
V.__initData = __initData2;
callback = useCallback(V, [height, keyboardVerticalOffset]);
const C = function C(a0) {
return _Module1606.interpolate(a0, [0, 1], [0, callback()]);
};
C.__closure = {
interpolate: _Module1606.interpolate,
relativeKeyboardHeight: callback
};
C.__workletHash = 11482114301276;
C.__initData = __initData3;
callback2 = useCallback(C, [callback]);
const D = function D(a0) {
if (keyboardAnimation.isClosed.value || sharedValue.value === null || behavior !== "height") {
sharedValue.value = a0;
}
};
D.__closure = {
keyboard: keyboardAnimation,
initialFrame: sharedValue,
behavior
};
D.__workletHash = 12256944793057;
D.__initData = __initData4;
callback3 = useCallback(D, [behavior]);
const callback4 = useCallback((a0) => {
if (onLayout != null) {
onLayout(a0);
}
const layout = a0.nativeEvent.layout;
if (c13236_3) {
const r19 = findNodeHandle(ref.current);
if (r19 !== null) {
return KeyboardControllerNative.viewPositionInWindow(r19).then((result) => {
runOnUI(callback3)({
...layout,
x: result.x,
y: result.y
});
}).catch(() => {
runOnUI(callback3)(layout);
});
}
}
return runOnUI(callback3)(layout);
}, [onLayout, automaticOffset]);
const F = function F() {
if (c13236_1) {
const bottom = callback2(keyboardAnimation.progress.value);
const r6 = callback2(translate.value);
const paddingTop = callback2(padding.value);
const height2 = derivedValue.value.height - bottom;
if (behavior === "height") {
return !keyboardAnimation.isClosed.value && height2 > 0 ? {
height: height2,
flex: 0
} : {};
}
if (behavior === "position") {
return {
bottom
};
}
if (behavior === "padding") {
return {
paddingBottom: bottom
};
}
if (behavior === "translate-with-padding") {
return {
paddingTop,
transform: [{
translateY: -r6
}]
};
}
return {};
}
return {};
};
F.__closure = {
enabled,
interpolateToRelativeKeyboardHeight: callback2,
keyboard: keyboardAnimation,
translate,
padding,
frame: derivedValue,
behavior
};
F.__workletHash = 6440002265153;
F.__initData = __initData5;
animatedStyle = useAnimatedStyle(F, [behavior, enabled, callback2]);
const ref2 = _default(ref, a1);
const r90 = behavior === "position";
contentContainerStyle = r90 ? contentContainerStyle2 : style;
const memo = useMemo(() => [contentContainerStyle, animatedStyle], [contentContainerStyle, animatedStyle]);
return r90 ?
{children}
: {children};
});