(state: State, options: Options)
| 142 | } |
| 143 | |
| 144 | function renderNextFrame(state: State, options: Options) { |
| 145 | return Effect.gen(function*() { |
| 146 | const terminal = yield* Terminal.Terminal |
| 147 | const columns = yield* terminal.columns |
| 148 | const figures = yield* InternalAnsiUtils.figures |
| 149 | const leadingSymbol = Doc.annotate(Doc.text("?"), Ansi.cyanBright) |
| 150 | const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright) |
| 151 | const promptMsg = renderOutput(state, leadingSymbol, trailingSymbol, options) |
| 152 | const errorMsg = renderError(state, figures.pointerSmall) |
| 153 | const offset = state.cursor - state.value.length |
| 154 | return promptMsg.pipe( |
| 155 | Doc.cat(errorMsg), |
| 156 | Doc.cat(Doc.cursorMove(offset)), |
| 157 | Optimize.optimize(Optimize.Deep), |
| 158 | Doc.render({ style: "pretty", options: { lineWidth: columns } }) |
| 159 | ) |
| 160 | }) |
| 161 | } |
| 162 | |
| 163 | function renderSubmission(state: State, options: Options) { |
| 164 | return Effect.gen(function*() { |
no test coverage detected