@legendapp/state 0.23.4 → 1.0.0-rc.10
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/CHANGELOG.md +25 -0
- package/README.md +4 -0
- package/helpers/pageHash.js +1 -1
- package/helpers/pageHash.js.map +1 -1
- package/helpers/pageHash.mjs +1 -1
- package/helpers/pageHash.mjs.map +1 -1
- package/helpers/pageHashParams.js +2 -2
- package/helpers/pageHashParams.js.map +1 -1
- package/helpers/pageHashParams.mjs +2 -2
- package/helpers/pageHashParams.mjs.map +1 -1
- package/history.js +3 -5
- package/history.js.map +1 -1
- package/history.mjs +4 -6
- package/history.mjs.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +234 -127
- package/index.js.map +1 -1
- package/index.mjs +228 -121
- package/index.mjs.map +1 -1
- package/internal.d.ts +2 -2
- package/internal.js +2 -6
- package/internal.js.map +1 -1
- package/internal.mjs +2 -2
- package/package.json +2 -3
- package/persist-plugins/indexeddb-preloader.js +55 -35
- package/persist-plugins/indexeddb-preloader.js.map +1 -1
- package/persist-plugins/indexeddb-preloader.mjs +55 -35
- package/persist-plugins/indexeddb-preloader.mjs.map +1 -1
- package/persist-plugins/indexeddb.d.ts +3 -2
- package/persist-plugins/indexeddb.js +93 -57
- package/persist-plugins/indexeddb.js.map +1 -1
- package/persist-plugins/indexeddb.mjs +94 -58
- package/persist-plugins/indexeddb.mjs.map +1 -1
- package/persist-plugins/local-storage.d.ts +4 -3
- package/persist-plugins/local-storage.js +19 -9
- package/persist-plugins/local-storage.js.map +1 -1
- package/persist-plugins/local-storage.mjs +19 -9
- package/persist-plugins/local-storage.mjs.map +1 -1
- package/persist-plugins/mmkv.d.ts +3 -2
- package/persist-plugins/mmkv.js +27 -18
- package/persist-plugins/mmkv.js.map +1 -1
- package/persist-plugins/mmkv.mjs +27 -18
- package/persist-plugins/mmkv.mjs.map +1 -1
- package/persist.d.ts +2 -2
- package/persist.js +306 -170
- package/persist.js.map +1 -1
- package/persist.mjs +306 -170
- package/persist.mjs.map +1 -1
- package/react-hooks/usePersistedObservable.js.map +1 -1
- package/react-hooks/usePersistedObservable.mjs.map +1 -1
- package/react.js +42 -37
- package/react.js.map +1 -1
- package/react.mjs +43 -38
- package/react.mjs.map +1 -1
- package/src/batching.d.ts +4 -10
- package/src/computed.d.ts +2 -1
- package/src/globals.d.ts +0 -4
- package/src/helpers.d.ts +6 -4
- package/src/notify.d.ts +1 -1
- package/src/observable.d.ts +2 -1
- package/src/observableInterfaces.d.ts +65 -18
- package/src/onChange.d.ts +4 -1
- package/src/persist/fieldTransformer.d.ts +8 -3
- package/src/persist/persistHelpers.d.ts +0 -2
- package/src/persist/persistObservable.d.ts +25 -3
- package/src/persist-plugins/indexeddb.d.ts +3 -2
- package/src/persist-plugins/local-storage.d.ts +4 -3
- package/src/persist-plugins/mmkv.d.ts +3 -2
- package/src/react/useComputed.d.ts +5 -2
- package/trace.js +7 -4
- package/trace.js.map +1 -1
- package/trace.mjs +7 -4
- package/trace.mjs.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## 1.0.0-rc.2
|
|
2
|
+
|
|
3
|
+
- Feature: `batch` has a new `onComplete `batch(callback, onComplete)` parameter to run a function after the batch commits. This can be useful for cleaning up a temporary state while batching.
|
|
4
|
+
- Fix: onChange with `initial` option fires immediately rather than going through batching process
|
|
5
|
+
- Fix: Applying pending changes on load was writing back to local persistence unnecessarily
|
|
6
|
+
- Perf: Improve performance of `mergeIntoObservable` by just doing a `set` if a target property is empty and doesn't need merging logic
|
|
7
|
+
- Perf: Improve persistence overall by using more targeted approaches than `mergeIntoObservable`
|
|
8
|
+
|
|
9
|
+
## 1.0.0-rc.1
|
|
10
|
+
|
|
11
|
+
- Fix: Incrementing a value from 0 with a function (`value.set((prev) => prev + 1)`) was not firing a callback the first time
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.0-rc.0
|
|
15
|
+
|
|
16
|
+
- Breaking: `onChange` function changed to take an options object as a second parameter with a new `initial` option that makes it fire immediately with the current value.
|
|
17
|
+
- Breaking: `onChange` callback receives an object parameter instead of many arguments. This adds more flexibility for callers who care about different values in the change object.
|
|
18
|
+
- Fix: `mergeIntoObservable` was not working correctly in some edge cases.
|
|
19
|
+
- Fix: IndexedDB persistence improved for many edge cases, with some fixes and performance improvements
|
|
20
|
+
- Fix: Persistence layers overall improved with more stability and better performance
|
|
21
|
+
|
|
22
|
+
## 0.23.1
|
|
23
|
+
|
|
24
|
+
- Fix: Not notifying on change of dates
|
|
25
|
+
|
|
1
26
|
## 0.23.0
|
|
2
27
|
|
|
3
28
|
- Breaking: Improved the criteria of when to notify up parents for changes on objects to run only when something inside it has changed, so setting/assigning the same object onto itself will not notify. It's unlikely but possible that may be a breaking change for you if you depended on things re-computing/re-rendering even if nothing changed.
|
package/README.md
CHANGED
|
@@ -106,6 +106,10 @@ const Component = observer(function Component() {
|
|
|
106
106
|
|
|
107
107
|
See [the documentation site](https://www.legendapp.com/open-source/state/).
|
|
108
108
|
|
|
109
|
+
## Community
|
|
110
|
+
|
|
111
|
+
Join us on [Slack](https://join.slack.com/t/legendappcommunity/shared_invite/zt-1mfjknpna-vUL2s1qOuNeZL12~t2RruQ) to get involved with the Legend community.
|
|
112
|
+
|
|
109
113
|
## Road to 1.0
|
|
110
114
|
|
|
111
115
|
- [ ] Improve documentation
|
package/helpers/pageHash.js
CHANGED
|
@@ -11,7 +11,7 @@ const pageHash = state.observable(hasWindow ? window.location.hash.slice(1) : ''
|
|
|
11
11
|
if (hasWindow) {
|
|
12
12
|
let isSetting = false;
|
|
13
13
|
// Set the page hash when the observable changes
|
|
14
|
-
pageHash.onChange((value) => {
|
|
14
|
+
pageHash.onChange(({ value }) => {
|
|
15
15
|
if (!isSetting) {
|
|
16
16
|
const hash = '#' + value;
|
|
17
17
|
const setter = (_options === null || _options === void 0 ? void 0 : _options.setter) || 'hash';
|
package/helpers/pageHash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageHash.js","sources":["../../../../src/helpers/pageHash.ts"],"sourcesContent":[null],"names":["observable"],"mappings":";;;;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACvC,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,QAAQ,GAAuBA,gBAAU,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAEhG,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;
|
|
1
|
+
{"version":3,"file":"pageHash.js","sources":["../../../../src/helpers/pageHash.ts"],"sourcesContent":[null],"names":["observable"],"mappings":";;;;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACvC,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,QAAQ,GAAuBA,gBAAU,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAEhG,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;IAEtB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;QAC5B,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;AACzB,YAAA,MAAM,MAAM,GAAG,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,KAAI,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,WAAW,EAAE;gBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,aAAA;iBAAM,IAAI,MAAM,KAAK,cAAc,EAAE;gBAClC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;;IAEH,MAAM,EAAE,GAAG,MAAK;QACZ,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,SAAS,GAAG,KAAK,CAAC;AACtB,KAAC,CAAC;;AAEF,IAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C;;;;;"}
|
package/helpers/pageHash.mjs
CHANGED
|
@@ -9,7 +9,7 @@ const pageHash = observable(hasWindow ? window.location.hash.slice(1) : '');
|
|
|
9
9
|
if (hasWindow) {
|
|
10
10
|
let isSetting = false;
|
|
11
11
|
// Set the page hash when the observable changes
|
|
12
|
-
pageHash.onChange((value) => {
|
|
12
|
+
pageHash.onChange(({ value }) => {
|
|
13
13
|
if (!isSetting) {
|
|
14
14
|
const hash = '#' + value;
|
|
15
15
|
const setter = (_options === null || _options === void 0 ? void 0 : _options.setter) || 'hash';
|
package/helpers/pageHash.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageHash.mjs","sources":["../../../../src/helpers/pageHash.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACvC,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,QAAQ,GAAuB,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAEhG,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;
|
|
1
|
+
{"version":3,"file":"pageHash.mjs","sources":["../../../../src/helpers/pageHash.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACvC,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,QAAQ,GAAuB,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAEhG,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;IAEtB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;QAC5B,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;AACzB,YAAA,MAAM,MAAM,GAAG,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,KAAI,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,WAAW,EAAE;gBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,aAAA;iBAAM,IAAI,MAAM,KAAK,cAAc,EAAE;gBAClC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;;IAEH,MAAM,EAAE,GAAG,MAAK;QACZ,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,SAAS,GAAG,KAAK,CAAC;AACtB,KAAC,CAAC;;AAEF,IAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C;;;;"}
|
|
@@ -15,14 +15,14 @@ function toParams(str) {
|
|
|
15
15
|
return ret;
|
|
16
16
|
}
|
|
17
17
|
function toString(params) {
|
|
18
|
-
return new URLSearchParams(params).toString();
|
|
18
|
+
return new URLSearchParams(params).toString().replace(/=$/, '');
|
|
19
19
|
}
|
|
20
20
|
const hasWindow = typeof window !== 'undefined';
|
|
21
21
|
const pageHashParams = state.observable(hasWindow ? toParams(window.location.hash.slice(1)) : {});
|
|
22
22
|
if (hasWindow) {
|
|
23
23
|
let isSetting = false;
|
|
24
24
|
// Set the page hash when the observable changes
|
|
25
|
-
pageHashParams.onChange((value) => {
|
|
25
|
+
pageHashParams.onChange(({ value }) => {
|
|
26
26
|
if (!isSetting) {
|
|
27
27
|
const hash = '#' + toString(value);
|
|
28
28
|
const setter = (_options === null || _options === void 0 ? void 0 : _options.setter) || 'hash';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageHashParams.js","sources":["../../../../src/helpers/pageHashParams.ts"],"sourcesContent":[null],"names":["observable"],"mappings":";;;;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,uBAAuB,CAAC,OAAgB,EAAA;IAC7C,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAA;IACzB,MAAM,GAAG,GAA2B,EAAE,CAAC;AACvC,IAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE;AACrC,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,MAA8B,EAAA;
|
|
1
|
+
{"version":3,"file":"pageHashParams.js","sources":["../../../../src/helpers/pageHashParams.ts"],"sourcesContent":[null],"names":["observable"],"mappings":";;;;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,uBAAuB,CAAC,OAAgB,EAAA;IAC7C,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAA;IACzB,MAAM,GAAG,GAA2B,EAAE,CAAC;AACvC,IAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE;AACrC,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,MAA8B,EAAA;AAC5C,IAAA,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,cAAc,GAAuCA,gBAAU,CACjE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAC1D;AAEF,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;IAEtB,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;QAClC,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,KAAI,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,WAAW,EAAE;gBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,aAAA;iBAAM,IAAI,MAAM,KAAK,cAAc,EAAE;gBAClC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;;IAEH,MAAM,EAAE,GAAG,MAAK;QACZ,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,SAAS,GAAG,KAAK,CAAC;AACtB,KAAC,CAAC;;AAEF,IAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C;;;;;"}
|
|
@@ -13,14 +13,14 @@ function toParams(str) {
|
|
|
13
13
|
return ret;
|
|
14
14
|
}
|
|
15
15
|
function toString(params) {
|
|
16
|
-
return new URLSearchParams(params).toString();
|
|
16
|
+
return new URLSearchParams(params).toString().replace(/=$/, '');
|
|
17
17
|
}
|
|
18
18
|
const hasWindow = typeof window !== 'undefined';
|
|
19
19
|
const pageHashParams = observable(hasWindow ? toParams(window.location.hash.slice(1)) : {});
|
|
20
20
|
if (hasWindow) {
|
|
21
21
|
let isSetting = false;
|
|
22
22
|
// Set the page hash when the observable changes
|
|
23
|
-
pageHashParams.onChange((value) => {
|
|
23
|
+
pageHashParams.onChange(({ value }) => {
|
|
24
24
|
if (!isSetting) {
|
|
25
25
|
const hash = '#' + toString(value);
|
|
26
26
|
const setter = (_options === null || _options === void 0 ? void 0 : _options.setter) || 'hash';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageHashParams.mjs","sources":["../../../../src/helpers/pageHashParams.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,uBAAuB,CAAC,OAAgB,EAAA;IAC7C,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAA;IACzB,MAAM,GAAG,GAA2B,EAAE,CAAC;AACvC,IAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE;AACrC,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,MAA8B,EAAA;
|
|
1
|
+
{"version":3,"file":"pageHashParams.mjs","sources":["../../../../src/helpers/pageHashParams.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,IAAI,QAAQ,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAE3C,SAAS,uBAAuB,CAAC,OAAgB,EAAA;IAC7C,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAA;IACzB,MAAM,GAAG,GAA2B,EAAE,CAAC;AACvC,IAAA,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE;AACrC,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,MAA8B,EAAA;AAC5C,IAAA,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAC1C,MAAA,cAAc,GAAuC,UAAU,CACjE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAC1D;AAEF,IAAI,SAAS,EAAE;IACX,IAAI,SAAS,GAAG,KAAK,CAAC;;IAEtB,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;QAClC,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,KAAI,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,WAAW,EAAE;gBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,aAAA;iBAAM,IAAI,MAAM,KAAK,cAAc,EAAE;gBAClC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;;IAEH,MAAM,EAAE,GAAG,MAAK;QACZ,SAAS,GAAG,IAAI,CAAC;AACjB,QAAA,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,SAAS,GAAG,KAAK,CAAC;AACtB,KAAC,CAAC;;AAEF,IAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C;;;;"}
|
package/history.js
CHANGED
|
@@ -4,17 +4,15 @@ var state = require('@legendapp/state');
|
|
|
4
4
|
|
|
5
5
|
function trackHistory(obs, targetObservable) {
|
|
6
6
|
const history = targetObservable !== null && targetObservable !== void 0 ? targetObservable : state.observable();
|
|
7
|
-
obs.onChange((
|
|
7
|
+
obs.onChange(({ changes }) => {
|
|
8
8
|
// Don't save history if this is a remote change.
|
|
9
9
|
// History will be saved remotely by the client making the local change.
|
|
10
10
|
if (!state.tracking.inRemoteChange) {
|
|
11
11
|
const time = Date.now().toString();
|
|
12
12
|
// Save to history observable by date, with the previous value
|
|
13
13
|
for (let i = 0; i < changes.length; i++) {
|
|
14
|
-
const { path, prevAtPath } = changes[i];
|
|
15
|
-
|
|
16
|
-
continue;
|
|
17
|
-
const obj = state.constructObject(path, prevAtPath);
|
|
14
|
+
const { path, prevAtPath, pathTypes } = changes[i];
|
|
15
|
+
const obj = state.constructObjectWithPath(path, prevAtPath, pathTypes);
|
|
18
16
|
state.mergeIntoObservable(history[time], obj);
|
|
19
17
|
}
|
|
20
18
|
}
|
package/history.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sources":["../../src/history/trackHistory.ts"],"sourcesContent":[null],"names":["observable","tracking","
|
|
1
|
+
{"version":3,"file":"history.js","sources":["../../src/history/trackHistory.ts"],"sourcesContent":[null],"names":["observable","tracking","constructObjectWithPath","mergeIntoObservable"],"mappings":";;;;AAYgB,SAAA,YAAY,CACxB,GAA0B,EAC1B,gBAA6E,EAAA;IAE7E,MAAM,OAAO,GAAG,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,cAAhB,gBAAgB,GAAIA,gBAAU,EAAyC,CAAC;IAExF,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;;;AAGzB,QAAA,IAAI,CAACC,cAAQ,CAAC,cAAc,EAAE;YAC1B,MAAM,IAAI,GAAsB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;;AAGtD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEnD,MAAM,GAAG,GAAGC,6BAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACjEC,yBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,OAAO,CAAC;AACnB;;;;"}
|
package/history.mjs
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { observable, tracking,
|
|
1
|
+
import { observable, tracking, constructObjectWithPath, mergeIntoObservable } from '@legendapp/state';
|
|
2
2
|
|
|
3
3
|
function trackHistory(obs, targetObservable) {
|
|
4
4
|
const history = targetObservable !== null && targetObservable !== void 0 ? targetObservable : observable();
|
|
5
|
-
obs.onChange((
|
|
5
|
+
obs.onChange(({ changes }) => {
|
|
6
6
|
// Don't save history if this is a remote change.
|
|
7
7
|
// History will be saved remotely by the client making the local change.
|
|
8
8
|
if (!tracking.inRemoteChange) {
|
|
9
9
|
const time = Date.now().toString();
|
|
10
10
|
// Save to history observable by date, with the previous value
|
|
11
11
|
for (let i = 0; i < changes.length; i++) {
|
|
12
|
-
const { path, prevAtPath } = changes[i];
|
|
13
|
-
|
|
14
|
-
continue;
|
|
15
|
-
const obj = constructObject(path, prevAtPath);
|
|
12
|
+
const { path, prevAtPath, pathTypes } = changes[i];
|
|
13
|
+
const obj = constructObjectWithPath(path, prevAtPath, pathTypes);
|
|
16
14
|
mergeIntoObservable(history[time], obj);
|
|
17
15
|
}
|
|
18
16
|
}
|
package/history.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.mjs","sources":["../../src/history/trackHistory.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"history.mjs","sources":["../../src/history/trackHistory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAYgB,SAAA,YAAY,CACxB,GAA0B,EAC1B,gBAA6E,EAAA;IAE7E,MAAM,OAAO,GAAG,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,cAAhB,gBAAgB,GAAI,UAAU,EAAyC,CAAC;IAExF,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;;;AAGzB,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC1B,MAAM,IAAI,GAAsB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;;AAGtD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEnD,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACjE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,OAAO,CAAC;AACnB;;;;"}
|
package/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { opaqueObject, isObservable, mergeIntoObservable, getObservableIndex, computeSelector } from './src/helpers';
|
|
1
|
+
export { opaqueObject, isObservable, mergeIntoObservable, getObservableIndex, computeSelector, constructObjectWithPath, deconstructObjectWithPath, setAtPath, setInObservableAtPath } from './src/helpers';
|
|
2
2
|
export { observable, observablePrimitive } from './src/observable';
|
|
3
|
-
export { batch, beginBatch, endBatch } from './src/batching';
|
|
3
|
+
export { batch, beginBatch, endBatch, afterBatch } from './src/batching';
|
|
4
4
|
export { computed } from './src/computed';
|
|
5
5
|
export { event } from './src/event';
|
|
6
6
|
export { observe } from './src/observe';
|
|
7
7
|
export { when } from './src/when';
|
|
8
8
|
export * from './src/observableInterfaces';
|
|
9
|
-
export { isEmpty, isArray, isBoolean, isFunction, isObject, isPrimitive, isPromise, isString, isSymbol } from './src/is';
|
|
9
|
+
export { isEmpty, isArray, isBoolean, isFunction, isObject, isPrimitive, isPromise, isString, isSymbol, } from './src/is';
|
|
10
10
|
export { lockObservable } from './src/helpers';
|