@tooee/shell 0.1.0

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.
Files changed (57) hide show
  1. package/README.md +5 -0
  2. package/dist/CommandPaletteOverlay.d.ts +7 -0
  3. package/dist/CommandPaletteOverlay.d.ts.map +1 -0
  4. package/dist/CommandPaletteOverlay.js +29 -0
  5. package/dist/CommandPaletteOverlay.js.map +1 -0
  6. package/dist/ThemePickerOverlay.d.ts +6 -0
  7. package/dist/ThemePickerOverlay.d.ts.map +1 -0
  8. package/dist/ThemePickerOverlay.js +20 -0
  9. package/dist/ThemePickerOverlay.js.map +1 -0
  10. package/dist/command-palette.d.ts +9 -0
  11. package/dist/command-palette.d.ts.map +1 -0
  12. package/dist/command-palette.js +51 -0
  13. package/dist/command-palette.js.map +1 -0
  14. package/dist/commands.d.ts +18 -0
  15. package/dist/commands.d.ts.map +1 -0
  16. package/dist/commands.js +49 -0
  17. package/dist/commands.js.map +1 -0
  18. package/dist/index.d.ts +12 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +9 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/launch.d.ts +6 -0
  23. package/dist/launch.d.ts.map +1 -0
  24. package/dist/launch.js +12 -0
  25. package/dist/launch.js.map +1 -0
  26. package/dist/modal.d.ts +34 -0
  27. package/dist/modal.d.ts.map +1 -0
  28. package/dist/modal.js +440 -0
  29. package/dist/modal.js.map +1 -0
  30. package/dist/overlay.d.ts +11 -0
  31. package/dist/overlay.d.ts.map +1 -0
  32. package/dist/overlay.js +145 -0
  33. package/dist/overlay.js.map +1 -0
  34. package/dist/provider.d.ts +11 -0
  35. package/dist/provider.d.ts.map +1 -0
  36. package/dist/provider.js +13 -0
  37. package/dist/provider.js.map +1 -0
  38. package/dist/search.d.ts +2 -0
  39. package/dist/search.d.ts.map +1 -0
  40. package/dist/search.js +20 -0
  41. package/dist/search.js.map +1 -0
  42. package/dist/theme-picker.d.ts +16 -0
  43. package/dist/theme-picker.d.ts.map +1 -0
  44. package/dist/theme-picker.js +48 -0
  45. package/dist/theme-picker.js.map +1 -0
  46. package/package.json +49 -0
  47. package/src/CommandPaletteOverlay.tsx +44 -0
  48. package/src/ThemePickerOverlay.tsx +28 -0
  49. package/src/command-palette.ts +73 -0
  50. package/src/commands.ts +60 -0
  51. package/src/index.ts +11 -0
  52. package/src/launch.tsx +15 -0
  53. package/src/modal.ts +504 -0
  54. package/src/overlay.tsx +220 -0
  55. package/src/provider.tsx +46 -0
  56. package/src/search.ts +18 -0
  57. package/src/theme-picker.ts +84 -0
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @tooee/shell
2
+
3
+ Composition layer wiring Tooee apps together.
4
+
5
+ Part of the [Tooee](https://github.com/gingerhendrix/tooee) monorepo. See the main repo for documentation.
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from "react";
2
+ import type { Mode } from "@tooee/commands";
3
+ export declare function CommandPaletteOverlay({ launchMode, close, }: {
4
+ launchMode: Mode;
5
+ close: () => void;
6
+ }): ReactNode;
7
+ //# sourceMappingURL=CommandPaletteOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandPaletteOverlay.d.ts","sourceRoot":"","sources":["../src/CommandPaletteOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK3C,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,KAAK,GACN,EAAE;IACD,UAAU,EAAE,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,GAAG,SAAS,CA6BZ"}
@@ -0,0 +1,29 @@
1
+ import { createElement, useMemo } from "react";
2
+ import { useCommandContext } from "@tooee/commands";
3
+ import { CommandPalette } from "@tooee/renderers";
4
+ const DEFAULT_MODES = ["cursor"];
5
+ export function CommandPaletteOverlay({ launchMode, close, }) {
6
+ const { commands, invoke } = useCommandContext();
7
+ const entries = useMemo(() => commands
8
+ .filter((cmd) => !cmd.hidden)
9
+ .filter((cmd) => {
10
+ const cmdModes = cmd.modes ?? DEFAULT_MODES;
11
+ return cmdModes.includes(launchMode);
12
+ })
13
+ .map((cmd) => ({
14
+ id: cmd.id,
15
+ title: cmd.title,
16
+ hotkey: cmd.defaultHotkey,
17
+ category: cmd.category,
18
+ icon: cmd.icon,
19
+ })), [commands, launchMode]);
20
+ return createElement(CommandPalette, {
21
+ commands: entries,
22
+ onSelect: (id) => {
23
+ close();
24
+ invoke(id);
25
+ },
26
+ onClose: close,
27
+ });
28
+ }
29
+ //# sourceMappingURL=CommandPaletteOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandPaletteOverlay.js","sourceRoot":"","sources":["../src/CommandPaletteOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,aAAa,GAAW,CAAC,QAAQ,CAAC,CAAA;AAExC,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,EACV,KAAK,GAIN;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAEhD,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,QAAQ;SACL,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,aAAa,CAAA;QAC3C,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,aAAa;QACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC,EACP,CAAC,QAAQ,EAAE,UAAU,CAAC,CACvB,CAAA;IAED,OAAO,aAAa,CAAC,cAAc,EAAE;QACnC,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,CAAC,EAAU,EAAE,EAAE;YACvB,KAAK,EAAE,CAAA;YACP,MAAM,CAAC,EAAE,CAAC,CAAA;QACZ,CAAC;QACD,OAAO,EAAE,KAAK;KACf,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ReactNode } from "react";
2
+ export declare function ThemePickerOverlay({ originalTheme, close, }: {
3
+ originalTheme: string;
4
+ close: () => void;
5
+ }): ReactNode;
6
+ //# sourceMappingURL=ThemePickerOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemePickerOverlay.d.ts","sourceRoot":"","sources":["../src/ThemePickerOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,kBAAkB,CAAC,EACjC,aAAa,EACb,KAAK,GACN,EAAE;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,GAAG,SAAS,CAiBZ"}
@@ -0,0 +1,20 @@
1
+ import { createElement } from "react";
2
+ import { useThemeSwitcher, ThemePicker } from "@tooee/themes";
3
+ export function ThemePickerOverlay({ originalTheme, close, }) {
4
+ const { allThemes, name: currentTheme, setTheme } = useThemeSwitcher();
5
+ const entries = allThemes.map((name) => ({ id: name, title: name }));
6
+ return createElement(ThemePicker, {
7
+ entries,
8
+ currentTheme,
9
+ onNavigate: setTheme,
10
+ onSelect: (name) => {
11
+ setTheme(name);
12
+ close();
13
+ },
14
+ onClose: () => {
15
+ setTheme(originalTheme);
16
+ close();
17
+ },
18
+ });
19
+ }
20
+ //# sourceMappingURL=ThemePickerOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemePickerOverlay.js","sourceRoot":"","sources":["../src/ThemePickerOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE7D,MAAM,UAAU,kBAAkB,CAAC,EACjC,aAAa,EACb,KAAK,GAIN;IACC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAA;IACtE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE5E,OAAO,aAAa,CAAC,WAAW,EAAE;QAChC,OAAO;QACP,YAAY;QACZ,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAA;YACd,KAAK,EAAE,CAAA;QACT,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC,aAAa,CAAC,CAAA;YACvB,KAAK,EAAE,CAAA;QACT,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { CommandPaletteEntry } from "@tooee/renderers";
2
+ export interface CommandPaletteState {
3
+ isOpen: boolean;
4
+ open: () => void;
5
+ close: () => void;
6
+ entries: CommandPaletteEntry[];
7
+ }
8
+ export declare function useCommandPalette(): CommandPaletteState;
9
+ //# sourceMappingURL=command-palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../src/command-palette.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,CAqDvD"}
@@ -0,0 +1,51 @@
1
+ import { useCallback, useMemo, useRef, useState } from "react";
2
+ import { createElement } from "react";
3
+ import { useCommandContext, useCommand, useMode } from "@tooee/commands";
4
+ import { useOverlay } from "@tooee/overlays";
5
+ import { CommandPaletteOverlay } from "./CommandPaletteOverlay.jsx";
6
+ const DEFAULT_MODES = ["cursor"];
7
+ const OVERLAY_ID = "command-palette";
8
+ export function useCommandPalette() {
9
+ const { commands } = useCommandContext();
10
+ const mode = useMode();
11
+ const overlay = useOverlay();
12
+ const [isOpen, setIsOpen] = useState(false);
13
+ const launchModeRef = useRef(mode);
14
+ const launchMode = launchModeRef.current;
15
+ const entries = useMemo(() => {
16
+ return commands
17
+ .filter((cmd) => !cmd.hidden)
18
+ .filter((cmd) => {
19
+ const cmdModes = cmd.modes ?? DEFAULT_MODES;
20
+ return cmdModes.includes(launchMode);
21
+ })
22
+ .map((cmd) => ({
23
+ id: cmd.id,
24
+ title: cmd.title,
25
+ hotkey: cmd.defaultHotkey,
26
+ category: cmd.category,
27
+ icon: cmd.icon,
28
+ }));
29
+ }, [commands, launchMode]);
30
+ const close = useCallback(() => {
31
+ setIsOpen(false);
32
+ overlay.hide(OVERLAY_ID);
33
+ }, [overlay]);
34
+ const open = useCallback(() => {
35
+ launchModeRef.current = mode;
36
+ setIsOpen(true);
37
+ overlay.open(OVERLAY_ID, ({ close }) => createElement(CommandPaletteOverlay, {
38
+ launchMode: mode,
39
+ close: () => close(),
40
+ }), null, { mode: "insert", dismissOnEscape: true, onClose: () => setIsOpen(false) });
41
+ }, [overlay, mode]);
42
+ useCommand({
43
+ id: "command-palette",
44
+ title: "Command Palette",
45
+ hotkey: ":",
46
+ modes: ["cursor"],
47
+ handler: open,
48
+ });
49
+ return { isOpen, open, close, entries };
50
+ }
51
+ //# sourceMappingURL=command-palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../src/command-palette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,MAAM,aAAa,GAAW,CAAC,QAAQ,CAAC,CAAA;AACxC,MAAM,UAAU,GAAG,iBAAiB,CAAA;AASpC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAA;IACxC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,aAAa,GAAG,MAAM,CAAO,IAAI,CAAC,CAAA;IAExC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAA;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;aAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,aAAa,CAAA;YAC3C,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACtC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,aAAa;YACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC,CAAA;IACP,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE1B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,SAAS,CAAC,KAAK,CAAC,CAAA;QAChB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAA;QAC5B,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,CAAC,IAAI,CACV,UAAU,EACV,CAAC,EAAE,KAAK,EAAoD,EAAE,EAAE,CAC9D,aAAa,CAAC,qBAAqB,EAAE;YACnC,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;SACrB,CAAC,EACJ,IAAI,EACJ,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC3E,CAAA;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAEnB,UAAU,CAAC;QACT,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AACzC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type CommandWhen } from "@tooee/commands";
2
+ import { type ThemePickerState } from "./theme-picker.js";
3
+ export declare function useThemeCommands(opts?: {
4
+ when?: CommandWhen;
5
+ }): {
6
+ name: string;
7
+ picker: ThemePickerState;
8
+ };
9
+ export declare function useQuitCommand(opts?: {
10
+ hotkey?: string;
11
+ when?: CommandWhen;
12
+ onQuit?: () => void;
13
+ }): void;
14
+ export declare function useCopyCommand(opts: {
15
+ getText: () => string | undefined;
16
+ when?: CommandWhen;
17
+ }): void;
18
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,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,CAcA;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,QAa7F"}
@@ -0,0 +1,49 @@
1
+ import { useRenderer } from "@opentui/react";
2
+ import { copyToClipboard } from "@tooee/clipboard";
3
+ import { useCommand } from "@tooee/commands";
4
+ import { useThemePicker } from "./theme-picker.js";
5
+ export function useThemeCommands(opts) {
6
+ const picker = useThemePicker();
7
+ useCommand({
8
+ id: "cycle-theme",
9
+ title: "Choose theme",
10
+ hotkey: "t",
11
+ when: opts?.when,
12
+ handler: () => {
13
+ picker.open();
14
+ },
15
+ });
16
+ return { name: picker.currentTheme, picker };
17
+ }
18
+ export function useQuitCommand(opts) {
19
+ const renderer = useRenderer();
20
+ useCommand({
21
+ id: "quit",
22
+ title: "Quit",
23
+ hotkey: opts?.hotkey ?? "q",
24
+ when: opts?.when,
25
+ handler: () => {
26
+ if (opts?.onQuit) {
27
+ opts.onQuit();
28
+ }
29
+ else {
30
+ renderer.destroy();
31
+ }
32
+ },
33
+ });
34
+ }
35
+ export function useCopyCommand(opts) {
36
+ useCommand({
37
+ id: "copy",
38
+ title: "Copy to clipboard",
39
+ hotkey: "y",
40
+ when: opts.when,
41
+ handler: () => {
42
+ const text = opts.getText();
43
+ if (text) {
44
+ void copyToClipboard(text);
45
+ }
46
+ },
47
+ });
48
+ }
49
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +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;IAE/B,UAAU,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,EAAE,CAAA;QACf,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAI9B;IACC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,UAAU,CAAC;QACT,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG;QAC3B,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,EAAE,CAAA;YACf,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA+D;IAC5F,UAAU,CAAC;QACT,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,eAAe,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { useThemeCommands, useQuitCommand, useCopyCommand } from "./commands.js";
2
+ export { useModalNavigationCommands } from "./modal.js";
3
+ export type { ModalNavigationState, ModalNavigationOptions, Position } from "./modal.js";
4
+ export { findMatchingLines } from "./search.js";
5
+ export { TooeeProvider } from "./provider.jsx";
6
+ export { launchCli } from "./launch.jsx";
7
+ export { useCommandPalette } from "./command-palette.js";
8
+ export type { CommandPaletteState } from "./command-palette.js";
9
+ export { useThemePicker } from "./theme-picker.js";
10
+ export type { ThemePickerState, ThemePickerEntry } from "./theme-picker.js";
11
+ export { OverlayProvider } from "./overlay.jsx";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAChF,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,gBAAgB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,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,eAAe,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { useThemeCommands, useQuitCommand, useCopyCommand } from "./commands.js";
2
+ export { useModalNavigationCommands } from "./modal.js";
3
+ export { findMatchingLines } from "./search.js";
4
+ export { TooeeProvider } from "./provider.jsx";
5
+ export { launchCli } from "./launch.jsx";
6
+ export { useCommandPalette } from "./command-palette.js";
7
+ export { useThemePicker } from "./theme-picker.js";
8
+ export { OverlayProvider } from "./overlay.jsx";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { ReactNode } from "react";
2
+ export declare function launchCli(node: ReactNode, opts?: {
3
+ useAlternateScreen?: boolean;
4
+ exitOnCtrlC?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,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,CAMf"}
package/dist/launch.js ADDED
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { createCliRenderer } from "@opentui/core";
3
+ import { createRoot } from "@opentui/react";
4
+ import { TooeeProvider } from "./provider.jsx";
5
+ export async function launchCli(node, opts) {
6
+ const renderer = await createCliRenderer({
7
+ useAlternateScreen: opts?.useAlternateScreen ?? true,
8
+ exitOnCtrlC: opts?.exitOnCtrlC ?? true,
9
+ });
10
+ createRoot(renderer).render(_jsx(TooeeProvider, { children: node }));
11
+ }
12
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,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;IACF,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAC,aAAa,cAAE,IAAI,GAAiB,CAAC,CAAA;AACpE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type Mode } from "@tooee/commands";
2
+ export interface Position {
3
+ line: number;
4
+ col: number;
5
+ }
6
+ export interface ModalNavigationState {
7
+ mode: Mode;
8
+ setMode: (mode: Mode) => void;
9
+ scrollOffset: number;
10
+ cursor: Position | null;
11
+ selection: {
12
+ start: Position;
13
+ end: Position;
14
+ } | null;
15
+ toggledIndices: Set<number>;
16
+ searchQuery: string;
17
+ searchActive: boolean;
18
+ setSearchQuery: (query: string) => void;
19
+ matchingLines: number[];
20
+ currentMatchIndex: number;
21
+ submitSearch: () => void;
22
+ }
23
+ export interface ModalNavigationOptions {
24
+ totalLines: number;
25
+ viewportHeight?: number;
26
+ getText?: () => string | undefined;
27
+ blockCount?: number;
28
+ blockLineMap?: number[];
29
+ /** Offset to subtract from search line numbers to get block indices (for when getText has different line structure than visual) */
30
+ searchLineOffset?: number;
31
+ multiSelect?: boolean;
32
+ }
33
+ export declare function useModalNavigationCommands(opts: ModalNavigationOptions): ModalNavigationState;
34
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +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,YAAY,EAAE,MAAM,CAAA;IACpB,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,CAkd7F"}