@arcblock/ux 0.78.26 → 1.6.60

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 (174) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +0 -56
  3. package/lib/ActionButton/index.js +6 -4
  4. package/lib/ActivityIndicator/index.js +75 -23
  5. package/lib/Alert/index.js +15 -11
  6. package/lib/Async/index.js +1 -1
  7. package/lib/Badge/index.js +17 -15
  8. package/lib/Blocklet/index.js +261 -0
  9. package/lib/Button/wrap.js +96 -43
  10. package/lib/ButtonGroup/index.js +3 -16
  11. package/lib/Center/index.js +30 -4
  12. package/lib/ClickToCopy/index.js +10 -8
  13. package/lib/CodeBlock/index.js +40 -13
  14. package/lib/Colors/index.js +15 -0
  15. package/lib/Colors/themes/default.js +85 -0
  16. package/lib/ContactForm/index.js +9 -10
  17. package/lib/CookieConsent/index.js +98 -0
  18. package/lib/CountDown/index.js +18 -14
  19. package/lib/Dialog/confirm.js +84 -0
  20. package/lib/Dialog/dialog.js +137 -0
  21. package/lib/Dialog/index.js +23 -0
  22. package/lib/Earth/index.js +33 -33
  23. package/lib/Empty/index.js +61 -0
  24. package/lib/Footer/index.js +16 -18
  25. package/lib/Icon/image.js +10 -13
  26. package/lib/Icon/index.js +10 -8
  27. package/lib/Img/index.js +212 -0
  28. package/lib/InfoRow/index.js +7 -6
  29. package/lib/Layout/dashboard/header.js +60 -42
  30. package/lib/Layout/dashboard/index.js +72 -60
  31. package/lib/Layout/dashboard/sidebar.js +41 -25
  32. package/lib/Layout/index.js +113 -51
  33. package/lib/Locale/browser-lang.js +0 -2
  34. package/lib/Locale/context.js +85 -61
  35. package/lib/Locale/selector.js +33 -20
  36. package/lib/Logo/index.js +15 -13
  37. package/lib/Metric/index.js +5 -6
  38. package/lib/NFTDisplay/README.md +59 -0
  39. package/lib/NFTDisplay/aspect-ratio-container.js +52 -0
  40. package/lib/NFTDisplay/broken.js +25 -0
  41. package/lib/NFTDisplay/index.js +317 -0
  42. package/lib/NFTDisplay/loading.js +23 -0
  43. package/lib/NFTDisplay/svg-embedder/img.js +68 -0
  44. package/lib/NFTDisplay/svg-embedder/inline-svg.js +54 -0
  45. package/lib/PageScroller/index.js +10 -11
  46. package/lib/PageScroller/usePrevValue.js +2 -2
  47. package/lib/PricingTable/PricingPlan.js +12 -15
  48. package/lib/PricingTable/index.js +5 -5
  49. package/lib/QRCode/index.js +89 -0
  50. package/lib/Result/common.js +176 -0
  51. package/lib/Result/index.js +61 -0
  52. package/lib/Result/result.js +69 -0
  53. package/lib/Result/translations.js +61 -0
  54. package/lib/Screenshot/index.js +14 -13
  55. package/lib/Spinner/index.js +37 -0
  56. package/lib/SplitButton/index.js +126 -0
  57. package/lib/Switch/index.js +107 -0
  58. package/lib/Tabs/index.js +24 -47
  59. package/lib/Tag/index.js +15 -13
  60. package/lib/Terminal/Player.js +43 -45
  61. package/lib/Terminal/index.js +3 -1
  62. package/lib/Terminal/util.js +2 -3
  63. package/lib/TextCollapse/index.js +21 -14
  64. package/lib/Theme/index.js +79 -63
  65. package/lib/Theme/responsiveFontSizes.js +8 -8
  66. package/lib/Toast/index.js +12 -11
  67. package/lib/Util/index.js +197 -26
  68. package/lib/Video/index.js +8 -11
  69. package/lib/Wallet/Action.js +15 -13
  70. package/lib/Wallet/Download.js +60 -58
  71. package/lib/Wallet/Open.js +2 -2
  72. package/lib/WechatPrompt/index.js +10 -10
  73. package/lib/index.js +6 -6
  74. package/lib/withTheme/index.js +5 -17
  75. package/lib/withTracker/error_boundary.js +3 -3
  76. package/lib/withTracker/index.js +6 -7
  77. package/package.json +23 -17
  78. package/src/ActionButton/index.js +65 -0
  79. package/src/ActivityIndicator/index.js +141 -0
  80. package/src/Alert/index.js +104 -0
  81. package/src/Async/index.js +39 -0
  82. package/src/Badge/index.js +71 -0
  83. package/src/Blocklet/index.js +424 -0
  84. package/src/Button/index.js +4 -0
  85. package/src/Button/wrap.js +101 -0
  86. package/src/ButtonGroup/index.js +6 -0
  87. package/src/Center/index.js +40 -0
  88. package/src/ClickToCopy/index.js +90 -0
  89. package/src/CodeBlock/index.js +160 -0
  90. package/src/Colors/index.js +1 -0
  91. package/src/Colors/themes/default.js +54 -0
  92. package/src/ContactForm/index.js +240 -0
  93. package/src/CookieConsent/index.js +90 -0
  94. package/src/CountDown/index.js +151 -0
  95. package/src/Dialog/confirm.js +76 -0
  96. package/src/Dialog/dialog.js +162 -0
  97. package/src/Dialog/index.js +2 -0
  98. package/src/DriftBot/index.js +81 -0
  99. package/src/Earth/countries.json +8057 -0
  100. package/src/Earth/index.js +511 -0
  101. package/src/Earth/util.js +69 -0
  102. package/src/Empty/index.js +41 -0
  103. package/src/Footer/index.js +110 -0
  104. package/src/Icon/image.js +55 -0
  105. package/src/Icon/index.js +69 -0
  106. package/src/Img/index.js +172 -0
  107. package/src/InfoRow/index.js +83 -0
  108. package/src/Layout/dashboard/header.js +157 -0
  109. package/src/Layout/dashboard/index.js +150 -0
  110. package/src/Layout/dashboard/sidebar.js +122 -0
  111. package/src/Layout/index.js +318 -0
  112. package/src/Locale/browser-lang.js +63 -0
  113. package/src/Locale/context.js +94 -0
  114. package/src/Locale/images/globe-dark.png +0 -0
  115. package/src/Locale/images/globe-light.png +0 -0
  116. package/src/Locale/selector.js +135 -0
  117. package/src/Logo/images/logo-dark-text.svg +3 -0
  118. package/src/Logo/images/logo-dark-top.svg +6 -0
  119. package/src/Logo/images/logo-light-text.svg +3 -0
  120. package/src/Logo/images/logo-light-top.svg +6 -0
  121. package/src/Logo/index.js +47 -0
  122. package/src/Metric/index.js +115 -0
  123. package/src/NFTDisplay/README.md +59 -0
  124. package/src/NFTDisplay/aspect-ratio-container.js +34 -0
  125. package/src/NFTDisplay/broken.js +18 -0
  126. package/src/NFTDisplay/index.js +257 -0
  127. package/src/NFTDisplay/loading.js +17 -0
  128. package/src/NFTDisplay/svg-embedder/img.js +36 -0
  129. package/src/NFTDisplay/svg-embedder/inline-svg.js +37 -0
  130. package/src/PageScroller/index.js +342 -0
  131. package/src/PageScroller/usePrevValue.js +12 -0
  132. package/src/PricingTable/PricingPlan.js +112 -0
  133. package/src/PricingTable/index.js +43 -0
  134. package/src/QRCode/index.js +56 -0
  135. package/src/Result/common.js +116 -0
  136. package/src/Result/index.js +31 -0
  137. package/src/Result/result.js +57 -0
  138. package/src/Result/translations.js +56 -0
  139. package/src/Screenshot/devices.css +1366 -0
  140. package/src/Screenshot/index.js +181 -0
  141. package/src/Spinner/index.js +19 -0
  142. package/src/SplitButton/index.js +112 -0
  143. package/src/Switch/index.js +78 -0
  144. package/src/Tabs/index.js +46 -0
  145. package/src/Tag/index.js +73 -0
  146. package/src/Terminal/Player.js +364 -0
  147. package/src/Terminal/index.js +150 -0
  148. package/src/Terminal/player.css +378 -0
  149. package/src/Terminal/util.js +167 -0
  150. package/src/Terminal/xterm.css +171 -0
  151. package/src/TextCollapse/index.js +92 -0
  152. package/src/Theme/index.js +184 -0
  153. package/src/Theme/responsiveFontSizes.js +94 -0
  154. package/src/Toast/index.js +118 -0
  155. package/src/Util/index.js +281 -0
  156. package/src/Video/index.js +72 -0
  157. package/src/Wallet/Action.js +105 -0
  158. package/src/Wallet/Download.js +130 -0
  159. package/src/Wallet/Open.js +50 -0
  160. package/src/Wallet/images/abtwallet.png +0 -0
  161. package/src/Wallet/images/android_download.svg +23 -0
  162. package/src/Wallet/images/app-store.svg +20 -0
  163. package/src/Wallet/images/google-play.svg +70 -0
  164. package/src/WechatPrompt/images/android.png +0 -0
  165. package/src/WechatPrompt/images/ios.png +0 -0
  166. package/src/WechatPrompt/index.js +81 -0
  167. package/src/index.js +63 -0
  168. package/src/withTheme/index.js +72 -0
  169. package/src/withTracker/README.md +34 -0
  170. package/src/withTracker/error_boundary.js +34 -0
  171. package/src/withTracker/index.js +70 -0
  172. package/lib/GraphQLPlayground/graphiql.css +0 -1850
  173. package/lib/GraphQLPlayground/index.js +0 -302
  174. package/lib/GraphQLPlayground/util.js +0 -55
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
 
