@tarojs/router 3.4.0 → 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 CHANGED
@@ -606,8 +606,8 @@ var RoutesAlias = /*#__PURE__*/function () {
606
606
  var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
607
607
  return _this.conf.filter(function (arr) {
608
608
  return arr.includes(url);
609
- }).reduce(function (p, a) {
610
- p.push(a[1]);
609
+ }).reduceRight(function (p, a) {
610
+ p.unshift(a[1]);
611
611
  return p;
612
612
  }, [url]);
613
613
  });
@@ -651,12 +651,10 @@ var routesAlias = new RoutesAlias();
651
651
  function processNavigateUrl(option) {
652
652
  var _pathPieces$pathname;
653
653
 
654
- var pathPieces = J(option.url); // 处理自定义路由
654
+ var pathPieces = J(option.url); // 处理相对路径
655
655
 
656
- pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理相对路径
657
-
658
- if (pathPieces !== null && pathPieces !== void 0 && (_pathPieces$pathname = pathPieces.pathname) !== null && _pathPieces$pathname !== void 0 && _pathPieces$pathname.includes('./')) {
659
- 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('/');
660
658
  parts.pop();
661
659
  pathPieces.pathname.split('/').forEach(function (item) {
662
660
  if (item === '.') {
@@ -666,8 +664,10 @@ function processNavigateUrl(option) {
666
664
  item === '..' ? parts.pop() : parts.push(item);
667
665
  });
668
666
  pathPieces.pathname = parts.join('/');
669
- } // 处理 basename
667
+ } // 处理自定义路由
668
+
670
669
 
670
+ pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname)); // 处理 basename
671
671
 
672
672
  pathPieces.pathname = prependBasename(pathPieces.pathname); // hack fix history v5 bug: https://github.com/remix-run/history/issues/814
673
673
 
@@ -1964,81 +1964,12 @@ var filterObj = function filterObj(obj, predicate) {
1964
1964
  };
1965
1965
  })(queryString);
1966
1966
 
1967
- var pageScrollFn;
1968
- var pageDOM = window;
1969
- function bindPageScroll(page, pageEl, config) {
1970
- pageEl.removeEventListener('scroll', pageScrollFn);
1971
- pageDOM = pageEl;
1972
- var distance = config.onReachBottomDistance || 50;
1973
- var isReachBottom = false;
1974
-
1975
- pageScrollFn = function pageScrollFn() {
1976
- page.onPageScroll && page.onPageScroll({
1977
- scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
1978
- });
1979
-
1980
- if (isReachBottom && getOffset() > distance) {
1981
- isReachBottom = false;
1982
- }
1983
-
1984
- if (page.onReachBottom && !isReachBottom && getOffset() < distance) {
1985
- isReachBottom = true;
1986
- page.onReachBottom();
1987
- }
1988
- };
1989
-
1990
- pageDOM.addEventListener('scroll', pageScrollFn, false);
1991
- }
1992
-
1993
- function getOffset() {
1994
- if (pageDOM instanceof Window) {
1995
- return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
1996
- } else {
1997
- return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
1998
- }
1999
- }
2000
-
2001
- var pageResizeFn;
2002
- function bindPageResize(page) {
2003
- window.removeEventListener('resize', pageResizeFn);
2004
-
2005
- pageResizeFn = function pageResizeFn() {
2006
- page.onResize && page.onResize({
2007
- size: {
2008
- windowHeight: window.innerHeight,
2009
- windowWidth: window.innerWidth
2010
- }
2011
- });
2012
- };
2013
-
2014
- window.addEventListener('resize', pageResizeFn, false);
2015
- }
2016
-
2017
- function bindPageEvents(page, pageEl) {
2018
- var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2019
-
2020
- if (!pageEl) {
2021
- pageEl = getPageContainer();
2022
- }
2023
-
2024
- bindPageScroll(page, pageEl, config);
2025
- bindPageResize(page);
2026
- }
2027
-
2028
- function getPageContainer() {
2029
- var _Current$page;
2030
-
2031
- var id = (_Current$page = runtime.Current.page) === null || _Current$page === void 0 ? void 0 : _Current$page.path;
2032
- var el = id ? document.getElementById(id) : document.querySelector('.taro_page') || document.querySelector('.taro_router');
2033
- return el || window;
2034
- }
2035
-
2036
1967
  /**
2037
1968
  * 插入页面动画需要的样式
2038
1969
  */
