@tooee/choose 0.8.0 → 0.9.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 (53) hide show
  1. package/dist/choose-filter.d.ts +2 -11
  2. package/dist/choose-filter.d.ts.map +1 -1
  3. package/dist/choose-filter.js +1 -19
  4. package/dist/choose-filter.js.map +1 -1
  5. package/dist/choose-highlighted-text.d.ts +2 -8
  6. package/dist/choose-highlighted-text.d.ts.map +1 -1
  7. package/dist/choose-highlighted-text.js +1 -31
  8. package/dist/choose-highlighted-text.js.map +1 -1
  9. package/dist/choose-list.d.ts +2 -27
  10. package/dist/choose-list.d.ts.map +1 -1
  11. package/dist/choose-list.js +1 -65
  12. package/dist/choose-list.js.map +1 -1
  13. package/dist/choose-store.d.ts +2 -56
  14. package/dist/choose-store.d.ts.map +1 -1
  15. package/dist/choose-store.js +1 -101
  16. package/dist/choose-store.js.map +1 -1
  17. package/dist/choose.d.ts +1 -5
  18. package/dist/choose.d.ts.map +1 -1
  19. package/dist/choose.js +3 -19
  20. package/dist/choose.js.map +1 -1
  21. package/dist/choose.public-contract.typecheck.d.ts +11 -0
  22. package/dist/choose.public-contract.typecheck.d.ts.map +1 -0
  23. package/dist/choose.public-contract.typecheck.js +2 -0
  24. package/dist/choose.public-contract.typecheck.js.map +1 -0
  25. package/dist/fuzzy.d.ts +2 -8
  26. package/dist/fuzzy.d.ts.map +1 -1
  27. package/dist/fuzzy.js +1 -4
  28. package/dist/fuzzy.js.map +1 -1
  29. package/dist/launch.d.ts.map +1 -1
  30. package/dist/launch.js +1 -0
  31. package/dist/launch.js.map +1 -1
  32. package/dist/source.d.ts +1 -4
  33. package/dist/source.d.ts.map +1 -1
  34. package/dist/source.js +1 -25
  35. package/dist/source.js.map +1 -1
  36. package/dist/types.d.ts +1 -21
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/use-choose.d.ts +2 -79
  39. package/dist/use-choose.d.ts.map +1 -1
  40. package/dist/use-choose.js +1 -374
  41. package/dist/use-choose.js.map +1 -1
  42. package/package.json +7 -9
  43. package/src/choose-filter.tsx +2 -55
  44. package/src/choose-highlighted-text.tsx +2 -49
  45. package/src/choose-list.tsx +2 -156
  46. package/src/choose-store.ts +12 -146
  47. package/src/choose.public-contract.typecheck.ts +12 -0
  48. package/src/choose.tsx +15 -35
  49. package/src/fuzzy.ts +2 -13
  50. package/src/launch.tsx +1 -0
  51. package/src/source.ts +1 -36
  52. package/src/types.ts +7 -28
  53. package/src/use-choose.ts +9 -521
@@ -1,12 +1,3 @@
1
- import type { ReactNode } from "react";
2
- import type { UseChooseResult } from "./use-choose.js";
3
- export interface ChooseFilterProps {
4
- choose: UseChooseResult;
5
- prompt?: ReactNode;
6
- placeholder?: string;
7
- right?: ReactNode;
8
- onClose?: () => void;
9
- }
10
- /** Controlled filter row shared by fullscreen and overlay chooser assemblies. */
11
- export declare const ChooseFilter: ({ choose, prompt, placeholder, right, onClose, }: ChooseFilterProps) => ReactNode;
1
+ export { ChooseFilter } from "@tooee/renderers";
2
+ export type { ChooseFilterProps } from "@tooee/renderers";
12
3
  //# sourceMappingURL=choose-filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-filter.d.ts","sourceRoot":"","sources":["../src/choose-filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,iFAAiF;AACjF,eAAO,MAAM,YAAY,qDAMtB,iBAAiB,KAAG,SAkCtB,CAAC"}
