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.
51 lines
1.1 KiB
51 lines
1.1 KiB
'use strict'; |
|
|
|
const c = require('kleur'); |
|
|
|
const figures = require('./figures'); // rendering user input. |
|
|
|
|
|
const styles = Object.freeze({ |
|
password: { |
|
scale: 1, |
|
render: input => '*'.repeat(input.length) |
|
}, |
|
emoji: { |
|
scale: 2, |
|
render: input => '😃'.repeat(input.length) |
|
}, |
|
invisible: { |
|
scale: 0, |
|
render: input => '' |
|
}, |
|
default: { |
|
scale: 1, |
|
render: input => `${input}` |
|
} |
|
}); |
|
|
|
const render = type => styles[type] || styles.default; // icon to signalize a prompt. |
|
|
|
|
|
const symbols = Object.freeze({ |
|
aborted: c.red(figures.cross), |
|
done: c.green(figures.tick), |
|
exited: c.yellow(figures.cross), |
|
default: c.cyan('?') |
|
}); |
|
|
|
const symbol = (done, aborted, exited) => aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default; // between the question and the user's input. |
|
|
|
|
|
const delimiter = completing => c.gray(completing ? figures.ellipsis : figures.pointerSmall); |
|
|
|
const item = (expandable, expanded) => c.gray(expandable ? expanded ? figures.pointerSmall : '+' : figures.line); |
|
|
|
module.exports = { |
|
styles, |
|
render, |
|
symbols, |
|
symbol, |
|
delimiter, |
|
item |
|
}; |