@tarojs/router 4.0.0-alpha.0 → 4.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +11 -4
- package/dist/api.js +30 -22
- package/dist/events/resize.d.ts +1 -1
- package/dist/events/resize.js +15 -7
- package/dist/events/scroll.d.ts +1 -1
- package/dist/events/scroll.js +4 -1
- package/dist/history.d.ts +22 -1
- package/dist/history.js +20 -8
- package/dist/index.cjs.js +767 -321
- package/dist/index.d.ts +6 -1
- package/dist/index.esm.js +727 -293
- package/dist/index.js +52 -4
- package/dist/navigationBar.d.ts +2 -0
- package/dist/navigationBar.js +44 -0
- package/dist/router/index.js +7 -3
- package/dist/router/mpa.d.ts +2 -1
- package/dist/router/mpa.js +29 -19
- package/dist/router/multi-page.d.ts +5 -2
- package/dist/router/multi-page.js +27 -43
- package/dist/router/navigation-bar.d.ts +36 -0
- package/dist/router/navigation-bar.js +252 -0
- package/dist/router/page.d.ts +11 -4
- package/dist/router/page.js +62 -59
- package/dist/router/spa.d.ts +2 -1
- package/dist/router/spa.js +57 -31
- package/dist/router/stack.d.ts +1 -1
- package/dist/router/stack.js +2 -1
- package/dist/style.d.ts +6 -1
- package/dist/style.js +106 -7
- package/dist/tabbar.d.ts +2 -1
- package/dist/tabbar.js +4 -3
- package/dist/utils/index.d.ts +1 -8
- package/dist/utils/index.js +5 -20
- package/dist/utils/navigate.d.ts +9 -5
- package/dist/utils/navigate.js +24 -37
- package/package.json +28 -27
- package/types/api.d.ts +5 -0
- package/types/component.d.ts +5 -0
- package/types/taro.d.ts +8 -0
- package/dist/index.cjs.d.ts +0 -22
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.d.ts +0 -22
- package/dist/index.esm.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -154,7 +154,14 @@ See `/LICENSE` for details of the license.
|
|
|
154
154
|
|
|
155
155
|
==================
|
|
156
156
|
|
|
157
|
-
MIT (
|
|
158
|
-
The following files embed [
|
|
159
|
-
`/packages/taro-components
|
|
160
|
-
See `/LICENSE` for details of the license.
|
|
157
|
+
MIT (weui):
|
|
158
|
+
The following files embed [weui](https://github.com/Tencent/weui) MIT:
|
|
159
|
+
`/packages/taro-components/src/components/*.scss`
|
|
160
|
+
See `/LICENSE.txt` for details of the license.
|
|
161
|
+
|
|
162
|
+
==================
|
|
163
|
+
|
|
164
|
+
Apache-2.0 (intersection-observer):
|
|
165
|
+
The following files embed [intersection-observer](https://github.com/GoogleChromeLabs/intersection-observer) Apache-2.0:
|
|
166
|
+
`/packages/taro-api/src/polyfill/intersection-observer.ts`
|
|
167
|
+
See `/LICENSE.txt` for details of the license.
|
package/dist/api.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { addLeadingSlash } from '@tarojs/runtime';
|
|
3
|
+
import { EventChannel } from '@tarojs/shared';
|
|
10
4
|
import { parsePath } from 'history';
|
|
11
|
-
import { history, prependBasename } from './history';
|
|
12
|
-
import { RouterConfig } from './router';
|
|
13
|
-
import stacks from './router/stack';
|
|
14
|
-
import {
|
|
5
|
+
import { history, prependBasename } from './history.js';
|
|
6
|
+
import { RouterConfig } from './router/index.js';
|
|
7
|
+
import stacks from './router/stack.js';
|
|
8
|
+
import { routesAlias } from './utils/index.js';
|
|
9
|
+
|
|
10
|
+
const routeEvtChannel = EventChannel.routeChannel;
|
|
15
11
|
function processNavigateUrl(option) {
|
|
16
12
|
var _a;
|
|
17
13
|
const pathPieces = parsePath(option.url);
|
|
@@ -20,13 +16,14 @@ function processNavigateUrl(option) {
|
|
|
20
16
|
const parts = routesAlias.getOrigin(history.location.pathname).split('/');
|
|
21
17
|
parts.pop();
|
|
22
18
|
pathPieces.pathname.split('/').forEach((item) => {
|
|
23
|
-
if (item === '.')
|
|
19
|
+
if (item === '.')
|
|
24
20
|
return;
|
|
25
|
-
}
|
|
26
21
|
item === '..' ? parts.pop() : parts.push(item);
|
|
27
22
|
});
|
|
28
23
|
pathPieces.pathname = parts.join('/');
|
|
29
24
|
}
|
|
25
|
+
// 确保是 / 开头的路径
|
|
26
|
+
pathPieces.pathname = addLeadingSlash(pathPieces.pathname);
|
|
30
27
|
// 处理自定义路由
|
|
31
28
|
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname));
|
|
32
29
|
// 处理 basename
|
|
@@ -43,6 +40,10 @@ function navigate(option, method) {
|
|
|
43
40
|
const { success, complete, fail } = option;
|
|
44
41
|
const unListen = history.listen(() => {
|
|
45
42
|
const res = { errMsg: `${method}:ok` };
|
|
43
|
+
if (method === 'navigateTo') {
|
|
44
|
+
res.eventChannel = routeEvtChannel;
|
|
45
|
+
routeEvtChannel.addEvents(option.events);
|
|
46
|
+
}
|
|
46
47
|
success === null || success === void 0 ? void 0 : success(res);
|
|
47
48
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
48
49
|
resolve(res);
|
|
@@ -77,33 +78,40 @@ function navigate(option, method) {
|
|
|
77
78
|
const res = { errMsg: `${method}:fail ${error.message || error}` };
|
|
78
79
|
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
79
80
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
80
|
-
|
|
81
|
+
if (fail || complete) {
|
|
82
|
+
return resolve(res);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return reject(res);
|
|
86
|
+
}
|
|
81
87
|
}
|
|
82
88
|
});
|
|
83
89
|
});
|
|
84
90
|
}
|
|
85
|
-
|
|
91
|
+
function navigateTo(option) {
|
|
86
92
|
return navigate(option, 'navigateTo');
|
|
87
93
|
}
|
|
88
|
-
|
|
94
|
+
function redirectTo(option) {
|
|
89
95
|
return navigate(option, 'redirectTo');
|
|
90
96
|
}
|
|
91
|
-
|
|
97
|
+
function navigateBack(option = { delta: 1 }) {
|
|
92
98
|
if (!option.delta || option.delta < 1) {
|
|
93
99
|
option.delta = 1;
|
|
94
100
|
}
|
|
95
101
|
return navigate(option, 'navigateBack');
|
|
96
102
|
}
|
|
97
|
-
|
|
103
|
+
function switchTab(option) {
|
|
98
104
|
return navigate(option, 'switchTab');
|
|
99
105
|
}
|
|
100
|
-
|
|
106
|
+
function reLaunch(option) {
|
|
101
107
|
return navigate(option, 'reLaunch');
|
|
102
108
|
}
|
|
103
|
-
|
|
109
|
+
function getCurrentPages() {
|
|
104
110
|
if (process.env.NODE_ENV !== 'production' && RouterConfig.mode === 'multi') {
|
|
105
111
|
console.warn('多页面路由模式不支持使用 getCurrentPages 方法!');
|
|
106
112
|
}
|
|
107
113
|
const pages = stacks.get();
|
|
108
114
|
return pages.map(e => { var _a; return (Object.assign(Object.assign({}, e), { route: ((_a = e.path) === null || _a === void 0 ? void 0 : _a.replace(/\?.*/g, '')) || '' })); });
|
|
109
115
|
}
|
|
116
|
+
|
|
117
|
+
export { getCurrentPages, navigateBack, navigateTo, reLaunch, redirectTo, switchTab };
|
package/dist/events/resize.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { PageInstance } from '@tarojs/runtime';
|
|
1
|
+
import type { PageInstance } from '@tarojs/runtime';
|
|
2
2
|
export declare function bindPageResize(page: PageInstance): void;
|
package/dist/events/resize.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
let pageResizeFn;
|
|
2
|
-
|
|
2
|
+
function bindPageResize(page) {
|
|
3
3
|
pageResizeFn && window.removeEventListener('resize', pageResizeFn);
|
|
4
4
|
pageResizeFn = function () {
|
|
5
|
-
page.onResize
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
if (page.onResize) {
|
|
6
|
+
const mediaQuery = window.matchMedia('(orientation: portrait)');
|
|
7
|
+
page.onResize({
|
|
8
|
+
deviceOrientation: mediaQuery.matches ? 'portrait' : 'landscape',
|
|
9
|
+
size: {
|
|
10
|
+
windowHeight: window.innerHeight,
|
|
11
|
+
windowWidth: window.innerWidth,
|
|
12
|
+
screenHeight: window.screen.height,
|
|
13
|
+
screenWidth: window.screen.width,
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
11
17
|
};
|
|
12
18
|
window.addEventListener('resize', pageResizeFn, false);
|
|
13
19
|
}
|
|
20
|
+
|
|
21
|
+
export { bindPageResize };
|
package/dist/events/scroll.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { PageInstance } from '@tarojs/runtime';
|
|
1
|
+
import type { PageInstance } from '@tarojs/runtime';
|
|
2
2
|
export declare function bindPageScroll(page: PageInstance, scrollEl: HTMLElement | Window, distance?: number): void;
|
package/dist/events/scroll.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Current } from '@tarojs/runtime';
|
|
2
|
+
|
|
2
3
|
const pageScrollFn = {};
|
|
3
4
|
let pageDOM = window;
|
|
4
|
-
|
|
5
|
+
function bindPageScroll(page, scrollEl, distance = 50) {
|
|
5
6
|
var _a;
|
|
6
7
|
const pagePath = (page ? page === null || page === void 0 ? void 0 : page.path : (_a = Current.router) === null || _a === void 0 ? void 0 : _a.path);
|
|
7
8
|
pageScrollFn[pagePath] && scrollEl.removeEventListener('scroll', pageScrollFn[pagePath]);
|
|
@@ -32,3 +33,5 @@ function getOffset() {
|
|
|
32
33
|
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
33
34
|
}
|
|
34
35
|
}
|
|
36
|
+
|
|
37
|
+
export { bindPageScroll };
|
package/dist/history.d.ts
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
|
+
import { Action, createBrowserHistory, createHashHistory } from 'history';
|
|
1
2
|
import type { IH5RouterConfig } from '@tarojs/taro/types/compile';
|
|
2
|
-
import type { History } from 'history';
|
|
3
|
+
import type { Blocker, BrowserHistoryOptions, HashHistoryOptions, History, Listener, Location, Path, To } from 'history';
|
|
4
|
+
import type { StateEvent } from '../types/history';
|
|
3
5
|
export declare let history: History;
|
|
6
|
+
declare class MpaHistory implements History {
|
|
7
|
+
action: Action;
|
|
8
|
+
get location(): Location;
|
|
9
|
+
createHref(_to: To): string;
|
|
10
|
+
parseUrl(to: Partial<Path>): string;
|
|
11
|
+
push(to: Partial<Path>, _state?: Record<string, unknown>): void;
|
|
12
|
+
replace(to: Partial<Path>, _state?: Record<string, unknown>): void;
|
|
13
|
+
go(delta: number): void;
|
|
14
|
+
back: () => void;
|
|
15
|
+
forward: () => void;
|
|
16
|
+
listen(listener: Listener): () => void;
|
|
17
|
+
block(_blocker: Blocker): () => void;
|
|
18
|
+
pushState: globalThis.History['pushState'];
|
|
19
|
+
replaceState: globalThis.History['replaceState'];
|
|
20
|
+
eventState(action: Required<StateEvent>['action']): (data: any, unused: string, url?: string | URL | null) => any;
|
|
21
|
+
}
|
|
22
|
+
export declare function setHistory(h: History, base?: string): void;
|
|
23
|
+
export declare function createMpaHistory(_?: HashHistoryOptions | BrowserHistoryOptions): MpaHistory;
|
|
24
|
+
export { createBrowserHistory, createHashHistory };
|
|
4
25
|
export declare function setHistoryMode(mode?: IH5RouterConfig['mode'], base?: string): void;
|
|
5
26
|
export declare function prependBasename(url?: string): string;
|
package/dist/history.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
1
|
+
import { addLeadingSlash } from '@tarojs/runtime';
|
|
2
|
+
import { createBrowserHistory, createHashHistory, Action } from 'history';
|
|
3
|
+
export { createBrowserHistory, createHashHistory } from 'history';
|
|
4
|
+
import { RouterConfig } from './router/index.js';
|
|
5
|
+
|
|
6
|
+
let history;
|
|
4
7
|
let basename = '/';
|
|
5
8
|
class MpaHistory {
|
|
6
9
|
constructor() {
|
|
@@ -23,14 +26,14 @@ class MpaHistory {
|
|
|
23
26
|
}
|
|
24
27
|
parseUrl(to) {
|
|
25
28
|
let url = to.pathname || '';
|
|
26
|
-
if (RouterConfig.isPage(url)) {
|
|
29
|
+
if (RouterConfig.isPage(addLeadingSlash(url))) {
|
|
27
30
|
url += '.html';
|
|
28
31
|
}
|
|
29
32
|
if (to.search) {
|
|
30
33
|
url += `?${to.search}`;
|
|
31
34
|
}
|
|
32
35
|
if (to.hash) {
|
|
33
|
-
url += `#${to.hash}`;
|
|
36
|
+
url += to.hash.startsWith('#') ? to.hash : `#${to.hash}`;
|
|
34
37
|
}
|
|
35
38
|
return url;
|
|
36
39
|
}
|
|
@@ -79,7 +82,14 @@ class MpaHistory {
|
|
|
79
82
|
};
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
|
-
|
|
85
|
+
function setHistory(h, base = '/') {
|
|
86
|
+
history = h;
|
|
87
|
+
basename = base;
|
|
88
|
+
}
|
|
89
|
+
function createMpaHistory(_) {
|
|
90
|
+
return new MpaHistory();
|
|
91
|
+
}
|
|
92
|
+
function setHistoryMode(mode, base = '/') {
|
|
83
93
|
const options = {
|
|
84
94
|
window
|
|
85
95
|
};
|
|
@@ -88,13 +98,15 @@ export function setHistoryMode(mode, base = '/') {
|
|
|
88
98
|
history = createBrowserHistory(options);
|
|
89
99
|
}
|
|
90
100
|
else if (mode === 'multi') {
|
|
91
|
-
history =
|
|
101
|
+
history = createMpaHistory();
|
|
92
102
|
}
|
|
93
103
|
else {
|
|
94
104
|
// default is hash
|
|
95
105
|
history = createHashHistory(options);
|
|
96
106
|
}
|
|
97
107
|
}
|
|
98
|
-
|
|
108
|
+
function prependBasename(url = '') {
|
|
99
109
|
return basename.replace(/\/$/, '') + '/' + url.replace(/^\//, '');
|
|
100
110
|
}
|
|
111
|
+
|
|
112
|
+
export { createMpaHistory, history, prependBasename, setHistory, setHistoryMode };
|