@t8/react-pending 1.0.29 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -2,34 +2,29 @@ let react = require("react");
2
2
  let __t8_react_store = require("@t8/react-store");
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
4
 
5
- //#region src/PendingStateContext.ts
6
5
  const PendingStateContext = (0, react.createContext)(/* @__PURE__ */ new Map());
7
6
 
8
- //#endregion
9
- //#region src/PendingStateProvider.tsx
10
7
  const PendingStateProvider = ({ value, children }) => {
11
- let defaultValueRef = (0, react.useRef)(null);
12
- let resolvedValue = (0, react.useMemo)(() => {
13
- if (value instanceof Map) return value;
14
- if (typeof value === "object" && value !== null) return new Map(Object.entries(value).map(([key, state]) => [key, new __t8_react_store.Store(state)]));
15
- if (defaultValueRef.current === null) defaultValueRef.current = /* @__PURE__ */ new Map();
16
- return defaultValueRef.current;
17
- }, [value]);
18
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PendingStateContext.Provider, {
19
- value: resolvedValue,
20
- children
21
- });
8
+ let defaultValueRef = (0, react.useRef)(null);
9
+ let resolvedValue = (0, react.useMemo)(() => {
10
+ if (value instanceof Map) return value;
11
+ if (typeof value === "object" && value !== null) return new Map(Object.entries(value).map(([key, state]) => [key, new __t8_react_store.Store(state)]));
12
+ if (defaultValueRef.current === null) defaultValueRef.current = /* @__PURE__ */ new Map();
13
+ return defaultValueRef.current;
14
+ }, [value]);
15
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PendingStateContext.Provider, {
16
+ value: resolvedValue,
17
+ children
18
+ });
22
19
  };
23
20
 
24
- //#endregion
25
- //#region src/usePendingState.ts
26
21
  function createState(initialized = false, complete = false, error) {
27
- return {
28
- initialized,
29
- complete,
30
- error,
31
- time: Date.now()
32
- };
22
+ return {
23
+ initialized,
24
+ complete,
25
+ error,
26
+ time: Date.now()
27
+ };
33
28
  }
34
29
  /**
35
30
  * Returns an instance of an action's state and the functions to update it.
@@ -46,73 +41,72 @@ function createState(initialized = false, complete = false, error) {
46
41
  * an another state value.
47
42
  */
48
43
  function usePendingState(store) {
49
- let storeMap = (0, react.useContext)(PendingStateContext);
50
- let storeRef = (0, react.useRef)(null);
51
- let [storeItemInited, setStoreItemInited] = (0, react.useState)(false);
52
- let [state, setState] = (0, __t8_react_store.useStore)((0, react.useMemo)(() => {
53
- if ((0, __t8_react_store.isStore)(store)) return store;
54
- if (typeof store === "string") {
55
- let storeItem = storeMap.get(store);
56
- if (!storeItem) {
57
- storeItem = new __t8_react_store.Store(createState());
58
- storeMap.set(store, storeItem);
59
- if (!storeItemInited) setStoreItemInited(true);
60
- }
61
- return storeItem;
62
- }
63
- if (!storeRef.current) storeRef.current = new __t8_react_store.Store(createState());
64
- return storeRef.current;
65
- }, [
66
- store,
67
- storeMap,
68
- storeItemInited
69
- ]));
70
- return [
71
- state,
72
- (0, react.useCallback)((value, options) => {
73
- if (value instanceof Promise) {
74
- let delayedPending = null;
75
- if (!options?.silent) {
76
- let delay = options?.delay;
77
- if (delay === void 0) setState((prevState) => ({
78
- ...prevState,
79
- ...createState(true, false)
80
- }));
81
- else delayedPending = setTimeout(() => {
82
- setState((prevState) => ({
83
- ...prevState,
84
- ...createState(true, false)
85
- }));
86
- delayedPending = null;
87
- }, delay);
88
- }
89
- return value.then((resolvedValue) => {
90
- if (delayedPending !== null) clearTimeout(delayedPending);
91
- setState((prevState) => ({
92
- ...prevState,
93
- ...createState(true, true)
94
- }));
95
- return resolvedValue;
96
- }).catch((error) => {
97
- if (delayedPending !== null) clearTimeout(delayedPending);
98
- setState((prevState) => ({
99
- ...prevState,
100
- ...createState(true, true, error)
101
- }));
102
- if (options?.throws) throw error;
103
- });
104
- }
105
- setState((prevState) => ({
106
- ...prevState,
107
- ...createState(true, true)
108
- }));
109
- return value;
110
- }, [setState]),
111
- setState
112
- ];
44
+ let storeMap = (0, react.useContext)(PendingStateContext);
45
+ let storeRef = (0, react.useRef)(null);
46
+ let [storeItemInited, setStoreItemInited] = (0, react.useState)(false);
47
+ let [state, setState] = (0, __t8_react_store.useStore)((0, react.useMemo)(() => {
48
+ if ((0, __t8_react_store.isStore)(store)) return store;
49
+ if (typeof store === "string") {
50
+ let storeItem = storeMap.get(store);
51
+ if (!storeItem) {
52
+ storeItem = new __t8_react_store.Store(createState());
53
+ storeMap.set(store, storeItem);
54
+ if (!storeItemInited) setStoreItemInited(true);
55
+ }
56
+ return storeItem;
57
+ }
58
+ if (!storeRef.current) storeRef.current = new __t8_react_store.Store(createState());
59
+ return storeRef.current;
60
+ }, [
61
+ store,
62
+ storeMap,
63
+ storeItemInited
64
+ ]));
65
+ return [
66
+ state,
67
+ (0, react.useCallback)((value, options) => {
68
+ if (value instanceof Promise) {
69
+ let delayedPending = null;
70
+ if (!options?.silent) {
71
+ let delay = options?.delay;
72
+ if (delay === void 0) setState((prevState) => ({
73
+ ...prevState,
74
+ ...createState(true, false)
75
+ }));
76
+ else delayedPending = setTimeout(() => {
77
+ setState((prevState) => ({
78
+ ...prevState,
79
+ ...createState(true, false)
80
+ }));
81
+ delayedPending = null;
82
+ }, delay);
83
+ }
84
+ return value.then((resolvedValue) => {
85
+ if (delayedPending !== null) clearTimeout(delayedPending);
86
+ setState((prevState) => ({
87
+ ...prevState,
88
+ ...createState(true, true)
89
+ }));
90
+ return resolvedValue;
91
+ }).catch((error) => {
92
+ if (delayedPending !== null) clearTimeout(delayedPending);
93
+ setState((prevState) => ({
94
+ ...prevState,
95
+ ...createState(true, true, error)
96
+ }));
97
+ if (options?.throws) throw error;
98
+ });
99
+ }
100
+ setState((prevState) => ({
101
+ ...prevState,
102
+ ...createState(true, true)
103
+ }));
104
+ return value;
105
+ }, [setState]),
106
+ setState
107
+ ];
113
108
  }
