mobx-route 0.6.2 → 0.6.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/core/route/route.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare class Route<TPath extends string, TInputParams extends InputPathP
|
|
|
17
17
|
private _tokenData;
|
|
18
18
|
private _matcher?;
|
|
19
19
|
private _compiler?;
|
|
20
|
+
private reactionDisposer;
|
|
20
21
|
/**
|
|
21
22
|
* Indicates if this route is an index route. Index routes activate when parent route path matches exactly.
|
|
22
23
|
*
|
|
@@ -88,6 +89,8 @@ export declare class Route<TPath extends string, TInputParams extends InputPathP
|
|
|
88
89
|
protected beforeOpen(openData: PreparedNavigationData<TInputParams>): MaybePromise<BeforeOpenFeedback>;
|
|
89
90
|
protected afterClose(): true | void;
|
|
90
91
|
protected get tokenData(): TokenData;
|
|
92
|
+
private firstOpenedStateCheck;
|
|
93
|
+
private processOpenedState;
|
|
91
94
|
destroy(): void;
|
|
92
95
|
}
|
|
93
96
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/core/route/route.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,OAAO,EACP,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkB,SAAS,EAAS,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIhF,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,qBAAa,KAAK,CAChB,KAAK,SAAS,MAAM,EACpB,YAAY,SAAS,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,EACpE,aAAa,SAAS,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,EACzD,YAAY,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAC5D,YAAW,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/core/route/route.ts"],"names":[],"mappings":"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"}
|
package/core/route/route.js
CHANGED
|
@@ -19,6 +19,7 @@ export class Route {
|
|
|
19
19
|
_tokenData;
|
|
20
20
|
_matcher;
|
|
21
21
|
_compiler;
|
|
22
|
+
reactionDisposer;
|
|
22
23
|
/**
|
|
23
24
|
* Indicates if this route is an index route. Index routes activate when parent route path matches exactly.
|
|
24
25
|
*
|
|
@@ -52,34 +53,18 @@ export class Route {
|
|
|
52
53
|
action(this, 'addChildren');
|
|
53
54
|
action(this, 'removeChildren');
|
|
54
55
|
makeObservable(this);
|
|
55
|
-
let dispose;
|
|
56
|
-
let firstReactionCall = true;
|
|
57
56
|
onBecomeObserved(this, 'isOpened', () => {
|
|
58
57
|
if (!config.afterOpen && !config.afterClose) {
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
|
-
|
|
62
|
-
if (firstReactionCall) {
|
|
63
|
-
firstReactionCall = false;
|
|
64
|
-
// ignore first 'afterClose' callback call
|
|
65
|
-
if (!isOpened) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (isOpened) {
|
|
70
|
-
config.afterOpen?.(this.parsedPathData, this);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
config.afterClose?.();
|
|
74
|
-
}
|
|
75
|
-
}, {
|
|
60
|
+
this.reactionDisposer = reaction(() => this.isOpened, this.processOpenedState, {
|
|
76
61
|
signal: this.abortController.signal,
|
|
77
62
|
fireImmediately: true,
|
|
78
63
|
});
|
|
79
64
|
});
|
|
80
65
|
onBecomeUnobserved(this, 'isOpened', () => {
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
this.reactionDisposer?.();
|
|
67
|
+
this.reactionDisposer = undefined;
|
|
83
68
|
});
|
|
84
69
|
}
|
|
85
70
|
get baseUrl() {
|
|
@@ -240,6 +225,9 @@ export class Route {
|
|
|
240
225
|
else {
|
|
241
226
|
this.history.push(url, state);
|
|
242
227
|
}
|
|
228
|
+
if (!this.reactionDisposer && this.isOpened) {
|
|
229
|
+
this.config.afterOpen?.(this.parsedPathData, this);
|
|
230
|
+
}
|
|
243
231
|
}
|
|
244
232
|
beforeOpen(openData) {
|
|
245
233
|
if (this.config.beforeOpen) {
|
|
@@ -259,6 +247,22 @@ export class Route {
|
|
|
259
247
|
}
|
|
260
248
|
return this._tokenData;
|
|
261
249
|
}
|
|
250
|
+
firstOpenedStateCheck = true;
|
|
251
|
+
processOpenedState = (isOpened) => {
|
|
252
|
+
if (this.firstOpenedStateCheck) {
|
|
253
|
+
this.firstOpenedStateCheck = false;
|
|
254
|
+
// ignore first 'afterClose' callback call
|
|
255
|
+
if (!isOpened) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (isOpened) {
|
|
260
|
+
this.config.afterOpen?.(this.parsedPathData, this);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.config.afterClose?.();
|
|
264
|
+
}
|
|
265
|
+
};
|
|
262
266
|
destroy() {
|
|
263
267
|
this.abortController.abort();
|
|
264
268
|
}
|
|
@@ -13,6 +13,7 @@ export declare class VirtualRoute<TParams extends AnyObject | EmptyObject = Empt
|
|
|
13
13
|
params: TParams | null;
|
|
14
14
|
private isLocalOpened;
|
|
15
15
|
private openChecker;
|
|
16
|
+
private reactionDisposer;
|
|
16
17
|
constructor(config?: VirtualRouteConfiguration<TParams>);
|
|
17
18
|
/**
|
|
18
19
|
* [**Documentation**](https://js2me.github.io/mobx-route/core/VirtualRoute.html#isopened-boolean)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-route.d.ts","sourceRoot":"","sources":["../../../src/core/virtual-route/virtual-route.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,SAAS,GAAG,WAAW,GAAG,WAAW,CAC7E,YAAW,oBAAoB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"virtual-route.d.ts","sourceRoot":"","sources":["../../../src/core/virtual-route/virtual-route.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,SAAS,GAAG,WAAW,GAAG,WAAW,CAC7E,YAAW,oBAAoB,CAAC,OAAO,CAAC;IAW5B,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC,OAAO,CAAC;IAThE,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvB,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,WAAW,CAA2D;IAC9E,OAAO,CAAC,gBAAgB,CAAsB;gBAExB,MAAM,GAAE,yBAAyB,CAAC,OAAO,CAAM;IAoCrE;;OAEG;IACH,IAAI,QAAQ,YAGX;IAED;;OAEG;IACH,cAAc,CACZ,WAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC;IAKvE;;OAEG;IACH,IAAI,CACF,GAAG,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,GACpC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,sBAAsB,CAAC,GAC/D,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,sBAAsB,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACH,KAAK;IAYL,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,kBAAkB,CAcxB;IAEF,OAAO;CAGR"}
|
|
@@ -14,6 +14,7 @@ export class VirtualRoute {
|
|
|
14
14
|
params;
|
|
15
15
|
isLocalOpened;
|
|
16
16
|
openChecker;
|
|
17
|
+
reactionDisposer;
|
|
17
18
|
constructor(config = {}) {
|
|
18
19
|
this.config = config;
|
|
19
20
|
this.abortController = new LinkedAbortController(config.abortSignal);
|
|
@@ -29,19 +30,18 @@ export class VirtualRoute {
|
|
|
29
30
|
action(this, 'open');
|
|
30
31
|
action(this, 'close');
|
|
31
32
|
makeObservable(this);
|
|
32
|
-
let dispose;
|
|
33
33
|
onBecomeObserved(this, 'isOpened', () => {
|
|
34
34
|
if (!config.afterOpen && !config.afterClose) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
this.reactionDisposer = reaction(() => this.isOpened, this.processOpenedState, {
|
|
38
38
|
signal: this.abortController.signal,
|
|
39
39
|
fireImmediately: true,
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
onBecomeUnobserved(this, 'isOpened', () => {
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
this.reactionDisposer?.();
|
|
44
|
+
this.reactionDisposer = undefined;
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -81,15 +81,15 @@ export class VirtualRoute {
|
|
|
81
81
|
if (!this.isLocalOpened) {
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
|
-
if (this.isOpened) {
|
|
85
|
-
this.config.afterOpen?.(this.params, this);
|
|
86
|
-
}
|
|
87
84
|
if (extraParams?.query) {
|
|
88
85
|
this.query.update(extraParams.query, extraParams.replace);
|
|
89
86
|
}
|
|
90
87
|
runInAction(() => {
|
|
91
88
|
this.params = params;
|
|
92
89
|
});
|
|
90
|
+
if (!this.reactionDisposer && this.isOpened) {
|
|
91
|
+
this.config.afterOpen?.(this.params, this);
|
|
92
|
+
}
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* [**Documentation**](https://js2me.github.io/mobx-route/core/VirtualRoute.html#close-void)
|