@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.
@@ -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 { Current, requestAnimationFrame, container, SERVICE_IDENTIFIER, createPageConfig, stringify, eventCenter } from '@tarojs/runtime';
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
- } // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
512
+ }
511
513
 
514
+ var index = this.getLastIndex(pathname); // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
512
515
 
513
- return this.getLastIndex(pathname) || 1;
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
- }).reduce(function (p, a) {
589
- p.push(a[1]);
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 (pathPieces !== null && pathPieces !== void 0 && (_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
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
- } // 处理 basename
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, ": ok")
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, ": fail ").concat(error.message || error)
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: translate3d(100%, 0, 0);\n transition: transform ".concat(ms, "ms;\n}\n\n.taro_router .taro_page.taro_tabbar_page {\n transform: none;\n}\n\n.taro_router .taro_page.taro_page_show {\n transform: translate3d(0, 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}");
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 = this.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
- if (stamp) {
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 = document.getElementById(page.path);
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
- page.onReady();
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
- var pageEl = document.getElementById(page.path);
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, this.getQuery(stacksIndex), function () {
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 = document.getElementById(page.path);
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 = document.getElementById(page.path);
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.onShow();
2334
- var pageEl = document.getElementById(page.path);
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, this.getQuery(stacksIndex), function () {
2343
- pageEl = document.getElementById(page.path);
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 = document.getElementById(page.path);
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
- app.onLaunch();
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
- enablePullDownRefresh = pageConfig.enablePullDownRefresh;
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(handler.getQuery(stacks.length));
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