114
109
 
115
- //#endregion
116
110
  exports.PendingStateContext = PendingStateContext;
117
111
  exports.PendingStateProvider = PendingStateProvider;
118
- exports.usePendingState = usePendingState;
112
+ exports.usePendingState = usePendingState;
package/dist/index.mjs CHANGED
@@ -2,34 +2,29 @@ import { createContext, useCallback, useContext, useMemo, useRef, useState } fro
2
2
  import { Store, isStore, useStore } from "@t8/react-store";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
5
- //#region src/PendingStateContext.ts
6
5
  const PendingStateContext = createContext(/* @__PURE__ */ new Map());
7
6
 
8
- //#endregion
9
- //#region src/PendingStateProvider.tsx
10
7
  const PendingStateProvider = ({ value, children }) => {
11
- let defaultValueRef = useRef(null);
12
- let resolvedValue = useMemo(() => {
13
- if (value instanceof Map) return value;
14
- if (typeof value === "object" && value !== null) return new Map(Object.entries(value).map(([key, state]) => [key, new Store(state)]));
15
- if (defaultValueRef.current === null) defaultValueRef.current = /* @__PURE__ */ new Map();
16
- return defaultValueRef.current;
17
- }, [value]);
18
- return /* @__PURE__ */ jsx(PendingStateContext.Provider, {
19
- value: resolvedValue,
20
- children
21
- });
8
+ let defaultValueRef = useRef(null);
9
+ let resolvedValue = useMemo(() => {
10
+ if (value instanceof Map) return value;
11
+ if (typeof value === "object" && value !== null) return new Map(Object.entries(value).map(([key, state]) => [key, new Store(state)]));
12
+ if (defaultValueRef.current === null) defaultValueRef.current = /* @__PURE__ */ new Map();
13
+ return defaultValueRef.current;
14
+ }, [value]);
15
+ return /* @__PURE__ */ jsx(PendingStateContext.Provider, {
16
+ value: resolvedValue,
17
+ children
18
+ });
22
19
  };
23
20
 
24
- //#endregion
25
- //#region src/usePendingState.ts
26
21
  function createState(initialized = false, complete = false, error) {
27
- return {
28
- initialized,
29
- complete,
30
- error,
31
- time: Date.now()
32
- };
22
+ return {
23
+ initialized,
24
+ complete,
25
+ error,
26
+ time: Date.now()
27
+ };
33
28
  }
34
29
  /**
35
30
  * Returns an instance of an action's state and the functions to update it.
@@ -46,71 +41,70 @@ function createState(initialized = false, complete = false, error) {
46
41
  * an another state value.
47
42
  */
