dumi 2.2.1 → 2.2.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.
Files changed (128) hide show
  1. package/compiled/crates/swc_plugin_react_demo.wasm +0 -0
  2. package/dist/assetParsers/atom.js +15 -5
  3. package/dist/assetParsers/block.js +27 -9
  4. package/dist/cli.js +8 -1
  5. package/dist/client/pages/Demo/index.js +3 -8
  6. package/dist/client/theme-api/AtomRenderer.d.ts +2 -2
  7. package/dist/client/theme-api/AtomRenderer.js +19 -35
  8. package/dist/client/theme-api/DumiDemo.js +8 -13
  9. package/dist/client/theme-api/DumiDemoGrid.js +12 -26
  10. package/dist/client/theme-api/DumiPage.js +16 -34
  11. package/dist/client/theme-api/openCodeSandbox.js +18 -23
  12. package/dist/client/theme-api/openStackBlitz.js +6 -14
  13. package/dist/client/theme-api/types.d.ts +15 -12
  14. package/dist/client/theme-api/useAtomAssets.js +1 -2
  15. package/dist/client/theme-api/useLocale.js +10 -19
  16. package/dist/client/theme-api/useNavData.js +78 -103
  17. package/dist/client/theme-api/usePrefersColor.d.ts +2 -2
  18. package/dist/client/theme-api/usePrefersColor.js +39 -66
  19. package/dist/client/theme-api/useRouteMeta.js +9 -23
  20. package/dist/client/theme-api/useSidebarData.js +124 -158
  21. package/dist/client/theme-api/useSiteSearch/index.d.ts +1 -1
  22. package/dist/client/theme-api/useSiteSearch/index.js +24 -38
  23. package/dist/client/theme-api/useTabMeta.js +8 -19
  24. package/dist/client/theme-api/utils.d.ts +2 -2
  25. package/dist/client/theme-api/utils.js +33 -47
  26. package/dist/client/typings.d.ts +0 -5
  27. package/dist/features/assets.js +23 -4
  28. package/dist/features/autoAlias.js +8 -3
  29. package/dist/features/compile/babelLoaderCustomize.js +0 -2
  30. package/dist/features/compile/index.js +20 -9
  31. package/dist/features/configPlugins/index.js +3 -4
  32. package/dist/features/configPlugins/schema.d.ts +1 -1
  33. package/dist/features/configPlugins/schema.js +20 -3
  34. package/dist/features/derivative.js +54 -11
  35. package/dist/features/exportStatic.js +11 -7
  36. package/dist/features/exports.js +8 -3
  37. package/dist/features/html2sketch.js +7 -5
  38. package/dist/features/locales.js +53 -17
  39. package/dist/features/meta.js +23 -10
  40. package/dist/features/parser.js +17 -5
  41. package/dist/features/routes.js +63 -24
  42. package/dist/features/sideEffects/docSideEffectsWebpackPlugin.js +27 -16
  43. package/dist/features/sideEffects/index.js +13 -4
  44. package/dist/features/sitemap.js +17 -5
  45. package/dist/features/tabs.js +23 -11
  46. package/dist/features/theme/index.js +133 -38
  47. package/dist/features/theme/loader.js +23 -7
  48. package/dist/index.js +10 -2
  49. package/dist/loaders/demo/index.js +3 -3
  50. package/dist/loaders/markdown/index.d.ts +1 -1
  51. package/dist/loaders/markdown/index.js +36 -24
  52. package/dist/loaders/markdown/transformer/index.d.ts +2 -1
  53. package/dist/loaders/markdown/transformer/index.js +34 -17
  54. package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +3 -1
  55. package/dist/loaders/markdown/transformer/rehypeDemo.js +125 -68
  56. package/dist/loaders/markdown/transformer/rehypeDesc.js +8 -3
  57. package/dist/loaders/markdown/transformer/rehypeEnhancedTag.js +8 -3
  58. package/dist/loaders/markdown/transformer/rehypeHighlightLine.js +8 -3
  59. package/dist/loaders/markdown/transformer/rehypeImg.js +8 -3
  60. package/dist/loaders/markdown/transformer/rehypeIsolation.js +36 -21
  61. package/dist/loaders/markdown/transformer/rehypeJsxify.js +8 -3
  62. package/dist/loaders/markdown/transformer/rehypeLink.d.ts +1 -1
  63. package/dist/loaders/markdown/transformer/rehypeLink.js +24 -9
  64. package/dist/loaders/markdown/transformer/rehypeRaw.d.ts +1 -1
  65. package/dist/loaders/markdown/transformer/rehypeRaw.js +20 -6
  66. package/dist/loaders/markdown/transformer/rehypeSlug.js +16 -3
  67. package/dist/loaders/markdown/transformer/rehypeStrip.js +8 -3
  68. package/dist/loaders/markdown/transformer/rehypeText.js +14 -5
  69. package/dist/loaders/markdown/transformer/remarkBreaks.js +16 -5
  70. package/dist/loaders/markdown/transformer/remarkContainer.js +28 -13
  71. package/dist/loaders/markdown/transformer/remarkEmbed.js +43 -21
  72. package/dist/loaders/markdown/transformer/remarkMeta.d.ts +3 -1
  73. package/dist/loaders/markdown/transformer/remarkMeta.js +39 -9
  74. package/dist/loaders/page/index.js +12 -4
  75. package/dist/loaders/pre-raw/index.js +0 -2
  76. package/dist/preset.js +8 -3
  77. package/dist/registerMethods.js +0 -2
  78. package/dist/service/dev.js +8 -1
  79. package/dist/service/printHelp.js +3 -1
  80. package/dist/techStacks/react.js +8 -3
  81. package/dist/types.d.ts +6 -6
  82. package/dist/utils.d.ts +1 -1
  83. package/dist/utils.js +15 -6
  84. package/package.json +11 -9
  85. package/theme-default/builtins/API/index.js +15 -36
  86. package/theme-default/builtins/Badge/index.js +0 -3
  87. package/theme-default/builtins/Container/index.js +6 -15
  88. package/theme-default/builtins/Previewer/index.js +1 -8
  89. package/theme-default/builtins/SourceCode/index.js +15 -27
  90. package/theme-default/builtins/Table/index.js +10 -25
  91. package/theme-default/builtins/Tree/index.js +13 -44
  92. package/theme-default/layouts/DocLayout/index.js +14 -27
  93. package/theme-default/locales/en-US.json +4 -0
  94. package/theme-default/locales/zh-CN.json +4 -0
  95. package/theme-default/slots/ColorSwitch/index.js +7 -22
  96. package/theme-default/slots/Content/index.js +5 -7
  97. package/theme-default/slots/Content/index.less +16 -1
  98. package/theme-default/slots/ContentFooter/index.d.ts +4 -0
  99. package/theme-default/slots/ContentFooter/index.js +93 -0
  100. package/theme-default/slots/ContentFooter/index.less +163 -0
  101. package/theme-default/slots/ContentTabs/index.d.ts +1 -1
  102. package/theme-default/slots/ContentTabs/index.js +5 -5
  103. package/theme-default/slots/Features/index.js +6 -11
  104. package/theme-default/slots/Footer/index.js +1 -4
  105. package/theme-default/slots/Header/index.js +7 -18
  106. package/theme-default/slots/HeaderExtra/index.js +0 -2
  107. package/theme-default/slots/Hero/index.js +2 -6
  108. package/theme-default/slots/HeroTitle/index.js +0 -2
  109. package/theme-default/slots/LangSwitch/index.js +23 -35
  110. package/theme-default/slots/Logo/index.js +1 -4
  111. package/theme-default/slots/Navbar/index.js +14 -29
  112. package/theme-default/slots/NavbarExtra/index.js +0 -2
  113. package/theme-default/slots/NotFound/index.js +0 -2
  114. package/theme-default/slots/PreviewerActions/index.js +13 -35
  115. package/theme-default/slots/PreviewerActionsExtra/index.js +0 -2
  116. package/theme-default/slots/RtlSwitch/index.js +6 -20
  117. package/theme-default/slots/RtlSwitch/index.less +5 -0
  118. package/theme-default/slots/SearchBar/Input.d.ts +1 -1
  119. package/theme-default/slots/SearchBar/Input.js +6 -5
  120. package/theme-default/slots/SearchBar/Mask.d.ts +1 -1
  121. package/theme-default/slots/SearchBar/Mask.js +0 -1
  122. package/theme-default/slots/SearchBar/index.js +20 -41
  123. package/theme-default/slots/SearchResult/index.d.ts +1 -1
  124. package/theme-default/slots/SearchResult/index.js +13 -36
  125. package/theme-default/slots/Sidebar/index.js +1 -4
  126. package/theme-default/slots/SocialIcon/index.d.ts +2 -2
  127. package/theme-default/slots/SocialIcon/index.js +1 -3
  128. package/theme-default/slots/Toc/index.js +12 -28
