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