14
- var _styles = require("@material-ui/core/styles");
14
+ var _withTheme = _interopRequireDefault(require("@material-ui/core/styles/withTheme"));
15
15
 
16
16
  var _reactRouterDom = require("react-router-dom");
17
17
 
@@ -19,36 +19,44 @@ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
19
19
 
20
20
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
21
21
 
22
+ var _teal = _interopRequireDefault(require("@material-ui/core/colors/teal"));
23
+
22
24
  var _image = _interopRequireDefault(require("../../Icon/image"));
23
25
 
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ var _Logo = _interopRequireDefault(require("../../Logo"));
25
27
 
26
- /* eslint-disable object-curly-newline */
28
+ const _excluded = ["location", "theme", "images", "links", "prefix", "addons", "logo"];
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
31
 
28
- /* eslint-disable react/destructuring-assignment */
32
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
33
 
30
- /* eslint-disable react/jsx-one-expression-per-line */
34
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
31
35
 
32
- /* eslint-disable react/jsx-no-target-blank */
33
- // eslint-disable-next-line import/no-unresolved
34
- // eslint-disable-next-line object-curly-newline
35
36
  function Sidebar(_ref) {
36
37
  let {
37
38
  location,
38
39
  theme,
39
40
  images,
40
41
  links,
41
- prefix
42
- } = _ref;
42
+ prefix,
43
+ addons,
44
+ logo
45
+ } = _ref,
46
+ rest = _objectWithoutProperties(_ref, _excluded);
43
47
 
