// Metro module 647 (f648). import _slicedToArray from "./_slicedToArray"; import { useInsertionEffect, useRef, useState } from "react"; import shallowEqual, { areArraysShallowEqual } from "./shallowEqual"; import { BatchedStoreListener } from "./Module648"; let useStateFromStores; const defaultAreStatesEqual = function defaultAreStatesEqual(a0, a1) { return a0 === a1; }; useStateFromStores = function useStateFromStores(a0, a1, a2) { let r22; let current, state, setState; const getStateFromStores = a1; const prevDeps = a2; let r9 = arguments[3]; if (r9 === void 0) { r9 = defaultAreStatesEqual; } const defaultAreStatesEqual2 = r9; current = void 0; state = void 0; setState = void 0; const ref = useRef(null); if (ref.current == null) { ref.current = { stores: a0, areStatesEqual: defaultAreStatesEqual2, getStateFromStores: a1, prevDeps: void 0, state: void 0 }; } L10: { current = ref.current; const state2 = current.state; state = state2; if (a2 != null) { const r21 = areArraysShallowEqual(a2, current.prevDeps); r22 = state2; if (r21) { break L10; } } const r23 = a1(); const r24 = state2 != null && defaultAreStatesEqual2(state2, r23); r22 = state2; if (!r24) { state = r23; r22 = r23; } } useInsertionEffect(() => { current.getStateFromStores = getStateFromStores; current.prevDeps = prevDeps; current.state = state; }); setState = _slicedToArray(useState(null), 2)[1]; useInsertionEffect(() => { let c23815_0; const batchedStoreListener = new BatchedStoreListener(a0, function() { const stateFromStores = current.getStateFromStores(); if (!defaultAreStatesEqual2(current.state, stateFromStores)) { current.state = stateFromStores; setState({}); } }); c23815_0 = batchedStoreListener; batchedStoreListener.attach("useStateFromStores"); return () => c23815_0.detach(); }, []); return r22; }; export function statesWillNeverBeEqual() { return false; } export { useStateFromStores }; export function useStateFromStoresObject(a0, a1, a2) { return useStateFromStores(a0, a1, a2, shallowEqual); } export function useStateFromStoresArray(a0, a1, a2) { return useStateFromStores(a0, a1, a2, areArraysShallowEqual); }