@tooee/choose 0.2.3 → 0.3.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 (94) hide show
  1. package/README.md +2 -2
  2. package/dist/{ChooseFilter.d.ts → choose-filter.d.ts} +2 -2
  3. package/dist/choose-filter.d.ts.map +1 -0
  4. package/dist/choose-filter.js +11 -0
  5. package/dist/choose-filter.js.map +1 -0
  6. package/dist/choose-highlighted-text.d.ts +9 -0
  7. package/dist/choose-highlighted-text.d.ts.map +1 -0
  8. package/dist/{ChooseHighlightedText.js → choose-highlighted-text.js} +10 -8
  9. package/dist/choose-highlighted-text.js.map +1 -0
  10. package/dist/{ChooseList.d.ts → choose-list.d.ts} +3 -3
  11. package/dist/choose-list.d.ts.map +1 -0
  12. package/dist/{ChooseList.js → choose-list.js} +20 -15
  13. package/dist/choose-list.js.map +1 -0
  14. package/dist/{ChooseOverlay.d.ts → choose-overlay.d.ts} +6 -6
  15. package/dist/choose-overlay.d.ts.map +1 -0
  16. package/dist/{ChooseOverlay.js → choose-overlay.js} +15 -13
  17. package/dist/choose-overlay.js.map +1 -0
  18. package/dist/{ChoosePanel.d.ts → choose-panel.d.ts} +5 -5
  19. package/dist/choose-panel.d.ts.map +1 -0
  20. package/dist/choose-panel.js +31 -0
  21. package/dist/choose-panel.js.map +1 -0
  22. package/dist/choose.d.ts +28 -0
  23. package/dist/choose.d.ts.map +1 -0
  24. package/dist/{Choose.js → choose.js} +25 -18
  25. package/dist/choose.js.map +1 -0
  26. package/dist/default-provider.d.ts +2 -2
  27. package/dist/default-provider.d.ts.map +1 -1
  28. package/dist/default-provider.js +4 -4
  29. package/dist/default-provider.js.map +1 -1
  30. package/dist/fuzzy.d.ts +1 -1
  31. package/dist/fuzzy.d.ts.map +1 -1
  32. package/dist/fuzzy.js +5 -5
  33. package/dist/fuzzy.js.map +1 -1
  34. package/dist/index.d.ts +12 -12
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +6 -6
  37. package/dist/index.js.map +1 -1
  38. package/dist/launch.d.ts +1 -1
  39. package/dist/launch.d.ts.map +1 -1
  40. package/dist/launch.js +5 -4
  41. package/dist/launch.js.map +1 -1
  42. package/dist/source.d.ts +2 -2
  43. package/dist/source.d.ts.map +1 -1
  44. package/dist/source.js +8 -6
  45. package/dist/source.js.map +1 -1
  46. package/dist/types.d.ts +1 -1
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/use-choose-dialog.d.ts +12 -10
  49. package/dist/use-choose-dialog.d.ts.map +1 -1
  50. package/dist/use-choose-dialog.js +98 -77
  51. package/dist/use-choose-dialog.js.map +1 -1
  52. package/dist/use-choose-dialog.typecheck.d.ts +1 -1
  53. package/dist/use-choose-dialog.typecheck.d.ts.map +1 -1
  54. package/dist/use-choose-dialog.typecheck.js +5 -5
  55. package/dist/use-choose-dialog.typecheck.js.map +1 -1
  56. package/dist/use-choose.d.ts +16 -16
  57. package/dist/use-choose.d.ts.map +1 -1
  58. package/dist/use-choose.js +176 -138
  59. package/dist/use-choose.js.map +1 -1
  60. package/package.json +7 -7
  61. package/src/{ChooseFilter.tsx → choose-filter.tsx} +18 -16
  62. package/src/choose-highlighted-text.tsx +49 -0
  63. package/src/{ChooseList.tsx → choose-list.tsx} +73 -60
  64. package/src/choose-overlay.tsx +96 -0
  65. package/src/{ChoosePanel.tsx → choose-panel.tsx} +41 -34
  66. package/src/choose.tsx +142 -0
  67. package/src/default-provider.ts +18 -15
  68. package/src/fuzzy.ts +16 -16
  69. package/src/index.ts +23 -23
  70. package/src/launch.tsx +15 -12
  71. package/src/source.ts +15 -9
  72. package/src/types.ts +12 -12
  73. package/src/use-choose-dialog.tsx +168 -139
  74. package/src/use-choose-dialog.typecheck.ts +19 -18
  75. package/src/use-choose.ts +349 -302
  76. package/dist/Choose.d.ts +0 -21
  77. package/dist/Choose.d.ts.map +0 -1
  78. package/dist/Choose.js.map +0 -1
  79. package/dist/ChooseFilter.d.ts.map +0 -1
  80. package/dist/ChooseFilter.js +0 -9
  81. package/dist/ChooseFilter.js.map +0 -1
  82. package/dist/ChooseHighlightedText.d.ts +0 -9
  83. package/dist/ChooseHighlightedText.d.ts.map +0 -1
  84. package/dist/ChooseHighlightedText.js.map +0 -1
  85. package/dist/ChooseList.d.ts.map +0 -1
  86. package/dist/ChooseList.js.map +0 -1
  87. package/dist/ChooseOverlay.d.ts.map +0 -1
  88. package/dist/ChooseOverlay.js.map +0 -1
  89. package/dist/ChoosePanel.d.ts.map +0 -1
  90. package/dist/ChoosePanel.js +0 -25
  91. package/dist/ChoosePanel.js.map +0 -1
  92. package/src/Choose.tsx +0 -126
  93. package/src/ChooseHighlightedText.tsx +0 -42
  94. package/src/ChooseOverlay.tsx +0 -88
