Files
discord-decomp/_bundle/defaultAreStatesEqual.js
T
2026-11-01 12:12:55 +02:00

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);
}