MCPcopy Create free account
hub / github.com/denoland/std / promptMultipleSelect

Function promptMultipleSelect

cli/unstable_prompt_multiple_select.ts:109–170  ·  view source on GitHub ↗
(
  message: string,
  values: PromptEntry<V>[],
  options: PromptMultipleSelectOptions = {},
)

Source from the content-addressed store, hash-verified

107 * ```
108 */
109export function promptMultipleSelect<V = undefined>(
110 message: string,
111 values: PromptEntry<V>[],
112 options: PromptMultipleSelectOptions = {},
113): PromptEntry<V>[] | null {
114 if (!Deno.stdin.isTerminal()) return null;
115
116 const selectedAbsoluteIndexes = new Set<number>();
117
118 handlePromptSelect(
119 message,
120 options.indicator ?? "❯",
121 values,
122 options.clear,
123 options.visibleLines,
124 options.fitToRemainingHeight,
125 (_active, absoluteIndex) => {
126 const checked = selectedAbsoluteIndexes.has(absoluteIndex);
127 return checked ? CHECKED : UNCHECKED;
128 },
129 (str, absoluteIndex, {
130 etx,
131 up,
132 down,
133 remove,
134 inputStr,
135 }) => {
136 switch (str) {
137 case ETX:
138 return etx();
139 case ARROW_UP:
140 up();
141 break;
142 case ARROW_DOWN:
143 down();
144 break;
145 case CR:
146 return true;
147 case " ": {
148 if (absoluteIndex !== undefined) {
149 if (selectedAbsoluteIndexes.has(absoluteIndex)) {
150 selectedAbsoluteIndexes.delete(absoluteIndex);
151 } else {
152 selectedAbsoluteIndexes.add(absoluteIndex);
153 }
154 }
155 break;
156 }
157 case DELETE:
158 remove();
159 break;
160 default:
161 inputStr();
162 break;
163 }
164
165 return false;
166 },

Calls 6

handlePromptSelectFunction · 0.90
removeFunction · 0.85
isTerminalMethod · 0.65
hasMethod · 0.65
deleteMethod · 0.65
addMethod · 0.45

Tested by

no test coverage detected