@react-navigation/routers 6.0.1 → 6.1.1
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/lib/commonjs/CommonActions.js +5 -5
- package/lib/commonjs/CommonActions.js.map +1 -1
- package/lib/commonjs/DrawerRouter.js +82 -61
- package/lib/commonjs/DrawerRouter.js.map +1 -1
- package/lib/commonjs/StackRouter.js +20 -15
- package/lib/commonjs/StackRouter.js.map +1 -1
- package/lib/commonjs/TabRouter.js +28 -21
- package/lib/commonjs/TabRouter.js.map +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/CommonActions.js +5 -5
- package/lib/module/CommonActions.js.map +1 -1
- package/lib/module/DrawerRouter.js +80 -60
- package/lib/module/DrawerRouter.js.map +1 -1
- package/lib/module/StackRouter.js +19 -14
- package/lib/module/StackRouter.js.map +1 -1
- package/lib/module/TabRouter.js +27 -20
- package/lib/module/TabRouter.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/DrawerRouter.d.ts +7 -2
- package/lib/typescript/src/StackRouter.d.ts +2 -2
- package/lib/typescript/src/TabRouter.d.ts +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/types.d.ts +7 -1
- package/package.json +3 -3
- package/src/DrawerRouter.tsx +89 -57
- package/src/StackRouter.tsx +8 -3
- package/src/TabRouter.tsx +7 -2
- package/src/index.tsx +1 -0
- package/src/types.tsx +7 -1
|
@@ -15,17 +15,17 @@ function goBack() {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// eslint-disable-next-line no-redeclare
|
|
18
|
-
function navigate(
|
|
19
|
-
if (typeof
|
|
18
|
+
function navigate() {
|
|
19
|
+
if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {
|
|
20
20
|
return {
|
|
21
21
|
type: 'NAVIGATE',
|
|
22
22
|
payload: {
|
|
23
|
-
name:
|
|
24
|
-
params:
|
|
23
|
+
name: arguments.length <= 0 ? undefined : arguments[0],
|
|
24
|
+
params: arguments.length <= 1 ? undefined : arguments[1]
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
} else {
|
|
28
|
-
const payload =
|
|
28
|
+
const payload = (arguments.length <= 0 ? undefined : arguments[0]) || {};
|
|
29
29
|
|
|
30
30
|
if (!payload.hasOwnProperty('key') && !payload.hasOwnProperty('name')) {
|
|
31
31
|
throw new Error('You need to specify name or key when calling navigate with an object as the argument. See https://reactnavigation.org/docs/navigation-actions#navigate for usage.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CommonActions.tsx"],"names":["goBack","type","navigate","
|
|
1
|
+
{"version":3,"sources":["CommonActions.tsx"],"names":["goBack","type","navigate","payload","name","params","hasOwnProperty","Error","reset","state","setParams"],"mappings":";;;;;;;;;;AAgDO,SAASA,MAAT,GAA0B;AAC/B,SAAO;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAAP;AACD;;AAeD;AACO,SAASC,QAAT,GAAwC;AAC7C,MAAI,8DAAmB,QAAvB,EAAiC;AAC/B,WAAO;AAAED,MAAAA,IAAI,EAAE,UAAR;AAAoBE,MAAAA,OAAO,EAAE;AAAEC,QAAAA,IAAI,kDAAN;AAAiBC,QAAAA,MAAM;AAAvB;AAA7B,KAAP;AACD,GAFD,MAEO;AACL,UAAMF,OAAO,GAAG,sDAAW,EAA3B;;AAEA,QAAI,CAACA,OAAO,CAACG,cAAR,CAAuB,KAAvB,CAAD,IAAkC,CAACH,OAAO,CAACG,cAAR,CAAuB,MAAvB,CAAvC,EAAuE;AACrE,YAAM,IAAIC,KAAJ,CACJ,mKADI,CAAN;AAGD;;AAED,WAAO;AAAEN,MAAAA,IAAI,EAAE,UAAR;AAAoBE,MAAAA;AAApB,KAAP;AACD;AACF;;AAEM,SAASK,KAAT,CAAeC,KAAf,EAAsD;AAC3D,SAAO;AAAER,IAAAA,IAAI,EAAE,OAAR;AAAiBE,IAAAA,OAAO,EAAEM;AAA1B,GAAP;AACD;;AAEM,SAASC,SAAT,CAAmBL,MAAnB,EAA2C;AAChD,SAAO;AAAEJ,IAAAA,IAAI,EAAE,YAAR;AAAsBE,IAAAA,OAAO,EAAE;AAAEE,MAAAA;AAAF;AAA/B,GAAP;AACD","sourcesContent":["import type { NavigationState, PartialState, Route } from './types';\n\ntype ResetState =\n | PartialState<NavigationState>\n | NavigationState\n | (Omit<NavigationState, 'routes'> & {\n routes: Omit<Route<string>, 'key'>[];\n });\n\nexport type Action =\n | {\n type: 'GO_BACK';\n source?: string;\n target?: string;\n }\n | {\n type: 'NAVIGATE';\n payload:\n | {\n key: string;\n name?: undefined;\n params?: object;\n path?: string;\n merge?: boolean;\n }\n | {\n name: string;\n key?: string;\n params?: object;\n path?: string;\n merge?: boolean;\n };\n source?: string;\n target?: string;\n }\n | {\n type: 'RESET';\n payload: ResetState | undefined;\n source?: string;\n target?: string;\n }\n | {\n type: 'SET_PARAMS';\n payload: { params?: object };\n source?: string;\n target?: string;\n };\n\nexport function goBack(): Action {\n return { type: 'GO_BACK' };\n}\n\nexport function navigate(\n options:\n | { key: string; params?: object; path?: string; merge?: boolean }\n | {\n name: string;\n key?: string;\n params?: object;\n path?: string;\n merge?: boolean;\n }\n): Action;\n// eslint-disable-next-line no-redeclare\nexport function navigate(name: string, params?: object): Action;\n// eslint-disable-next-line no-redeclare\nexport function navigate(...args: any): Action {\n if (typeof args[0] === 'string') {\n return { type: 'NAVIGATE', payload: { name: args[0], params: args[1] } };\n } else {\n const payload = args[0] || {};\n\n if (!payload.hasOwnProperty('key') && !payload.hasOwnProperty('name')) {\n throw new Error(\n 'You need to specify name or key when calling navigate with an object as the argument. See https://reactnavigation.org/docs/navigation-actions#navigate for usage.'\n );\n }\n\n return { type: 'NAVIGATE', payload };\n }\n}\n\nexport function reset(state: ResetState | undefined): Action {\n return { type: 'RESET', payload: state };\n}\n\nexport function setParams(params: object): Action {\n return { type: 'SET_PARAMS', payload: { params } };\n}\n"]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = DrawerRouter;
|
|
7
6
|
exports.DrawerActions = void 0;
|
|
7
|
+
exports.default = DrawerRouter;
|
|
8
8
|
|
|
9
9
|
var _nonSecure = require("nanoid/non-secure");
|
|
10
10
|
|
|
@@ -37,70 +37,87 @@ const DrawerActions = { ..._TabRouter.TabActions,
|
|
|
37
37
|
};
|
|
38
38
|
exports.DrawerActions = DrawerActions;
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
function DrawerRouter(_ref) {
|
|
41
|
+
let {
|
|
42
|
+
defaultStatus = 'closed',
|
|
43
|
+
...rest
|
|
44
|
+
} = _ref;
|
|
45
|
+
const router = (0, _TabRouter.default)(rest);
|
|
42
46
|
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
const isDrawerInHistory = state => {
|
|
48
|
+
var _state$history;
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return state;
|
|
49
|
-
}
|
|
50
|
+
return Boolean((_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.some(it => it.type === 'drawer'));
|
|
51
|
+
};
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
const addDrawerToHistory = state => {
|
|
54
|
+
if (isDrawerInHistory(state)) {
|
|
55
|
+
return state;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return { ...state,
|
|
59
|
+
history: [...state.history, {
|
|
60
|
+
type: 'drawer',
|
|
61
|
+
status: defaultStatus === 'open' ? 'closed' : 'open'
|
|
62
|
+
}]
|
|
63
|
+
};
|
|
56
64
|
};
|
|
57
|
-
};
|
|
58
65
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
const removeDrawerFromHistory = state => {
|
|
67
|
+
if (!isDrawerInHistory(state)) {
|
|
68
|
+
return state;
|
|
69
|
+
}
|
|
63
70
|
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
return { ...state,
|
|
72
|
+
history: state.history.filter(it => it.type !== 'drawer')
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const openDrawer = state => {
|
|
77
|
+
if (defaultStatus === 'open') {
|
|
78
|
+
return removeDrawerFromHistory(state);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return addDrawerToHistory(state);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const closeDrawer = state => {
|
|
85
|
+
if (defaultStatus === 'open') {
|
|
86
|
+
return addDrawerToHistory(state);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return removeDrawerFromHistory(state);
|
|
66
90
|
};
|
|
67
|
-
};
|
|
68
91
|
|
|
69
|
-
function DrawerRouter({
|
|
70
|
-
defaultStatus,
|
|
71
|
-
...rest
|
|
72
|
-
}) {
|
|
73
|
-
const router = (0, _TabRouter.default)(rest);
|
|
74
92
|
return { ...router,
|
|
75
93
|
type: 'drawer',
|
|
76
94
|
|
|
77
|
-
getInitialState({
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
95
|
+
getInitialState(_ref2) {
|
|
96
|
+
let {
|
|
97
|
+
routeNames,
|
|
98
|
+
routeParamList,
|
|
99
|
+
routeGetIdList
|
|
100
|
+
} = _ref2;
|
|
101
|
+
const state = router.getInitialState({
|
|
83
102
|
routeNames,
|
|
84
103
|
routeParamList,
|
|
85
104
|
routeGetIdList
|
|
86
105
|
});
|
|
87
|
-
|
|
88
|
-
if (defaultStatus === 'open') {
|
|
89
|
-
state = openDrawer(state);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
106
|
return { ...state,
|
|
107
|
+
default: defaultStatus,
|
|
93
108
|
stale: false,
|
|
94
109
|
type: 'drawer',
|
|
95
110
|
key: `drawer-${(0, _nonSecure.nanoid)()}`
|
|
96
111
|
};
|
|
97
112
|
},
|
|
98
113
|
|
|
99
|
-
getRehydratedState(partialState, {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
getRehydratedState(partialState, _ref3) {
|
|
115
|
+
let {
|
|
116
|
+
routeNames,
|
|
117
|
+
routeParamList,
|
|
118
|
+
routeGetIdList
|
|
119
|
+
} = _ref3;
|
|
120
|
+
|
|
104
121
|
if (partialState.stale === false) {
|
|
105
122
|
return partialState;
|
|
106
123
|
}
|
|
@@ -111,11 +128,14 @@ function DrawerRouter({
|
|
|
111
128
|
routeGetIdList
|
|
112
129
|
});
|
|
113
130
|
|
|
114
|
-
if (
|
|
115
|
-
|
|
131
|
+
if (isDrawerInHistory(partialState)) {
|
|
132
|
+
// Re-sync the drawer entry in history to correct it if it was wrong
|
|
133
|
+
state = removeDrawerFromHistory(state);
|
|
134
|
+
state = addDrawerToHistory(state);
|
|
116
135
|
}
|
|
117
136
|
|
|
118
137
|
return { ...state,
|
|
138
|
+
default: defaultStatus,
|
|
119
139
|
type: 'drawer',
|
|
120
140
|
key: `drawer-${(0, _nonSecure.nanoid)()}`
|
|
121
141
|
};
|
|
@@ -123,11 +143,6 @@ function DrawerRouter({
|
|
|
123
143
|
|
|
124
144
|
getStateForRouteFocus(state, key) {
|
|
125
145
|
const result = router.getStateForRouteFocus(state, key);
|
|
126
|
-
|
|
127
|
-
if (defaultStatus === 'open') {
|
|
128
|
-
return openDrawer(result);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
146
|
return closeDrawer(result);
|
|
132
147
|
},
|
|
133
148
|
|
|
@@ -140,21 +155,27 @@ function DrawerRouter({
|
|
|
140
155
|
return closeDrawer(state);
|
|
141
156
|
|
|
142
157
|
case 'TOGGLE_DRAWER':
|
|
143
|
-
if (
|
|
144
|
-
return
|
|
158
|
+
if (isDrawerInHistory(state)) {
|
|
159
|
+
return removeDrawerFromHistory(state);
|
|
145
160
|
}
|
|
146
161
|
|
|
147
|
-
return
|
|
162
|
+
return addDrawerToHistory(state);
|
|
148
163
|
|
|
149
|
-
case '
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return closeDrawer(state);
|
|
164
|
+
case 'JUMP_TO':
|
|
165
|
+
case 'NAVIGATE':
|
|
166
|
+
{
|
|
167
|
+
const result = router.getStateForAction(state, action, options);
|
|
168
|
+
|
|
169
|
+
if (result != null && result.index !== state.index) {
|
|
170
|
+
return closeDrawer(result);
|
|
157
171
|
}
|
|
172
|
+
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
case 'GO_BACK':
|
|
177
|
+
if (isDrawerInHistory(state)) {
|
|
178
|
+
return removeDrawerFromHistory(state);
|
|
158
179
|
}
|
|
159
180
|
|
|
160
181
|
return router.getStateForAction(state, action, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DrawerRouter.tsx"],"names":["DrawerActions","TabActions","openDrawer","type","closeDrawer","toggleDrawer","isDrawerOpen","state","Boolean","history","some","it","status","filter","DrawerRouter","defaultStatus","rest","router","getInitialState","routeNames","routeParamList","routeGetIdList","stale","key","getRehydratedState","partialState","getStateForRouteFocus","result","getStateForAction","action","options","actionCreators"],"mappings":";;;;;;;;AAAA;;AAEA;;;;;;AA6DO,MAAMA,aAAa,GAAG,EAC3B,GAAGC,qBADwB;;AAE3BC,EAAAA,UAAU,GAAqB;AAC7B,WAAO;AAAEC,MAAAA,IAAI,EAAE;AAAR,KAAP;AACD,GAJ0B;;AAK3BC,EAAAA,WAAW,GAAqB;AAC9B,WAAO;AAAED,MAAAA,IAAI,EAAE;AAAR,KAAP;AACD,GAP0B;;AAQ3BE,EAAAA,YAAY,GAAqB;AAC/B,WAAO;AAAEF,MAAAA,IAAI,EAAE;AAAR,KAAP;AACD;;AAV0B,CAAtB;;;AAaP,MAAMG,YAAY,GAChBC,KADmB;AAAA;;AAAA,SAIhBC,OAAO,mBAACD,KAAK,CAACE,OAAP,mDAAC,eAAeC,IAAf,CAAqBC,EAAD,IAAQA,EAAE,CAACR,IAAH,KAAY,QAAxC,CAAD,CAJS;AAAA,CAArB;;AAMA,MAAMD,UAAU,GACdK,KADiB,IAEwB;AACzC,MAAID,YAAY,CAACC,KAAD,CAAhB,EAAyB;AACvB,WAAOA,KAAP;AACD;;AAED,SAAO,EACL,GAAGA,KADE;AAELE,IAAAA,OAAO,EAAE,CAAC,GAAGF,KAAK,CAACE,OAAV,EAAmB;AAAEN,MAAAA,IAAI,EAAE,QAAR;AAAkBS,MAAAA,MAAM,EAAE;AAA1B,KAAnB;AAFJ,GAAP;AAID,CAXD;;AAaA,MAAMR,WAAW,GACfG,KADkB,IAEuB;AACzC,MAAI,CAACD,YAAY,CAACC,KAAD,CAAjB,EAA0B;AACxB,WAAOA,KAAP;AACD;;AAED,SAAO,EACL,GAAGA,KADE;AAELE,IAAAA,OAAO,EAAEF,KAAK,CAACE,OAAN,CAAcI,MAAd,CAAsBF,EAAD,IAAQA,EAAE,CAACR,IAAH,KAAY,QAAzC;AAFJ,GAAP;AAID,CAXD;;AAae,SAASW,YAAT,CAAsB;AACnCC,EAAAA,aADmC;AAEnC,KAAGC;AAFgC,CAAtB,EAMb;AACA,QAAMC,MAAM,GAAG,wBAAUD,IAAV,CAAf;AAKA,SAAO,EACL,GAAGC,MADE;AAGLd,IAAAA,IAAI,EAAE,QAHD;;AAKLe,IAAAA,eAAe,CAAC;AAAEC,MAAAA,UAAF;AAAcC,MAAAA,cAAd;AAA8BC,MAAAA;AAA9B,KAAD,EAAiD;AAC9D,UAAId,KAAK,GAAGU,MAAM,CAACC,eAAP,CAAuB;AACjCC,QAAAA,UADiC;AAEjCC,QAAAA,cAFiC;AAGjCC,QAAAA;AAHiC,OAAvB,CAAZ;;AAMA,UAAIN,aAAa,KAAK,MAAtB,EAA8B;AAC5BR,QAAAA,KAAK,GAAGL,UAAU,CAACK,KAAD,CAAlB;AACD;;AAED,aAAO,EACL,GAAGA,KADE;AAELe,QAAAA,KAAK,EAAE,KAFF;AAGLnB,QAAAA,IAAI,EAAE,QAHD;AAILoB,QAAAA,GAAG,EAAG,UAAS,wBAAS;AAJnB,OAAP;AAMD,KAtBI;;AAwBLC,IAAAA,kBAAkB,CAChBC,YADgB,EAEhB;AAAEN,MAAAA,UAAF;AAAcC,MAAAA,cAAd;AAA8BC,MAAAA;AAA9B,KAFgB,EAGhB;AACA,UAAII,YAAY,CAACH,KAAb,KAAuB,KAA3B,EAAkC;AAChC,eAAOG,YAAP;AACD;;AAED,UAAIlB,KAAK,GAAGU,MAAM,CAACO,kBAAP,CAA0BC,YAA1B,EAAwC;AAClDN,QAAAA,UADkD;AAElDC,QAAAA,cAFkD;AAGlDC,QAAAA;AAHkD,OAAxC,CAAZ;;AAMA,UAAIf,YAAY,CAACmB,YAAD,CAAhB,EAAgC;AAC9BlB,QAAAA,KAAK,GAAGL,UAAU,CAACK,KAAD,CAAlB;AACD;;AAED,aAAO,EACL,GAAGA,KADE;AAELJ,QAAAA,IAAI,EAAE,QAFD;AAGLoB,QAAAA,GAAG,EAAG,UAAS,wBAAS;AAHnB,OAAP;AAKD,KA/CI;;AAiDLG,IAAAA,qBAAqB,CAACnB,KAAD,EAAQgB,GAAR,EAAa;AAChC,YAAMI,MAAM,GAAGV,MAAM,CAACS,qBAAP,CAA6BnB,KAA7B,EAAoCgB,GAApC,CAAf;;AAEA,UAAIR,aAAa,KAAK,MAAtB,EAA8B;AAC5B,eAAOb,UAAU,CAACyB,MAAD,CAAjB;AACD;;AAED,aAAOvB,WAAW,CAACuB,MAAD,CAAlB;AACD,KAzDI;;AA2DLC,IAAAA,iBAAiB,CAACrB,KAAD,EAAQsB,MAAR,EAAgBC,OAAhB,EAAyB;AACxC,cAAQD,MAAM,CAAC1B,IAAf;AACE,aAAK,aAAL;AACE,iBAAOD,UAAU,CAACK,KAAD,CAAjB;;AAEF,aAAK,cAAL;AACE,iBAAOH,WAAW,CAACG,KAAD,CAAlB;;AAEF,aAAK,eAAL;AACE,cAAID,YAAY,CAACC,KAAD,CAAhB,EAAyB;AACvB,mBAAOH,WAAW,CAACG,KAAD,CAAlB;AACD;;AAED,iBAAOL,UAAU,CAACK,KAAD,CAAjB;;AAEF,aAAK,SAAL;AACE,cAAIQ,aAAa,KAAK,MAAtB,EAA8B;AAC5B,gBAAI,CAACT,YAAY,CAACC,KAAD,CAAjB,EAA0B;AACxB,qBAAOL,UAAU,CAACK,KAAD,CAAjB;AACD;AACF,WAJD,MAIO;AACL,gBAAID,YAAY,CAACC,KAAD,CAAhB,EAAyB;AACvB,qBAAOH,WAAW,CAACG,KAAD,CAAlB;AACD;AACF;;AAED,iBAAOU,MAAM,CAACW,iBAAP,CAAyBrB,KAAzB,EAAgCsB,MAAhC,EAAwCC,OAAxC,CAAP;;AAEF;AACE,iBAAOb,MAAM,CAACW,iBAAP,CAAyBrB,KAAzB,EAAgCsB,MAAhC,EAAwCC,OAAxC,CAAP;AA5BJ;AA8BD,KA1FI;;AA4FLC,IAAAA,cAAc,EAAE/B;AA5FX,GAAP;AA8FD","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport TabRouter, {\n TabActionHelpers,\n TabActions,\n TabActionType,\n TabNavigationState,\n TabRouterOptions,\n} from './TabRouter';\nimport type {\n CommonNavigationAction,\n ParamListBase,\n PartialState,\n Router,\n} from './types';\n\nexport type DrawerActionType =\n | TabActionType\n | {\n type: 'OPEN_DRAWER' | 'CLOSE_DRAWER' | 'TOGGLE_DRAWER';\n source?: string;\n target?: string;\n };\n\nexport type DrawerRouterOptions = TabRouterOptions & {\n defaultStatus?: 'open' | 'closed';\n};\n\nexport type DrawerNavigationState<ParamList extends ParamListBase> = Omit<\n TabNavigationState<ParamList>,\n 'type' | 'history'\n> & {\n /**\n * Type of the router, in this case, it's drawer.\n */\n type: 'drawer';\n /**\n * List of previously visited route keys and drawer open status.\n */\n history: (\n | { type: 'route'; key: string }\n | { type: 'drawer'; status: 'open' }\n )[];\n};\n\nexport type DrawerActionHelpers<ParamList extends ParamListBase> =\n TabActionHelpers<ParamList> & {\n /**\n * Open the drawer sidebar.\n */\n openDrawer(): void;\n\n /**\n * Close the drawer sidebar.\n */\n closeDrawer(): void;\n\n /**\n * Open the drawer sidebar if closed, or close if opened.\n */\n toggleDrawer(): void;\n };\n\nexport const DrawerActions = {\n ...TabActions,\n openDrawer(): DrawerActionType {\n return { type: 'OPEN_DRAWER' };\n },\n closeDrawer(): DrawerActionType {\n return { type: 'CLOSE_DRAWER' };\n },\n toggleDrawer(): DrawerActionType {\n return { type: 'TOGGLE_DRAWER' };\n },\n};\n\nconst isDrawerOpen = (\n state:\n | DrawerNavigationState<ParamListBase>\n | PartialState<DrawerNavigationState<ParamListBase>>\n) => Boolean(state.history?.some((it) => it.type === 'drawer'));\n\nconst openDrawer = (\n state: DrawerNavigationState<ParamListBase>\n): DrawerNavigationState<ParamListBase> => {\n if (isDrawerOpen(state)) {\n return state;\n }\n\n return {\n ...state,\n history: [...state.history, { type: 'drawer', status: 'open' }],\n };\n};\n\nconst closeDrawer = (\n state: DrawerNavigationState<ParamListBase>\n): DrawerNavigationState<ParamListBase> => {\n if (!isDrawerOpen(state)) {\n return state;\n }\n\n return {\n ...state,\n history: state.history.filter((it) => it.type !== 'drawer'),\n };\n};\n\nexport default function DrawerRouter({\n defaultStatus,\n ...rest\n}: DrawerRouterOptions): Router<\n DrawerNavigationState<ParamListBase>,\n DrawerActionType | CommonNavigationAction\n> {\n const router = TabRouter(rest) as unknown as Router<\n DrawerNavigationState<ParamListBase>,\n TabActionType | CommonNavigationAction\n >;\n\n return {\n ...router,\n\n type: 'drawer',\n\n getInitialState({ routeNames, routeParamList, routeGetIdList }) {\n let state = router.getInitialState({\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n if (defaultStatus === 'open') {\n state = openDrawer(state);\n }\n\n return {\n ...state,\n stale: false,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getRehydratedState(\n partialState,\n { routeNames, routeParamList, routeGetIdList }\n ) {\n if (partialState.stale === false) {\n return partialState;\n }\n\n let state = router.getRehydratedState(partialState, {\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n if (isDrawerOpen(partialState)) {\n state = openDrawer(state);\n }\n\n return {\n ...state,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getStateForRouteFocus(state, key) {\n const result = router.getStateForRouteFocus(state, key);\n\n if (defaultStatus === 'open') {\n return openDrawer(result);\n }\n\n return closeDrawer(result);\n },\n\n getStateForAction(state, action, options) {\n switch (action.type) {\n case 'OPEN_DRAWER':\n return openDrawer(state);\n\n case 'CLOSE_DRAWER':\n return closeDrawer(state);\n\n case 'TOGGLE_DRAWER':\n if (isDrawerOpen(state)) {\n return closeDrawer(state);\n }\n\n return openDrawer(state);\n\n case 'GO_BACK':\n if (defaultStatus === 'open') {\n if (!isDrawerOpen(state)) {\n return openDrawer(state);\n }\n } else {\n if (isDrawerOpen(state)) {\n return closeDrawer(state);\n }\n }\n\n return router.getStateForAction(state, action, options);\n\n default:\n return router.getStateForAction(state, action, options);\n }\n },\n\n actionCreators: DrawerActions,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DrawerRouter.tsx"],"names":["DrawerActions","TabActions","openDrawer","type","closeDrawer","toggleDrawer","DrawerRouter","defaultStatus","rest","router","isDrawerInHistory","state","Boolean","history","some","it","addDrawerToHistory","status","removeDrawerFromHistory","filter","getInitialState","routeNames","routeParamList","routeGetIdList","default","stale","key","getRehydratedState","partialState","getStateForRouteFocus","result","getStateForAction","action","options","index","actionCreators"],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport TabRouter, {\n TabActionHelpers,\n TabActions,\n TabActionType,\n TabNavigationState,\n TabRouterOptions,\n} from './TabRouter';\nimport type {\n CommonNavigationAction,\n ParamListBase,\n PartialState,\n Router,\n} from './types';\nexport type DrawerStatus = 'open' | 'closed';\n\nexport type DrawerActionType =\n | TabActionType\n | {\n type: 'OPEN_DRAWER' | 'CLOSE_DRAWER' | 'TOGGLE_DRAWER';\n source?: string;\n target?: string;\n };\n\nexport type DrawerRouterOptions = TabRouterOptions & {\n defaultStatus?: DrawerStatus;\n};\n\nexport type DrawerNavigationState<ParamList extends ParamListBase> = Omit<\n TabNavigationState<ParamList>,\n 'type' | 'history'\n> & {\n /**\n * Type of the router, in this case, it's drawer.\n */\n type: 'drawer';\n /**\n * Default status of the drawer.\n */\n default: DrawerStatus;\n /**\n * List of previously visited route keys and drawer open status.\n */\n history: (\n | { type: 'route'; key: string }\n | { type: 'drawer'; status: DrawerStatus }\n )[];\n};\n\nexport type DrawerActionHelpers<ParamList extends ParamListBase> =\n TabActionHelpers<ParamList> & {\n /**\n * Open the drawer sidebar.\n */\n openDrawer(): void;\n\n /**\n * Close the drawer sidebar.\n */\n closeDrawer(): void;\n\n /**\n * Open the drawer sidebar if closed, or close if opened.\n */\n toggleDrawer(): void;\n };\n\nexport const DrawerActions = {\n ...TabActions,\n openDrawer(): DrawerActionType {\n return { type: 'OPEN_DRAWER' };\n },\n closeDrawer(): DrawerActionType {\n return { type: 'CLOSE_DRAWER' };\n },\n toggleDrawer(): DrawerActionType {\n return { type: 'TOGGLE_DRAWER' };\n },\n};\n\nexport default function DrawerRouter({\n defaultStatus = 'closed',\n ...rest\n}: DrawerRouterOptions): Router<\n DrawerNavigationState<ParamListBase>,\n DrawerActionType | CommonNavigationAction\n> {\n const router = TabRouter(rest) as unknown as Router<\n DrawerNavigationState<ParamListBase>,\n TabActionType | CommonNavigationAction\n >;\n\n const isDrawerInHistory = (\n state:\n | DrawerNavigationState<ParamListBase>\n | PartialState<DrawerNavigationState<ParamListBase>>\n ) => Boolean(state.history?.some((it) => it.type === 'drawer'));\n\n const addDrawerToHistory = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (isDrawerInHistory(state)) {\n return state;\n }\n\n return {\n ...state,\n history: [\n ...state.history,\n {\n type: 'drawer',\n status: defaultStatus === 'open' ? 'closed' : 'open',\n },\n ],\n };\n };\n\n const removeDrawerFromHistory = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (!isDrawerInHistory(state)) {\n return state;\n }\n\n return {\n ...state,\n history: state.history.filter((it) => it.type !== 'drawer'),\n };\n };\n\n const openDrawer = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (defaultStatus === 'open') {\n return removeDrawerFromHistory(state);\n }\n\n return addDrawerToHistory(state);\n };\n\n const closeDrawer = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (defaultStatus === 'open') {\n return addDrawerToHistory(state);\n }\n\n return removeDrawerFromHistory(state);\n };\n\n return {\n ...router,\n\n type: 'drawer',\n\n getInitialState({ routeNames, routeParamList, routeGetIdList }) {\n const state = router.getInitialState({\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n return {\n ...state,\n default: defaultStatus,\n stale: false,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getRehydratedState(\n partialState,\n { routeNames, routeParamList, routeGetIdList }\n ) {\n if (partialState.stale === false) {\n return partialState;\n }\n\n let state = router.getRehydratedState(partialState, {\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n if (isDrawerInHistory(partialState)) {\n // Re-sync the drawer entry in history to correct it if it was wrong\n state = removeDrawerFromHistory(state);\n state = addDrawerToHistory(state);\n }\n\n return {\n ...state,\n default: defaultStatus,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getStateForRouteFocus(state, key) {\n const result = router.getStateForRouteFocus(state, key);\n\n return closeDrawer(result);\n },\n\n getStateForAction(state, action, options) {\n switch (action.type) {\n case 'OPEN_DRAWER':\n return openDrawer(state);\n\n case 'CLOSE_DRAWER':\n return closeDrawer(state);\n\n case 'TOGGLE_DRAWER':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n\n return addDrawerToHistory(state);\n\n case 'JUMP_TO':\n case 'NAVIGATE': {\n const result = router.getStateForAction(state, action, options);\n\n if (result != null && result.index !== state.index) {\n return closeDrawer(result as DrawerNavigationState<ParamListBase>);\n }\n\n return result;\n }\n\n case 'GO_BACK':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n\n return router.getStateForAction(state, action, options);\n\n default:\n return router.getStateForAction(state, action, options);\n }\n },\n\n actionCreators: DrawerActions,\n };\n}\n"]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = StackRouter;
|
|
7
6
|
exports.StackActions = void 0;
|
|
7
|
+
exports.default = StackRouter;
|
|
8
8
|
|
|
9
9
|
var _nonSecure = require("nanoid/non-secure");
|
|
10
10
|
|
|
@@ -33,7 +33,8 @@ const StackActions = {
|
|
|
33
33
|
};
|
|
34
34
|
},
|
|
35
35
|
|
|
36
|
-
pop(
|
|
36
|
+
pop() {
|
|
37
|
+
let count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
37
38
|
return {
|
|
38
39
|
type: 'POP',
|
|
39
40
|
payload: {
|
|
@@ -55,10 +56,11 @@ function StackRouter(options) {
|
|
|
55
56
|
const router = { ..._BaseRouter.default,
|
|
56
57
|
type: 'stack',
|
|
57
58
|
|
|
58
|
-
getInitialState({
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
getInitialState(_ref) {
|
|
60
|
+
let {
|
|
61
|
+
routeNames,
|
|
62
|
+
routeParamList
|
|
63
|
+
} = _ref;
|
|
62
64
|
const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];
|
|
63
65
|
return {
|
|
64
66
|
stale: false,
|
|
@@ -74,10 +76,11 @@ function StackRouter(options) {
|
|
|
74
76
|
};
|
|
75
77
|
},
|
|
76
78
|
|
|
77
|
-
getRehydratedState(partialState, {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
getRehydratedState(partialState, _ref2) {
|
|
80
|
+
let {
|
|
81
|
+
routeNames,
|
|
82
|
+
routeParamList
|
|
83
|
+
} = _ref2;
|
|
81
84
|
let state = partialState;
|
|
82
85
|
|
|
83
86
|
if (state.stale === false) {
|
|
@@ -110,11 +113,13 @@ function StackRouter(options) {
|
|
|
110
113
|
};
|
|
111
114
|
},
|
|
112
115
|
|
|
113
|
-
getStateForRouteNamesChange(state, {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
getStateForRouteNamesChange(state, _ref3) {
|
|
117
|
+
let {
|
|
118
|
+
routeNames,
|
|
119
|
+
routeParamList,
|
|
120
|
+
routeKeyChanges
|
|
121
|
+
} = _ref3;
|
|
122
|
+
const routes = state.routes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
|
|
118
123
|
|
|
119
124
|
if (routes.length === 0) {
|
|
120
125
|
const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["StackRouter.tsx"],"names":["StackActions","replace","name","params","type","payload","push","pop","count","popToTop","StackRouter","options","router","BaseRouter","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","target","source","i","getId","routeGetIdList","id","find","max","concat","path","merge","actionCreators"],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport BaseRouter from './BaseRouter';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationState,\n ParamListBase,\n Route,\n Router,\n} from './types';\n\nexport type StackActionType =\n | {\n type: 'REPLACE';\n payload: { name: string; key?: string | undefined; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'PUSH';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP';\n payload: { count: number };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO_TOP';\n source?: string;\n target?: string;\n };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<ParamList extends ParamListBase> =\n NavigationState<ParamList> & {\n /**\n * Type of the router, in this case, it's stack.\n */\n type: 'stack';\n };\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Replace the current route with a new one.\n *\n * @param name Route name of the new route.\n * @param [params] Params object for the new route.\n */\n replace<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Push a new screen onto the stack.\n *\n * @param name Name of the route for the tab.\n * @param [params] Params object for the route.\n */\n push<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Pop a screen from the stack.\n */\n pop(count?: number): void;\n\n /**\n * Pop to the first route in the stack, dismissing all other screens.\n */\n popToTop(): void;\n};\n\nexport const StackActions = {\n replace(name: string, params?: object): StackActionType {\n return { type: 'REPLACE', payload: { name, params } };\n },\n push(name: string, params?: object): StackActionType {\n return { type: 'PUSH', payload: { name, params } };\n },\n pop(count: number = 1): StackActionType {\n return { type: 'POP', payload: { count } };\n },\n popToTop(): StackActionType {\n return { type: 'POP_TO_TOP' };\n },\n};\n\nexport default function StackRouter(options: StackRouterOptions) {\n const router: Router<\n StackNavigationState<ParamListBase>,\n CommonNavigationAction | StackActionType\n > = {\n ...BaseRouter,\n\n type: 'stack',\n\n getInitialState({ routeNames, routeParamList }) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: 0,\n routeNames,\n routes: [\n {\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n },\n ],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n let state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = state.routes\n .filter((route) => routeNames.includes(route.name))\n .map(\n (route) =>\n ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n } as Route<string>)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: routes.length - 1,\n routeNames,\n routes,\n };\n },\n\n getStateForRouteNamesChange(state, { routeNames, routeParamList }) {\n const routes = state.routes.filter((route) =>\n routeNames.includes(route.name)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n ...state,\n routeNames,\n routes,\n index: Math.min(state.index, routes.length - 1),\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return {\n ...state,\n index,\n routes: state.routes.slice(0, index + 1),\n };\n },\n\n getStateForAction(state, action, options) {\n const { routeParamList } = options;\n\n switch (action.type) {\n case 'REPLACE': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index === -1) {\n return null;\n }\n\n const { name, key, params } = action.payload;\n\n if (!state.routeNames.includes(name)) {\n return null;\n }\n\n return {\n ...state,\n routes: state.routes.map((route, i) =>\n i === index\n ? {\n key: key !== undefined ? key : `${name}-${nanoid()}`,\n name,\n params:\n routeParamList[name] !== undefined\n ? {\n ...routeParamList[name],\n ...params,\n }\n : params,\n }\n : route\n ),\n };\n }\n\n case 'PUSH':\n if (state.routeNames.includes(action.payload.name)) {\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n const route = id\n ? state.routes.find(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n )\n : undefined;\n\n let routes: Route<string>[];\n\n if (route) {\n routes = state.routes.filter((r) => r.key !== route.key);\n routes.push({\n ...route,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n });\n } else {\n routes = [\n ...state.routes,\n {\n key: `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n }\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n\n case 'POP': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index > 0) {\n const count = Math.max(index - action.payload.count + 1, 1);\n const routes = state.routes\n .slice(0, count)\n .concat(state.routes.slice(index + 1));\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n }\n\n case 'POP_TO_TOP':\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: state.routes.length - 1 },\n },\n options\n );\n\n case 'NAVIGATE':\n if (\n action.payload.name !== undefined &&\n !state.routeNames.includes(action.payload.name)\n ) {\n return null;\n }\n\n if (action.payload.key || action.payload.name) {\n // If the route already exists, navigate to that\n let index = -1;\n\n const getId =\n // `getId` and `key` can't be used together\n action.payload.key === undefined &&\n action.payload.name !== undefined\n ? options.routeGetIdList[action.payload.name]\n : undefined;\n const id = getId?.({ params: action.payload.params });\n\n if (id) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n );\n } else if (\n (state.routes[state.index].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[state.index].key === action.payload.key\n ) {\n index = state.index;\n } else {\n for (let i = state.routes.length - 1; i >= 0; i--) {\n if (\n (state.routes[i].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[i].key === action.payload.key\n ) {\n index = i;\n break;\n }\n }\n }\n\n if (\n index === -1 &&\n action.payload.key &&\n action.payload.name === undefined\n ) {\n return null;\n }\n\n if (index === -1 && action.payload.name !== undefined) {\n const routes = [\n ...state.routes,\n {\n key:\n action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n path: action.payload.path,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n\n return {\n ...state,\n routes,\n index: routes.length - 1,\n };\n }\n\n const route = state.routes[index];\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined ||\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params =\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...action.payload.params,\n }\n : action.payload.params;\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ||\n (action.payload.path && action.payload.path !== route.path)\n ? {\n ...route,\n path: action.payload.path ?? route.path,\n params,\n }\n : state.routes[index],\n ],\n };\n }\n\n return null;\n\n case 'GO_BACK':\n if (state.index > 0) {\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: 1 },\n target: action.target,\n source: action.source,\n },\n options\n );\n }\n\n return null;\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: StackActions,\n };\n\n return router;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["StackRouter.tsx"],"names":["StackActions","replace","name","params","type","payload","push","pop","count","popToTop","StackRouter","options","router","BaseRouter","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","routeKeyChanges","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","target","source","i","getId","routeGetIdList","id","find","max","concat","path","merge","actionCreators"],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport BaseRouter from './BaseRouter';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationState,\n ParamListBase,\n Route,\n Router,\n} from './types';\n\nexport type StackActionType =\n | {\n type: 'REPLACE';\n payload: { name: string; key?: string | undefined; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'PUSH';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP';\n payload: { count: number };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO_TOP';\n source?: string;\n target?: string;\n };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<ParamList extends ParamListBase> =\n NavigationState<ParamList> & {\n /**\n * Type of the router, in this case, it's stack.\n */\n type: 'stack';\n };\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Replace the current route with a new one.\n *\n * @param name Route name of the new route.\n * @param [params] Params object for the new route.\n */\n replace<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Push a new screen onto the stack.\n *\n * @param name Name of the route for the tab.\n * @param [params] Params object for the route.\n */\n push<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Pop a screen from the stack.\n */\n pop(count?: number): void;\n\n /**\n * Pop to the first route in the stack, dismissing all other screens.\n */\n popToTop(): void;\n};\n\nexport const StackActions = {\n replace(name: string, params?: object): StackActionType {\n return { type: 'REPLACE', payload: { name, params } };\n },\n push(name: string, params?: object): StackActionType {\n return { type: 'PUSH', payload: { name, params } };\n },\n pop(count: number = 1): StackActionType {\n return { type: 'POP', payload: { count } };\n },\n popToTop(): StackActionType {\n return { type: 'POP_TO_TOP' };\n },\n};\n\nexport default function StackRouter(options: StackRouterOptions) {\n const router: Router<\n StackNavigationState<ParamListBase>,\n CommonNavigationAction | StackActionType\n > = {\n ...BaseRouter,\n\n type: 'stack',\n\n getInitialState({ routeNames, routeParamList }) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: 0,\n routeNames,\n routes: [\n {\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n },\n ],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n let state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = state.routes\n .filter((route) => routeNames.includes(route.name))\n .map(\n (route) =>\n ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n } as Route<string>)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: routes.length - 1,\n routeNames,\n routes,\n };\n },\n\n getStateForRouteNamesChange(\n state,\n { routeNames, routeParamList, routeKeyChanges }\n ) {\n const routes = state.routes.filter(\n (route) =>\n routeNames.includes(route.name) &&\n !routeKeyChanges.includes(route.name)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n ...state,\n routeNames,\n routes,\n index: Math.min(state.index, routes.length - 1),\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return {\n ...state,\n index,\n routes: state.routes.slice(0, index + 1),\n };\n },\n\n getStateForAction(state, action, options) {\n const { routeParamList } = options;\n\n switch (action.type) {\n case 'REPLACE': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index === -1) {\n return null;\n }\n\n const { name, key, params } = action.payload;\n\n if (!state.routeNames.includes(name)) {\n return null;\n }\n\n return {\n ...state,\n routes: state.routes.map((route, i) =>\n i === index\n ? {\n key: key !== undefined ? key : `${name}-${nanoid()}`,\n name,\n params:\n routeParamList[name] !== undefined\n ? {\n ...routeParamList[name],\n ...params,\n }\n : params,\n }\n : route\n ),\n };\n }\n\n case 'PUSH':\n if (state.routeNames.includes(action.payload.name)) {\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n const route = id\n ? state.routes.find(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n )\n : undefined;\n\n let routes: Route<string>[];\n\n if (route) {\n routes = state.routes.filter((r) => r.key !== route.key);\n routes.push({\n ...route,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n });\n } else {\n routes = [\n ...state.routes,\n {\n key: `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n }\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n\n case 'POP': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index > 0) {\n const count = Math.max(index - action.payload.count + 1, 1);\n const routes = state.routes\n .slice(0, count)\n .concat(state.routes.slice(index + 1));\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n }\n\n case 'POP_TO_TOP':\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: state.routes.length - 1 },\n },\n options\n );\n\n case 'NAVIGATE':\n if (\n action.payload.name !== undefined &&\n !state.routeNames.includes(action.payload.name)\n ) {\n return null;\n }\n\n if (action.payload.key || action.payload.name) {\n // If the route already exists, navigate to that\n let index = -1;\n\n const getId =\n // `getId` and `key` can't be used together\n action.payload.key === undefined &&\n action.payload.name !== undefined\n ? options.routeGetIdList[action.payload.name]\n : undefined;\n const id = getId?.({ params: action.payload.params });\n\n if (id) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n );\n } else if (\n (state.routes[state.index].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[state.index].key === action.payload.key\n ) {\n index = state.index;\n } else {\n for (let i = state.routes.length - 1; i >= 0; i--) {\n if (\n (state.routes[i].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[i].key === action.payload.key\n ) {\n index = i;\n break;\n }\n }\n }\n\n if (\n index === -1 &&\n action.payload.key &&\n action.payload.name === undefined\n ) {\n return null;\n }\n\n if (index === -1 && action.payload.name !== undefined) {\n const routes = [\n ...state.routes,\n {\n key:\n action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n path: action.payload.path,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n\n return {\n ...state,\n routes,\n index: routes.length - 1,\n };\n }\n\n const route = state.routes[index];\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined ||\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params =\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...action.payload.params,\n }\n : action.payload.params;\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ||\n (action.payload.path && action.payload.path !== route.path)\n ? {\n ...route,\n path: action.payload.path ?? route.path,\n params,\n }\n : state.routes[index],\n ],\n };\n }\n\n return null;\n\n case 'GO_BACK':\n if (state.index > 0) {\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: 1 },\n target: action.target,\n source: action.source,\n },\n options\n );\n }\n\n return null;\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: StackActions,\n };\n\n return router;\n}\n"]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = TabRouter;
|
|
7
6
|
exports.TabActions = void 0;
|
|
7
|
+
exports.default = TabRouter;
|
|
8
8
|
|
|
9
9
|
var _nonSecure = require("nanoid/non-secure");
|
|
10
10
|
|
|
@@ -95,17 +95,19 @@ const changeIndex = (state, index, backBehavior, initialRouteName) => {
|
|
|
95
95
|
};
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
function TabRouter({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
function TabRouter(_ref) {
|
|
99
|
+
let {
|
|
100
|
+
initialRouteName,
|
|
101
|
+
backBehavior = 'firstRoute'
|
|
102
|
+
} = _ref;
|
|
102
103
|
const router = { ..._BaseRouter.default,
|
|
103
104
|
type: 'tab',
|
|
104
105
|
|
|
105
|
-
getInitialState({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
getInitialState(_ref2) {
|
|
107
|
+
let {
|
|
108
|
+
routeNames,
|
|
109
|
+
routeParamList
|
|
110
|
+
} = _ref2;
|
|
109
111
|
const index = initialRouteName !== undefined && routeNames.includes(initialRouteName) ? routeNames.indexOf(initialRouteName) : 0;
|
|
110
112
|
const routes = routeNames.map(name => ({
|
|
111
113
|
name,
|
|
@@ -124,12 +126,13 @@ function TabRouter({
|
|
|
124
126
|
};
|
|
125
127
|
},
|
|
126
128
|
|
|
127
|
-
getRehydratedState(partialState, {
|
|
128
|
-
routeNames,
|
|
129
|
-
routeParamList
|
|
130
|
-
}) {
|
|
129
|
+
getRehydratedState(partialState, _ref3) {
|
|
131
130
|
var _state$routes, _state$index, _state$history$filter, _state$history;
|
|
132
131
|
|
|
132
|
+
let {
|
|
133
|
+
routeNames,
|
|
134
|
+
routeParamList
|
|
135
|
+
} = _ref3;
|
|
133
136
|
let state = partialState;
|
|
134
137
|
|
|
135
138
|
if (state.stale === false) {
|
|
@@ -159,11 +162,13 @@ function TabRouter({
|
|
|
159
162
|
}, index, backBehavior, initialRouteName);
|
|
160
163
|
},
|
|
161
164
|
|
|
162
|
-
getStateForRouteNamesChange(state, {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
getStateForRouteNamesChange(state, _ref4) {
|
|
166
|
+
let {
|
|
167
|
+
routeNames,
|
|
168
|
+
routeParamList,
|
|
169
|
+
routeKeyChanges
|
|
170
|
+
} = _ref4;
|
|
171
|
+
const routes = routeNames.map(name => state.routes.find(r => r.name === name && !routeKeyChanges.includes(r.name)) || {
|
|
167
172
|
name,
|
|
168
173
|
key: `${name}-${(0, _nonSecure.nanoid)()}`,
|
|
169
174
|
params: routeParamList[name]
|
|
@@ -194,9 +199,11 @@ function TabRouter({
|
|
|
194
199
|
return changeIndex(state, index, backBehavior, initialRouteName);
|
|
195
200
|
},
|
|
196
201
|
|
|
197
|
-
getStateForAction(state, action, {
|
|
198
|
-
|
|
199
|
-
|
|
202
|
+
getStateForAction(state, action, _ref5) {
|
|
203
|
+
let {
|
|
204
|
+
routeParamList
|
|
205
|
+
} = _ref5;
|
|
206
|
+
|
|
200
207
|
switch (action.type) {
|
|
201
208
|
case 'JUMP_TO':
|
|
202
209
|
case 'NAVIGATE':
|