mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 09:25:15 +00:00
145 lines
2.6 KiB
JavaScript
145 lines
2.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const utils = require('./utils');
|
||
|
const colors = require('ansi-colors');
|
||
|
|
||
|
const styles = {
|
||
|
default: colors.noop,
|
||
|
noop: colors.noop,
|
||
|
|
||
|
/**
|
||
|
* Modifiers
|
||
|
*/
|
||
|
|
||
|
set inverse(custom) {
|
||
|
this._inverse = custom;
|
||
|
},
|
||
|
get inverse() {
|
||
|
return this._inverse || utils.inverse(this.primary);
|
||
|
},
|
||
|
|
||
|
set complement(custom) {
|
||
|
this._complement = custom;
|
||
|
},
|
||
|
get complement() {
|
||
|
return this._complement || utils.complement(this.primary);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Main color
|
||
|
*/
|
||
|
|
||
|
primary: colors.cyan,
|
||
|
|
||
|
/**
|
||
|
* Main palette
|
||
|
*/
|
||
|
|
||
|
success: colors.green,
|
||
|
danger: colors.magenta,
|
||
|
strong: colors.bold,
|
||
|
warning: colors.yellow,
|
||
|
muted: colors.dim,
|
||
|
disabled: colors.gray,
|
||
|
dark: colors.dim.gray,
|
||
|
underline: colors.underline,
|
||
|
|
||
|
set info(custom) {
|
||
|
this._info = custom;
|
||
|
},
|
||
|
get info() {
|
||
|
return this._info || this.primary;
|
||
|
},
|
||
|
|
||
|
set em(custom) {
|
||
|
this._em = custom;
|
||
|
},
|
||
|
get em() {
|
||
|
return this._em || this.primary.underline;
|
||
|
},
|
||
|
|
||
|
set heading(custom) {
|
||
|
this._heading = custom;
|
||
|
},
|
||
|
get heading() {
|
||
|
return this._heading || this.muted.underline;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Statuses
|
||
|
*/
|
||
|
|
||
|
set pending(custom) {
|
||
|
this._pending = custom;
|
||
|
},
|
||
|
get pending() {
|
||
|
return this._pending || this.primary;
|
||
|
},
|
||
|
|
||
|
set submitted(custom) {
|
||
|
this._submitted = custom;
|
||
|
},
|
||
|
get submitted() {
|
||
|
return this._submitted || this.success;
|
||
|
},
|
||
|
|
||
|
set cancelled(custom) {
|
||
|
this._cancelled = custom;
|
||
|
},
|
||
|
get cancelled() {
|
||
|
return this._cancelled || this.danger;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Special styling
|
||
|
*/
|
||
|
|
||
|
set typing(custom) {
|
||
|
this._typing = custom;
|
||
|
},
|
||
|
get typing() {
|
||
|
return this._typing || this.dim;
|
||
|
},
|
||
|
|
||
|
set placeholder(custom) {
|
||
|
this._placeholder = custom;
|
||
|
},
|
||
|
get placeholder() {
|
||
|
return this._placeholder || this.primary.dim;
|
||
|
},
|
||
|
|
||
|
set highlight(custom) {
|
||
|
this._highlight = custom;
|
||
|
},
|
||
|
get highlight() {
|
||
|
return this._highlight || this.inverse;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
styles.merge = (options = {}) => {
|
||
|
if (options.styles && typeof options.styles.enabled === 'boolean') {
|
||
|
colors.enabled = options.styles.enabled;
|
||
|
}
|
||
|
if (options.styles && typeof options.styles.visible === 'boolean') {
|
||
|
colors.visible = options.styles.visible;
|
||
|
}
|
||
|
|
||
|
let result = utils.merge({}, styles, options.styles);
|
||
|
delete result.merge;
|
||
|
|
||
|
for (let key of Object.keys(colors)) {
|
||
|
if (!result.hasOwnProperty(key)) {
|
||
|
Reflect.defineProperty(result, key, { get: () => colors[key] });
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (let key of Object.keys(colors.styles)) {
|
||
|
if (!result.hasOwnProperty(key)) {
|
||
|
Reflect.defineProperty(result, key, { get: () => colors[key] });
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
|
||
|
module.exports = styles;
|