|
|
'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;
|