@arcblock/ux 0.78.25 → 1.6.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +0 -56
- package/lib/ActionButton/index.js +6 -4
- package/lib/ActivityIndicator/index.js +75 -23
- package/lib/Alert/index.js +15 -11
- package/lib/Async/index.js +1 -1
- package/lib/Badge/index.js +17 -15
- package/lib/Blocklet/index.js +261 -0
- package/lib/Button/wrap.js +96 -43
- package/lib/ButtonGroup/index.js +3 -16
- package/lib/Center/index.js +30 -4
- package/lib/ClickToCopy/index.js +10 -8
- package/lib/CodeBlock/index.js +40 -13
- package/lib/Colors/index.js +15 -0
- package/lib/Colors/themes/default.js +85 -0
- package/lib/ContactForm/index.js +9 -10
- package/lib/CookieConsent/index.js +98 -0
- package/lib/CountDown/index.js +18 -14
- package/lib/Dialog/confirm.js +84 -0
- package/lib/Dialog/dialog.js +137 -0
- package/lib/Dialog/index.js +23 -0
- package/lib/Earth/index.js +33 -33
- package/lib/Empty/index.js +61 -0
- package/lib/Footer/index.js +16 -18
- package/lib/Icon/image.js +10 -13
- package/lib/Icon/index.js +10 -8
- package/lib/Img/index.js +212 -0
- package/lib/InfoRow/index.js +7 -6
- package/lib/Layout/dashboard/header.js +60 -42
- package/lib/Layout/dashboard/index.js +72 -60
- package/lib/Layout/dashboard/sidebar.js +41 -25
- package/lib/Layout/index.js +113 -51
- package/lib/Locale/browser-lang.js +0 -2
- package/lib/Locale/context.js +85 -61
- package/lib/Locale/selector.js +33 -20
- package/lib/Logo/index.js +15 -13
- package/lib/Metric/index.js +5 -6
- package/lib/NFTDisplay/README.md +59 -0
- package/lib/NFTDisplay/aspect-ratio-container.js +52 -0
- package/lib/NFTDisplay/broken.js +25 -0
- package/lib/NFTDisplay/index.js +317 -0
- package/lib/NFTDisplay/loading.js +23 -0
- package/lib/NFTDisplay/svg-embedder/img.js +68 -0
- package/lib/NFTDisplay/svg-embedder/inline-svg.js +54 -0
- package/lib/PageScroller/index.js +10 -11
- package/lib/PageScroller/usePrevValue.js +2 -2
- package/lib/PricingTable/PricingPlan.js +12 -15
- package/lib/PricingTable/index.js +5 -5
- package/lib/Result/common.js +176 -0
- package/lib/Result/index.js +61 -0
- package/lib/Result/result.js +69 -0
- package/lib/Result/translations.js +61 -0
- package/lib/Screenshot/index.js +14 -13
- package/lib/Spinner/index.js +37 -0
- package/lib/SplitButton/index.js +126 -0
- package/lib/Switch/index.js +107 -0
- package/lib/Tabs/index.js +24 -47
- package/lib/Tag/index.js +15 -13
- package/lib/Terminal/Player.js +43 -45
- package/lib/Terminal/index.js +3 -1
- package/lib/Terminal/util.js +2 -3
- package/lib/TextCollapse/index.js +21 -14
- package/lib/Theme/index.js +79 -63
- package/lib/Theme/responsiveFontSizes.js +8 -8
- package/lib/Toast/index.js +12 -11
- package/lib/Util/index.js +197 -26
- package/lib/Video/index.js +8 -11
- package/lib/Wallet/Action.js +15 -13
- package/lib/Wallet/Download.js +60 -58
- package/lib/Wallet/Open.js +2 -2
- package/lib/WechatPrompt/index.js +10 -10
- package/lib/index.js +6 -6
- package/lib/withTheme/index.js +5 -17
- package/lib/withTracker/error_boundary.js +3 -3
- package/lib/withTracker/index.js +6 -7
- package/package.json +22 -17
- package/src/ActionButton/index.js +65 -0
- package/src/ActivityIndicator/index.js +141 -0
- package/src/Alert/index.js +104 -0
- package/src/Async/index.js +39 -0
- package/src/Badge/index.js +71 -0
- package/src/Blocklet/index.js +424 -0
- package/src/Button/index.js +4 -0
- package/src/Button/wrap.js +101 -0
- package/src/ButtonGroup/index.js +6 -0
- package/src/Center/index.js +40 -0
- package/src/ClickToCopy/index.js +90 -0
- package/src/CodeBlock/index.js +160 -0
- package/src/Colors/index.js +1 -0
- package/src/Colors/themes/default.js +54 -0
- package/src/ContactForm/index.js +240 -0
- package/src/CookieConsent/index.js +90 -0
- package/src/CountDown/index.js +151 -0
- package/src/Dialog/confirm.js +76 -0
- package/src/Dialog/dialog.js +162 -0
- package/src/Dialog/index.js +2 -0
- package/src/DriftBot/index.js +81 -0
- package/src/Earth/countries.json +8057 -0
- package/src/Earth/index.js +511 -0
- package/src/Earth/util.js +69 -0
- package/src/Empty/index.js +41 -0
- package/src/Footer/index.js +110 -0
- package/src/Icon/image.js +55 -0
- package/src/Icon/index.js +69 -0
- package/src/Img/index.js +172 -0
- package/src/InfoRow/index.js +83 -0
- package/src/Layout/dashboard/header.js +157 -0
- package/src/Layout/dashboard/index.js +150 -0
- package/src/Layout/dashboard/sidebar.js +122 -0
- package/src/Layout/index.js +318 -0
- package/src/Locale/browser-lang.js +63 -0
- package/src/Locale/context.js +94 -0
- package/src/Locale/images/globe-dark.png +0 -0
- package/src/Locale/images/globe-light.png +0 -0
- package/src/Locale/selector.js +135 -0
- package/src/Logo/images/logo-dark-text.svg +3 -0
- package/src/Logo/images/logo-dark-top.svg +6 -0
- package/src/Logo/images/logo-light-text.svg +3 -0
- package/src/Logo/images/logo-light-top.svg +6 -0
- package/src/Logo/index.js +47 -0
- package/src/Metric/index.js +115 -0
- package/src/NFTDisplay/README.md +59 -0
- package/src/NFTDisplay/aspect-ratio-container.js +34 -0
- package/src/NFTDisplay/broken.js +18 -0
- package/src/NFTDisplay/index.js +257 -0
- package/src/NFTDisplay/loading.js +17 -0
- package/src/NFTDisplay/svg-embedder/img.js +36 -0
- package/src/NFTDisplay/svg-embedder/inline-svg.js +37 -0
- package/src/PageScroller/index.js +342 -0
- package/src/PageScroller/usePrevValue.js +12 -0
- package/src/PricingTable/PricingPlan.js +112 -0
- package/src/PricingTable/index.js +43 -0
- package/src/Result/common.js +116 -0
- package/src/Result/index.js +31 -0
- package/src/Result/result.js +57 -0
- package/src/Result/translations.js +56 -0
- package/src/Screenshot/devices.css +1366 -0
- package/src/Screenshot/index.js +181 -0
- package/src/Spinner/index.js +19 -0
- package/src/SplitButton/index.js +112 -0
- package/src/Switch/index.js +78 -0
- package/src/Tabs/index.js +46 -0
- package/src/Tag/index.js +73 -0
- package/src/Terminal/Player.js +364 -0
- package/src/Terminal/index.js +150 -0
- package/src/Terminal/player.css +378 -0
- package/src/Terminal/util.js +167 -0
- package/src/Terminal/xterm.css +171 -0
- package/src/TextCollapse/index.js +92 -0
- package/src/Theme/index.js +184 -0
- package/src/Theme/responsiveFontSizes.js +94 -0
- package/src/Toast/index.js +118 -0
- package/src/Util/index.js +281 -0
- package/src/Video/index.js +72 -0
- package/src/Wallet/Action.js +105 -0
- package/src/Wallet/Download.js +130 -0
- package/src/Wallet/Open.js +50 -0
- package/src/Wallet/images/abtwallet.png +0 -0
- package/src/Wallet/images/android_download.svg +23 -0
- package/src/Wallet/images/app-store.svg +20 -0
- package/src/Wallet/images/google-play.svg +70 -0
- package/src/WechatPrompt/images/android.png +0 -0
- package/src/WechatPrompt/images/ios.png +0 -0
- package/src/WechatPrompt/index.js +81 -0
- package/src/index.js +63 -0
- package/src/withTheme/index.js +72 -0
- package/src/withTracker/README.md +34 -0
- package/src/withTracker/error_boundary.js +34 -0
- package/src/withTracker/index.js +70 -0
- package/lib/GraphQLPlayground/graphiql.css +0 -1850
- package/lib/GraphQLPlayground/index.js +0 -302
- package/lib/GraphQLPlayground/util.js +0 -55
|
@@ -0,0 +1,107 @@
|
|
|
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 _styles = require("@material-ui/core/styles");
|
|
13
|
+
|
|
14
|
+
var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
|
|
15
|
+
|
|
16
|
+
var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
|
|
17
|
+
|
|
18
|
+
const _excluded = ["classes"],
|
|
19
|
+
_excluded2 = ["labelProps"];
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
|
+
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; }
|
|
24
|
+
|
|
25
|
+
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; }
|
|
26
|
+
|
|
27
|
+
// 参考: https://v4.mui.com/components/switches/
|
|
28
|
+
const IOSSwitch = (0, _styles.withStyles)(theme => ({
|
|
29
|
+
root: {
|
|
30
|
+
width: 42,
|
|
31
|
+
height: 26,
|
|
32
|
+
padding: 0,
|
|
33
|
+
margin: theme.spacing(1)
|
|
34
|
+
},
|
|
35
|
+
switchBase: {
|
|
36
|
+
padding: 1,
|
|
37
|
+
'&$checked': {
|
|
38
|
+
transform: 'translateX(16px)',
|
|
39
|
+
color: theme.palette.common.white,
|
|
40
|
+
'& + $track': {
|
|
41
|
+
backgroundColor: '#52d869',
|
|
42
|
+
opacity: 1,
|
|
43
|
+
border: 'none'
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
'&$focusVisible $thumb': {
|
|
47
|
+
color: '#52d869',
|
|
48
|
+
border: '6px solid #fff'
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
thumb: {
|
|
52
|
+
width: 24,
|
|
53
|
+
height: 24
|
|
54
|
+
},
|
|
55
|
+
track: {
|
|
56
|
+
// fix: 下边框截断问题
|
|
57
|
+
boxSizing: 'border-box',
|
|
58
|
+
borderRadius: 26 / 2,
|
|
59
|
+
border: "1px solid ".concat(theme.palette.grey[400]),
|
|
60
|
+
backgroundColor: theme.palette.grey[50],
|
|
61
|
+
opacity: 1,
|
|
62
|
+
transition: theme.transitions.create(['background-color', 'border'])
|
|
63
|
+
},
|
|
64
|
+
checked: {},
|
|
65
|
+
focusVisible: {}
|
|
66
|
+
}))(_ref => {
|
|
67
|
+
let {
|
|
68
|
+
classes
|
|
69
|
+
} = _ref,
|
|
70
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
71
|
+
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_Switch.default, Object.assign({
|
|
73
|
+
focusVisibleClassName: classes.focusVisible,
|
|
74
|
+
disableRipple: true,
|
|
75
|
+
classes: {
|
|
76
|
+
root: classes.root,
|
|
77
|
+
switchBase: classes.switchBase,
|
|
78
|
+
thumb: classes.thumb,
|
|
79
|
+
track: classes.track,
|
|
80
|
+
checked: classes.checked
|
|
81
|
+
}
|
|
82
|
+
}, props));
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* 抽取 blocklet server 中使用的 iOS 风格的 Switch, 该组件把 FormControlLabel 和 MuiSwitch 组合在一起,
|
|
86
|
+
* 兼容 mui Switch props, 使用 labelProps 控制 FormControlLabel
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
function Switch(_ref2) {
|
|
90
|
+
let {
|
|
91
|
+
labelProps
|
|
92
|
+
} = _ref2,
|
|
93
|
+
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
94
|
+
|
|
95
|
+
return /*#__PURE__*/_react.default.createElement(_FormControlLabel.default, Object.assign({
|
|
96
|
+
control: /*#__PURE__*/_react.default.createElement(IOSSwitch, rest)
|
|
97
|
+
}, labelProps));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
Switch.propTypes = {
|
|
101
|
+
labelProps: _propTypes.default.object
|
|
102
|
+
};
|
|
103
|
+
Switch.defaultProps = {
|
|
104
|
+
labelProps: {}
|
|
105
|
+
};
|
|
106
|
+
var _default = Switch;
|
|
107
|
+
exports.default = _default;
|
package/lib/Tabs/index.js
CHANGED
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = Tabs;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _core = require("@material-ui/core");
|
|
13
13
|
|
|
14
14
|
var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
|
|
15
15
|
|
|
16
16
|
var _Tab = _interopRequireDefault(require("@material-ui/core/Tab"));
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
const _excluded = ["tabs", "current", "onChange"];
|
|
19
19
|
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
21
|
|
|
@@ -23,66 +23,43 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
23
23
|
|
|
24
24
|
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; }
|
|
25
25
|
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
backgroundColor: _Theme.colors.primary
|
|
33
|
-
}
|
|
34
|
-
})(_Tabs.default);
|
|
35
|
-
const AntTab = (0, _styles.withStyles)(theme => ({
|
|
36
|
-
root: {
|
|
37
|
-
textTransform: 'uppercase',
|
|
38
|
-
fontSize: 16,
|
|
39
|
-
fontWeight: theme.typography.fontWeightMedium,
|
|
40
|
-
marginRight: theme.spacing(3),
|
|
41
|
-
'&:hover': {
|
|
42
|
-
color: _Theme.colors.primary,
|
|
43
|
-
opacity: 1
|
|
44
|
-
},
|
|
45
|
-
'&$selected': {
|
|
46
|
-
color: _Theme.colors.primary,
|
|
47
|
-
fontWeight: theme.typography.fontWeightMedium
|
|
48
|
-
},
|
|
49
|
-
'&:focus': {
|
|
50
|
-
color: _Theme.colors.primary
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
'@media (max-width: 767px)': {
|
|
54
|
-
root: {
|
|
55
|
-
fontSize: 14,
|
|
56
|
-
marginRight: theme.spacing(1)
|
|
26
|
+
const useStyles = (0, _core.makeStyles)(theme => ({
|
|
27
|
+
tabs: {},
|
|
28
|
+
tab: {
|
|
29
|
+
fontSize: '0.875rem',
|
|
30
|
+
[theme.breakpoints.up('md')]: {
|
|
31
|
+
fontSize: '1rem'
|
|
57
32
|
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
}))(props => _react.default.createElement(_Tab.default, Object.assign({
|
|
61
|
-
disableRipple: true,
|
|
62
|
-
variant: "scrollable"
|
|
63
|
-
}, props))); // eslint-disable-next-line object-curly-newline
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
64
35
|
|
|
65
|
-
function
|
|
36
|
+
function Tabs(_ref) {
|
|
66
37
|
let {
|
|
67
38
|
tabs,
|
|
68
39
|
current,
|
|
69
40
|
onChange: _onChange
|
|
70
41
|
} = _ref,
|
|
71
|
-
rest = _objectWithoutProperties(_ref,
|
|
42
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
72
43
|
|
|
73
|
-
|
|
44
|
+
const classes = useStyles();
|
|
45
|
+
return /*#__PURE__*/_react.default.createElement(_Tabs.default, Object.assign({
|
|
74
46
|
scrollButtons: "on",
|
|
75
47
|
variant: "scrollable",
|
|
76
48
|
value: current,
|
|
77
|
-
onChange: (_, newValue) => _onChange(newValue)
|
|
78
|
-
|
|
49
|
+
onChange: (_, newValue) => _onChange(newValue),
|
|
50
|
+
indicatorColor: "primary"
|
|
51
|
+
}, rest, {
|
|
52
|
+
className: [classes.tabs, rest.className || ''].join(' ')
|
|
53
|
+
}), tabs.map(x => /*#__PURE__*/_react.default.createElement(_Tab.default, {
|
|
54
|
+
className: classes.tab,
|
|
79
55
|
key: x.value,
|
|
80
56
|
value: x.value,
|
|
81
|
-
label: x.label
|
|
57
|
+
label: x.label,
|
|
58
|
+
icon: x.icon || null
|
|
82
59
|
})));
|
|
83
60
|
}
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
Tabs.propTypes = {
|
|
86
63
|
tabs: _propTypes.default.array.isRequired,
|
|
87
64
|
current: _propTypes.default.string.isRequired,
|
|
88
65
|
onChange: _propTypes.default.func.isRequired
|
package/lib/Tag/index.js
CHANGED
|
@@ -13,10 +13,12 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
13
13
|
|
|
14
14
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
15
15
|
|
|
16
|
-
var _Theme = require("../Theme");
|
|
17
|
-
|
|
18
16
|
var _Util = require("../Util");
|
|
19
17
|
|
|
18
|
+
var _Colors = _interopRequireDefault(require("../Colors"));
|
|
19
|
+
|
|
20
|
+
const _excluded = ["type", "content", "children", "style", "className", "forwardedRef"];
|
|
21
|
+
|
|
20
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
23
|
|
|
22
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,29 +27,29 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
25
27
|
|
|
26
28
|
const types = {
|
|
27
29
|
error: {
|
|
28
|
-
color:
|
|
30
|
+
color: _Colors.default.error.main,
|
|
29
31
|
backgroundColor: 'rgba(227, 91, 84, 0.2)'
|
|
30
32
|
},
|
|
31
33
|
warning: {
|
|
32
|
-
color:
|
|
34
|
+
color: _Colors.default.warning.main,
|
|
33
35
|
backgroundColor: 'rgba(247, 208, 64, 0.2)'
|
|
34
36
|
},
|
|
35
37
|
success: {
|
|
36
|
-
color:
|
|
38
|
+
color: _Colors.default.success.main,
|
|
37
39
|
backgroundColor: '#eafbd9'
|
|
38
40
|
},
|
|
39
41
|
primary: {
|
|
40
|
-
color:
|
|
42
|
+
color: _Colors.default.primary.main,
|
|
41
43
|
backgroundColor: '#ECEFFF'
|
|
42
44
|
},
|
|
43
45
|
reverse: {
|
|
44
|
-
color:
|
|
45
|
-
backgroundColor:
|
|
46
|
+
color: '#fff',
|
|
47
|
+
backgroundColor: '#222'
|
|
46
48
|
}
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
function Tag(props) {
|
|
50
|
-
const newProps = (0, _Util.mergeProps)(props, Tag, ['style']);
|
|
52
|
+
const newProps = (0, _Util.mergeProps)(props, Tag, ['style']);
|
|
51
53
|
|
|
52
54
|
const {
|
|
53
55
|
type,
|
|
@@ -57,10 +59,10 @@ function Tag(props) {
|
|
|
57
59
|
className,
|
|
58
60
|
forwardedRef
|
|
59
61
|
} = newProps,
|
|
60
|
-
rest = _objectWithoutProperties(newProps,
|
|
62
|
+
rest = _objectWithoutProperties(newProps, _excluded);
|
|
61
63
|
|
|
62
64
|
const styles = Object.assign({}, types[type] || types.primary, style);
|
|
63
|
-
return _react.default.createElement(Span, Object.assign({
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(Span, Object.assign({
|
|
64
66
|
ref: forwardedRef,
|
|
65
67
|
component: "span",
|
|
66
68
|
className: className,
|
|
@@ -82,12 +84,12 @@ Tag.defaultProps = {
|
|
|
82
84
|
style: {}
|
|
83
85
|
};
|
|
84
86
|
|
|
85
|
-
var _default = _react.default.forwardRef((props, ref) => _react.default.createElement(Tag, Object.assign({}, props, {
|
|
87
|
+
var _default = /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/_react.default.createElement(Tag, Object.assign({}, props, {
|
|
86
88
|
forwardedRef: ref
|
|
87
89
|
})));
|
|
88
90
|
|
|
89
91
|
exports.default = _default;
|
|
90
92
|
const Span = (0, _styledComponents.default)(_Typography.default).withConfig({
|
|
91
93
|
displayName: "Tag__Span",
|
|
92
|
-
componentId: "wqpeo3-0"
|
|
94
|
+
componentId: "sc-wqpeo3-0"
|
|
93
95
|
})(["&&{display:inline-flex;justify-content:center;align-items:center;padding:2px 10px;height:20px;line-height:20px;font-size:12px;font-weight:500;}"]);
|
package/lib/Terminal/Player.js
CHANGED
|
@@ -21,13 +21,13 @@ var _util = require("./util");
|
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
24
|
+
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); }
|
|
25
25
|
|
|
26
|
-
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; }
|
|
26
|
+
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; }
|
|
27
27
|
|
|
28
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
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
29
|
|
|
30
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
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
31
|
|
|
32
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
33
|
|
|
@@ -54,47 +54,47 @@ function Player(props) {
|
|
|
54
54
|
// console.log(`dispatch.${action.type}`, action.payload);
|
|
55
55
|
switch (action.type) {
|
|
56
56
|
case 'jump':
|
|
57
|
-
return _objectSpread({}, state, {
|
|
57
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
58
58
|
isPlaying: false
|
|
59
59
|
}, action.payload);
|
|
60
60
|
|
|
61
61
|
case 'start':
|
|
62
|
-
return _objectSpread({}, state, {
|
|
62
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
63
63
|
isStarted: true,
|
|
64
64
|
lastTickTime: Date.now()
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
case 'play':
|
|
68
|
-
return _objectSpread({}, state, {
|
|
68
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
69
69
|
isPlaying: true,
|
|
70
70
|
lastTickTime: Date.now()
|
|
71
71
|
}, action.payload);
|
|
72
72
|
|
|
73
73
|
case 'pause':
|
|
74
|
-
return _objectSpread({}, state, {
|
|
74
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
75
75
|
isPlaying: false
|
|
76
76
|
}, action.payload);
|
|
77
77
|
|
|
78
78
|
case 'tickStart':
|
|
79
|
-
return _objectSpread({}, state, {
|
|
79
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
80
80
|
isRendering: true,
|
|
81
81
|
lastTickTime: Date.now()
|
|
82
82
|
}, action.payload);
|
|
83
83
|
|
|
84
84
|
case 'tickEnd':
|
|
85
|
-
return _objectSpread({}, state, {
|
|
85
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
86
86
|
isRendering: false,
|
|
87
87
|
lastTickTime: Date.now()
|
|
88
88
|
}, action.payload);
|
|
89
89
|
|
|
90
90
|
case 'reset':
|
|
91
|
-
return _objectSpread({}, state, {
|
|
91
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
92
92
|
currentFrame: 0,
|
|
93
93
|
currentTime: 0
|
|
94
94
|
}, action.payload);
|
|
95
95
|
|
|
96
96
|
default:
|
|
97
|
-
return _objectSpread({}, state, {
|
|
97
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
98
98
|
lastTickTime: Date.now()
|
|
99
99
|
}, action.payload);
|
|
100
100
|
}
|
|
@@ -179,10 +179,8 @@ function Player(props) {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
if (options.autoplay) {
|
|
182
|
-
// eslint-disable-next-line no-use-before-define
|
|
183
182
|
onStart();
|
|
184
183
|
} else {
|
|
185
|
-
// eslint-disable-next-line no-use-before-define
|
|
186
184
|
doJump(Math.min(Math.abs(options.thumbnailTime), totalDuration));
|
|
187
185
|
}
|
|
188
186
|
}, []); // Tick intervals
|
|
@@ -277,7 +275,7 @@ function Player(props) {
|
|
|
277
275
|
|
|
278
276
|
const doJump = time => {
|
|
279
277
|
terminal.current.reset();
|
|
280
|
-
const toFrameIndex = (0, _util.findFrameAt)(frames, time);
|
|
278
|
+
const toFrameIndex = (0, _util.findFrameAt)(frames, time);
|
|
281
279
|
|
|
282
280
|
for (let i = 0; i < toFrameIndex; i++) {
|
|
283
281
|
renderFrame(i);
|
|
@@ -339,87 +337,87 @@ function Player(props) {
|
|
|
339
337
|
return onStart();
|
|
340
338
|
};
|
|
341
339
|
|
|
342
|
-
return _react.default.createElement("div", {
|
|
340
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
343
341
|
className: (0, _util.getPlayerClass)(options, state),
|
|
344
342
|
ref: container
|
|
345
|
-
}, _react.default.createElement("div", {
|
|
343
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
346
344
|
className: "cover",
|
|
347
345
|
onClick: onStart
|
|
348
|
-
}), _react.default.createElement("div", {
|
|
346
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
349
347
|
className: "start",
|
|
350
348
|
onClick: onStart
|
|
351
|
-
}, _react.default.createElement("svg", {
|
|
349
|
+
}, /*#__PURE__*/_react.default.createElement("svg", {
|
|
352
350
|
style: {
|
|
353
351
|
enableBackground: 'new 0 0 30 30'
|
|
354
352
|
},
|
|
355
353
|
viewBox: "0 0 30 30"
|
|
356
|
-
}, _react.default.createElement("polygon", {
|
|
354
|
+
}, /*#__PURE__*/_react.default.createElement("polygon", {
|
|
357
355
|
points: "6.583,3.186 5,4.004 5,15 26,15 26.483,14.128 "
|
|
358
|
-
}), _react.default.createElement("polygon", {
|
|
356
|
+
}), /*#__PURE__*/_react.default.createElement("polygon", {
|
|
359
357
|
points: "6.583,26.814 5,25.996 5,15 26,15 26.483,15.872 "
|
|
360
|
-
}), _react.default.createElement("circle", {
|
|
358
|
+
}), /*#__PURE__*/_react.default.createElement("circle", {
|
|
361
359
|
cx: "26",
|
|
362
360
|
cy: "15",
|
|
363
361
|
r: "1"
|
|
364
|
-
}), _react.default.createElement("circle", {
|
|
362
|
+
}), /*#__PURE__*/_react.default.createElement("circle", {
|
|
365
363
|
cx: "6",
|
|
366
364
|
cy: "4",
|
|
367
365
|
r: "1"
|
|
368
|
-
}), _react.default.createElement("circle", {
|
|
366
|
+
}), /*#__PURE__*/_react.default.createElement("circle", {
|
|
369
367
|
cx: "6",
|
|
370
368
|
cy: "26",
|
|
371
369
|
r: "1"
|
|
372
|
-
}))), _react.default.createElement("div", {
|
|
370
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
373
371
|
className: "terminal"
|
|
374
|
-
}, _react.default.createElement("div", {
|
|
372
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
375
373
|
className: (0, _util.getFrameClass)(options),
|
|
376
374
|
style: options.frameBox.style || {}
|
|
377
|
-
}, _react.default.createElement("div", {
|
|
375
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
378
376
|
className: "terminal-titlebar"
|
|
379
|
-
}, _react.default.createElement("div", {
|
|
377
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
380
378
|
className: "buttons"
|
|
381
|
-
}, _react.default.createElement("div", {
|
|
379
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
382
380
|
className: "close-button"
|
|
383
|
-
}), _react.default.createElement("div", {
|
|
381
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
384
382
|
className: "minimize-button"
|
|
385
|
-
}), _react.default.createElement("div", {
|
|
383
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
386
384
|
className: "maximize-button"
|
|
387
|
-
})), _react.default.createElement("div", {
|
|
385
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
388
386
|
className: "title"
|
|
389
|
-
}, options.frameBox.title || '')), _react.default.createElement("div", {
|
|
387
|
+
}, options.frameBox.title || '')), /*#__PURE__*/_react.default.createElement("div", {
|
|
390
388
|
className: "terminal-body"
|
|
391
|
-
}, _react.default.createElement(_index.default, {
|
|
389
|
+
}, /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
392
390
|
ref: terminal,
|
|
393
391
|
options: terminalOptions
|
|
394
|
-
})))), _react.default.createElement("div", {
|
|
392
|
+
})))), /*#__PURE__*/_react.default.createElement("div", {
|
|
395
393
|
className: "controller"
|
|
396
|
-
}, state.isPlaying && _react.default.createElement("div", {
|
|
394
|
+
}, state.isPlaying && /*#__PURE__*/_react.default.createElement("div", {
|
|
397
395
|
className: "pause",
|
|
398
396
|
onClick: onPause,
|
|
399
397
|
title: "Pause"
|
|
400
|
-
}, _react.default.createElement("span", {
|
|
398
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
401
399
|
className: "icon"
|
|
402
|
-
})), !state.isPlaying && state.isStarted && _react.default.createElement("div", {
|
|
400
|
+
})), !state.isPlaying && state.isStarted && /*#__PURE__*/_react.default.createElement("div", {
|
|
403
401
|
className: "play",
|
|
404
402
|
onClick: onPlay,
|
|
405
403
|
title: "Play"
|
|
406
|
-
}, _react.default.createElement("span", {
|
|
404
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
407
405
|
className: "icon"
|
|
408
|
-
})), !state.isPlaying && !state.isStarted && _react.default.createElement("div", {
|
|
406
|
+
})), !state.isPlaying && !state.isStarted && /*#__PURE__*/_react.default.createElement("div", {
|
|
409
407
|
className: "play",
|
|
410
408
|
onClick: onStart,
|
|
411
409
|
title: "Start"
|
|
412
|
-
}, _react.default.createElement("span", {
|
|
410
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
413
411
|
className: "icon"
|
|
414
|
-
})), _react.default.createElement("div", {
|
|
412
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
415
413
|
className: "timer"
|
|
416
|
-
}, (0, _util.formatTime)(state.currentTime)), _react.default.createElement("div", {
|
|
414
|
+
}, (0, _util.formatTime)(state.currentTime)), /*#__PURE__*/_react.default.createElement("div", {
|
|
417
415
|
className: "progressbar-wrapper"
|
|
418
|
-
}, _react.default.createElement("div", {
|
|
416
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
419
417
|
className: "progressbar",
|
|
420
418
|
ref: progress,
|
|
421
419
|
onClick: onJump
|
|
422
|
-
}, _react.default.createElement("div", {
|
|
420
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
423
421
|
className: "progress",
|
|
424
422
|
style: {
|
|
425
423
|
width: "".concat(state.currentTime / totalDuration * 100, "%")
|
package/lib/Terminal/index.js
CHANGED
|
@@ -143,7 +143,9 @@ class Terminal extends _react.default.Component {
|
|
|
143
143
|
|
|
144
144
|
render() {
|
|
145
145
|
const className = ['react-xterm', this.props.className].filter(Boolean).join(' ');
|
|
146
|
-
return (
|
|
146
|
+
return (
|
|
147
|
+
/*#__PURE__*/
|
|
148
|
+
// eslint-disable-next-line no-return-assign
|
|
147
149
|
_react.default.createElement("div", {
|
|
148
150
|
ref: _ref => this.container = _ref,
|
|
149
151
|
className: className,
|
package/lib/Terminal/util.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.isFrameAt = exports.getPlayerClass = exports.getFrameClass = exports.formatTime = exports.formatFrames = exports.findFrameAt = exports.defaultState = exports.defaultOptions = void 0;
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Adjust the delays of the frames, considering to the options
|
|
@@ -71,8 +71,7 @@ const findFrameAt = (frames, time, fromIndex) => {
|
|
|
71
71
|
if (typeof fromIndex === 'undefined') {
|
|
72
72
|
// eslint-disable-next-line no-param-reassign
|
|
73
73
|
fromIndex = 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
74
|
+
}
|
|
76
75
|
|
|
77
76
|
for (let i = fromIndex; i < frames.length; i++) {
|
|
78
77
|
frame = frames[i];
|
|
@@ -13,13 +13,14 @@ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")
|
|
|
13
13
|
|
|
14
14
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
15
|
|
|
16
|
+
const _excluded = ["children", "startChars", "endChars", "scaleFactor", "maxWidth", "style", "fontType"];
|
|
17
|
+
|
|
16
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
19
|
|
|
18
20
|
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; }
|
|
19
21
|
|
|
20
22
|
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; }
|
|
21
23
|
|
|
22
|
-
// eslint-disable-next-line object-curly-newline
|
|
23
24
|
function TextCollapse(_ref) {
|
|
24
25
|
let {
|
|
25
26
|
children,
|
|
@@ -27,32 +28,36 @@ function TextCollapse(_ref) {
|
|
|
27
28
|
endChars,
|
|
28
29
|
scaleFactor,
|
|
29
30
|
maxWidth,
|
|
30
|
-
style
|
|
31
|
+
style,
|
|
32
|
+
fontType
|
|
31
33
|
} = _ref,
|
|
32
|
-
rest = _objectWithoutProperties(_ref,
|
|
34
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
33
35
|
|
|
34
36
|
if (typeof children !== 'string') {
|
|
35
37
|
return null;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
40
|
+
const isMonospace = fontType === 'monospace'; // 由于 css 样式产生的省略号长度是不确定的,所以目前 startChars 的长度只能让开发者自己去加上‘省略号’的宽度去设置这个值,要想完美的实现目标功能,最好是改用 js 动态修改文本内容来实现
|
|
41
|
+
|
|
42
|
+
const startWidth = isMonospace ? "".concat(startChars, "ch") : "".concat(scaleFactor * (startChars + 3), "em");
|
|
43
|
+
const endWidth = isMonospace ? "".concat(endChars, "ch") : "".concat(scaleFactor * endChars, "em");
|
|
44
|
+
const styles = Object.assign(isMonospace ? {
|
|
45
|
+
fontFamily: '"Courier New", Courier, monospace'
|
|
46
|
+
} : {}, {
|
|
42
47
|
fontSize: 'inherit',
|
|
43
48
|
color: 'inherit',
|
|
44
49
|
fontWeight: 'inherit',
|
|
45
50
|
maxWidth
|
|
46
51
|
}, style);
|
|
47
52
|
const [startPart, endPart] = [children.slice(0, children.length - endChars), children.slice(children.length - endChars)];
|
|
48
|
-
return _react.default.createElement(Container, Object.assign({
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(Container, Object.assign({
|
|
49
54
|
component: "span",
|
|
50
55
|
style: styles,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}, rest), _react.default.createElement("span", {
|
|
56
|
+
startwidth: startWidth,
|
|
57
|
+
endwidth: endWidth
|
|
58
|
+
}, rest), /*#__PURE__*/_react.default.createElement("span", {
|
|
54
59
|
className: "start-part"
|
|
55
|
-
}, startPart), _react.default.createElement("span", {
|
|
60
|
+
}, startPart), /*#__PURE__*/_react.default.createElement("span", {
|
|
56
61
|
className: "end-part"
|
|
57
62
|
}, endPart));
|
|
58
63
|
}
|
|
@@ -60,6 +65,7 @@ function TextCollapse(_ref) {
|
|
|
60
65
|
TextCollapse.propTypes = {
|
|
61
66
|
children: _propTypes.default.string.isRequired,
|
|
62
67
|
maxWidth: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
|
|
68
|
+
fontType: _propTypes.default.oneOf(['monospace', 'normal']),
|
|
63
69
|
style: _propTypes.default.object,
|
|
64
70
|
startChars: _propTypes.default.number,
|
|
65
71
|
endChars: _propTypes.default.number,
|
|
@@ -69,9 +75,10 @@ TextCollapse.defaultProps = {
|
|
|
69
75
|
style: {},
|
|
70
76
|
startChars: 5,
|
|
71
77
|
endChars: 5,
|
|
72
|
-
scaleFactor: 0.45
|
|
78
|
+
scaleFactor: 0.45,
|
|
79
|
+
fontType: 'normal'
|
|
73
80
|
};
|
|
74
81
|
const Container = (0, _styledComponents.default)(_Typography.default).withConfig({
|
|
75
82
|
displayName: "TextCollapse__Container",
|
|
76
83
|
componentId: "sc-1u3qfqq-0"
|
|
77
|
-
})(["display:inline-flex;align-items:center;justify-content:start;cursor:pointer;white-space:nowrap;overflow:hidden;.start-part,.end-part{display:inline-block;vertical-align:bottom;white-space:nowrap;overflow:hidden;}.start-part{max-width:calc(100% - ", "
|
|
84
|
+
})(["display:inline-flex;align-items:center;justify-content:start;cursor:pointer;white-space:nowrap;overflow:hidden;.start-part,.end-part{display:inline-block;vertical-align:bottom;white-space:nowrap;overflow:hidden;}.start-part{max-width:calc(100% - ", ");min-width:", ";text-overflow:ellipsis;}.end-part{max-width:calc(100% - ", ");direction:rtl;}"], props => props.endwidth, props => props.startwidth, props => props.startwidth);
|