@arcblock/ux 1.17.14 → 1.17.17

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.
@@ -59,39 +59,37 @@ function AnimationWaiter(_ref) {
59
59
 
60
60
  const [tipsId, setTipsId] = (0, _react.useState)(0);
61
61
  const [currentSpeed, setCurrentSpeed] = (0, _react.useState)(speed);
62
- const [desc, setDesc] = (0, _react.useState)(''); // 动画的开始时间
62
+ const [messageId, setMessageId] = (0, _react.useState)(0); // 动画的开始时间
63
63
 
64
64
  const startTime = (0, _react.useRef)(new Date().getTime());
65
+
66
+ if (!Array.isArray(message)) {
67
+ // eslint-disable-next-line no-param-reassign
68
+ message = [message];
69
+ }
70
+
65
71
  (0, _react.useEffect)(() => {
66
72
  if (!message) {
67
73
  return;
68
74
  }
69
75
 
70
- let timer1;
71
- let msgId = 0;
72
-
73
- if (Array.isArray(message)) {
74
- setDesc(message[msgId]);
75
- timer1 = setInterval(() => {
76
- msgId++;
76
+ let msgIndex = 0;
77
+ const timer = setInterval(() => {
78
+ msgIndex++;
77
79
 
78
- if (msgId >= message.length) {
79
- if (messageLoop) {
80
- msgId = 0;
81
- } else {
82
- msgId = message.length - 1;
83
- }
80
+ if (msgIndex >= message.length) {
81
+ if (messageLoop) {
82
+ msgIndex = 0;
83
+ } else {
84
+ msgIndex = message.length - 1;
84
85
  }
86
+ }
85
87
 
86
- setDesc(message[msgId]);
87
- }, messageDuration);
88
- } else {
89
- setDesc(message);
90
- } // eslint-disable-next-line consistent-return
91
-
88
+ setMessageId(msgIndex);
89
+ }, messageDuration); // eslint-disable-next-line consistent-return
92
90
 
93
91
  return () => {
94
- clearInterval(timer1);
92
+ clearInterval(timer);
95
93
  };
96
94
  }, [message, messageDuration]); // tips
97
95
 
@@ -126,6 +124,19 @@ function AnimationWaiter(_ref) {
126
124
  }, 1000);
127
125
  return () => clearTimeout(timer);
128
126
  }, [currentSpeed]);
