@tooee/shell 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands.d.ts +5 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +33 -1
- package/dist/commands.js.map +1 -1
- package/dist/copy-on-select.d.ts +2 -0
- package/dist/copy-on-select.d.ts.map +1 -0
- package/dist/copy-on-select.js +35 -0
- package/dist/copy-on-select.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/launch.d.ts +10 -0
- package/dist/launch.d.ts.map +1 -1
- package/dist/launch.js +27 -0
- package/dist/launch.js.map +1 -1
- package/dist/modal.d.ts +0 -1
- package/dist/modal.d.ts.map +1 -1
- package/dist/modal.js +25 -71
- package/dist/modal.js.map +1 -1
- package/dist/provider.d.ts +6 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +13 -3
- package/dist/provider.js.map +1 -1
- package/package.json +9 -8
- package/src/commands.ts +38 -1
- package/src/copy-on-select.ts +40 -0
- package/src/index.ts +3 -2
- package/src/launch.tsx +31 -1
- package/src/modal.ts +24 -79
- package/src/provider.tsx +26 -2
package/dist/commands.d.ts
CHANGED
|
@@ -15,4 +15,9 @@ export declare function useCopyCommand(opts: {
|
|
|
15
15
|
getText: () => string | undefined;
|
|
16
16
|
when?: CommandWhen;
|
|
17
17
|
}): void;
|
|
18
|
+
export declare function useToggleLineNumbersCommand(opts: {
|
|
19
|
+
showLineNumbers: boolean;
|
|
20
|
+
onToggle: () => void;
|
|
21
|
+
when?: CommandWhen;
|
|
22
|
+
}): void;
|
|
18
23
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE9D,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;CACzB,CAwBA;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,QAgBA;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,QAgB7F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,QAgBA"}
|
package/dist/commands.js
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
1
2
|
import { useRenderer } from "@opentui/react";
|
|
2
3
|
import { copyToClipboard } from "@tooee/clipboard";
|
|
3
4
|
import { useCommand } from "@tooee/commands";
|
|
5
|
+
import { useToast } from "@tooee/toasts";
|
|
4
6
|
import { useThemePicker } from "./theme-picker.js";
|
|
5
7
|
export function useThemeCommands(opts) {
|
|
6
8
|
const picker = useThemePicker();
|
|
9
|
+
const { toast } = useToast();
|
|
10
|
+
// Toast when theme changes (after picker closes)
|
|
11
|
+
const prevTheme = useRef(picker.currentTheme);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (prevTheme.current !== picker.currentTheme && !picker.isOpen) {
|
|
14
|
+
toast({ message: `Theme: ${picker.currentTheme}`, level: "info", id: "theme-changed" });
|
|
15
|
+
}
|
|
16
|
+
prevTheme.current = picker.currentTheme;
|
|
17
|
+
}, [picker.currentTheme, picker.isOpen, toast]);
|
|
7
18
|
useCommand({
|
|
8
19
|
id: "cycle-theme",
|
|
9
20
|
title: "Choose theme",
|
|
@@ -38,12 +49,33 @@ export function useCopyCommand(opts) {
|
|
|
38
49
|
title: "Copy to clipboard",
|
|
39
50
|
hotkey: "y",
|
|
40
51
|
when: opts.when,
|
|
41
|
-
handler: () => {
|
|
52
|
+
handler: (ctx) => {
|
|
42
53
|
const text = opts.getText();
|
|
43
54
|
if (text) {
|
|
44
55
|
void copyToClipboard(text);
|
|
56
|
+
ctx.toast.toast({ message: "Copied to clipboard", level: "success" });
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
ctx.toast.toast({ message: "Nothing to copy", level: "warning" });
|
|
45
60
|
}
|
|
46
61
|
},
|
|
47
62
|
});
|
|
48
63
|
}
|
|
64
|
+
export function useToggleLineNumbersCommand(opts) {
|
|
65
|
+
useCommand({
|
|
66
|
+
id: "toggle-line-numbers",
|
|
67
|
+
title: "Toggle line numbers",
|
|
68
|
+
hotkey: "shift+l",
|
|
69
|
+
when: opts.when,
|
|
70
|
+
handler: (ctx) => {
|
|
71
|
+
opts.onToggle();
|
|
72
|
+
const next = !opts.showLineNumbers;
|
|
73
|
+
ctx.toast.toast({
|
|
74
|
+
message: `Line numbers: ${next ? "on" : "off"}`,
|
|
75
|
+
level: "info",
|
|
76
|
+
id: "line-numbers-toggled",
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
49
81
|
//# sourceMappingURL=commands.js.map
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAyB,MAAM,mBAAmB,CAAA;AAEzE,MAAM,UAAU,gBAAgB,CAAC,IAA6B;IAI5D,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-on-select.d.ts","sourceRoot":"","sources":["../src/copy-on-select.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,SAgC9B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { useRenderer } from "@opentui/react";
|
|
3
|
+
import { copyToClipboard, copyToPrimary } from "@tooee/clipboard";
|
|
4
|
+
import { useConfig } from "@tooee/config";
|
|
5
|
+
import { platform } from "os";
|
|
6
|
+
export function useCopyOnSelect() {
|
|
7
|
+
const renderer = useRenderer();
|
|
8
|
+
const config = useConfig();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const copyOnSelect = config.view?.copyOnSelect;
|
|
11
|
+
// Default: on for Linux, off elsewhere
|
|
12
|
+
const effective = copyOnSelect === undefined
|
|
13
|
+
? platform() === "linux"
|
|
14
|
+
: copyOnSelect;
|
|
15
|
+
if (!effective)
|
|
16
|
+
return;
|
|
17
|
+
const handler = (selection) => {
|
|
18
|
+
const text = selection.getSelectedText();
|
|
19
|
+
if (!text)
|
|
20
|
+
return;
|
|
21
|
+
if (effective === "clipboard") {
|
|
22
|
+
void copyToClipboard(text);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// true or "primary" → use primary selection
|
|
26
|
+
void copyToPrimary(text);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
renderer.on("selection", handler);
|
|
30
|
+
return () => {
|
|
31
|
+
renderer.off("selection", handler);
|
|
32
|
+
};
|
|
33
|
+
}, [renderer, config.view?.copyOnSelect]);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=copy-on-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-on-select.js","sourceRoot":"","sources":["../src/copy-on-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAG7B,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAA;QAE9C,uCAAuC;QACvC,MAAM,SAAS,GACb,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO;YACxB,CAAC,CAAC,YAAY,CAAA;QAElB,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,MAAM,OAAO,GAAG,CAAC,SAAoB,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,EAAE,CAAA;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAM;YAEjB,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,KAAK,eAAe,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,KAAK,aAAa,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC,CAAA;QAED,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACjC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export { useThemeCommands, useQuitCommand, useCopyCommand } from "./commands.js";
|
|
1
|
+
export { useThemeCommands, useQuitCommand, useCopyCommand, useToggleLineNumbersCommand } from "./commands.js";
|
|
2
2
|
export { useModalNavigationCommands } from "./modal.js";
|
|
3
3
|
export type { ModalNavigationState, ModalNavigationOptions, Position } from "./modal.js";
|
|
4
4
|
export { findMatchingLines } from "./search.js";
|
|
5
5
|
export { TooeeProvider } from "./provider.js";
|
|
6
|
-
export { launchCli } from "./launch.js";
|
|
6
|
+
export { launchCli, guardTerminalHealth } from "./launch.js";
|
|
7
7
|
export { useCommandPalette } from "./command-palette.js";
|
|
8
8
|
export type { CommandPaletteState } from "./command-palette.js";
|
|
9
9
|
export { useThemePicker } from "./theme-picker.js";
|
|
10
10
|
export type { ThemePickerState, ThemePickerEntry } from "./theme-picker.js";
|
|
11
11
|
export { OverlayProvider } from "./overlay.js";
|
|
12
|
+
export { useCopyOnSelect } from "./copy-on-select.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAC7G,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AACvD,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { useThemeCommands, useQuitCommand, useCopyCommand } from "./commands.js";
|
|
1
|
+
export { useThemeCommands, useQuitCommand, useCopyCommand, useToggleLineNumbersCommand } from "./commands.js";
|
|
2
2
|
export { useModalNavigationCommands } from "./modal.js";
|
|
3
3
|
export { findMatchingLines } from "./search.js";
|
|
4
4
|
export { TooeeProvider } from "./provider.js";
|
|
5
|
-
export { launchCli } from "./launch.js";
|
|
5
|
+
export { launchCli, guardTerminalHealth } from "./launch.js";
|
|
6
6
|
export { useCommandPalette } from "./command-palette.js";
|
|
7
7
|
export { useThemePicker } from "./theme-picker.js";
|
|
8
8
|
export { OverlayProvider } from "./overlay.js";
|
|
9
|
+
export { useCopyOnSelect } from "./copy-on-select.js";
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAC7G,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/launch.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
+
import { type CliRenderer } from "@opentui/core";
|
|
3
|
+
/**
|
|
4
|
+
* Exit the process when the terminal dies.
|
|
5
|
+
*
|
|
6
|
+
* When a terminal closes while a TUI is running, the PTY slave FDs go
|
|
7
|
+
* stale and OpenTUI's render loop busy-spins at 100% CPU. Listening for
|
|
8
|
+
* stdin end/close catches this immediately — Bun fires these events even
|
|
9
|
+
* in raw mode.
|
|
10
|
+
*/
|
|
11
|
+
export declare function guardTerminalHealth(renderer: CliRenderer): void;
|
|
2
12
|
export declare function launchCli(node: ReactNode, opts?: {
|
|
3
13
|
useAlternateScreen?: boolean;
|
|
4
14
|
exitOnCtrlC?: boolean;
|
package/dist/launch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAInE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAiB/D;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,IAAI,CAAC,CASf"}
|
package/dist/launch.js
CHANGED
|
@@ -2,11 +2,38 @@ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
|
2
2
|
import { createCliRenderer } from "@opentui/core";
|
|
3
3
|
import { createRoot } from "@opentui/react";
|
|
4
4
|
import { TooeeProvider } from "./provider.js";
|
|
5
|
+
/**
|
|
6
|
+
* Exit the process when the terminal dies.
|
|
7
|
+
*
|
|
8
|
+
* When a terminal closes while a TUI is running, the PTY slave FDs go
|
|
9
|
+
* stale and OpenTUI's render loop busy-spins at 100% CPU. Listening for
|
|
10
|
+
* stdin end/close catches this immediately — Bun fires these events even
|
|
11
|
+
* in raw mode.
|
|
12
|
+
*/
|
|
13
|
+
export function guardTerminalHealth(renderer) {
|
|
14
|
+
let exiting = false;
|
|
15
|
+
const exit = () => {
|
|
16
|
+
if (exiting)
|
|
17
|
+
return;
|
|
18
|
+
exiting = true;
|
|
19
|
+
try {
|
|
20
|
+
renderer.destroy();
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// PTY is dead — destroy may throw
|
|
24
|
+
}
|
|
25
|
+
process.exit(0);
|
|
26
|
+
};
|
|
27
|
+
const stdin = renderer.stdin ?? process.stdin;
|
|
28
|
+
stdin.on("end", exit);
|
|
29
|
+
stdin.on("close", exit);
|
|
30
|
+
}
|
|
5
31
|
export async function launchCli(node, opts) {
|
|
6
32
|
const renderer = await createCliRenderer({
|
|
7
33
|
useAlternateScreen: opts?.useAlternateScreen ?? true,
|
|
8
34
|
exitOnCtrlC: opts?.exitOnCtrlC ?? true,
|
|
9
35
|
});
|
|
36
|
+
guardTerminalHealth(renderer);
|
|
10
37
|
createRoot(renderer).render(_jsx(TooeeProvider, { children: node }));
|
|
11
38
|
}
|
|
12
39
|
//# sourceMappingURL=launch.js.map
|
package/dist/launch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAqB;IACvD,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,EAAE,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAA;IAC7C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAe,EACf,IAA8D;IAE9D,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;QACvC,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,IAAI;QACpD,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;KACvC,CAAC,CAAA;IAEF,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAE7B,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAC,aAAa,cAAE,IAAI,GAAiB,CAAC,CAAA;AACpE,CAAC"}
|
package/dist/modal.d.ts
CHANGED
package/dist/modal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../src/modal.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK5E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC7B,
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../src/modal.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK5E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAA;IACpD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,mIAAmI;IACnI,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,sBAAsB,GAAG,oBAAoB,CA4Z7F"}
|
package/dist/modal.js
CHANGED
|
@@ -8,7 +8,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
8
8
|
const { totalLines, viewportHeight = terminalHeight - 2, getText, blockCount, blockLineMap, searchLineOffset = 0, multiSelect = false, } = opts;
|
|
9
9
|
const mode = useMode();
|
|
10
10
|
const setMode = useSetMode();
|
|
11
|
-
const [scrollOffset, setScrollOffset] = useState(0);
|
|
12
11
|
const [cursor, setCursor] = useState(null);
|
|
13
12
|
const [selectionAnchor, setSelectionAnchor] = useState(null);
|
|
14
13
|
const [toggledIndices, setToggledIndices] = useState(new Set());
|
|
@@ -37,12 +36,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
37
36
|
if (matches.length > 0) {
|
|
38
37
|
// Auto-jump to first match
|
|
39
38
|
const line = matches[0];
|
|
40
|
-
setScrollOffset((offset) => {
|
|
41
|
-
if (line < offset || line >= offset + viewportHeight) {
|
|
42
|
-
return Math.max(0, Math.min(line, Math.max(0, totalLines - viewportHeight)));
|
|
43
|
-
}
|
|
44
|
-
return offset;
|
|
45
|
-
});
|
|
46
39
|
if (mode === "cursor" || mode === "select") {
|
|
47
40
|
setCursor((c) => (c ? { line, col: 0 } : c));
|
|
48
41
|
}
|
|
@@ -50,10 +43,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
50
43
|
}, [searchQuery, searchActive]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
51
44
|
const isBlockMode = blockCount != null;
|
|
52
45
|
const cursorMax = isBlockMode ? Math.max(0, blockCount - 1) : Math.max(0, totalLines - 1);
|
|
53
|
-
const maxScroll = Math.max(0, totalLines - viewportHeight);
|
|
54
|
-
const maxLine = Math.max(0, totalLines - 1);
|
|
55
|
-
const clampScroll = useCallback((value) => Math.max(0, Math.min(value, maxScroll)), [maxScroll]);
|
|
56
|
-
const _clampLine = useCallback((value) => Math.max(0, Math.min(value, maxLine)), [maxLine]);
|
|
57
46
|
const clampCursor = useCallback((value) => Math.max(0, Math.min(value, cursorMax)), [cursorMax]);
|
|
58
47
|
useEffect(() => {
|
|
59
48
|
setToggledIndices((prev) => {
|
|
@@ -63,44 +52,34 @@ export function useModalNavigationCommands(opts) {
|
|
|
63
52
|
return new Set(filtered);
|
|
64
53
|
});
|
|
65
54
|
}, [cursorMax]);
|
|
66
|
-
// When entering cursor mode, initialize cursor
|
|
55
|
+
// When entering cursor mode, initialize cursor if not already set
|
|
67
56
|
const prevMode = useRef(null);
|
|
68
57
|
useEffect(() => {
|
|
69
58
|
if (mode === "cursor" && prevMode.current !== "cursor" && prevMode.current !== "select") {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
59
|
+
setCursor((existing) => {
|
|
60
|
+
// If cursor already exists (e.g. set by a command via palette), preserve it
|
|
61
|
+
if (existing)
|
|
62
|
+
return existing;
|
|
63
|
+
// If there's an active search match, start cursor there; otherwise start at scroll position
|
|
64
|
+
const matches = matchingLinesRef.current;
|
|
65
|
+
if (matches.length > 0) {
|
|
66
|
+
const matchLine = matches[currentMatchIndex] ?? matches[0];
|
|
67
|
+
// In block mode, convert search line to block index using offset
|
|
68
|
+
if (isBlockMode) {
|
|
69
|
+
const blockIndex = Math.max(0, matchLine - searchLineOffset);
|
|
70
|
+
return { line: Math.min(blockIndex, cursorMax), col: 0 };
|
|
71
|
+
}
|
|
72
|
+
return { line: matchLine, col: 0 };
|
|
78
73
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// No search match - start at top (block 0) or scroll position
|
|
85
|
-
setCursor({ line: isBlockMode ? 0 : scrollOffset, col: 0 });
|
|
86
|
-
}
|
|
74
|
+
// No search match - start at top
|
|
75
|
+
return { line: 0, col: 0 };
|
|
76
|
+
});
|
|
87
77
|
}
|
|
88
78
|
if (mode === "select" && prevMode.current === "cursor" && cursor) {
|
|
89
79
|
setSelectionAnchor({ ...cursor });
|
|
90
80
|
}
|
|
91
81
|
prevMode.current = mode;
|
|
92
82
|
}, [mode]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
93
|
-
// Scroll to keep cursor visible
|
|
94
|
-
const scrollToCursor = useCallback((cursorIndex) => {
|
|
95
|
-
const line = isBlockMode && blockLineMap ? (blockLineMap[cursorIndex] ?? 0) : cursorIndex;
|
|
96
|
-
setScrollOffset((offset) => {
|
|
97
|
-
if (line < offset)
|
|
98
|
-
return line;
|
|
99
|
-
if (line >= offset + viewportHeight)
|
|
100
|
-
return clampScroll(line - viewportHeight + 1);
|
|
101
|
-
return offset;
|
|
102
|
-
});
|
|
103
|
-
}, [viewportHeight, clampScroll, isBlockMode, blockLineMap]);
|
|
104
83
|
// === CURSOR MODE ===
|
|
105
84
|
useCommand({
|
|
106
85
|
id: "cursor-down",
|
|
@@ -111,9 +90,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
111
90
|
setCursor((c) => {
|
|
112
91
|
if (!c)
|
|
113
92
|
return c;
|
|
114
|
-
|
|
115
|
-
scrollToCursor(next);
|
|
116
|
-
return { line: next, col: 0 };
|
|
93
|
+
return { line: clampCursor(c.line + 1), col: 0 };
|
|
117
94
|
});
|
|
118
95
|
},
|
|
119
96
|
});
|
|
@@ -162,9 +139,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
162
139
|
setCursor((c) => {
|
|
163
140
|
if (!c)
|
|
164
141
|
return c;
|
|
165
|
-
|
|
166
|
-
scrollToCursor(next);
|
|
167
|
-
return { line: next, col: 0 };
|
|
142
|
+
return { line: clampCursor(c.line - 1), col: 0 };
|
|
168
143
|
});
|
|
169
144
|
},
|
|
170
145
|
});
|
|
@@ -177,9 +152,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
177
152
|
setCursor((c) => {
|
|
178
153
|
if (!c)
|
|
179
154
|
return c;
|
|
180
|
-
|
|
181
|
-
scrollToCursor(next);
|
|
182
|
-
return { line: next, col: 0 };
|
|
155
|
+
return { line: clampCursor(c.line - 1), col: 0 };
|
|
183
156
|
});
|
|
184
157
|
},
|
|
185
158
|
});
|
|
@@ -193,9 +166,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
193
166
|
if (!c)
|
|
194
167
|
return c;
|
|
195
168
|
const step = isBlockMode ? Math.floor(cursorMax / 4) || 1 : Math.floor(viewportHeight / 2);
|
|
196
|
-
|
|
197
|
-
scrollToCursor(next);
|
|
198
|
-
return { line: next, col: 0 };
|
|
169
|
+
return { line: clampCursor(c.line + step), col: 0 };
|
|
199
170
|
});
|
|
200
171
|
},
|
|
201
172
|
});
|
|
@@ -209,9 +180,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
209
180
|
if (!c)
|
|
210
181
|
return c;
|
|
211
182
|
const step = isBlockMode ? Math.floor(cursorMax / 4) || 1 : Math.floor(viewportHeight / 2);
|
|
212
|
-
|
|
213
|
-
scrollToCursor(next);
|
|
214
|
-
return { line: next, col: 0 };
|
|
183
|
+
return { line: clampCursor(c.line - step), col: 0 };
|
|
215
184
|
});
|
|
216
185
|
},
|
|
217
186
|
});
|
|
@@ -222,7 +191,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
222
191
|
modes: ["cursor"],
|
|
223
192
|
handler: () => {
|
|
224
193
|
setCursor({ line: 0, col: 0 });
|
|
225
|
-
setScrollOffset(0);
|
|
226
194
|
},
|
|
227
195
|
});
|
|
228
196
|
useCommand({
|
|
@@ -232,13 +200,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
232
200
|
modes: ["cursor"],
|
|
233
201
|
handler: () => {
|
|
234
202
|
setCursor({ line: cursorMax, col: 0 });
|
|
235
|
-
if (isBlockMode && blockLineMap) {
|
|
236
|
-
const line = blockLineMap[cursorMax] ?? 0;
|
|
237
|
-
setScrollOffset(clampScroll(line));
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
setScrollOffset(maxScroll);
|
|
241
|
-
}
|
|
242
203
|
},
|
|
243
204
|
});
|
|
244
205
|
useCommand({
|
|
@@ -267,7 +228,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
267
228
|
const next = (idx + 1) % matches.length;
|
|
268
229
|
const line = matches[next];
|
|
269
230
|
setCursor({ line, col: 0 });
|
|
270
|
-
scrollToCursor(line);
|
|
271
231
|
return next;
|
|
272
232
|
});
|
|
273
233
|
},
|
|
@@ -286,7 +246,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
286
246
|
const next = (idx - 1 + matches.length) % matches.length;
|
|
287
247
|
const line = matches[next];
|
|
288
248
|
setCursor({ line, col: 0 });
|
|
289
|
-
scrollToCursor(line);
|
|
290
249
|
return next;
|
|
291
250
|
});
|
|
292
251
|
},
|
|
@@ -301,9 +260,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
301
260
|
setCursor((c) => {
|
|
302
261
|
if (!c)
|
|
303
262
|
return c;
|
|
304
|
-
|
|
305
|
-
scrollToCursor(next);
|
|
306
|
-
return { line: next, col: 0 };
|
|
263
|
+
return { line: clampCursor(c.line + 1), col: 0 };
|
|
307
264
|
});
|
|
308
265
|
},
|
|
309
266
|
});
|
|
@@ -316,9 +273,7 @@ export function useModalNavigationCommands(opts) {
|
|
|
316
273
|
setCursor((c) => {
|
|
317
274
|
if (!c)
|
|
318
275
|
return c;
|
|
319
|
-
|
|
320
|
-
scrollToCursor(next);
|
|
321
|
-
return { line: next, col: 0 };
|
|
276
|
+
return { line: clampCursor(c.line - 1), col: 0 };
|
|
322
277
|
});
|
|
323
278
|
},
|
|
324
279
|
});
|
|
@@ -425,7 +380,6 @@ export function useModalNavigationCommands(opts) {
|
|
|
425
380
|
return {
|
|
426
381
|
mode,
|
|
427
382
|
setMode,
|
|
428
|
-
scrollOffset,
|
|
429
383
|
cursor,
|
|
430
384
|
selection,
|
|
431
385
|
toggledIndices,
|
package/dist/modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAgC/C,MAAM,UAAU,0BAA0B,CAAC,IAA4B;IACrE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,qBAAqB,EAAE,CAAA;IAC1D,MAAM,EACJ,UAAU,EACV,cAAc,GAAG,cAAc,GAAG,CAAC,EACnC,OAAO,EACP,UAAU,EACV,YAAY,EACZ,gBAAgB,GAAG,CAAC,EACpB,WAAW,GAAG,KAAK,GACpB,GAAG,IAAI,CAAA;IACR,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAA;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAA;IAC7E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAA;IAC5E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAA;IAChE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAO,QAAQ,CAAC,CAAA;IAE/C,kFAAkF;IAClF,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAC1C,cAAc,CAAC,OAAO,GAAG,WAAW,CAAA;IACpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IAC9C,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAA;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY;YAAE,OAAM;QACzB,MAAM,IAAI,GAAG,OAAO,EAAE,EAAE,CAAA;QACxB,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,gBAAgB,CAAC,EAAE,CAAC,CAAA;YACpB,oBAAoB,CAAC,CAAC,CAAC,CAAA;YACvB,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACpD,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACzB,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,2BAA2B;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3C,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA,CAAC,kDAAkD;IAElF,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,CAAA;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;IAEzF,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAC1D,CAAC,SAAS,CAAC,CACZ,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;YACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YAC9C,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxF,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrB,4EAA4E;gBAC5E,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAC7B,4FAA4F;gBAC5F,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAA;gBACxC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;oBAC1D,iEAAiE;oBACjE,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAA;wBAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;oBAC1D,CAAC;oBACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;gBACpC,CAAC;gBACD,iCAAiC;gBACjC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;YACjE,kBAAkB,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACnC,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,kDAAkD;IAE7D,sBAAsB;IAEtB,UAAU,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW;QACvB,OAAO,EAAE,GAAG,EAAE;YACZ,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAA;gBACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;gBACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACf,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW;QACvB,OAAO,EAAE,GAAG,EAAE;YACZ,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAA;gBACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;gBACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACf,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;YACF,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;gBAC1F,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;gBAC1F,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAChC,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QACxC,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAA;YAC/B,eAAe,CAAC,IAAI,CAAC,CAAA;YACrB,cAAc,CAAC,EAAE,CAAC,CAAA;YAClB,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnB,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAA;YACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAChC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;gBACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3B,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAA;YACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAChC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;gBACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1B,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3B,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,sBAAsB;IAEtB,UAAU,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW;QACvB,OAAO,EAAE,GAAG,EAAE;YACZ,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAA;gBACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;gBACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACf,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,IAAI,CAAC,IAAI;gBAAE,OAAM;YAEjB,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;gBAChC,yDAAyD;gBACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC5D,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBAC/C,MAAM,OAAO,GACX,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM;oBAChC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBACzD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,QAAQ,EAAE,CAAC;oBACb,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/D,IAAI,QAAQ,EAAE,CAAC;oBACb,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnB,CAAC;KACF,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;KACjC,CAAC,CAAA;IAEF,2BAA2B;IAE3B,UAAU,CAAC;QACT,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;KACjC,CAAC,CAAA;IAEF,mCAAmC;IAEnC,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACrC,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY;QACxB,OAAO,EAAE,GAAG,EAAE;YACZ,eAAe,CAAC,KAAK,CAAC,CAAA;YACtB,cAAc,CAAC,EAAE,CAAC,CAAA;YAClB,gBAAgB,CAAC,EAAE,CAAC,CAAA;YACpB,oBAAoB,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;KACF,CAAC,CAAA;IAEF,yCAAyC;IACzC,MAAM,SAAS,GACb,eAAe,IAAI,MAAM,IAAI,IAAI,KAAK,QAAQ;QAC5C,CAAC,CAAC;YACE,KAAK,EAAE,eAAe,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM;YACrE,GAAG,EAAE,eAAe,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe;SACpE;QACH,CAAC,CAAC,IAAI,CAAA;IAEV,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,eAAe,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO;QACL,IAAI;QACJ,OAAO;QACP,MAAM;QACN,SAAS;QACT,cAAc;QACd,WAAW;QACX,YAAY;QACZ,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,YAAY;KACb,CAAA;AACH,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import { type TooeeConfig } from "@tooee/config";
|
|
3
3
|
import { type Mode } from "@tooee/commands";
|
|
4
|
+
import { type ToastController } from "@tooee/toasts";
|
|
5
|
+
declare module "@tooee/commands" {
|
|
6
|
+
interface CommandContext {
|
|
7
|
+
toast: ToastController;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
export interface TooeeProviderProps {
|
|
5
11
|
children: ReactNode;
|
|
6
12
|
leader?: string;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,EAA6C,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAI7E,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,cAAc;QACtB,KAAK,EAAE,eAAe,CAAA;KACvB;CACF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,MAAM,EAAE,eAAe,EACvB,WAAW,GACZ,EAAE,kBAAkB,aAQpB"}
|
package/dist/provider.js
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
|
|
2
2
|
import { ConfigProvider, useConfig } from "@tooee/config";
|
|
3
3
|
import { ThemeSwitcherProvider } from "@tooee/themes";
|
|
4
|
-
import { CommandProvider } from "@tooee/commands";
|
|
4
|
+
import { CommandProvider, useProvideCommandContext } from "@tooee/commands";
|
|
5
|
+
import { ToastProvider, useToast } from "@tooee/toasts";
|
|
5
6
|
import { OverlayProvider } from "./overlay.js";
|
|
7
|
+
import { useCopyOnSelect } from "./copy-on-select.js";
|
|
6
8
|
export function TooeeProvider({ children, leader, config: configOverrides, initialMode, }) {
|
|
7
9
|
return (_jsx(ConfigProvider, { overrides: configOverrides, children: _jsx(TooeeProviderInner, { leader: leader, initialMode: initialMode, children: children }) }));
|
|
8
10
|
}
|
|
9
11
|
function TooeeProviderInner({ children, leader, initialMode, }) {
|
|
10
12
|
const config = useConfig();
|
|
11
|
-
return (_jsx(ThemeSwitcherProvider, { initialTheme: config.theme?.name, initialMode: config.theme?.mode, children: _jsx(CommandProvider, { leader: leader, keymap: config.keys, initialMode: initialMode, children: _jsx(OverlayProvider, { children: children }) }) }));
|
|
13
|
+
return (_jsx(ThemeSwitcherProvider, { initialTheme: config.theme?.name, initialMode: config.theme?.mode, children: _jsx(CommandProvider, { leader: leader, keymap: config.keys, initialMode: initialMode, children: _jsx(ToastProvider, { children: _jsx(ToastContextBridge, { children: _jsx(OverlayProvider, { children: children }) }) }) }) }));
|
|
14
|
+
}
|
|
15
|
+
function ToastContextBridge({ children }) {
|
|
16
|
+
const toastController = useToast();
|
|
17
|
+
useProvideCommandContext(() => ({
|
|
18
|
+
toast: toastController,
|
|
19
|
+
}));
|
|
20
|
+
useCopyOnSelect();
|
|
21
|
+
return _jsx(_Fragment, { children: children });
|
|
12
22
|
}
|
|
13
23
|
//# sourceMappingURL=provider.js.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAoB,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,eAAe,EAAa,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAoB,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAa,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAerD,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,MAAM,EAAE,eAAe,EACvB,WAAW,GACQ;IACnB,OAAO,CACL,KAAC,cAAc,IAAC,SAAS,EAAE,eAAe,YACxC,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,YACzD,QAAQ,GACU,GACN,CAClB,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,MAAM,EACN,WAAW,GAKZ;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,OAAO,CACL,KAAC,qBAAqB,IAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,YACtF,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,YAC5E,KAAC,aAAa,cACZ,KAAC,kBAAkB,cACjB,KAAC,eAAe,cAAE,QAAQ,GAAmB,GAC1B,GACP,GACA,GACI,CACzB,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IAC/D,MAAM,eAAe,GAAG,QAAQ,EAAE,CAAA;IAElC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,eAAe;KACvB,CAAC,CAAC,CAAA;IAEH,eAAe,EAAE,CAAA;IAEjB,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tooee/shell",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Composition layer wiring Tooee apps together",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Gareth Andrew",
|
|
@@ -34,13 +34,14 @@
|
|
|
34
34
|
"typecheck": "tsc --noEmit"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@tooee/commands": "0.1.
|
|
38
|
-
"@tooee/config": "0.1.
|
|
39
|
-
"@tooee/clipboard": "0.1.
|
|
40
|
-
"@tooee/
|
|
41
|
-
"@tooee/
|
|
42
|
-
"@tooee/
|
|
43
|
-
"@tooee/
|
|
37
|
+
"@tooee/commands": "0.1.6",
|
|
38
|
+
"@tooee/config": "0.1.6",
|
|
39
|
+
"@tooee/clipboard": "0.1.6",
|
|
40
|
+
"@tooee/toasts": "0.1.6",
|
|
41
|
+
"@tooee/layout": "0.1.6",
|
|
42
|
+
"@tooee/overlays": "0.1.6",
|
|
43
|
+
"@tooee/renderers": "0.1.6",
|
|
44
|
+
"@tooee/themes": "0.1.6"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
47
|
"@opentui/core": "^0.1.67",
|
package/src/commands.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react"
|
|
1
2
|
import { useRenderer } from "@opentui/react"
|
|
2
3
|
import { copyToClipboard } from "@tooee/clipboard"
|
|
3
4
|
import { useCommand, type CommandWhen } from "@tooee/commands"
|
|
5
|
+
import { useToast } from "@tooee/toasts"
|
|
4
6
|
import { useThemePicker, type ThemePickerState } from "./theme-picker.js"
|
|
5
7
|
|
|
6
8
|
export function useThemeCommands(opts?: { when?: CommandWhen }): {
|
|
@@ -8,6 +10,16 @@ export function useThemeCommands(opts?: { when?: CommandWhen }): {
|
|
|
8
10
|
picker: ThemePickerState
|
|
9
11
|
} {
|
|
10
12
|
const picker = useThemePicker()
|
|
13
|
+
const { toast } = useToast()
|
|
14
|
+
|
|
15
|
+
// Toast when theme changes (after picker closes)
|
|
16
|
+
const prevTheme = useRef(picker.currentTheme)
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (prevTheme.current !== picker.currentTheme && !picker.isOpen) {
|
|
19
|
+
toast({ message: `Theme: ${picker.currentTheme}`, level: "info", id: "theme-changed" })
|
|
20
|
+
}
|
|
21
|
+
prevTheme.current = picker.currentTheme
|
|
22
|
+
}, [picker.currentTheme, picker.isOpen, toast])
|
|
11
23
|
|
|
12
24
|
useCommand({
|
|
13
25
|
id: "cycle-theme",
|
|
@@ -50,11 +62,36 @@ export function useCopyCommand(opts: { getText: () => string | undefined; when?:
|
|
|
50
62
|
title: "Copy to clipboard",
|
|
51
63
|
hotkey: "y",
|
|
52
64
|
when: opts.when,
|
|
53
|
-
handler: () => {
|
|
65
|
+
handler: (ctx) => {
|
|
54
66
|
const text = opts.getText()
|
|
55
67
|
if (text) {
|
|
56
68
|
void copyToClipboard(text)
|
|
69
|
+
ctx.toast.toast({ message: "Copied to clipboard", level: "success" })
|
|
70
|
+
} else {
|
|
71
|
+
ctx.toast.toast({ message: "Nothing to copy", level: "warning" })
|
|
57
72
|
}
|
|
58
73
|
},
|
|
59
74
|
})
|
|
60
75
|
}
|
|
76
|
+
|
|
77
|
+
export function useToggleLineNumbersCommand(opts: {
|
|
78
|
+
showLineNumbers: boolean
|
|
79
|
+
onToggle: () => void
|
|
80
|
+
when?: CommandWhen
|
|
81
|
+
}) {
|
|
82
|
+
useCommand({
|
|
83
|
+
id: "toggle-line-numbers",
|
|
84
|
+
title: "Toggle line numbers",
|
|
85
|
+
hotkey: "shift+l",
|
|
86
|
+
when: opts.when,
|
|
87
|
+
handler: (ctx) => {
|
|
88
|
+
opts.onToggle()
|
|
89
|
+
const next = !opts.showLineNumbers
|
|
90
|
+
ctx.toast.toast({
|
|
91
|
+
message: `Line numbers: ${next ? "on" : "off"}`,
|
|
92
|
+
level: "info",
|
|
93
|
+
id: "line-numbers-toggled",
|
|
94
|
+
})
|
|
95
|
+
},
|
|
96
|
+
})
|
|
97
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useEffect } from "react"
|
|
2
|
+
import { useRenderer } from "@opentui/react"
|
|
3
|
+
import { copyToClipboard, copyToPrimary } from "@tooee/clipboard"
|
|
4
|
+
import { useConfig } from "@tooee/config"
|
|
5
|
+
import { platform } from "os"
|
|
6
|
+
import type { Selection } from "@opentui/core"
|
|
7
|
+
|
|
8
|
+
export function useCopyOnSelect() {
|
|
9
|
+
const renderer = useRenderer()
|
|
10
|
+
const config = useConfig()
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const copyOnSelect = config.view?.copyOnSelect
|
|
14
|
+
|
|
15
|
+
// Default: on for Linux, off elsewhere
|
|
16
|
+
const effective =
|
|
17
|
+
copyOnSelect === undefined
|
|
18
|
+
? platform() === "linux"
|
|
19
|
+
: copyOnSelect
|
|
20
|
+
|
|
21
|
+
if (!effective) return
|
|
22
|
+
|
|
23
|
+
const handler = (selection: Selection) => {
|
|
24
|
+
const text = selection.getSelectedText()
|
|
25
|
+
if (!text) return
|
|
26
|
+
|
|
27
|
+
if (effective === "clipboard") {
|
|
28
|
+
void copyToClipboard(text)
|
|
29
|
+
} else {
|
|
30
|
+
// true or "primary" → use primary selection
|
|
31
|
+
void copyToPrimary(text)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
renderer.on("selection", handler)
|
|
36
|
+
return () => {
|
|
37
|
+
renderer.off("selection", handler)
|
|
38
|
+
}
|
|
39
|
+
}, [renderer, config.view?.copyOnSelect])
|
|
40
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { useThemeCommands, useQuitCommand, useCopyCommand } from "./commands.js"
|
|
1
|
+
export { useThemeCommands, useQuitCommand, useCopyCommand, useToggleLineNumbersCommand } from "./commands.js"
|
|
2
2
|
export { useModalNavigationCommands } from "./modal.js"
|
|
3
3
|
export type { ModalNavigationState, ModalNavigationOptions, Position } from "./modal.js"
|
|
4
4
|
export { findMatchingLines } from "./search.js"
|
|
5
5
|
export { TooeeProvider } from "./provider.js"
|
|
6
|
-
export { launchCli } from "./launch.js"
|
|
6
|
+
export { launchCli, guardTerminalHealth } from "./launch.js"
|
|
7
7
|
export { useCommandPalette } from "./command-palette.js"
|
|
8
8
|
export type { CommandPaletteState } from "./command-palette.js"
|
|
9
9
|
export { useThemePicker } from "./theme-picker.js"
|
|
10
10
|
export type { ThemePickerState, ThemePickerEntry } from "./theme-picker.js"
|
|
11
11
|
export { OverlayProvider } from "./overlay.js"
|
|
12
|
+
export { useCopyOnSelect } from "./copy-on-select.js"
|
package/src/launch.tsx
CHANGED
|
@@ -1,8 +1,35 @@
|
|
|
1
1
|
import type { ReactNode } from "react"
|
|
2
|
-
import { createCliRenderer } from "@opentui/core"
|
|
2
|
+
import { createCliRenderer, type CliRenderer } from "@opentui/core"
|
|
3
3
|
import { createRoot } from "@opentui/react"
|
|
4
4
|
import { TooeeProvider } from "./provider.js"
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Exit the process when the terminal dies.
|
|
8
|
+
*
|
|
9
|
+
* When a terminal closes while a TUI is running, the PTY slave FDs go
|
|
10
|
+
* stale and OpenTUI's render loop busy-spins at 100% CPU. Listening for
|
|
11
|
+
* stdin end/close catches this immediately — Bun fires these events even
|
|
12
|
+
* in raw mode.
|
|
13
|
+
*/
|
|
14
|
+
export function guardTerminalHealth(renderer: CliRenderer): void {
|
|
15
|
+
let exiting = false
|
|
16
|
+
|
|
17
|
+
const exit = () => {
|
|
18
|
+
if (exiting) return
|
|
19
|
+
exiting = true
|
|
20
|
+
try {
|
|
21
|
+
renderer.destroy()
|
|
22
|
+
} catch {
|
|
23
|
+
// PTY is dead — destroy may throw
|
|
24
|
+
}
|
|
25
|
+
process.exit(0)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const stdin = renderer.stdin ?? process.stdin
|
|
29
|
+
stdin.on("end", exit)
|
|
30
|
+
stdin.on("close", exit)
|
|
31
|
+
}
|
|
32
|
+
|
|
6
33
|
export async function launchCli(
|
|
7
34
|
node: ReactNode,
|
|
8
35
|
opts?: { useAlternateScreen?: boolean; exitOnCtrlC?: boolean },
|
|
@@ -11,5 +38,8 @@ export async function launchCli(
|
|
|
11
38
|
useAlternateScreen: opts?.useAlternateScreen ?? true,
|
|
12
39
|
exitOnCtrlC: opts?.exitOnCtrlC ?? true,
|
|
13
40
|
})
|
|
41
|
+
|
|
42
|
+
guardTerminalHealth(renderer)
|
|
43
|
+
|
|
14
44
|
createRoot(renderer).render(<TooeeProvider>{node}</TooeeProvider>)
|
|
15
45
|
}
|
package/src/modal.ts
CHANGED
|
@@ -12,7 +12,6 @@ export interface Position {
|
|
|
12
12
|
export interface ModalNavigationState {
|
|
13
13
|
mode: Mode
|
|
14
14
|
setMode: (mode: Mode) => void
|
|
15
|
-
scrollOffset: number
|
|
16
15
|
cursor: Position | null
|
|
17
16
|
selection: { start: Position; end: Position } | null
|
|
18
17
|
toggledIndices: Set<number>
|
|
@@ -49,7 +48,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
49
48
|
const mode = useMode()
|
|
50
49
|
const setMode = useSetMode()
|
|
51
50
|
|
|
52
|
-
const [scrollOffset, setScrollOffset] = useState(0)
|
|
53
51
|
const [cursor, setCursor] = useState<Position | null>(null)
|
|
54
52
|
const [selectionAnchor, setSelectionAnchor] = useState<Position | null>(null)
|
|
55
53
|
const [toggledIndices, setToggledIndices] = useState<Set<number>>(new Set())
|
|
@@ -79,12 +77,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
79
77
|
if (matches.length > 0) {
|
|
80
78
|
// Auto-jump to first match
|
|
81
79
|
const line = matches[0]
|
|
82
|
-
setScrollOffset((offset) => {
|
|
83
|
-
if (line < offset || line >= offset + viewportHeight) {
|
|
84
|
-
return Math.max(0, Math.min(line, Math.max(0, totalLines - viewportHeight)))
|
|
85
|
-
}
|
|
86
|
-
return offset
|
|
87
|
-
})
|
|
88
80
|
if (mode === "cursor" || mode === "select") {
|
|
89
81
|
setCursor((c) => (c ? { line, col: 0 } : c))
|
|
90
82
|
}
|
|
@@ -93,18 +85,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
93
85
|
|
|
94
86
|
const isBlockMode = blockCount != null
|
|
95
87
|
const cursorMax = isBlockMode ? Math.max(0, blockCount - 1) : Math.max(0, totalLines - 1)
|
|
96
|
-
const maxScroll = Math.max(0, totalLines - viewportHeight)
|
|
97
|
-
const maxLine = Math.max(0, totalLines - 1)
|
|
98
|
-
|
|
99
|
-
const clampScroll = useCallback(
|
|
100
|
-
(value: number) => Math.max(0, Math.min(value, maxScroll)),
|
|
101
|
-
[maxScroll],
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
const _clampLine = useCallback(
|
|
105
|
-
(value: number) => Math.max(0, Math.min(value, maxLine)),
|
|
106
|
-
[maxLine],
|
|
107
|
-
)
|
|
108
88
|
|
|
109
89
|
const clampCursor = useCallback(
|
|
110
90
|
(value: number) => Math.max(0, Math.min(value, cursorMax)),
|
|
@@ -119,25 +99,27 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
119
99
|
})
|
|
120
100
|
}, [cursorMax])
|
|
121
101
|
|
|
122
|
-
// When entering cursor mode, initialize cursor
|
|
102
|
+
// When entering cursor mode, initialize cursor if not already set
|
|
123
103
|
const prevMode = useRef<Mode | null>(null)
|
|
124
104
|
useEffect(() => {
|
|
125
105
|
if (mode === "cursor" && prevMode.current !== "cursor" && prevMode.current !== "select") {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
106
|
+
setCursor((existing) => {
|
|
107
|
+
// If cursor already exists (e.g. set by a command via palette), preserve it
|
|
108
|
+
if (existing) return existing
|
|
109
|
+
// If there's an active search match, start cursor there; otherwise start at scroll position
|
|
110
|
+
const matches = matchingLinesRef.current
|
|
111
|
+
if (matches.length > 0) {
|
|
112
|
+
const matchLine = matches[currentMatchIndex] ?? matches[0]
|
|
113
|
+
// In block mode, convert search line to block index using offset
|
|
114
|
+
if (isBlockMode) {
|
|
115
|
+
const blockIndex = Math.max(0, matchLine - searchLineOffset)
|
|
116
|
+
return { line: Math.min(blockIndex, cursorMax), col: 0 }
|
|
117
|
+
}
|
|
118
|
+
return { line: matchLine, col: 0 }
|
|
136
119
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
120
|
+
// No search match - start at top
|
|
121
|
+
return { line: 0, col: 0 }
|
|
122
|
+
})
|
|
141
123
|
}
|
|
142
124
|
if (mode === "select" && prevMode.current === "cursor" && cursor) {
|
|
143
125
|
setSelectionAnchor({ ...cursor })
|
|
@@ -145,19 +127,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
145
127
|
prevMode.current = mode
|
|
146
128
|
}, [mode]) // eslint-disable-line react-hooks/exhaustive-deps
|
|
147
129
|
|
|
148
|
-
// Scroll to keep cursor visible
|
|
149
|
-
const scrollToCursor = useCallback(
|
|
150
|
-
(cursorIndex: number) => {
|
|
151
|
-
const line = isBlockMode && blockLineMap ? (blockLineMap[cursorIndex] ?? 0) : cursorIndex
|
|
152
|
-
setScrollOffset((offset) => {
|
|
153
|
-
if (line < offset) return line
|
|
154
|
-
if (line >= offset + viewportHeight) return clampScroll(line - viewportHeight + 1)
|
|
155
|
-
return offset
|
|
156
|
-
})
|
|
157
|
-
},
|
|
158
|
-
[viewportHeight, clampScroll, isBlockMode, blockLineMap],
|
|
159
|
-
)
|
|
160
|
-
|
|
161
130
|
// === CURSOR MODE ===
|
|
162
131
|
|
|
163
132
|
useCommand({
|
|
@@ -168,9 +137,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
168
137
|
handler: () => {
|
|
169
138
|
setCursor((c) => {
|
|
170
139
|
if (!c) return c
|
|
171
|
-
|
|
172
|
-
scrollToCursor(next)
|
|
173
|
-
return { line: next, col: 0 }
|
|
140
|
+
return { line: clampCursor(c.line + 1), col: 0 }
|
|
174
141
|
})
|
|
175
142
|
},
|
|
176
143
|
})
|
|
@@ -216,9 +183,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
216
183
|
})
|
|
217
184
|
setCursor((c) => {
|
|
218
185
|
if (!c) return c
|
|
219
|
-
|
|
220
|
-
scrollToCursor(next)
|
|
221
|
-
return { line: next, col: 0 }
|
|
186
|
+
return { line: clampCursor(c.line - 1), col: 0 }
|
|
222
187
|
})
|
|
223
188
|
},
|
|
224
189
|
})
|
|
@@ -231,9 +196,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
231
196
|
handler: () => {
|
|
232
197
|
setCursor((c) => {
|
|
233
198
|
if (!c) return c
|
|
234
|
-
|
|
235
|
-
scrollToCursor(next)
|
|
236
|
-
return { line: next, col: 0 }
|
|
199
|
+
return { line: clampCursor(c.line - 1), col: 0 }
|
|
237
200
|
})
|
|
238
201
|
},
|
|
239
202
|
})
|
|
@@ -247,9 +210,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
247
210
|
setCursor((c) => {
|
|
248
211
|
if (!c) return c
|
|
249
212
|
const step = isBlockMode ? Math.floor(cursorMax / 4) || 1 : Math.floor(viewportHeight / 2)
|
|
250
|
-
|
|
251
|
-
scrollToCursor(next)
|
|
252
|
-
return { line: next, col: 0 }
|
|
213
|
+
return { line: clampCursor(c.line + step), col: 0 }
|
|
253
214
|
})
|
|
254
215
|
},
|
|
255
216
|
})
|
|
@@ -263,9 +224,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
263
224
|
setCursor((c) => {
|
|
264
225
|
if (!c) return c
|
|
265
226
|
const step = isBlockMode ? Math.floor(cursorMax / 4) || 1 : Math.floor(viewportHeight / 2)
|
|
266
|
-
|
|
267
|
-
scrollToCursor(next)
|
|
268
|
-
return { line: next, col: 0 }
|
|
227
|
+
return { line: clampCursor(c.line - step), col: 0 }
|
|
269
228
|
})
|
|
270
229
|
},
|
|
271
230
|
})
|
|
@@ -277,7 +236,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
277
236
|
modes: ["cursor"],
|
|
278
237
|
handler: () => {
|
|
279
238
|
setCursor({ line: 0, col: 0 })
|
|
280
|
-
setScrollOffset(0)
|
|
281
239
|
},
|
|
282
240
|
})
|
|
283
241
|
|
|
@@ -288,12 +246,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
288
246
|
modes: ["cursor"],
|
|
289
247
|
handler: () => {
|
|
290
248
|
setCursor({ line: cursorMax, col: 0 })
|
|
291
|
-
if (isBlockMode && blockLineMap) {
|
|
292
|
-
const line = blockLineMap[cursorMax] ?? 0
|
|
293
|
-
setScrollOffset(clampScroll(line))
|
|
294
|
-
} else {
|
|
295
|
-
setScrollOffset(maxScroll)
|
|
296
|
-
}
|
|
297
249
|
},
|
|
298
250
|
})
|
|
299
251
|
|
|
@@ -323,7 +275,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
323
275
|
const next = (idx + 1) % matches.length
|
|
324
276
|
const line = matches[next]
|
|
325
277
|
setCursor({ line, col: 0 })
|
|
326
|
-
scrollToCursor(line)
|
|
327
278
|
return next
|
|
328
279
|
})
|
|
329
280
|
},
|
|
@@ -342,7 +293,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
342
293
|
const next = (idx - 1 + matches.length) % matches.length
|
|
343
294
|
const line = matches[next]
|
|
344
295
|
setCursor({ line, col: 0 })
|
|
345
|
-
scrollToCursor(line)
|
|
346
296
|
return next
|
|
347
297
|
})
|
|
348
298
|
},
|
|
@@ -358,9 +308,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
358
308
|
handler: () => {
|
|
359
309
|
setCursor((c) => {
|
|
360
310
|
if (!c) return c
|
|
361
|
-
|
|
362
|
-
scrollToCursor(next)
|
|
363
|
-
return { line: next, col: 0 }
|
|
311
|
+
return { line: clampCursor(c.line + 1), col: 0 }
|
|
364
312
|
})
|
|
365
313
|
},
|
|
366
314
|
})
|
|
@@ -373,9 +321,7 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
373
321
|
handler: () => {
|
|
374
322
|
setCursor((c) => {
|
|
375
323
|
if (!c) return c
|
|
376
|
-
|
|
377
|
-
scrollToCursor(next)
|
|
378
|
-
return { line: next, col: 0 }
|
|
324
|
+
return { line: clampCursor(c.line - 1), col: 0 }
|
|
379
325
|
})
|
|
380
326
|
},
|
|
381
327
|
})
|
|
@@ -490,7 +436,6 @@ export function useModalNavigationCommands(opts: ModalNavigationOptions): ModalN
|
|
|
490
436
|
return {
|
|
491
437
|
mode,
|
|
492
438
|
setMode,
|
|
493
|
-
scrollOffset,
|
|
494
439
|
cursor,
|
|
495
440
|
selection,
|
|
496
441
|
toggledIndices,
|
package/src/provider.tsx
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { ReactNode } from "react"
|
|
2
2
|
import { ConfigProvider, useConfig, type TooeeConfig } from "@tooee/config"
|
|
3
3
|
import { ThemeSwitcherProvider } from "@tooee/themes"
|
|
4
|
-
import { CommandProvider, type Mode } from "@tooee/commands"
|
|
4
|
+
import { CommandProvider, useProvideCommandContext, type Mode } from "@tooee/commands"
|
|
5
|
+
import { ToastProvider, useToast, type ToastController } from "@tooee/toasts"
|
|
5
6
|
import { OverlayProvider } from "./overlay.js"
|
|
7
|
+
import { useCopyOnSelect } from "./copy-on-select.js"
|
|
8
|
+
|
|
9
|
+
declare module "@tooee/commands" {
|
|
10
|
+
interface CommandContext {
|
|
11
|
+
toast: ToastController
|
|
12
|
+
}
|
|
13
|
+
}
|
|
6
14
|
|
|
7
15
|
export interface TooeeProviderProps {
|
|
8
16
|
children: ReactNode
|
|
@@ -39,8 +47,24 @@ function TooeeProviderInner({
|
|
|
39
47
|
return (
|
|
40
48
|
<ThemeSwitcherProvider initialTheme={config.theme?.name} initialMode={config.theme?.mode}>
|
|
41
49
|
<CommandProvider leader={leader} keymap={config.keys} initialMode={initialMode}>
|
|
42
|
-
<
|
|
50
|
+
<ToastProvider>
|
|
51
|
+
<ToastContextBridge>
|
|
52
|
+
<OverlayProvider>{children}</OverlayProvider>
|
|
53
|
+
</ToastContextBridge>
|
|
54
|
+
</ToastProvider>
|
|
43
55
|
</CommandProvider>
|
|
44
56
|
</ThemeSwitcherProvider>
|
|
45
57
|
)
|
|
46
58
|
}
|
|
59
|
+
|
|
60
|
+
function ToastContextBridge({ children }: { children: ReactNode }) {
|
|
61
|
+
const toastController = useToast()
|
|
62
|
+
|
|
63
|
+
useProvideCommandContext(() => ({
|
|
64
|
+
toast: toastController,
|
|
65
|
+
}))
|
|
66
|
+
|
|
67
|
+
useCopyOnSelect()
|
|
68
|
+
|
|
69
|
+
return <>{children}</>
|
|
70
|
+
}
|