atomaric 0.0.37 → 0.0.38
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/build/atomaric.js +188 -163
- package/build/atomaric.umd.cjs +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +1 -1
package/build/atomaric.js
CHANGED
|
@@ -1,237 +1,262 @@
|
|
|
1
|
-
let
|
|
1
|
+
let R = () => {
|
|
2
2
|
throw "call configureAtomaric() before all!";
|
|
3
3
|
};
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
},
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
const V = {}, K = (e) => {
|
|
5
|
+
V.useSyncExternalStore = R = e.useSyncExternalStore, V.keyPathSeparator = e.keyPathSeparator;
|
|
6
|
+
}, U = (e) => R(e.subscribe, e.get), W = (e) => e.set, ee = (e) => e.setDeferred, te = (e) => e.get, re = (e) => e.do, ne = (e) => [U(e), W(e)], se = (e, s) => new Y(e, s), q = (e, s) => {
|
|
7
|
+
const o = (d, g, w) => new Proxy(d, {
|
|
8
|
+
get: (t, r, c) => {
|
|
9
|
+
const l = w === 0 && s.get != null ? s.get(t, r, c) : t[r];
|
|
10
|
+
return typeof l == "object" && l !== null ? o(
|
|
11
|
+
Array.isArray(l) ? l.slice(0) : { ...l },
|
|
12
|
+
g.concat(Array.isArray(t) ? +r : r),
|
|
13
|
+
w + 1
|
|
14
|
+
) : l;
|
|
15
|
+
},
|
|
16
|
+
set: (t, r, c) => (s.onSet(t, g, r, c, t[r]) && (t[r] = c), !0)
|
|
17
|
+
});
|
|
18
|
+
return o(e, [], 0);
|
|
19
|
+
}, Q = (e, s, o) => {
|
|
20
|
+
let d = null;
|
|
21
|
+
typeof e == "number" ? d = T(
|
|
22
|
+
s,
|
|
23
|
+
(t) => ({
|
|
24
|
+
increment: (r) => {
|
|
25
|
+
t.set(+t.get() + (r ?? 0));
|
|
13
26
|
}
|
|
14
27
|
})
|
|
15
|
-
) : typeof e == "boolean" ?
|
|
16
|
-
|
|
17
|
-
(
|
|
28
|
+
) : typeof e == "boolean" ? d = T(
|
|
29
|
+
s,
|
|
30
|
+
(t) => ({
|
|
18
31
|
toggle: () => {
|
|
19
|
-
|
|
32
|
+
t.set(!t.get());
|
|
20
33
|
}
|
|
21
34
|
})
|
|
22
|
-
) : Array.isArray(e) ?
|
|
23
|
-
|
|
24
|
-
(
|
|
25
|
-
push: (...
|
|
26
|
-
|
|
35
|
+
) : Array.isArray(e) ? d = T(
|
|
36
|
+
s,
|
|
37
|
+
(t) => ({
|
|
38
|
+
push: (...r) => {
|
|
39
|
+
t.set(t.get().concat(r));
|
|
27
40
|
},
|
|
28
|
-
unshift: (...
|
|
29
|
-
|
|
41
|
+
unshift: (...r) => {
|
|
42
|
+
t.set(r.concat(t.get()));
|
|
30
43
|
},
|
|
31
|
-
update: (
|
|
32
|
-
const c =
|
|
33
|
-
|
|
44
|
+
update: (r) => {
|
|
45
|
+
const c = t.get(), l = M(c, r);
|
|
46
|
+
l !== c && t.set(l);
|
|
34
47
|
},
|
|
35
|
-
filter: (
|
|
36
|
-
|
|
48
|
+
filter: (r) => {
|
|
49
|
+
t.set(t.get().filter(r ?? X));
|
|
37
50
|
},
|
|
38
|
-
toggle: (
|
|
39
|
-
const
|
|
40
|
-
|
|
51
|
+
toggle: (r, c) => {
|
|
52
|
+
const l = t.get().slice(), f = l.indexOf(r);
|
|
53
|
+
f < 0 ? c ? l.unshift(r) : l.push(r) : l.splice(f, 1), t.set(l);
|
|
41
54
|
}
|
|
42
55
|
})
|
|
43
|
-
) : e instanceof Set ?
|
|
44
|
-
|
|
45
|
-
(
|
|
46
|
-
add: (
|
|
47
|
-
|
|
56
|
+
) : e instanceof Set ? d = T(
|
|
57
|
+
s,
|
|
58
|
+
(t) => ({
|
|
59
|
+
add: (r) => {
|
|
60
|
+
t.set(new Set(t.get()).add(r));
|
|
48
61
|
},
|
|
49
|
-
delete: (
|
|
50
|
-
const c = new Set(
|
|
51
|
-
c.delete(
|
|
62
|
+
delete: (r) => {
|
|
63
|
+
const c = new Set(t.get());
|
|
64
|
+
c.delete(r), t.set(c);
|
|
52
65
|
},
|
|
53
|
-
toggle: (
|
|
54
|
-
const c = new Set(
|
|
55
|
-
c.has(
|
|
66
|
+
toggle: (r) => {
|
|
67
|
+
const c = new Set(t.get());
|
|
68
|
+
c.has(r) ? c.delete(r) : c.add(r), t.set(c);
|
|
56
69
|
},
|
|
57
70
|
clear: () => {
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
update: (n) => {
|
|
61
|
-
const c = new Set(s.get());
|
|
62
|
-
n(c), s.set(c);
|
|
71
|
+
t.set(/* @__PURE__ */ new Set());
|
|
63
72
|
}
|
|
64
73
|
})
|
|
65
|
-
) : e instanceof Object && (
|
|
66
|
-
|
|
67
|
-
(
|
|
68
|
-
setPartial: (
|
|
74
|
+
) : e instanceof Object && (d = T(
|
|
75
|
+
s,
|
|
76
|
+
(t) => ({
|
|
77
|
+
setPartial: (r) => t.set((c) => ({
|
|
69
78
|
...c,
|
|
70
|
-
...typeof
|
|
79
|
+
...typeof r == "function" ? r(t.get()) : r
|
|
71
80
|
})),
|
|
72
|
-
update: (
|
|
73
|
-
const c =
|
|
74
|
-
|
|
81
|
+
update: (r) => {
|
|
82
|
+
const c = t.get(), l = M(c, r);
|
|
83
|
+
l !== c && t.set(l);
|
|
75
84
|
},
|
|
76
|
-
setDeepPartial: (
|
|
77
|
-
if (
|
|
78
|
-
let
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
let
|
|
83
|
-
for (const
|
|
84
|
-
let
|
|
85
|
-
const _ =
|
|
86
|
-
if (
|
|
87
|
-
|
|
85
|
+
setDeepPartial: (r, c, l, f = V.keyPathSeparator ?? ".") => {
|
|
86
|
+
if (r.includes(f)) {
|
|
87
|
+
let h = r.split(f);
|
|
88
|
+
const b = h[h.length - 1];
|
|
89
|
+
h = h.slice(0, -1);
|
|
90
|
+
const y = { ...t.get() };
|
|
91
|
+
let S = y, m = l;
|
|
92
|
+
for (const A of h) {
|
|
93
|
+
let p = S[A];
|
|
94
|
+
const _ = m = m == null ? void 0 : m[Array.isArray(m) ? "0" : A];
|
|
95
|
+
if (p == null && (p = Array.isArray(_) ? [] : {}), p == null || typeof p != "object") {
|
|
96
|
+
t.do.setPartial({ [r]: typeof c == "function" ? c(void 0) : c });
|
|
88
97
|
return;
|
|
89
98
|
}
|
|
90
|
-
|
|
99
|
+
S = S[A] = Array.isArray(p) ? [...p] : { ...p };
|
|
91
100
|
}
|
|
92
|
-
|
|
93
|
-
} else
|
|
101
|
+
S[b] = typeof c == "function" ? c(S[b]) : c, t.set(y);
|
|
102
|
+
} else t.do.setPartial({ [r]: c });
|
|
94
103
|
}
|
|
95
104
|
})
|
|
96
105
|
));
|
|
97
|
-
const
|
|
98
|
-
(
|
|
99
|
-
() =>
|
|
100
|
-
|
|
101
|
-
(
|
|
102
|
-
) : null,
|
|
103
|
-
return
|
|
104
|
-
(
|
|
105
|
-
),
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
const g = typeof o == "object" && o != null && "do" in o ? o.do(
|
|
107
|
+
(t, r) => s.set(t, r),
|
|
108
|
+
() => s.get(),
|
|
109
|
+
s,
|
|
110
|
+
(t, r, c) => s.setDeferred(t, r, c)
|
|
111
|
+
) : null, w = {};
|
|
112
|
+
return g && Object.keys(g).forEach((t) => Object.defineProperty(w, t, { get: () => g[t] })), d && Object.keys(d).forEach(
|
|
113
|
+
(t) => Object.defineProperty(w, t, { get: () => d[t] })
|
|
114
|
+
), w;
|
|
115
|
+
}, X = (e) => e, T = (e, s, o) => s(e), M = (e, s) => {
|
|
116
|
+
const o = Array.isArray(e) ? e.slice(0) : { ...e };
|
|
117
|
+
let d = !1;
|
|
118
|
+
const g = q(e, {
|
|
119
|
+
onSet: (w, t, r, c, l) => {
|
|
120
|
+
if (c === l) return !0;
|
|
121
|
+
let f = o;
|
|
122
|
+
d = !0;
|
|
123
|
+
for (const h of t) {
|
|
124
|
+
const b = f[h];
|
|
125
|
+
f = f[h] = Array.isArray(b) ? b.slice(0) : { ...b };
|
|
126
|
+
}
|
|
127
|
+
return f[r] = c, !0;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return s(g), d ? o : e;
|
|
131
|
+
};
|
|
132
|
+
class Y {
|
|
133
|
+
constructor(s, o) {
|
|
134
|
+
const d = (n) => r = n, g = () => r, w = /* @__PURE__ */ new Set(), t = (n) => n(f());
|
|
135
|
+
let r = s, c, l = () => {
|
|
136
|
+
}, f = () => g(), h = null, b = () => {
|
|
137
|
+
const n = Q(s, y, o);
|
|
138
|
+
return b = () => n, n;
|
|
114
139
|
};
|
|
115
|
-
const
|
|
116
|
-
get: (
|
|
117
|
-
set:
|
|
118
|
-
}),
|
|
119
|
-
const
|
|
120
|
-
if (!(
|
|
121
|
-
|
|
140
|
+
const y = new Proxy(this, {
|
|
141
|
+
get: (n, a) => a === "do" ? b() : n[a],
|
|
142
|
+
set: Z
|
|
143
|
+
}), S = (n, a) => {
|
|
144
|
+
const x = typeof n == "function" ? n(f()) : n;
|
|
145
|
+
if (!(x === f() || x === void 0 || typeof x == "number" && isNaN(x))) {
|
|
146
|
+
d(x), w.forEach(t, this);
|
|
122
147
|
try {
|
|
123
|
-
|
|
148
|
+
$.postMessage({ key: u, value: g() });
|
|
124
149
|
} catch {
|
|
125
150
|
}
|
|
126
|
-
|
|
151
|
+
a !== !0 && l(x);
|
|
127
152
|
}
|
|
128
153
|
};
|
|
129
|
-
this.set = (
|
|
130
|
-
|
|
154
|
+
this.set = (n, a) => S(n, a), this.get = () => f(), this.initialValue = s, this.isInitialValue = () => s === g(), this.subscribe = (n) => (w.add(n), () => {
|
|
155
|
+
w.delete(n);
|
|
131
156
|
}), this.reset = () => {
|
|
132
|
-
|
|
157
|
+
S(s, !0), w.forEach(t, this);
|
|
133
158
|
};
|
|
134
|
-
const
|
|
135
|
-
|
|
159
|
+
const m = (n, a) => {
|
|
160
|
+
S(n, a), c = void 0;
|
|
136
161
|
};
|
|
137
|
-
if (this.setDeferred = (
|
|
138
|
-
L && c === void 0 &&
|
|
139
|
-
},
|
|
140
|
-
let
|
|
141
|
-
if (
|
|
142
|
-
throw console.error(
|
|
143
|
-
} : (
|
|
144
|
-
if (typeof
|
|
145
|
-
|
|
146
|
-
else if ("storeKey" in
|
|
147
|
-
_ =
|
|
148
|
-
else return
|
|
149
|
-
const
|
|
150
|
-
const
|
|
151
|
-
return
|
|
162
|
+
if (this.setDeferred = (n, a = 500, x, L = !0) => {
|
|
163
|
+
L && c === void 0 && S(n, x), clearTimeout(c), c = setTimeout(m, a, n, x);
|
|
164
|
+
}, o == null) return y;
|
|
165
|
+
let A = null, p = null, _ = !0, P = !0, E = !1, z = -1, C = s instanceof Set ? (n) => new Set(n) : (n) => n, j = s instanceof Set ? (n) => {
|
|
166
|
+
if (n instanceof Set) return Array.from(n);
|
|
167
|
+
throw console.error(n), "The value is not Set instance";
|
|
168
|
+
} : (n) => n;
|
|
169
|
+
if (typeof o == "string")
|
|
170
|
+
A = o;
|
|
171
|
+
else if ("storeKey" in o)
|
|
172
|
+
_ = o.warnOnDuplicateStoreKey ?? _, P = o.listenStorageChanges ?? P, A = o.storeKey, C = o.unzipValue ?? C, j = o.zipValue ?? j, E = o.unchangable ?? E, p = o.exp ?? p;
|
|
173
|
+
else return y;
|
|
174
|
+
const u = `${B}${A}`, F = p === null || !(p(y, u in i) instanceof Date) ? (n) => JSON.stringify([j(n)]) : (n) => (h ?? (h = {}), h.exp = p(y, u in i).getTime() + 0.2866, h.exp - Date.now() < 24 * 60 * 60 * 1e3 && (clearTimeout(z), clearTimeout(G[u]), z = setTimeout(() => this.reset(), h.exp - Date.now())), JSON.stringify([j(n), h])), J = (n) => {
|
|
175
|
+
const a = JSON.parse(n);
|
|
176
|
+
return h = a[1], C(a[0]);
|
|
152
177
|
};
|
|
153
178
|
let H = !0;
|
|
154
|
-
if (
|
|
155
|
-
if (
|
|
179
|
+
if (N[u] = y, i[`atom/${A}`] && (i[u] || (i[u] = `[${i[`atom/${A}`]}]`), delete i[`atom/${A}`]), f = () => {
|
|
180
|
+
if (f = g, H) {
|
|
156
181
|
H = !1;
|
|
157
182
|
try {
|
|
158
|
-
|
|
183
|
+
d(u in i ? J(i[u]) : s);
|
|
159
184
|
} catch {
|
|
160
|
-
console.warn("Invalid json value",
|
|
185
|
+
console.warn("Invalid json value", i[u]);
|
|
161
186
|
}
|
|
162
187
|
}
|
|
163
|
-
return
|
|
164
|
-
},
|
|
165
|
-
if (
|
|
188
|
+
return g();
|
|
189
|
+
}, l = (n) => {
|
|
190
|
+
if (n === s) {
|
|
166
191
|
this.reset();
|
|
167
192
|
return;
|
|
168
193
|
}
|
|
169
|
-
|
|
194
|
+
i[u] = F(n);
|
|
170
195
|
}, this.reset = () => {
|
|
171
|
-
delete
|
|
172
|
-
}, _ && D[
|
|
173
|
-
if (
|
|
174
|
-
let
|
|
175
|
-
I[
|
|
176
|
-
clearTimeout(
|
|
196
|
+
delete i[u], S(s, !0);
|
|
197
|
+
}, _ && D[u] !== void 0 && console.warn("Duplicate Atom key", A), P)
|
|
198
|
+
if (E) {
|
|
199
|
+
let n = !1, a;
|
|
200
|
+
I[u] = this, D[u] = () => {
|
|
201
|
+
clearTimeout(a), a = setTimeout(() => n = !1, 10), !n && (n = !0, i[u] = F(g()));
|
|
177
202
|
};
|
|
178
203
|
} else
|
|
179
|
-
D[
|
|
180
|
-
if (
|
|
204
|
+
D[u] = (n) => {
|
|
205
|
+
if (n.newValue === null) {
|
|
181
206
|
this.reset();
|
|
182
207
|
return;
|
|
183
208
|
}
|
|
184
209
|
try {
|
|
185
|
-
|
|
210
|
+
S(J(n.newValue));
|
|
186
211
|
} catch {
|
|
187
|
-
console.warn("Invalid json value",
|
|
212
|
+
console.warn("Invalid json value", n.newValue);
|
|
188
213
|
}
|
|
189
214
|
};
|
|
190
|
-
return
|
|
215
|
+
return y;
|
|
191
216
|
}
|
|
192
217
|
}
|
|
193
|
-
let
|
|
218
|
+
let $;
|
|
194
219
|
try {
|
|
195
|
-
|
|
196
|
-
var
|
|
197
|
-
(
|
|
220
|
+
$ = new BroadcastChannel("updateHere"), $.addEventListener("message", (e) => {
|
|
221
|
+
var s;
|
|
222
|
+
(s = I[e.data.key]) == null || s.set(e.data.value, !0);
|
|
198
223
|
});
|
|
199
224
|
} catch {
|
|
200
225
|
}
|
|
201
|
-
const
|
|
202
|
-
throw `${
|
|
226
|
+
const i = window.localStorage, D = {}, I = {}, Z = (e, s) => {
|
|
227
|
+
throw `${s} is readonly property`;
|
|
203
228
|
};
|
|
204
229
|
window.addEventListener("storage", (e) => {
|
|
205
|
-
var
|
|
206
|
-
e.key === null || e.newValue === e.oldValue || (
|
|
230
|
+
var s;
|
|
231
|
+
e.key === null || e.newValue === e.oldValue || (s = D[e.key]) == null || s.call(D, e);
|
|
207
232
|
});
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
I[e] === void 0 &&
|
|
233
|
+
const v = i.setItem.bind(i), k = i.removeItem.bind(i);
|
|
234
|
+
i.setItem = (e, s) => {
|
|
235
|
+
I[e] === void 0 && v.call(i, e, s);
|
|
211
236
|
};
|
|
212
|
-
|
|
213
|
-
I[e] === void 0 &&
|
|
237
|
+
i.removeItem = (e) => {
|
|
238
|
+
I[e] === void 0 && k.call(i, e);
|
|
214
239
|
};
|
|
215
|
-
const
|
|
240
|
+
const O = /"exp":(\d+)\.2866/, B = "atom\\", N = {}, G = {};
|
|
216
241
|
setTimeout(() => {
|
|
217
|
-
Object.keys(
|
|
218
|
-
var
|
|
219
|
-
if (!e.startsWith(
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
},
|
|
242
|
+
Object.keys(i).forEach((e) => {
|
|
243
|
+
var o;
|
|
244
|
+
if (!e.startsWith(B) || typeof i[e] != "string") return;
|
|
245
|
+
const s = +((o = i[e].match(O)) == null ? void 0 : o[1]);
|
|
246
|
+
s && s - Date.now() < 24 * 60 * 60 * 1e3 && (G[e] = setTimeout(() => {
|
|
247
|
+
N[e] ? N[e].reset() : delete i[e];
|
|
248
|
+
}, s - Date.now()));
|
|
224
249
|
});
|
|
225
250
|
}, 1e3);
|
|
226
251
|
export {
|
|
227
|
-
|
|
252
|
+
Y as Atom,
|
|
228
253
|
se as atom,
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
254
|
+
K as configureAtomaric,
|
|
255
|
+
V as configuredOptions,
|
|
256
|
+
ne as useAtom,
|
|
257
|
+
re as useAtomDo,
|
|
258
|
+
te as useAtomGet,
|
|
259
|
+
W as useAtomSet,
|
|
260
|
+
ee as useAtomSetDeferred,
|
|
261
|
+
U as useAtomValue
|
|
237
262
|
};
|
package/build/atomaric.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(g,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(g=typeof globalThis<"u"?globalThis:g||self,j(g.atomaric={}))})(this,function(g){"use strict";let j=()=>{throw"call configureAtomaric() before all!"};const I={},X=e=>{I.useSyncExternalStore=j=e.useSyncExternalStore,I.keyPathSeparator=e.keyPathSeparator},J=e=>j(e.subscribe,e.get),M=e=>e.set,Y=e=>e.setDeferred,Z=e=>e.get,v=e=>e.do,k=e=>[J(e),M(e)],O=(e,r)=>new H(e,r),K=(e,r)=>{const c=(d,h,w)=>new Proxy(d,{get:(t,n,o)=>{const u=w===0&&r.get!=null?r.get(t,n,o):t[n];return typeof u=="object"&&u!==null?c(Array.isArray(u)?u.slice(0):{...u},h.concat(Array.isArray(t)?+n:n),w+1):u},set:(t,n,o)=>(r.onSet(t,h,n,o,t[n])&&(t[n]=o),!0)});return c(e,[],0)},ee=(e,r,c)=>{let d=null;typeof e=="number"?d=x(r,t=>({increment:n=>{t.set(+t.get()+(n??0))}})):typeof e=="boolean"?d=x(r,t=>({toggle:()=>{t.set(!t.get())}})):Array.isArray(e)?d=x(r,t=>({push:(...n)=>{t.set(t.get().concat(n))},unshift:(...n)=>{t.set(n.concat(t.get()))},update:n=>{const o=t.get(),u=G(o,n);u!==o&&t.set(u)},filter:n=>{t.set(t.get().filter(n??te))},toggle:(n,o)=>{const u=t.get().slice(),f=u.indexOf(n);f<0?o?u.unshift(n):u.push(n):u.splice(f,1),t.set(u)}})):e instanceof Set?d=x(r,t=>({add:n=>{t.set(new Set(t.get()).add(n))},delete:n=>{const o=new Set(t.get());o.delete(n),t.set(o)},toggle:n=>{const o=new Set(t.get());o.has(n)?o.delete(n):o.add(n),t.set(o)},clear:()=>{t.set(new Set)}})):e instanceof Object&&(d=x(r,t=>({setPartial:n=>t.set(o=>({...o,...typeof n=="function"?n(t.get()):n})),update:n=>{const o=t.get(),u=G(o,n);u!==o&&t.set(u)},setDeepPartial:(n,o,u,f=I.keyPathSeparator??".")=>{if(n.includes(f)){let A=n.split(f);const m=A[A.length-1];A=A.slice(0,-1);const b={...t.get()};let y=b,T=u;for(const p of A){let S=y[p];const P=T=T==null?void 0:T[Array.isArray(T)?"0":p];if(S==null&&(S=Array.isArray(P)?[]:{}),S==null||typeof S!="object"){t.do.setPartial({[n]:typeof o=="function"?o(void 0):o});return}y=y[p]=Array.isArray(S)?[...S]:{...S}}y[m]=typeof o=="function"?o(y[m]):o,t.set(b)}else t.do.setPartial({[n]:o})}})));const h=typeof c=="object"&&c!=null&&"do"in c?c.do((t,n)=>r.set(t,n),()=>r.get(),r,(t,n,o)=>r.setDeferred(t,n,o)):null,w={};return h&&Object.keys(h).forEach(t=>Object.defineProperty(w,t,{get:()=>h[t]})),d&&Object.keys(d).forEach(t=>Object.defineProperty(w,t,{get:()=>d[t]})),w},te=e=>e,x=(e,r,c)=>r(e),G=(e,r)=>{const c=Array.isArray(e)?e.slice(0):{...e};let d=!1;const h=K(e,{onSet:(w,t,n,o,u)=>{if(o===u)return!0;let f=c;d=!0;for(const A of t){const m=f[A];f=f[A]=Array.isArray(m)?m.slice(0):{...m}}return f[n]=o,!0}});return r(h),d?c:e};class H{constructor(r,c){const d=s=>n=s,h=()=>n,w=new Set,t=s=>s(f());let n=r,o,u=()=>{},f=()=>h(),A=null,m=()=>{const s=ee(r,b,c);return m=()=>s,s};const b=new Proxy(this,{get:(s,a)=>a==="do"?m():s[a],set:ne}),y=(s,a)=>{const D=typeof s=="function"?s(f()):s;if(!(D===f()||D===void 0||typeof D=="number"&&isNaN(D))){d(D),w.forEach(t,this);try{C.postMessage({key:l,value:h()})}catch{}a!==!0&&u(D)}};this.set=(s,a)=>y(s,a),this.get=()=>f(),this.initialValue=r,this.isInitialValue=()=>r===h(),this.subscribe=s=>(w.add(s),()=>{w.delete(s)}),this.reset=()=>{y(r,!0),w.forEach(t,this)};const T=(s,a)=>{y(s,a),o=void 0};if(this.setDeferred=(s,a=500,D,Q=!0)=>{Q&&o===void 0&&y(s,D),clearTimeout(o),o=setTimeout(T,a,s,D)},c==null)return b;let p=null,S=null,P=!0,N=!0,z=!1,B=-1,F=r instanceof Set?s=>new Set(s):s=>s,V=r instanceof Set?s=>{if(s instanceof Set)return Array.from(s);throw console.error(s),"The value is not Set instance"}:s=>s;if(typeof c=="string")p=c;else if("storeKey"in c)P=c.warnOnDuplicateStoreKey??P,N=c.listenStorageChanges??N,p=c.storeKey,F=c.unzipValue??F,V=c.zipValue??V,z=c.unchangable??z,S=c.exp??S;else return b;const l=`${L}${p}`,U=S===null||!(S(b,l in i)instanceof Date)?s=>JSON.stringify([V(s)]):s=>(A??(A={}),A.exp=S(b,l in i).getTime()+.2866,A.exp-Date.now()<24*60*60*1e3&&(clearTimeout(B),clearTimeout(R[l]),B=setTimeout(()=>this.reset(),A.exp-Date.now())),JSON.stringify([V(s),A])),W=s=>{const a=JSON.parse(s);return A=a[1],F(a[0])};let q=!0;if($[l]=b,i[`atom/${p}`]&&(i[l]||(i[l]=`[${i[`atom/${p}`]}]`),delete i[`atom/${p}`]),f=()=>{if(f=h,q){q=!1;try{d(l in i?W(i[l]):r)}catch{console.warn("Invalid json value",i[l])}}return h()},u=s=>{if(s===r){this.reset();return}i[l]=U(s)},this.reset=()=>{delete i[l],y(r,!0)},P&&_[l]!==void 0&&console.warn("Duplicate Atom key",p),N)if(z){let s=!1,a;E[l]=this,_[l]=()=>{clearTimeout(a),a=setTimeout(()=>s=!1,10),!s&&(s=!0,i[l]=U(h()))}}else _[l]=s=>{if(s.newValue===null){this.reset();return}try{y(W(s.newValue))}catch{console.warn("Invalid json value",s.newValue)}};return b}}let C;try{C=new BroadcastChannel("updateHere"),C.addEventListener("message",e=>{var r;(r=E[e.data.key])==null||r.set(e.data.value,!0)})}catch{}const i=window.localStorage,_={},E={},ne=(e,r)=>{throw`${r} is readonly property`};window.addEventListener("storage",e=>{var r;e.key===null||e.newValue===e.oldValue||(r=_[e.key])==null||r.call(_,e)});const se=i.setItem.bind(i),re=i.removeItem.bind(i);i.setItem=(e,r)=>{E[e]===void 0&&se.call(i,e,r)},i.removeItem=e=>{E[e]===void 0&&re.call(i,e)};const oe=/"exp":(\d+)\.2866/,L="atom\\",$={},R={};setTimeout(()=>{Object.keys(i).forEach(e=>{var c;if(!e.startsWith(L)||typeof i[e]!="string")return;const r=+((c=i[e].match(oe))==null?void 0:c[1]);r&&r-Date.now()<24*60*60*1e3&&(R[e]=setTimeout(()=>{$[e]?$[e].reset():delete i[e]},r-Date.now()))})},1e3),g.Atom=H,g.atom=O,g.configureAtomaric=X,g.configuredOptions=I,g.useAtom=k,g.useAtomDo=v,g.useAtomGet=Z,g.useAtomSet=M,g.useAtomSetDeferred=Y,g.useAtomValue=J,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -89,7 +89,7 @@ export type BooleanActions = {
|
|
|
89
89
|
toggle: () => void;
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
export type SetActions<Value> =
|
|
92
|
+
export type SetActions<Value> = {
|
|
93
93
|
/** like the Set.prototype.add() method */
|
|
94
94
|
add: (value: Value) => void;
|
|
95
95
|
/** like the Set.prototype.delete() method */
|