UNPKG

react-async-iterators

Version:

The magic of JavaScript async iterators in React ⛓️ 🧬 🔃

23 lines 1.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAsyncIterState = useAsyncIterState; const callOrReturn_js_1 = require("../common/callOrReturn.js"); const useRefWithInitialValue_js_1 = require("../common/hooks/useRefWithInitialValue.js"); const useEffectStrictModeSafe_js_1 = require("../common/hooks/useEffectStrictModeSafe.js"); const AsyncIterableChannel_js_1 = require("../common/AsyncIterableChannel.js"); function useAsyncIterState(initialValue) { const ref = (0, useRefWithInitialValue_js_1.useRefWithInitialValue)(() => { const initialValueCalced = (0, callOrReturn_js_1.callOrReturn)(initialValue); const channel = new AsyncIterableChannel_js_1.AsyncIterableChannel(initialValueCalced); return { channel, result: [channel.out, newVal => channel.put(newVal)], }; }); const { channel, result } = ref.current; (0, useEffectStrictModeSafe_js_1.useEffectStrictModeSafe)(() => { return () => channel.close(); }); return result; } //# sourceMappingURL=index.js.map