@omni-door/utils
Version:
The utils of omni-door's projects
52 lines (51 loc) • 1.79 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Spinner = void 0;
var ora_1 = __importDefault(require("ora"));
var chalk_1 = __importDefault(require("chalk"));
var logPrefix_1 = __importDefault(require("./logPrefix"));
var emoji_1 = require("./emoji");
var stateMapColor = {
'start': 'white',
'info': 'yellowBright',
'warn': 'yellow',
'fail': 'red',
'succeed': 'green',
'stop': 'gray'
};
var Spinner = /** @class */ (function () {
function Spinner() {
this.spinner = ora_1.default();
this._state = 'start';
this.state = this.state.bind(this);
this.text = this.text.bind(this);
this.color = this.color.bind(this);
this.prefix = this.prefix.bind(this);
this._decorateText = this._decorateText.bind(this);
}
Spinner.prototype.state = function (state, text) {
this._state = state;
// initial spinner
var color = chalk_1.default[stateMapColor[state]];
this.spinner[state](color(this._decorateText(text || '')));
};
Spinner.prototype._decorateText = function (text) {
return logPrefix_1.default() + " " + text + " " + emoji_1.stateMap2Emoji[this._state] + "\n";
};
Spinner.prototype.text = function (text) {
this.spinner.text = this._decorateText(text);
};
Spinner.prototype.color = function (color) {
this.spinner.color = color;
};
Spinner.prototype.prefix = function (prefix) {
this.spinner.spinner = prefix;
};
return Spinner;
}());
exports.Spinner = Spinner;
var spinner = new Spinner();
exports.default = spinner;