// 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 {a0} ; } 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( {fastestListChildJSX(item3, itemSize2)} ); } 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( {fastestListChildJSX(item2, itemSize)} ); } else { const r132 = +keyIndex; keyIndex = r132 + 1; const r133 = "key-" + r132; map2.set(keyId, r133); items.push( {fastestListChildJSX(item2, itemSize)} ); } } 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( {fastestListChildJSX(renderListHeader(), listHeaderSize)} ); } } 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( {fastestListChildJSX(renderListFooter(), listFooterSize)} ); } } 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( {fastestListChildJSX(renderSectionFooter(r221), r222)} ); } 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( {fastestListChildJSX(renderSectionHeader(r221), r241)} ); } } 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 {memo.items}; })); export default r43;