This repository has been archived on 2026-03-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-extensions/wecom/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js
T

35 lines
1.1 KiB
JavaScript

import { getEditorKeybindings } from "../keybindings.js";
import { Loader } from "./loader.js";
/**
* Loader that can be cancelled with Escape.
* Extends Loader with an AbortSignal for cancelling async operations.
*
* @example
* const loader = new CancellableLoader(tui, cyan, dim, "Working...");
* loader.onAbort = () => done(null);
* doWork(loader.signal).then(done);
*/
export class CancellableLoader extends Loader {
abortController = new AbortController();
/** Called when user presses Escape */
onAbort;
/** AbortSignal that is aborted when user presses Escape */
get signal() {
return this.abortController.signal;
}
/** Whether the loader was aborted */
get aborted() {
return this.abortController.signal.aborted;
}
handleInput(data) {
const kb = getEditorKeybindings();
if (kb.matches(data, "selectCancel")) {
this.abortController.abort();
this.onAbort?.();
}
}
dispose() {
this.stop();
}
}
//# sourceMappingURL=cancellable-loader.js.map