1
+ {"version":3,"file":"choose-filter.d.ts","sourceRoot":"","sources":["../src/choose-filter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,20 +1,2 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { CloseButton, decodeReactContent } from "@tooee/layout";
3
- import { useTheme } from "@tooee/themes";
4
- /** Controlled filter row shared by fullscreen and overlay chooser assemblies. */
5
- export const ChooseFilter = function ChooseFilter({ choose, prompt = "> ", placeholder = "Filter...", right, onClose, }) {
6
- const { theme } = useTheme();
7
- const { state, view } = choose;
8
- const handleFilterInput = view.onFilterInput;
9
- const handleFilterKeyDown = view.onFilterKeyDown;
10
- const promptContent = decodeReactContent(prompt);
11
- let renderedPrompt = null;
12
- if (promptContent.kind === "string") {
13
- renderedPrompt = _jsx("text", { content: promptContent.value, fg: theme.accent });
14
- }
15
- else if (promptContent.kind === "node") {
16
- renderedPrompt = promptContent.value;
17
- }
18
- return (_jsxs("box", { flexDirection: "row", height: 1, style: { paddingLeft: 1, paddingRight: 1 }, children: [renderedPrompt, _jsx("input", { ref: view.filterRef, focused: view.filterFocused, value: state.filterQuery, placeholder: placeholder, onInput: handleFilterInput, onKeyDown: handleFilterKeyDown, backgroundColor: "transparent", textColor: theme.text, placeholderColor: theme.textMuted, cursorColor: theme.primary, style: { flexGrow: 1 } }), _jsx("text", { content: ` ${state.matches.length}/${state.items.length}`, fg: theme.textMuted }), right, onClose && _jsx(CloseButton, { onClose: onClose })] }));
19
- };
1
+ export { ChooseFilter } from "@tooee/renderers";
20
2
  //# sourceMappingURL=choose-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-filter.js","sourceRoot":"","sources":["../src/choose-filter.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAWzC,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,YAAY,CAAC,EAChD,MAAM,EACN,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,WAAW,EACzB,KAAK,EACL,OAAO,GACW;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;IAC7C,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC;IACjD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,cAAc,GAAc,IAAI,CAAC;IACrC,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,cAAc,GAAG,eAAM,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,GAAI,CAAC;IAC5E,CAAC;SAAM,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzC,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC;IACvC,CAAC;IAED,OAAO,CACL,eAAK,aAAa,EAAC,KAAK,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAC3E,cAAc,EACf,gBACE,GAAG,EAAE,IAAI,CAAC,SAAS,EACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE,KAAK,CAAC,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,eAAe,EAAC,aAAa,EAC7B,SAAS,EAAE,KAAK,CAAC,IAAI,EACrB,gBAAgB,EAAE,KAAK,CAAC,SAAS,EACjC,WAAW,EAAE,KAAK,CAAC,OAAO,EAC1B,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GACtB,EACF,eAAM,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,GAAI,EACvF,KAAK,EACL,OAAO,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,IACzC,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"choose-filter.js","sourceRoot":"","sources":["../src/choose-filter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,9 +1,3 @@
1
- import type { ReactNode } from "react";
2
- export interface ChooseHighlightedTextProps {
3
- text: string;
4
- positions: number[];
5
- highlightColor: string;
6
- }
7
- /** Render fuzzy-match characters with one shared segmentation implementation. */
8
- export declare const ChooseHighlightedText: ({ text, positions, highlightColor, }: ChooseHighlightedTextProps) => ReactNode;
1
+ export { ChooseHighlightedText } from "@tooee/renderers";
2
+ export type { ChooseHighlightedTextProps } from "@tooee/renderers";
9
3
  //# sourceMappingURL=choose-highlighted-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-highlighted-text.d.ts","sourceRoot":"","sources":["../src/choose-highlighted-text.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,yCAI/B,0BAA0B,KAAG,SAkC/B,CAAC"}
1
+ {"version":3,"file":"choose-highlighted-text.d.ts","sourceRoot":"","sources":["../src/choose-highlighted-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,32 +1,2 @@
1
- import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
- import { Fragment } from "react";
3
- /** Render fuzzy-match characters with one shared segmentation implementation. */
4
- export const ChooseHighlightedText = function ChooseHighlightedText({ text, positions, highlightColor, }) {
5
- if (positions.length === 0) {
6
- return text;
7
- }
8
- const positionSet = new Set(positions);
9
- const parts = [];
10
- let current = "";
11
- let currentHighlighted = false;
12
- for (let index = 0; index < text.length; index += 1) {
13
- const highlighted = positionSet.has(index);
14
- if (index === 0) {
15
- current = text[index];
16
- currentHighlighted = highlighted;
17
- }
18
- else if (highlighted === currentHighlighted) {
19
- current += text[index];
20
- }
21
- else {
22
- parts.push({ highlighted: currentHighlighted, text: current });
23
- current = text[index];
24
- currentHighlighted = highlighted;
25
- }
26
- }
27
- if (current) {
28
- parts.push({ highlighted: currentHighlighted, text: current });
29
- }
30
- return parts.map((part, index) => (_jsx(Fragment, { children: part.highlighted ? _jsx("span", { fg: highlightColor, children: part.text }) : part.text }, index)));
31
- };
1
+ export { ChooseHighlightedText } from "@tooee/renderers";
32
2
  //# sourceMappingURL=choose-highlighted-text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-highlighted-text.js","sourceRoot":"","sources":["../src/choose-highlighted-text.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjC,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,EAClE,IAAI,EACJ,SAAS,EACT,cAAc,GACa;IAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,kBAAkB,GAAG,WAAW,CAAC;QACnC,CAAC;aAAM,IAAI,WAAW,KAAK,kBAAkB,EAAE,CAAC;YAC9C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,kBAAkB,GAAG,WAAW,CAAC;QACnC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CACd,CAAC,IAAI,EAAE,KAAK,EAAa,EAAE,CAAC,CAC1B,KAAC,QAAQ,cACN,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAM,EAAE,EAAE,cAAc,YAAG,IAAI,CAAC,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAD/D,KAAK,CAET,CACZ,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"choose-highlighted-text.js","sourceRoot":"","sources":["../src/choose-highlighted-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,28 +1,3 @@
1
- import type { ReactNode } from "react";
2
- import type { FuzzyMatch } from "./fuzzy.js";
3
- import type { ChooseItem } from "./types.js";
4
- import type { UseChooseResult } from "./use-choose.js";
5
- export interface ChooseItemRenderContext {
6
- item: ChooseItem;
7
- match: FuzzyMatch;
8
- index: number;
9
- originalIndex: number;
10
- positions: number[];
11
- isActive: boolean;
12
- isSelected: boolean;
13
- defaultContent: ReactNode;
14
- }
15
- export interface ChooseListProps {
16
- choose: UseChooseResult;
17
- /** Fullscreen defaults to activate; picker overlays default to submit. */
18
- rowClick?: "activate" | "submit" | "none";
19
- renderItem?: (context: ChooseItemRenderContext) => ReactNode;
20
- loadingContent?: ReactNode;
21
- errorContent?: (error: string) => ReactNode;
22
- emptyContent?: ReactNode;
23
- /** Mouse guard for visible rows covered by another surface. */
24
- suspended?: boolean;
25
- }
26
- /** Scrollable chooser rows plus loading/error/empty presentation. */
27
- export declare const ChooseList: ({ choose, rowClick, renderItem, loadingContent, errorContent, emptyContent, suspended, }: ChooseListProps) => ReactNode;
1
+ export { ChooseList } from "@tooee/renderers";
2
+ export type { ChooseItemRenderContext, ChooseListProps } from "@tooee/renderers";
28
3
  //# sourceMappingURL=choose-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-list.d.ts","sourceRoot":"","sources":["../src/choose-list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC7D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA2BD,qEAAqE;AACrE,eAAO,MAAM,UAAU,6FAQpB,eAAe,KAAG,SAwFpB,CAAC"}
1
+ {"version":3,"file":"choose-list.d.ts","sourceRoot":"","sources":["../src/choose-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,66 +1,2 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- import { decodeReactContent } from "@tooee/layout";
4
- import { useTheme } from "@tooee/themes";
5
- import { ChooseHighlightedText } from "./choose-highlighted-text.js";
6
- const ThemedLine = function ThemedLine({ content, color, }) {
7
- const decoded = decodeReactContent(content);
8
- let rendered = null;
9
- if (decoded.kind === "string") {
10
- rendered = _jsx("text", { content: decoded.value, fg: color });
11
- }
12
- else if (decoded.kind === "node") {
13
- rendered = decoded.value;
14
- }
15
- return (_jsx("box", { height: 1, style: { paddingLeft: 2 }, children: rendered }));
16
- };
17
- const defaultErrorContent = function defaultErrorContent(error) {
18
- return `Error: ${error}`;
19
- };
20
- /** Scrollable chooser rows plus loading/error/empty presentation. */
21
- export const ChooseList = function ChooseList({ choose, rowClick = "activate", renderItem, loadingContent = "Loading...", errorContent = defaultErrorContent, emptyContent, suspended, }) {
22
- const { theme } = useTheme();
23
- const scrollRef = useRef(null);
24
- const { state, controller } = choose;
25
- const interactionSuspended = choose.view.suspended || (suspended ?? false);
26
- useEffect(() => {
27
- const activeMatch = state.matches[state.activeIndex];
28
- if (scrollRef.current && activeMatch !== undefined) {
29
- scrollRef.current.scrollChildIntoView(`choose-item-${activeMatch.originalIndex}`);
30
- }
31
- }, [state.activeIndex, state.matches]);
32
- return (_jsxs("scrollbox", { ref: scrollRef, style: { flexGrow: 1 }, focused: false, children: [state.loading && _jsx(ThemedLine, { content: loadingContent, color: theme.textMuted }), !state.loading && state.error !== null && state.error !== "" && (_jsx(ThemedLine, { content: errorContent(state.error), color: theme.error })), !state.loading &&
33
- (state.error?.length ?? 0) === 0 &&
34
- state.matches.length === 0 &&
35
- emptyContent !== null &&
36
- emptyContent !== undefined && _jsx(ThemedLine, { content: emptyContent, color: theme.textMuted }), state.matches.map((match, index) => {
37
- const isActive = index === state.activeIndex;
38
- const isSelected = state.selectedOriginalIndices.has(match.originalIndex);
39
- const defaultContent = (_jsxs("text", { fg: isActive ? theme.primary : theme.text, style: { flexGrow: 1 }, children: [state.multi && (_jsx("span", { fg: isSelected ? theme.accent : theme.textMuted, children: isSelected ? "✓ " : " " })), (match.item.icon?.length ?? 0) > 0 && (_jsx("span", { fg: theme.textMuted, children: `${match.item.icon} ` })), _jsx(ChooseHighlightedText, { text: match.item.text, positions: match.positions, highlightColor: theme.warning }), (match.item.description?.length ?? 0) > 0 && (_jsx("span", { fg: theme.textMuted, children: ` ${match.item.description}` }))] }));
40
- const context = {
41
- defaultContent,
42
- index,
43
- isActive,
44
- isSelected,
45
- item: match.item,
46
- match,
47
- originalIndex: match.originalIndex,
48
- positions: match.positions,
49
- };
50
- return (_jsx("box", { id: `choose-item-${match.originalIndex}`, flexDirection: "row", backgroundColor: isActive ? theme.backgroundElement : undefined, style: { paddingLeft: 1, paddingRight: 1 }, onMouseDown: (event) => {
51
- if (interactionSuspended || event.button !== 0 || rowClick === "none") {
52
- return;
53
- }
54
- if (rowClick === "submit") {
55
- event.preventDefault();
56
- event.stopPropagation();
57
- controller.setActiveIndex(index);
58
- controller.submit();
59
- }
60
- else {
61
- controller.setActiveIndex(index);
62
- }
63
- }, children: renderItem ? renderItem(context) : defaultContent }, match.originalIndex));
64
- })] }));
65
- };
1
+ export { ChooseList } from "@tooee/renderers";
66
2
  //# sourceMappingURL=choose-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-list.js","sourceRoot":"","sources":["../src/choose-list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"choose-list.js","sourceRoot":"","sources":["../src/choose-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,57 +1,3 @@
1
- import type { FuzzyMatch } from "./fuzzy.js";
2
- import type { ChooseItem } from "./types.js";
3
- export interface ChooseStoreContext {
4
- items: ChooseItem[];
5
- matches: FuzzyMatch[];
6
- filterQuery: string;
7
- activeIndex: number;
8
- selectedOriginalIndices: ReadonlySet<number>;
9
- loading: boolean;
10
- error: string | null;
11
- requestId: number;
12
- reloadRevision: number;
13
- }
14
- interface ChooseStoreEventDefinitions {
15
- filterChanged: {
16
- query: string;
17
- };
18
- activeIndexSet: {
19
- index: number;
20
- };
21
- moved: {
22
- delta: number;
23
- };
24
- activeToggled: Record<never, never>;
25
- requestStarted: Record<never, never>;
26
- loadingStarted: {
27
- requestId: number;
28
- };
29
- loadSucceeded: {
30
- requestId: number;
31
- items: ChooseItem[];
32
- };
33
- loadFailed: {
34
- requestId: number;
35
- error: string;
36
- };
37
- reloadRequested: Record<never, never>;
38
- }
39
- export type ChooseStoreEvents = {
40
- [EventName in keyof ChooseStoreEventDefinitions]: ChooseStoreEventDefinitions[EventName];
41
- };
42
- export declare const createChooseStore: (options: {
43
- items?: ChooseItem[];
44
- initialFilter?: string;
45
- loading?: boolean;
46
- }) => import("@xstate/store").Store<ChooseStoreContext, ChooseStoreEvents, never>;
47
- export type ChooseStore = ReturnType<typeof createChooseStore>;
48
- export declare const selectItems: (ctx: ChooseStoreContext) => ChooseItem[];
49
- export declare const selectMatches: (ctx: ChooseStoreContext) => FuzzyMatch[];
50
- export declare const selectFilterQuery: (ctx: ChooseStoreContext) => string;
51
- export declare const selectActiveIndex: (ctx: ChooseStoreContext) => number;
52
- export declare const selectSelectedOriginalIndices: (ctx: ChooseStoreContext) => ReadonlySet<number>;
53
- export declare const selectLoading: (ctx: ChooseStoreContext) => boolean;
54
- export declare const selectError: (ctx: ChooseStoreContext) => string | null;
55
- export declare const selectReloadRevision: (ctx: ChooseStoreContext) => number;
56
- export {};
1
+ export { createChooseStore, selectActiveIndex, selectError, selectFilterQuery, selectItems, selectLoading, selectMatches, selectReloadRevision, selectSelectedOriginalIndices, } from "@tooee/renderers";
2
+ export type { ChooseStore, ChooseStoreContext, ChooseStoreEvents } from "@tooee/renderers";
57
3
  //# sourceMappingURL=choose-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-store.d.ts","sourceRoot":"","sources":["../src/choose-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,2BAA2B;IACnC,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,aAAa,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAC1D,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,iBAAiB,GAAG;KAC7B,SAAS,IAAI,MAAM,2BAA2B,GAAG,2BAA2B,CAAC,SAAS,CAAC;CACzF,CAAC;AAmBF,eAAO,MAAM,iBAAiB,YAAuC;IACnE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,gFA+EA,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,WAAW,QAAS,kBAAkB,KAAG,UAAU,EAAe,CAAC;AAChF,eAAO,MAAM,aAAa,QAAS,kBAAkB,KAAG,UAAU,EAAiB,CAAC;AACpF,eAAO,MAAM,iBAAiB,QAAS,kBAAkB,KAAG,MAAyB,CAAC;AACtF,eAAO,MAAM,iBAAiB,QAAS,kBAAkB,KAAG,MAAyB,CAAC;AACtF,eAAO,MAAM,6BAA6B,QAAS,kBAAkB,KAAG,WAAW,CAAC,MAAM,CAC7D,CAAC;AAC9B,eAAO,MAAM,aAAa,QAAS,kBAAkB,KAAG,OAAsB,CAAC;AAC/E,eAAO,MAAM,WAAW,QAAS,kBAAkB,KAAG,MAAM,GAAG,IAAiB,CAAC;AACjF,eAAO,MAAM,oBAAoB,QAAS,kBAAkB,KAAG,MAA4B,CAAC"}
1
+ {"version":3,"file":"choose-store.d.ts","sourceRoot":"","sources":["../src/choose-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,102 +1,2 @@
1
- import { createStore } from "@xstate/store";
2
- import { fuzzyFilter } from "./fuzzy.js";
3
- const replaceItems = function replaceItems(ctx, items) {
4
- return {
5
- ...ctx,
6
- activeIndex: 0,
7
- items,
8
- matches: fuzzyFilter(items, ctx.filterQuery),
9
- selectedOriginalIndices: new Set(),
10
- };
11
- };
12
- const clampActiveIndex = function clampActiveIndex(index, matchCount) {
13
- return Math.min(Math.max(0, matchCount - 1), Math.max(0, index));
14
- };
15
- export const createChooseStore = function createChooseStore(options) {
16
- const items = options.items ?? [];
17
- const filterQuery = options.initialFilter ?? "";
18
- return createStore({
19
- context: {
20
- activeIndex: 0,
21
- error: null,
22
- filterQuery,
23
- items,
24
- loading: options.loading ?? false,
25
- matches: fuzzyFilter(items, filterQuery),
26
- reloadRevision: 0,
27
- requestId: 0,
28
- selectedOriginalIndices: new Set(),
29
- },
30
- on: {
31
- activeIndexSet: (ctx, event) => {
32
- const activeIndex = clampActiveIndex(event.index, ctx.matches.length);
33
- return activeIndex === ctx.activeIndex ? ctx : { ...ctx, activeIndex };
34
- },
35
- activeToggled: (ctx) => {
36
- const originalIndex = ctx.matches[ctx.activeIndex]?.originalIndex;
37
- if (originalIndex === undefined) {
38
- return ctx;
39
- }
40
- const selectedOriginalIndices = new Set(ctx.selectedOriginalIndices);
41
- if (selectedOriginalIndices.has(originalIndex)) {
42
- selectedOriginalIndices.delete(originalIndex);
43
- }
44
- else {
45
- selectedOriginalIndices.add(originalIndex);
46
- }
47
- return { ...ctx, selectedOriginalIndices };
48
- },
49
- filterChanged: (ctx, event) => {
50
- if (event.query === ctx.filterQuery) {
51
- return ctx;
52
- }
53
- return {
54
- ...ctx,
55
- activeIndex: 0,
56
- filterQuery: event.query,
57
- matches: fuzzyFilter(ctx.items, event.query),
58
- };
59
- },
60
- loadFailed: (ctx, event) => {
61
- if (event.requestId !== ctx.requestId) {
62
- return ctx;
63
- }
64
- return {
65
- ...replaceItems(ctx, []),
66
- error: event.error,
67
- loading: false,
68
- };
69
- },
70
- loadSucceeded: (ctx, event) => {
71
- if (event.requestId !== ctx.requestId) {
72
- return ctx;
73
- }
74
- return {
75
- ...replaceItems(ctx, event.items),
76
- error: null,
77
- loading: false,
78
- };
79
- },
80
- loadingStarted: (ctx, event) => event.requestId === ctx.requestId && !ctx.loading ? { ...ctx, loading: true } : ctx,
81
- moved: (ctx, event) => {
82
- const activeIndex = clampActiveIndex(ctx.activeIndex + event.delta, ctx.matches.length);
83
- return activeIndex === ctx.activeIndex ? ctx : { ...ctx, activeIndex };
84
- },
85
- reloadRequested: (ctx) => ({ ...ctx, reloadRevision: ctx.reloadRevision + 1 }),
86
- requestStarted: (ctx) => ({
87
- ...ctx,
88
- error: null,
89
- requestId: ctx.requestId + 1,
90
- }),
91
- },
92
- });
93
- };
94
- export const selectItems = (ctx) => ctx.items;
95
- export const selectMatches = (ctx) => ctx.matches;
96
- export const selectFilterQuery = (ctx) => ctx.filterQuery;
97
- export const selectActiveIndex = (ctx) => ctx.activeIndex;
98
- export const selectSelectedOriginalIndices = (ctx) => ctx.selectedOriginalIndices;
99
- export const selectLoading = (ctx) => ctx.loading;
100
- export const selectError = (ctx) => ctx.error;
101
- export const selectReloadRevision = (ctx) => ctx.reloadRevision;
1
+ export { createChooseStore, selectActiveIndex, selectError, selectFilterQuery, selectItems, selectLoading, selectMatches, selectReloadRevision, selectSelectedOriginalIndices, } from "@tooee/renderers";
102
2
  //# sourceMappingURL=choose-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose-store.js","sourceRoot":"","sources":["../src/choose-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"choose-store.js","sourceRoot":"","sources":["../src/choose-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC"}
package/dist/choose.d.ts CHANGED
@@ -5,11 +5,7 @@ import type { ChooseContentProvider, ChooseOptions, ChooseResult } from "./types
5
5
  import type { ChooseController } from "./use-choose.js";
6
6
  export interface ChooseProps extends ChooseOptions {
7
7
  contentProvider: ChooseContentProvider;
8
- /** @deprecated Pass chooser options as top-level props. This alias will be removed in 0.9.0. */
9
- options?: ChooseOptions;
10
8
  actions?: ActionDefinition[];
11
- /** @deprecated Use `actions`. This alias will be removed in 0.9.0. */
12
- commands?: ActionDefinition[];
13
9
  controllerRef?: Ref<ChooseController>;
14
10
  renderItem?: ChooseListProps["renderItem"];
15
11
  /**
@@ -24,5 +20,5 @@ export interface ChooseProps extends ChooseOptions {
24
20
  /** Called when the chooser is cancelled (quit, or submit with no selection). */
25
21
  onCancel?: () => void;
26
22
  }
27
- export declare const Choose: (props: ChooseProps) => ReactNode;
23
+ export declare const Choose: ({ contentProvider, actions, controllerRef, emptyMessage, multi, onCancel, onConfirm, placeholder, prompt, renderItem, title, }: ChooseProps) => ReactNode;
28
24
  //# sourceMappingURL=choose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choose.d.ts","sourceRoot":"","sources":["../src/choose.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,eAAe,EAAE,qBAAqB,CAAC;IACvC,gGAAgG;IAChG,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAqBD,eAAO,MAAM,MAAM,UAA0B,WAAW,KAAG,SAoG1D,CAAC"}
1
+ {"version":3,"file":"choose.d.ts","sourceRoot":"","sources":["../src/choose.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,eAAe,EAAE,qBAAqB,CAAC;IACvC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,MAAM,mIAYhB,WAAW,KAAG,SA2FhB,CAAC"}
package/dist/choose.js CHANGED
@@ -9,23 +9,7 @@ import { ChooseFilter } from "./choose-filter.js";
9
9
  import { ChooseList } from "./choose-list.js";
10
10
  import { buildChooseHints } from "./choose-panel.js";
11
11
  import { useChoose } from "./use-choose.js";
12
- const resolveChooseProps = function resolveChooseProps(props) {
13
- // oxlint-disable-next-line typescript/no-deprecated -- compatibility alias remains supported until 0.9.0
14
- const { options } = props;
15
- // oxlint-disable-next-line typescript/no-deprecated -- compatibility alias remains supported until 0.9.0
16
- const { commands } = props;
17
- return {
18
- actions: props.actions ?? commands,
19
- emptyMessage: props.emptyMessage ?? options?.emptyMessage,
20
- multi: props.multi ?? options?.multi,
21
- placeholder: props.placeholder ?? options?.placeholder,
22
- prompt: props.prompt ?? options?.prompt,
23
- title: props.title ?? options?.title,
24
- };
25
- };
26
- export const Choose = function Choose(props) {
27
- const { contentProvider, controllerRef, renderItem, onConfirm, onCancel } = props;
28
- const { actions: effectiveActions, emptyMessage, multi = false, placeholder, prompt, title, } = resolveChooseProps(props);
12
+ export const Choose = function Choose({ contentProvider, actions, controllerRef, emptyMessage, multi = false, onCancel, onConfirm, placeholder, prompt, renderItem, title, }) {
29
13
  const { theme } = useTheme();
30
14
  const { invoke } = useSurfaceInvoke();
31
15
  const { name: themeName } = useThemeCommands();
@@ -33,13 +17,13 @@ export const Choose = function Choose(props) {
33
17
  const hasOverlay = useHasOverlay();
34
18
  const hasModalOverlay = useHasModalOverlay();
35
19
  const choose = useChoose({
36
- commands: effectiveActions,
20
+ commands: actions,
37
21
  multi,
38
22
  onCancel,
39
23
  onSubmit: (result) => {
40
24
  // Standalone behaviour: a command named `submit` wins over `onConfirm`, so
41
25
  // action-driven CLIs keep their own submit semantics.
42
- if (effectiveActions?.some((action) => action.id === "submit") === true) {
26
+ if (actions?.some((action) => action.id === "submit") === true) {
43
27
  invoke("submit");
44
28
  return;
45
29
  }
@@ -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
+ /** Compile-time checks for the Choose component's 0.9 public props. */
2
+ import type { ChooseProps } from "./choose.js";
3
+ type Assert<T extends true> = T;
4
+ type IsNever<T> = [T] extends [never] ? true : false;
5
+ type Has<TKeys, TName> = [Extract<TKeys, TName>] extends [never] ? false : true;
6
+ type Props = keyof ChooseProps;
7
+ type RetainedProps = Assert<Has<Props, "actions" | "multi" | "prompt" | "title">>;
8
+ type RemovedProps = Assert<IsNever<Extract<Props, "commands" | "options">>>;
9
+ export type ChoosePublicContractChecks = [RetainedProps, RemovedProps];
10
+ export {};
11
+ //# sourceMappingURL=choose.public-contract.typecheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choose.public-contract.typecheck.d.ts","sourceRoot":"","sources":["../src/choose.public-contract.typecheck.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAChC,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACrD,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAEhF,KAAK,KAAK,GAAG,MAAM,WAAW,CAAC;AAC/B,KAAK,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;AAClF,KAAK,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=choose.public-contract.typecheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choose.public-contract.typecheck.js","sourceRoot":"","sources":["../src/choose.public-contract.typecheck.ts"],"names":[],"mappings":""}
package/dist/fuzzy.d.ts CHANGED
@@ -1,9 +1,3 @@
1
- import type { ChooseItem } from "./types.js";
2
- export interface FuzzyMatch {
3
- item: ChooseItem;
4
- originalIndex: number;
5
- score: number;
6
- positions: number[];
7
- }
8
- export declare const fuzzyFilter: (items: ChooseItem[], query: string) => FuzzyMatch[];
1
+ export { fuzzyFilter } from "@tooee/renderers";
2
+ export type { FuzzyMatch } from "@tooee/renderers";
9
3
  //# sourceMappingURL=fuzzy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,UAA+B,UAAU,EAAE,SAAS,MAAM,KAAG,UAAU,EAE9F,CAAC"}
1
+ {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/fuzzy.js CHANGED
@@ -1,5 +1,2 @@
1
- import { rankBy } from "@tooee/fuzzy";
2
- export const fuzzyFilter = function fuzzyFilter(items, query) {
3
- return rankBy(items, query, (item) => item.text);
4
- };
1
+ export { fuzzyFilter } from "@tooee/renderers";
5
2
  //# 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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,WAAW,CAAC,KAAmB,EAAE,KAAa;IAChF,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC,CAAC"}
1
+ {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../src/fuzzy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGrF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,SACX,mBAAmB,KACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAqB7B,CAAC"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGrF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,qBAAqB,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,SACX,mBAAmB,KACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAsB7B,CAAC"}
package/dist/launch.js CHANGED
@@ -5,6 +5,7 @@ export const launch = async function launch(opts) {
5
5
  const result = await runCliSession(({ resolve, cancel }) => (_jsx(Choose, { contentProvider: opts.contentProvider, title: opts.options?.title, prompt: opts.options?.prompt, placeholder: opts.options?.placeholder, multi: opts.options?.multi, emptyMessage: opts.options?.emptyMessage, actions: opts.actions, onConfirm: resolve, onCancel: cancel })), {
6
6
  provider: { initialMode: "insert" },
7
7
  stdinPolicy: "tty-if-piped",
8
+ stdoutPolicy: "tty-if-redirected",
8
9
  });
9
10
  return result;
10
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,UAAU,MAAM,CACzC,IAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAa,EAAE,CAAC,CAClC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAC1B,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAC5B,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EACtC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAC1B,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EACxC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,GAChB,CACH,EACD;QACE,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;QACnC,WAAW,EAAE,cAAc;KAC5B,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,UAAU,MAAM,CACzC,IAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAa,EAAE,CAAC,CAClC,KAAC,MAAM,IACL,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAC1B,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAC5B,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EACtC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAC1B,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EACxC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,GAChB,CACH,EACD;QACE,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;QACnC,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,mBAAmB;KAClC,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/source.d.ts CHANGED
@@ -1,5 +1,2 @@
1
- import type { ChooseItem, ChooseSource } from "./types.js";
2
- /** Resolve every public Choose source shape through one compatibility boundary. */
3
- export declare const loadChooseSource: (source: ChooseSource) => ChooseItem[] | Promise<ChooseItem[]>;
4
- export declare const chooseSourceError: (error: unknown) => string;
1
+ export { loadChooseSource } from "@tooee/renderers";
5
2
  //# sourceMappingURL=source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkBlF,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,WACnB,YAAY,KACnB,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CASrC,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAAqC,OAAO,KAAG,MAE5E,CAAC"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}