'use strict'; module.exports = (prompt, superFormat) => { const format = { default: () => prompt.input, autocomplete() { let { focused, input, selected, state, styles } = prompt; if (!focused || !state.submitted) return input; if (Array.isArray(selected)) { return selected.map(ch => styles.primary(ch.message)).join(', '); } let value = (prompt.value = prompt.input = focused.value); return styles.primary(value); }, boolean(value = prompt.value) { let { styles, state } = prompt; return !state.submitted ? styles.primary(value) : styles.success(value); }, invisible() { return ''; }, list() { let { list, state, styles } = prompt; let style = state.submitted ? styles.primary : val => val; return list.map(style).join(', '); }, form(value) { return !prompt.state.submitted ? superFormat(value) : ''; }, number(input = prompt.input) { return prompt.styles.info(input); }, password() { let { input, state, styles, symbols } = prompt; let color = state.submitted ? styles.primary : styles.muted; return color(symbols.asterisk.repeat(input.length)); }, scale() { let { choices, state, styles } = prompt; if (state.submitted) { return choices.map(ch => styles.info(ch.index)).join(', '); } return ''; }, select() { let { focused, selected, state, styles } = prompt; // if (!state.submitted) return prompt.styles.muted(prompt.state.hint);; if (!state.submitted) return ''; if (Array.isArray(selected)) { return selected.map(ch => styles.primary(ch.name)).join(', '); } return styles.primary(focused.name); }, snippet(value) { let { state, styles } = prompt; let color = state.completed < 100 ? styles.warning : styles.success; if (state.submitted && state.completed !== 100) { color = styles.danger; } return color(`${state.completed}% completed`); }, string(value = prompt.value) { let { cursor, initial, state, styles } = prompt; if (!state.submitted) { return placeholder(prompt, { input, initial: initial, pos: cursor }); } return styles.submitted(input || initial); }, survey(...args) { return format.scale(...args); } }; return format; };