44
48
  const isSelected = (url, name) => {
45
49
  const pattern = new RegExp("/".concat(name));
46
50
  return pattern.test(location.pathname);
47
51
  };
48
52
 
49
- return _react.default.createElement(MenuItems, null, _react.default.createElement("div", {
50
- className: "menu-top-items"
51
- }, links.map((_ref2) => {
53
+ return /*#__PURE__*/_react.default.createElement(MenuItems, rest, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, {
54
+ to: "/",
55
+ className: "sidebar-logo"
56
+ }, logo || /*#__PURE__*/_react.default.createElement(_Logo.default, {
57
+ showText: false,
58
+ size: 20
59
+ })), links.map(_ref2 => {
52
60
  let {
53
61
  url,
54
62
  name,
@@ -56,22 +64,26 @@ function Sidebar(_ref) {
56
64
  showBadge
57
65
  } = _ref2;
58
66
  const selected = isSelected(url, name);
59
- return _react.default.createElement(MenuItem, {
67
+ return /*#__PURE__*/_react.default.createElement(MenuItem, {
60
68
  component: _reactRouterDom.Link,
61
69
  key: url,
62
70
  selected: selected,
63
71
  to: url
64
- }, _react.default.createElement(_image.default, {
72
+ }, /*#__PURE__*/_react.default.createElement(_image.default, {
65
73
  name: images[name],
66
74
  size: 36,
67
75
  color: selected ? '#00c2c4' : theme.typography.color.main,
68
76
  prefix: prefix,
69
77
  showBadge: showBadge
70
- }), _react.default.createElement(_Typography.default, {
78
+ }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
71
79
  component: "span",
72
80
  className: "menu-title"
73
81
  }, title));
74
- })));
82
+ }), /*#__PURE__*/_react.default.createElement("div", {
83
+ style: {
84
+ flex: 1
85
+ }
86
+ }), addons);
75
87
  }
76
88
 
77
89
  Sidebar.propTypes = {
@@ -79,23 +91,27 @@ Sidebar.propTypes = {
79
91
  theme: _propTypes.default.object.isRequired,
80
92
  images: _propTypes.default.object.isRequired,
81
93
  links: _propTypes.default.array.isRequired,
82
- prefix: _propTypes.default.string
94
+ prefix: _propTypes.default.string,
95
+ addons: _propTypes.default.any,
96
+ logo: _propTypes.default.any
83
97
  };
84
98
  Sidebar.defaultProps = {
85
- prefix: '/images'
99
+ prefix: '/images',
100
+ addons: null,
101
+ logo: null
86
102
  };
87
103
 
88
- const MenuItems = _react.default.memo(_styledComponents.default.div.withConfig({
104
+ const MenuItems = /*#__PURE__*/_react.default.memo(_styledComponents.default.div.withConfig({
89
105
  displayName: "sidebar__MenuItems",
90
- componentId: "gaosgy-0"
91
- })(["flex:1;margin-top:16px;display:flex;flex-direction:column;justify-content:space-between;.menu-bottom-items{display:none;margin-bottom:16px;}"]));
106
+ componentId: "sc-gaosgy-0"
107
+ })(["flex:1;display:flex;flex-direction:column;&& .sidebar-logo{display:none;border-bottom:1px solid #eee;background:", ";position:sticky;top:0;z-index:1;padding:10px 0;text-align:center;font-size:0;}@media (max-width:", "px){&& .sidebar-logo{display:block;}}"], props => props.theme.palette.background.default, props => props.theme.breakpoints.values.md));
92
108
 
93
109
  const gradient = 'linear-gradient(32deg, rgba(144, 255, 230, 0.1), rgba(144, 255, 230, 0))';
94
110
  const MenuItem = (0, _styledComponents.default)(_Button.default).withConfig({
95
111
  displayName: "sidebar__MenuItem",
96
- componentId: "gaosgy-1"
97
- })(["&&{display:block;width:100%;transition:all 200ms ease-in-out;background:", ";padding:24px 0;border-left:2px solid ", ";&:hover{background:", ";border-left-color:", ";}.menu-title{margin-top:8px;font-size:12px;font-weight:500;text-align:center;text-transform:capitalize;letter-spacing:normal;width:80%;}.MuiButton-label{display:flex;flex-direction:column;justify-content:center;align-items:center;}}"], props => props.selected ? gradient : '', props => props.selected ? props.theme.colors.green : 'transparent', gradient, props => props.theme.colors.green);
112
+ componentId: "sc-gaosgy-1"
113
+ })(["&&{display:block;width:100%;transition:all 200ms ease-in-out;background:", ";padding:24px 0;border-left:2px solid ", ";&:hover{background:", ";border-left-color:", ";}.menu-title{margin-top:8px;font-size:12px;font-weight:500;text-align:center;text-transform:capitalize;letter-spacing:normal;width:80%;}.MuiButton-label{display:flex;flex-direction:column;justify-content:center;align-items:center;}}"], props => props.selected ? gradient : '', props => props.selected ? _teal.default.A700 : 'transparent', gradient, _teal.default.A700);
98
114
 
