12345678910111213141516171819202122232425262728293031323334353637 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.useSelector = void 0;
- var react_1 = require("react");
- var with_selector_1 = require("use-sync-external-store/shim/with-selector");
- var useActor_1 = require("./useActor");
- var utils_1 = require("./utils");
- var defaultCompare = function (a, b) { return a === b; };
- var defaultGetSnapshot = function (a, initialStateCacheRef) {
- if ((0, utils_1.isService)(a)) {
- // A status of 0 = interpreter not started
- if (a.status === 0 && initialStateCacheRef.current) {
- return initialStateCacheRef.current;
- }
- var snapshot = (0, utils_1.getServiceSnapshot)(a);
- initialStateCacheRef.current = a.status === 0 ? snapshot : null;
- return snapshot;
- }
- return (0, useActor_1.isActorWithState)(a) ? a.state : undefined;
- };
- function useSelector(actor, selector, compare, getSnapshot) {
- if (compare === void 0) { compare = defaultCompare; }
- var initialStateCacheRef = (0, react_1.useRef)(null);
- var subscribe = (0, react_1.useCallback)(function (handleStoreChange) {
- var unsubscribe = actor.subscribe(handleStoreChange).unsubscribe;
- return unsubscribe;
- }, [actor]);
- var boundGetSnapshot = (0, react_1.useCallback)(function () {
- if (getSnapshot) {
- return getSnapshot(actor);
- }
- return defaultGetSnapshot(actor, initialStateCacheRef);
- }, [actor, getSnapshot]);
- var selectedSnapshot = (0, with_selector_1.useSyncExternalStoreWithSelector)(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
- return selectedSnapshot;
- }
- exports.useSelector = useSelector;
|