@tooee/choose 0.1.11 → 0.1.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Choose.d.ts","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAc,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhG,UAAU,WAAW;IACnB,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,sCAAsC;IACtC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,WAAW,6BAsS7F"}
1
+ {"version":3,"file":"Choose.d.ts","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAc,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhG,UAAU,WAAW;IACnB,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,sCAAsC;IACtC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,WAAW,6BAiT7F"}
package/dist/Choose.js CHANGED
@@ -4,7 +4,7 @@ import { useKeyboard } from "@opentui/react";
4
4
  import { AppLayout } from "@tooee/layout";
5
5
  import { ThemePicker, useTheme } from "@tooee/themes";
6
6
  import { useThemeCommands, useQuitCommand } from "@tooee/shell";
7
- import { useMode, useSetMode, useCommand, useActions, useProvideCommandContext, useCommandContext } from "@tooee/commands";
7
+ import { useMode, useSetMode, useCommand, useActions, useProvideCommandContext, useCommandContext, } from "@tooee/commands";
8
8
  import { fuzzyFilter } from "./fuzzy.js";
9
9
  export function Choose({ contentProvider, options, actions, onConfirm, onCancel }) {
10
10
  const { theme } = useTheme();
@@ -142,7 +142,17 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
142
142
  onCancel?.();
143
143
  }
144
144
  }