99
- var _default = (0, _reactRouterDom.withRouter)((0, _styles.withTheme)(Sidebar));
115
+ var _default = (0, _reactRouterDom.withRouter)((0, _withTheme.default)(Sidebar));
100
116
 
101
117
  exports.default = _default;
@@ -41,24 +41,35 @@ var _Footer = _interopRequireDefault(require("../Footer"));
41
41
 
42
42
  var _Open = _interopRequireDefault(require("../Wallet/Open"));
43
43
 
44
+ var _Icon = _interopRequireDefault(require("../Icon"));
45
+
46
+ var _Logo = _interopRequireDefault(require("../Logo"));
47
+
48
+ const _excluded = ["title", "brand", "description", "links", "logo", "showLogo", "addons", "footer", "baseUrl", "homeUrl", "children", "variant", "contentOnly"];
49
+
44
50
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
51
 
46
52
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
47
53
 
48
54
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
49
55
 
50
- // eslint-disable-next-line object-curly-newline
51
56
  function Layout(_ref) {
52
57
  let {
53
58
  title,
54
59
  brand,
60
+ description,
55
61
  links,
62
+ logo,
63
+ showLogo,
64
+ addons,
56
65
  footer,
57
66
  baseUrl,
67
+ homeUrl,
58
68
  children,
69
+ variant,
59
70
  contentOnly
60
71
  } = _ref,
61
- rest = _objectWithoutProperties(_ref, ["title", "brand", "links", "footer", "baseUrl", "children", "contentOnly"]);
72
+ rest = _objectWithoutProperties(_ref, _excluded);
62
73
 
63
74
  const [drawerOpen, setDrawerOpen] = _react.default.useState(false);
64
75
 
@@ -67,67 +78,109 @@ function Layout(_ref) {
67
78
  };
68
79
 
69
80
  if (contentOnly) {
70
- return _react.default.createElement(_Container.default, null, children);
81
+ return /*#__PURE__*/_react.default.createElement(_Container.default, null, children);
71
82
  }
72
83
 
73
- const drawer = _react.default.createElement("div", null, _react.default.createElement("div", {
84
+ let activeLink = '';
85
+ const {
86
+ pathname: currentPath
87
+ } = new URL(window.location);
88
+ links.forEach(link => {
89
+ if (currentPath.startsWith(link.url) && link.url.length > activeLink.length) {
90
+ activeLink = link.url;
91
+ }
92
+ });
93
+
94
+ const drawer = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
74
95
  className: "toolbar toolbar--drawer"
75
- }, brand), _react.default.createElement(_Divider.default, null), _react.default.createElement(_List.default, null, links.map(x => _react.default.createElement(_Link.default, {
96
+ }, showLogo ? /*#__PURE__*/_react.default.createElement("div", {
97
+ className: "menu-logo"
98
+ }, logo) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement("div", {
99
+ style: {
100
+ flexGrow: 1,
101
+ overflow: 'hidden',
102
+ textOverflow: 'ellipsis'
103
+ }
104
+ }, brand)), /*#__PURE__*/_react.default.createElement(_Divider.default, null), /*#__PURE__*/_react.default.createElement(_List.default, null, links.map(x => /*#__PURE__*/_react.default.createElement(_Link.default, {
105
+ className: "nav-link",
76
106
  key: x.url,
77
107
  href: x.url
78
- }, _react.default.createElement(_ListItem.default, {
79
- key: x.url,
80
- button: true
81
- }, _react.default.createElement(_ListItemText.default, {
82
- primary: x.title
83
- }))))));
84
-
85
- return _react.default.createElement(Div, rest, _react.default.createElement(_reactHelmet.default, {
86
- title: "".concat(title)
87
- }), _react.default.createElement(_AppBar.default, {
108
+ }, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
109
+ button: true,
110
+ className: activeLink === x.url ? 'drawer-highlight-nav' : ''
111
+ }, /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, x.icon && /*#__PURE__*/_react.default.createElement(_Icon.default, {
112
+ name: x.icon,
113
+ size: 18 * (x.iconZoom || 1),
114
+ color: "inherit",
115
+ style: {
116
+ marginRight: '5px'
117
+ }
118
+ }), x.title))))));
119
+
120
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Div, rest, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, {
121
+ title: title
122
+ }), /*#__PURE__*/_react.default.createElement(_AppBar.default, {
88
123
  position: "fixed",
89
- className: "appbar",
124
+ className: "appbar appbar--".concat(variant),
90
125
  color: "default",
91
126
  style: {
92
127
  height: 56
93
128
  }
94
- }, _react.default.createElement("div", {
95
- className: "header-mobile"
96
- }, _react.default.createElement(_Toolbar.default, {
129
+ }, /*#__PURE__*/_react.default.createElement(_Container.default, {
130
+ disableGutters: true
131
+ }, /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
97
132
  className: "toolbar"
98
- }, _react.default.createElement(_IconButton.default, {
133
+ }, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
99
134
  color: "inherit",
100
135
  "aria-label": "open drawer",
101
136
  edge: "start",
102
137
  onClick: onToggleDrawer,
103
138
  className: "menu-button"
104
- }, _react.default.createElement(_Menu.default, null)), _react.default.createElement(_Typography.default, {
105
- href: "/",
139
+ }, /*#__PURE__*/_react.default.createElement(_Menu.default, null)), showLogo ? /*#__PURE__*/_react.default.createElement("div", {
140
+ className: "menu-logo"
141
+ }, logo) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement(_Typography.default, {
142
+ href: homeUrl,
106
143
  component: "a",
107
- variant: "h6",
144
+ variant: "h5",
108
145
  color: "inherit",
109
146
  noWrap: true,
147
+ display: "block",
110
148
  className: "brand"
111
- }, brand))), _react.default.createElement("div", {
112
- className: "header-desktop"
113
- }, _react.default.createElement(_Toolbar.default, {
114
- className: "toolbar"
115
- }, _react.default.createElement(_Container.default, null, _react.default.createElement("nav", {
116
- className: "navbar"
117
- }, _react.default.createElement(_Typography.default, {
118
- href: "/",
119
- component: "a",
120
- variant: "h5",
149
+ }, brand), description && /*#__PURE__*/_react.default.createElement(_Typography.default, {
150
+ component: "small",
151
+ variant: "subtitle2",
121
152
  color: "inherit",
122
153
  noWrap: true,
123
- className: "brand"
124
- }, brand), _react.default.createElement("div", {
154
+ className: "description"
155
+ }, description), /*#__PURE__*/_react.default.createElement("div", {
156
+ style: {
157
+ flexGrow: 1
158
+ }
159
+ }), /*#__PURE__*/_react.default.createElement("div", {
125
160
  className: "nav-links"
126
- }, links.map(x => _react.default.createElement(_Link.default, {
161
+ }, links.map(x => /*#__PURE__*/_react.default.createElement(_Link.default, {
127
162
  key: x.url,
128
163
  href: x.url,
129
- className: "nav-link"
130
- }, x.title)))))))), _react.default.createElement(DrawerDiv, null, _react.default.createElement(_Drawer.default, {
164
+ className: "nav-link ".concat(activeLink === x.url ? 'highlight-nav' : ''),
165
+ color: x.color
166
+ }, x.icon && /*#__PURE__*/_react.default.createElement(_Icon.default, {
167
+ name: x.icon,
168
+ size: 20 * (x.iconZoom || 1),
169
+ color: "inherit",
170
+ style: {
171
+ marginRight: '5px'
172
+ }
173
+ }), x.title))), addons))), /*#__PURE__*/_react.default.createElement("div", {
174
+ className: "toolbar"
175
+ }), /*#__PURE__*/_react.default.createElement(_Container.default, {
176
+ style: {
177
+ marginTop: 16,
178
+ flex: 1
179
+ }
180
+ }, children), footer, !!baseUrl && /*#__PURE__*/_react.default.createElement(_Open.default, {
181
+ locale: "zh",
182
+ link: baseUrl
183
+ })), /*#__PURE__*/_react.default.createElement(DrawerDiv, null, /*#__PURE__*/_react.default.createElement(_Drawer.default, {
131
184
  variant: "temporary",
132
185
  open: drawerOpen,
133
186
  onClose: onToggleDrawer,
@@ -139,40 +192,49 @@ function Layout(_ref) {
139
192
  // Better open performance on mobile.
140
193
  disablePortal: true
141
194
  }
142
- }, drawer)), _react.default.createElement("div", {
143
- className: "toolbar"
144
- }), _react.default.createElement(_Container.default, {
145
- style: {
146
- marginTop: 16
147
- }
148
- }, children), footer, !!baseUrl && _react.default.createElement(_Open.default, {
149
- locale: "zh",
150
- link: baseUrl
151
- }));
195
+ }, drawer)));
152
196
  }