@@ -1,58 +1,44 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
2
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
3
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
7
  import { matchRoutes, useAppData, useLocation, useRouteData } from 'dumi';
14
8
  import { useCallback, useState } from 'react';
15
9
  import { useIsomorphicLayoutEffect } from "./utils";
10
+
16
11
  /**
17
12
  * hook for get matched route meta
18
13
  */
19
-
20
14
  export var useRouteMeta = function useRouteMeta() {
21
15
  var _useRouteData = useRouteData(),
22
- route = _useRouteData.route;
23
-
16
+ route = _useRouteData.route;
24
17
  var _useLocation = useLocation(),
25
- pathname = _useLocation.pathname;
26
-
18
+ pathname = _useLocation.pathname;
27
19
  var _useAppData = useAppData(),
28
- clientRoutes = _useAppData.clientRoutes;
29
-
20
+ clientRoutes = _useAppData.clientRoutes;
30
21
  var getter = useCallback(function () {
31
22
  var ret;
32
-
33
23
  if (route.path === pathname && !('isLayout' in route)) {
34
24
  // use `useRouteData` result if matched, for performance
35
25
  ret = route.meta;
36
26
  } else {
37
27
  var _matchRoutes, _matched$route;
38
-
39
28
  // match manually for dynamic route & layout component
40
29
  var matched = (_matchRoutes = matchRoutes(clientRoutes, pathname)) === null || _matchRoutes === void 0 ? void 0 : _matchRoutes.pop();
41
30
  ret = matched === null || matched === void 0 ? void 0 : (_matched$route = matched.route) === null || _matched$route === void 0 ? void 0 : _matched$route.meta;
42
31
  }
43
-
44
32
  return ret || {
45
33
  frontmatter: {},
46
34
  toc: [],
47
35
  texts: []
48
36
  };
49
37
  }, [clientRoutes.length, pathname]);
50
-
51
38
  var _useState = useState(getter),
52
- _useState2 = _slicedToArray(_useState, 2),
53
- meta = _useState2[0],
54
- setMeta = _useState2[1];
55
-
39
+ _useState2 = _slicedToArray(_useState, 2),
40
+ meta = _useState2[0],
41
+ setMeta = _useState2[1];
56
42
  useIsomorphicLayoutEffect(function () {
57
43
  setMeta(getter);
58
44
  }, [clientRoutes.length, pathname]);
@@ -1,162 +1,140 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
1
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
7
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8
-
9
8
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
10
-
11
9
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
-
13
10
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
14
-
15
11
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
16
-
17
12
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18
-
19
13
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
-
21
14
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
-
23
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
24
-
25
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
26
-
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
27
17
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
28
-
29
18
  import { useLocale, useLocation, useRouteMeta, useSiteData } from 'dumi';
30
19
  import { useState } from 'react';
31
20
  import { pickRouteSortMeta, useLocaleDocRoutes, useRouteDataComparer } from "./utils";
32
21
  var DEFAULT_GROUP_STUB_TITLE = '$default-group-title';
33
-
34
22
  var getLocaleClearPath = function getLocaleClearPath(routePath, locale) {
35
23
  return 'base' in locale ? routePath.replace(locale.base.slice(1), '').replace(/^\//, '') : routePath;
36
24
  };
25
+
37
26
  /**
38
27
  * get parent path from route path
39
28
  */
40
-
41
-
42
29
  function getRouteParentPath(path, _ref) {
43
30
  var _meta$frontmatter$fil;
44
-
45
31
  var meta = _ref.meta,
46
- is2LevelNav = _ref.is2LevelNav;
32
+ is2LevelNav = _ref.is2LevelNav;
47
33
  var isIndexDocRoute = ((_meta$frontmatter$fil = meta.frontmatter.filename) === null || _meta$frontmatter$fil === void 0 ? void 0 : _meta$frontmatter$fil.endsWith('index.md')) && !meta._atom_route && is2LevelNav;
48
- var paths = path.split('/') // strip end slash
34
+ var paths = path.split('/')
35
+ // strip end slash
49
36
  .filter(Boolean);
50
- var sliceEnd = Math.min(Math.max( // increase 1 level if route file is index.md
51
- isIndexDocRoute ? paths.length : paths.length - 1, // least 1-level
52
- 1), // up to 2-level when use conventional 2-level nav
37
+ var sliceEnd = Math.min(Math.max(
38
+ // increase 1 level if route file is index.md
39
+ isIndexDocRoute ? paths.length : paths.length - 1,
40
+ // least 1-level
41
+ 1),
42
+ // up to 2-level when use conventional 2-level nav
53
43
  is2LevelNav ? 2 : Infinity);
54
44
  return paths.slice(0, sliceEnd).join('/');
55
45
  }
46
+
56
47
  /**
57
48
  * hook for get sidebar data for all nav
58
49
  */
59
-
60
-
61
50
  export var useFullSidebarData = function useFullSidebarData() {
62
51
  var locale = useLocale();
63
52
  var routes = useLocaleDocRoutes();
64
-
65
53
  var _useSiteData = useSiteData(),
66
- themeConfig = _useSiteData.themeConfig,
67
- is2LevelNav = _useSiteData._2_level_nav_available;
68
-
54
+ themeConfig = _useSiteData.themeConfig,
55
+ is2LevelNav = _useSiteData._2_level_nav_available;
69
56
  var sidebarDataComparer = useRouteDataComparer();
70
-
71
57
  var _useState = useState(function () {
72
- // auto generate sidebar data from routes
73
- var data = Object.values(routes).reduce(function (ret, route) {
74
- var clearPath = getLocaleClearPath(route.path, locale); // skip index routes
75
-
76
- if (clearPath && route.meta) {
77
- var _ret$parentPath, _ret$parentPath$title, _ret$parentPath$title2;
78
-
79
- // extract parent path from route path
80
- // normal examples:
81
- // a => /a
82
- // en-US/a => /en-US/a
83
- // a/b => /a
84
- // en-US/a/b => /en-US/a
85
- // convention 2-level navs examples:
86
- // a/b => /a/b (if route file is a/b/index.md)
87
- // a/b/c => /a/b
88
- var parentPath = "/".concat(route.path.replace(clearPath, function (s) {
89
- return getRouteParentPath(s, {
90
- is2LevelNav: is2LevelNav,
91
- meta: route.meta
92
- });
93
- }));
94
-
95
- var _pickRouteSortMeta = pickRouteSortMeta({
96
- order: 0
97
- }, 'group', route.meta.frontmatter),
58
+ // auto generate sidebar data from routes
59
+ var data = Object.values(routes).reduce(function (ret, route) {
60
+ var clearPath = getLocaleClearPath(route.path, locale);
61
+
62
+ // skip index routes
63
+ if (clearPath && route.meta) {
64
+ var _ret$parentPath, _ret$parentPath$title, _ret$parentPath$title2;
65
+ // extract parent path from route path
66
+ // normal examples:
67
+ // a => /a
68
+ // en-US/a => /en-US/a
69
+ // a/b => /a
70
+ // en-US/a/b => /en-US/a
71
+ // convention 2-level navs examples:
72
+ // a/b => /a/b (if route file is a/b/index.md)
73
+ // a/b/c => /a/b
74
+ var parentPath = "/".concat(route.path.replace(clearPath, function (s) {
75
+ return getRouteParentPath(s, {
76
+ is2LevelNav: is2LevelNav,
77
+ meta: route.meta
78
+ });
79
+ }));
80
+ var _pickRouteSortMeta = pickRouteSortMeta({
81
+ order: 0
82
+ }, 'group', route.meta.frontmatter),
98
83
  title = _pickRouteSortMeta.title,
99
84
  order = _pickRouteSortMeta.order;
85
+ var titleKey = title || DEFAULT_GROUP_STUB_TITLE;
86
+
87
+ // create group data by nav path & group name
88
+ (_ret$parentPath = ret[parentPath]) !== null && _ret$parentPath !== void 0 ? _ret$parentPath : ret[parentPath] = {};
89
+ ret[parentPath][titleKey] = {
90
+ title: title,
91
+ order: ((_ret$parentPath$title = ret[parentPath][titleKey]) === null || _ret$parentPath$title === void 0 ? void 0 : _ret$parentPath$title.order) || order,
92
+ children: [].concat(_toConsumableArray(((_ret$parentPath$title2 = ret[parentPath][titleKey]) === null || _ret$parentPath$title2 === void 0 ? void 0 : _ret$parentPath$title2.children) || []), [{
93
+ title: route.meta.frontmatter.title,
94
+ link: "/".concat(route.path),
95
+ order: route.meta.frontmatter.order || 0,
96
+ frontmatter: route.meta.frontmatter
97
+ }])
98
+ };
99
+ }
100
+ return ret;
101
+ }, {});
100
102
 
101
- var titleKey = title || DEFAULT_GROUP_STUB_TITLE; // create group data by nav path & group name
102
-
103
- (_ret$parentPath = ret[parentPath]) !== null && _ret$parentPath !== void 0 ? _ret$parentPath : ret[parentPath] = {};
104
- ret[parentPath][titleKey] = {
105
- title: title,
106
- order: ((_ret$parentPath$title = ret[parentPath][titleKey]) === null || _ret$parentPath$title === void 0 ? void 0 : _ret$parentPath$title.order) || order,
107
- children: [].concat(_toConsumableArray(((_ret$parentPath$title2 = ret[parentPath][titleKey]) === null || _ret$parentPath$title2 === void 0 ? void 0 : _ret$parentPath$title2.children) || []), [{
108
- title: route.meta.frontmatter.title,
109
- link: "/".concat(route.path),
110
- order: route.meta.frontmatter.order || 0,
111
- frontmatter: route.meta.frontmatter
112
- }])
113
- };
114
- }
115
-
116
- return ret;
117
- }, {}); // destruct sidebar data into sidebar config
118
-
119
- var sidebarConfig = Object.entries(data).reduce(function (ret, _ref2) {
120
- var _ref3 = _slicedToArray(_ref2, 2),
103
+ // destruct sidebar data into sidebar config
104
+ var sidebarConfig = Object.entries(data).reduce(function (ret, _ref2) {
105
+ var _ref3 = _slicedToArray(_ref2, 2),
121
106
  navPath = _ref3[0],
122
107
  groups = _ref3[1];
123
-
124
- ret[navPath] = Object.values(groups).sort(sidebarDataComparer); // sort group children by order or title
125
-
126
- ret[navPath].forEach(function (group) {
127
- return group.children.sort(sidebarDataComparer);
128
- });
129
- return ret;
130
- }, {}); // allow user partial override
131
-
132
- return Object.assign(sidebarConfig, themeConfig.sidebar);
133
- }),
134
- _useState2 = _slicedToArray(_useState, 1),
135
- sidebar = _useState2[0];
136
-
108
+ ret[navPath] = Object.values(groups).sort(sidebarDataComparer);
109
+ // sort group children by order or title
110
+ ret[navPath].forEach(function (group) {
111
+ return group.children.sort(sidebarDataComparer);
112
+ });
113
+ return ret;
114
+ }, {});
115
+
116
+ // allow user partial override
117
+ return Object.assign(sidebarConfig, themeConfig.sidebar);
118
+ }),
119
+ _useState2 = _slicedToArray(_useState, 1),
120
+ sidebar = _useState2[0];
137
121
  return sidebar;
138
122
  };
139
-
140
123
  function getLeafMeta(data) {
141
124
  var leafMeta = {
142
125
  order: 0,
143
126
  title: ''
144
127
  };
145
-
146
128
  var _iterator = _createForOfIteratorHelper(data),
147
- _step;
148
-
129
+ _step;
149
130
  try {
150
131
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
151
132
  var group = _step.value;
152
-
153
133
  var _iterator2 = _createForOfIteratorHelper(group.children),
154
- _step2;
155
-
134
+ _step2;
156
135
  try {
157
136
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
158
137
  var item = _step2.value;
159
-
160
138
  if ('frontmatter' in item) {
161
139
  pickRouteSortMeta(leafMeta, 'nav', item.frontmatter);
162
140
  }
@@ -172,92 +150,80 @@ function getLeafMeta(data) {
172
150
  } finally {
173
151
  _iterator.f();
174
152
  }
175
-
176
153
  return leafMeta;
177
154
  }
155
+
178
156
  /**
179
157
  * hook for get full sidebar data in tree structure
180
158
  */
181
-
182
-
183
159
  export var useTreeSidebarData = function useTreeSidebarData() {
184
160
  var original = useFullSidebarData();
185
161
  var sidebarDataComparer = useRouteDataComparer();
186
-
187
162
  var _useState3 = useState(function () {
188
- var data = Object.entries(original) // match from the deepest level
189
- .sort(function (a, b) {
190
- return b[0].split('/').length - a[0].split('/').length;
191
- }).reduce(function (ret, _ref4) {
192
- var _ref5 = _slicedToArray(_ref4, 2),
163
+ var data = Object.entries(original)
164
+ // match from the deepest level
165
+ .sort(function (a, b) {
166
+ return b[0].split('/').length - a[0].split('/').length;
167
+ }).reduce(function (ret, _ref4) {
168
+ var _ref5 = _slicedToArray(_ref4, 2),
193
169
  path = _ref5[0],
194
170
  data = _ref5[1];
195
-
196
- var parent = path.replace(/\/[^/]+$/, '');
197
-
198
- if (parent) {
199
- var _ret$parent;
200
-
201
- // handle nested sidebar data
202
- // init parent first
203
- (_ret$parent = ret[parent]) !== null && _ret$parent !== void 0 ? _ret$parent : ret[parent] = _objectSpread({
204
- path: parent,
205
- children: original[parent] || []
206
- }, getLeafMeta(original[parent] || []));
207
-
208
- if (ret[path]) {
209
- // sort children first
210
- ret[path].children.sort(sidebarDataComparer); // put n-level sidebar data as parent children
211
-
212
- ret[parent].children.push(ret[path]);
213
- delete ret[path];
171
+ var parent = path.replace(/\/[^/]+$/, '');
172
+ if (parent) {
173
+ var _ret$parent;
174
+ // handle nested sidebar data
175
+ // init parent first
176
+ (_ret$parent = ret[parent]) !== null && _ret$parent !== void 0 ? _ret$parent : ret[parent] = _objectSpread({
177
+ path: parent,
178
+ children: original[parent] || []
179
+ }, getLeafMeta(original[parent] || []));
180
+ if (ret[path]) {
181
+ // sort children first
182
+ ret[path].children.sort(sidebarDataComparer);
183
+ // put n-level sidebar data as parent children
184
+ ret[parent].children.push(ret[path]);
185
+ delete ret[path];
186
+ } else {
187
+ var _ret$parent$children;
188
+ // put last-level sidebar data as parent children
189
+ (_ret$parent$children = ret[parent].children).push.apply(_ret$parent$children, _toConsumableArray(data));
190
+ }
214
191
  } else {
215
- var _ret$parent$children;
216
-
217
- // put last-level sidebar data as parent children
218
- (_ret$parent$children = ret[parent].children).push.apply(_ret$parent$children, _toConsumableArray(data));
192
+ // sort children first
193
+ data.sort(sidebarDataComparer);
194
+ // put top-level sidebar data
195
+ ret[path] = _objectSpread({
196
+ path: path,
197
+ children: data
198
+ }, getLeafMeta(data));
219
199
  }
220
- } else {
221
- // sort children first
222
- data.sort(sidebarDataComparer); // put top-level sidebar data
223
-
224
- ret[path] = _objectSpread({
225
- path: path,
226
- children: data
227
- }, getLeafMeta(data));
228
- }
229
-
230
- return ret;
231
- }, {});
232
- return Object.values(data);
233
- }),
234
- _useState4 = _slicedToArray(_useState3, 1),
235
- sidebar = _useState4[0];
236
-
200
+ return ret;
201
+ }, {});
202
+ return Object.values(data);
203
+ }),
204
+ _useState4 = _slicedToArray(_useState3, 1),
205
+ sidebar = _useState4[0];
237
206
  return sidebar;
238
207
  };
208
+
239
209
  /**
240
210
  * hook for get sidebar data for current nav
241
211
  */
242
-
243
212
  export var useSidebarData = function useSidebarData() {
244
213
  var locale = useLocale();
245
214
  var sidebar = useFullSidebarData();
246
-
247
215
  var _useSiteData2 = useSiteData(),
248
- is2LevelNav = _useSiteData2._2_level_nav_available;
249
-
216
+ is2LevelNav = _useSiteData2._2_level_nav_available;
250
217
  var _useLocation = useLocation(),
251
- pathname = _useLocation.pathname;
252
-
218
+ pathname = _useLocation.pathname;
253
219
  var meta = useRouteMeta();
254
- var clearPath = getLocaleClearPath(pathname.slice(1), locale); // extract parent path from location pathname
220
+ var clearPath = getLocaleClearPath(pathname.slice(1), locale);
221
+ // extract parent path from location pathname
255
222
  // /a => /a
256
223
  // /a/b => /a
257
224
  // /en-US/a => /en-US/a
258
225
  // /en-US/a/b => /en-US/a
259
226
  // /en-US/a/b/ => /en-US/a (also strip trailing /)
260
-
261
227
  var parentPath = clearPath ? pathname.replace(clearPath, function (s) {
262
228
  return getRouteParentPath(s, {
263
229
  is2LevelNav: is2LevelNav,
@@ -14,7 +14,7 @@ export interface ISearchNavResult {
14
14
  highlightTexts: IHighlightText[];
15
15
  }[];
16
16
  }
17
- export declare type ISearchResult = ISearchNavResult[];
17
+ export type ISearchResult = ISearchNavResult[];
18
18
  export declare const useSiteSearch: () => {
19
19
  keywords: string;
20
20
  setKeywords: (val: string) => void;
@@ -1,59 +1,47 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
1
2
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
7
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
-
9
8
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
-
11
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
-
13
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
-
15
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
16
-
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
17
12
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
-
19
13
  import { useNavData, useSiteData } from 'dumi';
20
14
  import { useCallback, useEffect, useRef, useState } from 'react';
21
- import { useLocaleDocRoutes } from "../utils"; // @ts-ignore
22
-
15
+ import { useLocaleDocRoutes } from "../utils";
16
+ // @ts-ignore
23
17
  import workerCode from '-!../../../../compiled/_internal/searchWorker.min?dumi-raw';
24
- var worker; // for ssr
18
+ var worker;
25
19
 
20
+ // for ssr
26
21
  if (typeof window !== 'undefined') {
27
22
  // use blob to avoid generate entry(chunk) for worker
28
23
  worker = new Worker(URL.createObjectURL(new Blob([workerCode], {
29
24
  type: 'application/javascript'
30
25
  })));
31
26
  }
32
-
33
27
  export var useSiteSearch = function useSiteSearch() {
34
28
  var debounceTimer = useRef();
35
29
  var routes = useLocaleDocRoutes();
36
-
37
30
  var _useSiteData = useSiteData(),
38
- demos = _useSiteData.demos;
39
-
31
+ demos = _useSiteData.demos;
40
32
  var _useState = useState(false),
41
- _useState2 = _slicedToArray(_useState, 2),
42
- loading = _useState2[0],
43
- setLoading = _useState2[1];
44
-
33
+ _useState2 = _slicedToArray(_useState, 2),
34
+ loading = _useState2[0],
35
+ setLoading = _useState2[1];
45
36
  var _useState3 = useState(''),
46
- _useState4 = _slicedToArray(_useState3, 2),
47
- keywords = _useState4[0],
48
- setKeywords = _useState4[1];
49
-
37
+ _useState4 = _slicedToArray(_useState3, 2),
38
+ keywords = _useState4[0],
39
+ setKeywords = _useState4[1];
50
40
  var navData = useNavData();
51
-
52
41
  var _useState5 = useState([]),
53
- _useState6 = _slicedToArray(_useState5, 2),
54
- result = _useState6[0],
55
- setResult = _useState6[1];
56
-
42
+ _useState6 = _slicedToArray(_useState5, 2),
43
+ result = _useState6[0],
44
+ setResult = _useState6[1];
57
45
  var setter = useCallback(function (val) {
58
46
  setLoading(true);
59
47
  setKeywords(val);
@@ -68,11 +56,10 @@ export var useSiteSearch = function useSiteSearch() {
68
56
  // omit demo component for postmessage
69
57
  var demoData = Object.entries(demos).reduce(function (acc, _ref) {
70
58
  var _ref2 = _slicedToArray(_ref, 2),
71
- key = _ref2[0],
72
- _ref2$ = _ref2[1],
73
- asset = _ref2$.asset,
74
- routeId = _ref2$.routeId;
75
-
59
+ key = _ref2[0],
60
+ _ref2$ = _ref2[1],
61
+ asset = _ref2$.asset,
62
+ routeId = _ref2$.routeId;
76
63
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, {
77
64
  asset: asset,
78
65
  routeId: routeId
@@ -89,7 +76,6 @@ export var useSiteSearch = function useSiteSearch() {
89
76
  }, [routes, demos, navData]);
90
77
  useEffect(function () {
91
78
  var str = keywords.trim();
92
-
93
79
  if (str) {
94
80
  clearTimeout(debounceTimer.current);
95
81
  debounceTimer.current = window.setTimeout(function () {
@@ -1,26 +1,18 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
2
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
3
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
7
  import { history, useLocation, useRouteMeta, useSearchParams } from 'dumi';
14
8
  import { useCallback } from 'react';
15
9
  export var TAB_QUERY_KEY = 'tab';
16
10
  export var useTabQueryState = function useTabQueryState() {
17
11
  var _useLocation = useLocation(),
18
- pathname = _useLocation.pathname;
19
-
12
+ pathname = _useLocation.pathname;
20
13
  var _useSearchParams = useSearchParams(),
21
- _useSearchParams2 = _slicedToArray(_useSearchParams, 1),
22
- params = _useSearchParams2[0];
23
-
14
+ _useSearchParams2 = _slicedToArray(_useSearchParams, 1),
15
+ params = _useSearchParams2[0];
24
16
  var setTabQueryState = useCallback(function (val) {
25
17
  if (val) params.set(TAB_QUERY_KEY, val);else params.delete(TAB_QUERY_KEY);
26
18
  history.push({
@@ -32,14 +24,11 @@ export var useTabQueryState = function useTabQueryState() {
32
24
  };
33
25
  export var useTabMeta = function useTabMeta() {
34
26
  var _tabs$find;
35
-
36
27
  var _useRouteMeta = useRouteMeta(),
37
- tabs = _useRouteMeta.tabs;
38
-
28
+ tabs = _useRouteMeta.tabs;
39
29
  var _useTabQueryState = useTabQueryState(),
40
- _useTabQueryState2 = _slicedToArray(_useTabQueryState, 1),
41
- tabKey = _useTabQueryState2[0];
42
-
30
+ _useTabQueryState2 = _slicedToArray(_useTabQueryState, 1),
31
+ tabKey = _useTabQueryState2[0];
43
32
  return tabs === null || tabs === void 0 ? void 0 : (_tabs$find = tabs.find(function (_ref) {
44
33
  var key = _ref.key;
45
34
  return tabKey === key;
@@ -1,5 +1,5 @@
1
1
  import { PluginManager } from 'dumi';
2
- import { useLayoutEffect } from 'react';
2
+ import { useEffect } from 'react';
3
3
  import type { ILocale, INav, INavItem, IRouteMeta, IRoutesById, IUserNavValue } from './types';
4
4
  /**
5
5
  * private instance, do not use it in your code
@@ -13,7 +13,7 @@ export declare const useLocaleDocRoutes: () => IRoutesById;
13
13
  * @returns code string
14
14
  */
15
15
  export declare const genReactRenderCode: (version: string) => string;
16
- export declare const useIsomorphicLayoutEffect: typeof useLayoutEffect;
16
+ export declare const useIsomorphicLayoutEffect: typeof useEffect;
17
17
  /**
18
18
  * common comparer for sidebar/nav items
19
19
  */