@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 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
- } // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
530
+ }
529
531
 
532
+ var index = this.getLastIndex(pathname); // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)
530
533
 
531
- return this.getLastIndex(pathname) || 1;
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
- }).reduce(function (p, a) {
607
- p.push(a[1]);
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 (pathPieces !== null && pathPieces !== void 0 && (_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
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
- } // 处理 basename
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, ": ok")
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, ": fail ").concat(error.message || error)
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: 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}");
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 = this.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
- if (stamp) {
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 = document.getElementById(page.path);
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
- page.onReady();
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
- var pageEl = document.getElementById(page.path);
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, this.getQuery(stacksIndex), function () {
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 = document.getElementById(page.path);
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 = document.getElementById(page.path);
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.onShow();
2352
- var pageEl = document.getElementById(page.path);
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, this.getQuery(stacksIndex), function () {
2361
- pageEl = document.getElementById(page.path);
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 = document.getElementById(page.path);
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
- app.onLaunch();
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
- enablePullDownRefresh = pageConfig.enablePullDownRefresh;
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(handler.getQuery(stacks.length));
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