127
+
128
+ const getMsgClassName = index => {
129
+ let className = 'message-before';
130
+
131
+ if (messageId === index) {
132
+ className = 'show-message';
133
+ } else if (messageId < index) {
134
+ className = 'message-after';
135
+ }
136
+
137
+ return className;
138
+ };
139
+
129
140
  return /*#__PURE__*/_react.default.createElement(Container, rest, /*#__PURE__*/_react.default.createElement(_reactLottiePlayer.default, {
130
141
  loop: true,
131
142
  animationData: animationData || _defaultAnimation.default,
@@ -137,8 +148,16 @@ function AnimationWaiter(_ref) {
137
148
  }
138
149
  }), message && /*#__PURE__*/_react.default.createElement("div", {
139
150
  className: "waiter-message"
140
- }, desc, /*#__PURE__*/_react.default.createElement("span", {
141
- className: "waiter-loading"
151
+ }, message.map((text, index) => {
152
+ const className = getMsgClassName(index);
153
+ return /*#__PURE__*/_react.default.createElement("div", {
154
+ // eslint-disable-next-line react/no-array-index-key
155
+ key: index
156
+ }, /*#__PURE__*/_react.default.createElement("span", {
157
+ className: "message-block ".concat(className)
158
+ }, text), /*#__PURE__*/_react.default.createElement("span", {
159
+ className: "placeholder-message ".concat(className)
160
+ }, text));
142
161
  })), tips.length ? /*#__PURE__*/_react.default.createElement("div", {
143
162
  className: "waiter-tips-container"
144
163
  }, tips.map((e, index) => {
@@ -178,4 +197,4 @@ AnimationWaiter.defaultProps = {
178
197
  const Container = _styledComponents.default.div.withConfig({
179
198
  displayName: "AnimationWaiter__Container",
180
199
  componentId: "sc-1qcr25l-0"
181
- })(["display:flex;justify-content:center;align-items:center;flex-direction:column;width:100%;height:100%;.waiter-message{font-weight:700;font-size:18px;line-height:22px;}.waiter-tips-container{position:relative;margin-top:auto;width:100%;.waiter-tips-block{position:absolute;bottom:0;left:0;width:100%;opacity:0;pointer-events:none;z-index:1;transform:translate(-20px,0);transition:all ease 0.4s;&.show-tips{opacity:1;pointer-events:auto;z-index:2;transform:translate(0,0);}}}.waiter-loading::after{display:inline-block;animation:dotty steps(1,end) 2s infinite;content:'';}@keyframes dotty{0%{content:'';}25%{content:'.';}50%{content:'..';}75%{content:'...';}100%{content:'';}}"]);
200
+ })(["display:flex;justify-content:center;align-items:center;flex-direction:column;width:100%;height:100%;.waiter-message{position:relative;width:100%;font-weight:700;font-size:18px;line-height:22px;text-align:center;overflow:hidden;.message-block{position:absolute;left:0;width:100%;opacity:0;transition:all ease 0.3s;user-select:none;&.message-before{transform:translate(-20px,0);}&.message-after{transform:translate(20px,0);}&.show-message{transform:translate(0,0);opacity:1;user-select:text;z-index:2;}}.placeholder-message{user-select:none;display:none;opacity:0;&.show-message{display:block;}}}.waiter-tips-container{position:relative;margin-top:auto;width:100%;.waiter-tips-block{position:absolute;bottom:0;left:0;width:100%;opacity:0;pointer-events:none;z-index:1;transform:translate(-20px,0);transition:all ease 0.4s;&.show-tips{opacity:1;pointer-events:auto;z-index:2;transform:translate(0,0);}}}"]);
@@ -36,7 +36,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
36
36
  const Div = _styledComponents.default.div.withConfig({
37
37
  displayName: "blocklet__Div",
38
38
  componentId: "sc-atxvkd-0"
39
- })(["&.arcblock-blocklet{padding:16px 16px 0 16px;}.arcblock-blocklet__content{cursor:pointer;display:flex;", "{align-items:center;}}.arcblock-blocklet__cover{width:64px;height:64px;margin-right:16px;overflow:hidden;border-radius:12px;transform:translateZ(0);", "{width:80px;height:80px;margin-bottom:12px;}}.arcblock-blocklet__button--hover{&:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}&:not(.Mui-disabled){background-color:transparent !important;color:", ";}&:not(.Mui-disabled){&:hover{color:", ";}}}.arcblock-blocklet__info{flex:1;overflow:hidden;border-bottom:1px solid ", ";padding-bottom:24px;}.arcblock-blocklet__text{height:57px;overflow:hidden;}.arcblock-blocklet__title{margin:0;font-size:16px;font-weight:500;line-height:19px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-height:38px;word-break:break-all;}.arcblock-blocklet__describe{margin-top:2px;color:", ";font-size:14px;font-weight:500;line-height:17px;max-height:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__version{color:", ";font-size:12px;}"], props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.up('sm'), props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white, props => props.theme.palette.divider, props => props.theme.palette.grey[600], props => props.theme.palette.grey[600]);
39
+ })(["&.arcblock-blocklet{padding:16px 16px 0 16px;}.arcblock-blocklet__content{cursor:pointer;display:flex;", "{align-items:center;}}.arcblock-blocklet__cover{width:64px;height:64px;margin-right:16px;overflow:hidden;border-radius:12px;transform:translateZ(0);", "{width:80px;height:80px;margin-bottom:12px;}}.arcblock-blocklet__button--hover{&:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}&:not(.Mui-disabled){background-color:transparent !important;color:", ";}&:not(.Mui-disabled){&:hover{color:", ";}}}.arcblock-blocklet__info{flex:1;overflow:hidden;border-bottom:1px solid ", ";padding-bottom:24px;}.arcblock-blocklet__text{height:57px;overflow:hidden;}.arcblock-blocklet__title{margin:0;font-size:16px;font-weight:500;line-height:19px;max-height:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__describe{margin-top:4px;color:", ";font-size:14px;font-weight:500;line-height:17px;max-height:34px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all;}.arcblock-blocklet__version{color:", ";font-size:12px;}"], props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.up('sm'), props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white, props => props.theme.palette.divider, props => props.theme.palette.grey[600], props => props.theme.palette.grey[600]);
40
40
 
41
41
  function BlockletStore(_ref) {
42
42
  let {
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _Box = _interopRequireDefault(require("@material-ui/core/Box"));
15
+
16
+ var _Container = _interopRequireDefault(require("@material-ui/core/Container"));
17
+
18
+ var _useTheme = _interopRequireDefault(require("@material-ui/core/styles/useTheme"));
19
+
20
+ const _excluded = ["logo", "brand", "brandAddon", "description", "children", "addons", "prepend", "containerComponent"];
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ 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; }
25
+
26
+ 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; }
27
+
28
+ /**
29
+ * Header 组件
30
+ * TODO: Layout/dashboard 可以复用此处的 header
31
+ */
32
+ function Header(_ref) {
33
+ let {
34
+ logo,
35
+ brand,
36
+ brandAddon,
37
+ description,
38
+ children,
39
+ addons,
40
+ prepend,
41
+ containerComponent: ContainerComponent
42
+ } = _ref,
43
+ rest = _objectWithoutProperties(_ref, _excluded);
44
+
45
+ const theme = (0, _useTheme.default)();
46
+ return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
47
+ $theme: theme
48
+ }), /*#__PURE__*/_react.default.createElement(ContainerComponent, {
49
+ className: "header-container"
50
+ }, prepend, logo && /*#__PURE__*/_react.default.createElement("div", {
51
+ className: "header-logo"
52
+ }, logo), /*#__PURE__*/_react.default.createElement("div", {
53
+ className: "header-brand"
54
+ }, /*#__PURE__*/_react.default.createElement("div", {
55
+ className: "header-brand-title"
56
+ }, /*#__PURE__*/_react.default.createElement("h2", null, brand), /*#__PURE__*/_react.default.createElement("div", {
57
+ className: "header-brand-addon"
58
+ }, brandAddon)), /*#__PURE__*/_react.default.createElement("div", {
59
+ className: "header-brand-desc"
60
+ }, description)), children, /*#__PURE__*/_react.default.createElement(_Box.default, {
61
+ flexGrow: 1
62
+ }), /*#__PURE__*/_react.default.createElement("div", {
63
+ className: "header-addons"
64
+ }, addons)));
65
+ }
66
+
67
+ Header.propTypes = {
68
+ logo: _propTypes.default.node,
69
+ // 相当于 Title
70
+ brand: _propTypes.default.string,
71
+ // brand 右侧的内容区域, 可显示一个 badge 或 tag
72
+ brandAddon: _propTypes.default.node,
73
+ // brand 下方的描述
74
+ description: _propTypes.default.string,
75
+ children: _propTypes.default.node,
76
+ // 右侧区域, 可以放置 icons/actions/login 等
77
+ addons: _propTypes.default.node,
78
+ // logo 左侧内容
79
+ prepend: _propTypes.default.node,
80
+ // 默认使用 mui 的 Container, 如果不想限制 header 内容区域的宽度, 可以设置为 div
81
+ containerComponent: _propTypes.default.elementType
82
+ };
83
+ Header.defaultProps = {
84
+ logo: null,
85
+ brand: null,
86
+ brandAddon: null,
87
+ description: null,
88
+ children: null,
89
+ addons: null,
90
+ prepend: null,
91
+ containerComponent: _Container.default
92
+ };
93
+
94
+ const Root = _styledComponents.default.div.withConfig({
95
+ displayName: "header__Root",
96
+ componentId: "sc-15qnwg1-0"
97
+ })(["position:relative;z-index:", ";font-size:14px;background:", ";.header-container{display:flex;align-items:center;height:64px;padding:8px 16px;}.header-logo{display:inline-flex;justify-content:center;position:relative;height:40px;margin-right:16px;img,svg{width:auto;height:100%;}> a{height:100%;line-height:1;}> a::before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:transparent;content:'';}}.header-brand{display:flex;flex-direction:column;flex-shrink:0;margin-right:16px;.header-brand-title{display:flex;align-items:center;h2{font-size:16px;}.header-brand-addon{margin-left:8px;}}.header-brand-desc{color:#9397a1;}}.header-addons{display:flex;align-items:center;}", "{.header-brand{margin-right:12px;.header-brand-title{h2{font-size:14px;}}}}", "{.header-container{height:56px;}.header-menu{display:inline-block;}.header-logo{height:32px;}.header-brand{display:none;}}"], props => props.$theme.zIndex.drawer + 1, props => props.$theme.palette.common.white, props => props.$theme.breakpoints.down('md'), props => props.$theme.breakpoints.down('sm'));
98
+
99
+ var _default = Header;
100
+ exports.default = _default;
@@ -3,122 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
- var _styledComponents = _interopRequireDefault(require("styled-components"));
13
-
14
- var _Box = _interopRequireDefault(require("@material-ui/core/Box"));
15
-
16
- var _useTheme = _interopRequireDefault(require("@material-ui/core/styles/useTheme"));
17
-
18
- var _useMediaQuery = _interopRequireDefault(require("@material-ui/core/useMediaQuery"));
19
-
20
- var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
21
-
22
- var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
23
-
24
- const _excluded = ["logo", "brand", "brandAddon", "description", "children", "addons", "mobile", "onToggleMenu"];
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- 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; }
29
-
30
- 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; }
31
-
32
- 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; }
33
-
34
- 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; }
35
-
36
- 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; }
37
-
38
- /**
39
- * Header 组件
40
- * TODO: Layout/dashboard 可以复用此处的 header
41
- */
42
- function Header(_ref) {
43
- let {
44
- logo,
45
- brand,
46
- brandAddon,
47
- description,
48
- children,
49
- addons,
50
- mobile,
51
- onToggleMenu
52
- } = _ref,
53
- rest = _objectWithoutProperties(_ref, _excluded);
54
-
55
- const theme = (0, _useTheme.default)();
56
- const isMobile = (0, _useMediaQuery.default)(theme.breakpoints.down('sm'));
57
-
58
- const _mobile = _objectSpread(_objectSpread({}, Header.defaultProps.mobile), mobile); // 暂时不要通过 display: none 隐藏 logo, https://blog.patw.me/archives/1820/inline-svg-same-id-and-display-none-issue/
59
-
60
-
61
- const hideLogo = isMobile && _mobile.hideLogo;
62
- return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
63
- $theme: theme
64
- }), _mobile.enableMenu && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
65
- color: "inherit",
66
- edge: "start",
67
- className: "header-menu",
68
- onClick: onToggleMenu
69
- }, /*#__PURE__*/_react.default.createElement(_Menu.default, null)), !hideLogo && /*#__PURE__*/_react.default.createElement("div", {
70
- className: "header-logo"
71
- }, logo), /*#__PURE__*/_react.default.createElement("div", {
72
- className: "header-brand"
73
- }, /*#__PURE__*/_react.default.createElement("div", {
74
- className: "header-brand-title"
75
- }, /*#__PURE__*/_react.default.createElement("h2", null, brand), /*#__PURE__*/_react.default.createElement("div", {
76
- className: "header-brand-addon"
77
- }, brandAddon)), /*#__PURE__*/_react.default.createElement("div", {
78
- className: "header-brand-desc"
79
- }, description)), children, /*#__PURE__*/_react.default.createElement(_Box.default, {
80
- flexGrow: 1
81
- }), /*#__PURE__*/_react.default.createElement("div", {
82
- className: "header-addons"
83
- }, addons));
84
- }
6
+ Object.defineProperty(exports, "Header", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _header.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ResponsiveHeader", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _responsiveHeader.default;
16
+ }
17
+ });
85
18
 
