UNPKG

2.2 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _react = _interopRequireWildcard(require("react"));
9
10var _propTypes = _interopRequireDefault(require("prop-types"));
11
12var _ink = require("ink");
13
14var _cliSpinners = _interopRequireDefault(require("cli-spinners"));
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
19
20function _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; }
21
22class Spinner extends _react.Component {
23 constructor(...args) {
24 super(...args);
25
26 _defineProperty(this, "state", {
27 frame: 0
28 });
29
30 _defineProperty(this, "switchFrame", () => {
31 const {
32 frame
33 } = this.state;
34 const spinner = this.getSpinner();
35 const isLastFrame = frame === spinner.frames.length - 1;
36 const nextFrame = isLastFrame ? 0 : frame + 1;
37 this.setState({
38 frame: nextFrame
39 });
40 });
41 }
42
43 render() {
44 const spinner = this.getSpinner();
45 return _react.default.createElement(_ink.Box, null, spinner.frames[this.state.frame]);
46 }
47
48 componentDidMount() {
49 const spinner = this.getSpinner();
50 this.timer = setInterval(this.switchFrame, spinner.interval);
51 }
52
53 componentWillUnmount() {
54 clearInterval(this.timer);
55 }
56
57 getSpinner() {
58 return _cliSpinners.default[this.props.type] || _cliSpinners.default.dots;
59 }
60
61}
62
63exports.default = Spinner;
64
65_defineProperty(Spinner, "propTypes", {
66 type: _propTypes.default.string
67});
68
69_defineProperty(Spinner, "defaultProps", {
70 type: 'dots'
71});
\No newline at end of file