@legendapp/state 0.9.2-alpha.9 → 0.10.0-next.2

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.
Files changed (93) hide show
  1. package/index.cjs +634 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +10 -6
  4. package/index.esm.mjs +613 -0
  5. package/index.esm.mjs.map +1 -0
  6. package/index.js +633 -42
  7. package/index.js.map +1 -1
  8. package/internal.cjs +26 -0
  9. package/internal.cjs.map +1 -0
  10. package/internal.d.ts +2 -3
  11. package/internal.esm.mjs +3 -0
  12. package/internal.esm.mjs.map +1 -0
  13. package/internal.js +26 -12
  14. package/internal.js.map +1 -1
  15. package/{src/persist/local-storage.js → local-storage.cjs} +6 -4
  16. package/local-storage.cjs.map +1 -0
  17. package/local-storage.esm.mjs +36 -0
  18. package/local-storage.esm.mjs.map +1 -0
  19. package/local-storage.js +39 -17
  20. package/local-storage.js.map +1 -1
  21. package/{src/persist/mmkv.js → mmkv.cjs} +9 -6
  22. package/mmkv.cjs.map +1 -0
  23. package/mmkv.esm.mjs +50 -0
  24. package/mmkv.esm.mjs.map +1 -0
  25. package/mmkv.js +53 -17
  26. package/mmkv.js.map +1 -1
  27. package/package.json +34 -10
  28. package/persist.cjs +195 -0
  29. package/persist.cjs.map +1 -0
  30. package/persist.d.ts +6 -0
  31. package/persist.esm.mjs +188 -0
  32. package/persist.esm.mjs.map +1 -0
  33. package/persist.js +195 -0
  34. package/persist.js.map +1 -0
  35. package/react.cjs +124 -0
  36. package/react.cjs.map +1 -0
  37. package/react.d.ts +1 -3
  38. package/react.esm.mjs +119 -0
  39. package/react.esm.mjs.map +1 -0
  40. package/react.js +123 -20
  41. package/react.js.map +1 -1
  42. package/src/globals.d.ts +12 -7
  43. package/src/helpers.d.ts +5 -0
  44. package/src/is.d.ts +7 -0
  45. package/src/observable.d.ts +6 -8
  46. package/src/observableBatcher.d.ts +11 -2
  47. package/src/observableComputed.d.ts +2 -2
  48. package/src/observableInterfaces.d.ts +156 -49
  49. package/src/on.d.ts +7 -0
  50. package/src/{configureObservable.d.ts → persist/configureObservablePersistence.d.ts} +2 -3
  51. package/src/persist/persistHelpers.d.ts +3 -0
  52. package/src/persist/persistObservable.d.ts +3 -0
  53. package/src/react/useNewObservable.d.ts +2 -3
  54. package/src/react/useObservables.d.ts +2 -2
  55. package/src/state.d.ts +13 -0
  56. package/src/configureObservable.js +0 -13
  57. package/src/configureObservable.js.map +0 -1
  58. package/src/globals.js +0 -71
  59. package/src/globals.js.map +0 -1
  60. package/src/observable.js +0 -347
  61. package/src/observable.js.map +0 -1
  62. package/src/observableBatcher.js +0 -61
  63. package/src/observableBatcher.js.map +0 -1
  64. package/src/observableComputed.js +0 -28
  65. package/src/observableComputed.js.map +0 -1
  66. package/src/observableEvent.js +0 -28
  67. package/src/observableEvent.js.map +0 -1
  68. package/src/observableFns.d.ts +0 -36
  69. package/src/observableFns.js +0 -231
  70. package/src/observableFns.js.map +0 -1
  71. package/src/observableInterfaces.js +0 -3
  72. package/src/observableInterfaces.js.map +0 -1
  73. package/src/observableState.d.ts +0 -29
  74. package/src/observableState.js +0 -32
  75. package/src/observableState.js.map +0 -1
  76. package/src/persist/local-storage.js.map +0 -1
  77. package/src/persist/mmkv.js.map +0 -1
  78. package/src/persistObservable.d.ts +0 -3
  79. package/src/persistObservable.js +0 -120
  80. package/src/persistObservable.js.map +0 -1
  81. package/src/primitivePrototypes.d.ts +0 -1
  82. package/src/primitivePrototypes.js +0 -22
  83. package/src/primitivePrototypes.js.map +0 -1
  84. package/src/react/useComputed.d.ts +0 -2
  85. package/src/react/useComputed.js +0 -16
  86. package/src/react/useComputed.js.map +0 -1
  87. package/src/react/useNewObservable.js +0 -33
  88. package/src/react/useNewObservable.js.map +0 -1
  89. package/src/react/useObservables.js +0 -114
  90. package/src/react/useObservables.js.map +0 -1
  91. package/src/react/usePrimitiveFunctions.d.ts +0 -4
  92. package/src/react/usePrimitiveFunctions.js +0 -21
  93. package/src/react/usePrimitiveFunctions.js.map +0 -1
