react-obsidian 0.0.46 → 1.0.0
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/.vscode/settings.json +5 -0
- package/babel.config.js +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/model/Model.d.ts +4 -0
- package/dist/src/model/Model.d.ts.map +1 -0
- package/dist/src/model/Model.js +19 -0
- package/dist/src/model/Model.js.map +1 -0
- package/dist/src/observable/Observable.d.ts +1 -1
- package/dist/src/observable/Observable.d.ts.map +1 -1
- package/dist/src/observable/Observable.js +2 -1
- package/dist/src/observable/Observable.js.map +1 -1
- package/dist/src/observable/cold/ColdMediatorObservable.d.ts +18 -0
- package/dist/src/observable/cold/ColdMediatorObservable.d.ts.map +1 -0
- package/dist/src/observable/cold/ColdMediatorObservable.js +46 -0
- package/dist/src/observable/cold/ColdMediatorObservable.js.map +1 -0
- package/dist/src/observable/cold/useColdObservers.d.ts +3 -0
- package/dist/src/observable/cold/useColdObservers.d.ts.map +1 -0
- package/dist/src/observable/cold/useColdObservers.js +21 -0
- package/dist/src/observable/cold/useColdObservers.js.map +1 -0
- package/dist/src/observable/mapObservablesToValues.d.ts +3 -0
- package/dist/src/observable/mapObservablesToValues.d.ts.map +1 -0
- package/dist/src/observable/mapObservablesToValues.js +8 -0
- package/dist/src/observable/mapObservablesToValues.js.map +1 -0
- package/dist/src/observable/mediator/MediatorObservable.d.ts +6 -0
- package/dist/src/observable/mediator/MediatorObservable.d.ts.map +1 -0
- package/dist/src/observable/{MediatorObservable.js → mediator/MediatorObservable.js} +1 -1
- package/dist/src/observable/mediator/MediatorObservable.js.map +1 -0
- package/dist/src/observable/types.d.ts +3 -0
- package/dist/src/observable/types.d.ts.map +1 -1
- package/dist/src/observable/useObserver.d.ts +4 -2
- package/dist/src/observable/useObserver.d.ts.map +1 -1
- package/dist/src/observable/useObserver.js +6 -1
- package/dist/src/observable/useObserver.js.map +1 -1
- package/dist/src/observable/useObservers.d.ts +3 -0
- package/dist/src/observable/useObservers.d.ts.map +1 -0
- package/dist/src/observable/useObservers.js +21 -0
- package/dist/src/observable/useObservers.js.map +1 -0
- package/documentation/docs/documentation/installation.mdx +1 -1
- package/documentation/docs/documentation/usage/Reactivity.mdx +20 -0
- package/documentation/package-lock.json +7 -7
- package/documentation/package.json +1 -1
- package/documentation/yarn.lock +8167 -0
- package/global.d.ts +1 -0
- package/jest.config.js +2 -1
- package/package.json +10 -8
- package/src/index.ts +4 -1
- package/src/model/Model.ts +15 -0
- package/src/observable/Observable.ts +2 -1
- package/src/observable/cold/ColdMediatorObservable.ts +47 -0
- package/src/observable/cold/useColdObservers.ts +23 -0
- package/src/observable/mapObservablesToValues.ts +7 -0
- package/src/observable/mediator/MediatorObservable.ts +9 -0
- package/src/observable/types.ts +2 -0
- package/src/observable/useObserver.ts +18 -3
- package/src/observable/useObservers.ts +21 -0
- package/tsconfig.base.json +2 -1
- package/dist/src/observable/MediatorObservable.d.ts +0 -6
- package/dist/src/observable/MediatorObservable.d.ts.map +0 -1
- package/dist/src/observable/MediatorObservable.js.map +0 -1
- package/src/observable/MediatorObservable.ts +0 -9
package/babel.config.js
CHANGED
|
@@ -7,7 +7,7 @@ module.exports = {
|
|
|
7
7
|
plugins: [
|
|
8
8
|
`${__dirname}/dist/transformers/babel-plugin-obsidian`,
|
|
9
9
|
['@babel/plugin-proposal-decorators', { legacy: true }],
|
|
10
|
-
'@babel/plugin-
|
|
10
|
+
'@babel/plugin-transform-class-properties',
|
|
11
11
|
'babel-plugin-parameter-decorator'
|
|
12
12
|
],
|
|
13
13
|
};
|
package/dist/src/index.d.ts
CHANGED
|
@@ -15,8 +15,10 @@ export declare const Obsidian: _Obsidian;
|
|
|
15
15
|
export { injectComponent } from './injectors/components/InjectComponent';
|
|
16
16
|
export { injectHook, injectHookWithArguments } from './injectors/hooks/InjectHook';
|
|
17
17
|
export { useObserver } from './observable/useObserver';
|
|
18
|
+
export { useObservers } from './observable/useObservers';
|
|
18
19
|
export { Observable } from './observable/Observable';
|
|
19
|
-
export { MediatorObservable } from './observable/MediatorObservable';
|
|
20
|
+
export { MediatorObservable } from './observable/mediator/MediatorObservable';
|
|
20
21
|
export { OnNext, Unsubscribe } from './observable/types';
|
|
22
|
+
export { Model } from './model/Model';
|
|
21
23
|
export { testKit } from '../testkit';
|
|
22
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.testKit = exports.MediatorObservable = exports.Observable = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
|
|
20
|
+
exports.testKit = exports.Model = exports.MediatorObservable = exports.Observable = exports.useObservers = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
|
|
21
21
|
const Obsidian_1 = __importDefault(require("./Obsidian"));
|
|
22
22
|
__exportStar(require("./types"), exports);
|
|
23
23
|
var Graph_1 = require("./decorators/Graph");
|
|
@@ -46,10 +46,14 @@ Object.defineProperty(exports, "injectHook", { enumerable: true, get: function (
|
|
|
46
46
|
Object.defineProperty(exports, "injectHookWithArguments", { enumerable: true, get: function () { return InjectHook_1.injectHookWithArguments; } });
|
|
47
47
|
var useObserver_1 = require("./observable/useObserver");
|
|
48
48
|
Object.defineProperty(exports, "useObserver", { enumerable: true, get: function () { return useObserver_1.useObserver; } });
|
|
49
|
+
var useObservers_1 = require("./observable/useObservers");
|
|
50
|
+
Object.defineProperty(exports, "useObservers", { enumerable: true, get: function () { return useObservers_1.useObservers; } });
|
|
49
51
|
var Observable_1 = require("./observable/Observable");
|
|
50
52
|
Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return Observable_1.Observable; } });
|
|
51
|
-
var MediatorObservable_1 = require("./observable/MediatorObservable");
|
|
53
|
+
var MediatorObservable_1 = require("./observable/mediator/MediatorObservable");
|
|
52
54
|
Object.defineProperty(exports, "MediatorObservable", { enumerable: true, get: function () { return MediatorObservable_1.MediatorObservable; } });
|
|
55
|
+
var Model_1 = require("./model/Model");
|
|
56
|
+
Object.defineProperty(exports, "Model", { enumerable: true, get: function () { return Model_1.Model; } });
|
|
53
57
|
var testkit_1 = require("../testkit");
|
|
54
58
|
Object.defineProperty(exports, "testKit", { enumerable: true, get: function () { return testkit_1.testKit; } });
|
|
55
59
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AAEnC,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,oDAAmD;AAA1C,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGX,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,2DAAmF;AAA1E,wGAAA,UAAU,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAE5C,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AAEnC,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,oDAAmD;AAA1C,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGX,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,2DAAmF;AAA1E,wGAAA,UAAU,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAE5C,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AACrB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,+EAA8E;AAArE,wHAAA,kBAAkB,OAAA;AAG3B,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AAEd,sCAAqC;AAA5B,kGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../../src/model/Model.ts"],"names":[],"mappings":"AAGA,8BAAsB,KAAK;IAClB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC;CAUpC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Model = void 0;
|
|
4
|
+
const useColdObservers_1 = require("../observable/cold/useColdObservers");
|
|
5
|
+
const Observable_1 = require("../observable/Observable");
|
|
6
|
+
class Model {
|
|
7
|
+
use() {
|
|
8
|
+
const observables = {};
|
|
9
|
+
Object.getOwnPropertyNames(this).forEach((propertyName) => {
|
|
10
|
+
const property = this[propertyName];
|
|
11
|
+
if (property instanceof Observable_1.Observable) {
|
|
12
|
+
observables[propertyName] = property;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return (0, useColdObservers_1.useColdObservables)(observables);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.Model = Model;
|
|
19
|
+
//# sourceMappingURL=Model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/model/Model.ts"],"names":[],"mappings":";;;AAAA,0EAAyE;AACzE,yDAAsD;AAEtD,MAAsB,KAAK;IAClB,GAAG;QACR,MAAM,WAAW,GAAoC,EAAE,CAAC;QACxD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,EAAE;YAChE,MAAM,QAAQ,GAAI,IAAY,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,QAAQ,YAAY,uBAAU,EAAE;gBAClC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAA,qCAAkB,EAAI,WAAkB,CAAC,CAAC;IACnD,CAAC;CACF;AAXD,sBAWC"}
|
|
@@ -5,7 +5,7 @@ export declare class Observable<T> implements IObservable<T> {
|
|
|
5
5
|
constructor(initialValue?: T);
|
|
6
6
|
get value(): T;
|
|
7
7
|
set value(value: T);
|
|
8
|
-
subscribe(onNext
|
|
8
|
+
subscribe(onNext?: OnNext<T>): Unsubscribe;
|
|
9
9
|
unsubscribe(onNext: OnNext<T>): void;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=Observable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAgB;gBAExB,YAAY,CAAC,EAAE,CAAC;IAI5B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,CAAC,EAGxB;IAEM,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAQ,GAAG,WAAW;IAQhD,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;CAMpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Observable = void 0;
|
|
4
|
+
const NOOP = () => { };
|
|
4
5
|
class Observable {
|
|
5
6
|
constructor(initialValue) {
|
|
6
7
|
this.subscribers = new Set();
|
|
@@ -13,7 +14,7 @@ class Observable {
|
|
|
13
14
|
this.currentValue = value;
|
|
14
15
|
this.subscribers.forEach((subscriber) => subscriber(value));
|
|
15
16
|
}
|
|
16
|
-
subscribe(onNext) {
|
|
17
|
+
subscribe(onNext = NOOP) {
|
|
17
18
|
if (this.subscribers.has(onNext)) {
|
|
18
19
|
throw new Error('Subscriber already subscribed');
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAIrB,YAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAiB,CAAC;IAChC,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAa,UAAU;IAIrB,YAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,YAAiB,CAAC;IAChC,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,SAAS,CAAC,SAAoB,IAAI;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,WAAW,CAAC,MAAgB;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AA/BD,gCA+BC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MediatorObservable } from '../mediator/MediatorObservable';
|
|
2
|
+
export declare class ColdMediatorObservable<T extends object> extends MediatorObservable<T> {
|
|
3
|
+
private readonly handler;
|
|
4
|
+
constructor(obj: T, handler?: PropertyAccessTrackingProxy<T>);
|
|
5
|
+
set value(_: T);
|
|
6
|
+
get value(): T;
|
|
7
|
+
setValue(key: keyof T, value: any): void;
|
|
8
|
+
}
|
|
9
|
+
declare class PropertyAccessTrackingProxy<T extends object> implements ProxyHandler<T> {
|
|
10
|
+
private readonly accessedProperties;
|
|
11
|
+
private trackingSuspended;
|
|
12
|
+
get(target: T, p: string | symbol, receiver: any): (string extends infer T_1 ? T_1 extends string ? T_1 extends keyof T ? T[T_1] : any : never : never) | (symbol extends infer T_2 ? T_2 extends symbol ? T_2 extends keyof T ? T[T_2] : any : never : never);
|
|
13
|
+
hasAccessedProperty(key: keyof T): boolean;
|
|
14
|
+
suspendTracking(): void;
|
|
15
|
+
resumeTracking(): void;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=ColdMediatorObservable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColdMediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,qBAAa,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAhC,GAAG,EAAE,CAAC,EAAmB,OAAO,iCAAuC;IAInF,IAAa,KAAK,CAAC,CAAC,EAAE,CAAC,EAEtB;IAED,IAAa,KAAK,IAAI,CAAC,CAEtB;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG;CAOlC;AAED,cAAM,2BAA2B,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IACzD,OAAO,CAAC,iBAAiB,CAAS;IAElC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;IAOhD,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC;IAIzB,eAAe;IAIf,cAAc;CAGtB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ColdMediatorObservable = void 0;
|
|
4
|
+
const MediatorObservable_1 = require("../mediator/MediatorObservable");
|
|
5
|
+
class ColdMediatorObservable extends MediatorObservable_1.MediatorObservable {
|
|
6
|
+
constructor(obj, handler = new PropertyAccessTrackingProxy()) {
|
|
7
|
+
super(new Proxy(obj, handler));
|
|
8
|
+
this.handler = handler;
|
|
9
|
+
}
|
|
10
|
+
set value(_) {
|
|
11
|
+
throw new Error('Cannot set value of ColdMediatorObservable, use setValue(value, key) instead');
|
|
12
|
+
}
|
|
13
|
+
get value() {
|
|
14
|
+
return super.value;
|
|
15
|
+
}
|
|
16
|
+
setValue(key, value) {
|
|
17
|
+
if (this.handler.hasAccessedProperty(key)) {
|
|
18
|
+
this.handler.suspendTracking();
|
|
19
|
+
super.value = { ...this.value, [key]: value };
|
|
20
|
+
this.handler.resumeTracking();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ColdMediatorObservable = ColdMediatorObservable;
|
|
25
|
+
class PropertyAccessTrackingProxy {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.accessedProperties = new Set();
|
|
28
|
+
this.trackingSuspended = false;
|
|
29
|
+
}
|
|
30
|
+
get(target, p, receiver) {
|
|
31
|
+
if (!this.trackingSuspended) {
|
|
32
|
+
this.accessedProperties.add(p);
|
|
33
|
+
}
|
|
34
|
+
return Reflect.get(target, p, receiver);
|
|
35
|
+
}
|
|
36
|
+
hasAccessedProperty(key) {
|
|
37
|
+
return this.accessedProperties.has(key);
|
|
38
|
+
}
|
|
39
|
+
suspendTracking() {
|
|
40
|
+
this.trackingSuspended = true;
|
|
41
|
+
}
|
|
42
|
+
resumeTracking() {
|
|
43
|
+
this.trackingSuspended = false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ColdMediatorObservable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColdMediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/cold/ColdMediatorObservable.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAEpE,MAAa,sBAAyC,SAAQ,uCAAqB;IACjF,YAAY,GAAM,EAAmB,UAAU,IAAI,2BAA2B,EAAK;QACjF,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QADI,YAAO,GAAP,OAAO,CAAuC;IAEnF,CAAC;IAED,IAAa,KAAK,CAAC,CAAI;QACrB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IAED,IAAa,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAU;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/B,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;SAC/B;IACH,CAAC;CACF;AApBD,wDAoBC;AAED,MAAM,2BAA2B;IAAjC;QACmB,uBAAkB,GAAG,IAAI,GAAG,EAAW,CAAC;QACjD,sBAAiB,GAAG,KAAK,CAAC;IAoBpC,CAAC;IAlBC,GAAG,CAAC,MAAS,EAAE,CAAkB,EAAE,QAAa;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAY,CAAC,CAAC;SAC3C;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,GAAY;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColdObservers.d.ts","sourceRoot":"","sources":["../../../../src/observable/cold/useColdObservers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAiBnG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useColdObservables = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const ColdMediatorObservable_1 = require("./ColdMediatorObservable");
|
|
6
|
+
const mapObservablesToValues_1 = require("../mapObservablesToValues");
|
|
7
|
+
function useColdObservables(observables) {
|
|
8
|
+
const [mediator] = (0, react_1.useState)(() => new ColdMediatorObservable_1.ColdMediatorObservable((0, mapObservablesToValues_1.mapObservablesToValues)(observables)));
|
|
9
|
+
const [values, setValues] = (0, react_1.useState)(() => mediator.value);
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
Object.keys(observables).forEach((key) => {
|
|
12
|
+
mediator.addSource(observables[key], (value) => {
|
|
13
|
+
mediator.setValue(key, value);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
return mediator.subscribe(setValues);
|
|
17
|
+
}, []);
|
|
18
|
+
return values;
|
|
19
|
+
}
|
|
20
|
+
exports.useColdObservables = useColdObservables;
|
|
21
|
+
//# sourceMappingURL=useColdObservers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColdObservers.js","sourceRoot":"","sources":["../../../../src/observable/cold/useColdObservers.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,qEAAkE;AAElE,sEAAmE;AAEnE,SAAgB,kBAAkB,CAAgC,WAAc;IAC9E,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EACzB,GAAG,EAAE,CAAC,IAAI,+CAAsB,CAAI,IAAA,+CAAsB,EAAC,WAAW,CAAM,CAAC,CAC9E,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAA0B,CAAC,CAAC;IAEhF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,IAAI,CAAC,WAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC7C,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC;AAjBD,gDAiBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapObservablesToValues.d.ts","sourceRoot":"","sources":["../../../src/observable/mapObservablesToValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAIvG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapObservablesToValues = void 0;
|
|
4
|
+
function mapObservablesToValues(observables) {
|
|
5
|
+
return Object.fromEntries(Object.entries(observables).map(([key, observable]) => [key, observable.value]));
|
|
6
|
+
}
|
|
7
|
+
exports.mapObservablesToValues = mapObservablesToValues;
|
|
8
|
+
//# sourceMappingURL=mapObservablesToValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapObservablesToValues.js","sourceRoot":"","sources":["../../../src/observable/mapObservablesToValues.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAgC,WAAc;IAClF,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;AACzB,CAAC;AAJD,wDAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAItD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MediatorObservable = void 0;
|
|
4
|
-
const Observable_1 = require("
|
|
4
|
+
const Observable_1 = require("../Observable");
|
|
5
5
|
class MediatorObservable extends Observable_1.Observable {
|
|
6
6
|
addSource(source, onNext) {
|
|
7
7
|
source.subscribe(onNext);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAG3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAAI,MAAqB,EAAE,MAAiB;QACnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AALD,gDAKC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import { Observable } from './
|
|
2
|
-
|
|
1
|
+
import { Observable } from './Observable';
|
|
2
|
+
type ObservableOrGenerator<T> = Observable<T> | (() => Observable<T>);
|
|
3
|
+
export declare function useObserver<T>(observableOrGenerator: ObservableOrGenerator<T>): [T, (next: T) => void];
|
|
4
|
+
export {};
|
|
3
5
|
//# sourceMappingURL=useObserver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObserver.d.ts","sourceRoot":"","sources":["../../../src/observable/useObserver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useObserver.d.ts","sourceRoot":"","sources":["../../../src/observable/useObserver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,qBAAqB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAetG"}
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useObserver = void 0;
|
|
4
4
|
/* eslint-disable no-param-reassign */
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
|
|
6
|
+
const Observable_1 = require("./Observable");
|
|
7
|
+
function useObserver(observableOrGenerator) {
|
|
8
|
+
const observable = (0, react_1.useMemo)(() => getOrGenerateObservable(observableOrGenerator), []);
|
|
7
9
|
const [value, setValue] = (0, react_1.useState)(observable.value);
|
|
8
10
|
const onNext = (0, react_1.useCallback)((next) => {
|
|
9
11
|
observable.value = next;
|
|
@@ -14,4 +16,7 @@ function useObserver(observable) {
|
|
|
14
16
|
return [value, onNext];
|
|
15
17
|
}
|
|
16
18
|
exports.useObserver = useObserver;
|
|
19
|
+
function getOrGenerateObservable(observableOrGenerator) {
|
|
20
|
+
return observableOrGenerator instanceof Observable_1.Observable ? observableOrGenerator : observableOrGenerator();
|
|
21
|
+
}
|
|
17
22
|
//# sourceMappingURL=useObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObserver.js","sourceRoot":"","sources":["../../../src/observable/useObserver.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"useObserver.js","sourceRoot":"","sources":["../../../src/observable/useObserver.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,iCAKe;AACf,6CAA0C;AAI1C,SAAgB,WAAW,CAAI,qBAA+C;IAC5E,MAAM,UAAU,GAAG,IAAA,eAAO,EACxB,GAAG,EAAE,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,EACpD,EAAE,CACH,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,CAAC,IAAO,EAAE,EAAE;QACrC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzB,CAAC;AAfD,kCAeC;AAED,SAAS,uBAAuB,CAAC,qBAAiD;IAChF,OAAO,qBAAqB,YAAY,uBAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useObservers.d.ts","sourceRoot":"","sources":["../../../src/observable/useObservers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAe7F"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useObservers = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const MediatorObservable_1 = require("./mediator/MediatorObservable");
|
|
6
|
+
const mapObservablesToValues_1 = require("./mapObservablesToValues");
|
|
7
|
+
function useObservers(observables) {
|
|
8
|
+
const [values, setValues] = (0, react_1.useState)(() => (0, mapObservablesToValues_1.mapObservablesToValues)(observables));
|
|
9
|
+
(0, react_1.useEffect)(() => {
|
|
10
|
+
const mediator = new MediatorObservable_1.MediatorObservable();
|
|
11
|
+
Object.keys(observables).forEach((key) => {
|
|
12
|
+
mediator.addSource(observables[key], (value) => {
|
|
13
|
+
setValues({ ...values, [key]: value });
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
return mediator.subscribe();
|
|
17
|
+
}, []);
|
|
18
|
+
return values;
|
|
19
|
+
}
|
|
20
|
+
exports.useObservers = useObservers;
|
|
21
|
+
//# sourceMappingURL=useObservers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useObservers.js","sourceRoot":"","sources":["../../../src/observable/useObservers.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,sEAAmE;AAEnE,qEAAkE;AAElE,SAAgB,YAAY,CAAgC,WAAc;IACxE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,+CAAsB,EAAC,WAAW,CAAC,CAAC,CAAC;IAEhF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,uCAAkB,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC7C,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,oCAeC"}
|
|
@@ -49,7 +49,7 @@ module.exports = {
|
|
|
49
49
|
plugins: [
|
|
50
50
|
+ react-obsidian/dist/transformers/babel-plugin-obsidian,
|
|
51
51
|
+ ['@babel/plugin-proposal-decorators', {legacy: true}],
|
|
52
|
-
+
|
|
52
|
+
+ '@babel/plugin-transform-class-properties',
|
|
53
53
|
+ 'babel-plugin-parameter-decorator'
|
|
54
54
|
]
|
|
55
55
|
};
|
|
@@ -74,6 +74,26 @@ const useLogin = () => {
|
|
|
74
74
|
}
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
+
### Avoid recreating the initial observable
|
|
78
|
+
When using the `useObserver` hook, it is important to avoid recreating the initial observable.
|
|
79
|
+
|
|
80
|
+
```ts title="Avoid instantiating observables in hooks"
|
|
81
|
+
const useLogin = () => {
|
|
82
|
+
const [isLoggedIn] = useObserver(new Observable(false));
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Even if the value of the observable is the same, this can cause unexpected behavior since it's instantiated on every render.
|
|
87
|
+
|
|
88
|
+
To solve this, you can pass a generator function to the useObserver hook instead:
|
|
89
|
+
```ts
|
|
90
|
+
const useLogin = () => {
|
|
91
|
+
const [isLoggedIn] = useObserver(() => new Observable(false));
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If you pass a function to the useObserver hook, it will only be called on the first render. This ensures that the observable is only instantiated once.
|
|
96
|
+
|
|
77
97
|
### Merge multiple observable sources
|
|
78
98
|
`MediatorObservable` is a special type of observable that allows you to merge multiple observable sources into a single observable. This is useful for creating side effect from one or more observables.
|
|
79
99
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@docusaurus/preset-classic": "2.2.0",
|
|
13
13
|
"@mdx-js/react": "^1.6.22",
|
|
14
14
|
"clsx": "^1.2.1",
|
|
15
|
-
"enhancedocs-search": "^1.0
|
|
15
|
+
"enhancedocs-search": "^1.1.0",
|
|
16
16
|
"prism-react-renderer": "^1.3.5",
|
|
17
17
|
"react": "^17.0.2",
|
|
18
18
|
"react-dom": "^17.0.2"
|
|
@@ -5601,9 +5601,9 @@
|
|
|
5601
5601
|
}
|
|
5602
5602
|
},
|
|
5603
5603
|
"node_modules/enhancedocs-search": {
|
|
5604
|
-
"version": "1.0
|
|
5605
|
-
"resolved": "https://registry.npmjs.org/enhancedocs-search/-/enhancedocs-search-1.0.
|
|
5606
|
-
"integrity": "sha512-
|
|
5604
|
+
"version": "1.1.0",
|
|
5605
|
+
"resolved": "https://registry.npmjs.org/enhancedocs-search/-/enhancedocs-search-1.1.0.tgz",
|
|
5606
|
+
"integrity": "sha512-LyQRwlvh1jI2izXS4mY3oUvIMAOUI1luWB9vLACmTY030CI9j9jXx7jCU07WR7oLf9dUo3ZXGTJwB2WNv+Hz2A==",
|
|
5607
5607
|
"dependencies": {
|
|
5608
5608
|
"mixpanel-browser": "^2.47.0",
|
|
5609
5609
|
"react-markdown": "^8.0.6",
|
|
@@ -17512,9 +17512,9 @@
|
|
|
17512
17512
|
}
|
|
17513
17513
|
},
|
|
17514
17514
|
"enhancedocs-search": {
|
|
17515
|
-
"version": "1.0
|
|
17516
|
-
"resolved": "https://registry.npmjs.org/enhancedocs-search/-/enhancedocs-search-1.0.
|
|
17517
|
-
"integrity": "sha512-
|
|
17515
|
+
"version": "1.1.0",
|
|
17516
|
+
"resolved": "https://registry.npmjs.org/enhancedocs-search/-/enhancedocs-search-1.1.0.tgz",
|
|
17517
|
+
"integrity": "sha512-LyQRwlvh1jI2izXS4mY3oUvIMAOUI1luWB9vLACmTY030CI9j9jXx7jCU07WR7oLf9dUo3ZXGTJwB2WNv+Hz2A==",
|
|
17518
17518
|
"requires": {
|
|
17519
17519
|
"mixpanel-browser": "^2.47.0",
|
|
17520
17520
|
"react-markdown": "^8.0.6",
|