@tarojs/router 3.4.0 → 3.4.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/dist/index.js +110 -92
- package/dist/index.js.map +1 -1
- package/dist/router.esm.js +111 -93
- package/dist/router.esm.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -606,8 +606,8 @@ var RoutesAlias = /*#__PURE__*/function () {
|
|
|
606
606
|
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
607
607
|
return _this.conf.filter(function (arr) {
|
|
608
608
|
return arr.includes(url);
|
|
609
|
-
}).
|
|
610
|
-
p.
|
|
609
|
+
}).reduceRight(function (p, a) {
|
|
610
|
+
p.unshift(a[1]);
|
|
611
611
|
return p;
|
|
612
612
|
}, [url]);
|
|
613
613
|
});
|
|
@@ -651,12 +651,10 @@ var routesAlias = new RoutesAlias();
|
|
|
651
651
|
function processNavigateUrl(option) {
|
|
652
652
|
var _pathPieces$pathname;
|
|
653
653
|
|
|
654
|
-
var pathPieces = J(option.url); //
|
|
654
|
+
var pathPieces = J(option.url); // 处理相对路径
|
|
655
655
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
if (pathPieces !== null && pathPieces !== void 0 && (_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
|
|
659
|
-
var parts = exports.history.location.pathname.split('/');
|
|
656
|
+
if ((_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
|
|
657
|
+
var parts = routesAlias.getOrigin(exports.history.location.pathname).split('/');
|
|
660
658
|
parts.pop();
|
|
661
659
|
pathPieces.pathname.split('/').forEach(function (item) {
|
|
662
660
|
if (item === '.') {
|
|
@@ -666,8 +664,10 @@ function processNavigateUrl(option) {
|
|
|
666
664
|
item === '..' ? parts.pop() : parts.push(item);
|
|
667
665
|
});
|
|
668
666
|
pathPieces.pathname = parts.join('/');
|
|
669
|
-
} //
|
|
667
|
+
} // 处理自定义路由
|
|
668
|
+
|
|
670
669
|
|
|
670
|
+
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理 basename
|
|
671
671
|
|
|
672
672
|
pathPieces.pathname = prependBasename(pathPieces.pathname); // hack fix history v5 bug: https://github.com/remix-run/history/issues/814
|
|
673
673
|
|
|
@@ -1964,81 +1964,12 @@ var filterObj = function filterObj(obj, predicate) {
|
|
|
1964
1964
|
};
|
|
1965
1965
|
})(queryString);
|
|
1966
1966
|
|
|
1967
|
-
var pageScrollFn;
|
|
1968
|
-
var pageDOM = window;
|
|
1969
|
-
function bindPageScroll(page, pageEl, config) {
|
|
1970
|
-
pageEl.removeEventListener('scroll', pageScrollFn);
|
|
1971
|
-
pageDOM = pageEl;
|
|
1972
|
-
var distance = config.onReachBottomDistance || 50;
|
|
1973
|
-
var isReachBottom = false;
|
|
1974
|
-
|
|
1975
|
-
pageScrollFn = function pageScrollFn() {
|
|
1976
|
-
page.onPageScroll && page.onPageScroll({
|
|
1977
|
-
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
1978
|
-
});
|
|
1979
|
-
|
|
1980
|
-
if (isReachBottom && getOffset() > distance) {
|
|
1981
|
-
isReachBottom = false;
|
|
1982
|
-
}
|
|
1983
|
-
|
|
1984
|
-
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
1985
|
-
isReachBottom = true;
|
|
1986
|
-
page.onReachBottom();
|
|
1987
|
-
}
|
|
1988
|
-
};
|
|
1989
|
-
|
|
1990
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1991
|
-
}
|
|
1992
|
-
|
|
1993
|
-
function getOffset() {
|
|
1994
|
-
if (pageDOM instanceof Window) {
|
|
1995
|
-
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
1996
|
-
} else {
|
|
1997
|
-
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
1998
|
-
}
|
|
1999
|
-
}
|
|
2000
|
-
|
|
2001
|
-
var pageResizeFn;
|
|
2002
|
-
function bindPageResize(page) {
|
|
2003
|
-
window.removeEventListener('resize', pageResizeFn);
|
|
2004
|
-
|
|
2005
|
-
pageResizeFn = function pageResizeFn() {
|
|
2006
|
-
page.onResize && page.onResize({
|
|
2007
|
-
size: {
|
|
2008
|
-
windowHeight: window.innerHeight,
|
|
2009
|
-
windowWidth: window.innerWidth
|
|
2010
|
-
}
|
|
2011
|
-
});
|
|
2012
|
-
};
|
|
2013
|
-
|
|
2014
|
-
window.addEventListener('resize', pageResizeFn, false);
|
|
2015
|
-
}
|
|
2016
|
-
|
|
2017
|
-
function bindPageEvents(page, pageEl) {
|
|
2018
|
-
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2019
|
-
|
|
2020
|
-
if (!pageEl) {
|
|
2021
|
-
pageEl = getPageContainer();
|
|
2022
|
-
}
|
|
2023
|
-
|
|
2024
|
-
bindPageScroll(page, pageEl, config);
|
|
2025
|
-
bindPageResize(page);
|
|
2026
|
-
}
|
|
2027
|
-
|
|
2028
|
-
function getPageContainer() {
|
|
2029
|
-
var _Current$page;
|
|
2030
|
-
|
|
2031
|
-
var id = (_Current$page = runtime.Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
2032
|
-
var el = id ? document.getElementById(id) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
2033
|
-
return el || window;
|
|
2034
|
-
}
|
|
2035
|
-
|
|
2036
1967
|
/**
|
|
2037
1968
|
* 插入页面动画需要的样式
|
|
2038
1969
|
*/
|
|
2039
1970
|
function loadAnimateStyle() {
|
|
2040
1971
|
var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
|
|
2041
|
-
var css = "\n.taro_router .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: #fff;\n transform: translate(100%, 0);\n transition: transform ".concat(ms, "ms;\n}\n\n.taro_router .taro_page.taro_tabbar_page,\n.taro_router .taro_page.taro_page_show.taro_page_stationed {\n transform: none;\n}\n\n.taro_router .taro_page.taro_page_show {\n transform: translate(0, 0);\n}");
|
|
1972
|
+
var css = "\n.taro_router .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: #fff;\n transform: translate(100%, 0);\n transition: transform ".concat(ms, "ms;\n z-index: 0;\n}\n\n.taro_router .taro_page.taro_tabbar_page,\n.taro_router .taro_page.taro_page_show.taro_page_stationed {\n transform: none;\n}\n\n.taro_router .taro_page.taro_page_show {\n transform: translate(0, 0);\n}");
|
|
2042
1973
|
var style = document.createElement('style');
|
|
2043
1974
|
style.innerHTML = css;
|
|
2044
1975
|
document.getElementsByTagName('head')[0].appendChild(style);
|
|
@@ -2075,6 +2006,56 @@ function initTabbar(config) {
|
|
|
2075
2006
|
taro.initTabBarApis(config);
|
|
2076
2007
|
}
|
|
2077
2008
|
|
|
2009
|
+
var pageResizeFn;
|
|
2010
|
+
function bindPageResize(page) {
|
|
2011
|
+
window.removeEventListener('resize', pageResizeFn);
|
|
2012
|
+
|
|
2013
|
+
pageResizeFn = function pageResizeFn() {
|
|
2014
|
+
page.onResize && page.onResize({
|
|
2015
|
+
size: {
|
|
2016
|
+
windowHeight: window.innerHeight,
|
|
2017
|
+
windowWidth: window.innerWidth
|
|
2018
|
+
}
|
|
2019
|
+
});
|
|
2020
|
+
};
|
|
2021
|
+
|
|
2022
|
+
window.addEventListener('resize', pageResizeFn, false);
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
var pageScrollFn;
|
|
2026
|
+
var pageDOM = window;
|
|
2027
|
+
function bindPageScroll(page, pageEl) {
|
|
2028
|
+
var distance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
|
|
2029
|
+
pageEl.removeEventListener('scroll', pageScrollFn);
|
|
2030
|
+
pageDOM = pageEl;
|
|
2031
|
+
var isReachBottom = false;
|
|
2032
|
+
|
|
2033
|
+
pageScrollFn = function pageScrollFn() {
|
|
2034
|
+
page.onPageScroll && page.onPageScroll({
|
|
2035
|
+
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
2036
|
+
});
|
|
2037
|
+
|
|
2038
|
+
if (isReachBottom && getOffset() > distance) {
|
|
2039
|
+
isReachBottom = false;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
2043
|
+
isReachBottom = true;
|
|
2044
|
+
page.onReachBottom();
|
|
2045
|
+
}
|
|
2046
|
+
};
|
|
2047
|
+
|
|
2048
|
+
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
2049
|
+
}
|
|
2050
|
+
|
|
2051
|
+
function getOffset() {
|
|
2052
|
+
if (pageDOM instanceof Window) {
|
|
2053
|
+
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
2054
|
+
} else {
|
|
2055
|
+
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2078
2059
|
function setDisplay(el) {
|
|
2079
2060
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2080
2061
|
|
|
@@ -2277,7 +2258,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2277
2258
|
key: "onReady",
|
|
2278
2259
|
value: function onReady(page) {
|
|
2279
2260
|
var onLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
2280
|
-
var pageEl =
|
|
2261
|
+
var pageEl = this.getPageContainer(page);
|
|
2281
2262
|
|
|
2282
2263
|
if (pageEl && !(pageEl !== null && pageEl !== void 0 && pageEl['__isReady'])) {
|
|
2283
2264
|
var _el$componentOnReady, _el$componentOnReady$;
|
|
@@ -2305,7 +2286,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2305
2286
|
|
|
2306
2287
|
stacks.push(page);
|
|
2307
2288
|
var param = this.getQuery(stacks.length, '', page.options);
|
|
2308
|
-
var pageEl =
|
|
2289
|
+
var pageEl = this.getPageContainer(page);
|
|
2309
2290
|
|
|
2310
2291
|
if (pageEl) {
|
|
2311
2292
|
var _page$onShow;
|
|
@@ -2314,14 +2295,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2314
2295
|
this.isTabBar && pageEl.classList.add('taro_tabbar_page');
|
|
2315
2296
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2316
2297
|
(_page$onShow = page.onShow) === null || _page$onShow === void 0 ? void 0 : _page$onShow.call(page);
|
|
2317
|
-
bindPageEvents(page, pageEl, pageConfig);
|
|
2298
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2318
2299
|
} else {
|
|
2319
2300
|
var _page$onLoad;
|
|
2320
2301
|
|
|
2321
2302
|
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page, param, function () {
|
|
2322
2303
|
var _pageEl, _page$onShow2;
|
|
2323
2304
|
|
|
2324
|
-
pageEl =
|
|
2305
|
+
pageEl = _this2.getPageContainer(page);
|
|
2325
2306
|
_this2.isTabBar && ((_pageEl = pageEl) === null || _pageEl === void 0 ? void 0 : _pageEl.classList.add('taro_tabbar_page'));
|
|
2326
2307
|
|
|
2327
2308
|
_this2.addAnimation(pageEl, stacksIndex === 0);
|
|
@@ -2329,7 +2310,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2329
2310
|
_this2.onReady(page, true);
|
|
2330
2311
|
|
|
2331
2312
|
(_page$onShow2 = page.onShow) === null || _page$onShow2 === void 0 ? void 0 : _page$onShow2.call(page);
|
|
2332
|
-
|
|
2313
|
+
|
|
2314
|
+
_this2.bindPageEvents(page, pageEl, pageConfig);
|
|
2333
2315
|
});
|
|
2334
2316
|
}
|
|
2335
2317
|
}
|
|
@@ -2354,7 +2336,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2354
2336
|
}
|
|
2355
2337
|
|
|
2356
2338
|
this.lastUnloadPage = page;
|
|
2357
|
-
var pageEl =
|
|
2339
|
+
var pageEl = this.getPageContainer(page);
|
|
2358
2340
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_stationed');
|
|
2359
2341
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_show');
|
|
2360
2342
|
this.unloadTimer = setTimeout(function () {
|
|
@@ -2366,7 +2348,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2366
2348
|
} else {
|
|
2367
2349
|
var _page$onUnload;
|
|
2368
2350
|
|
|
2369
|
-
var _pageEl2 =
|
|
2351
|
+
var _pageEl2 = this.getPageContainer(page);
|
|
2370
2352
|
|
|
2371
2353
|
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_stationed');
|
|
2372
2354
|
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_show');
|
|
@@ -2384,7 +2366,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2384
2366
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2385
2367
|
if (!page) return;
|
|
2386
2368
|
var param = this.getQuery(stacks.length, '', page.options);
|
|
2387
|
-
var pageEl =
|
|
2369
|
+
var pageEl = this.getPageContainer(page);
|
|
2388
2370
|
|
|
2389
2371
|
if (pageEl) {
|
|
2390
2372
|
var _page$onShow3;
|
|
@@ -2392,21 +2374,22 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2392
2374
|
setDisplay(pageEl);
|
|
2393
2375
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2394
2376
|
(_page$onShow3 = page.onShow) === null || _page$onShow3 === void 0 ? void 0 : _page$onShow3.call(page);
|
|
2395
|
-
bindPageEvents(page, pageEl, pageConfig);
|
|
2377
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2396
2378
|
} else {
|
|
2397
2379
|
var _page$onLoad2;
|
|
2398
2380
|
|
|
2399
2381
|
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page, param, function () {
|
|
2400
2382
|
var _page$onShow4;
|
|
2401
2383
|
|
|
2402
|
-
pageEl =
|
|
2384
|
+
pageEl = _this4.getPageContainer(page);
|
|
2403
2385
|
|
|
2404
2386
|
_this4.addAnimation(pageEl, stacksIndex === 0);
|
|
2405
2387
|
|
|
2406
2388
|
_this4.onReady(page, false);
|
|
2407
2389
|
|
|
2408
2390
|
(_page$onShow4 = page.onShow) === null || _page$onShow4 === void 0 ? void 0 : _page$onShow4.call(page);
|
|
2409
|
-
|
|
2391
|
+
|
|
2392
|
+
_this4.bindPageEvents(page, pageEl, pageConfig);
|
|
2410
2393
|
});
|
|
2411
2394
|
}
|
|
2412
2395
|
}
|
|
@@ -2417,7 +2400,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2417
2400
|
|
|
2418
2401
|
if (!page) return; // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功
|
|
2419
2402
|
|
|
2420
|
-
var pageEl =
|
|
2403
|
+
var pageEl = this.getPageContainer(page);
|
|
2421
2404
|
|
|
2422
2405
|
if (pageEl) {
|
|
2423
2406
|
var _page$onHide;
|
|
@@ -2460,6 +2443,36 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2460
2443
|
pageEl.classList.add('taro_page_stationed');
|
|
2461
2444
|
}
|
|
2462
2445
|
}
|
|
2446
|
+
}, {
|
|
2447
|
+
key: "getPageContainer",
|
|
2448
|
+
value: function getPageContainer(page) {
|
|
2449
|
+
var _Current$page;
|
|
2450
|
+
|
|
2451
|
+
var path = page ? page === null || page === void 0 ? void 0 : page.path : (_Current$page = runtime.Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
2452
|
+
var id = path === null || path === void 0 ? void 0 : path.replace(/([^a-z0-9\u00a0-\uffff_-])/ig, '\\$1');
|
|
2453
|
+
|
|
2454
|
+
if (page) {
|
|
2455
|
+
return document.querySelector(".taro_page#".concat(id));
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2458
|
+
var el = id ? document.querySelector(".taro_page#".concat(id)) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
2459
|
+
return el || window;
|
|
2460
|
+
}
|
|
2461
|
+
}, {
|
|
2462
|
+
key: "bindPageEvents",
|
|
2463
|
+
value: function bindPageEvents(page, pageEl) {
|
|
2464
|
+
var _this$config$window;
|
|
2465
|
+
|
|
2466
|
+
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2467
|
+
|
|
2468
|
+
if (!pageEl) {
|
|
2469
|
+
pageEl = this.getPageContainer();
|
|
2470
|
+
}
|
|
2471
|
+
|
|
2472
|
+
var distance = config.onReachBottomDistance || ((_this$config$window = this.config.window) === null || _this$config$window === void 0 ? void 0 : _this$config$window.onReachBottomDistance) || 50;
|
|
2473
|
+
bindPageScroll(page, pageEl, distance);
|
|
2474
|
+
bindPageResize(page);
|
|
2475
|
+
}
|
|
2463
2476
|
}]);
|
|
2464
2477
|
|
|
2465
2478
|
return PageHandler;
|
|
@@ -2487,6 +2500,8 @@ function createRouter(app, config, framework) {
|
|
|
2487
2500
|
|
|
2488
2501
|
var render = /*#__PURE__*/function () {
|
|
2489
2502
|
var _ref2 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
|
|
2503
|
+
var _config$window;
|
|
2504
|
+
|
|
2490
2505
|
var location, action, element, _app$onPageNotFound, pageConfig, enablePullDownRefresh, _pageConfig$navigatio, currentPage, pathname, shouldLoad, prevIndex, delta, _prevIndex, _delta, _element$default, _runtimeHooks$createP, el, loadConfig, stacksIndex, page;
|
|
2491
2506
|
|
|
2492
2507
|
return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
|
|
@@ -2532,7 +2547,7 @@ function createRouter(app, config, framework) {
|
|
|
2532
2547
|
|
|
2533
2548
|
case 17:
|
|
2534
2549
|
pageConfig = handler.pageConfig;
|
|
2535
|
-
enablePullDownRefresh = false;
|
|
2550
|
+
enablePullDownRefresh = (config === null || config === void 0 ? void 0 : (_config$window = config.window) === null || _config$window === void 0 ? void 0 : _config$window.enablePullDownRefresh) || false;
|
|
2536
2551
|
runtime.eventCenter.trigger('__taroRouterChange', {
|
|
2537
2552
|
toLocation: {
|
|
2538
2553
|
path: handler.pathname
|
|
@@ -2541,7 +2556,10 @@ function createRouter(app, config, framework) {
|
|
|
2541
2556
|
|
|
2542
2557
|
if (pageConfig) {
|
|
2543
2558
|
document.title = (_pageConfig$navigatio = pageConfig.navigationBarTitleText) !== null && _pageConfig$navigatio !== void 0 ? _pageConfig$navigatio : document.title;
|
|
2544
|
-
|
|
2559
|
+
|
|
2560
|
+
if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
|
|
2561
|
+
enablePullDownRefresh = pageConfig.enablePullDownRefresh;
|
|
2562
|
+
}
|
|
2545
2563
|
}
|
|
2546
2564
|
|
|
2547
2565
|
currentPage = runtime.Current.page;
|