@tarojs/router 3.4.0-beta.1 → 3.4.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/dist/index.js +173 -104
- package/dist/index.js.map +1 -1
- package/dist/router.esm.js +174 -105
- package/dist/router.esm.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -483,8 +483,10 @@ var Stacks = /*#__PURE__*/function () {
|
|
|
483
483
|
set: function set(delta) {
|
|
484
484
|
if (delta > 0) {
|
|
485
485
|
this.backDelta = delta;
|
|
486
|
-
} else {
|
|
486
|
+
} else if (this.backDelta > 0) {
|
|
487
487
|
--this.backDelta;
|
|
488
|
+
} else {
|
|
489
|
+
this.backDelta = 0;
|
|
488
490
|
}
|
|
489
491
|
}
|
|
490
492
|
}, {
|
|
@@ -525,10 +527,11 @@ var Stacks = /*#__PURE__*/function () {
|
|
|
525
527
|
value: function getDelta(pathname) {
|
|
526
528
|
if (this.backDelta >= 1) {
|
|
527
529
|
return this.backDelta;
|
|
528
|
-
}
|
|
530
|
+
}
|
|
529
531
|
|
|
532
|
+
var index = this.getLastIndex(pathname); // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
|
|
530
533
|
|
|
531
|
-
return
|
|
534
|
+
return index > 0 ? index : 1;
|
|
532
535
|
}
|
|
533
536
|
}, {
|
|
534
537
|
key: "getPrevIndex",
|
|
@@ -603,8 +606,8 @@ var RoutesAlias = /*#__PURE__*/function () {
|
|
|
603
606
|
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
604
607
|
return _this.conf.filter(function (arr) {
|
|
605
608
|
return arr.includes(url);
|
|
606
|
-
}).
|
|
607
|
-
p.
|
|
609
|
+
}).reduceRight(function (p, a) {
|
|
610
|
+
p.unshift(a[1]);
|
|
608
611
|
return p;
|
|
609
612
|
}, [url]);
|
|
610
613
|
});
|
|
@@ -648,12 +651,10 @@ var routesAlias = new RoutesAlias();
|
|
|
648
651
|
function processNavigateUrl(option) {
|
|
649
652
|
var _pathPieces$pathname;
|
|
650
653
|
|
|
651
|
-
var pathPieces = J(option.url); //
|
|
652
|
-
|
|
653
|
-
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理相对路径
|
|
654
|
+
var pathPieces = J(option.url); // 处理相对路径
|
|
654
655
|
|
|
655
|
-
if (
|
|
656
|
-
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('/');
|
|
657
658
|
parts.pop();
|
|
658
659
|
pathPieces.pathname.split('/').forEach(function (item) {
|
|
659
660
|
if (item === '.') {
|
|
@@ -663,9 +664,11 @@ function processNavigateUrl(option) {
|
|
|
663
664
|
item === '..' ? parts.pop() : parts.push(item);
|
|
664
665
|
});
|
|
665
666
|
pathPieces.pathname = parts.join('/');
|
|
666
|
-
} //
|
|
667
|
+
} // 处理自定义路由
|
|
667
668
|
|
|
668
669
|
|
|
670
|
+
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理 basename
|
|
671
|
+
|
|
669
672
|
pathPieces.pathname = prependBasename(pathPieces.pathname); // hack fix history v5 bug: https://github.com/remix-run/history/issues/814
|
|
670
673
|
|
|
671
674
|
if (!pathPieces.search) pathPieces.search = '';
|
|
@@ -688,7 +691,7 @@ function _navigate() {
|
|
|
688
691
|
fail = option.fail;
|
|
689
692
|
var unListen = exports.history.listen(function () {
|
|
690
693
|
var res = {
|
|
691
|
-
errMsg: "".concat(method, ":
|
|
694
|
+
errMsg: "".concat(method, ":ok")
|
|
692
695
|
};
|
|
693
696
|
success === null || success === void 0 ? void 0 : success(res);
|
|
694
697
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
@@ -717,7 +720,7 @@ function _navigate() {
|
|
|
717
720
|
}
|
|
718
721
|
} catch (error) {
|
|
719
722
|
var res = {
|
|
720
|
-
errMsg: "".concat(method, ":
|
|
723
|
+
errMsg: "".concat(method, ":fail ").concat(error.message || error)
|
|
721
724
|
};
|
|
722
725
|
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
723
726
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
@@ -1961,64 +1964,12 @@ var filterObj = function filterObj(obj, predicate) {
|
|
|
1961
1964
|
};
|
|
1962
1965
|
})(queryString);
|
|
1963
1966
|
|
|
1964
|
-
var pageScrollFn;
|
|
1965
|
-
var pageDOM = window;
|
|
1966
|
-
function bindPageScroll(page, config) {
|
|
1967
|
-
pageDOM.removeEventListener('scroll', pageScrollFn);
|
|
1968
|
-
pageDOM = getScrollContainer();
|
|
1969
|
-
var distance = config.onReachBottomDistance || 50;
|
|
1970
|
-
var isReachBottom = false;
|
|
1971
|
-
|
|
1972
|
-
pageScrollFn = function pageScrollFn() {
|
|
1973
|
-
page.onPageScroll && page.onPageScroll({
|
|
1974
|
-
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
1975
|
-
});
|
|
1976
|
-
|
|
1977
|
-
if (isReachBottom && getOffset() > distance) {
|
|
1978
|
-
isReachBottom = false;
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
1982
|
-
isReachBottom = true;
|
|
1983
|
-
page.onReachBottom();
|
|
1984
|
-
}
|
|
1985
|
-
};
|
|
1986
|
-
|
|
1987
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1988
|
-
}
|
|
1989
|
-
window.addEventListener('DOMSubtreeModified', function (e) {
|
|
1990
|
-
var target = e.target;
|
|
1991
|
-
var className = target === null || target === void 0 ? void 0 : target.className;
|
|
1992
|
-
|
|
1993
|
-
if (className && /taro_page/.test(className)) {
|
|
1994
|
-
pageDOM.removeEventListener('scroll', pageScrollFn);
|
|
1995
|
-
pageDOM = getScrollContainer();
|
|
1996
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1997
|
-
}
|
|
1998
|
-
}, false);
|
|
1999
|
-
|
|
2000
|
-
function getScrollContainer() {
|
|
2001
|
-
var _Current$page;
|
|
2002
|
-
|
|
2003
|
-
var id = (_Current$page = runtime.Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
2004
|
-
var el = id ? document.getElementById(id) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
2005
|
-
return el || window;
|
|
2006
|
-
}
|
|
2007
|
-
|
|
2008
|
-
function getOffset() {
|
|
2009
|
-
if (pageDOM instanceof Window) {
|
|
2010
|
-
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
2011
|
-
} else {
|
|
2012
|
-
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
2013
|
-
}
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
1967
|
/**
|
|
2017
1968
|
* 插入页面动画需要的样式
|
|
2018
1969
|
*/
|
|
2019
1970
|
function loadAnimateStyle() {
|
|
2020
1971
|
var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
|
|
2021
|
-
var css = "\n.taro_router .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform:
|
|
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}");
|
|
2022
1973
|
var style = document.createElement('style');
|
|
2023
1974
|
style.innerHTML = css;
|
|
2024
1975
|
document.getElementsByTagName('head')[0].appendChild(style);
|
|
@@ -2055,6 +2006,56 @@ function initTabbar(config) {
|
|
|
2055
2006
|
taro.initTabBarApis(config);
|
|
2056
2007
|
}
|
|
2057
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
|
+
|
|
2058
2059
|
function setDisplay(el) {
|
|
2059
2060
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2060
2061
|
|
|
@@ -2074,10 +2075,10 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2074
2075
|
delay: 50
|
|
2075
2076
|
});
|
|
2076
2077
|
|
|
2077
|
-
_defineProperty__default['default'](this, "hideTimer", void 0);
|
|
2078
|
-
|
|
2079
2078
|
_defineProperty__default['default'](this, "unloadTimer", void 0);
|
|
2080
2079
|
|
|
2080
|
+
_defineProperty__default['default'](this, "hideTimer", void 0);
|
|
2081
|
+
|
|
2081
2082
|
_defineProperty__default['default'](this, "lastHidePage", void 0);
|
|
2082
2083
|
|
|
2083
2084
|
_defineProperty__default['default'](this, "lastUnloadPage", void 0);
|
|
@@ -2135,14 +2136,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2135
2136
|
get: function get() {
|
|
2136
2137
|
var _this$defaultAnimatio;
|
|
2137
2138
|
|
|
2138
|
-
return _typeof__default['default'](this.animation) === 'object' ? this.animation.delay : this.animation ? (_this$defaultAnimatio = this.defaultAnimation) === null || _this$defaultAnimatio === void 0 ? void 0 : _this$defaultAnimatio.delay : 0;
|
|
2139
|
+
return (_typeof__default['default'](this.animation) === 'object' ? this.animation.delay : this.animation ? (_this$defaultAnimatio = this.defaultAnimation) === null || _this$defaultAnimatio === void 0 ? void 0 : _this$defaultAnimatio.delay : 0) || 0;
|
|
2139
2140
|
}
|
|
2140
2141
|
}, {
|
|
2141
2142
|
key: "animationDuration",
|
|
2142
2143
|
get: function get() {
|
|
2143
2144
|
var _this$defaultAnimatio2;
|
|
2144
2145
|
|
|
2145
|
-
return _typeof__default['default'](this.animation) === 'object' ? this.animation.duration : this.animation ? (_this$defaultAnimatio2 = this.defaultAnimation) === null || _this$defaultAnimatio2 === void 0 ? void 0 : _this$defaultAnimatio2.duration : 0;
|
|
2146
|
+
return (_typeof__default['default'](this.animation) === 'object' ? this.animation.duration : this.animation ? (_this$defaultAnimatio2 = this.defaultAnimation) === null || _this$defaultAnimatio2 === void 0 ? void 0 : _this$defaultAnimatio2.duration : 0) || 0;
|
|
2146
2147
|
}
|
|
2147
2148
|
}, {
|
|
2148
2149
|
key: "pathname",
|
|
@@ -2204,7 +2205,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2204
2205
|
get: function get() {
|
|
2205
2206
|
var search = '?';
|
|
2206
2207
|
|
|
2207
|
-
if (this.routerMode) {
|
|
2208
|
+
if (this.routerMode === 'hash') {
|
|
2208
2209
|
var idx = location.hash.indexOf('?');
|
|
2209
2210
|
|
|
2210
2211
|
if (idx > -1) {
|
|
@@ -2220,14 +2221,12 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2220
2221
|
key: "getQuery",
|
|
2221
2222
|
value: function getQuery() {
|
|
2222
2223
|
var stamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
2223
|
-
var search =
|
|
2224
|
+
var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2225
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2226
|
+
search = search ? "".concat(search, "&").concat(this.search) : this.search;
|
|
2224
2227
|
var query = search ? queryString.parse(search) : {};
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
query.stamp = stamp.toString();
|
|
2228
|
-
}
|
|
2229
|
-
|
|
2230
|
-
return query;
|
|
2228
|
+
query.stamp = stamp.toString();
|
|
2229
|
+
return _objectSpread__default['default'](_objectSpread__default['default']({}, query), options);
|
|
2231
2230
|
}
|
|
2232
2231
|
}, {
|
|
2233
2232
|
key: "mount",
|
|
@@ -2259,7 +2258,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2259
2258
|
key: "onReady",
|
|
2260
2259
|
value: function onReady(page) {
|
|
2261
2260
|
var onLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
2262
|
-
var pageEl =
|
|
2261
|
+
var pageEl = this.getPageContainer(page);
|
|
2263
2262
|
|
|
2264
2263
|
if (pageEl && !(pageEl !== null && pageEl !== void 0 && pageEl['__isReady'])) {
|
|
2265
2264
|
var _el$componentOnReady, _el$componentOnReady$;
|
|
@@ -2267,7 +2266,9 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2267
2266
|
var el = pageEl.firstElementChild;
|
|
2268
2267
|
el === null || el === void 0 ? void 0 : (_el$componentOnReady = el['componentOnReady']) === null || _el$componentOnReady === void 0 ? void 0 : (_el$componentOnReady$ = _el$componentOnReady.call(el)) === null || _el$componentOnReady$ === void 0 ? void 0 : _el$componentOnReady$.then(function () {
|
|
2269
2268
|
runtime.requestAnimationFrame(function () {
|
|
2270
|
-
|
|
2269
|
+
var _page$onReady;
|
|
2270
|
+
|
|
2271
|
+
(_page$onReady = page.onReady) === null || _page$onReady === void 0 ? void 0 : _page$onReady.call(page);
|
|
2271
2272
|
pageEl['__isReady'] = true;
|
|
2272
2273
|
});
|
|
2273
2274
|
});
|
|
@@ -2281,31 +2282,38 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2281
2282
|
|
|
2282
2283
|
var pageConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2283
2284
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2284
|
-
if (!page) return;
|
|
2285
|
-
|
|
2285
|
+
if (!page) return; // NOTE: 页面栈推入太晚可能导致 getCurrentPages 无法获取到当前页面实例
|
|
2286
|
+
|
|
2287
|
+
stacks.push(page);
|
|
2288
|
+
var param = this.getQuery(stacks.length, '', page.options);
|
|
2289
|
+
var pageEl = this.getPageContainer(page);
|
|
2286
2290
|
|
|
2287
2291
|
if (pageEl) {
|
|
2292
|
+
var _page$onShow;
|
|
2293
|
+
|
|
2288
2294
|
setDisplay(pageEl);
|
|
2289
2295
|
this.isTabBar && pageEl.classList.add('taro_tabbar_page');
|
|
2290
2296
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2297
|
+
(_page$onShow = page.onShow) === null || _page$onShow === void 0 ? void 0 : _page$onShow.call(page);
|
|
2298
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2291
2299
|
} else {
|
|
2292
2300
|
var _page$onLoad;
|
|
2293
2301
|
|
|
2294
|
-
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page,
|
|
2295
|
-
var _pageEl;
|
|
2302
|
+
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page, param, function () {
|
|
2303
|
+
var _pageEl, _page$onShow2;
|
|
2296
2304
|
|
|
2297
|
-
pageEl =
|
|
2305
|
+
pageEl = _this2.getPageContainer(page);
|
|
2298
2306
|
_this2.isTabBar && ((_pageEl = pageEl) === null || _pageEl === void 0 ? void 0 : _pageEl.classList.add('taro_tabbar_page'));
|
|
2299
2307
|
|
|
2300
2308
|
_this2.addAnimation(pageEl, stacksIndex === 0);
|
|
2301
2309
|
|
|
2302
2310
|
_this2.onReady(page, true);
|
|
2311
|
+
|
|
2312
|
+
(_page$onShow2 = page.onShow) === null || _page$onShow2 === void 0 ? void 0 : _page$onShow2.call(page);
|
|
2313
|
+
|
|
2314
|
+
_this2.bindPageEvents(page, pageEl, pageConfig);
|
|
2303
2315
|
});
|
|
2304
2316
|
}
|
|
2305
|
-
|
|
2306
|
-
stacks.push(page);
|
|
2307
|
-
page.onShow();
|
|
2308
|
-
bindPageScroll(page, pageConfig);
|
|
2309
2317
|
}
|
|
2310
2318
|
}, {
|
|
2311
2319
|
key: "unload",
|
|
@@ -2328,7 +2336,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2328
2336
|
}
|
|
2329
2337
|
|
|
2330
2338
|
this.lastUnloadPage = page;
|
|
2331
|
-
var pageEl =
|
|
2339
|
+
var pageEl = this.getPageContainer(page);
|
|
2340
|
+
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_stationed');
|
|
2332
2341
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_show');
|
|
2333
2342
|
this.unloadTimer = setTimeout(function () {
|
|
2334
2343
|
var _this3$lastUnloadPage, _this3$lastUnloadPage2;
|
|
@@ -2336,6 +2345,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2336
2345
|
_this3.unloadTimer = null;
|
|
2337
2346
|
(_this3$lastUnloadPage = _this3.lastUnloadPage) === null || _this3$lastUnloadPage === void 0 ? void 0 : (_this3$lastUnloadPage2 = _this3$lastUnloadPage.onUnload) === null || _this3$lastUnloadPage2 === void 0 ? void 0 : _this3$lastUnloadPage2.call(_this3$lastUnloadPage);
|
|
2338
2347
|
}, this.animationDuration);
|
|
2348
|
+
} else {
|
|
2349
|
+
var _page$onUnload;
|
|
2350
|
+
|
|
2351
|
+
var _pageEl2 = this.getPageContainer(page);
|
|
2352
|
+
|
|
2353
|
+
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_stationed');
|
|
2354
|
+
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_show');
|
|
2355
|
+
page === null || page === void 0 ? void 0 : (_page$onUnload = page.onUnload) === null || _page$onUnload === void 0 ? void 0 : _page$onUnload.call(page);
|
|
2339
2356
|
}
|
|
2340
2357
|
|
|
2341
2358
|
if (delta >= 1) this.unload(stacks.last, delta);
|
|
@@ -2348,25 +2365,33 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2348
2365
|
var pageConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2349
2366
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2350
2367
|
if (!page) return;
|
|
2351
|
-
page.
|
|
2352
|
-
var pageEl =
|
|
2368
|
+
var param = this.getQuery(stacks.length, '', page.options);
|
|
2369
|
+
var pageEl = this.getPageContainer(page);
|
|
2353
2370
|
|
|
2354
2371
|
if (pageEl) {
|
|
2372
|
+
var _page$onShow3;
|
|
2373
|
+
|
|
2355
2374
|
setDisplay(pageEl);
|
|
2356
2375
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2376
|
+
(_page$onShow3 = page.onShow) === null || _page$onShow3 === void 0 ? void 0 : _page$onShow3.call(page);
|
|
2377
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2357
2378
|
} else {
|
|
2358
2379
|
var _page$onLoad2;
|
|
2359
2380
|
|
|
2360
|
-
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page,
|
|
2361
|
-
|
|
2381
|
+
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page, param, function () {
|
|
2382
|
+
var _page$onShow4;
|
|
2383
|
+
|
|
2384
|
+
pageEl = _this4.getPageContainer(page);
|
|
2362
2385
|
|
|
2363
2386
|
_this4.addAnimation(pageEl, stacksIndex === 0);
|
|
2364
2387
|
|
|
2365
2388
|
_this4.onReady(page, false);
|
|
2389
|
+
|
|
2390
|
+
(_page$onShow4 = page.onShow) === null || _page$onShow4 === void 0 ? void 0 : _page$onShow4.call(page);
|
|
2391
|
+
|
|
2392
|
+
_this4.bindPageEvents(page, pageEl, pageConfig);
|
|
2366
2393
|
});
|
|
2367
2394
|
}
|
|
2368
|
-
|
|
2369
|
-
bindPageScroll(page, pageConfig);
|
|
2370
2395
|
}
|
|
2371
2396
|
}, {
|
|
2372
2397
|
key: "hide",
|
|
@@ -2375,9 +2400,11 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2375
2400
|
|
|
2376
2401
|
if (!page) return; // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功
|
|
2377
2402
|
|
|
2378
|
-
var pageEl =
|
|
2403
|
+
var pageEl = this.getPageContainer(page);
|
|
2379
2404
|
|
|
2380
2405
|
if (pageEl) {
|
|
2406
|
+
var _page$onHide;
|
|
2407
|
+
|
|
2381
2408
|
if (this.hideTimer) {
|
|
2382
2409
|
clearTimeout(this.hideTimer);
|
|
2383
2410
|
this.hideTimer = null;
|
|
@@ -2388,8 +2415,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2388
2415
|
this.hideTimer = setTimeout(function () {
|
|
2389
2416
|
_this5.hideTimer = null;
|
|
2390
2417
|
setDisplay(_this5.lastHidePage, 'none');
|
|
2391
|
-
}, this.animationDelay);
|
|
2392
|
-
page.onHide();
|
|
2418
|
+
}, this.animationDuration + this.animationDelay);
|
|
2419
|
+
(_page$onHide = page.onHide) === null || _page$onHide === void 0 ? void 0 : _page$onHide.call(page);
|
|
2393
2420
|
} else {
|
|
2394
2421
|
setTimeout(function () {
|
|
2395
2422
|
return _this5.hide(page);
|
|
@@ -2399,24 +2426,60 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2399
2426
|
}, {
|
|
2400
2427
|
key: "addAnimation",
|
|
2401
2428
|
value: function addAnimation(pageEl) {
|
|
2429
|
+
var _this6 = this;
|
|
2430
|
+
|
|
2402
2431
|
var first = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
2403
2432
|
if (!pageEl) return;
|
|
2404
2433
|
|
|
2405
2434
|
if (this.animation && !first) {
|
|
2406
2435
|
setTimeout(function () {
|
|
2407
2436
|
pageEl.classList.add('taro_page_show');
|
|
2437
|
+
setTimeout(function () {
|
|
2438
|
+
pageEl.classList.add('taro_page_stationed');
|
|
2439
|
+
}, _this6.animationDuration);
|
|
2408
2440
|
}, this.animationDelay);
|
|
2409
2441
|
} else {
|
|
2410
2442
|
pageEl.classList.add('taro_page_show');
|
|
2443
|
+
pageEl.classList.add('taro_page_stationed');
|
|
2411
2444
|
}
|
|
2412
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
|
+
}
|
|
2413
2476
|
}]);
|
|
2414
2477
|
|
|
2415
2478
|
return PageHandler;
|
|
2416
2479
|
}();
|
|
2417
2480
|
|
|
2418
2481
|
function createRouter(app, config, framework) {
|
|
2419
|
-
var _routes$0$path;
|
|
2482
|
+
var _routes$0$path, _app$onLaunch, _app$onShow;
|
|
2420
2483
|
|
|
2421
2484
|
var handler = new PageHandler(config);
|
|
2422
2485
|
var runtimeHooks = runtime.container.get(runtime.SERVICE_IDENTIFIER.Hooks);
|
|
@@ -2432,10 +2495,13 @@ function createRouter(app, config, framework) {
|
|
|
2432
2495
|
var router = new UniversalRouter(routes, {
|
|
2433
2496
|
baseUrl: basename || ''
|
|
2434
2497
|
});
|
|
2435
|
-
|
|
2498
|
+
var launchParam = handler.getQuery(stacks.length);
|
|
2499
|
+
(_app$onLaunch = app.onLaunch) === null || _app$onLaunch === void 0 ? void 0 : _app$onLaunch.call(app, launchParam);
|
|
2436
2500
|
|
|
2437
2501
|
var render = /*#__PURE__*/function () {
|
|
2438
2502
|
var _ref2 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
|
|
2503
|
+
var _config$window;
|
|
2504
|
+
|
|
2439
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;
|
|
2440
2506
|
|
|
2441
2507
|
return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
|
|
@@ -2481,7 +2547,7 @@ function createRouter(app, config, framework) {
|
|
|
2481
2547
|
|
|
2482
2548
|
case 17:
|
|
2483
2549
|
pageConfig = handler.pageConfig;
|
|
2484
|
-
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;
|
|
2485
2551
|
runtime.eventCenter.trigger('__taroRouterChange', {
|
|
2486
2552
|
toLocation: {
|
|
2487
2553
|
path: handler.pathname
|
|
@@ -2490,7 +2556,10 @@ function createRouter(app, config, framework) {
|
|
|
2490
2556
|
|
|
2491
2557
|
if (pageConfig) {
|
|
2492
2558
|
document.title = (_pageConfig$navigatio = pageConfig.navigationBarTitleText) !== null && _pageConfig$navigatio !== void 0 ? _pageConfig$navigatio : document.title;
|
|
2493
|
-
|
|
2559
|
+
|
|
2560
|
+
if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
|
|
2561
|
+
enablePullDownRefresh = pageConfig.enablePullDownRefresh;
|
|
2562
|
+
}
|
|
2494
2563
|
}
|
|
2495
2564
|
|
|
2496
2565
|
currentPage = runtime.Current.page;
|
|
@@ -2591,7 +2660,7 @@ function createRouter(app, config, framework) {
|
|
|
2591
2660
|
location: exports.history.location,
|
|
2592
2661
|
action: r.Push
|
|
2593
2662
|
});
|
|
2594
|
-
app.onShow
|
|
2663
|
+
(_app$onShow = app.onShow) === null || _app$onShow === void 0 ? void 0 : _app$onShow.call(app, launchParam);
|
|
2595
2664
|
return exports.history.listen(render);
|
|
2596
2665
|
}
|
|
2597
2666
|
|