153
197
 
154
198
  Layout.propTypes = {
155
199
  title: _propTypes.default.string.isRequired,
156
200
  brand: _propTypes.default.any.isRequired,
201
+ description: _propTypes.default.any,
202
+ addons: _propTypes.default.any,
203
+ showLogo: _propTypes.default.bool,
204
+ logo: _propTypes.default.any,
157
205
  links: _propTypes.default.array,
158
206
  children: _propTypes.default.any.isRequired,
159
207
  baseUrl: _propTypes.default.string,
208
+ homeUrl: _propTypes.default.string,
209
+ variant: _propTypes.default.oneOf(['shadow', 'border']),
160
210
  footer: _propTypes.default.any,
161
211
  contentOnly: _propTypes.default.bool
162
212
  };
163
213
  Layout.defaultProps = {
164
214
  contentOnly: false,
165
215
  baseUrl: '',
216
+ homeUrl: '/',
166
217
  links: [],
167
- footer: _react.default.createElement(_Container.default, null, _react.default.createElement(_Footer.default, null))
218
+ showLogo: false,
219
+ logo: /*#__PURE__*/_react.default.createElement(_Logo.default, {
220
+ showText: false,
221
+ style: {
222
+ width: '40px',
223
+ height: '40px'
224
+ }
225
+ }),
226
+ variant: 'shadow',
227
+ addons: undefined,
228
+ description: undefined,
229
+ footer: /*#__PURE__*/_react.default.createElement(_Container.default, null, /*#__PURE__*/_react.default.createElement(_Footer.default, null))
168
230
  };