86
- Header.propTypes = {
87
- logo: _propTypes.default.any,
88
- // 相当于 Title
89
- brand: _propTypes.default.string,
90
- // brand 右侧的内容区域, 可显示一个 badge 或 tag
91
- brandAddon: _propTypes.default.any,
92
- // brand 下方的描述
93
- description: _propTypes.default.string,
94
- children: _propTypes.default.any,
95
- // 右侧区域, 可以放置 icons/actions/login 等
96
- addons: _propTypes.default.any,
97
- // 窄屏下配置
98
- mobile: _propTypes.default.shape({
99
- enableMenu: _propTypes.default.bool,
100
- hideLogo: _propTypes.default.bool
101
- }),
102
- onToggleMenu: _propTypes.default.func
103
- };
104
- Header.defaultProps = {
105
- logo: null,
106
- brand: null,
107
- brandAddon: null,
108
- description: null,
109
- children: null,
110
- addons: null,
111
- mobile: {
112
- enableMenu: true,
113
- hideLogo: true
114
- },
115
- onToggleMenu: () => {}
116
- };
19
+ var _header = _interopRequireDefault(require("./header"));
117
20
 
118
- const Root = _styledComponents.default.div.withConfig({
119
- displayName: "Header__Root",
120
- componentId: "sc-ea5eli-0"
121
- })(["display:flex;align-items:center;position:relative;z-index:", ";height:64px;padding:12px 24px;font-size:14px;background:#fff;.header-menu{display:none;}.header-logo{display:inline-flex;justify-content:center;position:relative;height:40px;margin-right:16px;img,svg{width:auto;height:100%;}> a{height:100%;line-height:1;}> a::before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:transparent;content:'';}}.header-brand{display:flex;flex-direction:column;margin-right:16px;.header-brand-title{display:flex;align-items:center;h2{font-size:16px;}.header-brand-addon{margin-left:8px;}}.header-brand-desc{color:#9397a1;}}.header-addons{display:flex;align-items:center;}", "{height:56px;padding:8px 16px;.header-menu{display:inline-block;}.header-logo{height:32px;}.header-brand{display:none;}}"], props => props.$theme.zIndex.drawer + 1, props => props.$theme.breakpoints.down('sm'));
21
+ var _responsiveHeader = _interopRequireDefault(require("./responsive-header"));
122
22
 
