@cli-use/tui 0.1.0 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -33
- package/dist/ai-worker.cjs +65 -0
- package/dist/ai-worker.cjs.map +1 -0
- package/dist/ai-worker.d.cts +2 -0
- package/dist/ai-worker.d.ts +2 -0
- package/dist/ai-worker.js +42 -0
- package/dist/ai-worker.js.map +1 -0
- package/dist/bin/ratatui-demo +0 -0
- package/dist/cli/index.cjs +126 -36
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +126 -36
- package/dist/cli/index.js.map +1 -1
- package/dist/hooks/index.cjs +32 -18
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +26 -28
- package/dist/hooks/index.js.map +1 -1
- package/dist/{index-DAO84gkm.d.cts → index-B4IaUxvU.d.cts} +4 -3
- package/dist/{index-DAO84gkm.d.ts → index-B4IaUxvU.d.ts} +4 -3
- package/dist/index.cjs +37 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +44 -42
- package/dist/index.js.map +1 -1
- package/package.json +16 -10
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tsup/assets/esm_shims.js","../../src/examples/ink-demo.tsx","../../src/cli/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import React, { useState } from 'react';\nimport { render, Box, Text, useInput } from 'ink';\n\nconst Counter = () => {\n const [count, setCount] = useState(0);\n\n useInput((input, key) => {\n if (key.escape || key.ctrl('c')) {\n process.exit(0);\n }\n if (key.return) {\n setCount(c => c + 1);\n }\n });\n\n return (\n <Box flexDirection=\"column\" padding={1}>\n <Box borderStyle=\"double\" borderColor=\"cyan\" padding={1} marginBottom={1}>\n <Text bold color=\"magenta\">\n ✨ cli-use Demo - Beautiful Terminal UIs (Ink)\n </Text>\n </Box>\n\n <Box borderStyle=\"single\" borderColor=\"blue\" padding={1} marginBottom={1}>\n <Box flexDirection=\"column\" gap={1}>\n <Text bold>Features:</Text>\n <Text>• Cross-platform (macOS, Linux, Windows)</Text>\n <Text>• React-based components</Text>\n <Text>• Beautiful styling out of the box</Text>\n <Text>• TypeScript support</Text>\n </Box>\n </Box>\n\n <Box borderStyle=\"round\" borderColor=\"green\" padding={1} marginBottom={1}>\n <Box flexDirection=\"column\" alignItems=\"center\" gap={1}>\n <Text bold color=\"green\">🔢 Interactive Counter</Text>\n <Text>Count: {count}</Text>\n <Text dim>Press Enter to increment, ESC to exit</Text>\n </Box>\n </Box>\n\n <Box>\n <Text dim color=\"gray\">\n Built with ❤️ for beautiful terminal interfaces\n </Text>\n </Box>\n </Box>\n );\n};\n\nrender(<Counter />);\n","#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createRequire } from 'module';\nimport { spawn } from 'child_process';\nimport { fileURLToPath } from 'url';\nimport path from 'path';\n\nconst require = createRequire(import.meta.url);\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst program = new Command();\n\nprogram.name('cli-use').description('React-based Terminal UI Framework').version('0.1.0');\n\nprogram\n .command('dev')\n .description('Start development mode')\n .action(() => {\n showDevTUI();\n });\n\nprogram\n .command('build')\n .description('Build project')\n .action(() => {\n showBuildTUI();\n });\n\nprogram\n .command('init [project-name]')\n .description('Create a new cli-use project')\n .action((projectName) => {\n showInitTUI(projectName || 'my-tui-app');\n });\n\nprogram\n .command('run <example>')\n .description('Run an example application')\n .action((exampleName) => {\n if (exampleName === 'ratatui') {\n showRustDemo();\n } else {\n showRunTUI(exampleName);\n }\n });\n\nprogram\n .command('examples')\n .description('List available examples')\n .action(() => {\n showExamplesTUI();\n });\n\nprogram.option('-d, --demo', 'Run the ink demo').action(() => {\n // Demo option handled at top level\n});\n\nconst options = program.parse(process.argv);\n\n// Handle --demo flag\nif (options.opts().demo) {\n // Since we're using ESM, we use import to run the ink demo\n import('../examples/ink-demo.tsx').catch((err: unknown) => {\n console.error('Failed to run demo:', err);\n process.exit(1);\n });\n}\n\nfunction showRustDemo() {\n const isWindows = process.platform === 'win32';\n const extension = isWindows ? '.exe' : '';\n const binaryPath = path.resolve(\n __dirname,\n `../../native/target/release/ratatui-demo${extension}`\n );\n\n console.log(chalk.cyan('Starting Ratatui Demo...'));\n\n const child = spawn(binaryPath, [], {\n stdio: 'inherit',\n });\n\n child.on('error', (err) => {\n console.error(chalk.red('Failed to start demo:'), err.message);\n console.log(\n chalk.yellow(\n '\\nMake sure you have built the Rust binary first by running: npm run build:rust'\n )\n );\n });\n}\n\nfunction showDevTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Development Mode') + ' '.repeat(46) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('●') +\n ' ' +\n chalk.white('Watching for changes...') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Build completed') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('●') +\n ' ' +\n chalk.white('Hot Reload: Active') +\n ' '.repeat(37) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Quick Actions') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[r]') +\n ' ' +\n chalk.white('Rebuild') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[t]') +\n ' ' +\n chalk.white('Run tests') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[e]') +\n ' ' +\n chalk.white('Run example') +\n ' '.repeat(41) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[q]') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(46) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Output') + ' '.repeat(48) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Starting dev server...') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('Waiting for file changes...') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Status') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Files: ') +\n chalk.cyan('142') +\n ' '.repeat(4) +\n chalk.white('Lines: ') +\n chalk.cyan('8,547') +\n ' '.repeat(35) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Components: ') +\n chalk.green('7') +\n ' '.repeat(2) +\n chalk.white('Hooks: ') +\n chalk.green('8') +\n ' '.repeat(40) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n console.log(\n chalk.dim('Press ') +\n chalk.cyan('Ctrl+C') +\n chalk.dim(' to exit') +\n ' | ' +\n chalk.dim('Version: ') +\n chalk.white('0.1.0')\n );\n console.log('');\n}\n\nfunction showBuildTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Build Progress') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Building...') + ' '.repeat(43) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('TypeScript compilation') +\n ' '.repeat(35) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Bundle with tsup') +\n ' '.repeat(38) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Generate declarations') +\n ' '.repeat(33) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('○') +\n ' ' +\n chalk.white('Optimize') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' [' +\n chalk.green('█'.repeat(30)) +\n chalk.dim('░'.repeat(10)) +\n '] ' +\n chalk.white('75%') +\n ' '.repeat(4) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Output Files') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.cyan('dist/') + ' '.repeat(49) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('├── index.js ') +\n chalk.dim('(') +\n chalk.white('21.2 KB') +\n chalk.dim(')') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── cli/') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('│ └── index.js ') +\n chalk.dim('(') +\n chalk.white('3.0 KB') +\n chalk.dim(')') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── hooks/') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('│ └── index.js ') +\n chalk.dim('(') +\n chalk.white('7.3 KB') +\n chalk.dim(')') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('├── *.d.ts ') +\n chalk.dim('(') +\n chalk.white('4.2 KB') +\n chalk.dim(')') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Build Summary') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Duration: ') +\n chalk.cyan('2.4s') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Bundles: ') +\n chalk.green('3') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Size: ') +\n chalk.cyan('31.5 KB') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Status: ') +\n chalk.green('✓ Success') +\n ' '.repeat(42) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showInitTUI(projectName: string) {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Setup') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Creating new project:') + ' '.repeat(37) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('○') +\n ' ' +\n chalk.white('Project name: ') +\n chalk.green(projectName) +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Package: ') +\n chalk.cyan('cli-use@0.1.0') +\n ' '.repeat(32) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Template: ') +\n chalk.cyan('default') +\n ' '.repeat(38) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Structure') + ' '.repeat(39) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.cyan('src/') + ' '.repeat(49) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('├── components/') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Box.tsx') + ' '.repeat(42) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Text.tsx') + ' '.repeat(42) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Button.tsx') + ' '.repeat(40) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('│ └── ...') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── hooks/') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('├── renderer/') + ' '.repeat(44) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── App.tsx') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── index.ts') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('└── package.json') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Next Steps') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('1.') +\n ' ' +\n chalk.white('cd ' + projectName) +\n ' '.repeat(40) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('2.') +\n ' ' +\n chalk.white('npm install') +\n ' '.repeat(44) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('3.') +\n ' ' +\n chalk.white('npm run dev') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('4.') +\n ' ' +\n chalk.white('Start building!') +\n ' '.repeat(42) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showRunTUI(exampleName: string) {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Example Runner') + ' '.repeat(44) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.bold('Running: ') +\n chalk.cyan(exampleName) +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n\n const examples = [\n {\n name: 'counter',\n title: 'Counter',\n desc: 'Interactive counter with keyboard controls',\n tags: ['beginner', 'hooks'],\n },\n { name: 'demo', title: 'Demo', desc: 'Feature demonstration showcase', tags: ['overview'] },\n {\n name: 'todos',\n title: 'Todo List',\n desc: 'Todo list with navigation',\n tags: ['interactive', 'state'],\n },\n {\n name: 'ratatui',\n title: 'Rust Demo',\n desc: 'Native Rust TUI integration',\n tags: ['rust', 'advanced'],\n },\n ];\n\n examples.forEach((ex, i) => {\n const isCurrent = ex.name === exampleName;\n const status = isCurrent ? chalk.green('●') : chalk.dim('○');\n const marker = isCurrent ? chalk.cyan('▶') : chalk.dim(' ');\n console.log(\n chalk.cyan('│') +\n ' ' +\n marker +\n ' ' +\n status +\n ' ' +\n chalk.white(ex.name) +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim(ex.desc) + ' '.repeat(47) + chalk.cyan('│'));\n if (i < examples.length - 1) {\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n }\n });\n\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Controls') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('↑/↓') +\n ' ' +\n chalk.white('Navigate') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('q') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(46) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('r') +\n ' ' +\n chalk.white('Restart') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Output') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Example started successfully') +\n ' '.repeat(32) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('Use arrow keys to interact with example') +\n ' '.repeat(19) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showExamplesTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Example Gallery') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n\n const examples = [\n {\n name: 'counter',\n title: 'Counter',\n desc: 'Interactive counter with keyboard controls',\n tags: ['beginner', 'hooks'],\n },\n { name: 'demo', title: 'Demo', desc: 'Feature demonstration showcase', tags: ['overview'] },\n {\n name: 'todos',\n title: 'Todo List',\n desc: 'Todo list with navigation',\n tags: ['interactive', 'state'],\n },\n ];\n\n examples.forEach((ex, i) => {\n const status = i === 0 ? chalk.cyan('▶') : chalk.dim('○');\n const tags = ex.tags.map((t) => chalk.dim('[') + chalk.cyan(t) + chalk.dim(']')).join(' ');\n console.log(\n chalk.cyan('│') +\n ' ' +\n status +\n ' ' +\n chalk.bold(ex.name) +\n ' - ' +\n chalk.white(ex.title) +\n ' '.repeat(26) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim(ex.desc) +\n ' '.repeat(33) +\n tags +\n ' '.repeat(5) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n });\n\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Commands') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run counter') + ' '.repeat(34) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run demo') + ' '.repeat(36) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run todos') + ' '.repeat(35) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Shortcuts') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('n') +\n '/' +\n chalk.cyan('p') +\n ' ' +\n chalk.white('Next/Prev example') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('enter') +\n ' ' +\n chalk.white('Run selected') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('q') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(44) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n"],"mappings":"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","names":["fileURLToPath","path","require","__filename","__dirname"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tsup/assets/esm_shims.js","../../src/examples/cli-use-demo.tsx","../../src/cli/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import React, { useState } from 'react';\nimport { render, Box, Text, useInput } from 'ink';\n\n// --- Constants ---\nconst CLAUDE_ORANGE = '#D97757';\nconst FOOTER_TEXT = '#708090'; // Slate Gray\nconst FOOTER_HIGHLIGHT = '#FFFFFF';\n\nconst LOGO_TEXT = `\n ██████╗██╗ ██╗ \n██╔════╝██║ ██║ \n██║ ██║ ██║ \n██║ ██║ ██║ \n╚██████╗███████╗██║ \n ╚═════╝╚══════╝╚═╝ \n ██████╗ ██████╗ ██████╗ ███████╗\n██╔════╝██╔═══██╗██╔══██╗██╔════╝\n██║ ██║ ██║██║ ██║█████╗ \n██║ ██║ ██║██║ ██║██╔══╝ \n╚██████╗╚██████╔╝██████╔╝███████╗\n ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝\n`;\n\n// --- Components ---\n\nconst Splash = ({ input }: { input: string; onEnter: () => void }) => {\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" height=\"100%\" justifyContent=\"space-between\">\n {/* Header */}\n <Box marginTop={2} marginBottom={1}>\n <Box borderStyle=\"round\" borderColor={CLAUDE_ORANGE} paddingX={2}>\n <Text color={CLAUDE_ORANGE} bold>\n Welcome to the Claude Code research preview!\n </Text>\n </Box>\n </Box>\n\n {/* Logo */}\n <Box marginBottom={2}>\n <Text color={CLAUDE_ORANGE}>{LOGO_TEXT}</Text>\n </Box>\n\n {/* Input */}\n <Box\n width=\"100%\"\n borderStyle=\"single\"\n borderColor=\"gray\"\n paddingX={1}\n marginBottom={1}\n // Ink doesn't support background color on Box directly in the same way as Ratatui's block styles usually\n // But we can approximate the look.\n >\n <Text color=\"white\" bold>\n {'>'} {input}_\n </Text>\n </Box>\n\n {/* Footer */}\n <Box marginBottom={2}>\n <Text color={FOOTER_TEXT}>\n 🎉 Login successful. Press{' '}\n <Text color={FOOTER_HIGHLIGHT} bold>\n Enter\n </Text>{' '}\n to continue\n </Text>\n </Box>\n </Box>\n );\n};\n\nconst Chat = ({ messages, input }: { messages: any[]; input: string }) => {\n return (\n <Box flexDirection=\"column\" height=\"100%\">\n <Box flexDirection=\"column\" flexGrow={1}>\n {messages.map((msg, i) => (\n <Box key={i} flexDirection=\"column\" marginLeft={msg.type === 'output' ? 2 : 0}>\n <Box>\n <Text\n color={\n msg.type === 'user'\n ? 'cyan'\n : msg.type === 'thinking'\n ? 'yellow'\n : msg.type === 'tool'\n ? 'blue'\n : msg.type === 'system'\n ? 'magenta'\n : 'gray'\n }\n bold={msg.type === 'user'}\n >\n {msg.symbol}\n </Text>\n <Text color={msg.type === 'output' ? 'gray' : 'white'}> {msg.content}</Text>\n </Box>\n </Box>\n ))}\n </Box>\n\n {/* Input Area */}\n <Box borderStyle=\"single\" borderColor=\"gray\" paddingX={1} marginTop={1}>\n <Text color=\"white\" bold>\n {'>'} {input}_\n </Text>\n </Box>\n </Box>\n );\n};\n\nconst App = () => {\n const [mode, setMode] = useState<'splash' | 'chat'>('splash');\n const [input, setInput] = useState('');\n const [messages, setMessages] = useState<any[]>([\n { type: 'system', symbol: '*', content: 'Welcome to CLI CODE.' },\n { type: 'system', symbol: '*', content: 'I am ready to assist. Type anything to chat.' },\n ]);\n\n useInput((keyInput, key) => {\n if (key.escape || (key.ctrl && keyInput === 'c')) {\n process.exit(0);\n }\n\n if (key.return) {\n if (mode === 'splash') {\n setMode('chat');\n if (input.trim()) {\n // Submit initial message\n addMessage('user', '>', input);\n addMessage('thinking', '⏺', 'Processing...');\n setTimeout(() => {\n addMessage('output', '⎿', 'This is a simulated response in the cli-use demo.');\n }, 1000);\n setInput('');\n }\n } else {\n if (input.trim()) {\n addMessage('user', '>', input);\n addMessage('thinking', '⏺', 'Processing...');\n setTimeout(() => {\n addMessage('output', '⎿', 'This is a simulated response in the cli-use demo.');\n }, 1000);\n setInput('');\n }\n }\n return;\n }\n\n if (key.delete || key.backspace) {\n setInput((prev) => prev.slice(0, -1));\n } else {\n setInput((prev) => prev + keyInput);\n }\n });\n\n const addMessage = (type: string, symbol: string, content: string) => {\n setMessages((prev) => [...prev, { type, symbol, content }]);\n };\n\n return (\n <Box flexDirection=\"column\" minHeight={20}>\n {mode === 'splash' ? (\n <Splash input={input} onEnter={() => setMode('chat')} />\n ) : (\n <Chat messages={messages} input={input} />\n )}\n </Box>\n );\n};\n\nrender(<App />);\n","#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { spawn } from 'child_process';\nimport { fileURLToPath } from 'url';\nimport path from 'path';\nimport fs from 'fs';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst program = new Command();\n\nprogram.name('cli-use').description('React-based Terminal UI Framework').version('0.1.0');\n\nprogram\n .command('dev')\n .description('Start development mode')\n .action(() => {\n showDevTUI();\n });\n\nprogram\n .command('build')\n .description('Build project')\n .action(() => {\n showBuildTUI();\n });\n\nprogram\n .command('init [project-name]')\n .description('Create a new cli-use project')\n .action((projectName) => {\n showInitTUI(projectName || 'my-tui-app');\n });\n\nprogram\n .command('run <example>')\n .description('Run an example application')\n .action((exampleName) => {\n if (exampleName === 'ratatui') {\n showRustDemo();\n } else {\n showRunTUI(exampleName);\n }\n });\n\nprogram\n .command('examples')\n .description('List available examples')\n .action(() => {\n showExamplesTUI();\n });\n\nprogram\n .command('code')\n .description('Launch the AI-powered CLI Code interface')\n .action(() => {\n showRustDemo();\n });\n\nprogram.option('-d, --demo', 'Run the cli-use demo').action(() => {\n // Demo option handled at top level\n});\n\nconst options = program.parse(process.argv);\n\n// Handle --demo flag\nif (options.opts().demo) {\n // Since we're using ESM, we use import to run the cli-use demo\n import('../examples/cli-use-demo.tsx').catch((err: unknown) => {\n console.error('Failed to run demo:', err);\n process.exit(1);\n });\n}\n\nfunction showRustDemo() {\n const isWindows = process.platform === 'win32';\n const extension = isWindows ? '.exe' : '';\n\n const prodBinaryPath = path.resolve(__dirname, `../bin/ratatui-demo${extension}`);\n const devBinaryPath = path.resolve(\n __dirname,\n `../../native/target/release/ratatui-demo${extension}`\n );\n\n const binaryPath = fs.existsSync(prodBinaryPath) ? prodBinaryPath : devBinaryPath;\n\n const workerPath = path.resolve(__dirname, '../ai-worker.js');\n\n console.log(chalk.cyan('Starting Ratatui Demo...'));\n\n const child = spawn(binaryPath, [workerPath], {\n stdio: 'inherit',\n });\n\n child.on('error', (err) => {\n console.error(chalk.red('Failed to start demo:'), err.message);\n console.log(\n chalk.yellow(\n '\\nMake sure you have built the Rust binary first by running: npm run build:rust'\n )\n );\n });\n}\n\nfunction showDevTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Development Mode') + ' '.repeat(46) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('●') +\n ' ' +\n chalk.white('Watching for changes...') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Build completed') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('●') +\n ' ' +\n chalk.white('Hot Reload: Active') +\n ' '.repeat(37) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Quick Actions') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[r]') +\n ' ' +\n chalk.white('Rebuild') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[t]') +\n ' ' +\n chalk.white('Run tests') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[e]') +\n ' ' +\n chalk.white('Run example') +\n ' '.repeat(41) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('[q]') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(46) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Output') + ' '.repeat(48) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Starting dev server...') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('Waiting for file changes...') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Status') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Files: ') +\n chalk.cyan('142') +\n ' '.repeat(4) +\n chalk.white('Lines: ') +\n chalk.cyan('8,547') +\n ' '.repeat(35) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Components: ') +\n chalk.green('7') +\n ' '.repeat(2) +\n chalk.white('Hooks: ') +\n chalk.green('8') +\n ' '.repeat(40) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n console.log(\n chalk.dim('Press ') +\n chalk.cyan('Ctrl+C') +\n chalk.dim(' to exit') +\n ' | ' +\n chalk.dim('Version: ') +\n chalk.white('0.1.0')\n );\n console.log('');\n}\n\nfunction showBuildTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Build Progress') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Building...') + ' '.repeat(43) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('TypeScript compilation') +\n ' '.repeat(35) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Bundle with tsup') +\n ' '.repeat(38) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Generate declarations') +\n ' '.repeat(33) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.yellow('○') +\n ' ' +\n chalk.white('Optimize') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' [' +\n chalk.green('█'.repeat(30)) +\n chalk.dim('░'.repeat(10)) +\n '] ' +\n chalk.white('75%') +\n ' '.repeat(4) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Output Files') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.cyan('dist/') + ' '.repeat(49) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('├── index.js ') +\n chalk.dim('(') +\n chalk.white('21.2 KB') +\n chalk.dim(')') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── cli/') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('│ └── index.js ') +\n chalk.dim('(') +\n chalk.white('3.0 KB') +\n chalk.dim(')') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── hooks/') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('│ └── index.js ') +\n chalk.dim('(') +\n chalk.white('7.3 KB') +\n chalk.dim(')') +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('├── *.d.ts ') +\n chalk.dim('(') +\n chalk.white('4.2 KB') +\n chalk.dim(')') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Build Summary') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Duration: ') +\n chalk.cyan('2.4s') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Bundles: ') +\n chalk.green('3') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Size: ') +\n chalk.cyan('31.5 KB') +\n ' '.repeat(45) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.white('Status: ') +\n chalk.green('✓ Success') +\n ' '.repeat(42) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showInitTUI(projectName: string) {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Setup') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Creating new project:') + ' '.repeat(37) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('○') +\n ' ' +\n chalk.white('Project name: ') +\n chalk.green(projectName) +\n ' '.repeat(34) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Package: ') +\n chalk.cyan('cli-use@0.1.0') +\n ' '.repeat(32) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Template: ') +\n chalk.cyan('default') +\n ' '.repeat(38) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Project Structure') + ' '.repeat(39) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.cyan('src/') + ' '.repeat(49) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('├── components/') + ' '.repeat(45) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Box.tsx') + ' '.repeat(42) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Text.tsx') + ' '.repeat(42) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('│ ├── Button.tsx') + ' '.repeat(40) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('│ └── ...') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── hooks/') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('├── renderer/') + ' '.repeat(44) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── App.tsx') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.dim('├── index.ts') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.dim('└── package.json') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Next Steps') + ' '.repeat(45) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('1.') +\n ' ' +\n chalk.white('cd ' + projectName) +\n ' '.repeat(40) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('2.') +\n ' ' +\n chalk.white('npm install') +\n ' '.repeat(44) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('3.') +\n ' ' +\n chalk.white('npm run dev') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('4.') +\n ' ' +\n chalk.white('Start building!') +\n ' '.repeat(42) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showRunTUI(exampleName: string) {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Example Runner') + ' '.repeat(44) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.bold('Running: ') +\n chalk.cyan(exampleName) +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n\n const examples = [\n {\n name: 'counter',\n title: 'Counter',\n desc: 'Interactive counter with keyboard controls',\n tags: ['beginner', 'hooks'],\n },\n { name: 'demo', title: 'Demo', desc: 'Feature demonstration showcase', tags: ['overview'] },\n {\n name: 'todos',\n title: 'Todo List',\n desc: 'Todo list with navigation',\n tags: ['interactive', 'state'],\n },\n {\n name: 'ratatui',\n title: 'Rust Demo',\n desc: 'Native Rust TUI integration',\n tags: ['rust', 'advanced'],\n },\n ];\n\n examples.forEach((ex, i) => {\n const isCurrent = ex.name === exampleName;\n const status = isCurrent ? chalk.green('●') : chalk.dim('○');\n const marker = isCurrent ? chalk.cyan('▶') : chalk.dim(' ');\n console.log(\n chalk.cyan('│') +\n ' ' +\n marker +\n ' ' +\n status +\n ' ' +\n chalk.white(ex.name) +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.dim(ex.desc) + ' '.repeat(47) + chalk.cyan('│'));\n if (i < examples.length - 1) {\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n }\n });\n\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Controls') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('↑/↓') +\n ' ' +\n chalk.white('Navigate') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('q') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(46) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('r') +\n ' ' +\n chalk.white('Restart') +\n ' '.repeat(43) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Output') + ' '.repeat(47) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.green('✓') +\n ' ' +\n chalk.white('Example started successfully') +\n ' '.repeat(32) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim('Use arrow keys to interact with example') +\n ' '.repeat(19) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n\nfunction showExamplesTUI() {\n console.clear();\n console.log('');\n console.log(\n chalk.cyan('┌─────────────────────────────────────────────────────────────────────┐')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold.white('cli-use ') + chalk.cyan(' │'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.bold('Example Gallery') + ' '.repeat(43) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n\n const examples = [\n {\n name: 'counter',\n title: 'Counter',\n desc: 'Interactive counter with keyboard controls',\n tags: ['beginner', 'hooks'],\n },\n { name: 'demo', title: 'Demo', desc: 'Feature demonstration showcase', tags: ['overview'] },\n {\n name: 'todos',\n title: 'Todo List',\n desc: 'Todo list with navigation',\n tags: ['interactive', 'state'],\n },\n ];\n\n examples.forEach((ex, i) => {\n const status = i === 0 ? chalk.cyan('▶') : chalk.dim('○');\n const tags = ex.tags.map((t) => chalk.dim('[') + chalk.cyan(t) + chalk.dim(']')).join(' ');\n console.log(\n chalk.cyan('│') +\n ' ' +\n status +\n ' ' +\n chalk.bold(ex.name) +\n ' - ' +\n chalk.white(ex.title) +\n ' '.repeat(26) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.dim(ex.desc) +\n ' '.repeat(33) +\n tags +\n ' '.repeat(5) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n });\n\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('├─────────────────────────────────────────────────────────────────────┤')\n );\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Commands') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run counter') + ' '.repeat(34) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run demo') + ' '.repeat(36) + chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') + ' ' + chalk.cyan('cli-use run todos') + ' '.repeat(35) + chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + chalk.bold('Shortcuts') + ' '.repeat(46) + chalk.cyan('│'));\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('n') +\n '/' +\n chalk.cyan('p') +\n ' ' +\n chalk.white('Next/Prev example') +\n ' '.repeat(36) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('enter') +\n ' ' +\n chalk.white('Run selected') +\n ' '.repeat(39) +\n chalk.cyan('│')\n );\n console.log(\n chalk.cyan('│') +\n ' ' +\n chalk.cyan('q') +\n ' ' +\n chalk.white('Quit') +\n ' '.repeat(44) +\n chalk.cyan('│')\n );\n console.log(chalk.cyan('│') + ' ' + ' '.repeat(54) + chalk.cyan('│'));\n console.log(\n chalk.cyan('└─────────────────────────────────────────────────────────────────────┘')\n );\n console.log('');\n}\n"],"mappings":"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","names":["fileURLToPath","path","__filename","__dirname"]}
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* Inspired by Ratatui (https://ratatui.rs)
|
|
5
5
|
*/
|
|
6
6
|
"use strict";
|
|
7
|
+
var __create = Object.create;
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
10
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
12
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
13
|
var __export = (target, all) => {
|
|
12
14
|
for (var name in all)
|
|
@@ -20,6 +22,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
20
22
|
}
|
|
21
23
|
return to;
|
|
22
24
|
};
|
|
25
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
26
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
27
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
28
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
29
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
30
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
31
|
+
mod
|
|
32
|
+
));
|
|
23
33
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
34
|
|
|
25
35
|
// src/hooks/index.ts
|
|
@@ -40,9 +50,9 @@ module.exports = __toCommonJS(hooks_exports);
|
|
|
40
50
|
|
|
41
51
|
// src/hooks/useApp.ts
|
|
42
52
|
var import_react = require("react");
|
|
43
|
-
var useApp = (
|
|
53
|
+
var useApp = (_options = {}) => {
|
|
44
54
|
const rendererRef = (0, import_react.useRef)(null);
|
|
45
|
-
const [size
|
|
55
|
+
const [size] = (0, import_react.useState)({ cols: 80, rows: 24 });
|
|
46
56
|
const [running, setRunning] = (0, import_react.useState)(false);
|
|
47
57
|
(0, import_react.useEffect)(() => {
|
|
48
58
|
const cleanupResize = () => {
|
|
@@ -68,9 +78,9 @@ var useApp = (options = {}) => {
|
|
|
68
78
|
|
|
69
79
|
// src/hooks/useInput.ts
|
|
70
80
|
var import_react2 = require("react");
|
|
81
|
+
var import_node_readline = __toESM(require("readline"), 1);
|
|
71
82
|
var useInput = (callback, deps = []) => {
|
|
72
83
|
(0, import_react2.useEffect)(() => {
|
|
73
|
-
const readline = require("readline");
|
|
74
84
|
const handler = (chunk, key) => {
|
|
75
85
|
if (!key) return;
|
|
76
86
|
callback({
|
|
@@ -82,8 +92,10 @@ var useInput = (callback, deps = []) => {
|
|
|
82
92
|
sequence: key.sequence || ""
|
|
83
93
|
});
|
|
84
94
|
};
|
|
85
|
-
process.stdin.
|
|
86
|
-
|
|
95
|
+
if (process.stdin.isTTY) {
|
|
96
|
+
process.stdin.setRawMode(true);
|
|
97
|
+
}
|
|
98
|
+
import_node_readline.default.emitKeypressEvents(process.stdin);
|
|
87
99
|
process.stdin.on("keypress", handler);
|
|
88
100
|
return () => {
|
|
89
101
|
process.stdin.off("keypress", handler);
|
|
@@ -91,7 +103,8 @@ var useInput = (callback, deps = []) => {
|
|
|
91
103
|
}, [callback, ...deps]);
|
|
92
104
|
};
|
|
93
105
|
var useKey = (keyName, callback, deps = []) => {
|
|
94
|
-
const
|
|
106
|
+
const keyNameString = Array.isArray(keyName) ? keyName.join(",") : keyName;
|
|
107
|
+
const keys = (0, import_react2.useMemo)(() => Array.isArray(keyName) ? keyName : [keyName], [keyNameString]);
|
|
95
108
|
useInput(
|
|
96
109
|
(0, import_react2.useCallback)(
|
|
97
110
|
({ key, ctrl, meta }) => {
|
|
@@ -108,28 +121,29 @@ var useKey = (keyName, callback, deps = []) => {
|
|
|
108
121
|
|
|
109
122
|
// src/hooks/useFocus.ts
|
|
110
123
|
var import_react3 = require("react");
|
|
124
|
+
var import_node_readline2 = __toESM(require("readline"), 1);
|
|
111
125
|
var useFocus = (initialFocus = 0, itemCount) => {
|
|
112
126
|
const [focusedIndex, setFocusedIndex] = (0, import_react3.useState)(initialFocus);
|
|
113
|
-
const focusableRefs = (0, import_react3.useRef)(/* @__PURE__ */ new Map());
|
|
114
127
|
const focusNext = (0, import_react3.useCallback)(() => {
|
|
115
128
|
setFocusedIndex((current) => (current + 1) % itemCount);
|
|
116
129
|
}, [itemCount]);
|
|
117
130
|
const focusPrevious = (0, import_react3.useCallback)(() => {
|
|
118
131
|
setFocusedIndex((current) => (current - 1 + itemCount) % itemCount);
|
|
119
132
|
}, [itemCount]);
|
|
120
|
-
const setFocus = (0, import_react3.useCallback)(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
[focusedIndex]
|
|
133
|
+
const setFocus = (0, import_react3.useCallback)(
|
|
134
|
+
(index) => {
|
|
135
|
+
if (index >= 0 && index < itemCount) {
|
|
136
|
+
setFocusedIndex(index);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
[itemCount]
|
|
128
140
|
);
|
|
141
|
+
const isFocused = (0, import_react3.useCallback)((index) => index === focusedIndex, [focusedIndex]);
|
|
129
142
|
(0, import_react3.useEffect)(() => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
143
|
+
import_node_readline2.default.emitKeypressEvents(process.stdin);
|
|
144
|
+
if (process.stdin.isTTY) {
|
|
145
|
+
process.stdin.setRawMode(true);
|
|
146
|
+
}
|
|
133
147
|
const handleKeyPress = (_chunk, key) => {
|
|
134
148
|
if (key.name === "tab" || key.name === "right") {
|
|
135
149
|
focusNext();
|
package/dist/hooks/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/useApp.ts","../../src/hooks/useInput.ts","../../src/hooks/useFocus.ts","../../src/hooks/useStdout.ts","../../src/hooks/useInterval.ts","../../src/hooks/useAppState.ts","../../src/hooks/useList.ts"],"sourcesContent":["export { useApp } from './useApp.js';\nexport { useInput, useKey } from './useInput.js';\nexport { useFocus } from './useFocus.js';\nexport { useStdout, useStdoutDimensions } from './useStdout.js';\nexport { useInterval, useTimeout } from './useInterval.js';\nexport { useAppState } from './useAppState.js';\nexport { useList } from './useList.js';\n","import { Renderer } from '../renderer/index.js';\nimport { useEffect, useState, useRef } from 'react';\n\ninterface AppOptions {\n fullscreen?: boolean;\n alternateScreen?: boolean;\n mouseCapture?: boolean;\n}\n\n/**\n * useApp - Hook for managing the application lifecycle\n */\nexport const useApp = (options: AppOptions = {}) => {\n const rendererRef = useRef<Renderer | null>(null);\n const [size, setSize] = useState({ cols: 80, rows: 24 });\n const [running, setRunning] = useState(false);\n\n useEffect(() => {\n // Note: Renderer is not fully implemented yet, this is a skeleton\n // const renderer = new Renderer();\n // rendererRef.current = renderer;\n //\n // renderer.start();\n //\n // // Set initial size\n // setSize(renderer.getSize());\n //\n // // Setup resize handler\n // const cleanupResize = renderer.getTerminal().onResize((newSize) => {\n // setSize(newSize);\n // });\n //\n // setRunning(true);\n\n const cleanupResize = () => {\n // Cleanup function\n };\n\n setRunning(true);\n\n return () => {\n setRunning(false);\n cleanupResize();\n // renderer.stop();\n };\n }, []);\n\n const exit = () => {\n if (rendererRef.current) {\n // rendererRef.current.stop();\n setRunning(false);\n }\n };\n\n return {\n renderer: rendererRef.current,\n size,\n running,\n exit,\n };\n};\n","import { useEffect, useCallback } from 'react';\n\ninterface InputEvent {\n key: string;\n name: string;\n ctrl: boolean;\n meta: boolean;\n shift: boolean;\n sequence: string;\n}\n\ninterface ReadlineKey {\n name?: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n sequence?: string;\n}\n\ntype InputCallback = (input: InputEvent) => void;\n\n/**\n * useInput - Hook for capturing keyboard input\n */\nexport const useInput = (callback: InputCallback, deps: any[] = []) => {\n useEffect(() => {\n const readline = require('node:readline');\n\n const handler = (chunk: Buffer, key: ReadlineKey) => {\n if (!key) return;\n\n callback({\n key: key.name || '',\n name: key.name || '',\n ctrl: key.ctrl || false,\n meta: key.meta || false,\n shift: key.shift || false,\n sequence: key.sequence || '',\n });\n };\n\n process.stdin.setRawMode(true);\n readline.emitKeypressEvents(process.stdin);\n\n process.stdin.on('keypress', handler);\n\n return () => {\n process.stdin.off('keypress', handler);\n };\n }, [callback, ...deps]);\n};\n\n/**\n * useKey - Hook for capturing specific key presses\n */\nexport const useKey = (\n keyName: string | string[],\n callback: () => void,\n deps: any[] = []\n) => {\n const keys = Array.isArray(keyName) ? keyName : [keyName];\n\n useInput(\n useCallback(\n ({ key, ctrl, meta }) => {\n // Don't trigger if modifier keys are pressed (unless specified)\n if (ctrl || meta) return;\n\n if (keys.includes(key)) {\n callback();\n }\n },\n [callback, keys]\n ),\n deps\n );\n};\n","import { useState, useCallback, useRef, useEffect } from 'react';\n\ninterface FocusableElement {\n id: string;\n index: number;\n}\n\ninterface KeyPressEvent {\n name?: string;\n}\n\n/**\n * useFocus - Hook for managing focus state in forms and lists\n */\nexport const useFocus = (initialFocus = 0, itemCount: number) => {\n const [focusedIndex, setFocusedIndex] = useState(initialFocus);\n const focusableRefs = useRef<Map<number, HTMLElement>>(new Map());\n\n const focusNext = useCallback(() => {\n setFocusedIndex((current) => (current + 1) % itemCount);\n }, [itemCount]);\n\n const focusPrevious = useCallback(() => {\n setFocusedIndex((current) => (current - 1 + itemCount) % itemCount);\n }, [itemCount]);\n\n const setFocus = useCallback((index: number) => {\n if (index >= 0 && index < itemCount) {\n setFocusedIndex(index);\n }\n }, [itemCount]);\n\n const isFocused = useCallback(\n (index: number) => index === focusedIndex,\n [focusedIndex]\n );\n\n // Keyboard navigation\n useEffect(() => {\n const readline = require('node:readline');\n readline.emitKeypressEvents(process.stdin);\n process.stdin.setRawMode(true);\n\n const handleKeyPress = (_chunk: Buffer, key: KeyPressEvent) => {\n if (key.name === 'tab' || key.name === 'right') {\n focusNext();\n } else if (key.name === 'left') {\n focusPrevious();\n }\n };\n\n process.stdin.on('keypress', handleKeyPress);\n\n return () => {\n process.stdin.off('keypress', handleKeyPress);\n };\n }, [focusNext, focusPrevious]);\n\n return {\n focusedIndex,\n focusNext,\n focusPrevious,\n setFocus,\n isFocused,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\n\n/**\n * useStdoutDimensions - Hook for getting terminal dimensions\n */\nexport const useStdoutDimensions = () => {\n const [dimensions, setDimensions] = useState(() => ({\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n setDimensions({\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n\n process.stdout.on('resize', handleResize);\n\n return () => {\n process.stdout.off('resize', handleResize);\n };\n }, []);\n\n return dimensions;\n};\n\n/**\n * useStdout - Hook for stdout operations\n */\nexport const useStdout = () => {\n const write = useCallback((data: string) => {\n process.stdout.write(data);\n }, []);\n\n return { write };\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * useInterval - Hook for setting up intervals\n */\nexport const useInterval = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval\n useEffect(() => {\n if (delay === null) return;\n\n const tick = () => savedCallback.current();\n\n const id = setInterval(tick, delay);\n\n return () => clearInterval(id);\n }, [delay]);\n};\n\n/**\n * useTimeout - Hook for setting up timeouts\n */\nexport const useTimeout = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay === null) return;\n\n const tick = () => savedCallback.current();\n\n const id = setTimeout(tick, delay);\n\n return () => clearTimeout(id);\n }, [delay]);\n};\n","import { useState, useCallback } from 'react';\n\ntype AppState = 'idle' | 'loading' | 'success' | 'error';\n\n/**\n * useAppState - Hook for managing application state\n */\nexport const useAppState = (initialState: AppState = 'idle') => {\n const [state, setState] = useState<AppState>(initialState);\n const [error, setError] = useState<Error | null>(null);\n\n const setLoading = useCallback(() => {\n setState('loading');\n setError(null);\n }, []);\n\n const setSuccess = useCallback(() => {\n setState('success');\n setError(null);\n }, []);\n\n const setErrorState = useCallback((err: Error) => {\n setState('error');\n setError(err);\n }, []);\n\n const setIdle = useCallback(() => {\n setState('idle');\n setError(null);\n }, []);\n\n const isLoading = state === 'loading';\n const isSuccess = state === 'success';\n const isError = state === 'error';\n const isIdle = state === 'idle';\n\n return {\n state,\n error,\n isLoading,\n isSuccess,\n isError,\n isIdle,\n setLoading,\n setSuccess,\n setError: setErrorState,\n setIdle,\n };\n};\n","import { useState, useCallback } from 'react';\n\ninterface ListOptions<T> {\n initialItems?: T[];\n initialIndex?: number;\n loop?: boolean;\n}\n\n/**\n * useList - Hook for managing list navigation\n */\nexport const useList = <T>({\n initialItems = [],\n initialIndex = 0,\n loop = true,\n}: ListOptions<T> = {}) => {\n const [items, setItems] = useState<T[]>(initialItems);\n const [index, setIndex] = useState(initialIndex);\n\n const next = useCallback(() => {\n setIndex((current) => {\n if (items.length === 0) return 0;\n\n const nextIndex = current + 1;\n\n if (nextIndex >= items.length) {\n return loop ? 0 : items.length - 1;\n }\n\n return nextIndex;\n });\n }, [items.length, loop]);\n\n const previous = useCallback(() => {\n setIndex((current) => {\n if (items.length === 0) return 0;\n\n const prevIndex = current - 1;\n\n if (prevIndex < 0) {\n return loop ? items.length - 1 : 0;\n }\n\n return prevIndex;\n });\n }, [items.length, loop]);\n\n const select = useCallback((item: T) => {\n const newIndex = items.indexOf(item);\n if (newIndex !== -1) {\n setIndex(newIndex);\n }\n }, [items]);\n\n const selectedIndex = index;\n const selectedItem = items[index] ?? null;\n\n return {\n items,\n setItems,\n index: selectedIndex,\n setIndex,\n selectedItem,\n next,\n previous,\n select,\n };\n};\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/index.ts","../../src/hooks/useApp.ts","../../src/hooks/useInput.ts","../../src/hooks/useFocus.ts","../../src/hooks/useStdout.ts","../../src/hooks/useInterval.ts","../../src/hooks/useAppState.ts","../../src/hooks/useList.ts"],"sourcesContent":["export { useApp } from './useApp.js';\nexport { useInput, useKey } from './useInput.js';\nexport { useFocus } from './useFocus.js';\nexport { useStdout, useStdoutDimensions } from './useStdout.js';\nexport { useInterval, useTimeout } from './useInterval.js';\nexport { useAppState } from './useAppState.js';\nexport { useList } from './useList.js';\n","import { Renderer } from '../renderer/index.js';\nimport { useEffect, useState, useRef } from 'react';\n\ninterface AppOptions {\n fullscreen?: boolean;\n alternateScreen?: boolean;\n mouseCapture?: boolean;\n}\n\n/**\n * useApp - Hook for managing the application lifecycle\n */\nexport const useApp = (_options: AppOptions = {}) => {\n const rendererRef = useRef<Renderer | null>(null);\n const [size] = useState({ cols: 80, rows: 24 });\n const [running, setRunning] = useState(false);\n\n useEffect(() => {\n // Note: Renderer is not fully implemented yet, this is a skeleton\n // const renderer = new Renderer();\n // rendererRef.current = renderer;\n //\n // renderer.start();\n //\n // // Set initial size\n // setSize(renderer.getSize());\n //\n // // Setup resize handler\n // const cleanupResize = renderer.getTerminal().onResize((newSize) => {\n // setSize(newSize);\n // });\n //\n // setRunning(true);\n\n const cleanupResize = () => {\n // Cleanup function\n };\n\n setRunning(true);\n\n return () => {\n setRunning(false);\n cleanupResize();\n // renderer.stop();\n };\n }, []);\n\n const exit = () => {\n if (rendererRef.current) {\n // rendererRef.current.stop();\n setRunning(false);\n }\n };\n\n return {\n renderer: rendererRef.current,\n size,\n running,\n exit,\n };\n};\n","import { useEffect, useCallback, DependencyList, useMemo } from 'react';\nimport readline from 'node:readline';\n\ninterface InputEvent {\n key: string;\n name: string;\n ctrl: boolean;\n meta: boolean;\n shift: boolean;\n sequence: string;\n}\n\ninterface ReadlineKey {\n name?: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n sequence?: string;\n}\n\ntype InputCallback = (input: InputEvent) => void;\n\n/**\n * useInput - Hook for capturing keyboard input\n */\nexport const useInput = (callback: InputCallback, deps: DependencyList = []) => {\n useEffect(() => {\n const handler = (chunk: Buffer, key: ReadlineKey) => {\n if (!key) return;\n\n callback({\n key: key.name || '',\n name: key.name || '',\n ctrl: key.ctrl || false,\n meta: key.meta || false,\n shift: key.shift || false,\n sequence: key.sequence || '',\n });\n };\n\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(true);\n }\n readline.emitKeypressEvents(process.stdin);\n\n process.stdin.on('keypress', handler);\n\n return () => {\n process.stdin.off('keypress', handler);\n };\n }, [callback, ...deps]);\n};\n\n/**\n * useKey - Hook for capturing specific key presses\n */\nexport const useKey = (\n keyName: string | string[],\n callback: () => void,\n deps: DependencyList = []\n) => {\n const keyNameString = Array.isArray(keyName) ? keyName.join(',') : keyName;\n const keys = useMemo(() => (Array.isArray(keyName) ? keyName : [keyName]), [keyNameString]);\n\n useInput(\n useCallback(\n ({ key, ctrl, meta }) => {\n // Don't trigger if modifier keys are pressed (unless specified)\n if (ctrl || meta) return;\n\n if (keys.includes(key)) {\n callback();\n }\n },\n [callback, keys]\n ),\n deps\n );\n};\n","import { useState, useCallback, useEffect } from 'react';\nimport readline from 'node:readline';\n\ninterface KeyPressEvent {\n name?: string;\n}\n\n/**\n * useFocus - Hook for managing focus state in forms and lists\n */\nexport const useFocus = (initialFocus = 0, itemCount: number) => {\n const [focusedIndex, setFocusedIndex] = useState(initialFocus);\n\n const focusNext = useCallback(() => {\n setFocusedIndex((current) => (current + 1) % itemCount);\n }, [itemCount]);\n\n const focusPrevious = useCallback(() => {\n setFocusedIndex((current) => (current - 1 + itemCount) % itemCount);\n }, [itemCount]);\n\n const setFocus = useCallback(\n (index: number) => {\n if (index >= 0 && index < itemCount) {\n setFocusedIndex(index);\n }\n },\n [itemCount]\n );\n\n const isFocused = useCallback((index: number) => index === focusedIndex, [focusedIndex]);\n\n // Keyboard navigation\n useEffect(() => {\n readline.emitKeypressEvents(process.stdin);\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(true);\n }\n\n const handleKeyPress = (_chunk: Buffer, key: KeyPressEvent) => {\n if (key.name === 'tab' || key.name === 'right') {\n focusNext();\n } else if (key.name === 'left') {\n focusPrevious();\n }\n };\n\n process.stdin.on('keypress', handleKeyPress);\n\n return () => {\n process.stdin.off('keypress', handleKeyPress);\n };\n }, [focusNext, focusPrevious]);\n\n return {\n focusedIndex,\n focusNext,\n focusPrevious,\n setFocus,\n isFocused,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\n\n/**\n * useStdoutDimensions - Hook for getting terminal dimensions\n */\nexport const useStdoutDimensions = () => {\n const [dimensions, setDimensions] = useState(() => ({\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n setDimensions({\n columns: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n\n process.stdout.on('resize', handleResize);\n\n return () => {\n process.stdout.off('resize', handleResize);\n };\n }, []);\n\n return dimensions;\n};\n\n/**\n * useStdout - Hook for stdout operations\n */\nexport const useStdout = () => {\n const write = useCallback((data: string) => {\n process.stdout.write(data);\n }, []);\n\n return { write };\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * useInterval - Hook for setting up intervals\n */\nexport const useInterval = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval\n useEffect(() => {\n if (delay === null) return;\n\n const tick = () => savedCallback.current();\n\n const id = setInterval(tick, delay);\n\n return () => clearInterval(id);\n }, [delay]);\n};\n\n/**\n * useTimeout - Hook for setting up timeouts\n */\nexport const useTimeout = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay === null) return;\n\n const tick = () => savedCallback.current();\n\n const id = setTimeout(tick, delay);\n\n return () => clearTimeout(id);\n }, [delay]);\n};\n","import { useState, useCallback } from 'react';\n\ntype AppState = 'idle' | 'loading' | 'success' | 'error';\n\n/**\n * useAppState - Hook for managing application state\n */\nexport const useAppState = (initialState: AppState = 'idle') => {\n const [state, setState] = useState<AppState>(initialState);\n const [error, setError] = useState<Error | null>(null);\n\n const setLoading = useCallback(() => {\n setState('loading');\n setError(null);\n }, []);\n\n const setSuccess = useCallback(() => {\n setState('success');\n setError(null);\n }, []);\n\n const setErrorState = useCallback((err: Error) => {\n setState('error');\n setError(err);\n }, []);\n\n const setIdle = useCallback(() => {\n setState('idle');\n setError(null);\n }, []);\n\n const isLoading = state === 'loading';\n const isSuccess = state === 'success';\n const isError = state === 'error';\n const isIdle = state === 'idle';\n\n return {\n state,\n error,\n isLoading,\n isSuccess,\n isError,\n isIdle,\n setLoading,\n setSuccess,\n setError: setErrorState,\n setIdle,\n };\n};\n","import { useState, useCallback } from 'react';\n\ninterface ListOptions<T> {\n initialItems?: T[];\n initialIndex?: number;\n loop?: boolean;\n}\n\n/**\n * useList - Hook for managing list navigation\n */\nexport const useList = <T>({\n initialItems = [],\n initialIndex = 0,\n loop = true,\n}: ListOptions<T> = {}) => {\n const [items, setItems] = useState<T[]>(initialItems);\n const [index, setIndex] = useState(initialIndex);\n\n const next = useCallback(() => {\n setIndex((current) => {\n if (items.length === 0) return 0;\n\n const nextIndex = current + 1;\n\n if (nextIndex >= items.length) {\n return loop ? 0 : items.length - 1;\n }\n\n return nextIndex;\n });\n }, [items.length, loop]);\n\n const previous = useCallback(() => {\n setIndex((current) => {\n if (items.length === 0) return 0;\n\n const prevIndex = current - 1;\n\n if (prevIndex < 0) {\n return loop ? items.length - 1 : 0;\n }\n\n return prevIndex;\n });\n }, [items.length, loop]);\n\n const select = useCallback((item: T) => {\n const newIndex = items.indexOf(item);\n if (newIndex !== -1) {\n setIndex(newIndex);\n }\n }, [items]);\n\n const selectedIndex = index;\n const selectedItem = items[index] ?? null;\n\n return {\n items,\n setItems,\n index: selectedIndex,\n setIndex,\n selectedItem,\n next,\n previous,\n select,\n };\n};\n"],"mappings":"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","names":["import_react","readline","import_react","import_node_readline","readline","import_react","import_react","import_react","import_react"]}
|
package/dist/hooks/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { u as useApp, a as useAppState, b as useFocus, c as useInput, d as useInterval, e as useKey, f as useList, g as useStdout, h as useStdoutDimensions, i as useTimeout } from '../index-
|
|
1
|
+
export { u as useApp, a as useAppState, b as useFocus, c as useInput, d as useInterval, e as useKey, f as useList, g as useStdout, h as useStdoutDimensions, i as useTimeout } from '../index-B4IaUxvU.cjs';
|
|
2
2
|
import 'node:tty';
|
|
3
3
|
import 'node:readline';
|
|
4
4
|
import 'react';
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { u as useApp, a as useAppState, b as useFocus, c as useInput, d as useInterval, e as useKey, f as useList, g as useStdout, h as useStdoutDimensions, i as useTimeout } from '../index-
|
|
1
|
+
export { u as useApp, a as useAppState, b as useFocus, c as useInput, d as useInterval, e as useKey, f as useList, g as useStdout, h as useStdoutDimensions, i as useTimeout } from '../index-B4IaUxvU.js';
|
|
2
2
|
import 'node:tty';
|
|
3
3
|
import 'node:readline';
|
|
4
4
|
import 'react';
|
package/dist/hooks/index.js
CHANGED
|
@@ -3,18 +3,12 @@
|
|
|
3
3
|
* cli-use - React-based Terminal UI Framework
|
|
4
4
|
* Inspired by Ratatui (https://ratatui.rs)
|
|
5
5
|
*/
|
|
6
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
7
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
8
|
-
}) : x)(function(x) {
|
|
9
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
10
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
11
|
-
});
|
|
12
6
|
|
|
13
7
|
// src/hooks/useApp.ts
|
|
14
8
|
import { useEffect, useState, useRef } from "react";
|
|
15
|
-
var useApp = (
|
|
9
|
+
var useApp = (_options = {}) => {
|
|
16
10
|
const rendererRef = useRef(null);
|
|
17
|
-
const [size
|
|
11
|
+
const [size] = useState({ cols: 80, rows: 24 });
|
|
18
12
|
const [running, setRunning] = useState(false);
|
|
19
13
|
useEffect(() => {
|
|
20
14
|
const cleanupResize = () => {
|
|
@@ -39,10 +33,10 @@ var useApp = (options = {}) => {
|
|
|
39
33
|
};
|
|
40
34
|
|
|
41
35
|
// src/hooks/useInput.ts
|
|
42
|
-
import { useEffect as useEffect2, useCallback } from "react";
|
|
36
|
+
import { useEffect as useEffect2, useCallback, useMemo } from "react";
|
|
37
|
+
import readline from "readline";
|
|
43
38
|
var useInput = (callback, deps = []) => {
|
|
44
39
|
useEffect2(() => {
|
|
45
|
-
const readline = __require("readline");
|
|
46
40
|
const handler = (chunk, key) => {
|
|
47
41
|
if (!key) return;
|
|
48
42
|
callback({
|
|
@@ -54,7 +48,9 @@ var useInput = (callback, deps = []) => {
|
|
|
54
48
|
sequence: key.sequence || ""
|
|
55
49
|
});
|
|
56
50
|
};
|
|
57
|
-
process.stdin.
|
|
51
|
+
if (process.stdin.isTTY) {
|
|
52
|
+
process.stdin.setRawMode(true);
|
|
53
|
+
}
|
|
58
54
|
readline.emitKeypressEvents(process.stdin);
|
|
59
55
|
process.stdin.on("keypress", handler);
|
|
60
56
|
return () => {
|
|
@@ -63,7 +59,8 @@ var useInput = (callback, deps = []) => {
|
|
|
63
59
|
}, [callback, ...deps]);
|
|
64
60
|
};
|
|
65
61
|
var useKey = (keyName, callback, deps = []) => {
|
|
66
|
-
const
|
|
62
|
+
const keyNameString = Array.isArray(keyName) ? keyName.join(",") : keyName;
|
|
63
|
+
const keys = useMemo(() => Array.isArray(keyName) ? keyName : [keyName], [keyNameString]);
|
|
67
64
|
useInput(
|
|
68
65
|
useCallback(
|
|
69
66
|
({ key, ctrl, meta }) => {
|
|
@@ -79,29 +76,30 @@ var useKey = (keyName, callback, deps = []) => {
|
|
|
79
76
|
};
|
|
80
77
|
|
|
81
78
|
// src/hooks/useFocus.ts
|
|
82
|
-
import { useState as useState2, useCallback as useCallback2,
|
|
79
|
+
import { useState as useState2, useCallback as useCallback2, useEffect as useEffect3 } from "react";
|
|
80
|
+
import readline2 from "readline";
|
|
83
81
|
var useFocus = (initialFocus = 0, itemCount) => {
|
|
84
82
|
const [focusedIndex, setFocusedIndex] = useState2(initialFocus);
|
|
85
|
-
const focusableRefs = useRef2(/* @__PURE__ */ new Map());
|
|
86
83
|
const focusNext = useCallback2(() => {
|
|
87
84
|
setFocusedIndex((current) => (current + 1) % itemCount);
|
|
88
85
|
}, [itemCount]);
|
|
89
86
|
const focusPrevious = useCallback2(() => {
|
|
90
87
|
setFocusedIndex((current) => (current - 1 + itemCount) % itemCount);
|
|
91
88
|
}, [itemCount]);
|
|
92
|
-
const setFocus = useCallback2(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
[focusedIndex]
|
|
89
|
+
const setFocus = useCallback2(
|
|
90
|
+
(index) => {
|
|
91
|
+
if (index >= 0 && index < itemCount) {
|
|
92
|
+
setFocusedIndex(index);
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
[itemCount]
|
|
100
96
|
);
|
|
97
|
+
const isFocused = useCallback2((index) => index === focusedIndex, [focusedIndex]);
|
|
101
98
|
useEffect3(() => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
readline2.emitKeypressEvents(process.stdin);
|
|
100
|
+
if (process.stdin.isTTY) {
|
|
101
|
+
process.stdin.setRawMode(true);
|
|
102
|
+
}
|
|
105
103
|
const handleKeyPress = (_chunk, key) => {
|
|
106
104
|
if (key.name === "tab" || key.name === "right") {
|
|
107
105
|
focusNext();
|
|
@@ -152,9 +150,9 @@ var useStdout = () => {
|
|
|
152
150
|
};
|
|
153
151
|
|
|
154
152
|
// src/hooks/useInterval.ts
|
|
155
|
-
import { useEffect as useEffect5, useRef as
|
|
153
|
+
import { useEffect as useEffect5, useRef as useRef2 } from "react";
|
|
156
154
|
var useInterval = (callback, delay) => {
|
|
157
|
-
const savedCallback =
|
|
155
|
+
const savedCallback = useRef2(callback);
|
|
158
156
|
useEffect5(() => {
|
|
159
157
|
savedCallback.current = callback;
|
|
160
158
|
}, [callback]);
|
|
@@ -166,7 +164,7 @@ var useInterval = (callback, delay) => {
|
|
|
166
164
|
}, [delay]);
|
|
167
165
|
};
|
|
168
166
|
var useTimeout = (callback, delay) => {
|
|
169
|
-
const savedCallback =
|
|
167
|
+
const savedCallback = useRef2(callback);
|
|
170
168
|
useEffect5(() => {
|
|
171
169
|
savedCallback.current = callback;
|
|
172
170
|
}, [callback]);
|