You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
2.6 KiB
144 lines
2.6 KiB
'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;
|
|
|