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.
45 lines
2.1 KiB
45 lines
2.1 KiB
import chalk from 'chalk' |
|
import chalkAnimation from 'chalk-animation' |
|
import gradient from 'gradient-string' |
|
import figlet from 'figlet' |
|
import { createSpinner } from 'nanospinner' |
|
import { delay as sleep, selectRandom } from '../ao-lib/util.js' |
|
import { centerLines } from './strings.js' |
|
|
|
// Displays a brief randomly-selected rainbow-animated phrase |
|
const greetingMessages = ['Portaling!', 'You are a Unicorn!', "Here we go!", "Wow!", "AO Loading...", "Powering Up!", "Unicorn Portal", "Don't Panic!"] |
|
export async function unicornPortal(ms) { |
|
const randomGreetingMessage = selectRandom(greetingMessages) |
|
const rainbowTitle = chalkAnimation.rainbow(randomGreetingMessage + '\n') |
|
await sleep(ms) |
|
rainbowTitle.stop() |
|
} |
|
|
|
// Prints the given message to the screen in the given ASCII art style. Here is a list of decent styles: |
|
const asciiFonts = ['Standard', 'Digital', 'Bubble', 'Script', 'Mini', 'Banner', 'Alphabet', 'Avatar', 'Chunky', 'Computer', 'Contessa', 'Gothic', 'Invita', 'Lockergnome', 'Madrid', 'Morse', 'Moscow', 'Pawp', 'Pepper', 'Pyramid', 'Rectangles', 'Shadow', 'Short', 'Slant', 'Small', 'Stampatello', 'Stop', 'Straight', 'Thick', 'Thin', 'Weird'] |
|
export async function asciiArt(message, style) { |
|
if(!style) style = selectRandom(asciiFonts) |
|
let art = figlet.textSync(message || 'Autonomous Organization', { font: style }) |
|
art = centerLines(art) |
|
console.log(gradient.pastel.multiline(art)) |
|
} |
|
|
|
// Clears the console |
|
export function clearScreen() { |
|
console.clear() |
|
} |
|
|
|
// Displays a spinner for 1.2 secconds with the given messages during and after the timer completes |
|
export async function spinnerWait(waitingMessage, doneMessage, ms = 1200) { |
|
const spinner = createSpinner(waitingMessage || 'Please wait...').start() |
|
await sleep(ms) |
|
spinner.success({ text: doneMessage || 'Done.' }) |
|
} |
|
|
|
// Starts a new spinner and returns a function that, when called, will stop it |
|
export function spinner(waitingMessage = 'Please wait...', doneMessage = 'Done.') { |
|
const spinner = createSpinner(waitingMessage).start() |
|
return (doneMessageOverwrite = null) => { |
|
spinner.success({text: doneMessageOverwrite || doneMessage}) |
|
} |
|
}
|
|
|