@zag-js/store 0.1.2 → 0.1.3
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.js +6 -37
- package/package.json +4 -4
- package/dist/index.mjs +0 -239
package/dist/index.js
CHANGED
|
@@ -1,35 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
1
|
// src/index.ts
|
|
21
|
-
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
getHandler: () => getHandler,
|
|
24
|
-
getVersion: () => getVersion,
|
|
25
|
-
proxy: () => proxy,
|
|
26
|
-
proxyWithComputed: () => proxyWithComputed,
|
|
27
|
-
ref: () => ref,
|
|
28
|
-
snapshot: () => snapshot,
|
|
29
|
-
subscribe: () => subscribe
|
|
30
|
-
});
|
|
31
|
-
module.exports = __toCommonJS(src_exports);
|
|
32
|
-
var import_proxy_compare = require("proxy-compare");
|
|
2
|
+
import { getUntracked, markToTrack } from "proxy-compare";
|
|
33
3
|
var __DEV__ = process.env.NODE_ENV !== "production";
|
|
34
4
|
var VERSION = Symbol();
|
|
35
5
|
var LISTENERS = Symbol();
|
|
@@ -87,12 +57,12 @@ function proxy(initialObject = {}) {
|
|
|
87
57
|
return cache[1];
|
|
88
58
|
}
|
|
89
59
|
const snapshot2 = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
|
|
90
|
-
|
|
60
|
+
markToTrack(snapshot2, true);
|
|
91
61
|
snapshotCache.set(receiver, [version, snapshot2]);
|
|
92
62
|
Reflect.ownKeys(target).forEach((key) => {
|
|
93
63
|
const value = Reflect.get(target, key, receiver);
|
|
94
64
|
if (refSet.has(value)) {
|
|
95
|
-
|
|
65
|
+
markToTrack(value, false);
|
|
96
66
|
snapshot2[key] = value;
|
|
97
67
|
} else if (value instanceof Promise) {
|
|
98
68
|
if (PROMISE_RESULT in value) {
|
|
@@ -160,7 +130,7 @@ function proxy(initialObject = {}) {
|
|
|
160
130
|
childListeners.delete(popPropListener(prop));
|
|
161
131
|
}
|
|
162
132
|
if (isObject(value)) {
|
|
163
|
-
value =
|
|
133
|
+
value = getUntracked(value) || value;
|
|
164
134
|
}
|
|
165
135
|
let nextValue;
|
|
166
136
|
if ((_a = Object.getOwnPropertyDescriptor(target, prop)) == null ? void 0 : _a.set) {
|
|
@@ -258,8 +228,7 @@ function proxyWithComputed(initialObject, computedFns) {
|
|
|
258
228
|
const proxyObject = proxy(initialObject);
|
|
259
229
|
return proxyObject;
|
|
260
230
|
}
|
|
261
|
-
|
|
262
|
-
0 && (module.exports = {
|
|
231
|
+
export {
|
|
263
232
|
getHandler,
|
|
264
233
|
getVersion,
|
|
265
234
|
proxy,
|
|
@@ -267,4 +236,4 @@ function proxyWithComputed(initialObject, computedFns) {
|
|
|
267
236
|
ref,
|
|
268
237
|
snapshot,
|
|
269
238
|
subscribe
|
|
270
|
-
}
|
|
239
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"type": "module",
|
|
2
3
|
"name": "@zag-js/store",
|
|
3
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.3",
|
|
4
5
|
"description": "The reactive store package for zag machines",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"js",
|
|
@@ -12,7 +13,6 @@
|
|
|
12
13
|
"homepage": "https://github.com/chakra-ui/zag#readme",
|
|
13
14
|
"license": "MIT",
|
|
14
15
|
"main": "dist/index.js",
|
|
15
|
-
"module": "dist/index.mjs",
|
|
16
16
|
"types": "dist/index.d.ts",
|
|
17
17
|
"repository": "https://github.com/chakra-ui/zag/tree/main/packages/utilities/store",
|
|
18
18
|
"sideEffects": false,
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"proxy-compare": "2.3.0"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
|
-
"build-fast": "tsup src/index.ts --format=esm
|
|
32
|
+
"build-fast": "tsup src/index.ts --format=esm",
|
|
33
33
|
"start": "pnpm build --watch",
|
|
34
|
-
"build": "tsup src/index.ts --format=esm
|
|
34
|
+
"build": "tsup src/index.ts --format=esm --dts",
|
|
35
35
|
"test": "jest --config ../../../jest.config.js --rootDir tests",
|
|
36
36
|
"lint": "eslint src --ext .ts,.tsx",
|
|
37
37
|
"test-ci": "pnpm test --ci --runInBand -u",
|
package/dist/index.mjs
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
import { getUntracked, markToTrack } from "proxy-compare";
|
|
3
|
-
var __DEV__ = process.env.NODE_ENV !== "production";
|
|
4
|
-
var VERSION = Symbol();
|
|
5
|
-
var LISTENERS = Symbol();
|
|
6
|
-
var SNAPSHOT = Symbol();
|
|
7
|
-
var HANDLER = Symbol();
|
|
8
|
-
var PROMISE_RESULT = Symbol();
|
|
9
|
-
var PROMISE_ERROR = Symbol();
|
|
10
|
-
var refSet = /* @__PURE__ */ new WeakSet();
|
|
11
|
-
function ref(o) {
|
|
12
|
-
refSet.add(o);
|
|
13
|
-
return o;
|
|
14
|
-
}
|
|
15
|
-
var isObject = (x) => typeof x === "object" && x !== null;
|
|
16
|
-
var canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer);
|
|
17
|
-
var proxyCache = /* @__PURE__ */ new WeakMap();
|
|
18
|
-
var globalVersion = 1;
|
|
19
|
-
var snapshotCache = /* @__PURE__ */ new WeakMap();
|
|
20
|
-
function proxy(initialObject = {}) {
|
|
21
|
-
if (!isObject(initialObject)) {
|
|
22
|
-
throw new Error("object required");
|
|
23
|
-
}
|
|
24
|
-
const found = proxyCache.get(initialObject);
|
|
25
|
-
if (found) {
|
|
26
|
-
return found;
|
|
27
|
-
}
|
|
28
|
-
let version = globalVersion;
|
|
29
|
-
const listeners = /* @__PURE__ */ new Set();
|
|
30
|
-
const notifyUpdate = (op, nextVersion = ++globalVersion) => {
|
|
31
|
-
if (version !== nextVersion) {
|
|
32
|
-
version = nextVersion;
|
|
33
|
-
listeners.forEach((listener) => listener(op, nextVersion));
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const propListeners = /* @__PURE__ */ new Map();
|
|
37
|
-
const getPropListener = (prop) => {
|
|
38
|
-
let propListener = propListeners.get(prop);
|
|
39
|
-
if (!propListener) {
|
|
40
|
-
propListener = (op, nextVersion) => {
|
|
41
|
-
const newOp = [...op];
|
|
42
|
-
newOp[1] = [prop, ...newOp[1]];
|
|
43
|
-
notifyUpdate(newOp, nextVersion);
|
|
44
|
-
};
|
|
45
|
-
propListeners.set(prop, propListener);
|
|
46
|
-
}
|
|
47
|
-
return propListener;
|
|
48
|
-
};
|
|
49
|
-
const popPropListener = (prop) => {
|
|
50
|
-
const propListener = propListeners.get(prop);
|
|
51
|
-
propListeners.delete(prop);
|
|
52
|
-
return propListener;
|
|
53
|
-
};
|
|
54
|
-
const createSnapshot = (target, receiver) => {
|
|
55
|
-
const cache = snapshotCache.get(receiver);
|
|
56
|
-
if ((cache == null ? void 0 : cache[0]) === version) {
|
|
57
|
-
return cache[1];
|
|
58
|
-
}
|
|
59
|
-
const snapshot2 = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));
|
|
60
|
-
markToTrack(snapshot2, true);
|
|
61
|
-
snapshotCache.set(receiver, [version, snapshot2]);
|
|
62
|
-
Reflect.ownKeys(target).forEach((key) => {
|
|
63
|
-
const value = Reflect.get(target, key, receiver);
|
|
64
|
-
if (refSet.has(value)) {
|
|
65
|
-
markToTrack(value, false);
|
|
66
|
-
snapshot2[key] = value;
|
|
67
|
-
} else if (value instanceof Promise) {
|
|
68
|
-
if (PROMISE_RESULT in value) {
|
|
69
|
-
snapshot2[key] = value[PROMISE_RESULT];
|
|
70
|
-
} else {
|
|
71
|
-
const errorOrPromise = value[PROMISE_ERROR] || value;
|
|
72
|
-
Object.defineProperty(snapshot2, key, {
|
|
73
|
-
get() {
|
|
74
|
-
if (PROMISE_RESULT in value) {
|
|
75
|
-
return value[PROMISE_RESULT];
|
|
76
|
-
}
|
|
77
|
-
throw errorOrPromise;
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
} else if (value == null ? void 0 : value[LISTENERS]) {
|
|
82
|
-
snapshot2[key] = value[SNAPSHOT];
|
|
83
|
-
} else {
|
|
84
|
-
snapshot2[key] = value;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
Object.freeze(snapshot2);
|
|
88
|
-
return snapshot2;
|
|
89
|
-
};
|
|
90
|
-
const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));
|
|
91
|
-
const handler = {
|
|
92
|
-
get(target, prop, receiver) {
|
|
93
|
-
if (prop === VERSION) {
|
|
94
|
-
return version;
|
|
95
|
-
}
|
|
96
|
-
if (prop === LISTENERS) {
|
|
97
|
-
return listeners;
|
|
98
|
-
}
|
|
99
|
-
if (prop === SNAPSHOT) {
|
|
100
|
-
return createSnapshot(target, receiver);
|
|
101
|
-
}
|
|
102
|
-
if (prop === HANDLER) {
|
|
103
|
-
return handler;
|
|
104
|
-
}
|
|
105
|
-
return Reflect.get(target, prop, receiver);
|
|
106
|
-
},
|
|
107
|
-
deleteProperty(target, prop) {
|
|
108
|
-
const prevValue = Reflect.get(target, prop);
|
|
109
|
-
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
|
|
110
|
-
if (childListeners) {
|
|
111
|
-
childListeners.delete(popPropListener(prop));
|
|
112
|
-
}
|
|
113
|
-
const deleted = Reflect.deleteProperty(target, prop);
|
|
114
|
-
if (deleted) {
|
|
115
|
-
notifyUpdate(["delete", [prop], prevValue]);
|
|
116
|
-
}
|
|
117
|
-
return deleted;
|
|
118
|
-
},
|
|
119
|
-
is: Object.is,
|
|
120
|
-
canProxy,
|
|
121
|
-
set(target, prop, value, receiver) {
|
|
122
|
-
var _a;
|
|
123
|
-
const hasPrevValue = Reflect.has(target, prop);
|
|
124
|
-
const prevValue = Reflect.get(target, prop, receiver);
|
|
125
|
-
if (hasPrevValue && this.is(prevValue, value)) {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
const childListeners = prevValue == null ? void 0 : prevValue[LISTENERS];
|
|
129
|
-
if (childListeners) {
|
|
130
|
-
childListeners.delete(popPropListener(prop));
|
|
131
|
-
}
|
|
132
|
-
if (isObject(value)) {
|
|
133
|
-
value = getUntracked(value) || value;
|
|
134
|
-
}
|
|
135
|
-
let nextValue;
|
|
136
|
-
if ((_a = Object.getOwnPropertyDescriptor(target, prop)) == null ? void 0 : _a.set) {
|
|
137
|
-
nextValue = value;
|
|
138
|
-
} else if (value instanceof Promise) {
|
|
139
|
-
nextValue = value.then((v) => {
|
|
140
|
-
nextValue[PROMISE_RESULT] = v;
|
|
141
|
-
notifyUpdate(["resolve", [prop], v]);
|
|
142
|
-
return v;
|
|
143
|
-
}).catch((e) => {
|
|
144
|
-
nextValue[PROMISE_ERROR] = e;
|
|
145
|
-
notifyUpdate(["reject", [prop], e]);
|
|
146
|
-
});
|
|
147
|
-
} else if (value == null ? void 0 : value[LISTENERS]) {
|
|
148
|
-
nextValue = value;
|
|
149
|
-
nextValue[LISTENERS].add(getPropListener(prop));
|
|
150
|
-
} else if (this.canProxy(value)) {
|
|
151
|
-
nextValue = proxy(value);
|
|
152
|
-
nextValue[LISTENERS].add(getPropListener(prop));
|
|
153
|
-
} else {
|
|
154
|
-
nextValue = value;
|
|
155
|
-
}
|
|
156
|
-
Reflect.set(target, prop, nextValue, receiver);
|
|
157
|
-
notifyUpdate(["set", [prop], value, prevValue]);
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
const proxyObject = new Proxy(baseObject, handler);
|
|
162
|
-
proxyCache.set(initialObject, proxyObject);
|
|
163
|
-
Reflect.ownKeys(initialObject).forEach((key) => {
|
|
164
|
-
const desc = Object.getOwnPropertyDescriptor(initialObject, key);
|
|
165
|
-
if (desc.get || desc.set) {
|
|
166
|
-
Object.defineProperty(baseObject, key, desc);
|
|
167
|
-
} else {
|
|
168
|
-
proxyObject[key] = initialObject[key];
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
return proxyObject;
|
|
172
|
-
}
|
|
173
|
-
function getVersion(proxyObject) {
|
|
174
|
-
return isObject(proxyObject) ? proxyObject[VERSION] : void 0;
|
|
175
|
-
}
|
|
176
|
-
function subscribe(proxyObject, callback, notifyInSync) {
|
|
177
|
-
if (__DEV__ && !(proxyObject == null ? void 0 : proxyObject[LISTENERS])) {
|
|
178
|
-
console.warn("Please use proxy object");
|
|
179
|
-
}
|
|
180
|
-
let promise;
|
|
181
|
-
const ops = [];
|
|
182
|
-
const listener = (op) => {
|
|
183
|
-
ops.push(op);
|
|
184
|
-
if (notifyInSync) {
|
|
185
|
-
callback(ops.splice(0));
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
if (!promise) {
|
|
189
|
-
promise = Promise.resolve().then(() => {
|
|
190
|
-
promise = void 0;
|
|
191
|
-
callback(ops.splice(0));
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
proxyObject[LISTENERS].add(listener);
|
|
196
|
-
return () => {
|
|
197
|
-
;
|
|
198
|
-
proxyObject[LISTENERS].delete(listener);
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function snapshot(proxyObject) {
|
|
202
|
-
if (__DEV__ && !(proxyObject == null ? void 0 : proxyObject[SNAPSHOT])) {
|
|
203
|
-
console.warn("Please use proxy object");
|
|
204
|
-
}
|
|
205
|
-
return proxyObject[SNAPSHOT];
|
|
206
|
-
}
|
|
207
|
-
function getHandler(proxyObject) {
|
|
208
|
-
if (__DEV__ && !(proxyObject == null ? void 0 : proxyObject[HANDLER])) {
|
|
209
|
-
console.warn("Please use proxy object");
|
|
210
|
-
}
|
|
211
|
-
return proxyObject[HANDLER];
|
|
212
|
-
}
|
|
213
|
-
function proxyWithComputed(initialObject, computedFns) {
|
|
214
|
-
;
|
|
215
|
-
Object.keys(computedFns).forEach((key) => {
|
|
216
|
-
if (Object.getOwnPropertyDescriptor(initialObject, key)) {
|
|
217
|
-
throw new Error("object property already defined");
|
|
218
|
-
}
|
|
219
|
-
const computedFn = computedFns[key];
|
|
220
|
-
const { get, set } = typeof computedFn === "function" ? { get: computedFn } : computedFn;
|
|
221
|
-
const desc = {};
|
|
222
|
-
desc.get = () => get(snapshot(proxyObject));
|
|
223
|
-
if (set) {
|
|
224
|
-
desc.set = (newValue) => set(proxyObject, newValue);
|
|
225
|
-
}
|
|
226
|
-
Object.defineProperty(initialObject, key, desc);
|
|
227
|
-
});
|
|
228
|
-
const proxyObject = proxy(initialObject);
|
|
229
|
-
return proxyObject;
|
|
230
|
-
}
|
|
231
|
-
export {
|
|
232
|
-
getHandler,
|
|
233
|
-
getVersion,
|
|
234
|
-
proxy,
|
|
235
|
-
proxyWithComputed,
|
|
236
|
-
ref,
|
|
237
|
-
snapshot,
|
|
238
|
-
subscribe
|
|
239
|
-
};
|