169
231
 
170
232
  const Div = _styledComponents.default.div.withConfig({
171
233
  displayName: "Layout__Div",
172
234
  componentId: "sc-12bllvc-0"
173
- })(["@media (min-width:", "px){.header-desktop{display:block;}.header-mobile{display:none;}}@media (max-width:", "px){.header-desktop{display:none;}.header-mobile{display:block;}}.toolbar{min-height:56px;.navbar{display:flex;justify-content:space-between;align-items:center;.nav-link{margin:8px 12px;font-size:16px;}}}.toolbar--drawer{display:flex;align-items:center;justify-content:flex-start;padding-left:16px;padding-right:16px;}.brand{margin-right:24px;cursor:pointer;display:flex;justify-content:flex-start;align-items:center;text-decoration:none;.logo{width:140px;margin-right:16px;}}"], props => props.theme.breakpoints.values.md, props => props.theme.breakpoints.values.md - 1);
235
+ })(["width:100%;min-height:100vh;display:flex;flex-direction:column;.appbar{&.appbar--border{box-shadow:none;&::before{content:'';position:absolute;left:0;right:0;height:1px;bottom:-1px;display:block;background-color:rgba(0,0,0,0.12);}}}.toolbar{min-height:56px;background:inherit;white-space:nowrap;.menu-logo{font-size:0;margin-right:8px;}.nav-links{display:flex;align-items:center;.nav-link{margin:8px 12px;font-size:16px;display:flex;align-items:center;}.highlight-nav{font-weight:bolder;}}.brand{cursor:pointer;text-decoration:none;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;}.description{color:#999;font-size:15px;margin-left:10px;font-weight:normal;flex-shrink:999999;}}@media (min-width:", "px){.toolbar{.menu-button{display:none;}.menu-logo{& + .brand{padding-left:45px;margin-left:-45px;}}}}@media (max-width:", "px){.toolbar{.nav-links,.menu-logo,.description{display:none;}}}"], props => props.theme.breakpoints.values.md, props => props.theme.breakpoints.values.md - 1);
174
236
 
