240 lines
8.8 KiB
TypeScript
240 lines
8.8 KiB
TypeScript
// Metro module 9252 (f9253).
|
|
import * as Module19 from "react";
|
|
import { forwardRef, useMemo, useState, useImperativeHandle, useRef, isValidElement, useEffect } from "react";
|
|
import { View } from "react-native";
|
|
import { createStyles } from "../../design/components/Styles/native/createStyles";
|
|
import getFastestListVisibleItemsDefault from "./getFastestListVisibleItemsDefault";
|
|
import shallowEqual from "../../_bundle/shallowEqual";
|
|
import getFastestListVisibleItemsWithErrorChecking_native from "./utils/getFastestListVisibleItemsWithErrorChecking.native";
|
|
import PortalToNativeView_native from "../portals/PortalToNativeView.native";
|
|
const useStyles = createStyles({
|
|
portal: {
|
|
position: "absolute",
|
|
opacity: 0,
|
|
height: 0,
|
|
top: 0
|
|
}
|
|
});
|
|
let c6084_7 = {
|
|
items: [],
|
|
keys: new Map(),
|
|
keyIndex: 0
|
|
};
|
|
const r43 = Module19.memo(forwardRef(function(a0, a1) {
|
|
let state, setState, ref, memo;
|
|
const { estimatedListSize, horizontal = false } = a0;
|
|
let c17092_1 = horizontal;
|
|
const { listFooterAlwaysMounted, listHeaderAlwaysMounted, placeholdersForceEnabled = false } = a0;
|
|
let c17092_4 = placeholdersForceEnabled;
|
|
const { marginEnd, marginStart, sectionsVersioned, renderItem, renderListFooter, renderListHeader, renderSectionFooter, renderSectionHeader, wrapChildren = false } = a0;
|
|
let c17092_13 = wrapChildren;
|
|
state = void 0;
|
|
setState = void 0;
|
|
ref = void 0;
|
|
memo = void 0;
|
|
const styles = useStyles();
|
|
const memo2 = useMemo(() => [styles.portal, {
|
|
left: marginStart,
|
|
right: marginEnd
|
|
}], [styles.portal, marginStart, marginEnd]);
|
|
[state, setState] = useState(() => getFastestListVisibleItemsDefault({
|
|
estimatedListSize,
|
|
sectionsVersioned
|
|
}));
|
|
useImperativeHandle(a1, () => ({
|
|
setVisibleItems: (c30071_0) => {
|
|
setState((prevState) => {
|
|
let r8 = c30071_0;
|
|
if (shallowEqual(prevState, r8)) {
|
|
r8 = prevState;
|
|
}
|
|
return r8;
|
|
});
|
|
}
|
|
}), []);
|
|
ref = useRef(c6084_7);
|
|
memo = useMemo(() => {
|
|
let sectionStart, sectionEnd, itemStart, itemEnd;
|
|
const { keysAreUniform, listId, itemKeys, itemSizes, itemSizeIsUniform, listFooterKey, listFooterSize, listHeaderKey, listHeaderSize, sectionsId, sections, sectionFooterKeys, sectionFooterSizeIsUniform, sectionFooterSizes, sectionHeaderKeys, sectionHeaderSizeIsUniform, sectionHeaderSizes } = sectionsVersioned;
|
|
if (sectionsId !== state.sectionsId) {
|
|
return ref.current;
|
|
}
|
|
const fastestListChildJSX = function fastestListChildJSX(a0, a1) {
|
|
if (c17092_13) {
|
|
return <View style={{
|
|
width: c17092_1 ? a1 : void 0,
|
|
height: c17092_1 ? void 0 : a1,
|
|
overflow: "hidden"
|
|
}} collapsable={false}>
|
|
{a0}
|
|
</View>;
|
|
}
|
|
if (isValidElement(a0)) {
|
|
return a0;
|
|
}
|
|
throw new Error("Must return a single child element.");
|
|
};
|
|
let keyIndex = ref.current.keyIndex;
|
|
const map = new Map(ref.current.keys);
|
|
const map2 = new Map();
|
|
const items = [];
|
|
const r25 = [];
|
|
const fastestListVisibleItemsWithErrorChecking_native = getFastestListVisibleItemsWithErrorChecking_native(listId, state, sections);
|
|
let sectionStart2 = fastestListVisibleItemsWithErrorChecking_native.sectionStart;
|
|
sectionStart = sectionStart2;
|
|
sectionEnd = fastestListVisibleItemsWithErrorChecking_native.sectionEnd;
|
|
itemStart = fastestListVisibleItemsWithErrorChecking_native.itemStart;
|
|
itemEnd = fastestListVisibleItemsWithErrorChecking_native.itemEnd;
|
|
let r26 = sectionStart;
|
|
while (r26 <= sectionEnd) {
|
|
const r42 = r26;
|
|
if (!c17092_4) {
|
|
let r44 = r42 === sectionStart ? itemStart : 0;
|
|
const r87 = r42 !== sectionEnd ? sections[r42] - 1 : itemEnd;
|
|
while (r44 <= r87) {
|
|
const item3 = renderItem(r42, r44);
|
|
const r89 = r44;
|
|
const itemSize2 = itemSizeIsUniform ? itemSizes[0].sizes[0] : itemSizes[r42].sizes[r89];
|
|
let r48 = keysAreUniform ? itemKeys[0].keys[0] : itemKeys[r42].keys[r89];
|
|
if (r48 === "") {
|
|
r48 = `s${r42}-i${r89}`;
|
|
}
|
|
const portalId = `${listId}-${r48}`;
|
|
const r51 = map.get(portalId);
|
|
if (r51 != null) {
|
|
map2.set(portalId, r51);
|
|
map.delete(portalId);
|
|
items.push(<PortalToNativeView_native key={`${r51}`} portalId={portalId}>
|
|
{fastestListChildJSX(item3, itemSize2)}
|
|
</PortalToNativeView_native>);
|
|
} else {
|
|
r25.push({
|
|
keyId: portalId,
|
|
item: item3,
|
|
itemSize: itemSize2
|
|
});
|
|
}
|
|
r44 = r89 + 1;
|
|
}
|
|
}
|
|
r26 = r42 + 1;
|
|
}
|
|
for (const item of r25) {
|
|
const { keyId, item: item2, itemSize } = item;
|
|
if (map.size > 0) {
|
|
const value = map.keys().next().value;
|
|
const r158 = map.get(value);
|
|
map2.set(keyId, r158);
|
|
map.delete(value);
|
|
items.push(<PortalToNativeView_native key={`${r158}`} portalId={keyId}>
|
|
{fastestListChildJSX(item2, itemSize)}
|
|
</PortalToNativeView_native>);
|
|
} else {
|
|
const r132 = +keyIndex;
|
|
keyIndex = r132 + 1;
|
|
const r133 = "key-" + r132;
|
|
map2.set(keyId, r133);
|
|
items.push(<PortalToNativeView_native key={`${r133}`} portalId={keyId}>
|
|
{fastestListChildJSX(item2, itemSize)}
|
|
</PortalToNativeView_native>);
|
|
}
|
|
}
|
|
L35: {
|
|
if (renderListHeader != null && listHeaderSize > 0) {
|
|
if (!listHeaderAlwaysMounted && !(function() {
|
|
if (c17092_4) {
|
|
return false;
|
|
}
|
|
if (itemStart !== 0) {
|
|
return false;
|
|
}
|
|
let r0 = sectionStart - 1;
|
|
while (0 <= r0) {
|
|
const r11 = sections[r0];
|
|
const r1 = r0;
|
|
if (r11 > 0) {
|
|
return false;
|
|
}
|
|
r0 = r1 - 1;
|
|
}
|
|
return true;
|
|
})()) {
|
|
break L35;
|
|
}
|
|
const key = listHeaderKey !== "" ? listHeaderKey : "lh";
|
|
items.push(<PortalToNativeView_native key={key} portalId={`${listId}-${key}`}>
|
|
{fastestListChildJSX(renderListHeader(), listHeaderSize)}
|
|
</PortalToNativeView_native>);
|
|
}
|
|
}
|
|
L42: {
|
|
if (renderListFooter != null && listFooterSize > 0) {
|
|
if (!listFooterAlwaysMounted && !(function() {
|
|
if (c17092_4) {
|
|
return false;
|
|
}
|
|
if (itemEnd !== Math.max(sections[sectionEnd] - 1, 0)) {
|
|
return false;
|
|
}
|
|
let r15 = sectionEnd + 1;
|
|
while (r15 < sections.length) {
|
|
const r18 = sections[r15];
|
|
const r19 = r15;
|
|
if (r18 > 0) {
|
|
return false;
|
|
}
|
|
r15 = r19 + 1;
|
|
}
|
|
return true;
|
|
})()) {
|
|
break L42;
|
|
}
|
|
const key2 = `${listId}-${listFooterKey !== "" ? listFooterKey : "lf"}`;
|
|
items.push(<PortalToNativeView_native key={key2} portalId={key2}>
|
|
{fastestListChildJSX(renderListFooter(), listFooterSize)}
|
|
</PortalToNativeView_native>);
|
|
}
|
|
}
|
|
if (sectionStart <= sectionEnd) {
|
|
do {
|
|
const r221 = sectionStart2;
|
|
if (!c17092_4) {
|
|
const r222 = sectionFooterSizeIsUniform ? sectionFooterSizes[0] : sectionFooterSizes[r221];
|
|
if (r222 > 0 && renderSectionFooter != null) {
|
|
let r224 = keysAreUniform ? sectionFooterKeys[0] : sectionFooterKeys[r221];
|
|
if (r224 === "") {
|
|
r224 = `sf${r221}`;
|
|
}
|
|
const key3 = `${listId}-${r224}`;
|
|
items.push(<PortalToNativeView_native key={key3} portalId={key3}>
|
|
{fastestListChildJSX(renderSectionFooter(r221), r222)}
|
|
</PortalToNativeView_native>);
|
|
}
|
|
const r241 = sectionHeaderSizeIsUniform ? sectionHeaderSizes[0] : sectionHeaderSizes[r221];
|
|
if (r241 > 0 && renderSectionHeader != null) {
|
|
let r243 = keysAreUniform ? sectionHeaderKeys[0] : sectionHeaderKeys[r221];
|
|
if (r243 === "") {
|
|
r243 = `sh${r221}`;
|
|
}
|
|
const key4 = `${listId}-${r243}`;
|
|
items.push(<PortalToNativeView_native key={key4} portalId={key4}>
|
|
{fastestListChildJSX(renderSectionHeader(r221), r241)}
|
|
</PortalToNativeView_native>);
|
|
}
|
|
}
|
|
sectionStart2 = r221 + 1;
|
|
} while (sectionStart2 <= sectionEnd);
|
|
}
|
|
return {
|
|
items,
|
|
keys: map2,
|
|
keyIndex
|
|
};
|
|
}, [horizontal, listFooterAlwaysMounted, listHeaderAlwaysMounted, placeholdersForceEnabled, renderItem, renderListFooter, renderListHeader, renderSectionFooter, renderSectionHeader, sectionsVersioned, state, wrapChildren]);
|
|
useEffect(() => {
|
|
ref.current = memo;
|
|
}, [memo]);
|
|
return <View pointerEvents="none" style={memo2}>{memo.items}</View>;
|
|
}));
|
|
export default r43;
|