@arcblock/ux 2.4.44 → 2.4.45

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.
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = CompactText;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _Tooltip = _interopRequireWildcard(require("@mui/material/Tooltip"));
13
+
14
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
15
+
16
+ var _Theme = require("../Theme");
17
+
18
+ var _ClickToCopy = require("../ClickToCopy");
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ const _excluded = ["className"],
23
+ _excluded2 = ["children"];
24
+
25
+ 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); }
26
+
27
+ 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; }
28
+
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+
31
+ 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; }
32
+
33
+ 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; }
34
+
35
+ 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; }
36
+
37
+ 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; }
38
+
39
+ 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; }
40
+
41
+ const StyledTooltip = (0, _Theme.styled)(_ref => {
42
+ let {
43
+ className
44
+ } = _ref,
45
+ props = _objectWithoutProperties(_ref, _excluded);
46
+
47
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, _objectSpread(_objectSpread({}, props), {}, {
48
+ classes: {
49
+ popper: className
50
+ }
51
+ }));
52
+ })({
53
+ ["& .".concat(_Tooltip.tooltipClasses.tooltip)]: {
54
+ maxWidth: 360,
55
+ wordBreak: 'break-all'
56
+ }
57
+ }); // 递归, 将 text (string) 部分替换为 CompactText (保持元素结构)
58
+ // eslint-disable-next-line react/prop-types
59
+
60
+ function RecursiveWrapper(_ref2) {
61
+ let {
62
+ children
63
+ } = _ref2,
64
+ rest = _objectWithoutProperties(_ref2, _excluded2);
65
+
66
+ const wrappedChildren = _react.Children.map(children, child => {
67
+ if (typeof child === 'string') {
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(CompactText, _objectSpread(_objectSpread({}, rest), {}, {
69
+ children: child
70
+ }));
71
+ }
72
+
73
+ if (child.props && child.props.children) {
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(child.type, _objectSpread(_objectSpread({}, child.props), {}, {
75
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(RecursiveWrapper, _objectSpread(_objectSpread({}, rest), {}, {
76
+ children: child.props.children
77
+ }))
78
+ }));
79
+ }
80
+
81
+ return child;
82
+ });
83
+
84
+ return wrappedChildren;
85
+ }
86
+ /**
87
+ * 紧凑文本组件 (显示首尾, 中间截断显示省略号), 仅考虑等宽字体的情况
88
+ */
89
+
90
+
91
+ function CompactText(_ref3) {
92
+ let {
93
+ startChars,
94
+ endChars,
95
+ children,
96
+ showCopyButtonInTooltip
97
+ } = _ref3;
98
+
99
+ if (typeof children !== 'string') {
100
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(RecursiveWrapper, {
101
+ startChars: startChars,
102
+ endChars: endChars,
103
+ showCopyButtonInTooltip: showCopyButtonInTooltip,
104
+ children: children
105
+ });
106
+ } // stopPropagation: 当 tooltip 处于 link 中时, 避免点击复制时触发链接跳转
107
+
108
+
109
+ const tooltipContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
110
+ display: "flex",
111
+ alignItems: "center",
112
+ lineHeight: 1,
113
+ onClick: e => e.stopPropagation(),
114
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
115
+ children: children
116
+ }), showCopyButtonInTooltip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickToCopy.CopyButton, {
117
+ content: children,
118
+ showTooltip: false,
119
+ style: {
120
+ fontSize: 16,
121
+ marginLeft: 4
122
+ }
123
+ })]
124
+ });
125
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTooltip, {
126
+ title: tooltipContent,
127
+ placement: "top",
128
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
129
+ children: [children.slice(0, startChars), "...", children.slice(children.length - endChars)]
130
+ })
131
+ });
132
+ }
133
+
134
+ CompactText.propTypes = {
135
+ startChars: _propTypes.default.number,
136
+ endChars: _propTypes.default.number,
137
+ children: _propTypes.default.node.isRequired,
138
+ // 在 tooltip 中完整地址后显示复制按钮
139
+ showCopyButtonInTooltip: _propTypes.default.bool
140
+ };
141
+ CompactText.defaultProps = {
142
+ startChars: 6,
143
+ endChars: 6,
144
+ showCopyButtonInTooltip: false
145
+ };
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatAddress = exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ require("@fontsource/ubuntu-mono/400.css");
13
+
14
+ var _useMountedState = _interopRequireDefault(require("react-use/lib/useMountedState"));
15
+
16
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
17
+
18
+ var _colors = require("@mui/material/colors");
19
+
20
+ var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
21
+
22
+ var _ContentCopy = _interopRequireDefault(require("@mui/icons-material/ContentCopy"));
23
+
24
+ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
25
+
26
+ var _Theme = require("../Theme");
27
+
28
+ var _compactText = _interopRequireDefault(require("./compact-text"));
29
+
30
+ var _jsxRuntime = require("react/jsx-runtime");
31
+
32
+ var _templateObject;
33
+
34
+ const _excluded = ["component", "size", "copyable", "content", "children", "prepend", "append", "compact", "startChars", "endChars", "locale", "showCopyButtonInTooltip"];
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+
38
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
39
+
40
+ 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; }
41
+
42
+ 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; }
43
+
44
+ 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; }
45
+
46
+ 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
+
48
+ 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
+
50
+ const formatAddress = str => str.split(':').pop();
51
+
52
+ exports.formatAddress = formatAddress;
53
+ const translations = {
54
+ en: {
55
+ copy: 'Click To Copy',
56
+ copied: 'Copied!'
57
+ },
58
+ zh: {
59
+ copy: '点击复制',
60
+ copied: '已复制!'
61
+ }
62
+ };
63
+ /**
64
+ * DidAddress 组件 (新版设计)
65
+ *
66
+ * - 样式调整
67
+ * - click-to-copy 调整
68
+ * - 长文本截断处理 (Ellipsis)
69
+ * - 支持 inline 或 block 的显示方式
70
+ * - 支持紧凑模式, 该模式下:
71
+ * - 占用宽度较小, 因此不考虑水平空间不够用的情况, 且忽略末尾省略号
72
+ * - 对于多层元素结构的 children, 保持元素结构, 将最内层 text 替换为 CompactText 组件
73
+ * - 为保证 copy 功能正常工作, 原 children 始终渲染, 但在紧凑式下会隐藏
74
+ * - 可配合 useMediaQuery 使用
75
+ */
76
+
77
+ const DidAddress = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
78
+ let {
79
+ component,
80
+ size,
81
+ copyable,
82
+ content,
83
+ children,
84
+ prepend,
85
+ append,
86
+ compact,
87
+ startChars,
88
+ endChars,
89
+ locale,
90
+ showCopyButtonInTooltip
91
+ } = _ref,
92
+ rest = _objectWithoutProperties(_ref, _excluded);
93
+
94
+ if (!translations[locale]) {
95
+ // eslint-disable-next-line no-param-reassign
96
+ locale = 'en';
97
+ } // 避免 unmounted 后 setTimeout handler 依然改变 state
98
+
99
+
100
+ const isMounted = (0, _useMountedState.default)();
101
+ const [copied, setCopied] = (0, _react.useState)(false);
102
+ const textRef = (0, _react.useRef)();
103
+
104
+ const onCopy = e => {
105
+ e.stopPropagation();
106
+ (0, _copyToClipboard.default)(content || textRef.current.textContent);
107
+ setCopied(true); // 恢复 copied 状态
108
+
109
+ setTimeout(() => {
110
+ if (isMounted()) {
111
+ setCopied(false);
112
+ }
113
+ }, 1500);
114
+ };
115
+
116
+ let copyElement = null;
117
+
118
+ if (copyable) {
119
+ copyElement = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
120
+ className: "did-address-copy-wrapper",
121
+ title: copied ? '' : translations[locale].copy,
122
+ children: copied ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
123
+ title: translations[locale].copied,
124
+ placement: "bottom",
125
+ arrow: true,
126
+ open: copied,
127
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Check.default, {
128
+ className: "did-address-copy",
129
+ style: {
130
+ color: _colors.green[500]
131
+ }
132
+ })
133
+ }) :
134
+ /*#__PURE__*/
135
+
136
+ /* title prop 直接加在 icon 上不生效 */
137
+ (0, _jsxRuntime.jsx)(_ContentCopy.default, {
138
+ className: "did-address-copy",
139
+ onClick: onCopy
140
+ })
141
+ });
142
+ }
143
+
144
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, _objectSpread(_objectSpread({
145
+ as: component,
146
+ size: size
147
+ }, rest), {}, {
148
+ ref: ref,
149
+ children: [prepend, /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
150
+ ref: textRef,
151
+ className: "did-address-text did-address-truncate",
152
+ style: {
153
+ display: compact ? 'none' : 'inline'
154
+ },
155
+ children: children
156
+ }), compact && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
157
+ className: "did-address-text",
158
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_compactText.default, {
159
+ startChars: startChars,
160
+ endChars: endChars,
161
+ showCopyButtonInTooltip: showCopyButtonInTooltip,
162
+ children: children
163
+ })
164
+ }), copyElement, append]
165
+ }));
166
+ });
167
+ var _default = DidAddress;
168
+ exports.default = _default;
169
+ DidAddress.propTypes = {
170
+ component: _propTypes.default.string,
171
+ size: _propTypes.default.number,
172
+ copyable: _propTypes.default.bool,
173
+ // compact mode 下, hover 时会在 tooltip 中显示完整地址, showCopyButtonInTooltip = true 时会在完整地址后显示一个复制按钮
174
+ showCopyButtonInTooltip: _propTypes.default.bool,
175
+ children: _propTypes.default.any,
176
+ content: _propTypes.default.string,
177
+ inline: _propTypes.default.bool,
178
+ prepend: _propTypes.default.any,
179
+ append: _propTypes.default.any,
180
+ // 紧凑模式
181
+ compact: _propTypes.default.bool,
182
+ startChars: _propTypes.default.number,
183
+ endChars: _propTypes.default.number,
184
+ locale: _propTypes.default.oneOf(['en', 'zh'])
185
+ };
186
+ DidAddress.defaultProps = {
187
+ component: 'span',
188
+ size: 0,
189
+ copyable: true,
190
+ showCopyButtonInTooltip: false,
191
+ children: null,
192
+ content: '',
193
+ inline: false,
194
+ prepend: null,
195
+ append: null,
196
+ compact: false,
197
+ startChars: 6,
198
+ endChars: 6,
199
+ locale: 'en'
200
+ };
201
+
202
+ const getFontSize = size => {
203
+ // 12px 及以上的 size 有效, 否则返回 inherit
204
+ if (size && Number(size) >= 12) {
205
+ return "".concat(Number(size), "px");
206
+ }
207
+
208
+ return 'inherit';
209
+ };
210
+
211
+ const Root = (0, _Theme.styled)('div', {
212
+ shouldForwardProp: prop => prop !== 'inline'
213
+ })(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-family: 'Ubuntu Mono', monospace;\n && {\n display: ", ";\n align-items: center;\n max-width: 100%;\n overflow: hidden;\n color: #ccc;\n font-size: ", ";\n font-weight: 400;\n\n svg {\n fill: currentColor;\n }\n }\n\n .did-address-text {\n color: #666;\n }\n /* truncate string with ellipsis */\n .did-address-truncate {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .did-address-copy {\n flex: 0 0 auto;\n }\n .did-address-copy-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 1em;\n height: 1em;\n margin-left: 8px;\n }\n .did-address-copy {\n font-size: 1em;\n color: #999;\n cursor: pointer;\n }\n\n /* link */\n a {\n color: #666;\n }\n &:hover a {\n color: #222;\n text-decoration: underline;\n }\n"])), _ref2 => {
214
+ let {
215
+ inline
216
+ } = _ref2;
217
+ return inline ? 'inline-flex' : 'flex';
218
+ }, props => getFontSize(props.size));
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatAddress = exports.default = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _didAddress = _interopRequireDefault(require("./did-address"));
11
+
12
+ var _responsiveDidAddress = _interopRequireDefault(require("./responsive-did-address"));
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ const _excluded = ["responsive"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ 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; }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ const formatAddress = str => str.split(':').pop();
31
+
32
+ exports.formatAddress = formatAddress;
33
+
34
+ function DidAddressWrapper(_ref) {
35
+ let {
36
+ responsive
37
+ } = _ref,
38
+ rest = _objectWithoutProperties(_ref, _excluded);
39
+
40
+ if (responsive) {
41
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_responsiveDidAddress.default, _objectSpread({}, rest));
42
+ }
43
+
44
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, _objectSpread({}, rest));
45
+ }
46
+
47
+ var _default = DidAddressWrapper;
48
+ exports.default = _default;
49
+ DidAddressWrapper.propTypes = {
50
+ responsive: _propTypes.default.bool
51
+ };
52
+ DidAddressWrapper.defaultProps = {
53
+ responsive: true
54
+ };
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ResponsiveDidAddress;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _useMeasure = _interopRequireDefault(require("react-use/lib/useMeasure"));
13
+
14
+ var _Theme = require("../Theme");
15
+
16
+ var _didAddress = _interopRequireDefault(require("./did-address"));
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ var _templateObject, _templateObject2;
21
+
22
+ const _excluded = ["style", "className", "component"];
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
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
+ * 根据父容器宽度自动切换 compact 模式
40
+ *
41
+ * 实现逻辑:
42
+ * - DidAddress 外层包裹一个容器, 其宽度自动撑满父容器宽度 (即这个容器需要是块级元素或 100% 宽的 inline-block)
43
+ * - DidAddress 本身以 inlne 形式渲染 (方便探测 did-address 的 full-width)
44
+ * - 组件 mounted 时记录 did address 的 full-width (非 compact 模式的宽度)
45
+ * - 监听容器宽度变化, 当容器宽度变化时, 对比容器宽度和 did address full-width, => 切换 compact 模式
46
+ * - TODO: 初始化时, 在确定是否应该以 compact 模式渲染前, 隐藏显示, 避免闪烁问题
47
+ */
48
+ function ResponsiveDidAddress(_ref) {
49
+ let {
50
+ style,
51
+ className,
52
+ component
53
+ } = _ref,
54
+ rest = _objectWithoutProperties(_ref, _excluded);
55
+
56
+ const [compact, setCompact] = (0, _react.useState)(false); // did address 完整显示时的宽度
57
+
58
+ const [addressFullWidth, setAddressFullWidth] = (0, _react.useState)(null);
59
+ const [containerRef, {
60
+ width: containerWidth
61
+ }] = (0, _useMeasure.default)();
62
+ const ref = /*#__PURE__*/(0, _react.createRef)(); // 存储完整显示时 address 组件的宽度
63
+
64
+ (0, _react.useEffect)(() => {
65
+ if (!compact && addressFullWidth === null) {
66
+ setAddressFullWidth(ref.current.offsetWidth);
67
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
68
+
69
+ }, []);
70
+ (0, _react.useEffect)(() => {
71
+ if (containerWidth && addressFullWidth) {
72
+ setCompact(containerWidth < addressFullWidth);
73
+ }
74
+ }, [containerWidth, addressFullWidth]);
75
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
76
+ as: component,
77
+ inline: rest.inline,
78
+ ref: containerRef,
79
+ style: style,
80
+ className: className,
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledDidAddress, _objectSpread(_objectSpread({}, rest), {}, {
82
+ component: component,
83
+ inline: true,
84
+ compact: compact,
85
+ ref: ref
86
+ }))
87
+ });
88
+ }
89
+
90
+ ResponsiveDidAddress.propTypes = {
91
+ style: _propTypes.default.object,
92
+ className: _propTypes.default.string,
93
+ component: _propTypes.default.string
94
+ };
95
+ ResponsiveDidAddress.defaultProps = {
96
+ style: {},
97
+ className: '',
98
+ component: 'span'
99
+ };
100
+ const Root = (0, _Theme.styled)('div')(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: block;\n overflow: hidden;\n ", "\n"])), _ref2 => {
101
+ let {
102
+ inline
103
+ } = _ref2;
104
+ return inline && "\n display: inline-block;\n width: 100%;\n ";
105
+ });
106
+ const StyledDidAddress = (0, _Theme.styled)(_didAddress.default)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n && {\n max-width: none;\n }\n .did-address-text {\n /* \u7981\u6B62\u6587\u672C Ellipsis/\u622A\u65AD, \u4EE5\u4FBF\u6D4B\u91CF\u771F\u5B9E\u7684\u5BBD\u5EA6 */\n white-space: nowrap;\n overflow: visible;\n text-overflow: unset;\n }\n"])));
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _didMotif = require("@arcblock/did-motif");
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ const _excluded = ["did", "size", "animation", "shape", "responsive"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ 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; }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ function DIDMotif(_ref) {
31
+ let {
32
+ did,
33
+ size,
34
+ animation,
35
+ shape,
36
+ responsive
37
+ } = _ref,
38
+ rest = _objectWithoutProperties(_ref, _excluded);
39
+
40
+ const svgRef = (0, _react.useRef)(null);
41
+ (0, _react.useLayoutEffect)(() => {
42
+ (0, _didMotif.update)(svgRef.current, did, {
43
+ size,
44
+ animation,
45
+ shape
46
+ }); // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ }, [did, size, shape]);
48
+
49
+ if (responsive) {
50
+ // fix avatar 显示问题 (safari 下父容器为 flex 时 inline svg 显示不出来, 需要明确指定 width)
51
+ const styles = _objectSpread(_objectSpread({}, rest.style), {}, {
52
+ width: '100%'
53
+ });
54
+
55
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", _objectSpread(_objectSpread({
56
+ ref: svgRef
57
+ }, rest), {}, {
58
+ style: styles
59
+ }));
60
+ }
61
+
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", _objectSpread(_objectSpread({}, rest), {}, {
63
+ style: _objectSpread({
64
+ display: 'inline-block',
65
+ width: size,
66
+ height: size
67
+ }, rest.style),
68
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
69
+ ref: svgRef
70
+ })
71
+ }));
72
+ }
73
+
74
+ DIDMotif.propTypes = {
75
+ did: _propTypes.default.string.isRequired,
76
+ size: _propTypes.default.number,
77
+ animation: _propTypes.default.bool,
78
+ // 直接返回 svg 元素, svg 尺寸由父窗口决定 (撑满父窗口)
79
+ responsive: _propTypes.default.bool,
80
+ shape: _propTypes.default.number
81
+ };
82
+ DIDMotif.defaultProps = {
83
+ size: 200,
84
+ animation: false,
85
+ responsive: false,
86
+ shape: null
87
+ };
88
+ var _default = DIDMotif;
89
+ exports.default = _default;