@tarojs/router 3.4.0-beta.2 → 3.4.2
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/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';
|
|
@@ -465,8 +465,10 @@ var Stacks = /*#__PURE__*/function () {
|
|
|
465
465
|
set: function set(delta) {
|
|
466
466
|
if (delta > 0) {
|
|
467
467
|
this.backDelta = delta;
|
|
468
|
-
} else {
|
|
468
|
+
} else if (this.backDelta > 0) {
|
|
469
469
|
--this.backDelta;
|
|
470
|
+
} else {
|
|
471
|
+
this.backDelta = 0;
|
|
470
472
|
}
|
|
471
473
|
}
|
|
472
474
|
}, {
|
|
@@ -507,10 +509,11 @@ var Stacks = /*#__PURE__*/function () {
|
|
|
507
509
|
value: function getDelta(pathname) {
|
|
508
510
|
if (this.backDelta >= 1) {
|
|
509
511
|
return this.backDelta;
|
|
510
|
-
}
|
|
512
|
+
}
|
|
511
513
|
|
|
514
|
+
var index = this.getLastIndex(pathname); // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
|
|
512
515
|
|
|
513
|
-
return
|
|
516
|
+
return index > 0 ? index : 1;
|
|
514
517
|
}
|
|
515
518
|
}, {
|
|
516
519
|
key: "getPrevIndex",
|
|
@@ -585,8 +588,8 @@ var RoutesAlias = /*#__PURE__*/function () {
|
|
|
585
588
|
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
586
589
|
return _this.conf.filter(function (arr) {
|
|
587
590
|
return arr.includes(url);
|
|
588
|
-
}).
|
|
589
|
-
p.
|
|
591
|
+
}).reduceRight(function (p, a) {
|
|
592
|
+
p.unshift(a[1]);
|
|
590
593
|
return p;
|
|
591
594
|
}, [url]);
|
|
592
595
|
});
|
|
@@ -630,12 +633,10 @@ var routesAlias = new RoutesAlias();
|
|
|
630
633
|
function processNavigateUrl(option) {
|
|
631
634
|
var _pathPieces$pathname;
|
|
632
635
|
|
|
633
|
-
var pathPieces = J(option.url); //
|
|
634
|
-
|
|
635
|
-
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理相对路径
|
|
636
|
+
var pathPieces = J(option.url); // 处理相对路径
|
|
636
637
|
|
|
637
|
-
if (
|
|
638
|
-
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('/');
|
|
639
640
|
parts.pop();
|
|
640
641
|
pathPieces.pathname.split('/').forEach(function (item) {
|
|
641
642
|
if (item === '.') {
|
|
@@ -645,9 +646,11 @@ function processNavigateUrl(option) {
|
|
|
645
646
|
item === '..' ? parts.pop() : parts.push(item);
|
|
646
647
|
});
|
|
647
648
|
pathPieces.pathname = parts.join('/');
|
|
648
|
-
} //
|
|
649
|
+
} // 处理自定义路由
|
|
649
650
|
|
|
650
651
|
|
|
652
|
+
pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理 basename
|
|
653
|
+
|
|
651
654
|
pathPieces.pathname = prependBasename(pathPieces.pathname); // hack fix history v5 bug: https://github.com/remix-run/history/issues/814
|
|
652
655
|
|
|
653
656
|
if (!pathPieces.search) pathPieces.search = '';
|
|
@@ -670,7 +673,7 @@ function _navigate() {
|
|
|
670
673
|
fail = option.fail;
|
|
671
674
|
var unListen = history.listen(function () {
|
|
672
675
|
var res = {
|
|
673
|
-
errMsg: "".concat(method, ":
|
|
676
|
+
errMsg: "".concat(method, ":ok")
|
|
674
677
|
};
|
|
675
678
|
success === null || success === void 0 ? void 0 : success(res);
|
|
676
679
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
@@ -699,7 +702,7 @@ function _navigate() {
|
|
|
699
702
|
}
|
|
700
703
|
} catch (error) {
|
|
701
704
|
var res = {
|
|
702
|
-
errMsg: "".concat(method, ":
|
|
705
|
+
errMsg: "".concat(method, ":fail ").concat(error.message || error)
|
|
703
706
|
};
|
|
704
707
|
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
705
708
|
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
@@ -1943,64 +1946,12 @@ var filterObj = function filterObj(obj, predicate) {
|
|
|
1943
1946
|
};
|
|
1944
1947
|
})(queryString);
|
|
1945
1948
|
|
|
1946
|
-
var pageScrollFn;
|
|
1947
|
-
var pageDOM = window;
|
|
1948
|
-
function bindPageScroll(page, config) {
|
|
1949
|
-
pageDOM.removeEventListener('scroll', pageScrollFn);
|
|
1950
|
-
pageDOM = getScrollContainer();
|
|
1951
|
-
var distance = config.onReachBottomDistance || 50;
|
|
1952
|
-
var isReachBottom = false;
|
|
1953
|
-
|
|
1954
|
-
pageScrollFn = function pageScrollFn() {
|
|
1955
|
-
page.onPageScroll && page.onPageScroll({
|
|
1956
|
-
scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
|
|
1957
|
-
});
|
|
1958
|
-
|
|
1959
|
-
if (isReachBottom && getOffset() > distance) {
|
|
1960
|
-
isReachBottom = false;
|
|
1961
|
-
}
|
|
1962
|
-
|
|
1963
|
-
if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
|
|
1964
|
-
isReachBottom = true;
|
|
1965
|
-
page.onReachBottom();
|
|
1966
|
-
}
|
|
1967
|
-
};
|
|
1968
|
-
|
|
1969
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1970
|
-
}
|
|
1971
|
-
window.addEventListener('DOMSubtreeModified', function (e) {
|
|
1972
|
-
var target = e.target;
|
|
1973
|
-
var className = target === null || target === void 0 ? void 0 : target.className;
|
|
1974
|
-
|
|
1975
|
-
if (className && /taro_page/.test(className)) {
|
|
1976
|
-
pageDOM.removeEventListener('scroll', pageScrollFn);
|
|
1977
|
-
pageDOM = getScrollContainer();
|
|
1978
|
-
pageDOM.addEventListener('scroll', pageScrollFn, false);
|
|
1979
|
-
}
|
|
1980
|
-
}, false);
|
|
1981
|
-
|
|
1982
|
-
function getScrollContainer() {
|
|
1983
|
-
var _Current$page;
|
|
1984
|
-
|
|
1985
|
-
var id = (_Current$page = Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
|
|
1986
|
-
var el = id ? document.getElementById(id) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
|
|
1987
|
-
return el || window;
|
|
1988
|
-
}
|
|
1989
|
-
|
|
1990
|
-
function getOffset() {
|
|
1991
|
-
if (pageDOM instanceof Window) {
|
|
1992
|
-
return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
|
|
1993
|
-
} else {
|
|
1994
|
-
return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
|
|
1995
|
-
}
|
|
1996
|
-
}
|
|
1997
|
-
|
|
1998
1949
|
/**
|
|
1999
1950
|
* 插入页面动画需要的样式
|
|
2000
1951
|
*/
|
|
2001
1952
|
function loadAnimateStyle() {
|
|
2002
1953
|
var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
|
|
2003
|
-
var css = "\n.taro_router .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform:
|
|
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}");
|
|
2004
1955
|
var style = document.createElement('style');
|
|
2005
1956
|
style.innerHTML = css;
|
|
2006
1957
|
document.getElementsByTagName('head')[0].appendChild(style);
|
|
@@ -2037,6 +1988,56 @@ function initTabbar(config) {
|
|
|
2037
1988
|
initTabBarApis(config);
|
|
2038
1989
|
}
|
|
2039
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
|
+
|
|
2040
2041
|
function setDisplay(el) {
|
|
2041
2042
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2042
2043
|
|
|
@@ -2056,10 +2057,10 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2056
2057
|
delay: 50
|
|
2057
2058
|
});
|
|
2058
2059
|
|
|
2059
|
-
_defineProperty(this, "hideTimer", void 0);
|
|
2060
|
-
|
|
2061
2060
|
_defineProperty(this, "unloadTimer", void 0);
|
|
2062
2061
|
|
|
2062
|
+
_defineProperty(this, "hideTimer", void 0);
|
|
2063
|
+
|
|
2063
2064
|
_defineProperty(this, "lastHidePage", void 0);
|
|
2064
2065
|
|
|
2065
2066
|
_defineProperty(this, "lastUnloadPage", void 0);
|
|
@@ -2117,14 +2118,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2117
2118
|
get: function get() {
|
|
2118
2119
|
var _this$defaultAnimatio;
|
|
2119
2120
|
|
|
2120
|
-
return _typeof(this.animation) === 'object' ? this.animation.delay : this.animation ? (_this$defaultAnimatio = this.defaultAnimation) === null || _this$defaultAnimatio === void 0 ? void 0 : _this$defaultAnimatio.delay : 0;
|
|
2121
|
+
return (_typeof(this.animation) === 'object' ? this.animation.delay : this.animation ? (_this$defaultAnimatio = this.defaultAnimation) === null || _this$defaultAnimatio === void 0 ? void 0 : _this$defaultAnimatio.delay : 0) || 0;
|
|
2121
2122
|
}
|
|
2122
2123
|
}, {
|
|
2123
2124
|
key: "animationDuration",
|
|
2124
2125
|
get: function get() {
|
|
2125
2126
|
var _this$defaultAnimatio2;
|
|
2126
2127
|
|
|
2127
|
-
return _typeof(this.animation) === 'object' ? this.animation.duration : this.animation ? (_this$defaultAnimatio2 = this.defaultAnimation) === null || _this$defaultAnimatio2 === void 0 ? void 0 : _this$defaultAnimatio2.duration : 0;
|
|
2128
|
+
return (_typeof(this.animation) === 'object' ? this.animation.duration : this.animation ? (_this$defaultAnimatio2 = this.defaultAnimation) === null || _this$defaultAnimatio2 === void 0 ? void 0 : _this$defaultAnimatio2.duration : 0) || 0;
|
|
2128
2129
|
}
|
|
2129
2130
|
}, {
|
|
2130
2131
|
key: "pathname",
|
|
@@ -2186,7 +2187,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2186
2187
|
get: function get() {
|
|
2187
2188
|
var search = '?';
|
|
2188
2189
|
|
|
2189
|
-
if (this.routerMode) {
|
|
2190
|
+
if (this.routerMode === 'hash') {
|
|
2190
2191
|
var idx = location.hash.indexOf('?');
|
|
2191
2192
|
|
|
2192
2193
|
if (idx > -1) {
|
|
@@ -2202,14 +2203,12 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2202
2203
|
key: "getQuery",
|
|
2203
2204
|
value: function getQuery() {
|
|
2204
2205
|
var stamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
2205
|
-
var search =
|
|
2206
|
+
var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2207
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
2208
|
+
search = search ? "".concat(search, "&").concat(this.search) : this.search;
|
|
2206
2209
|
var query = search ? queryString.parse(search) : {};
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
query.stamp = stamp.toString();
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2212
|
-
return query;
|
|
2210
|
+
query.stamp = stamp.toString();
|
|
2211
|
+
return _objectSpread(_objectSpread({}, query), options);
|
|
2213
2212
|
}
|
|
2214
2213
|
}, {
|
|
2215
2214
|
key: "mount",
|
|
@@ -2241,7 +2240,7 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2241
2240
|
key: "onReady",
|
|
2242
2241
|
value: function onReady(page) {
|
|
2243
2242
|
var onLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
2244
|
-
var pageEl =
|
|
2243
|
+
var pageEl = this.getPageContainer(page);
|
|
2245
2244
|
|
|
2246
2245
|
if (pageEl && !(pageEl !== null && pageEl !== void 0 && pageEl['__isReady'])) {
|
|
2247
2246
|
var _el$componentOnReady, _el$componentOnReady$;
|
|
@@ -2249,7 +2248,9 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2249
2248
|
var el = pageEl.firstElementChild;
|
|
2250
2249
|
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 () {
|
|
2251
2250
|
requestAnimationFrame(function () {
|
|
2252
|
-
|
|
2251
|
+
var _page$onReady;
|
|
2252
|
+
|
|
2253
|
+
(_page$onReady = page.onReady) === null || _page$onReady === void 0 ? void 0 : _page$onReady.call(page);
|
|
2253
2254
|
pageEl['__isReady'] = true;
|
|
2254
2255
|
});
|
|
2255
2256
|
});
|
|
@@ -2263,31 +2264,38 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2263
2264
|
|
|
2264
2265
|
var pageConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2265
2266
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2266
|
-
if (!page) return;
|
|
2267
|
-
|
|
2267
|
+
if (!page) return; // NOTE: 页面栈推入太晚可能导致 getCurrentPages 无法获取到当前页面实例
|
|
2268
|
+
|
|
2269
|
+
stacks.push(page);
|
|
2270
|
+
var param = this.getQuery(stacks.length, '', page.options);
|
|
2271
|
+
var pageEl = this.getPageContainer(page);
|
|
2268
2272
|
|
|
2269
2273
|
if (pageEl) {
|
|
2274
|
+
var _page$onShow;
|
|
2275
|
+
|
|
2270
2276
|
setDisplay(pageEl);
|
|
2271
2277
|
this.isTabBar && pageEl.classList.add('taro_tabbar_page');
|
|
2272
2278
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2279
|
+
(_page$onShow = page.onShow) === null || _page$onShow === void 0 ? void 0 : _page$onShow.call(page);
|
|
2280
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2273
2281
|
} else {
|
|
2274
2282
|
var _page$onLoad;
|
|
2275
2283
|
|
|
2276
|
-
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page,
|
|
2277
|
-
var _pageEl;
|
|
2284
|
+
(_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page, param, function () {
|
|
2285
|
+
var _pageEl, _page$onShow2;
|
|
2278
2286
|
|
|
2279
|
-
pageEl =
|
|
2287
|
+
pageEl = _this2.getPageContainer(page);
|
|
2280
2288
|
_this2.isTabBar && ((_pageEl = pageEl) === null || _pageEl === void 0 ? void 0 : _pageEl.classList.add('taro_tabbar_page'));
|
|
2281
2289
|
|
|
2282
2290
|
_this2.addAnimation(pageEl, stacksIndex === 0);
|
|
2283
2291
|
|
|
2284
2292
|
_this2.onReady(page, true);
|
|
2293
|
+
|
|
2294
|
+
(_page$onShow2 = page.onShow) === null || _page$onShow2 === void 0 ? void 0 : _page$onShow2.call(page);
|
|
2295
|
+
|
|
2296
|
+
_this2.bindPageEvents(page, pageEl, pageConfig);
|
|
2285
2297
|
});
|
|
2286
2298
|
}
|
|
2287
|
-
|
|
2288
|
-
stacks.push(page);
|
|
2289
|
-
page.onShow();
|
|
2290
|
-
bindPageScroll(page, pageConfig);
|
|
2291
2299
|
}
|
|
2292
2300
|
}, {
|
|
2293
2301
|
key: "unload",
|
|
@@ -2310,7 +2318,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2310
2318
|
}
|
|
2311
2319
|
|
|
2312
2320
|
this.lastUnloadPage = page;
|
|
2313
|
-
var pageEl =
|
|
2321
|
+
var pageEl = this.getPageContainer(page);
|
|
2322
|
+
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_stationed');
|
|
2314
2323
|
pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_show');
|
|
2315
2324
|
this.unloadTimer = setTimeout(function () {
|
|
2316
2325
|
var _this3$lastUnloadPage, _this3$lastUnloadPage2;
|
|
@@ -2318,6 +2327,14 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2318
2327
|
_this3.unloadTimer = null;
|
|
2319
2328
|
(_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);
|
|
2320
2329
|
}, this.animationDuration);
|
|
2330
|
+
} else {
|
|
2331
|
+
var _page$onUnload;
|
|
2332
|
+
|
|
2333
|
+
var _pageEl2 = this.getPageContainer(page);
|
|
2334
|
+
|
|
2335
|
+
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_stationed');
|
|
2336
|
+
_pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_show');
|
|
2337
|
+
page === null || page === void 0 ? void 0 : (_page$onUnload = page.onUnload) === null || _page$onUnload === void 0 ? void 0 : _page$onUnload.call(page);
|
|
2321
2338
|
}
|
|
2322
2339
|
|
|
2323
2340
|
if (delta >= 1) this.unload(stacks.last, delta);
|
|
@@ -2330,25 +2347,33 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2330
2347
|
var pageConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2331
2348
|
var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
2332
2349
|
if (!page) return;
|
|
2333
|
-
page.
|
|
2334
|
-
var pageEl =
|
|
2350
|
+
var param = this.getQuery(stacks.length, '', page.options);
|
|
2351
|
+
var pageEl = this.getPageContainer(page);
|
|
2335
2352
|
|
|
2336
2353
|
if (pageEl) {
|
|
2354
|
+
var _page$onShow3;
|
|
2355
|
+
|
|
2337
2356
|
setDisplay(pageEl);
|
|
2338
2357
|
this.addAnimation(pageEl, stacksIndex === 0);
|
|
2358
|
+
(_page$onShow3 = page.onShow) === null || _page$onShow3 === void 0 ? void 0 : _page$onShow3.call(page);
|
|
2359
|
+
this.bindPageEvents(page, pageEl, pageConfig);
|
|
2339
2360
|
} else {
|
|
2340
2361
|
var _page$onLoad2;
|
|
2341
2362
|
|
|
2342
|
-
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page,
|
|
2343
|
-
|
|
2363
|
+
(_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page, param, function () {
|
|
2364
|
+
var _page$onShow4;
|
|
2365
|
+
|
|
2366
|
+
pageEl = _this4.getPageContainer(page);
|
|
2344
2367
|
|
|
2345
2368
|
_this4.addAnimation(pageEl, stacksIndex === 0);
|
|
2346
2369
|
|
|
2347
2370
|
_this4.onReady(page, false);
|
|
2371
|
+
|
|
2372
|
+
(_page$onShow4 = page.onShow) === null || _page$onShow4 === void 0 ? void 0 : _page$onShow4.call(page);
|
|
2373
|
+
|
|
2374
|
+
_this4.bindPageEvents(page, pageEl, pageConfig);
|
|
2348
2375
|
});
|
|
2349
2376
|
}
|
|
2350
|
-
|
|
2351
|
-
bindPageScroll(page, pageConfig);
|
|
2352
2377
|
}
|
|
2353
2378
|
}, {
|
|
2354
2379
|
key: "hide",
|
|
@@ -2357,9 +2382,11 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2357
2382
|
|
|
2358
2383
|
if (!page) return; // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功
|
|
2359
2384
|
|
|
2360
|
-
var pageEl =
|
|
2385
|
+
var pageEl = this.getPageContainer(page);
|
|
2361
2386
|
|
|
2362
2387
|
if (pageEl) {
|
|
2388
|
+
var _page$onHide;
|
|
2389
|
+
|
|
2363
2390
|
if (this.hideTimer) {
|
|
2364
2391
|
clearTimeout(this.hideTimer);
|
|
2365
2392
|
this.hideTimer = null;
|
|
@@ -2370,8 +2397,8 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2370
2397
|
this.hideTimer = setTimeout(function () {
|
|
2371
2398
|
_this5.hideTimer = null;
|
|
2372
2399
|
setDisplay(_this5.lastHidePage, 'none');
|
|
2373
|
-
}, this.animationDelay);
|
|
2374
|
-
page.onHide();
|
|
2400
|
+
}, this.animationDuration + this.animationDelay);
|
|
2401
|
+
(_page$onHide = page.onHide) === null || _page$onHide === void 0 ? void 0 : _page$onHide.call(page);
|
|
2375
2402
|
} else {
|
|
2376
2403
|
setTimeout(function () {
|
|
2377
2404
|
return _this5.hide(page);
|
|
@@ -2381,24 +2408,60 @@ var PageHandler = /*#__PURE__*/function () {
|
|
|
2381
2408
|
}, {
|
|
2382
2409
|
key: "addAnimation",
|
|
2383
2410
|
value: function addAnimation(pageEl) {
|
|
2411
|
+
var _this6 = this;
|
|
2412
|
+
|
|
2384
2413
|
var first = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
2385
2414
|
if (!pageEl) return;
|
|
2386
2415
|
|
|
2387
2416
|
if (this.animation && !first) {
|
|
2388
2417
|
setTimeout(function () {
|
|
2389
2418
|
pageEl.classList.add('taro_page_show');
|
|
2419
|
+
setTimeout(function () {
|
|
2420
|
+
pageEl.classList.add('taro_page_stationed');
|
|
2421
|
+
}, _this6.animationDuration);
|
|
2390
2422
|
}, this.animationDelay);
|
|
2391
2423
|
} else {
|
|
2392
2424
|
pageEl.classList.add('taro_page_show');
|
|
2425
|
+
pageEl.classList.add('taro_page_stationed');
|
|
2393
2426
|
}
|
|
2394
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
|
+
}
|
|
2395
2458
|
}]);
|
|
2396
2459
|
|
|
2397
2460
|
return PageHandler;
|
|
2398
2461
|
}();
|
|
2399
2462
|
|
|
2400
2463
|
function createRouter(app, config, framework) {
|
|
2401
|
-
var _routes$0$path;
|
|
2464
|
+
var _routes$0$path, _app$onLaunch, _app$onShow;
|
|
2402
2465
|
|
|
2403
2466
|
var handler = new PageHandler(config);
|
|
2404
2467
|
var runtimeHooks = container.get(SERVICE_IDENTIFIER.Hooks);
|
|
@@ -2414,10 +2477,13 @@ function createRouter(app, config, framework) {
|
|
|
2414
2477
|
var router = new UniversalRouter(routes, {
|
|
2415
2478
|
baseUrl: basename || ''
|
|
2416
2479
|
});
|
|
2417
|
-
|
|
2480
|
+
var launchParam = handler.getQuery(stacks.length);
|
|
2481
|
+
(_app$onLaunch = app.onLaunch) === null || _app$onLaunch === void 0 ? void 0 : _app$onLaunch.call(app, launchParam);
|
|
2418
2482
|
|
|
2419
2483
|
var render = /*#__PURE__*/function () {
|
|
2420
2484
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
2485
|
+
var _config$window;
|
|
2486
|
+
|
|
2421
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;
|
|
2422
2488
|
|
|
2423
2489
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -2463,7 +2529,7 @@ function createRouter(app, config, framework) {
|
|
|
2463
2529
|
|
|
2464
2530
|
case 17:
|
|
2465
2531
|
pageConfig = handler.pageConfig;
|
|
2466
|
-
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;
|
|
2467
2533
|
eventCenter.trigger('__taroRouterChange', {
|
|
2468
2534
|
toLocation: {
|
|
2469
2535
|
path: handler.pathname
|
|
@@ -2472,7 +2538,10 @@ function createRouter(app, config, framework) {
|
|
|
2472
2538
|
|
|
2473
2539
|
if (pageConfig) {
|
|
2474
2540
|
document.title = (_pageConfig$navigatio = pageConfig.navigationBarTitleText) !== null && _pageConfig$navigatio !== void 0 ? _pageConfig$navigatio : document.title;
|
|
2475
|
-
|
|
2541
|
+
|
|
2542
|
+
if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
|
|
2543
|
+
enablePullDownRefresh = pageConfig.enablePullDownRefresh;
|
|
2544
|
+
}
|
|
2476
2545
|
}
|
|
2477
2546
|
|
|
2478
2547
|
currentPage = Current.page;
|
|
@@ -2573,7 +2642,7 @@ function createRouter(app, config, framework) {
|
|
|
2573
2642
|
location: history.location,
|
|
2574
2643
|
action: r.Push
|
|
2575
2644
|
});
|
|
2576
|
-
app.onShow
|
|
2645
|
+
(_app$onShow = app.onShow) === null || _app$onShow === void 0 ? void 0 : _app$onShow.call(app, launchParam);
|
|
2577
2646
|
return history.listen(render);
|
|
2578
2647
|
}
|
|
2579
2648
|
|