437 lines
15 KiB
JavaScript
437 lines
15 KiB
JavaScript
// Metro module 5458 (f5459).
|
|
import _slicedToArray from "./_slicedToArray_5416";
|
|
import { useState, useRef, useCallback, useMemo, useImperativeHandle } from "react";
|
|
import { I18nManager } from "react-native";
|
|
import { useUnmountFlag } from "./Module5460";
|
|
import { useUnmountAwareTimeout } from "./Module5461";
|
|
import { PlatformConfig } from "./Module5431";
|
|
import { adjustOffsetForRTL } from "./Module5462";
|
|
import { WarningMessages } from "./Module5456";
|
|
function $mk117899($env) {
|
|
return () => {
|
|
const current = $env.$parent[1].current;
|
|
if (current != null) {
|
|
current.scrollToEnd({
|
|
animated: $env[0]
|
|
});
|
|
}
|
|
};
|
|
}
|
|
let env3350 = {};
|
|
export function useRecyclerViewController(a0, a1, a2, a3) {
|
|
let env14858 = {
|
|
$parent: env3350
|
|
};
|
|
env14858[0] = a0;
|
|
env14858[1] = a2;
|
|
env14858[2] = a3;
|
|
const unmountFlag = useUnmountFlag();
|
|
env14858[3] = unmountFlag;
|
|
const r20 = _slicedToArray((0, useState)(0), 2);
|
|
r20[0];
|
|
env14858[4] = r20[1];
|
|
env14858[5] = useRef(false);
|
|
env14858[6] = useRef(a0.getDataLength());
|
|
const setTimeout2 = useUnmountAwareTimeout().setTimeout;
|
|
env14858[7] = setTimeout2;
|
|
env14858[8] = useRef(void 0);
|
|
env14858[9] = useRef(void 0);
|
|
env14858[10] = useRef([]);
|
|
const callback = useCallback((a0, a1) => {
|
|
if (env14858[0].updateScrollOffset(a0) !== void 0) {
|
|
env14858[10].current.push(a1);
|
|
(0, env14858[4])((a0) => a0 + 1);
|
|
} else {
|
|
a1();
|
|
}
|
|
}, [a0]);
|
|
env14858[11] = callback;
|
|
const callback2 = useCallback(() => {
|
|
const r7 = env14858[0];
|
|
if (r7.getIsFirstLayoutComplete() && r7.hasStableDataKeys() && r7.getDataLength() > 0 && r7.shouldMaintainVisibleContentPosition()) {
|
|
const r21 = Math.max(0, r7.computeVisibleIndices().startIndex);
|
|
if (r21 !== void 0 && r21 >= 0) {
|
|
env14858[8].current = r7.getDataKey(r21);
|
|
env14858[9].current = {
|
|
...r7.getLayout(r21)
|
|
};
|
|
}
|
|
}
|
|
}, [a0]);
|
|
env14858[12] = callback2;
|
|
const callback3 = useCallback(() => {
|
|
let r37, r43, r46;
|
|
const r7 = env14858[0];
|
|
const props = r7.props;
|
|
const { horizontal: horizontal2, data } = props;
|
|
const r9 = env14858[10];
|
|
const current = r9.current;
|
|
r9.current = [];
|
|
current.forEach((item) => item());
|
|
const dataLength = r7.getDataLength();
|
|
if (r7.getIsFirstLayoutComplete() && r7.hasStableDataKeys() && dataLength > 0 && r7.shouldMaintainVisibleContentPosition()) {
|
|
const current2 = env14858[6].current;
|
|
if (env14858[8].current) {
|
|
const r3 = dataLength !== current2;
|
|
let r12 = r7.getEngagedIndices().findValue((a0) => env14858[0].getDataKey(a0) === env14858[8].current);
|
|
if (r12 == null) {
|
|
L11: {
|
|
if (!r3) {
|
|
const ignoreScrollEvents = r7.ignoreScrollEvents;
|
|
r37 = void 0;
|
|
if (!ignoreScrollEvents) {
|
|
break L11;
|
|
}
|
|
}
|
|
r37 = data == null ? void 0 : data.findIndex((item, index) => env14858[0].getDataKey(index) === env14858[8].current);
|
|
}
|
|
r12 = r37;
|
|
}
|
|
if (r12 !== void 0 && r12 >= 0) {
|
|
const layout = r7.getLayout(r12);
|
|
if (horizontal2) {
|
|
const r47 = layout.x;
|
|
const r48 = env14858[9];
|
|
r46 = r47 - r48.current.x;
|
|
r43 = r48;
|
|
} else {
|
|
const r42 = layout.y;
|
|
r43 = env14858[9];
|
|
r46 = r42 - r43.current.y;
|
|
}
|
|
r43.current = {
|
|
...r7.getLayout(r12)
|
|
};
|
|
if (r46 !== 0 && !env14858[5].current && !r7.animationOptimizationsEnabled) {
|
|
if (PlatformConfig.supportsOffsetCorrection) {
|
|
const current4 = env14858[2].current;
|
|
if (current4 != null) {
|
|
current4.scrollBy(r46);
|
|
}
|
|
} else {
|
|
const r67 = horizontal2 ? {
|
|
x: r7.getAbsoluteLastScrollOffset() + r46,
|
|
animated: false
|
|
} : {
|
|
y: r7.getAbsoluteLastScrollOffset() + r46,
|
|
animated: false
|
|
};
|
|
const current3 = env14858[1].current;
|
|
if (current3 != null) {
|
|
current3.scrollTo(r67);
|
|
}
|
|
}
|
|
if (r3) {
|
|
(0, env14858[11])(r7.getAbsoluteLastScrollOffset() + r46, () => {});
|
|
r7.ignoreScrollEvents = true;
|
|
(0, env14858[7])(() => {
|
|
env14858[0].ignoreScrollEvents = false;
|
|
}, 100);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
(0, env14858[12])();
|
|
}
|
|
env14858[6].current = r7.getDataLength();
|
|
}, [a0, a3, a2, setTimeout2, callback, callback2]);
|
|
const handlerMethods = (0, useMemo)(() => {
|
|
let c25467_0;
|
|
const r1 = {};
|
|
Object.defineProperty(r1, "props", {
|
|
get: function() {
|
|
return env14858[0].props;
|
|
},
|
|
set: void 0,
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
r1.scrollToOffset = ({ offset: offset3, animated: animated2, skipFirstItemOffset = true }) => {
|
|
const r7 = env14858[0];
|
|
const horizontal2 = r7.props.horizontal;
|
|
const r18 = env14858[1];
|
|
if (r18.current) {
|
|
const r9 = I18nManager.isRTL && horizontal2;
|
|
let r20 = offset3;
|
|
if (r9) {
|
|
const r30 = adjustOffsetForRTL(offset3, r7.getChildContainerDimensions().width, r7.getWindowSize().width);
|
|
const firstItemOffset = r7.firstItemOffset;
|
|
r20 = r30 + (skipFirstItemOffset ? firstItemOffset : -firstItemOffset);
|
|
}
|
|
const r34 = r20 + (skipFirstItemOffset ? 0 : r7.firstItemOffset);
|
|
r18.current.scrollTo({
|
|
...horizontal2 ? {
|
|
x: r34,
|
|
y: 0
|
|
} : {
|
|
x: 0,
|
|
y: r34
|
|
},
|
|
animated: animated2
|
|
});
|
|
}
|
|
};
|
|
r1.clearLayoutCacheOnUpdate = () => {
|
|
env14858[0].markLayoutManagerDirty();
|
|
};
|
|
r1.flashScrollIndicators = () => {
|
|
env14858[1].current.flashScrollIndicators();
|
|
};
|
|
r1.getNativeScrollRef = () => env14858[1].current;
|
|
r1.getScrollResponder = () => env14858[1].current.getScrollResponder();
|
|
r1.getScrollableNode = () => env14858[1].current.getScrollableNode();
|
|
c25467_0 = async function(c29506_0) {
|
|
let c29506_2;
|
|
let env31367;
|
|
c29506_2 = void 0;
|
|
const r9 = env31367 = {
|
|
$parent: env14858
|
|
};
|
|
let c29506_1 = r9;
|
|
env31367[0] = void 0;
|
|
let r28 = c29506_0;
|
|
if (r28 === void 0) {
|
|
r28 = {};
|
|
}
|
|
env31367[0] = r28.animated;
|
|
env31367[1] = void 0;
|
|
env31367[2] = void 0;
|
|
await void 0;
|
|
env31367[1] = env14858[0].props.data;
|
|
if (env31367[1] && env31367[1].length > 0) {
|
|
env31367[2] = env31367[1].length - 1;
|
|
if (!env14858[0].getEngagedIndices().includes(env31367[2])) {
|
|
await env14858[13].scrollToIndex({
|
|
index: env31367[2],
|
|
animated: env31367[0]
|
|
});
|
|
}
|
|
}
|
|
(0, env14858[7])($mk117899(c29506_1), 0);
|
|
};
|
|
r1.scrollToEnd = function scrollToEnd() {
|
|
return c25467_0.apply(this, arguments);
|
|
};
|
|
r1.scrollToTop = function scrollToTop(r2 = {}) {
|
|
env14858[13].scrollToOffset({
|
|
offset: 0,
|
|
animated: r2.animated
|
|
});
|
|
};
|
|
r1.scrollToIndex = ({ index, animated, viewPosition, viewOffset }) => new Promise((resolve) => {
|
|
let r35;
|
|
let getFinalOffset2, absoluteLastScrollOffset, c31368_4, getStartScrollOffset2, finalOffset, c31368_7, maxScrollOffset, offset2, performScrollStep2, finishScrollToIndex2;
|
|
const r8 = env14858[0];
|
|
const horizontal = r8.props.horizontal;
|
|
if (env14858[1].current && (index >= 0 && index < r8.getDataLength())) {
|
|
env14858[5].current = true;
|
|
r8.setOffsetProjectionEnabled(false);
|
|
getFinalOffset2 = () => {
|
|
let r13;
|
|
const r10 = env14858[0];
|
|
const layout = r10.getLayout(index);
|
|
const r6 = horizontal ? layout.x : layout.y;
|
|
L15: {
|
|
if (viewPosition === void 0) {
|
|
r13 = r6;
|
|
if (viewOffset === void 0) {
|
|
break L15;
|
|
}
|
|
}
|
|
const windowSize = r10.getWindowSize();
|
|
const r15 = horizontal ? windowSize.width : windowSize.height;
|
|
const r16 = horizontal ? layout.width : layout.height;
|
|
const r17 = viewPosition !== void 0 ? r6 - (r15 - r16) * viewPosition : r6;
|
|
r13 = viewOffset !== void 0 ? r17 + viewOffset : r17;
|
|
}
|
|
return r13 + r10.firstItemOffset;
|
|
};
|
|
absoluteLastScrollOffset = r8.getAbsoluteLastScrollOffset();
|
|
const windowSize = r8.getWindowSize();
|
|
const r27 = 2 * (horizontal ? windowSize.width : windowSize.height);
|
|
c31368_4 = r27;
|
|
getStartScrollOffset2 = () => {};
|
|
finalOffset = getFinalOffset2();
|
|
const finalOffset2 = getFinalOffset2();
|
|
if (finalOffset2 > absoluteLastScrollOffset) {
|
|
r35 = Math.max(finalOffset2 - r27, absoluteLastScrollOffset);
|
|
r8.setScrollDirection("forward");
|
|
} else {
|
|
r35 = Math.min(finalOffset2 + r27, absoluteLastScrollOffset);
|
|
r8.setScrollDirection("backward");
|
|
}
|
|
c31368_7 = r35;
|
|
maxScrollOffset = finalOffset;
|
|
offset2 = r35;
|
|
performScrollStep2 = (a0) => {
|
|
let r20;
|
|
if (env14858[3].current) {
|
|
resolve();
|
|
} else if (5 <= a0) {
|
|
maxScrollOffset = getFinalOffset2();
|
|
const maxScrollOffset2 = env14858[0].getMaxScrollOffset();
|
|
if (maxScrollOffset > maxScrollOffset2) {
|
|
maxScrollOffset = maxScrollOffset2;
|
|
}
|
|
if (animated) {
|
|
env14858[13].scrollToOffset({
|
|
offset: offset2,
|
|
animated: false,
|
|
skipFirstItemOffset: true
|
|
});
|
|
}
|
|
env14858[13].scrollToOffset({
|
|
offset: maxScrollOffset,
|
|
animated,
|
|
skipFirstItemOffset: true
|
|
});
|
|
env14858[7](() => {
|
|
env14858[5].current = false;
|
|
env14858[0].setOffsetProjectionEnabled(true);
|
|
resolve();
|
|
}, animated ? 300 : 200);
|
|
} else {
|
|
const r7 = env14858[11];
|
|
if (animated) {
|
|
const r21 = maxScrollOffset;
|
|
r20 = r21 + a0 / 4 * (offset2 - r21);
|
|
} else {
|
|
r20 = offset2 + a0 / 4 * (maxScrollOffset - offset2);
|
|
}
|
|
r7(r20, () => {
|
|
let r32;
|
|
if (index >= env14858[0].getDataLength()) {
|
|
env14858[13].scrollToEnd({
|
|
animated
|
|
});
|
|
resolve();
|
|
return void 0;
|
|
}
|
|
const finalOffset22 = getFinalOffset2();
|
|
if (!(finalOffset22 < finalOffset && finalOffset22 < c31368_7) && !(finalOffset22 > finalOffset && finalOffset22 > c31368_7)) {
|
|
performScrollStep2(a0 + 1);
|
|
} else {
|
|
maxScrollOffset = finalOffset22;
|
|
const finalOffset2 = getFinalOffset2();
|
|
if (finalOffset2 > absoluteLastScrollOffset) {
|
|
r32 = Math.max(finalOffset2 - c31368_4, absoluteLastScrollOffset);
|
|
env14858[0].setScrollDirection("forward");
|
|
} else {
|
|
r32 = Math.min(finalOffset2 + c31368_4, absoluteLastScrollOffset);
|
|
env14858[0].setScrollDirection("backward");
|
|
}
|
|
offset2 = r32;
|
|
finalOffset = finalOffset22;
|
|
c31368_7 = r32;
|
|
performScrollStep2(0);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
finishScrollToIndex2 = () => {};
|
|
performScrollStep2(0);
|
|
} else {
|
|
resolve();
|
|
}
|
|
});
|
|
r1.scrollToItem = ({ item, animated: animated2, viewPosition: viewPosition2, viewOffset: viewOffset2 }) => {
|
|
const data = env14858[0].props.data;
|
|
if (env14858[1].current && data) {
|
|
const index2 = data.findIndex((a0) => a0 === item);
|
|
if (index2 >= 0) {
|
|
env14858[13].scrollToIndex({
|
|
index: index2,
|
|
animated: animated2,
|
|
viewPosition: viewPosition2,
|
|
viewOffset: viewOffset2
|
|
});
|
|
}
|
|
}
|
|
};
|
|
r1.getFirstItemOffset = () => env14858[0].firstItemOffset;
|
|
r1.getWindowSize = () => env14858[0].getWindowSize();
|
|
r1.getLayout = (a0) => env14858[0].tryGetLayout(a0);
|
|
r1.getAbsoluteLastScrollOffset = () => env14858[0].getAbsoluteLastScrollOffset();
|
|
r1.getChildContainerDimensions = () => env14858[0].getChildContainerDimensions();
|
|
r1.recordInteraction = () => {
|
|
env14858[0].recordInteraction();
|
|
};
|
|
r1.computeVisibleIndices = () => env14858[0].computeVisibleIndices();
|
|
r1.getFirstVisibleIndex = () => env14858[0].computeVisibleIndices().startIndex;
|
|
r1.recomputeViewableItems = () => {
|
|
env14858[0].recomputeViewableItems();
|
|
};
|
|
r1.updateViewableItems = () => {
|
|
env14858[0].computeItemViewability();
|
|
};
|
|
r1.prepareForLayoutAnimationRender = () => {
|
|
const r6 = env14858[0];
|
|
if (!r6.props.keyExtractor) {
|
|
console.warn(WarningMessages.keyExtractorNotDefinedForAnimation);
|
|
}
|
|
r6.animationOptimizationsEnabled = true;
|
|
};
|
|
return r1;
|
|
}, [a0, a2, setTimeout2, unmountFlag, callback]);
|
|
env14858[13] = handlerMethods;
|
|
const callback4 = useCallback(() => {
|
|
const r11 = env14858[0];
|
|
const props = r11.props;
|
|
const { horizontal: horizontal2, data, initialScrollIndexParams } = props;
|
|
let r10 = r11.getInitialScrollIndex();
|
|
if (r10 == null) {
|
|
r10 = -1;
|
|
}
|
|
if (r10 >= 0) {
|
|
let r13 = data?.length;
|
|
if (r13 == null) {
|
|
r13 = 0;
|
|
}
|
|
if (r10 < r13 && !r11.isInitialScrollComplete && r11.getIsFirstLayoutComplete()) {
|
|
const r17 = env14858[7];
|
|
r17(() => {
|
|
env14858[0].isInitialScrollComplete = true;
|
|
env14858[5].current = false;
|
|
}, 100);
|
|
env14858[5].current = true;
|
|
let r23 = initialScrollIndexParams?.viewOffset;
|
|
if (r23 == null) {
|
|
r23 = 0;
|
|
}
|
|
const layout = r11.getLayout(r10);
|
|
const offset = horizontal2 ? layout.x + r23 : layout.y + r23;
|
|
env14858[13].scrollToOffset({
|
|
offset,
|
|
animated: false,
|
|
skipFirstItemOffset: false
|
|
});
|
|
r17(() => {
|
|
env14858[13].scrollToOffset({
|
|
offset,
|
|
animated: false,
|
|
skipFirstItemOffset: false
|
|
});
|
|
}, 0);
|
|
}
|
|
}
|
|
}, [handlerMethods, a0, setTimeout2]);
|
|
(0, useImperativeHandle)(a1, () => {
|
|
const r0 = {
|
|
...env14858[1].current,
|
|
...env14858[13]
|
|
};
|
|
Object.defineProperty(r0, "props", {
|
|
get: () => env14858[0].props,
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
return r0;
|
|
}, [handlerMethods, a2, a0]);
|
|
return {
|
|
applyOffsetCorrection: callback3,
|
|
computeFirstVisibleIndexForOffsetCorrection: callback2,
|
|
applyInitialScrollIndex: callback4,
|
|
handlerMethods
|
|
};
|
|
}
|