1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | var slicedToArray = require('./slicedToArray-ef426d0f.js');
|
8 | require('./unsupportedIterableToArray-8a00e599.js');
|
9 | var React = require('react');
|
10 | var React__default = _interopDefault(React);
|
11 | require('./_commonjsHelpers-72d386ba.js');
|
12 | var index = require('./index-b0606964.js');
|
13 | require('./defineProperty-0921a47c.js');
|
14 | require('./toConsumableArray-7f36359f.js');
|
15 | var _styled = require('styled-components');
|
16 | var _styled__default = _interopDefault(_styled);
|
17 | require('./getPrototypeOf-e2d1e599.js');
|
18 | require('./color.js');
|
19 | require('./components.js');
|
20 | require('./contains-component.js');
|
21 | require('./css.js');
|
22 | require('./dayjs.min-aa59a48e.js');
|
23 | require('./date.js');
|
24 | require('./miscellaneous.js');
|
25 | require('./environment.js');
|
26 | require('./font.js');
|
27 | require('./math-ecfd5d91.js');
|
28 | require('./characters.js');
|
29 | require('./format.js');
|
30 | require('./keycodes.js');
|
31 | require('./url.js');
|
32 | require('./web3.js');
|
33 | require('./theme-dark.js');
|
34 | require('./theme-light.js');
|
35 | var Theme = require('./Theme.js');
|
36 | var _extends = require('./extends-40571110.js');
|
37 | var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
|
38 | var index$1 = require('./index-ecc57c9f.js');
|
39 |
|
40 | var spin = _styled.keyframes(["from{transform:rotate(0deg);}to{transform:rotate(360deg);}"]);
|
41 | var SIZE_SMALL = 14;
|
42 | var SIZE_MEDIUM = 24;
|
43 | var CONTAINER_SIZE_SMALL = 22;
|
44 | var CONTAINER_SIZE_MEDIUM = 24;
|
45 | var BORDER_WIDTH_STRONG = 2.5;
|
46 | var BORDER_WIDTH_MEDIUM = 1;
|
47 | var lastInstanceId = 1;
|
48 |
|
49 | var _StyledSpan = _styled__default("span").withConfig({
|
50 | displayName: "LoadingRing___StyledSpan",
|
51 | componentId: "iauf6f-0"
|
52 | })(["position:relative;display:flex;align-items:center;justify-content:center;width:", "px;height:", "px;"], function (p) {
|
53 | return p._css;
|
54 | }, function (p) {
|
55 | return p._css2;
|
56 | });
|
57 |
|
58 | var _StyledCircle = _styled__default("circle").withConfig({
|
59 | displayName: "LoadingRing___StyledCircle",
|
60 | componentId: "iauf6f-1"
|
61 | })(["animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:", ";transform-origin:50% 50%;"], function (p) {
|
62 | return p._css3;
|
63 | });
|
64 |
|
65 | var LoadingRing = React__default.memo(function LoadingRing(_ref) {
|
66 | var paused = _ref.paused,
|
67 | modeProp = _ref.mode,
|
68 | props = objectWithoutProperties._objectWithoutProperties(_ref, ["paused", "mode"]);
|
69 |
|
70 | var theme = Theme.useTheme();
|
71 |
|
72 | var _useState = React.useState(function () {
|
73 | return "sync-indicator-".concat(lastInstanceId++);
|
74 | }),
|
75 | _useState2 = slicedToArray._slicedToArray(_useState, 1),
|
76 | instanceId = _useState2[0];
|
77 |
|
78 | var _useInside = index$1.o('FloatIndicator'),
|
79 | _useInside2 = slicedToArray._slicedToArray(_useInside, 1),
|
80 | insideFloatIndicator = _useInside2[0];
|
81 |
|
82 | var mode = modeProp || (insideFloatIndicator ? 'half-circle' : 'two-parts');
|
83 | var containerSize = mode === 'half-circle' ? CONTAINER_SIZE_MEDIUM : CONTAINER_SIZE_SMALL;
|
84 | var borderWidth = mode === 'half-circle' ? BORDER_WIDTH_STRONG : BORDER_WIDTH_MEDIUM;
|
85 | var size = (mode === 'half-circle' ? SIZE_MEDIUM : SIZE_SMALL) - borderWidth;
|
86 |
|
87 | var _useMemo = React.useMemo(function () {
|
88 | var length = Math.PI * size;
|
89 |
|
90 | if (paused) {
|
91 | return [0, length];
|
92 | }
|
93 |
|
94 | if (mode === 'two-parts') {
|
95 | return [length / 4, length / 4];
|
96 | }
|
97 |
|
98 |
|
99 | return [length / 2, length / 2];
|
100 | }, [mode, size, paused]),
|
101 | _useMemo2 = slicedToArray._slicedToArray(_useMemo, 2),
|
102 | gapLength = _useMemo2[0],
|
103 | dashLength = _useMemo2[1];
|
104 |
|
105 | return React__default.createElement(_StyledSpan, _extends._extends({}, props, {
|
106 | _css: containerSize,
|
107 | _css2: containerSize
|
108 | }), React__default.createElement("svg", {
|
109 | width: size + borderWidth,
|
110 | height: size + borderWidth,
|
111 | viewBox: "0 0 ".concat(size + borderWidth, " ").concat(size + borderWidth)
|
112 | }, React__default.createElement("linearGradient", {
|
113 | id: "".concat(instanceId, "-gradient"),
|
114 | gradientTransform: "rotate(90)"
|
115 | }, React__default.createElement("stop", {
|
116 | offset: "0%",
|
117 | stopColor: theme.accentEnd
|
118 | }), React__default.createElement("stop", {
|
119 | offset: "100%",
|
120 | stopColor: theme.accentStart
|
121 | })), insideFloatIndicator && React__default.createElement("circle", {
|
122 | cx: "50%",
|
123 | cy: "50%",
|
124 | r: size / 2,
|
125 | fill: "transparent",
|
126 | stroke: theme.floatingContent.alpha(0.3),
|
127 | strokeWidth: borderWidth
|
128 | }), React__default.createElement("mask", {
|
129 | id: "".concat(instanceId, "-mask")
|
130 | }, React__default.createElement(_StyledCircle, {
|
131 | cx: "50%",
|
132 | cy: "50%",
|
133 | r: size / 2,
|
134 | fill: "transparent",
|
135 | stroke: "url(#".concat(instanceId, "-gradient)"),
|
136 | strokeWidth: borderWidth,
|
137 | strokeDasharray: "".concat(dashLength, " ").concat(gapLength),
|
138 | _css3: paused ? 'none' : spin
|
139 | })), React__default.createElement("circle", {
|
140 | cx: "50%",
|
141 | cy: "50%",
|
142 | r: size / 2 + borderWidth / 2,
|
143 | fill: "url(#".concat(instanceId, "-gradient)"),
|
144 | mask: "url(#".concat(instanceId, "-mask)")
|
145 | })));
|
146 | });
|
147 | LoadingRing.propTypes = {
|
148 | mode: index.PropTypes.oneOf(['two-parts', 'half-circle']),
|
149 | paused: index.PropTypes.bool
|
150 | };
|
151 | LoadingRing.defaultProps = {
|
152 | paused: false
|
153 | };
|
154 |
|
155 | exports.default = LoadingRing;
|
156 |
|