1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.useTangledState = void 0;
|
4 | var React = require("react");
|
5 | var useTangledContext_1 = require("./useTangledContext");
|
6 | function useTangledState(key, defaultV) {
|
7 | var tangledContext = useTangledContext_1.useTangledContext();
|
8 | var _a = React.useState(tangledContext.stateOf(key) || defaultV), localState = _a[0], setLocalState = _a[1];
|
9 | var cbRef = React.useRef(undefined);
|
10 | React.useEffect(function () {
|
11 | cbRef.current = function (newV, _oldV, source) {
|
12 | if (source !== cbRef.current) {
|
13 | setLocalState(newV);
|
14 | }
|
15 | };
|
16 | return tangledContext.subscribe(key, cbRef.current);
|
17 | }, []);
|
18 | React.useEffect(function () {
|
19 | if (localState !== tangledContext.stateOf(key)) {
|
20 | tangledContext.update(key, localState, cbRef.current);
|
21 | }
|
22 | }, [localState]);
|
23 | return [localState, setLocalState];
|
24 | }
|
25 | exports.useTangledState = useTangledState;
|