190 lines
6.0 KiB
TypeScript
190 lines
6.0 KiB
TypeScript
// Metro module 9848 (f9849).
|
|
import { useRef, useEffect, useCallback } from "react";
|
|
import { getWindowDimensions } from "../screen/useWindowDimensions.native";
|
|
import Module712 from "../../_bundle/Module712";
|
|
import { measureViewRefInWindow, measureViewRefInView, measureViewInWindow } from "../view_measure/ViewMeasureUtils.native";
|
|
import { getKeyboardDuration } from "../keyboard/native/useKeyboardDuration";
|
|
function $mk115560($env) {
|
|
return function calculateScrollOffset() {
|
|
return $env[5].apply(this, arguments);
|
|
};
|
|
}
|
|
function $mk115561($env) {
|
|
return function calculateTargetScrollY(a0) {
|
|
const r6 = a0.scrollView.y + a0.scrollView.height;
|
|
const r19 = getWindowDimensions({
|
|
ignoreKeyboard: true
|
|
}).height - a0.insets.bottom;
|
|
if (!(a0.inputInWindow.y + a0.inputInWindow.height + a0.scrollOffset <= r19)) {
|
|
const r34 = a0.scrollView.height - Math.max(0, r6 - r19);
|
|
const r41 = a0.inputInScrollView.y + a0.inputInScrollView.height + a0.scrollOffset;
|
|
if (!(r41 <= r34)) {
|
|
return r41 - r34;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
let env6540 = {};
|
|
env6540[5] = function _calculateScrollOffset() {
|
|
const r8 = async (c26549_0, c26549_1) => {
|
|
let r79, MAX_SAFE_INTEGER, PX_16, value;
|
|
let extraOffset;
|
|
let c30150_0, c30150_1, c30150_2, c30150_3;
|
|
L26: {
|
|
L25: {
|
|
L17: {
|
|
L16: {
|
|
c30150_0 = c26549_0;
|
|
c30150_1 = c26549_1;
|
|
c30150_2 = void 0;
|
|
c30150_3 = void 0;
|
|
if (c26549_0 == null) {
|
|
PX_16 = Module712.space.PX_16;
|
|
break L26;
|
|
}
|
|
const type = c26549_0.type;
|
|
if (type === "toRef") {
|
|
c30150_2 = await measureViewRefInWindow(c26549_0.ref);
|
|
const extraOffset2 = c30150_0.extraOffset;
|
|
extraOffset = extraOffset2;
|
|
if (extraOffset2 == null) {
|
|
extraOffset = 0;
|
|
}
|
|
c30150_3 = extraOffset;
|
|
if (c30150_2 == null) {
|
|
r79 = Module712.space.PX_16 + c30150_3;
|
|
break L25;
|
|
}
|
|
r79 = c30150_2.y - (c30150_1.y + c30150_1.height) + c30150_2.height + c30150_3;
|
|
break L25;
|
|
}
|
|
if (type === "toValue") {
|
|
value = c26549_0.value;
|
|
break L17;
|
|
}
|
|
if (type === "toBottom") {
|
|
MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
break L16;
|
|
}
|
|
return void 0;
|
|
}
|
|
return MAX_SAFE_INTEGER;
|
|
}
|
|
return value;
|
|
}
|
|
return r79;
|
|
}
|
|
return PX_16;
|
|
};
|
|
env6540[5] = r8;
|
|
return r8.apply(this, arguments);
|
|
};
|
|
export default function useSafeAreaAvoidingInputs({ insets, inputs, scrollViewRef }) {
|
|
let callback;
|
|
callback = void 0;
|
|
const ref = useRef(inputs);
|
|
useEffect(() => {
|
|
ref.current = inputs;
|
|
}, [inputs]);
|
|
callback = useCallback(async () => {
|
|
let c26550_0, c26550_1;
|
|
L26: {
|
|
L25: {
|
|
let env30151;
|
|
c26550_1 = void 0;
|
|
const r10 = env30151 = {
|
|
$parent: env6540
|
|
};
|
|
c26550_0 = r10;
|
|
env30151[0] = void 0;
|
|
env30151[1] = void 0;
|
|
env30151[2] = void 0;
|
|
env30151[3] = void 0;
|
|
env30151[4] = void 0;
|
|
env30151[5] = void 0;
|
|
env30151[6] = void 0;
|
|
const current = scrollViewRef.current;
|
|
env30151[0] = current;
|
|
const r35 = ref.current.find((item) => {
|
|
const current = item.ref.current;
|
|
return current == null ? void 0 : current.isFocused();
|
|
});
|
|
env30151[1] = r35;
|
|
if (r35 == null) {
|
|
break L26;
|
|
}
|
|
if (current != null) {
|
|
env30151[2] = await measureViewRefInWindow(r35.ref);
|
|
env30151[3] = await measureViewRefInView(env30151[1].ref, env30151[0]);
|
|
if (env30151[2] == null) {
|
|
break L25;
|
|
}
|
|
if (env30151[3] == null) {
|
|
break L25;
|
|
}
|
|
env30151[4] = await measureViewInWindow(env30151[0]);
|
|
const offset = env30151[1].offset;
|
|
const r117 = env30151[2];
|
|
env30151[5] = await $mk115560(env6540)(offset, r117);
|
|
if (env30151[5] !== Number.MAX_SAFE_INTEGER) {
|
|
const r144 = {
|
|
insets,
|
|
inputInScrollView: env30151[3],
|
|
inputInWindow: env30151[2],
|
|
scrollOffset: env30151[5],
|
|
scrollView: env30151[4]
|
|
};
|
|
env30151[6] = $mk115561(env6540)(r144);
|
|
if (env30151[6] == null) {
|
|
break L25;
|
|
}
|
|
(function scrollToTargetY(a0, a1) {
|
|
const current = a0.current;
|
|
const r2 = current == null;
|
|
let r4 = void 0;
|
|
if (!r2) {
|
|
const scrollTo = current.scrollTo;
|
|
r4 = scrollTo == null ? void 0 : scrollTo.call(current, {
|
|
x: 0,
|
|
y: a1,
|
|
animated: true
|
|
});
|
|
}
|
|
if (r4 == null) {
|
|
const current2 = a0.current;
|
|
if (current2 != null) {
|
|
const scrollToOffset = current2.scrollToOffset;
|
|
if (scrollToOffset != null) {
|
|
scrollToOffset.call(current2, {
|
|
offset: a1,
|
|
animated: true
|
|
});
|
|
}
|
|
}
|
|
}
|
|
})(scrollViewRef, env30151[6]);
|
|
break L25;
|
|
}
|
|
const current2 = scrollViewRef.current;
|
|
if (current2 == null) {
|
|
break L25;
|
|
}
|
|
current2.scrollToEnd({
|
|
animated: true
|
|
});
|
|
break L25;
|
|
}
|
|
break L26;
|
|
}
|
|
return void 0;
|
|
}
|
|
}, [insets, scrollViewRef]);
|
|
useEffect(() => {
|
|
let c26551_0 = setTimeout(callback, getKeyboardDuration());
|
|
return () => clearTimeout(c26551_0);
|
|
}, [callback]);
|
|
return {
|
|
onFocus: callback
|
|
};
|
|
};
|