package/dist/Choose.d.ts DELETED
@@ -1,21 +0,0 @@
1
- import { type Ref } from "react";
2
- import { type ActionDefinition } from "@tooee/commands";
3
- import { type ChooseListProps } from "./ChooseList.js";
4
- import type { ChooseContentProvider, ChooseOptions, ChooseResult } from "./types.js";
5
- import { type ChooseController } from "./use-choose.js";
6
- export interface ChooseProps {
7
- contentProvider: ChooseContentProvider;
8
- options?: ChooseOptions;
9
- /** Legacy name retained for source compatibility. */
10
- actions?: ActionDefinition[];
11
- /** Additive alias used by new chooser compositions. */
12
- commands?: ActionDefinition[];
13
- controllerRef?: Ref<ChooseController>;
14
- renderItem?: ChooseListProps["renderItem"];
15
- /** @deprecated Prefer commands with an id such as `submit`. */
16
- onConfirm?: (result: ChooseResult) => void;
17
- /** @deprecated Prefer commands or launch lifecycle handling. */
18
- onCancel?: () => void;
19
- }
20
- export declare function Choose({ contentProvider, options, actions, commands, controllerRef, renderItem, onConfirm, onCancel, }: ChooseProps): import("react").ReactNode;
21
- //# sourceMappingURL=Choose.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Choose.d.ts","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AAKrD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpF,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElE,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,qDAAqD;IACrD,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,aAAa,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACrC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,wBAAgB,MAAM,CAAC,EACrB,eAAe,EACf,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,WAAW,6BAyFb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Choose.js","sourceRoot":"","sources":["../src/Choose.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseFilter.d.ts","sourceRoot":"","sources":["../src/ChooseFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,MAAa,EACb,WAAyB,EACzB,KAAK,EACL,OAAO,GACR,EAAE,iBAAiB,aAyBnB"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { CloseButton, useTheme } from "@tooee/themes";
3
- /** Controlled filter row shared by fullscreen and overlay chooser assemblies. */
4
- export function ChooseFilter({ choose, prompt = "> ", placeholder = "Filter...", right, onClose, }) {
5
- const { theme } = useTheme();
6
- const { state, view } = choose;
7
- return (_jsxs("box", { flexDirection: "row", height: 1, style: { paddingLeft: 1, paddingRight: 1 }, children: [typeof prompt === "string" ? _jsx("text", { content: prompt, fg: theme.accent }) : prompt, _jsx("input", { ref: view.filterRef, focused: view.filterFocused, value: state.filterQuery, placeholder: placeholder, onInput: view.onFilterInput, onKeyDown: view.onFilterKeyDown, 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 })] }));
8
- }
9
- //# sourceMappingURL=ChooseFilter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseFilter.js","sourceRoot":"","sources":["../src/ChooseFilter.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAWrD,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,WAAW,EACzB,KAAK,EACL,OAAO,GACW;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;IAE9B,OAAO,CACL,eAAK,aAAa,EAAC,KAAK,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAC3E,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAM,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,GAAI,CAAC,CAAC,CAAC,MAAM,EAClF,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,IAAI,CAAC,aAAa,EAC3B,SAAS,EAAE,IAAI,CAAC,eAAe,EAC/B,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,CAAA;AACH,CAAC"}
@@ -1,9 +0,0 @@
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 function ChooseHighlightedText({ text, positions, highlightColor, }: ChooseHighlightedTextProps): ReactNode;
9
- //# sourceMappingURL=ChooseHighlightedText.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseHighlightedText.d.ts","sourceRoot":"","sources":["../src/ChooseHighlightedText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,SAAS,EACT,cAAc,GACf,EAAE,0BAA0B,GAAG,SAAS,CA4BxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseHighlightedText.js","sourceRoot":"","sources":["../src/ChooseHighlightedText.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAQhD,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,EACpC,IAAI,EACJ,SAAS,EACT,cAAc,GACa;IAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IACtC,MAAM,KAAK,GAAkD,EAAE,CAAA;IAC/D,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,kBAAkB,GAAG,KAAK,CAAA;IAE9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,kBAAkB,GAAG,WAAW,CAAA;QAClC,CAAC;aAAM,IAAI,WAAW,KAAK,kBAAkB,EAAE,CAAC;YAC9C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAA;YAC9D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,kBAAkB,GAAG,WAAW,CAAA;QAClC,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE3E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,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,CAAC,CAAA;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseList.d.ts","sourceRoot":"","sources":["../src/ChooseList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,SAAS,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAA;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAA;IACzC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,CAAA;IAC5D,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;IAC3C,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAcD,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAqB,EACrB,UAAU,EACV,cAA6B,EAC7B,YAAkC,EAClC,YAAY,EACZ,SAAS,GACV,EAAE,eAAe,aAoFjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseList.js","sourceRoot":"","sources":["../src/ChooseList.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseOverlay.d.ts","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,aAAa,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACrC,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GACrD,CACI;IACE,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAA;CACjB,GACD;IACE,KAAK,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAA;CACjB,CACJ,CAAA;AAEH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,aA0CtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChooseOverlay.js","sourceRoot":"","sources":["../src/ChooseOverlay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAA4B,MAAM,OAAO,CAAA;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAmClE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAA;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,MAAM,EAAE,KAAK,CAAC,KAAK;QACnB,KAAK;QACL,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACnB,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;QACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,gBAAgB;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;IAEF,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAEtF,OAAO,CACL,8BACE,KAAC,WAAW,IACV,KAAK,EAAE,KAAK,CAAC,MAAM,EACnB,MAAM,EACJ,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAI,EAE3F,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,YAElB,KAAC,UAAU,IACT,MAAM,EAAE,MAAM,EACd,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,SAAS,EAAE,KAAK,CAAC,SAAS,GAC1B,GACU,EACb,KAAK,CAAC,QAAQ,IACd,CACJ,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChoosePanel.d.ts","sourceRoot":"","sources":["../src/ChoosePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAW,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGpD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAClD,MAAM,EAAE,CAYV;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,GAAG,CAAC,EAAE,qBAAqB,CAAA;IAC3B,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,SAAS,CAAA;IAClE,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE,gBAAgB,aAqElB"}
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useMode } from "@tooee/commands";
3
- import { CloseButton, useTheme } from "@tooee/themes";
4
- export function buildChooseHints(mode, options = {}) {
5
- const base = mode === "insert"
6
- ? ["↑↓ navigate", "Enter confirm", ...(options.multi ? ["Tab toggle"] : []), "Esc commands"]
7
- : [
8
- "j/k navigate",
9
- "i insert",
10
- ...(options.multi ? ["Tab toggle"] : []),
11
- "Esc/q cancel",
12
- "Enter confirm",
13
- ];
14
- return options.extra ? [...base, ...options.extra] : base;
15
- }
16
- /** Bordered chooser chrome with filter, content, hint/status, and footer slots. */
17
- export function ChoosePanel({ title, filter, children, multi, hints, statusRight, footer, onClose, inset, }) {
18
- const { theme } = useTheme();
19
- const mode = useMode();
20
- const defaults = buildChooseHints(mode, { multi });
21
- const hintContent = hints ? hints({ mode, defaults }) : defaults.join(" ");
22
- return (_jsxs("box", { position: "absolute", left: inset?.left ?? "20%", right: inset?.right ?? "20%", top: inset?.top ?? "20%", bottom: inset?.bottom ?? "20%", flexDirection: "column", backgroundColor: theme.backgroundPanel, border: true, borderColor: theme.borderActive, children: [title != null && (_jsxs("box", { flexDirection: "row", height: 1, paddingLeft: 1, paddingRight: 1, backgroundColor: theme.backgroundElement, children: [typeof title === "string" ? (_jsx("text", { content: title, fg: theme.accent, style: { flexGrow: 1 } })) : (_jsx("box", { flexDirection: "row", style: { flexGrow: 1 }, children: title })), onClose && _jsx(CloseButton, { onClose: onClose })] })), filter, children, footer != null && (_jsx("box", { height: 1, paddingLeft: 1, paddingRight: 1, children: footer })), _jsxs("box", { flexDirection: "row", height: 1, paddingLeft: 1, paddingRight: 1, backgroundColor: theme.backgroundElement, children: [_jsx("box", { flexDirection: "row", style: { flexGrow: 1 }, children: typeof hintContent === "string" ? (_jsx("text", { content: hintContent, fg: theme.textMuted })) : (hintContent) }), statusRight != null &&
23
- (typeof statusRight === "string" ? (_jsx("text", { content: statusRight, fg: theme.textMuted })) : (statusRight))] })] }));
24
- }
25
- //# sourceMappingURL=ChoosePanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChoosePanel.js","sourceRoot":"","sources":["../src/ChoosePanel.tsx"],"names":[],"mappings":"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"}
package/src/Choose.tsx DELETED
@@ -1,126 +0,0 @@
1
- import { useImperativeHandle, type Ref } from "react"
2
- import { AppLayout } from "@tooee/layout"
3
- import { useHasOverlay, useHasModalOverlay } from "@tooee/overlays"
4
- import { useTheme } from "@tooee/themes"
5
- import { useThemeCommands, useQuitCommand } from "@tooee/shell"
6
- import { useCommandContext, type ActionDefinition } from "@tooee/commands"
7
- import { ChooseFilter } from "./ChooseFilter.js"
8
- import { ChooseList, type ChooseListProps } from "./ChooseList.js"
9
- import { buildChooseHints } from "./ChoosePanel.js"
10
- import type { ChooseContentProvider, ChooseOptions, ChooseResult } from "./types.js"
11
- import { useChoose, type ChooseController } from "./use-choose.js"
12
-
13
- export interface ChooseProps {
14
- contentProvider: ChooseContentProvider
15
- options?: ChooseOptions
16
- /** Legacy name retained for source compatibility. */
17
- actions?: ActionDefinition[]
18
- /** Additive alias used by new chooser compositions. */
19
- commands?: ActionDefinition[]
20
- controllerRef?: Ref<ChooseController>
21
- renderItem?: ChooseListProps["renderItem"]
22
- /** @deprecated Prefer commands with an id such as `submit`. */
23
- onConfirm?: (result: ChooseResult) => void
24
- /** @deprecated Prefer commands or launch lifecycle handling. */
25
- onCancel?: () => void
26
- }
27
-
28
- export function Choose({
29
- contentProvider,
30
- options,
31
- actions,
32
- commands,
33
- controllerRef,
34
- renderItem,
35
- onConfirm,
36
- onCancel,
37
- }: ChooseProps) {
38
- const { theme } = useTheme()
39
- const { invoke } = useCommandContext()
40
- const effectiveCommands = commands ?? actions
41
- const multi = options?.multi ?? false
42
-
43
- const { name: themeName } = useThemeCommands()
44
- useQuitCommand({ onQuit: () => onCancel?.() })
45
-
46
- const hasOverlay = useHasOverlay()
47
- const hasModalOverlay = useHasModalOverlay()
48
-
49
- const choose = useChoose({
50
- source: contentProvider,
51
- multi,
52
- onSubmit: (result) => {
53
- // Historical standalone behaviour: a command named `submit` wins over
54
- // the deprecated callback, so existing action-driven CLIs are unchanged.
55
- if (effectiveCommands?.some((action) => action.id === "submit")) {
56
- invoke("submit")
57
- return
58
- }
59
- if (multi || result.items.length > 0) onConfirm?.(result)
60
- else onCancel?.()
61
- },
62
- onCancel,
63
- commands: effectiveCommands,
64
- suspended: hasOverlay,
65
- })
66
-
67
- useImperativeHandle(controllerRef, () => choose.controller, [choose.controller])
68
-
69
- if (choose.state.loading) {
70
- return (
71
- <box>
72
- <text content="Loading..." fg={theme.textMuted} />
73
- </box>
74
- )
75
- }
76
-
77
- if (choose.state.error) {
78
- return (
79
- <box>
80
- <text content={`Error: ${choose.state.error}`} fg={theme.error} />
81
- </box>
82
- )
83
- }
84
-
85
- const hints = buildChooseHints(choose.view.mode, { multi })
86
-
87
- return (
88
- <AppLayout
89
- titleBar={
90
- (options?.title ?? options?.prompt)
91
- ? { title: (options.title ?? options.prompt)! }
92
- : undefined
93
- }
94
- statusBar={{
95
- items: [
96
- {
97
- label: "Matches:",
98
- value: `${choose.state.matches.length}/${choose.state.items.length}`,
99
- },
100
- ...(multi
101
- ? [
102
- {
103
- label: "Selected:",
104
- value: String(choose.state.selectedOriginalIndices.size),
105
- },
106
- ]
107
- : []),
108
- { label: "Theme:", value: themeName },
109
- { label: "", value: hints.join(" ") },
110
- ],
111
- }}
112
- scrollProps={{ focused: false }}
113
- >
114
- <box flexDirection="column" style={{ flexGrow: 1 }}>
115
- <ChooseFilter choose={choose} placeholder={options?.placeholder} />
116
- <ChooseList
117
- choose={choose}
118
- rowClick="activate"
119
- renderItem={renderItem}
120
- emptyContent={options?.emptyMessage}
121
- suspended={hasModalOverlay}
122
- />
123
- </box>
124
- </AppLayout>
125
- )
126
- }
@@ -1,42 +0,0 @@
1
- import { Fragment, type ReactNode } from "react"
2
-
3
- export interface ChooseHighlightedTextProps {
4
- text: string
5
- positions: number[]
6
- highlightColor: string
7
- }
8
-
9
- /** Render fuzzy-match characters with one shared segmentation implementation. */
10
- export function ChooseHighlightedText({
11
- text,
12
- positions,
13
- highlightColor,
14
- }: ChooseHighlightedTextProps): ReactNode {
15
- if (positions.length === 0) return text
16
-
17
- const positionSet = new Set(positions)
18
- const parts: Array<{ text: string; highlighted: boolean }> = []
19
- let current = ""
20
- let currentHighlighted = false
21
-
22
- for (let index = 0; index < text.length; index++) {
23
- const highlighted = positionSet.has(index)
24
- if (index === 0) {
25
- current = text[index]
26
- currentHighlighted = highlighted
27
- } else if (highlighted === currentHighlighted) {
28
- current += text[index]
29
- } else {
30
- parts.push({ text: current, highlighted: currentHighlighted })
31
- current = text[index]
32
- currentHighlighted = highlighted
33
- }
34
- }
35
- if (current) parts.push({ text: current, highlighted: currentHighlighted })
36
-
37
- return parts.map((part, index) => (
38
- <Fragment key={index}>
39
- {part.highlighted ? <span fg={highlightColor}>{part.text}</span> : part.text}
40
- </Fragment>
41
- ))
42
- }
@@ -1,88 +0,0 @@
1
- import { useImperativeHandle, type ReactNode, type Ref } from "react"
2
- import type { ActionDefinition } from "@tooee/commands"
3
- import { ChooseFilter } from "./ChooseFilter.js"
4
- import { ChooseList, type ChooseListProps } from "./ChooseList.js"
5
- import { ChoosePanel, type ChoosePanelProps } from "./ChoosePanel.js"
6
- import type { ChooseItem, ChooseResult, ChooseSource } from "./types.js"
7
- import { useChoose, type ChooseController } from "./use-choose.js"
8
-
9
- interface ChooseOverlayBaseProps {
10
- items: ChooseSource
11
- prompt?: string
12
- placeholder?: string
13
- emptyMessage?: string
14
- onCancel: () => void
15
- commands?: ActionDefinition[]
16
- controllerRef?: Ref<ChooseController>
17
- renderItem?: ChooseListProps["renderItem"]
18
- hints?: ChoosePanelProps["hints"]
19
- statusRight?: ReactNode
20
- footer?: ReactNode
21
- inset?: ChoosePanelProps["inset"]
22
- /** Nested modal content rendered above the chooser panel. */
23
- children?: ReactNode
24
- /** Explicit interaction guard for legacy child overlays without a command surface. */
25
- suspended?: boolean
26
- }
27
-
28
- export type ChooseOverlayProps = ChooseOverlayBaseProps &
29
- (
30
- | {
31
- multi?: false
32
- onSelect: (item: ChooseItem) => void | Promise<void>
33
- onSubmit?: never
34
- }
35
- | {
36
- multi: true
37
- onSubmit: (result: ChooseResult) => void | Promise<void>
38
- onSelect?: never
39
- }
40
- )
41
-
42
- /**
43
- * Composed picker surface. Hosts should mount it on an owned modal command
44
- * surface (as Tooee's overlay manager does) so nested surfaces suspend it.
45
- */
46
- export function ChooseOverlay(props: ChooseOverlayProps) {
47
- const multi = props.multi === true
48
- const choose = useChoose({
49
- source: props.items,
50
- multi,
51
- onSubmit: (result) => {
52
- if (multi) return props.onSubmit(result)
53
- const item = result.items[0]
54
- if (item) return props.onSelect(item)
55
- },
56
- onCancel: props.onCancel,
57
- commands: props.commands,
58
- commandScope: "choose-overlay",
59
- suspended: props.suspended,
60
- })
61
-
62
- useImperativeHandle(props.controllerRef, () => choose.controller, [choose.controller])
63
-
64
- return (
65
- <>
66
- <ChoosePanel
67
- title={props.prompt}
68
- filter={
69
- <ChooseFilter choose={choose} placeholder={props.placeholder} onClose={props.onCancel} />
70
- }
71
- multi={multi}
72
- hints={props.hints}
73
- statusRight={props.statusRight}
74
- footer={props.footer}
75
- inset={props.inset}
76
- >
77
- <ChooseList
78
- choose={choose}
79
- rowClick="submit"
80
- renderItem={props.renderItem}
81
- emptyContent={props.emptyMessage}
82
- suspended={props.suspended}
83
- />
84
- </ChoosePanel>
85
- {props.children}
86
- </>
87
- )
88
- }