UNPKG

react-async-states

Version:

A low-level multi paradigm state management library

47 lines (44 loc) 1.69 kB
import * as React from 'react'; import { freeze } from '../../shared/index.js'; import { HydrationComponent } from '../../provider/Provider.js'; function createLegacyReturn(subscription, config) { return createBaseReturn(subscription, config); } function selectState(instance, selector) { let { state: currentState, lastSuccess, cache } = instance; if (selector) { return selector(currentState, lastSuccess, cache); } else { return currentState; } } function createBaseReturn(subscription, config) { let instance = subscription.instance; let currentState = instance.state; let lastSuccess = instance.lastSuccess; let selectedState = selectState(instance, config.selector); let previousState = currentState.status === "pending" ? currentState.prev : currentState; let status = currentState.status; let source = subscription.instance.actions; return freeze({ source, state: selectedState, dataProps: lastSuccess.props, isError: status === "error", isInitial: status === "initial", isPending: status === "pending", isSuccess: status === "success", data: lastSuccess.data ?? null, error: previousState.status === "error" ? previousState.data : null, onChange: subscription.onChange, onSubscribe: subscription.onSubscribe, read: subscription.read.bind(null, config), Hydrate: () => React.createElement(HydrationComponent, { target: [source] }), }); } function selectWholeState(state) { return state; } export { createBaseReturn, createLegacyReturn, selectWholeState }; //# sourceMappingURL=HookReturnValue.js.map