mobx-route 0.6.1 → 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":"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;IA8B5C,IAAI,EAAE,KAAK;IAClB,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAClC,KAAK,EACL,YAAY,EACZ,aAAa,EACb,YAAY,CACb;IAlCH,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IAErB,KAAK,EAAE,YAAY,CAAC;IAEpB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAC,CAA6B;IAC/C,OAAO,CAAC,gBAAgB,CAAsB;IAE9C;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB,QAAQ,EAAE,QAAQ,EAAE,CAAM;gBAGjB,IAAI,EAAE,KAAK,EACR,MAAM,GAAE,kBAAkB,CAClC,KAAK,EACL,YAAY,EACZ,aAAa,EACb,YAAY,CACR;IA2CR,SAAS,KAAK,OAAO,uBAGpB;IAED,SAAS,KAAK,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAgC3D;IAED;;;;OAIG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,aAAa,GAAG,IAAI,CAkBjC;IAED;;;;OAIG;IACH,IAAI,QAAQ,YAQX;IAED;;;;OAIG;IACH,MAAM,CACJ,WAAW,SAAS,MAAM,EAC1B,YAAY,SACV,eAAe,CAAC,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,GAAG,eAAe,CAAC,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,EACvF,aAAa,SACX,SAAS,GAAG,gBAAgB,CAAC,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,EAExD,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,IAAI,CACX,kBAAkB,CAChB,GAAG,KAAK,GAAG,WAAW,EAAE,EACxB,YAAY,EACZ,aAAa,EACb,GAAG,CACJ,EACD,QAAQ,CACT;IAuBH,WAAW,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE;IAIjC,cAAc,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE;IAIpC;;OAEG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAI/B;IAED,SAAS,CAAC,aAAa,CACrB,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACvC,SAAS,GAAG,SAAS;IAWxB,SAAS,CACP,GAAG,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,GACzC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,GACjD,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAiB/C;;;;OAIG;IACH,IAAI,CACF,GAAG,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,GACzC;QACE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS;QACxC,cAAc,CAAC,EAAE,mBAAmB;KACrC,GACD,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC;IAChB,IAAI,CACF,GAAG,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,GACzC;QACE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS;QACxC,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC;QACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC;KACrC,GACD;QACE,MAAM,EAAE,YAAY;QACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC;QACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC;KACrC,GACJ,OAAO,CAAC,IAAI,CAAC;IAChB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IACtE,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,EACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAwDhB,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAC7C,YAAY,CAAC,kBAAkB,CAAC;IAQnC,SAAS,CAAC,UAAU;IAQpB,SAAS,KAAK,SAAS,cAKtB;IAED,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,kBAAkB,CAcxB;IAEF,OAAO;CAGR"}
|
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)
|
|
@@ -30,6 +31,8 @@ export declare class VirtualRoute<TParams extends AnyObject | EmptyObject = Empt
|
|
|
30
31
|
* [**Documentation**](https://js2me.github.io/mobx-route/core/VirtualRoute.html#close-void)
|
|
31
32
|
*/
|
|
32
33
|
close(): void;
|
|
34
|
+
private firstOpenedStateCheck;
|
|
35
|
+
private processOpenedState;
|
|
33
36
|
destroy(): void;
|
|
34
37
|
}
|
|
35
38
|
//# sourceMappingURL=virtual-route.d.ts.map
|
|
@@ -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,34 +30,18 @@ export class VirtualRoute {
|
|
|
29
30
|
action(this, 'open');
|
|
30
31
|
action(this, 'close');
|
|
31
32
|
makeObservable(this);
|
|
32
|
-
let dispose;
|
|
33
|
-
let firstReactionCall = true;
|
|
34
33
|
onBecomeObserved(this, 'isOpened', () => {
|
|
35
34
|
if (!config.afterOpen && !config.afterClose) {
|
|
36
35
|
return;
|
|
37
36
|
}
|
|
38
|
-
|
|
39
|
-
if (firstReactionCall) {
|
|
40
|
-
firstReactionCall = false;
|
|
41
|
-
// ignore first 'afterClose' callback call
|
|
42
|
-
if (!isOpened) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (isOpened) {
|
|
47
|
-
config.afterOpen?.(this.params, this);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
config.afterClose?.();
|
|
51
|
-
}
|
|
52
|
-
}, {
|
|
37
|
+
this.reactionDisposer = reaction(() => this.isOpened, this.processOpenedState, {
|
|
53
38
|
signal: this.abortController.signal,
|
|
54
39
|
fireImmediately: true,
|
|
55
40
|
});
|
|
56
41
|
});
|
|
57
42
|
onBecomeUnobserved(this, 'isOpened', () => {
|
|
58
|
-
|
|
59
|
-
|
|
43
|
+
this.reactionDisposer?.();
|
|
44
|
+
this.reactionDisposer = undefined;
|
|
60
45
|
});
|
|
61
46
|
}
|
|
62
47
|
/**
|
|
@@ -102,6 +87,9 @@ export class VirtualRoute {
|
|
|
102
87
|
runInAction(() => {
|
|
103
88
|
this.params = params;
|
|
104
89
|
});
|
|
90
|
+
if (!this.reactionDisposer && this.isOpened) {
|
|
91
|
+
this.config.afterOpen?.(this.params, this);
|
|
92
|
+
}
|
|
105
93
|
}
|
|
106
94
|
/**
|
|
107
95
|
* [**Documentation**](https://js2me.github.io/mobx-route/core/VirtualRoute.html#close-void)
|
|
@@ -117,6 +105,22 @@ export class VirtualRoute {
|
|
|
117
105
|
}
|
|
118
106
|
this.params = null;
|
|
119
107
|
}
|
|
108
|
+
firstOpenedStateCheck = true;
|
|
109
|
+
processOpenedState = (isOpened) => {
|
|
110
|
+
if (this.firstOpenedStateCheck) {
|
|
111
|
+
this.firstOpenedStateCheck = false;
|
|
112
|
+
// ignore first 'afterClose' callback call
|
|
113
|
+
if (!isOpened) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (isOpened) {
|
|
118
|
+
this.config.afterOpen?.(this.params, this);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.config.afterClose?.();
|
|
122
|
+
}
|
|
123
|
+
};
|
|
120
124
|
destroy() {
|
|
121
125
|
this.abortController.abort();
|
|
122
126
|
}
|