145
- }, [multi, selectedIndices, items, filteredItems, activeIndex, onConfirm, onCancel, actions, invoke]);
145
+ }, [
146
+ multi,
147
+ selectedIndices,
148
+ items,
149
+ filteredItems,
150
+ activeIndex,
151
+ onConfirm,
152
+ onCancel,
153
+ actions,
154
+ invoke,
155
+ ]);
146
156
  useKeyboard((key) => {
147
157
  if (key.name === "escape") {
148
158
  if (mode === "insert") {
@@ -185,7 +195,7 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
185
195
  useEffect(() => {
186
196
  if (scrollRef.current && filteredItems.length > 0) {
187
197
  // +1 accounts for the filter input row at the top of scroll content
188
- scrollRef.current.scrollTop = Math.max(0, (activeIndex + 1) - 5);
198
+ scrollRef.current.scrollTop = Math.max(0, activeIndex + 1 - 5);
189
199
  }
190
200
  }, [activeIndex, filteredItems.length]);
191
201
  if (loading) {
@@ -198,7 +208,9 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
198
208
  if (multi && mode === "insert")
199
209
  hintParts.splice(2, 0, "Tab toggle");
200
210
  const hint = hintParts.join(" ");
201
- return (_jsx(AppLayout, { titleBar: (options?.title ?? options?.prompt) ? { title: (options.title ?? options.prompt) } : undefined, statusBar: {
211
+ return (_jsx(AppLayout, { titleBar: (options?.title ?? options?.prompt)
212
+ ? { title: (options.title ?? options.prompt) }
213
+ : undefined, statusBar: {
202
214
  items: [
203
215
  { label: "Matches:", value: `${filteredItems.length}/${items.length}` },
204
216
  ...(multi ? [{ label: "Selected:", value: String(selectedCount) }] : []),
@@ -1 +1 @@
1
- {"version":3,"file":"Choose.js","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Choose.js","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ChooseItem } from "./types.js";
2
+ export interface ChooseOverlayProps {
3
+ items: ChooseItem[] | (() => Promise<ChooseItem[]>);
4
+ prompt?: string;
5
+ placeholder?: string;
6
+ emptyMessage?: string;
7
+ onSelect: (item: ChooseItem) => void | Promise<void>;
8
+ onCancel: () => void;
9
+ }
10
+ export declare function ChooseOverlay({ items: itemsOrLoader, prompt, placeholder, emptyMessage, onSelect, onCancel, }: ChooseOverlayProps): import("react").ReactNode;
11
+ //# sourceMappingURL=ChooseOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChooseOverlay.d.ts","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,aAAa,EACpB,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,6BAsLpB"}
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
+ import { useState, useEffect, useRef, useCallback, useMemo } from "react";
3
+ import { useKeyboard } from "@opentui/react";
4
+ import { useTheme } from "@tooee/themes";
5
+ import { useMode, useSetMode } from "@tooee/commands";
6
+ import { fuzzyFilter } from "./fuzzy.js";
7
+ export function ChooseOverlay({ items: itemsOrLoader, prompt, placeholder, emptyMessage, onSelect, onCancel, }) {
8
+ const { theme } = useTheme();
9
+ const mode = useMode();
10
+ const setMode = useSetMode();
11
+ const [items, setItems] = useState(Array.isArray(itemsOrLoader) ? itemsOrLoader : []);
12
+ const [loading, setLoading] = useState(!Array.isArray(itemsOrLoader));
13
+ const [filterQuery, setFilterQuery] = useState("");
14
+ const [activeIndex, setActiveIndex] = useState(0);
15
+ const scrollRef = useRef(null);
16
+ // Load items if async loader provided
17
+ useEffect(() => {
18
+ if (typeof itemsOrLoader === "function") {
19
+ itemsOrLoader().then((loaded) => {
20
+ setItems(loaded);
21
+ setLoading(false);
22
+ });
23
+ }
24
+ }, [itemsOrLoader]);
25
+ // Filtered items via fuzzy matching
26
+ const filteredItems = useMemo(() => fuzzyFilter(items, filterQuery), [items, filterQuery]);
27
+ // Reset activeIndex when filter changes
28
+ const [prevFilterQuery, setPrevFilterQuery] = useState("");
29
+ if (filterQuery !== prevFilterQuery) {
30
+ setPrevFilterQuery(filterQuery);
31
+ setActiveIndex(0);
32
+ }
33
+ const moveUp = useCallback(() => {
34
+ setActiveIndex((i) => Math.max(0, i - 1));
35
+ }, []);
36
+ const moveDown = useCallback(() => {
37
+ setActiveIndex((i) => Math.min(filteredItems.length - 1, i + 1));
38
+ }, [filteredItems.length]);
39
+ const confirm = useCallback(() => {
40
+ const match = filteredItems[activeIndex];
41
+ if (match) {
42
+ onSelect(match.item);
43
+ }
44
+ }, [filteredItems, activeIndex, onSelect]);
45
+ useKeyboard((key) => {
46
+ if (key.name === "escape") {
47
+ key.preventDefault();
48
+ if (mode === "insert") {
49
+ setMode("cursor");
50
+ }
51
+ else {
52
+ onCancel();
53
+ }
54
+ return;
55
+ }
56
+ if (mode === "cursor") {
57
+ if (key.raw === "i" || key.raw === "a") {
58
+ key.preventDefault();
59
+ setMode("insert");
60
+ return;
61
+ }
62
+ if (key.raw === "j") {
63
+ key.preventDefault();
64
+ moveDown();
65
+ return;
66
+ }
67
+ if (key.raw === "k") {
68
+ key.preventDefault();
69
+ moveUp();
70
+ return;
71
+ }
72
+ }
73
+ if (key.name === "return") {
74
+ key.preventDefault();
75
+ confirm();
76
+ return;
77
+ }
78
+ if (key.name === "up" || (key.ctrl && key.name === "p")) {
79
+ key.preventDefault();
80
+ moveUp();
81
+ return;
82
+ }
83
+ if (key.name === "down" || (key.ctrl && key.name === "n")) {
84
+ key.preventDefault();
85
+ moveDown();
86
+ return;
87
+ }
88
+ });
89
+ // Auto-scroll to keep active item visible
90
+ useEffect(() => {
91
+ if (scrollRef.current && filteredItems.length > 0) {
92
+ scrollRef.current.scrollTop = Math.max(0, activeIndex - 5);
93
+ }
94
+ }, [activeIndex, filteredItems.length]);
95
+ const hintText = mode === "insert" ? "Enter confirm Esc commands" : "j/k navigate i insert Esc cancel";
96
+ return (_jsxs("box", { position: "absolute", left: "20%", right: "20%", top: "20%", bottom: "20%", flexDirection: "column", backgroundColor: theme.backgroundPanel, border: true, borderColor: theme.borderActive, children: [prompt && (_jsx("box", { height: 1, paddingLeft: 1, paddingRight: 1, backgroundColor: theme.backgroundElement, children: _jsx("text", { content: prompt, fg: theme.accent }) })), _jsxs("box", { flexDirection: "row", height: 1, style: { paddingLeft: 1, paddingRight: 1 }, children: [_jsx("text", { content: "> ", fg: theme.accent }), _jsx("input", { focused: mode === "insert", placeholder: placeholder ?? "Filter...", onInput: setFilterQuery, backgroundColor: "transparent", textColor: theme.text, placeholderColor: theme.textMuted, cursorColor: theme.primary, style: { flexGrow: 1 } }), _jsx("text", { content: ` ${filteredItems.length}/${items.length}`, fg: theme.textMuted })] }), _jsxs("scrollbox", { ref: scrollRef, flexDirection: "column", style: { flexGrow: 1 }, focused: false, children: [loading && (_jsx("box", { height: 1, style: { paddingLeft: 2 }, children: _jsx("text", { content: "Loading...", fg: theme.textMuted }) })), !loading && filteredItems.length === 0 && emptyMessage && (_jsx("box", { height: 1, style: { paddingLeft: 2 }, children: _jsx("text", { content: emptyMessage, fg: theme.textMuted }) })), filteredItems.map((match, idx) => {
97
+ const isActive = idx === activeIndex;
98
+ return (_jsxs("box", { flexDirection: "row", height: 1, backgroundColor: isActive ? theme.backgroundElement : undefined, style: { paddingLeft: 1 }, children: [match.item.icon && _jsx("text", { content: `${match.item.icon} `, fg: theme.textMuted }), _jsx("text", { fg: isActive ? theme.primary : theme.text, children: renderHighlightedText(match.item.text, match.positions, theme.warning) }), match.item.description && (_jsx("text", { content: ` ${match.item.description}`, fg: theme.textMuted }))] }, match.originalIndex));
99
+ })] }), _jsx("box", { height: 1, paddingLeft: 1, paddingRight: 1, backgroundColor: theme.backgroundElement, children: _jsx("text", { content: hintText, fg: theme.textMuted }) })] }));
100
+ }
101
+ function renderHighlightedText(text, positions, highlightColor) {
102
+ if (positions.length === 0) {
103
+ return text;
104
+ }
105
+ const posSet = new Set(positions);
106
+ const parts = [];
107
+ let current = "";
108
+ let currentHighlight = false;
109
+ for (let i = 0; i < text.length; i++) {
110
+ const isHighlight = posSet.has(i);
111
+ if (i === 0) {
112
+ currentHighlight = isHighlight;
113
+ current = text[i];
114
+ }
115
+ else if (isHighlight === currentHighlight) {
116
+ current += text[i];
117
+ }
118
+ else {
119
+ parts.push({ text: current, highlight: currentHighlight });
120
+ current = text[i];
121
+ currentHighlight = isHighlight;
122
+ }
123
+ }
124
+ if (current) {
125
+ parts.push({ text: current, highlight: currentHighlight });
126
+ }
127
+ return parts.map((part, i) => part.highlight ? (_jsx("span", { fg: highlightColor, children: part.text }, i)) : (part.text));
128
+ }
129
+ //# sourceMappingURL=ChooseOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChooseOverlay.js","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAoB5E"}
1
+ {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAiB5E"}
package/dist/fuzzy.js CHANGED
@@ -1,15 +1,12 @@
1
- const WORD_BOUNDARY_CHARS = new Set([" ", "-", "_", ".", "/"]);
1
+ import { fuzzyMatchPositions } from "@tooee/fuzzy";
2
2
  export function fuzzyFilter(items, query) {
3
3
  if (!query) {
4
4
  return items.map((item, i) => ({ item, originalIndex: i, score: 0, positions: [] }));
5
5
  }
6
- const lowerQuery = query.toLowerCase();
7
6
  const results = [];
8
7
  for (let i = 0; i < items.length; i++) {
9
8
  const item = items[i];
10
- const text = item.text;
11
- const lowerText = text.toLowerCase();
12
- const match = matchFuzzy(lowerText, lowerQuery);
9
+ const match = fuzzyMatchPositions(query, item.text);
13
10
  if (match) {
14
11
  results.push({ item, originalIndex: i, score: match.score, positions: match.positions });
15
12
  }
@@ -17,27 +14,4 @@ export function fuzzyFilter(items, query) {
17
14
  results.sort((a, b) => b.score - a.score);
18
15
  return results;
19
16
  }
20
- function matchFuzzy(text, query) {
21
- const positions = [];
22
- let score = 0;
23
- let qi = 0;
24
- for (let ti = 0; ti < text.length && qi < query.length; ti++) {
25
- if (text[ti] === query[qi]) {
26
- positions.push(ti);
27
- if (ti === 0) {
28
- score += 3;
29
- }
30
- else if (WORD_BOUNDARY_CHARS.has(text[ti - 1])) {
31
- score += 2;
32
- }
33
- else if (positions.length > 1 && positions[positions.length - 2] === ti - 1) {
34
- score += 1;
35
- }
36
- qi++;
37
- }
38
- }
39
- if (qi < query.length)
40
- return null;
41
- return { score, positions };
42
- }
43
17
  //# sourceMappingURL=fuzzy.js.map
package/dist/fuzzy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AASA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAE9D,MAAM,UAAU,WAAW,CAAC,KAAmB,EAAE,KAAa;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACtC,MAAM,OAAO,GAAiB,EAAE,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IACzC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC7C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,EAAE,GAAG,CAAC,CAAA;IAEV,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAElB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACb,KAAK,IAAI,CAAC,CAAA;YACZ,CAAC;iBAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,KAAK,IAAI,CAAC,CAAA;YACZ,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9E,KAAK,IAAI,CAAC,CAAA;YACZ,CAAC;YAED,EAAE,EAAE,CAAA;QACN,CAAC;IACH,CAAC;IAED,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAUlD,MAAM,UAAU,WAAW,CAAC,KAAmB,EAAE,KAAa;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,OAAO,GAAiB,EAAE,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IACzC,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { Choose } from "./Choose.js";
2
+ export { ChooseOverlay } from "./ChooseOverlay.js";
3
+ export type { ChooseOverlayProps } from "./ChooseOverlay.js";
2
4
  export { launch } from "./launch.js";
3
5
  export type { ChooseLaunchOptions } from "./launch.js";
4
6
  export { createStdinChooseProvider, createStaticProvider } from "./default-provider.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Choose } from "./Choose.js";
2
+ export { ChooseOverlay } from "./ChooseOverlay.js";
2
3
  export { launch } from "./launch.js";
3
4
  export { createStdinChooseProvider, createStaticProvider } from "./default-provider.js";
4
5
  export { fuzzyFilter } from "./fuzzy.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEpF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0CpF"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEpF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAyCpF"}
package/dist/launch.js CHANGED
@@ -26,7 +26,6 @@ export async function launch(opts) {
26
26
  resolve(result);
27
27
  };
28
28
  createCliRenderer({
29
- useAlternateScreen: true,
30
29
  exitOnCtrlC: false,
31
30
  ...(ttyStdin ? { stdin: ttyStdin } : {}),
32
31
  }).then((r) => {
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAyB;IACpD,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACzC,IAAI,QAAoC,CAAA;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACvC,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;QAClD,IAAI,QAAQ,GAAyD,IAAI,CAAA;QAEzE,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,EAAE;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,iBAAiB,CAAC;YAChB,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAwC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,QAAQ,GAAG,CAAC,CAAA;YACZ,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAClB,KAAC,aAAa,IAAC,WAAW,EAAC,QAAQ,YACjC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAC7B,GACY,CACjB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAyB;IACpD,oEAAoE;IACpE,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACzC,IAAI,QAAoC,CAAA;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACvC,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;QAClD,IAAI,QAAQ,GAAyD,IAAI,CAAA;QAEzE,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,EAAE;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,iBAAiB,CAAC;YAChB,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAwC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,QAAQ,GAAG,CAAC,CAAA;YACZ,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAClB,KAAC,aAAa,IAAC,WAAW,EAAC,QAAQ,YACjC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAC7B,GACY,CACjB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,18 @@
1
1
  {
2
2
  "name": "@tooee/choose",
3
- "version": "0.1.11",
3
+ "version": "0.1.14",
4
4
  "description": "Terminal selection with fuzzy filtering",
5
+ "keywords": [
6
+ "cli",
7
+ "fuzzy",
8
+ "opentui",
9
+ "picker",
10
+ "select",
11
+ "terminal",
12
+ "tui"
13
+ ],
14
+ "homepage": "https://github.com/gingerhendrix/tooee",
15
+ "bugs": "https://github.com/gingerhendrix/tooee/issues",
5
16
  "license": "MIT",
6
17
  "author": "Gareth Andrew",
7
18
  "repository": {
@@ -9,16 +20,9 @@
9
20
  "url": "https://github.com/gingerhendrix/tooee.git",
10
21
  "directory": "packages/choose"
11
22
  },
12
- "homepage": "https://github.com/gingerhendrix/tooee",
13
- "bugs": "https://github.com/gingerhendrix/tooee/issues",
14
- "keywords": [
15
- "tui",
16
- "terminal",
17
- "cli",
18
- "opentui",
19
- "fuzzy",
20
- "select",
21
- "picker"
23
+ "files": [
24
+ "dist",
25
+ "src"
22
26
  ],
23
27
  "type": "module",
24
28
  "exports": {
@@ -29,18 +33,15 @@
29
33
  }
30
34
  }
31
35
  },
32
- "files": [
33
- "dist",
34
- "src"
35
- ],
36
36
  "scripts": {
37
37
  "typecheck": "tsc --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@tooee/commands": "0.1.11",
41
- "@tooee/layout": "0.1.11",
42
- "@tooee/themes": "0.1.11",
43
- "@tooee/shell": "0.1.11"
40
+ "@tooee/commands": "0.1.14",
41
+ "@tooee/fuzzy": "0.1.14",
42
+ "@tooee/layout": "0.1.14",
43
+ "@tooee/shell": "0.1.14",
44
+ "@tooee/themes": "0.1.14"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@opentui/core": "^0.1.86",
package/src/Choose.tsx CHANGED
@@ -4,7 +4,14 @@ import { useKeyboard } from "@opentui/react"
4
4
  import { AppLayout } from "@tooee/layout"
5
5
  import { ThemePicker, useTheme } from "@tooee/themes"
6
6
  import { useThemeCommands, useQuitCommand } from "@tooee/shell"
7
- import { useMode, useSetMode, useCommand, useActions, useProvideCommandContext, useCommandContext } from "@tooee/commands"
7
+ import {
8
+ useMode,
9
+ useSetMode,
10
+ useCommand,
11
+ useActions,
12
+ useProvideCommandContext,
13
+ useCommandContext,
14
+ } from "@tooee/commands"
8
15
  import type { ActionDefinition } from "@tooee/commands"
9
16
  import type { ChooseItem, ChooseContentProvider, ChooseOptions, ChooseResult } from "./types.js"
10
17
  import { fuzzyFilter, type FuzzyMatch } from "./fuzzy.js"
@@ -45,10 +52,7 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
45
52
  }, [contentProvider])
46
53
 
47
54
  // Derived state: filtered items computed from items + filterQuery (no extra render cycle)
48
- const filteredItems = useMemo(
49
- () => fuzzyFilter(items, filterQuery),
50
- [items, filterQuery],
51
- )
55
+ const filteredItems = useMemo(() => fuzzyFilter(items, filterQuery), [items, filterQuery])
52
56
 
53
57
  // Reset activeIndex when filter changes (render-time state adjustment)
54
58
  const [prevFilterQuery, setPrevFilterQuery] = useState("")
@@ -170,7 +174,17 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
170
174
  onCancel?.()
171
175
  }
172
176
  }
173
- }, [multi, selectedIndices, items, filteredItems, activeIndex, onConfirm, onCancel, actions, invoke])
177
+ }, [
178
+ multi,
179
+ selectedIndices,
180
+ items,
181
+ filteredItems,
182
+ activeIndex,
183
+ onConfirm,
184
+ onCancel,
185
+ actions,
186
+ invoke,
187
+ ])
174
188
 
175
189
  useKeyboard((key) => {
176
190
  if (key.name === "escape") {
@@ -213,7 +227,7 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
213
227
  useEffect(() => {
214
228
  if (scrollRef.current && filteredItems.length > 0) {
215
229
  // +1 accounts for the filter input row at the top of scroll content
216
- scrollRef.current.scrollTop = Math.max(0, (activeIndex + 1) - 5)
230
+ scrollRef.current.scrollTop = Math.max(0, activeIndex + 1 - 5)
217
231
  }
218
232
  }, [activeIndex, filteredItems.length])
219
233
 
@@ -235,7 +249,11 @@ export function Choose({ contentProvider, options, actions, onConfirm, onCancel
235
249
 
236
250
  return (
237
251
  <AppLayout
238
- titleBar={(options?.title ?? options?.prompt) ? { title: (options.title ?? options.prompt)! } : undefined}
252
+ titleBar={
253
+ (options?.title ?? options?.prompt)
254
+ ? { title: (options.title ?? options.prompt)! }
255
+ : undefined
256
+ }
239
257
  statusBar={{
240
258
  items: [
241
259
  { label: "Matches:", value: `${filteredItems.length}/${items.length}` },
@@ -0,0 +1,245 @@
1
+ import { useState, useEffect, useRef, useCallback, useMemo } from "react"
2
+ import type { ScrollBoxRenderable } from "@opentui/core"
3
+ import { useKeyboard } from "@opentui/react"
4
+ import { useTheme } from "@tooee/themes"
5
+ import { useMode, useSetMode } from "@tooee/commands"
6
+ import type { ChooseItem } from "./types.js"
7
+ import { fuzzyFilter, type FuzzyMatch } from "./fuzzy.js"
8
+
9
+ export interface ChooseOverlayProps {
10
+ items: ChooseItem[] | (() => Promise<ChooseItem[]>)
11
+ prompt?: string
12
+ placeholder?: string
13
+ emptyMessage?: string
14
+ onSelect: (item: ChooseItem) => void | Promise<void>
15
+ onCancel: () => void
16
+ }
17
+
18
+ export function ChooseOverlay({
19
+ items: itemsOrLoader,
20
+ prompt,
21
+ placeholder,
22
+ emptyMessage,
23
+ onSelect,
24
+ onCancel,
25
+ }: ChooseOverlayProps) {
26
+ const { theme } = useTheme()
27
+ const mode = useMode()
28
+ const setMode = useSetMode()
29
+
30
+ const [items, setItems] = useState<ChooseItem[]>(
31
+ Array.isArray(itemsOrLoader) ? itemsOrLoader : [],
32
+ )
33
+ const [loading, setLoading] = useState(!Array.isArray(itemsOrLoader))
34
+ const [filterQuery, setFilterQuery] = useState("")
35
+ const [activeIndex, setActiveIndex] = useState(0)
36
+ const scrollRef = useRef<ScrollBoxRenderable>(null)
37
+
38
+ // Load items if async loader provided
39
+ useEffect(() => {
40
+ if (typeof itemsOrLoader === "function") {
41
+ itemsOrLoader().then((loaded) => {
42
+ setItems(loaded)
43
+ setLoading(false)
44
+ })
45
+ }
46
+ }, [itemsOrLoader])
47
+
48
+ // Filtered items via fuzzy matching
49
+ const filteredItems = useMemo(() => fuzzyFilter(items, filterQuery), [items, filterQuery])
50
+
51
+ // Reset activeIndex when filter changes
52
+ const [prevFilterQuery, setPrevFilterQuery] = useState("")
53
+ if (filterQuery !== prevFilterQuery) {
54
+ setPrevFilterQuery(filterQuery)
55
+ setActiveIndex(0)
56
+ }
57
+
58
+ const moveUp = useCallback(() => {
59
+ setActiveIndex((i) => Math.max(0, i - 1))
60
+ }, [])
61
+
62
+ const moveDown = useCallback(() => {
63
+ setActiveIndex((i) => Math.min(filteredItems.length - 1, i + 1))
64
+ }, [filteredItems.length])
65
+
66
+ const confirm = useCallback(() => {
67
+ const match = filteredItems[activeIndex]
68
+ if (match) {
69
+ onSelect(match.item)
70
+ }
71
+ }, [filteredItems, activeIndex, onSelect])
72
+
73
+ useKeyboard((key) => {
74
+ if (key.name === "escape") {
75
+ key.preventDefault()
76
+ if (mode === "insert") {
77
+ setMode("cursor")
78
+ } else {
79
+ onCancel()
80
+ }
81
+ return
82
+ }
83
+
84
+ if (mode === "cursor") {
85
+ if (key.raw === "i" || key.raw === "a") {
86
+ key.preventDefault()
87
+ setMode("insert")
88
+ return
89
+ }
90
+ if (key.raw === "j") {
91
+ key.preventDefault()
92
+ moveDown()
93
+ return
94
+ }
95
+ if (key.raw === "k") {
96
+ key.preventDefault()
97
+ moveUp()
98
+ return
99
+ }
100
+ }
101
+
102
+ if (key.name === "return") {
103
+ key.preventDefault()
104
+ confirm()
105
+ return
106
+ }
107
+
108
+ if (key.name === "up" || (key.ctrl && key.name === "p")) {
109
+ key.preventDefault()
110
+ moveUp()
111
+ return
112
+ }
113
+ if (key.name === "down" || (key.ctrl && key.name === "n")) {
114
+ key.preventDefault()
115
+ moveDown()
116
+ return
117
+ }
118
+ })
119
+
120
+ // Auto-scroll to keep active item visible
121
+ useEffect(() => {
122
+ if (scrollRef.current && filteredItems.length > 0) {
123
+ scrollRef.current.scrollTop = Math.max(0, activeIndex - 5)
124
+ }
125
+ }, [activeIndex, filteredItems.length])
126
+
127
+ const hintText =
128
+ mode === "insert" ? "Enter confirm Esc commands" : "j/k navigate i insert Esc cancel"
129
+
130
+ return (
131
+ <box
132
+ position="absolute"
133
+ left="20%"
134
+ right="20%"
135
+ top="20%"
136
+ bottom="20%"
137
+ flexDirection="column"
138
+ backgroundColor={theme.backgroundPanel}
139
+ border
140
+ borderColor={theme.borderActive}
141
+ >
142
+ {/* Title bar */}
143
+ {prompt && (
144
+ <box height={1} paddingLeft={1} paddingRight={1} backgroundColor={theme.backgroundElement}>
145
+ <text content={prompt} fg={theme.accent} />
146
+ </box>
147
+ )}
148
+
149
+ {/* Filter input row */}
150
+ <box flexDirection="row" height={1} style={{ paddingLeft: 1, paddingRight: 1 }}>
151
+ <text content="> " fg={theme.accent} />
152
+ <input
153
+ focused={mode === "insert"}
154
+ placeholder={placeholder ?? "Filter..."}
155
+ onInput={setFilterQuery}
156
+ backgroundColor="transparent"
157
+ textColor={theme.text}
158
+ placeholderColor={theme.textMuted}
159
+ cursorColor={theme.primary}
160
+ style={{ flexGrow: 1 }}
161
+ />
162
+ <text content={` ${filteredItems.length}/${items.length}`} fg={theme.textMuted} />
163
+ </box>
164
+
165
+ {/* Scrollable item list */}
166
+ <scrollbox ref={scrollRef} flexDirection="column" style={{ flexGrow: 1 }} focused={false}>
167
+ {loading && (
168
+ <box height={1} style={{ paddingLeft: 2 }}>
169
+ <text content="Loading..." fg={theme.textMuted} />
170
+ </box>
171
+ )}
172
+
173
+ {!loading && filteredItems.length === 0 && emptyMessage && (
174
+ <box height={1} style={{ paddingLeft: 2 }}>
175
+ <text content={emptyMessage} fg={theme.textMuted} />
176
+ </box>
177
+ )}
178
+
179
+ {filteredItems.map((match, idx) => {
180
+ const isActive = idx === activeIndex
181
+ return (
182
+ <box
183
+ key={match.originalIndex}
184
+ flexDirection="row"
185
+ height={1}
186
+ backgroundColor={isActive ? theme.backgroundElement : undefined}
187
+ style={{ paddingLeft: 1 }}
188
+ >
189
+ {match.item.icon && <text content={`${match.item.icon} `} fg={theme.textMuted} />}
190
+ <text fg={isActive ? theme.primary : theme.text}>
191
+ {renderHighlightedText(match.item.text, match.positions, theme.warning)}
192
+ </text>
193
+ {match.item.description && (
194
+ <text content={` ${match.item.description}`} fg={theme.textMuted} />
195
+ )}
196
+ </box>
197
+ )
198
+ })}
199
+ </scrollbox>
200
+
201
+ {/* Hint line */}
202
+ <box height={1} paddingLeft={1} paddingRight={1} backgroundColor={theme.backgroundElement}>
203
+ <text content={hintText} fg={theme.textMuted} />
204
+ </box>
205
+ </box>
206
+ )
207
+ }
208
+
209
+ function renderHighlightedText(text: string, positions: number[], highlightColor: string) {
210
+ if (positions.length === 0) {
211
+ return text
212
+ }
213
+
214
+ const posSet = new Set(positions)
215
+ const parts: Array<{ text: string; highlight: boolean }> = []
216
+ let current = ""
217
+ let currentHighlight = false
218
+
219
+ for (let i = 0; i < text.length; i++) {
220
+ const isHighlight = posSet.has(i)
221
+ if (i === 0) {
222
+ currentHighlight = isHighlight
223
+ current = text[i]
224
+ } else if (isHighlight === currentHighlight) {
225
+ current += text[i]
226
+ } else {
227
+ parts.push({ text: current, highlight: currentHighlight })
228
+ current = text[i]
229
+ currentHighlight = isHighlight
230
+ }
231
+ }
232
+ if (current) {
233
+ parts.push({ text: current, highlight: currentHighlight })
234
+ }
235
+
236
+ return parts.map((part, i) =>
237
+ part.highlight ? (
238
+ <span key={i} fg={highlightColor}>
239
+ {part.text}
240
+ </span>
241
+ ) : (
242
+ part.text
243
+ ),
244
+ )
245
+ }
package/src/fuzzy.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { fuzzyMatchPositions } from "@tooee/fuzzy"
1
2
  import type { ChooseItem } from "./types.js"
2
3
 
3
4
  export interface FuzzyMatch {
@@ -7,21 +8,16 @@ export interface FuzzyMatch {
7
8
  positions: number[]
8
9
  }
9
10
 
10
- const WORD_BOUNDARY_CHARS = new Set([" ", "-", "_", ".", "/"])
11
-
12
11
  export function fuzzyFilter(items: ChooseItem[], query: string): FuzzyMatch[] {
13
12
  if (!query) {
14
13
  return items.map((item, i) => ({ item, originalIndex: i, score: 0, positions: [] }))
15
14
  }
16
15
 
17
- const lowerQuery = query.toLowerCase()
18
16
  const results: FuzzyMatch[] = []
19
17
 
20
18
  for (let i = 0; i < items.length; i++) {
21
19
  const item = items[i]
22
- const text = item.text
23
- const lowerText = text.toLowerCase()
24
- const match = matchFuzzy(lowerText, lowerQuery)
20
+ const match = fuzzyMatchPositions(query, item.text)
25
21
  if (match) {
26
22
  results.push({ item, originalIndex: i, score: match.score, positions: match.positions })
27
23
  }
@@ -30,28 +26,3 @@ export function fuzzyFilter(items: ChooseItem[], query: string): FuzzyMatch[] {
30
26
  results.sort((a, b) => b.score - a.score)
31
27
  return results
32
28
  }
33
-
34
- function matchFuzzy(text: string, query: string): { score: number; positions: number[] } | null {
35
- const positions: number[] = []
36
- let score = 0
37
- let qi = 0
38
-
39
- for (let ti = 0; ti < text.length && qi < query.length; ti++) {
40
- if (text[ti] === query[qi]) {
41
- positions.push(ti)
42
-
43
- if (ti === 0) {
44
- score += 3
45
- } else if (WORD_BOUNDARY_CHARS.has(text[ti - 1])) {
46
- score += 2
47
- } else if (positions.length > 1 && positions[positions.length - 2] === ti - 1) {
48
- score += 1
49
- }
50
-
51
- qi++
52
- }
53
- }
54
-
55
- if (qi < query.length) return null
56
- return { score, positions }
57
- }
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { Choose } from "./Choose.js"
2
+ export { ChooseOverlay } from "./ChooseOverlay.js"
3
+ export type { ChooseOverlayProps } from "./ChooseOverlay.js"
2
4
  export { launch } from "./launch.js"
3
5
  export type { ChooseLaunchOptions } from "./launch.js"
4
6
  export { createStdinChooseProvider, createStaticProvider } from "./default-provider.js"
package/src/launch.tsx CHANGED
@@ -37,7 +37,6 @@ export async function launch(opts: ChooseLaunchOptions): Promise<ChooseResult |
37
37
  }
38
38
 
39
39
  createCliRenderer({
40
- useAlternateScreen: true,
41
40
  exitOnCtrlC: false,
42
41
  ...(ttyStdin ? { stdin: ttyStdin as unknown as NodeJS.ReadStream } : {}),
43
42
  }).then((r) => {