2039
1970
  function loadAnimateStyle() {
2040
1971
  var ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
2041
- var css = "\n.taro_router .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: #fff;\n transform: translate(100%, 0);\n transition: transform ".concat(ms, "ms;\n}\n\n.taro_router .taro_page.taro_tabbar_page,\n.taro_router .taro_page.taro_page_show.taro_page_stationed {\n transform: none;\n}\n\n.taro_router .taro_page.taro_page_show {\n transform: translate(0, 0);\n}");
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}");
2042
1973
  var style = document.createElement('style');
2043
1974
  style.innerHTML = css;
2044
1975
  document.getElementsByTagName('head')[0].appendChild(style);
@@ -2075,6 +2006,56 @@ function initTabbar(config) {
2075
2006
  taro.initTabBarApis(config);
2076
2007
  }
2077
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
+
2078
2059
  function setDisplay(el) {
2079
2060
  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
2080
2061
 
@@ -2277,7 +2258,7 @@ var PageHandler = /*#__PURE__*/function () {
2277
2258
  key: "onReady",
2278
2259
  value: function onReady(page) {
2279
2260
  var onLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2280
- var pageEl = document.getElementById(page.path);
2261
+ var pageEl = this.getPageContainer(page);
2281
2262
 
2282
2263
  if (pageEl && !(pageEl !== null && pageEl !== void 0 && pageEl['__isReady'])) {
2283
2264
  var _el$componentOnReady, _el$componentOnReady$;
@@ -2305,7 +2286,7 @@ var PageHandler = /*#__PURE__*/function () {
2305
2286
 
2306
2287
  stacks.push(page);
2307
2288
  var param = this.getQuery(stacks.length, '', page.options);
2308
- var pageEl = document.getElementById(page.path);
2289
+ var pageEl = this.getPageContainer(page);
2309
2290
 
2310
2291
  if (pageEl) {
2311
2292
  var _page$onShow;
@@ -2314,14 +2295,14 @@ var PageHandler = /*#__PURE__*/function () {
2314
2295
  this.isTabBar && pageEl.classList.add('taro_tabbar_page');
2315
2296
  this.addAnimation(pageEl, stacksIndex === 0);
2316
2297
  (_page$onShow = page.onShow) === null || _page$onShow === void 0 ? void 0 : _page$onShow.call(page);
2317
- bindPageEvents(page, pageEl, pageConfig);
2298
+ this.bindPageEvents(page, pageEl, pageConfig);
2318
2299
  } else {
2319
2300
  var _page$onLoad;
2320
2301
 
2321
2302
  (_page$onLoad = page.onLoad) === null || _page$onLoad === void 0 ? void 0 : _page$onLoad.call(page, param, function () {
2322
2303
  var _pageEl, _page$onShow2;
2323
2304
 
2324
- pageEl = document.getElementById(page.path);
2305
+ pageEl = _this2.getPageContainer(page);
2325
2306
  _this2.isTabBar && ((_pageEl = pageEl) === null || _pageEl === void 0 ? void 0 : _pageEl.classList.add('taro_tabbar_page'));
2326
2307
 
2327
2308
  _this2.addAnimation(pageEl, stacksIndex === 0);
@@ -2329,7 +2310,8 @@ var PageHandler = /*#__PURE__*/function () {
2329
2310
  _this2.onReady(page, true);
2330
2311
 
2331
2312
  (_page$onShow2 = page.onShow) === null || _page$onShow2 === void 0 ? void 0 : _page$onShow2.call(page);
2332
- bindPageEvents(page, pageEl, pageConfig);
2313
+
2314
+ _this2.bindPageEvents(page, pageEl, pageConfig);
2333
2315
  });
2334
2316
  }
2335
2317
  }
@@ -2354,7 +2336,7 @@ var PageHandler = /*#__PURE__*/function () {
2354
2336
  }
2355
2337
 
2356
2338
  this.lastUnloadPage = page;
2357
- var pageEl = document.getElementById(page.path);
2339
+ var pageEl = this.getPageContainer(page);
2358
2340
  pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_stationed');
2359
2341
  pageEl === null || pageEl === void 0 ? void 0 : pageEl.classList.remove('taro_page_show');
2360
2342
  this.unloadTimer = setTimeout(function () {
@@ -2366,7 +2348,7 @@ var PageHandler = /*#__PURE__*/function () {
2366
2348
  } else {
2367
2349
  var _page$onUnload;
2368
2350
 
2369
- var _pageEl2 = document.getElementById(page.path);
2351
+ var _pageEl2 = this.getPageContainer(page);
2370
2352
 
2371
2353
  _pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_stationed');
2372
2354
  _pageEl2 === null || _pageEl2 === void 0 ? void 0 : _pageEl2.classList.remove('taro_page_show');
@@ -2384,7 +2366,7 @@ var PageHandler = /*#__PURE__*/function () {
2384
2366
  var stacksIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
2385
2367
  if (!page) return;
2386
2368
  var param = this.getQuery(stacks.length, '', page.options);
2387
- var pageEl = document.getElementById(page.path);
2369
+ var pageEl = this.getPageContainer(page);
2388
2370
 
2389
2371
  if (pageEl) {
2390
2372
  var _page$onShow3;
@@ -2392,21 +2374,22 @@ var PageHandler = /*#__PURE__*/function () {
2392
2374
  setDisplay(pageEl);
2393
2375
  this.addAnimation(pageEl, stacksIndex === 0);
2394
2376
  (_page$onShow3 = page.onShow) === null || _page$onShow3 === void 0 ? void 0 : _page$onShow3.call(page);
2395
- bindPageEvents(page, pageEl, pageConfig);
2377
+ this.bindPageEvents(page, pageEl, pageConfig);
2396
2378
  } else {
2397
2379
  var _page$onLoad2;
2398
2380
 
2399
2381
  (_page$onLoad2 = page.onLoad) === null || _page$onLoad2 === void 0 ? void 0 : _page$onLoad2.call(page, param, function () {
2400
2382
  var _page$onShow4;
2401
2383
 
2402
- pageEl = document.getElementById(page.path);
2384
+ pageEl = _this4.getPageContainer(page);
2403
2385
 
2404
2386
  _this4.addAnimation(pageEl, stacksIndex === 0);
2405
2387
 
2406
2388
  _this4.onReady(page, false);
2407
2389
 
2408
2390
  (_page$onShow4 = page.onShow) === null || _page$onShow4 === void 0 ? void 0 : _page$onShow4.call(page);
2409
- bindPageEvents(page, pageEl, pageConfig);
2391
+
2392
+ _this4.bindPageEvents(page, pageEl, pageConfig);
2410
2393
  });
2411
2394
  }
2412
2395
  }
@@ -2417,7 +2400,7 @@ var PageHandler = /*#__PURE__*/function () {
2417
2400
 
2418
2401
  if (!page) return; // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功
2419
2402
 
2420
- var pageEl = document.getElementById(page.path);
2403
+ var pageEl = this.getPageContainer(page);
2421
2404
 
2422
2405
  if (pageEl) {
2423
2406
  var _page$onHide;
@@ -2460,6 +2443,36 @@ var PageHandler = /*#__PURE__*/function () {
2460
2443
  pageEl.classList.add('taro_page_stationed');
2461
2444
  }
2462
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
+ }
2463
2476
  }]);
2464
2477
 
2465
2478
  return PageHandler;
@@ -2487,6 +2500,8 @@ function createRouter(app, config, framework) {
2487
2500
 
2488
2501
  var render = /*#__PURE__*/function () {
2489
2502
  var _ref2 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(_ref) {
2503
+ var _config$window;
2504
+
2490
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;
2491
2506
 
2492
2507
  return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
@@ -2532,7 +2547,7 @@ function createRouter(app, config, framework) {
2532
2547
 
2533
2548
  case 17:
2534
2549
  pageConfig = handler.pageConfig;
2535
- 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;
2536
2551
  runtime.eventCenter.trigger('__taroRouterChange', {
2537
2552
  toLocation: {
2538
2553
  path: handler.pathname
@@ -2541,7 +2556,10 @@ function createRouter(app, config, framework) {
2541
2556
 
2542
2557
  if (pageConfig) {
2543
2558
  document.title = (_pageConfig$navigatio = pageConfig.navigationBarTitleText) !== null && _pageConfig$navigatio !== void 0 ? _pageConfig$navigatio : document.title;
2544
- enablePullDownRefresh = pageConfig.enablePullDownRefresh;
2559
+
2560
+ if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
2561
+ enablePullDownRefresh = pageConfig.enablePullDownRefresh;
2562
+ }
2545
2563
  }
2546
2564
 
2547
2565
  currentPage = runtime.Current.page;