83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
// 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);
|
|
}
|