123
- var _default = Header;
124
- exports.default = _default;
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
15
+
16
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
17
+
18
+ var _useTheme = _interopRequireDefault(require("@material-ui/core/styles/useTheme"));
19
+
20
+ var _useMediaQuery = _interopRequireDefault(require("@material-ui/core/useMediaQuery"));
21
+
22
+ var _Drawer = _interopRequireDefault(require("@material-ui/core/Drawer"));
23
+
24
+ var _header = _interopRequireDefault(require("./header"));
25
+
26
+ const _excluded = ["menu", "prepend", "children"];
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ 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; }
37
+
38
+ 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; }
39
+
40
+ 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; }
41
+
42
+ 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; }
43
+
44
+ /**
45
+ * ResponsiveHeader
46
+ * - 窄屏下显示 burge menu
47
+ * - 窄屏下将 children 区域显示到 menu 中
48
+ *
49
+ * 注意: 暂时不要通过 display: none 隐藏 logo, https://blog.patw.me/archives/1820/inline-svg-same-id-and-display-none-issue/
50
+ */
51
+ function ResponsiveHeader(_ref) {
52
+ let {
53
+ menu,
54
+ prepend,
55
+ children
56
+ } = _ref,
57
+ rest = _objectWithoutProperties(_ref, _excluded);
58
+
59
+ const theme = (0, _useTheme.default)();
60
+ const isMobile = (0, _useMediaQuery.default)(theme.breakpoints.down('sm'));
61
+ const [drawerOpen, setDrawerOpen] = (0, _react.useState)(false);
62
+
63
+ const _children = typeof children === 'function' ? children({
64
+ isMobile,
65
+ closeMenu: () => setDrawerOpen(false)
66
+ }) : children;
67
+
68
+ const {
69
+ logo,
70
+ brand,
71
+ brandAddon,
72
+ description
73
+ } = rest; // 如果 children 没有值, 则使用普通的 Header 组件渲染 (此时并没有什么内容需要在 menu 中显示)
74
+
75
+ if (!children) {
76
+ return /*#__PURE__*/_react.default.createElement(_header.default, Object.assign({
77
+ prepend: prepend
78
+ }, rest));
79
+ }
80
+
81
+ return /*#__PURE__*/_react.default.createElement(Root, Object.assign({
82
+ prepend: prepend || /*#__PURE__*/_react.default.createElement(_IconButton.default, {
83
+ color: "inherit",
84
+ edge: "start",
85
+ className: "header-menu",
86
+ onClick: () => setDrawerOpen(true)
87
+ }, /*#__PURE__*/_react.default.createElement(_Menu.default, null))
88
+ }, rest, {
89
+ logo: isMobile ? null : logo,
90
+ $theme: theme
91
+ }), !isMobile && _children, isMobile && /*#__PURE__*/_react.default.createElement(_Drawer.default, {
92
+ open: drawerOpen,
93
+ onClose: () => setDrawerOpen(false),
94
+ ModalProps: {
95
+ disablePortal: true,
96
+ keepMounted: true
97
+ }
98
+ }, /*#__PURE__*/_react.default.createElement(Sidebar, null, /*#__PURE__*/_react.default.createElement("div", {
99
+ className: "header-sidebar-head"
100
+ }, /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "header-sidebar-logo"
102
+ }, logo), brand && /*#__PURE__*/_react.default.createElement("h2", null, brand), description && /*#__PURE__*/_react.default.createElement("p", {
103
+ className: "header-sidebar-description"
104
+ }, description), brandAddon && /*#__PURE__*/_react.default.createElement("div", {
105
+ className: "header-sidebar-brandaddon"
106
+ }, brandAddon)), /*#__PURE__*/_react.default.createElement("div", {
107
+ className: "header-sidebar-content"
108
+ }, _children))));
109
+ }
110
+
111
+ ResponsiveHeader.propTypes = _objectSpread(_objectSpread({}, _header.default.PropTypes), {}, {
112
+ // 如果是 function, 则
113
+ // - 会传入一个 isMobile 参数, isMobile 为 true 时, 表示 children 会显示在 menu 中, 可以根据 isMobile 参数调整要渲染的内容, 比如如果 isMobile 为 true 则使用 inline 模式的 NavMenu (适用于移动端)
114
+ // - 会传入一个 closeMenu 参数, 可以关闭 menu
115
+ children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func])
116
+ });
117
+ ResponsiveHeader.defaultProps = _objectSpread({}, _header.default.defaultProps);
118
+ const Root = (0, _styledComponents.default)(_header.default).withConfig({
119
+ displayName: "responsive-header__Root",
120
+ componentId: "sc-1dugv47-0"
121
+ })([".header-menu{display:none;}", "{.header-menu{display:block;}}"], props => props.$theme.breakpoints.down('sm'));
122
+ /**
123
+ * Sidebar
124
+ */
125
+
126
+ const Sidebar = _styledComponents.default.div.withConfig({
127
+ displayName: "responsive-header__Sidebar",
128
+ componentId: "sc-1dugv47-1"
129
+ })(["min-width:280px;font-size:14px;.header-sidebar-head{display:flex;flex-direction:column;align-items:center;padding:24px 0;border-bottom:1px solid #eee;font-size:12px;.header-sidebar-logo{min-width:44px;height:44px;font-size:44px;> *{width:auto;height:100%;}> a{display:block;}img{max-width:100%;max-height:100%;}}h2{margin-top:12px;font-size:14px;}.header-sidebar-description{margin:2px 0 0 0;}.header-sidebar-brandaddon{margin-top:8px;}}.header-sidebar-content{padding:16px 0;}"]);
130
+
131
+ var _default = ResponsiveHeader;
132
+ exports.default = _default;