UNPKG

9.06 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
18var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
20var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
22var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
23
24var React = _interopRequireWildcard(require("react"));
25
26var _classnames = _interopRequireDefault(require("classnames"));
27
28var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
29
30var _debounce = _interopRequireDefault(require("lodash/debounce"));
31
32var _configProvider = require("../config-provider");
33
34var _type = require("../_util/type");
35
36var _reactNode = require("../_util/reactNode");
37
38function _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); }
39
40function _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; }
41
42var __rest = void 0 && (void 0).__rest || function (s, e) {
43 var t = {};
44
45 for (var p in s) {
46 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
47 }
48
49 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
50 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
51 }
52 return t;
53};
54
55var SpinSizes = (0, _type.tuple)('small', 'default', 'large'); // Render indicator
56
57var defaultIndicator = null;
58
59function renderIndicator(prefixCls, props) {
60 var indicator = props.indicator;
61 var dotClassName = "".concat(prefixCls, "-dot"); // should not be render default indicator when indicator value is null
62
63 if (indicator === null) {
64 return null;
65 }
66
67 if ((0, _reactNode.isValidElement)(indicator)) {
68 return (0, _reactNode.cloneElement)(indicator, {
69 className: (0, _classnames["default"])(indicator.props.className, dotClassName)
70 });
71 }
72
73 if ((0, _reactNode.isValidElement)(defaultIndicator)) {
74 return (0, _reactNode.cloneElement)(defaultIndicator, {
75 className: (0, _classnames["default"])(defaultIndicator.props.className, dotClassName)
76 });
77 }
78
79 return /*#__PURE__*/React.createElement("span", {
80 className: (0, _classnames["default"])(dotClassName, "".concat(prefixCls, "-dot-spin"))
81 }, /*#__PURE__*/React.createElement("i", {
82 className: "".concat(prefixCls, "-dot-item")
83 }), /*#__PURE__*/React.createElement("i", {
84 className: "".concat(prefixCls, "-dot-item")
85 }), /*#__PURE__*/React.createElement("i", {
86 className: "".concat(prefixCls, "-dot-item")
87 }), /*#__PURE__*/React.createElement("i", {
88 className: "".concat(prefixCls, "-dot-item")
89 }));
90}
91
92function shouldDelay(spinning, delay) {
93 return !!spinning && !!delay && !isNaN(Number(delay));
94}
95
96var Spin = /*#__PURE__*/function (_React$Component) {
97 (0, _inherits2["default"])(Spin, _React$Component);
98
99 var _super = (0, _createSuper2["default"])(Spin);
100
101 function Spin(props) {
102 var _this;
103
104 (0, _classCallCheck2["default"])(this, Spin);
105 _this = _super.call(this, props);
106
107 _this.debouncifyUpdateSpinning = function (props) {
108 var _ref = props || _this.props,
109 delay = _ref.delay;
110
111 if (delay) {
112 _this.cancelExistingSpin();
113
114 _this.updateSpinning = (0, _debounce["default"])(_this.originalUpdateSpinning, delay);
115 }
116 };
117
118 _this.updateSpinning = function () {
119 var spinning = _this.props.spinning;
120 var currentSpinning = _this.state.spinning;
121
122 if (currentSpinning !== spinning) {
123 _this.setState({
124 spinning: spinning
125 });
126 }
127 };
128
129 _this.renderSpin = function (_ref2) {
130 var _classNames;
131
132 var getPrefixCls = _ref2.getPrefixCls,
133 direction = _ref2.direction;
134
135 var _a = _this.props,
136 customizePrefixCls = _a.prefixCls,
137 className = _a.className,
138 size = _a.size,
139 tip = _a.tip,
140 wrapperClassName = _a.wrapperClassName,
141 style = _a.style,
142 restProps = __rest(_a, ["prefixCls", "className", "size", "tip", "wrapperClassName", "style"]);
143
144 var spinning = _this.state.spinning;
145 var prefixCls = getPrefixCls('spin', customizePrefixCls);
146 var spinClassName = (0, _classnames["default"])(prefixCls, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-sm"), size === 'small'), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-lg"), size === 'large'), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-spinning"), spinning), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-show-text"), !!tip), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames), className); // fix https://fb.me/react-unknown-prop
147
148 var divProps = (0, _omit["default"])(restProps, ['spinning', 'delay', 'indicator']);
149 var spinElement = /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, divProps, {
150 style: style,
151 className: spinClassName
152 }), renderIndicator(prefixCls, _this.props), tip ? /*#__PURE__*/React.createElement("div", {
153 className: "".concat(prefixCls, "-text")
154 }, tip) : null);
155
156 if (_this.isNestedPattern()) {
157 var containerClassName = (0, _classnames["default"])("".concat(prefixCls, "-container"), (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-blur"), spinning));
158 return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, divProps, {
159 className: (0, _classnames["default"])("".concat(prefixCls, "-nested-loading"), wrapperClassName)
160 }), spinning && /*#__PURE__*/React.createElement("div", {
161 key: "loading"
162 }, spinElement), /*#__PURE__*/React.createElement("div", {
163 className: containerClassName,
164 key: "container"
165 }, _this.props.children));
166 }
167
168 return spinElement;
169 };
170
171 var spinning = props.spinning,
172 delay = props.delay;
173 var shouldBeDelayed = shouldDelay(spinning, delay);
174 _this.state = {
175 spinning: spinning && !shouldBeDelayed
176 };
177 _this.originalUpdateSpinning = _this.updateSpinning;
178
179 _this.debouncifyUpdateSpinning(props);
180
181 return _this;
182 }
183
184 (0, _createClass2["default"])(Spin, [{
185 key: "componentDidMount",
186 value: function componentDidMount() {
187 this.updateSpinning();
188 }
189 }, {
190 key: "componentDidUpdate",
191 value: function componentDidUpdate() {
192 this.debouncifyUpdateSpinning();
193 this.updateSpinning();
194 }
195 }, {
196 key: "componentWillUnmount",
197 value: function componentWillUnmount() {
198 this.cancelExistingSpin();
199 }
200 }, {
201 key: "cancelExistingSpin",
202 value: function cancelExistingSpin() {
203 var updateSpinning = this.updateSpinning;
204
205 if (updateSpinning && updateSpinning.cancel) {
206 updateSpinning.cancel();
207 }
208 }
209 }, {
210 key: "isNestedPattern",
211 value: function isNestedPattern() {
212 return !!(this.props && typeof this.props.children !== 'undefined');
213 }
214 }, {
215 key: "render",
216 value: function render() {
217 return /*#__PURE__*/React.createElement(_configProvider.ConfigConsumer, null, this.renderSpin);
218 }
219 }], [{
220 key: "setDefaultIndicator",
221 value: function setDefaultIndicator(indicator) {
222 defaultIndicator = indicator;
223 }
224 }]);
225 return Spin;
226}(React.Component);
227
228Spin.defaultProps = {
229 spinning: true,
230 size: 'default',
231 wrapperClassName: ''
232};
233var _default = Spin;
234exports["default"] = _default;
\No newline at end of file