'use client'; import figlet from 'figlet'; import type { FigletOptions } from '@/types/figlet'; import { loadFont } from './fontLoader'; /** * Convert text to ASCII art using figlet */ export async function textToAscii( text: string, fontName: string = 'Standard', options: FigletOptions = {} ): Promise { if (!text) { return ''; } try { // Load the font const fontData = await loadFont(fontName); if (!fontData) { throw new Error(`Font ${fontName} could not be loaded`); } // Parse and load the font into figlet figlet.parseFont(fontName, fontData); // Generate ASCII art return new Promise((resolve, reject) => { figlet.text( text, { font: fontName, horizontalLayout: options.horizontalLayout || 'default', verticalLayout: options.verticalLayout || 'default', width: options.width, whitespaceBreak: options.whitespaceBreak ?? true, }, (err, result) => { if (err) { reject(err); } else { resolve(result || ''); } } ); }); } catch (error) { console.error('Error generating ASCII art:', error); throw error; } } /** * Generate ASCII art synchronously (requires font to be pre-loaded) */ export function textToAsciiSync( text: string, fontName: string = 'Standard', options: FigletOptions = {} ): string { if (!text) { return ''; } try { return figlet.textSync(text, { font: fontName as any, horizontalLayout: options.horizontalLayout || 'default', verticalLayout: options.verticalLayout || 'default', width: options.width, whitespaceBreak: options.whitespaceBreak ?? true, }); } catch (error) { console.error('Error generating ASCII art (sync):', error); return ''; } }