48
43
  function usePendingState(store) {
49
- let storeMap = useContext(PendingStateContext);
50
- let storeRef = useRef(null);
51
- let [storeItemInited, setStoreItemInited] = useState(false);
52
- let [state, setState] = useStore(useMemo(() => {
53
- if (isStore(store)) return store;
54
- if (typeof store === "string") {
55
- let storeItem = storeMap.get(store);
56
- if (!storeItem) {
57
- storeItem = new Store(createState());
58
- storeMap.set(store, storeItem);
59
- if (!storeItemInited) setStoreItemInited(true);
60
- }
61
- return storeItem;
62
- }
63
- if (!storeRef.current) storeRef.current = new Store(createState());
64
- return storeRef.current;
65
- }, [
66
- store,
67
- storeMap,
68
- storeItemInited
69
- ]));
70
- return [
71
- state,
72
- useCallback((value, options) => {
73
- if (value instanceof Promise) {
74
- let delayedPending = null;
75
- if (!options?.silent) {
76
- let delay = options?.delay;
77
- if (delay === void 0) setState((prevState) => ({
78
- ...prevState,
79
- ...createState(true, false)
80
- }));
81
- else delayedPending = setTimeout(() => {
82
- setState((prevState) => ({
83
- ...prevState,
84
- ...createState(true, false)
85
- }));
86
- delayedPending = null;
87
- }, delay);
88
- }
89
- return value.then((resolvedValue) => {
90
- if (delayedPending !== null) clearTimeout(delayedPending);
91
- setState((prevState) => ({
92
- ...prevState,
93
- ...createState(true, true)
94
- }));
95
- return resolvedValue;
96
- }).catch((error) => {
97
- if (delayedPending !== null) clearTimeout(delayedPending);
98
- setState((prevState) => ({
99
- ...prevState,
100
- ...createState(true, true, error)
101
- }));
102
- if (options?.throws) throw error;
103
- });
104
- }
105
- setState((prevState) => ({
106
- ...prevState,
107
- ...createState(true, true)
108
- }));
109
- return value;
110
- }, [setState]),
111
- setState
112
- ];
44
+ let storeMap = useContext(PendingStateContext);
45
+ let storeRef = useRef(null);
46
+ let [storeItemInited, setStoreItemInited] = useState(false);
47
+ let [state, setState] = useStore(useMemo(() => {
48
+ if (isStore(store)) return store;
49
+ if (typeof store === "string") {
50
+ let storeItem = storeMap.get(store);
51
+ if (!storeItem) {
52
+ storeItem = new Store(createState());
53
+ storeMap.set(store, storeItem);
54
+ if (!storeItemInited) setStoreItemInited(true);
55
+ }
56
+ return storeItem;
57
+ }
58
+ if (!storeRef.current) storeRef.current = new Store(createState());
59
+ return storeRef.current;
60
+ }, [
61
+ store,
62
+ storeMap,
63
+ storeItemInited
64
+ ]));
65
+ return [
66
+ state,
67
+ useCallback((value, options) => {
68
+ if (value instanceof Promise) {
69
+ let delayedPending = null;
70
+ if (!options?.silent) {
71
+ let delay = options?.delay;
72
+ if (delay === void 0) setState((prevState) => ({
73
+ ...prevState,
74
+ ...createState(true, false)
75
+ }));
76
+ else delayedPending = setTimeout(() => {
77
+ setState((prevState) => ({
78
+ ...prevState,
79
+ ...createState(true, false)
80
+ }));
81
+ delayedPending = null;
82
+ }, delay);
83
+ }
84
+ return value.then((resolvedValue) => {
85
+ if (delayedPending !== null) clearTimeout(delayedPending);
86
+ setState((prevState) => ({
87
+ ...prevState,
88
+ ...createState(true, true)
89
+ }));
90
+ return resolvedValue;
91
+ }).catch((error) => {
92
+ if (delayedPending !== null) clearTimeout(delayedPending);
93
+ setState((prevState) => ({
94
+ ...prevState,
95
+ ...createState(true, true, error)
96
+ }));
97
+ if (options?.throws) throw error;
98
+ });
99
+ }
100
+ setState((prevState) => ({
101
+ ...prevState,
102
+ ...createState(true, true)
103
+ }));
104
+ return value;
105
+ }, [setState]),
106
+ setState
107
+ ];
113
108
  }
114
109
 
115
- //#endregion
116
- export { PendingStateContext, PendingStateProvider, usePendingState };
110
+ export { PendingStateContext, PendingStateProvider, usePendingState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t8/react-pending",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "description": "Concise async action state tracking for React apps",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -29,13 +29,13 @@
29
29
  },
30
30
  "devDependencies": {
31
31
  "@playwright/test": "^1.56.0",
32
- "@t8/serve": "^0.1.37",
32
+ "@t8/serve": "^0.1.38",
33
33
  "@types/node": "^24.10.2",
34
34
  "@types/react": "^19.2.7",
35
35
  "@types/react-dom": "^19.2.3",
36
36
  "react-dom": "^19.2.1"
37
37
  },
38
38
  "dependencies": {
39
- "@t8/react-store": "^1.2.5"
39
+ "@t8/react-store": "^1.2.6"
40
40
  }
41
41
  }