package/index.d.ts CHANGED
@@ -1,8 +1,12 @@
1
- export { configureObservable } from './src/configureObservable';
2
- export { assigner, getter, observable, setter } from './src/observable';
1
+ export { shouldRender, mergeIntoObservable, shallow } from './src/helpers';
2
+ export { observable } from './src/observable';
3
3
  export { observableBatcher } from './src/observableBatcher';
4
- export { observableComputed } from './src/observableComputed';
5
- export { observableEvent } from './src/observableEvent';
6
- export { disposeListener, isObservable, isObservableEvent, listen, mergeIntoObservable, prop, shallow, unlisten, } from './src/observableFns';
7
4
  export * from './src/observableInterfaces';
8
- export { persistObservable } from './src/persistObservable';
5
+ /** @internal */
6
+ export { getObservableRawValue, symbolGet, symbolShallow, symbolShouldRender, symbolDateModified, symbolIsObservable, } from './src/globals';
7
+ /** @internal */
8
+ export { isArray, isObject, isPrimitive, isFunction } from './src/is';
9
+ /** @internal */
10
+ export { onChange, onChangeShallow } from './src/on';
11
+ /** @internal */
12
+ export { trackedNodes, tracking } from './src/state';
package/index.esm.mjs ADDED
@@ -0,0 +1,613 @@
1
+ const tracking = {
2
+ is: false,
3
+ shallow: false,
4
+ should: undefined,
5
+ };
6
+ const trackedNodes = [];
7
+ function updateTracking(node, value) {
8
+ trackedNodes.push({
9
+ node,
10
+ shallow: tracking.shallow,
11
+ shouldRender: tracking.should,
12
+ value,
13
+ });
14
+ }
15
+
16
+ function isArray(obj) {
17
+ return Array.isArray(obj);
18
+ }
19
+ function isObject(obj) {
20
+ return typeof obj === 'object' && obj !== null && !isArray(obj);
21
+ }
22
+ function isFunction(obj) {
23
+ return typeof obj === 'function';
24
+ }
25
+ function isPrimitive(arg) {
26
+ var type = typeof arg;
27
+ return arg == null || (type != 'object' && type != 'function');
28
+ }
29
+ function isObjectEmpty(obj) {
30
+ return obj && isObject(obj) && Object.keys(obj).length === 0;
31
+ }
32
+ function isSymbol(obj) {
33
+ return typeof obj === 'symbol';
34
+ }
35
+
36
+ const delim = '\uFEFF';
37
+ const symbolDateModified = Symbol(process.env.NODE_ENV === 'development' && 'dateModified');
38
+ const symbolShallow = Symbol(process.env.NODE_ENV === 'development' && 'shallow');
39
+ const symbolShouldRender = Symbol(process.env.NODE_ENV === 'development' && 'shouldRender');
40
+ const symbolGet = Symbol(process.env.NODE_ENV === 'development' && 'get');
41
+ const symbolIsObservable = Symbol(process.env.NODE_ENV === 'development' && 'isObservable');
42
+ function getNodeValue(node) {
43
+ let child = node.root;
44
+ const arr = node.path.split(delim);
45
+ for (let i = 0; i < arr.length; i++) {
46
+ if (arr[i] !== undefined && child) {
47
+ child = child[arr[i]];
48
+ }
49
+ }
50
+ return child;
51
+ }
52
+ function getParentNode(node) {
53
+ if (node.path === '_')
54
+ return { parent: node, key: undefined };
55
+ const parent = node.root.proxyValues.get(node.pathParent);
56
+ return { parent, key: node.key };
57
+ }
58
+ function getChildNode(node, key) {
59
+ const path = node.path + delim + key;
60
+ let child = node.root.proxyValues.get(path);
61
+ if (!child) {
62
+ // console.log('creating child', node.path, key);
63
+ child = {
64
+ root: node.root,
65
+ path: node.path + delim + key,
66
+ // arr: node.arr.concat(key),
67
+ // arrParent: node.arr,
68
+ pathParent: node.path,
69
+ key,
70
+ };
71
+ node.root.proxyValues.set(path, child);
72
+ }
73
+ return child;
74
+ }
75
+ function getObservableRawValue(obs) {
76
+ if (!obs || isPrimitive(obs))
77
+ return obs;
78
+ const should = obs[symbolShouldRender];
79
+ if (should) {
80
+ tracking.should = should.fn;
81
+ obs = should.obs;
82
+ }
83
+ const shallow = obs[symbolShallow];
84
+ if (shallow) {
85
+ tracking.shallow = true;
86
+ obs = shallow;
87
+ }
88
+ let ret = obs[symbolGet];
89
+ tracking.should = undefined;
90
+ tracking.shallow = false;
91
+ return ret;
92
+ }
93
+
94
+ function shallow(obs) {
95
+ return {
96
+ [symbolShallow]: obs,
97
+ };
98
+ }
99
+ function shouldRender(obs, fn) {
100
+ return {
101
+ [symbolShouldRender]: { obs, fn },
102
+ };
103
+ }
104
+ function mergeIntoObservable(target, ...sources) {
105
+ if (!sources.length)
106
+ return target;
107
+ const source = sources.shift();
108
+ if (isObject(target) && isObject(source)) {
109
+ if (source[symbolDateModified]) {
110
+ target.set(symbolDateModified, source[symbolDateModified]);
111
+ }
112
+ for (const key in source) {
113
+ if (isObject(source[key])) {
114
+ if (!target[key] || !isObject(target[key])) {
115
+ target.set(key, {});
116
+ }
117
+ mergeIntoObservable(target[key], source[key]);
118
+ }
119
+ else {
120
+ target.set(key, source[key]);
121
+ }
122
+ }
123
+ }
124
+ return mergeIntoObservable(target, ...sources);
125
+ }
126
+
127
+ let timeout;
128
+ let numInBatch = 0;
129
+ let _batch = [];
130
+ // Use a WeakMap of callbacks for fast lookups to update the BatchItem
131
+ let _batchMap = new WeakMap();
132
+ function onActionTimeout() {
133
+ if (_batch.length > 0) {
134
+ if (process.env.NODE_ENV === 'development') {
135
+ console.error('Forcibly completing observableBatcher because end() was never called. This may be due to an uncaught error between begin() and end().');
136
+ }
137
+ observableBatcher.end(/*force*/ true);
138
+ }
139
+ }
140
+ function observableBatcherNotify(b) {
141
+ if (numInBatch > 0) {
142
+ const existing = _batchMap.get(b.cb);
143
+ // If this callback already exists, make sure it has the latest value but do not add it
144
+ if (existing) {
145
+ _batchMap.set(b.cb, b);
146
+ }
147
+ else {
148
+ _batch.push(b);
149
+ _batchMap.set(b.cb, b);
150
+ }
151
+ }
152
+ else {
153
+ b.cb(b.value, b.getPrevious, b.path, b.valueAtPath, b.prevAtPath);
154
+ }
155
+ }
156
+ var observableBatcher;
157
+ (function (observableBatcher) {
158
+ function batch(fn) {
159
+ begin();
160
+ fn();
161
+ end();
162
+ }
163
+ observableBatcher.batch = batch;
164
+ function begin() {
165
+ numInBatch++;
166
+ // Set a timeout to call end() in case end() is never called or there's an uncaught error
167
+ timeout = setTimeout(onActionTimeout, 0);
168
+ }
169
+ observableBatcher.begin = begin;
170
+ function end(force) {
171
+ numInBatch--;
172
+ if (numInBatch <= 0 || force) {
173
+ clearTimeout(timeout);
174
+ numInBatch = 0;
175
+ // Save batch locally and reset _batch first because a new batch could begin while looping over callbacks.
176
+ // This can happen with observableComputed for example.
177
+ const batch = _batch;
178
+ _batch = [];
179
+ _batchMap = new WeakMap();
180
+ for (let i = 0; i < batch.length; i++) {
181
+ const { cb, value, getPrevious: prev, path, valueAtPath, prevAtPath } = batch[i];
182
+ cb(value, prev, path, valueAtPath, prevAtPath);
183
+ }
184
+ }
185
+ }
186
+ observableBatcher.end = end;
187
+ })(observableBatcher || (observableBatcher = {}));
188
+
189
+ const symbolHasValue = Symbol('__hasValue');
190
+ function disposeListener(listener) {
191
+ if (listener && !listener.isDisposed) {
192
+ listener.isDisposed = true;
193
+ const listeners = listener.node.root.listenerMap.get(listener.node.path);
194
+ if (listeners) {
195
+ listeners.delete(listener);
196
+ }
197
+ }
198
+ }
199
+ function onEquals(node, value, callback) {
200
+ let listener;
201
+ const promise = new Promise((resolve) => {
202
+ let isDone = false;
203
+ function check(newValue) {
204
+ if (!isDone &&
205
+ (value === symbolHasValue
206
+ ? // If value param is symbolHasValue, then this is from onHasValue so resolve if newValue is anything but undefined or empty object
207
+ newValue !== undefined && newValue !== null && !isObjectEmpty(newValue)
208
+ : newValue === value)) {
209
+ isDone = true;
210
+ callback === null || callback === void 0 ? void 0 : callback(newValue);
211
+ resolve(newValue);
212
+ disposeListener(listener);
213
+ }
214
+ return isDone;
215
+ }
216
+ if (!check(getNodeValue(node))) {
217
+ listener = onChange(node, check, /*shallow*/ true);
218
+ }
219
+ });
220
+ return {
221
+ promise,
222
+ listener,
223
+ };
224
+ }
225
+ function onHasValue(node, callback) {
226
+ return onEquals(node, symbolHasValue, callback);
227
+ }
228
+ function onTrue(node, callback) {
229
+ return onEquals(node, true, callback);
230
+ }
231
+ function onChange(node, callback, shallow) {
232
+ const listener = {
233
+ node,
234
+ callback,
235
+ shallow,
236
+ // function, not () => {} to preserve this
237
+ dispose: function () {
238
+ disposeListener(this);
239
+ },
240
+ };
241
+ const map = node.root.listenerMap;
242
+ let listeners = map.get(node.path);
243
+ if (!listeners) {
244
+ listeners = new Set();
245
+ map.set(node.path, listeners);
246
+ }
247
+ listeners.add(listener);
248
+ return listener;
249
+ }
250
+ function onChangeShallow(node, callback) {
251
+ return onChange(node, callback, /*shallow*/ true);
252
+ }
253
+
254
+ let lastAccessedNode;
255
+ let lastAccessedPrimitive;
256
+ let inSetFn = false;
257
+ const ArrayModifiers = new Set([
258
+ 'copyWithin',
259
+ 'fill',
260
+ 'from',
261
+ 'pop',
262
+ 'push',
263
+ 'reverse',
264
+ 'shift',
265
+ 'sort',
266
+ 'splice',
267
+ 'unshift',
268
+ ]);
269
+ const ArrayLoopers = new Set(['every', 'some', 'filter', 'reduce', 'reduceRight', 'forEach', 'map']);
270
+ const objectFnsProxy = new Map([
271
+ ['get', getNodeValue],
272
+ ['set', set],
273
+ ['onChange', onChange],
274
+ ['onChangeShallow', onChangeShallow],
275
+ ['onEquals', onEquals],
276
+ ['onHasValue', onHasValue],
277
+ ['onTrue', onTrue],
278
+ ['prop', getProxy],
279
+ ['assign', assign],
280
+ ['delete', deleteFn],
281
+ ]);
282
+ // Override primitives
283
+ const wrapFn = (fn) => function (...args) {
284
+ if (lastAccessedNode && lastAccessedPrimitive) {
285
+ const node = getChildNode(lastAccessedNode, lastAccessedPrimitive);
286
+ if (getNodeValue(node) === this) {
287
+ return fn(node, ...args);
288
+ }
289
+ }
290
+ };
291
+ const toOverride = [Number, Boolean, String];
292
+ objectFnsProxy.forEach((fn, key) => {
293
+ for (let i = 0; i < toOverride.length; i++) {
294
+ toOverride[i].prototype[key] = wrapFn(fn);
295
+ }
296
+ });
297
+ function collectionSetter(node, target, prop, ...args) {
298
+ const prevValue = (isArray(target) && target.slice()) || target;
299
+ const ret = target[prop].apply(target, args);
300
+ if (node) {
301
+ const { parent, key } = getParentNode(node);
302
+ if (parent) {
303
+ const parentValue = getNodeValue(parent);
304
+ // Set the object to the previous value first
305
+ parentValue[key] = prevValue;
306
+ // Then set with the new value so it notifies with the correct prevValue
307
+ setProp(parent, key, target);
308
+ }
309
+ }
310
+ // Return the original value
311
+ return ret;
312
+ }
313
+ function updateNodes(parent, obj, prevValue) {
314
+ const isArr = isArray(obj);
315
+ // If array it's faster to just use the array
316
+ const keys = isArr ? obj : Object.keys(obj);
317
+ const length = keys.length;
318
+ let hasADiff = false;
319
+ for (let i = 0; i < length; i++) {
320
+ const key = isArr ? i : keys[i];
321
+ const value = obj[key];
322
+ const prev = prevValue === null || prevValue === void 0 ? void 0 : prevValue[key];
323
+ if (!isArr && prevValue && value !== prev) {
324
+ const isObj = !isPrimitive(value);
325
+ const child = getChildNode(parent, key);
326
+ // If object iterate through its children
327
+ if (isObj) {
328
+ updateNodes(child, value, prev);
329
+ }
330
+ // Notify for this child if this element is different and it has listeners
331
+ // But do not notify child if the parent is an array - the array's listener will cover it
332
+ const doNotify = child.root.listenerMap.has(child.path);
333
+ if (doNotify) {
334
+ hasADiff = true;
335
+ _notify(child, value, [], value, prev, 0);
336
+ }
337
+ }
338
+ }
339
+ return hasADiff;
340
+ }
341
+ function getProxy(node, p) {
342
+ // Create a proxy if not already cached and return it
343
+ if (p !== undefined)
344
+ node = getChildNode(node, p);
345
+ let proxy = node.root.proxies.get(node.path);
346
+ if (!proxy) {
347
+ proxy = new Proxy(node, proxyHandler);
348
+ node.root.proxies.set(node.path, proxy);
349
+ }
350
+ return proxy;
351
+ }
352
+ const proxyHandler = {
353
+ get(target, p) {
354
+ // Return true is called by isObservable()
355
+ if (p === symbolIsObservable) {
356
+ return true;
357
+ }
358
+ const node = target;
359
+ const fn = objectFnsProxy.get(p);
360
+ // If this is an observable function, call it
361
+ if (p !== 'get' && fn) {
362
+ return function (a, b, c) {
363
+ const l = arguments.length;
364
+ return l > 2 ? fn(node, a, b, c) : l > 1 ? fn(node, a, b) : fn(node, a);
365
+ };
366
+ }
367
+ let value = getNodeValue(node);
368
+ const vProp = value === null || value === void 0 ? void 0 : value[p];
369
+ // The get() function as well as the internal obs[symbolGet]
370
+ if (p === symbolGet || p === 'get') {
371
+ // Primitives are { current } so return the current value
372
+ if (node.root.isPrimitive) {
373
+ value = value.current;
374
+ }
375
+ // Update that this node was accessed for useObservables and useComputed
376
+ if (tracking.is) {
377
+ updateTracking(node, value);
378
+ }
379
+ return p === 'get' ? () => value : value;
380
+ }
381
+ // Accessing undefined/null/symbols passes straight through if this value has a property for it
382
+ // If it's never been defined assume it's a proxy to a future object
383
+ if (isSymbol(p) || vProp === null || (vProp === undefined && value && Object.hasOwn(value, p))) {
384
+ return vProp;
385
+ }
386
+ // Handle function calls
387
+ if (isFunction(vProp)) {
388
+ if (isArray(value)) {
389
+ if (ArrayModifiers.has(p)) {
390
+ // Call the wrapped modifier function
391
+ return (...args) => collectionSetter(node, value, p, ...args);
392
+ }
393
+ else if (ArrayLoopers.has(p)) {
394
+ // Bind this looping function to an array of proxies
395
+ const arr = [];
396
+ for (let i = 0; i < value.length; i++) {
397
+ arr.push(getProxy(node, i));
398
+ }
399
+ return vProp.bind(arr);
400
+ }
401
+ }
402
+ // Return the function bound to the value
403
+ return vProp.bind(value);
404
+ }
405
+ // Accessing primitives tracks and returns
406
+ if (vProp !== undefined && isPrimitive(vProp)) {
407
+ // Accessing a primitive saves the last accessed so that the observable functions
408
+ // bound to primitives can know which node was accessed
409
+ lastAccessedNode = node;
410
+ lastAccessedPrimitive = p;
411
+ // Update that this node was accessed for useObservables and useComputed
412
+ if (tracking.is) {
413
+ updateTracking(getChildNode(node, p), value);
414
+ }
415
+ return vProp;
416
+ }
417
+ return getProxy(target, p);
418
+ },
419
+ // Forward all proxy properties to the target's value
420
+ getPrototypeOf(target) {
421
+ const value = getNodeValue(target);
422
+ return Reflect.getPrototypeOf(value);
423
+ },
424
+ ownKeys(target) {
425
+ const value = getNodeValue(target);
426
+ const keys = Reflect.ownKeys(value);
427
+ if (isArray(value)) {
428
+ if (keys[keys.length - 1] === 'length') {
429
+ keys.splice(keys.length - 1, 1);
430
+ }
431
+ }
432
+ return keys;
433
+ },
434
+ getOwnPropertyDescriptor(target, p) {
435
+ const value = getNodeValue(target);
436
+ return Reflect.getOwnPropertyDescriptor(value, p);
437
+ },
438
+ set(target, prop, value) {
439
+ // If this assignment comes from within an observable function it's allowed
440
+ if (inSetFn) {
441
+ Reflect.set(target, prop, value);
442
+ return true;
443
+ }
444
+ else {
445
+ return false;
446
+ }
447
+ },
448
+ deleteProperty(target, prop) {
449
+ // If this delete comes from within an observable function it's allowed
450
+ if (inSetFn) {
451
+ Reflect.deleteProperty(target, prop);
452
+ return true;
453
+ }
454
+ else {
455
+ return false;
456
+ }
457
+ },
458
+ has(target, prop) {
459
+ const value = getNodeValue(target);
460
+ return Reflect.has(value, prop);
461
+ },
462
+ };
463
+ function set(node, keyOrNewValue, newValue) {
464
+ if (arguments.length > 2) {
465
+ return setProp(node, keyOrNewValue, newValue);
466
+ }
467
+ else if (node.root.isPrimitive) {
468
+ return setProp(node, 'current', keyOrNewValue);
469
+ }
470
+ else {
471
+ const { parent, key } = getParentNode(node);
472
+ return setProp(parent, key, keyOrNewValue);
473
+ }
474
+ }
475
+ function setProp(node, key, newValue, level) {
476
+ newValue = (newValue === null || newValue === void 0 ? void 0 : newValue[symbolIsObservable]) ? newValue[symbolGet] : newValue;
477
+ const isPrim = isPrimitive(newValue);
478
+ if (!key && !node.path.includes(delim)) {
479
+ return assign(node, newValue);
480
+ }
481
+ inSetFn = true;
482
+ // Get the child node for updating and notifying
483
+ const childNode = getChildNode(node, key);
484
+ // Get the value of the parent
485
+ let parentValue = getNodeValue(node);
486
+ // Save the previous value first
487
+ const prevValue = parentValue[key];
488
+ // Save the new value
489
+ parentValue[key] = newValue;
490
+ // If new value is an object or array update notify down the tree
491
+ if (!isPrim) {
492
+ updateNodes(childNode, newValue, prevValue);
493
+ }
494
+ // Notify for this element if it's an object or it's changed
495
+ if (!isPrim || newValue !== prevValue) {
496
+ notify(node.root.isPrimitive ? node : childNode, newValue, prevValue, (level !== null && level !== void 0 ? level : prevValue === undefined) ? -1 : 0);
497
+ }
498
+ inSetFn = false;
499
+ return getProxy(node, key);
500
+ }
501
+ function createPreviousHandler(value, path, prevAtPath) {
502
+ // Create a function that clones the current state and injects the previous data at the changed path
503
+ return function () {
504
+ let clone = value ? JSON.parse(JSON.stringify(value)) : path.length > 0 ? {} : value;
505
+ let o = clone;
506
+ if (path.length > 0) {
507
+ let i;
508
+ for (i = 0; i < path.length - 1; i++) {
509
+ o = o[path[i]];
510
+ }
511
+ o[path[i]] = prevAtPath;
512
+ }
513
+ else {
514
+ clone = prevAtPath;
515
+ }
516
+ return clone;
517
+ };
518
+ }
519
+ function _notify(node, value, path, valueAtPath, prevAtPath, level) {
520
+ const listeners = node.root.listenerMap.get(node.path);
521
+ // Notify all listeners
522
+ if (listeners) {
523
+ let getPrevious;
524
+ for (let listener of listeners) {
525
+ // Notify if listener is not shallow or if this is the first level
526
+ if (!listener.shallow || level <= 0) {
527
+ // Create a function to get the previous data. Computing a clone of previous data can be expensive if doing
528
+ // it often, so leave it up to the user.
529
+ if (!getPrevious) {
530
+ getPrevious = createPreviousHandler(value, path, prevAtPath);
531
+ }
532
+ observableBatcherNotify({ cb: listener.callback, value, getPrevious, path, valueAtPath, prevAtPath });
533
+ }
534
+ }
535
+ }
536
+ }
537
+ function _notifyParents(node, value, path, valueAtPath, prevAtPath, level) {
538
+ // Do the notify
539
+ _notify(node, value, path, valueAtPath, prevAtPath, level);
540
+ // If not root notify up through parents
541
+ if (node.path !== '_') {
542
+ const { parent, key } = getParentNode(node);
543
+ if (parent) {
544
+ const parentValue = getNodeValue(parent);
545
+ _notifyParents(parent, parentValue, [key].concat(path), valueAtPath, prevAtPath, level + 1);
546
+ }
547
+ }
548
+ }
549
+ function notify(node, value, prev, level) {
550
+ // Start notifying up through parents with the listenerInfo
551
+ _notifyParents(node, value, [], value, prev, level);
552
+ }
553
+ function assign(node, value) {
554
+ observableBatcher.begin();
555
+ // Assign calls set with all assigned properties
556
+ const keys = Object.keys(value);
557
+ const length = keys.length;
558
+ for (let i = 0; i < length; i++) {
559
+ setProp(node, keys[i], value[keys[i]]);
560
+ }
561
+ const ret = getNodeValue(node);
562
+ observableBatcher.end();
563
+ return ret;
564
+ }
565
+ function deleteFn(node, key) {
566
+ // If called without a key, delete by key from the parent node
567
+ if (key !== undefined) {
568
+ return deleteFnByKey(node, key);
569
+ }
570
+ else {
571
+ const { parent, key } = getParentNode(node);
572
+ return deleteFnByKey(parent, key);
573
+ }
574
+ }
575
+ function deleteFnByKey(node, key) {
576
+ if (!node.root.isPrimitive) {
577
+ // delete sets to undefined first to cleanup children
578
+ setProp(node, key, undefined, /*level*/ -1);
579
+ }
580
+ inSetFn = true;
581
+ // Then delete the key from the object
582
+ let child = getNodeValue(node);
583
+ delete child[key];
584
+ inSetFn = false;
585
+ }
586
+ function observable(obj) {
587
+ const isPrim = isPrimitive(obj);
588
+ // Primitives wrap in current
589
+ if (isPrim) {
590
+ obj = { current: obj };
591
+ }
592
+ const obs = {
593
+ _: obj,
594
+ isPrimitive: isPrim,
595
+ listenerMap: new Map(),
596
+ proxies: new Map(),
597
+ proxyValues: new Map(),
598
+ };
599
+ const node = {
600
+ root: obs,
601
+ path: '_',
602
+ pathParent: '',
603
+ key: '_',
604
+ };
605
+ obs.proxyValues.set(node.path, node);
606
+ updateNodes(node, obs._);
607
+ const proxy = getProxy(node);
608
+ // @ts-ignore
609
+ return proxy;
610
+ }
611
+
612
+ export { getObservableRawValue, isArray, isFunction, isObject, isPrimitive, mergeIntoObservable, observable, observableBatcher, onChange, onChangeShallow, shallow, shouldRender, symbolDateModified, symbolGet, symbolIsObservable, symbolShallow, symbolShouldRender, trackedNodes, tracking };
613
+ //# sourceMappingURL=index.esm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.mjs","sources":["../../src/state.ts","../../src/is.ts","../../src/globals.ts","../../src/helpers.ts","../../src/observableBatcher.ts","../../src/on.ts","../../src/observable.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}