@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/router.esm.js
CHANGED
|
@@ -6,7 +6,7 @@ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
|
6
6
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
7
7
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
8
8
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
9
|
-
import {
|
|
9
|
+
import { requestAnimationFrame, Current, container, SERVICE_IDENTIFIER, createPageConfig, stringify, eventCenter } from '@tarojs/runtime';
|
|
10
10
|
import _typeof from '@babel/runtime/helpers/typeof';
|
|
11
11
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
12
12
|
import _createForOfIteratorHelper from '@babel/runtime/helpers/createForOfIteratorHelper';
|
|
@@ -588,8 +588,8 @@ var RoutesAlias = /*#__PURE__*/function () {
|
|
|
588
588
|
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
589
589
|
return _this.conf.filter(function (arr) {
|
|
590
590
|
return arr.includes(url);
|
|
591
|
-
}).
|
|
592
|
-
p.
|
|
591
|
+
}).reduceRight(function (p, a) {
|
|
592
|
+
p.unshift(a[1]);
|
|
593
593
|
return p;
|
|
594
594
|
}, [url]);
|
|
595
595
|
});
|
|
@@ -633,12 +633,10 @@ var routesAlias = new RoutesAlias();
|
|
|
633
633
|
function processNavigateUrl(option) {
|
|
634
634
|
var _pathPieces$pathname;
|
|
635
635
|
|
|
636
|
-
var pathPieces = J(option.url); //
|
|
636
|
+
var pathPieces = J(option.url); // 处理相对路径
|
|
637
637
|
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
if (pathPieces !== null && pathPieces !== void 0 && (_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
|
|
641
|
-
var parts = history.location.pathname.split('/');
|
|
638
|
+
if ((_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
|
|
639
|
+
var parts = routesAlias.getOrigin(history.location.pathname).split('/');
|
|
642
640
|
parts.pop();
|
|
643
641
|
pathPieces.pathname.split('/').forEach(function (item) {
|
|
644
642
|
if (item === '.') {
|
|
@@ -648,8 +646,10 @@ function processNavigateUrl(option) {
|
|
|
648
646
|
item === '..' ? parts.pop() : parts.push(item);
|
|
649
647
|
});
|
|
650
648
|
pathPieces.pathname = parts.join('/');
|
|
651
|
-
} //
|
|
649
|
+
} // 处理自定义路由
|
|
650
|
+
|
|
652
651
|
|
|
652
|
+
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理 basename
|
|
653
653
|
|
|
654
654
|
pathPieces.pathname = prependBasename(pathPieces.pathname); // hack fix history v5 bug: https://github.com/remix-run/history/issues/814
|
|
655
655
|
|
|
@@ -1946,81 +1946,12 @@ var filterObj = function filterObj(obj, predicate) {
|
|
|
1946
1946
|
};
|
|
1947
1947
|
})(queryString);
|
|
1948
1948
|
|
|
1949
|
-
var pageScrollFn;
|
|
1950
|
-
var pageDOM = window;
|
|
1951
|
-
function bindPageScroll(page, pageEl, config) {
|
|
1952
|
-
pageEl.removeEventListener('scroll', pageScrollFn);
|
|
1953
|
-
pageDOM = pageEl;
|
|
1954
|
-
var distance = config.onReachBottomDistance || 50;
|
|
1955
|
-
var isReachBottom = false;
|
|
1956
|
-
|
|
1957
|
-
pageScrollFn = function pageScrollFn() {
|
|
1958
|
-
page.onPageScroll && page.onPageScroll({
|
|
1959
|
-
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
1960
|
-
});
|
|
1961
|
-
|
|
1962
|
-
if (isReachBottom && getOffset() > distance) {
|
|
1963
|
-
isReachBottom = false;
|
|
1964
|
-
}
|
|
1965
|
-
|
|
1966
|
-
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
1967
|
-
isReachBottom = true;
|
|
1968
|
-
page.onReachBottom();
|
|
1969
|
-
}
|
|
1970
|
-
};
|
|
1971
|
-
|
|
1972
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1973
|
-
}
|
|
1974
|
-
|
|
1975
|
-
function getOffset() {
|
|
1976
|
-
if (pageDOM instanceof Window) {
|
|
1977
|
-
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
1978
|
-
} else {
|
|
1979
|
-
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
1980
|
-
}
|
|
1981
|
-
}
|
|
1982
|
-
|
|
1983
|
-
var pageResizeFn;
|
|
1984
|
-
function bindPageResize(page) {
|
|
1985
|
-
window.removeEventListener('resize', pageResizeFn);
|
|
1986
|
-
|
|
1987
|
-
pageResizeFn = function pageResizeFn() {
|
|
1988
|
-
page.onResize && page.onResize({
|
|
1989
|
-
size: {
|
|
1990
|
-
windowHeight: window.innerHeight,
|
|
1991
|
-
windowWidth: window.innerWidth
|
|
1992
|
-
}
|
|
1993
|
-
});
|
|
1994
|
-
};
|
|
1995
|
-
|
|
1996
|
-
window.addEventListener('resize', pageResizeFn, false);
|
|
1997
|
-
}
|
|
1998
|
-
|
|
1999
|
-
function bindPageEvents(page, pageEl) {
|
|
2000
|
-
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2001
|
-
|
|
2002
|
-
if (!pageEl) {
|
|
2003
|
-
pageEl = getPageContainer();
|
|
2004
|
-
}
|
|
2005
|
-
|
|
2006
|
-
bindPageScroll(page, pageEl, config);
|
|
2007
|
-
bindPageResize(page);
|
|
2008
|
-
}
|
|
2009
|
-
|
|
2010
|
-
function getPageContainer() {
|
|
2011
|
-
var _Current$page;
|
|
2012
|
-
|
|
2013
|
-
var id = (_Current$page = Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
2014
|
-
var el = id ? document.getElementById(id) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
2015
|
-
return el || window;
|
|
2016
|
-
}
|
|
2017
|
-
|
|
2018
1949
|
/**
|
|
2019
1950
|
* 插入页面动画需要的样式
|
|
2020
1951
|
*/
|
|
2021
1952
|
function loadAnimateStyle() {
|
|
2022
1953
|
var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
|
|
2023
|
-
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}");
|
|
1954
|
+
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}");
|
|
2024
1955
|
var style = document.createElement('style');
|
|
2025
1956
|
style.innerHTML = css;
|
|
2026
1957
|
document.getElementsByTagName('head')[0].appendChild(style);
|
|
@@ -2057,6 +1988,56 @@ function initTabbar(config) {
|
|
|
2057
1988
|
initTabBarApis(config);
|
|
2058
1989
|
}
|
|
2059
1990
|
|
|
1991
|
+
var pageResizeFn;
|
|
1992
|
+
function bindPageResize(page) {
|
|
1993
|
+
window.removeEventListener('resize', pageResizeFn);
|
|
1994
|
+
|
|
1995
|
+
pageResizeFn = function pageResizeFn() {
|
|
1996
|
+
page.onResize && page.onResize({
|
|
1997
|
+
size: {
|
|
1998
|
+
windowHeight: window.innerHeight,
|
|
1999
|
+
windowWidth: window.innerWidth
|
|
2000
|
+
}
|
|
2001
|
+
});
|
|
2002
|
+
};
|
|
2003
|
+
|
|
2004
|
+
window.addEventListener('resize', pageResizeFn, false);
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
var pageScrollFn;
|
|
2008
|
+
var pageDOM = window;
|
|
2009
|
+
function bindPageScroll(page, pageEl) {
|
|
2010
|
+
var distance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
|
|
2011
|
+
pageEl.removeEventListener('scroll', pageScrollFn);
|
|
2012
|
+
pageDOM = pageEl;
|
|
2013
|
+
var isReachBottom = false;
|
|
2014
|
+
|
|
2015
|
+
pageScrollFn = function pageScrollFn() {
|
|
2016
|
+
page.onPageScroll && page.onPageScroll({
|
|
2017
|
+
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
2018
|
+
});
|
|
2019
|
+
|
|
2020
|
+
if (isReachBottom && getOffset() > distance) {
|
|
2021
|
+
isReachBottom = false;
|
|
2022
|
+
}
|
|
2023
|
+
|
|
2024
|
+
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
2025
|
+
isReachBottom = true;
|
|
2026
|
+
page.onReachBottom();
|
|
2027
|
+
}
|
|
2028
|
+
};
|
|
2029
|
+
|
|
2030
|
+
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
function getOffset() {
|
|
2034
|
+
if (pageDOM instanceof Window) {
|
|
2035
|
+
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
2036
|
+
} else {
|
|
2037
|
+
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2060
2041
|
function setDisplay(el) {
|
|
2061
2042
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2062
2043
|
|
|
@@ -2259,7 +2240,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2259
2240
|
key: "onReady",
|
|
2260
2241
|
value: function onReady(page) {
|
|
2261
2242
|
var onLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
2262
|
-
var pageEl =
|
|
2243
|
+
var pageEl = this.getPageContainer(page);
|
|
2263
2244
|
|
|
2264
2245
|
if (pageEl && !(pageEl !== null && pageEl !== void 0 && pageEl['__isReady'])) {
|
|
2265
2246
|
var _el$componentOnReady, _el$componentOnReady$;
|
|
@@ -2287,7 +2268,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2287
2268
|
|
|
2288
2269
|
stacks.push(page);
|
|
2289
2270
|
var param = this.getQuery(stacks.length, '', page.options);
|
|
2290
|
-
var pageEl =
|
|
2271
|
+
var pageEl = this.getPageContainer(page);
|
|
2291
2272
|
|
|
2292
2273
|
if (pageEl) {
|
|
2293
2274
|
var _page$onShow;
|
|
@@ -2296,14 +2277,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2296
2277
|
this.isTabBar && pageEl.classList.add('taro_tabbar_page');
|
|
2297
2278
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2298
2279
|
(_page$onShow = page.onShow) === null || _page$onShow === void 0 ? void 0 : _page$onShow.call(page);
|
|
2299
|
-
bindPageEvents(page, pageEl, pageConfig);
|
|
2280
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2300
2281
|
} else {
|
|
2301
2282
|
var _page$onLoad;
|
|
2302
2283
|
|
|
2303
2284
|
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page, param, function () {
|
|
2304
2285
|
var _pageEl, _page$onShow2;
|
|
2305
2286
|
|
|
2306
|
-
pageEl =
|
|
2287
|
+
pageEl = _this2.getPageContainer(page);
|
|
2307
2288
|
_this2.isTabBar && ((_pageEl = pageEl) === null || _pageEl === void 0 ? void 0 : _pageEl.classList.add('taro_tabbar_page'));
|
|
2308
2289
|
|
|
2309
2290
|
_this2.addAnimation(pageEl, stacksIndex === 0);
|
|
@@ -2311,7 +2292,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2311
2292
|
_this2.onReady(page, true);
|
|
2312
2293
|
|
|
2313
2294
|
(_page$onShow2 = page.onShow) === null || _page$onShow2 === void 0 ? void 0 : _page$onShow2.call(page);
|
|
2314
|
-
|
|
2295
|
+
|
|
2296
|
+
_this2.bindPageEvents(page, pageEl, pageConfig);
|
|
2315
2297
|
});
|
|
2316
2298
|
}
|
|
2317
2299
|
}
|
|
@@ -2336,7 +2318,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2336
2318
|
}
|
|
2337
2319
|
|
|
2338
2320
|
this.lastUnloadPage = page;
|
|
2339
|
-
var pageEl =
|
|
2321
|
+
var pageEl = this.getPageContainer(page);
|
|
2340
2322
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_stationed');
|
|
2341
2323
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_show');
|
|
2342
2324
|
this.unloadTimer = setTimeout(function () {
|
|
@@ -2348,7 +2330,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2348
2330
|
} else {
|
|
2349
2331
|
var _page$onUnload;
|
|
2350
2332
|
|
|
2351
|
-
var _pageEl2 =
|
|
2333
|
+
var _pageEl2 = this.getPageContainer(page);
|
|
2352
2334
|
|
|
2353
2335
|
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_stationed');
|
|
2354
2336
|
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_show');
|
|
@@ -2366,7 +2348,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2366
2348
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2367
2349
|
if (!page) return;
|
|
2368
2350
|
var param = this.getQuery(stacks.length, '', page.options);
|
|
2369
|
-
var pageEl =
|
|
2351
|
+
var pageEl = this.getPageContainer(page);
|
|
2370
2352
|
|
|
2371
2353
|
if (pageEl) {
|
|
2372
2354
|
var _page$onShow3;
|
|
@@ -2374,21 +2356,22 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2374
2356
|
setDisplay(pageEl);
|
|
2375
2357
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2376
2358
|
(_page$onShow3 = page.onShow) === null || _page$onShow3 === void 0 ? void 0 : _page$onShow3.call(page);
|
|
2377
|
-
bindPageEvents(page, pageEl, pageConfig);
|
|
2359
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2378
2360
|
} else {
|
|
2379
2361
|
var _page$onLoad2;
|
|
2380
2362
|
|
|
2381
2363
|
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page, param, function () {
|
|
2382
2364
|
var _page$onShow4;
|
|
2383
2365
|
|
|
2384
|
-
pageEl =
|
|
2366
|
+
pageEl = _this4.getPageContainer(page);
|
|
2385
2367
|
|
|
2386
2368
|
_this4.addAnimation(pageEl, stacksIndex === 0);
|
|
2387
2369
|
|
|
2388
2370
|
_this4.onReady(page, false);
|
|
2389
2371
|
|
|
2390
2372
|
(_page$onShow4 = page.onShow) === null || _page$onShow4 === void 0 ? void 0 : _page$onShow4.call(page);
|
|
2391
|
-
|
|
2373
|
+
|
|
2374
|
+
_this4.bindPageEvents(page, pageEl, pageConfig);
|
|
2392
2375
|
});
|
|
2393
2376
|
}
|
|
2394
2377
|
}
|
|
@@ -2399,7 +2382,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2399
2382
|
|
|
2400
2383
|
if (!page) return; // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功
|
|
2401
2384
|
|
|
2402
|
-
var pageEl =
|
|
2385
|
+
var pageEl = this.getPageContainer(page);
|
|
2403
2386
|
|
|
2404
2387
|
if (pageEl) {
|
|
2405
2388
|
var _page$onHide;
|
|
@@ -2442,6 +2425,36 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2442
2425
|
pageEl.classList.add('taro_page_stationed');
|
|
2443
2426
|
}
|
|
2444
2427
|
}
|
|
2428
|
+
}, {
|
|
2429
|
+
key: "getPageContainer",
|
|
2430
|
+
value: function getPageContainer(page) {
|
|
2431
|
+
var _Current$page;
|
|
2432
|
+
|
|
2433
|
+
var path = page ? page === null || page === void 0 ? void 0 : page.path : (_Current$page = Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
2434
|
+
var id = path === null || path === void 0 ? void 0 : path.replace(/([^a-z0-9\u00a0-\uffff_-])/ig, '\\$1');
|
|
2435
|
+
|
|
2436
|
+
if (page) {
|
|
2437
|
+
return document.querySelector(".taro_page#".concat(id));
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
var el = id ? document.querySelector(".taro_page#".concat(id)) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
2441
|
+
return el || window;
|
|
2442
|
+
}
|
|
2443
|
+
}, {
|
|
2444
|
+
key: "bindPageEvents",
|
|
2445
|
+
value: function bindPageEvents(page, pageEl) {
|
|
2446
|
+
var _this$config$window;
|
|
2447
|
+
|
|
2448
|
+
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2449
|
+
|
|
2450
|
+
if (!pageEl) {
|
|
2451
|
+
pageEl = this.getPageContainer();
|
|
2452
|
+
}
|
|
2453
|
+
|
|
2454
|
+
var distance = config.onReachBottomDistance || ((_this$config$window = this.config.window) === null || _this$config$window === void 0 ? void 0 : _this$config$window.onReachBottomDistance) || 50;
|
|
2455
|
+
bindPageScroll(page, pageEl, distance);
|
|
2456
|
+
bindPageResize(page);
|
|
2457
|
+
}
|
|
2445
2458
|
}]);
|
|
2446
2459
|
|
|
2447
2460
|
return PageHandler;
|
|
@@ -2469,6 +2482,8 @@ function createRouter(app, config, framework) {
|
|
|
2469
2482
|
|
|
2470
2483
|
var render = /*#__PURE__*/function () {
|
|
2471
2484
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
2485
|
+
var _config$window;
|
|
2486
|
+
|
|
2472
2487
|
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;
|
|
2473
2488
|
|
|
2474
2489
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -2514,7 +2529,7 @@ function createRouter(app, config, framework) {
|
|
|
2514
2529
|
|
|
2515
2530
|
case 17:
|
|
2516
2531
|
pageConfig = handler.pageConfig;
|
|
2517
|
-
enablePullDownRefresh = false;
|
|
2532
|
+
enablePullDownRefresh = (config === null || config === void 0 ? void 0 : (_config$window = config.window) === null || _config$window === void 0 ? void 0 : _config$window.enablePullDownRefresh) || false;
|
|
2518
2533
|
eventCenter.trigger('__taroRouterChange', {
|
|
2519
2534
|
toLocation: {
|
|
2520
2535
|
path: handler.pathname
|
|
@@ -2523,7 +2538,10 @@ function createRouter(app, config, framework) {
|
|
|
2523
2538
|
|
|
2524
2539
|
if (pageConfig) {
|
|
2525
2540
|
document.title = (_pageConfig$navigatio = pageConfig.navigationBarTitleText) !== null && _pageConfig$navigatio !== void 0 ? _pageConfig$navigatio : document.title;
|
|
2526
|
-
|
|
2541
|
+
|
|
2542
|
+
if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
|
|
2543
|
+
enablePullDownRefresh = pageConfig.enablePullDownRefresh;
|
|
2544
|
+
}
|
|
2527
2545
|
}
|
|
2528
2546
|
|
|
2529
2547
|
currentPage = Current.page;
|