175
237
  const DrawerDiv = _styledComponents.default.nav.withConfig({
176
238
  displayName: "Layout__DrawerDiv",
177
239
  componentId: "sc-12bllvc-1"
178
- })(["width:240px;.drawer-paper{width:240px;}.toolbar{min-height:56px;}"]);
240
+ })(["width:240px;.drawer-paper{width:240px;}.toolbar{min-height:56px;}a:hover,a:active,a:visited,a:focus{text-decoration:none;}.drawer-highlight-nav{background-color:#eee;}.toolbar--drawer{font-size:18px;.menu-logo{display:inline-flex;}}"]);
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- /* eslint-disable operator-linebreak */
9
-
10
8
  /* eslint-disable no-param-reassign */
11
9
  function startsWith(string, target, position) {
12
10
  const {
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.LocaleProvider = LocaleProvider;
7
- exports.useLocaleContext = useLocaleContext;
8
- exports.languages = exports.getLocale = exports.setLocale = exports.LocaleContext = exports.LocaleConsumer = void 0;
6
+ exports.useLocaleContext = exports.setLocale = exports.languages = exports.getLocale = exports.create = exports.LocaleProvider = exports.LocaleContext = exports.LocaleConsumer = void 0;
9
7
 
10
8
  var _react = _interopRequireWildcard(require("react"));
11
9
 
@@ -17,15 +15,17 @@ var _browserLang = _interopRequireDefault(require("./browser-lang"));
17
15
 
18
16
  var _Util = require("../Util");
19
17
 
18
+ const _excluded = ["children", "locale", "translations"];
19
+
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
22
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
23
 
24
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
26
+ 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; }
27
27
 
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
28
+ 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; }
29
29
 
30
30
  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; }
31
31
 
@@ -45,9 +45,20 @@ exports.languages = languages;
45
45
  const langParams = {
46
46
  languages: ['zh', 'en'],
47
47
  fallback: 'en'
48
+ }; // 跨应用传递多语言选择的方式是在 query string 中添加 locale 参数,LocaleSelector 要高优先级遵守这个参数
49
+
50
+ const getLocaleFromSearchParams = function getLocaleFromSearchParams() {
51
+ let url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location.href;
52
+ const locale = new URL(url).searchParams.get('locale');
53
+
54
+ if (languages.find(x => x.value === locale)) {
55
+ return locale;
56
+ }
57
+
58
+ return null;
48
59
  };
49
60
 
50
- const getLocale = locale => locale || _jsCookie.default.get(cookieName) || (0, _browserLang.default)(langParams);
61
+ const getLocale = locale => locale || getLocaleFromSearchParams() || _jsCookie.default.get(cookieName) || (0, _browserLang.default)(langParams);
51
62
 
52
63
  exports.getLocale = getLocale;
53
64
 
