Compare commits
2 Commits
b2d1a6e958
...
4eea9bce6f
| Author | SHA1 | Date | |
|---|---|---|---|
| 4eea9bce6f | |||
| 8813e27a90 |
@ -6,8 +6,13 @@ import {
|
||||
type PainterTask,
|
||||
task as TASK,
|
||||
} from '../painter/lifecycle'
|
||||
import { type AnsiBufferKey } from '../util/ansi'
|
||||
import { DoEither, type Either, right } from '../util/basic/either'
|
||||
import {
|
||||
type AnsiBufferKey,
|
||||
ansiText,
|
||||
emptyBytes,
|
||||
writeAnsiU,
|
||||
} from '../util/ansi'
|
||||
import { DoEither, type Either, left, right } from '../util/basic/either'
|
||||
import { some } from '../util/basic/option'
|
||||
import type { Tag } from '../util/basic/utility'
|
||||
|
||||
@ -16,9 +21,10 @@ interface SelectOptions {
|
||||
keydown: Array<Key>
|
||||
exit: Array<Key>
|
||||
accept: Array<Key>
|
||||
selector: string
|
||||
selector: {selected: string, default: string}
|
||||
selected: number
|
||||
options: Array<string>
|
||||
header: {text: string, format: Array<AnsiBufferKey | Uint8Array>}
|
||||
header?: {text: string, format: Array<AnsiBufferKey | Uint8Array>}
|
||||
format: {
|
||||
text: {
|
||||
default: Array<AnsiBufferKey | Uint8Array>,
|
||||
@ -43,22 +49,36 @@ const EVENT: Record<string, Event | ((...args: any[]) => Event)> = {
|
||||
|
||||
type RenderText =
|
||||
(x: SelectOptions & Tag<'PainterState'>) => Promise<Either<number, Error>>
|
||||
// const renderText: RenderText = x =>
|
||||
//
|
||||
// const selectOptions: PainterEffect<SelectOptions> = x =>
|
||||
// DoEither(right(x)).start()
|
||||
// .bind('')
|
||||
|
||||
const test = async () => {
|
||||
const myPromise = new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve('First')
|
||||
}, 300)
|
||||
})
|
||||
|
||||
console.log('Second')
|
||||
console.log(await myPromise)
|
||||
return some(await myPromise + 'Third')
|
||||
const renderText: RenderText = async (x) => {
|
||||
try {
|
||||
return right(
|
||||
await writeAnsiU([
|
||||
...(!x.header ? [emptyBytes]
|
||||
: [...x.header.format, ansiText(x.header.text)]),
|
||||
...x.options.flatMap(i =>
|
||||
(x.options[x.selected] === i)
|
||||
? [
|
||||
...x.format.selector.defaultSelected,
|
||||
ansiText(x.selector.selected),
|
||||
'RESET' as AnsiBufferKey,
|
||||
...x.format.text.defaultSelected,
|
||||
ansiText(i),
|
||||
'RESET' as AnsiBufferKey,
|
||||
] : [
|
||||
...x.format.selector.default,
|
||||
ansiText(x.selector.default),
|
||||
'RESET' as AnsiBufferKey,
|
||||
...x.format.text.default,
|
||||
ansiText(i),
|
||||
'RESET' as AnsiBufferKey,
|
||||
]
|
||||
),
|
||||
]),
|
||||
)
|
||||
} catch (e) {
|
||||
return left(e as Error)
|
||||
}
|
||||
}
|
||||
|
||||
console.log(await test())
|
||||
const selectOptions: PainterEffect<SelectOptions> = x => {
|
||||
}
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
import { nanoseconds } from 'bun'
|
||||
|
||||
const encoder = new TextEncoder()
|
||||
const emptyBytes = encoder.encode('')
|
||||
type Writer = (x: Uint8Array | Array<Uint8Array>) => Promise<number>
|
||||
@ -142,6 +140,8 @@ export {
|
||||
ANSI_DYNAMIC,
|
||||
type AnsiBufferKey,
|
||||
ansiText,
|
||||
emptyBytes,
|
||||
writeAnsi,
|
||||
writeAnsiU,
|
||||
writer,
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user