import { AskUserController } from "../session/controller.ts"; import type { AskUserInteractionResult, AskUserOutcome, NormalizedQuestionnaire, } from "../types.ts"; import { AskUserForm } from "./form-component.ts"; import type { RunQuestionnaireOptions } from "./types.ts"; export async function runFormQuestionnaire( questionnaire: NormalizedQuestionnaire, opts: RunQuestionnaireOptions, ): Promise { const controller = new AskUserController(questionnaire); if (opts.signal?.aborted) { return controller.abort(); } const editorFactory = opts.ui.getEditorComponent?.(); return opts.ui.custom?.( (tui, theme, kb, done) => new AskUserForm({ tui, theme, controller, done, signal: opts.signal, keybindings: kb, onToggleToolsExpanded: opts.onToggleToolsExpanded, editorFactory, notify: opts.ui.notify, }), ); }