@@ -55,67 +66,80 @@ const setLocale = locale => _jsCookie.default.set(cookieName, locale, (0, _Util.
55
66
 
56
67
  exports.setLocale = setLocale;
57
68
 
58
- const replace = (template, data) => // eslint-disable-next-line implicit-arrow-linebreak
59
- template.replace(/{(\w*)}/g, (m, key) => data.hasOwnProperty(key) ? data[key] : '');
69
+ const replace = (template, data) => template.replace(/{(\w*)}/g, (m, key) => data.hasOwnProperty(key) ? data[key] : '');
60
70
 
61
- const LocaleContext = _react.default.createContext();
71
+ const create = () => {
72
+ const LocaleContext = /*#__PURE__*/_react.default.createContext();
62
73
 
63
- exports.LocaleContext = LocaleContext;
64
- const {
65
- Provider,
66
- Consumer
67
- } = LocaleContext; // eslint-disable-next-line object-curly-newline
68
-
69
- exports.LocaleConsumer = Consumer;
70
-
71
- function LocaleProvider(_ref) {
72
- let {
73
- children,
74
- locale,
75
- translations
76
- } = _ref,
77
- rest = _objectWithoutProperties(_ref, ["children", "locale", "translations"]);
78
-
79
- const [currentLocale, setCurrentLocale] = (0, _react.useState)(getLocale(locale));
80
- (0, _react.useEffect)(() => {
81
- setLocale(currentLocale);
82
- }, [currentLocale]);
83
-
84
- const changeLocale = newLocale => {
85
- setCurrentLocale(newLocale);
86
- };
74
+ const {
75
+ Provider,
76
+ Consumer
77
+ } = LocaleContext;
87
78
 
88
- const translate = (key, data) => {
89
- if (!translations[currentLocale] || !translations[currentLocale][key]) {
90
- // eslint-disable-next-line no-console
91
- console.warn("Warning: no ".concat(key, " translation of ").concat(currentLocale));
92
- return key;
93
- }
79
+ function LocaleProvider(_ref) {
80
+ let {
81
+ children,
82
+ locale,
83
+ translations
84
+ } = _ref,
85
+ rest = _objectWithoutProperties(_ref, _excluded);
94
86
 
95
- return replace(translations[currentLocale][key], data);
96
- };
87
+ const [currentLocale, setCurrentLocale] = (0, _react.useState)(getLocale(locale));
88
+ (0, _react.useEffect)(() => {
89
+ setLocale(currentLocale);
90
+ }, [currentLocale]);
91
+
92
+ const changeLocale = newLocale => {
93
+ setCurrentLocale(newLocale);
94
+ };
97
95
 
98
- return (// eslint-disable-next-line object-curly-newline
99
- _react.default.createElement(Provider, {
96
+ const translate = (key, data) => {
97
+ if (!translations[currentLocale] || !translations[currentLocale][key]) {
98
+ console.warn("Warning: no ".concat(key, " translation of ").concat(currentLocale));
99
+ return key;
100
+ }
101
+
102
+ return replace(translations[currentLocale][key], data);
103
+ };
104
+
105
+ return /*#__PURE__*/_react.default.createElement(Provider, {
100
106
  value: _objectSpread({
101
107
  locale: currentLocale,
102
108
  changeLocale,
103
109
  t: translate
104
110
  }, rest)
105
- }, children)
106
- );
107
- }
108
-
109
- function useLocaleContext() {
110
- const context = (0, _react.useContext)(LocaleContext);
111
- return context;
112
- }
113
-
114
- LocaleProvider.propTypes = {
115
- children: _propTypes.default.any.isRequired,
116
- translations: _propTypes.default.object.isRequired,
117
- locale: _propTypes.default.string
111
+ }, children);
112
+ }
113
+
114
+ function useLocaleContext() {
115
+ const context = (0, _react.useContext)(LocaleContext);
116
+ return context;
117
+ }
118
+
119
+ LocaleProvider.propTypes = {
120
+ children: _propTypes.default.any.isRequired,
121
+ translations: _propTypes.default.object.isRequired,
122
+ locale: _propTypes.default.string
123
+ };
124
+ LocaleProvider.defaultProps = {
125
+ locale: ''
126
+ };
127
+ return {
128
+ Consumer,
129
+ LocaleProvider,
130
+ LocaleContext,
131
+ useLocaleContext
132
+ };
118
133
  };
119
- LocaleProvider.defaultProps = {
120
- locale: ''
121
- };
134
+
135
+ exports.create = create;
136
+ const {
137
+ Consumer,
138
+ LocaleProvider,
139
+ LocaleContext,
140
+ useLocaleContext
141
+ } = create();
142
+ exports.useLocaleContext = useLocaleContext;
143
+ exports.LocaleContext = LocaleContext;
144
+ exports.LocaleProvider = LocaleProvider;
145
+ exports.LocaleConsumer = Consumer;