[READ-ONLY] Mirror of https://github.com/bombshell-dev/clack. Effortlessly build beautiful command-line apps bomb.sh/docs/clack/basics/getting-started/
cli command-line command-line-app node prompt prompts
5

Configure Feed

Select the types of activity you want to include in your feed.

feat(prompts): add instructions footer for `select`, `multi-select` & `group-multi-select` prompts (#567)

authored by

paul valladares and committed by
GitHub
(Jun 17, 2026, 9:10 AM +0100) cc6aab50 2f2b52f7

+1203 -423
+5
.changeset/calm-feet-lead.md
··· 1 + --- 2 + "@clack/prompts": minor 3 + --- 4 + 5 + Add keyboard instruction footers to `select`, `multiselect`, and `groupMultiselect` in the active state, matching autocomplete. No option — always shown.
+9
packages/prompts/src/common.ts
··· 73 73 signal?: AbortSignal; 74 74 withGuide?: boolean; 75 75 } 76 + 77 + export function formatInstructionFooter(instructions: string[], hasGuide: boolean): string[] { 78 + const guidePrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : ''; 79 + const footerLines = [`${guidePrefix}${instructions.join(' • ')}`]; 80 + if (hasGuide) { 81 + footerLines.push(styleText('cyan', S_BAR_END)); 82 + } 83 + return footerLines; 84 + }
+6 -5
packages/prompts/src/group-multi-select.ts
··· 2 2 import { GroupMultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core'; 3 3 import { 4 4 type CommonOptions, 5 + formatInstructionFooter, 5 6 S_BAR, 6 7 S_BAR_END, 7 8 S_CHECKBOX_ACTIVE, ··· 10 11 symbol, 11 12 } from './common.js'; 12 13 import { limitOptions } from './limit-options.js'; 14 + import { MULTISELECT_INSTRUCTIONS } from './multi-select.js'; 13 15 import type { Option } from './select.js'; 14 16 15 17 /** ··· 285 287 } 286 288 default: { 287 289 const guidePrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : ''; 288 - // Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline) 289 290 const titleLineCount = title.split('\n').length; 290 - const footerLineCount = (hasGuide ? 1 : 0) + 1; // guide line + trailing newline 291 + const footerLines = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, hasGuide); 292 + const footerText = footerLines.join('\n'); 293 + const footerLineCount = footerLines.length + 1; 291 294 const optionsText = limitOptions({ 292 295 output: opts.output, 293 296 options: this.options, ··· 297 300 rowPadding: titleLineCount + footerLineCount, 298 301 style: styleOption, 299 302 }).join(`\n${guidePrefix}`); 300 - return `${title}${guidePrefix}${optionsText}\n${ 301 - hasGuide ? styleText('cyan', S_BAR_END) : '' 302 - }\n`; 303 + return `${title}${guidePrefix}${optionsText}\n${footerText}\n`; 303 304 } 304 305 } 305 306 },
+11 -3
packages/prompts/src/multi-select.ts
··· 2 2 import { MultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core'; 3 3 import { 4 4 type CommonOptions, 5 + formatInstructionFooter, 5 6 S_BAR, 6 7 S_BAR_END, 7 8 S_CHECKBOX_ACTIVE, ··· 12 13 } from './common.js'; 13 14 import { limitOptions } from './limit-options.js'; 14 15 import type { Option } from './select.js'; 16 + 17 + export const MULTISELECT_INSTRUCTIONS = [ 18 + `${styleText('dim', '↑/↓')} to navigate`, 19 + `${styleText('dim', 'Space:')} select`, 20 + `${styleText('dim', 'Enter:')} confirm`, 21 + ]; 15 22 16 23 export interface MultiSelectOptions<Value> extends CommonOptions { 17 24 message: string; ··· 171 178 } 172 179 default: { 173 180 const prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : ''; 174 - // Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline) 175 181 const titleLineCount = title.split('\n').length; 176 - const footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline 182 + const footerLines = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, hasGuide); 183 + const footerText = footerLines.join('\n'); 184 + const footerLineCount = footerLines.length + 1; 177 185 return `${title}${prefix}${limitOptions({ 178 186 output: opts.output, 179 187 options: this.options, ··· 182 190 columnPadding: prefix.length, 183 191 rowPadding: titleLineCount + footerLineCount, 184 192 style: styleOption, 185 - }).join(`\n${prefix}`)}\n${hasGuide ? styleText('cyan', S_BAR_END) : ''}\n`; 193 + }).join(`\n${prefix}`)}\n${footerText}\n`; 186 194 } 187 195 } 188 196 },
+10 -5
packages/prompts/src/select.ts
··· 2 2 import { SelectPrompt, settings, wrapTextWithPrefix } from '@clack/core'; 3 3 import { 4 4 type CommonOptions, 5 + formatInstructionFooter, 5 6 S_BAR, 6 - S_BAR_END, 7 7 S_RADIO_ACTIVE, 8 8 S_RADIO_INACTIVE, 9 9 symbol, 10 10 symbolBar, 11 11 } from './common.js'; 12 12 import { limitOptions } from './limit-options.js'; 13 + 14 + export const SELECT_INSTRUCTIONS = [ 15 + `${styleText('dim', '↑/↓')} to navigate`, 16 + `${styleText('dim', 'Enter:')} confirm`, 17 + ]; 13 18 14 19 type Primitive = Readonly<string | boolean | number>; 15 20 ··· 145 150 } 146 151 default: { 147 152 const prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : ''; 148 - const prefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : ''; 149 - // Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline) 150 153 const titleLineCount = title.split('\n').length; 151 - const footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline (or just trailing newline) 154 + const footerLines = formatInstructionFooter(SELECT_INSTRUCTIONS, hasGuide); 155 + const footerText = footerLines.join('\n'); 156 + const footerLineCount = footerLines.length + 1; 152 157 return `${title}${prefix}${limitOptions({ 153 158 output: opts.output, 154 159 cursor: this.cursor, ··· 158 163 rowPadding: titleLineCount + footerLineCount, 159 164 style: (item, active) => 160 165 opt(item, item.disabled ? 'disabled' : active ? 'active' : 'inactive'), 161 - }).join(`\n${prefix}`)}\n${prefixEnd}\n`; 166 + }).join(`\n${prefix}`)}\n${footerText}\n`; 162 167 } 163 168 } 164 169 },
+294 -178
packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap
··· 9 9 │ └ ◻ group1value0 10 10 │ ◻ group2 11 11 │ └ ◻ group2value0 12 + │ ↑/↓ to navigate • Space: select • Enter: confirm 12 13 └ 13 14 ", 14 15 " ··· 25 26 │ ◻ group1 26 27 │ │ ◻ group1value0 27 28 │ └ ◻ group1value1 29 + │ ↑/↓ to navigate • Space: select • Enter: confirm 28 30 └ 29 31 ", 30 - "<cursor.backward count=999><cursor.up count=6>", 32 + "<cursor.backward count=999><cursor.up count=7>", 31 33 "<cursor.down count=2>", 32 34 "<erase.down>", 33 35 "│ ◻ group1 34 36 │ │ ◻ group1value0 35 37 │ └ ◻ group1value1 38 + │ ↑/↓ to navigate • Space: select • Enter: confirm 36 39 └ 37 40 ", 38 - "<cursor.backward count=999><cursor.up count=6>", 41 + "<cursor.backward count=999><cursor.up count=7>", 39 42 "<cursor.down count=3>", 40 43 "<erase.line><cursor.left count=1>", 41 44 "│ │ ◼ group1value0", 42 - "<cursor.down count=3>", 43 - "<cursor.backward count=999><cursor.up count=6>", 45 + "<cursor.down count=4>", 46 + "<cursor.backward count=999><cursor.up count=7>", 44 47 "<cursor.down count=3>", 45 48 "<erase.down>", 46 49 "│ │ ◼ group1value0 47 50 │ └ ◻ group1value1 51 + │ ↑/↓ to navigate • Space: select • Enter: confirm 48 52 └ 49 53 ", 50 - "<cursor.backward count=999><cursor.up count=6>", 54 + "<cursor.backward count=999><cursor.up count=7>", 51 55 "<cursor.down count=2>", 52 56 "<erase.down>", 53 57 "│ ◼ group1 54 58 │ │ ◼ group1value0 55 59 │ └ ◼ group1value1 60 + │ ↑/↓ to navigate • Space: select • Enter: confirm 56 61 └ 57 62 ", 58 - "<cursor.backward count=999><cursor.up count=6>", 63 + "<cursor.backward count=999><cursor.up count=7>", 59 64 "<cursor.down count=2>", 60 65 "<erase.down>", 61 66 "│ ◻ group1 62 67 │ │ ◼ group1value0 63 68 │ └ ◻ group1value1 69 + │ ↑/↓ to navigate • Space: select • Enter: confirm 64 70 └ 65 71 ", 66 - "<cursor.backward count=999><cursor.up count=6>", 72 + "<cursor.backward count=999><cursor.up count=7>", 67 73 "<cursor.down count=1>", 68 74 "<erase.down>", 69 75 "◇ foo ··· 82 88 │ ◻ group1 83 89 │ │ ◻ group1value0 84 90 │ └ ◻ group1value1 91 + │ ↑/↓ to navigate • Space: select • Enter: confirm 85 92 └ 86 93 ", 87 - "<cursor.backward count=999><cursor.up count=6>", 94 + "<cursor.backward count=999><cursor.up count=7>", 88 95 "<cursor.down count=2>", 89 96 "<erase.down>", 90 97 "│ ◼ group1 91 98 │ │ ◼ group1value0 92 99 │ └ ◼ group1value1 100 + │ ↑/↓ to navigate • Space: select • Enter: confirm 93 101 └ 94 102 ", 95 - "<cursor.backward count=999><cursor.up count=6>", 103 + "<cursor.backward count=999><cursor.up count=7>", 96 104 "<cursor.down count=1>", 97 105 "<erase.down>", 98 106 "◇ foo ··· 111 119 │ ◻ group1 112 120 │ │ ◻ group1value0 113 121 │ └ ◻ group1value1 122 + │ ↑/↓ to navigate • Space: select • Enter: confirm 114 123 └ 115 124 ", 116 - "<cursor.backward count=999><cursor.up count=6>", 125 + "<cursor.backward count=999><cursor.up count=7>", 117 126 "<cursor.down count=2>", 118 127 "<erase.down>", 119 128 "│ ◻ group1 120 129 │ │ ◻ group1value0 121 130 │ └ ◻ group1value1 131 + │ ↑/↓ to navigate • Space: select • Enter: confirm 122 132 └ 123 133 ", 124 - "<cursor.backward count=999><cursor.up count=6>", 134 + "<cursor.backward count=999><cursor.up count=7>", 125 135 "<cursor.down count=3>", 126 136 "<erase.line><cursor.left count=1>", 127 137 "│ │ ◼ group1value0", 128 - "<cursor.down count=3>", 129 - "<cursor.backward count=999><cursor.up count=6>", 138 + "<cursor.down count=4>", 139 + "<cursor.backward count=999><cursor.up count=7>", 130 140 "<cursor.down count=3>", 131 141 "<erase.down>", 132 142 "│ │ ◼ group1value0 133 143 │ └ ◻ group1value1 144 + │ ↑/↓ to navigate • Space: select • Enter: confirm 134 145 └ 135 146 ", 136 - "<cursor.backward count=999><cursor.up count=6>", 147 + "<cursor.backward count=999><cursor.up count=7>", 137 148 "<cursor.down count=2>", 138 149 "<erase.down>", 139 150 "│ ◼ group1 140 151 │ │ ◼ group1value0 141 152 │ └ ◼ group1value1 153 + │ ↑/↓ to navigate • Space: select • Enter: confirm 142 154 └ 143 155 ", 144 - "<cursor.backward count=999><cursor.up count=6>", 156 + "<cursor.backward count=999><cursor.up count=7>", 145 157 "<cursor.down count=1>", 146 158 "<erase.down>", 147 159 "◇ foo ··· 161 173 │ │ ◻ group1value0 162 174 │ │ ◻ group1value1 163 175 │ └ ◻ group1value2 176 + │ ↑/↓ to navigate • Space: select • Enter: confirm 164 177 └ 165 178 ", 166 - "<cursor.backward count=999><cursor.up count=7>", 179 + "<cursor.backward count=999><cursor.up count=8>", 167 180 "<cursor.down count=2>", 168 181 "<erase.down>", 169 182 "│ ◻ group1 170 183 │ │ ◻ group1value0 171 184 │ │ ◻ group1value1 172 185 │ └ ◻ group1value2 186 + │ ↑/↓ to navigate • Space: select • Enter: confirm 173 187 └ 174 188 ", 175 - "<cursor.backward count=999><cursor.up count=7>", 189 + "<cursor.backward count=999><cursor.up count=8>", 176 190 "<cursor.down count=3>", 177 191 "<erase.line><cursor.left count=1>", 178 192 "│ │ ◼ group1value0", 179 - "<cursor.down count=4>", 180 - "<cursor.backward count=999><cursor.up count=7>", 193 + "<cursor.down count=5>", 194 + "<cursor.backward count=999><cursor.up count=8>", 181 195 "<cursor.down count=3>", 182 196 "<erase.down>", 183 197 "│ │ ◼ group1value0 184 198 │ │ ◻ group1value1 185 199 │ └ ◻ group1value2 200 + │ ↑/↓ to navigate • Space: select • Enter: confirm 186 201 └ 187 202 ", 188 - "<cursor.backward count=999><cursor.up count=7>", 203 + "<cursor.backward count=999><cursor.up count=8>", 189 204 "<cursor.down count=4>", 190 205 "<erase.line><cursor.left count=1>", 191 206 "│ │ ◼ group1value1", 192 - "<cursor.down count=3>", 193 - "<cursor.backward count=999><cursor.up count=7>", 207 + "<cursor.down count=4>", 208 + "<cursor.backward count=999><cursor.up count=8>", 194 209 "<cursor.down count=1>", 195 210 "<erase.down>", 196 211 "◇ foo ··· 209 224 │ ◻ group1 210 225 │ │ ◻ group1value0 211 226 │ └ ◻ group1value1 227 + │ ↑/↓ to navigate • Space: select • Enter: confirm 212 228 └ 213 229 ", 214 - "<cursor.backward count=999><cursor.up count=6>", 230 + "<cursor.backward count=999><cursor.up count=7>", 215 231 "<cursor.down count=1>", 216 232 "<erase.down>", 217 233 "◇ foo ··· 230 246 │ ◻ group1 231 247 │ │ ◻ group1value0 232 248 │ └ ◻ group1value1 249 + │ ↑/↓ to navigate • Space: select • Enter: confirm 233 250 └ 234 251 ", 235 - "<cursor.backward count=999><cursor.up count=6>", 252 + "<cursor.backward count=999><cursor.up count=7>", 236 253 "<cursor.down count=4>", 237 254 "<erase.line><cursor.left count=1>", 238 255 "│ └ ◼ group1value1", 239 - "<cursor.down count=2>", 240 - "<cursor.backward count=999><cursor.up count=6>", 256 + "<cursor.down count=3>", 257 + "<cursor.backward count=999><cursor.up count=7>", 241 258 "<cursor.down count=1>", 242 259 "<erase.down>", 243 260 "◇ foo ··· 255 272 ◻ group1 256 273 │ ◻ group1value0 257 274 └ ◻ group1value1 258 - 275 + ↑/↓ to navigate • Space: select • Enter: confirm 259 276 ", 260 277 "<cursor.backward count=999><cursor.up count=5>", 261 278 "<cursor.down count=1>", ··· 263 280 "◻ group1 264 281 │ ◻ group1value0 265 282 └ ◻ group1value1 266 - 283 + ↑/↓ to navigate • Space: select • Enter: confirm 267 284 ", 268 285 "<cursor.backward count=999><cursor.up count=5>", 269 286 "<cursor.down count=2>", ··· 289 306 │ └ ◻ group1value0 290 307 │ ◻ group2 291 308 │ └ ◻ group2value0 309 + │ ↑/↓ to navigate • Space: select • Enter: confirm 292 310 └ 293 311 ", 294 - "<cursor.backward count=999><cursor.up count=7>", 312 + "<cursor.backward count=999><cursor.up count=8>", 295 313 "<cursor.down count=2>", 296 314 "<erase.down>", 297 315 "│ ◻ group1 298 316 │ └ ◻ group1value0 299 317 │ ◻ group2 300 318 │ └ ◻ group2value0 319 + │ ↑/↓ to navigate • Space: select • Enter: confirm 301 320 └ 302 321 ", 303 - "<cursor.backward count=999><cursor.up count=7>", 322 + "<cursor.backward count=999><cursor.up count=8>", 304 323 "<cursor.down count=2>", 305 324 "<erase.down>", 306 325 "│ ◼ group1 307 326 │ └ ◼ group1value0 308 327 │ ◻ group2 309 328 │ └ ◻ group2value0 329 + │ ↑/↓ to navigate • Space: select • Enter: confirm 310 330 └ 311 331 ", 312 - "<cursor.backward count=999><cursor.up count=7>", 332 + "<cursor.backward count=999><cursor.up count=8>", 313 333 "<cursor.down count=1>", 314 334 "<erase.down>", 315 335 "◇ foo ··· 333 353 │ 334 354 │ ◻ group2 335 355 │ └ ◻ group2value0 356 + │ ↑/↓ to navigate • Space: select • Enter: confirm 336 357 └ 337 358 ", 338 - "<cursor.backward count=999><cursor.up count=11>", 359 + "<cursor.backward count=999><cursor.up count=12>", 339 360 "<cursor.down count=4>", 340 361 "<erase.down>", 341 362 "│ ◻ group1 ··· 344 365 │ 345 366 │ ◻ group2 346 367 │ └ ◻ group2value0 368 + │ ↑/↓ to navigate • Space: select • Enter: confirm 347 369 └ 348 370 ", 349 - "<cursor.backward count=999><cursor.up count=11>", 371 + "<cursor.backward count=999><cursor.up count=12>", 350 372 "<cursor.down count=4>", 351 373 "<erase.down>", 352 374 "│ ◼ group1 ··· 355 377 │ 356 378 │ ◻ group2 357 379 │ └ ◻ group2value0 380 + │ ↑/↓ to navigate • Space: select • Enter: confirm 358 381 └ 359 382 ", 360 - "<cursor.backward count=999><cursor.up count=11>", 383 + "<cursor.backward count=999><cursor.up count=12>", 361 384 "<cursor.down count=1>", 362 385 "<erase.down>", 363 386 "◇ foo ··· 376 399 │ ◻ group1 377 400 │ │ ◻ group1value0 378 401 │ └ ◼ group1value1 402 + │ ↑/↓ to navigate • Space: select • Enter: confirm 379 403 └ 380 404 ", 381 - "<cursor.backward count=999><cursor.up count=6>", 405 + "<cursor.backward count=999><cursor.up count=7>", 382 406 "<cursor.down count=1>", 383 407 "<erase.down>", 384 408 "◇ foo ··· 400 424 │ │ ◻ group1value2 401 425 │ │ ◻ group1value3 402 426 │ ... 427 + │ ↑/↓ to navigate • Space: select • Enter: confirm 403 428 └ 404 429 ", 405 - "<cursor.backward count=999><cursor.up count=9>", 430 + "<cursor.backward count=999><cursor.up count=10>", 406 431 "<cursor.down count=2>", 407 432 "<erase.down>", 408 433 "│ ◻ group1 ··· 411 436 │ │ ◻ group1value2 412 437 │ │ ◻ group1value3 413 438 │ ... 439 + │ ↑/↓ to navigate • Space: select • Enter: confirm 414 440 └ 415 441 ", 416 - "<cursor.backward count=999><cursor.up count=9>", 442 + "<cursor.backward count=999><cursor.up count=10>", 417 443 "<cursor.down count=3>", 418 444 "<erase.down>", 419 445 "│ │ ◻ group1value0 ··· 421 447 │ │ ◻ group1value2 422 448 │ │ ◻ group1value3 423 449 │ ... 450 + │ ↑/↓ to navigate • Space: select • Enter: confirm 424 451 └ 425 452 ", 426 - "<cursor.backward count=999><cursor.up count=9>", 453 + "<cursor.backward count=999><cursor.up count=10>", 427 454 "<cursor.down count=4>", 428 455 "<erase.down>", 429 456 "│ │ ◻ group1value1 430 457 │ │ ◻ group1value2 431 458 │ │ ◻ group1value3 432 459 │ ... 460 + │ ↑/↓ to navigate • Space: select • Enter: confirm 433 461 └ 434 462 ", 435 - "<cursor.backward count=999><cursor.up count=9>", 463 + "<cursor.backward count=999><cursor.up count=10>", 436 464 "<cursor.down count=2>", 437 465 "<erase.down>", 438 466 "│ ... ··· 441 469 │ │ ◻ group1value3 442 470 │ │ ◻ group1value4 443 471 │ ... 472 + │ ↑/↓ to navigate • Space: select • Enter: confirm 444 473 └ 445 474 ", 446 - "<cursor.backward count=999><cursor.up count=9>", 475 + "<cursor.backward count=999><cursor.up count=10>", 447 476 "<cursor.down count=3>", 448 477 "<erase.down>", 449 478 "│ │ ◻ group1value2 ··· 451 480 │ │ ◻ group1value4 452 481 │ └ ◻ group1value5 453 482 │ ... 483 + │ ↑/↓ to navigate • Space: select • Enter: confirm 454 484 └ 455 485 ", 456 - "<cursor.backward count=999><cursor.up count=9>", 486 + "<cursor.backward count=999><cursor.up count=10>", 457 487 "<cursor.down count=3>", 458 488 "<erase.down>", 459 489 "│ │ ◻ group1value3 ··· 461 491 │ └ ◻ group1value5 462 492 │ ◻ group2 463 493 │ ... 494 + │ ↑/↓ to navigate • Space: select • Enter: confirm 464 495 └ 465 496 ", 466 - "<cursor.backward count=999><cursor.up count=9>", 497 + "<cursor.backward count=999><cursor.up count=10>", 467 498 "<cursor.down count=5>", 468 499 "<erase.line><cursor.left count=1>", 469 500 "│ └ ◼ group1value5", 470 - "<cursor.down count=4>", 471 - "<cursor.backward count=999><cursor.up count=9>", 501 + "<cursor.down count=5>", 502 + "<cursor.backward count=999><cursor.up count=10>", 472 503 "<cursor.down count=1>", 473 504 "<erase.down>", 474 505 "◇ foo ··· 487 518 │ ◻ group1 488 519 │ │ ◻ group1value0 489 520 │ └ ◻ group1value1 521 + │ ↑/↓ to navigate • Space: select • Enter: confirm 490 522 └ 491 523 ", 492 - "<cursor.backward count=999><cursor.up count=6>", 524 + "<cursor.backward count=999><cursor.up count=7>", 493 525 "<cursor.down count=1>", 494 526 "<erase.down>", 495 527 "▲ foo ··· 506 538 │ ◻ group1 507 539 │ │ ◻ group1value0 508 540 │ └ ◻ group1value1 541 + │ ↑/↓ to navigate • Space: select • Enter: confirm 509 542 └ 510 543 ", 511 - "<cursor.backward count=999><cursor.up count=6>", 544 + "<cursor.backward count=999><cursor.up count=7>", 512 545 "<cursor.down count=3>", 513 546 "<erase.line><cursor.left count=1>", 514 547 "│ │ ◼ group1value0", 515 - "<cursor.down count=3>", 516 - "<cursor.backward count=999><cursor.up count=6>", 548 + "<cursor.down count=4>", 549 + "<cursor.backward count=999><cursor.up count=7>", 517 550 "<cursor.down count=1>", 518 551 "<erase.down>", 519 552 "◇ foo ··· 534 567 │ └ ◻ group1value1 535 568 │ ◻ group2 536 569 │ └ ◻ group2value0 570 + │ ↑/↓ to navigate • Space: select • Enter: confirm 537 571 └ 538 572 ", 539 - "<cursor.backward count=999><cursor.up count=8>", 573 + "<cursor.backward count=999><cursor.up count=9>", 540 574 "<cursor.down count=2>", 541 575 "<erase.down>", 542 576 "│ ◻ group1 ··· 544 578 │ └ ◻ group1value1 545 579 │ ◻ group2 546 580 │ └ ◻ group2value0 581 + │ ↑/↓ to navigate • Space: select • Enter: confirm 547 582 └ 548 583 ", 549 - "<cursor.backward count=999><cursor.up count=8>", 584 + "<cursor.backward count=999><cursor.up count=9>", 550 585 "<cursor.down count=3>", 551 586 "<erase.line><cursor.left count=1>", 552 587 "│ │ ◼ group1value0", 553 - "<cursor.down count=5>", 554 - "<cursor.backward count=999><cursor.up count=8>", 588 + "<cursor.down count=6>", 589 + "<cursor.backward count=999><cursor.up count=9>", 555 590 "<cursor.down count=1>", 556 591 "<erase.down>", 557 592 "◇ foo ··· 570 605 │  group1 571 606 │  ◻ group1value0 572 607 │  ◻ group1value1 608 + │ ↑/↓ to navigate • Space: select • Enter: confirm 573 609 └ 574 610 ", 575 - "<cursor.backward count=999><cursor.up count=6>", 611 + "<cursor.backward count=999><cursor.up count=7>", 576 612 "<cursor.down count=3>", 577 613 "<erase.line><cursor.left count=1>", 578 614 "│  ◼ group1value0", 579 - "<cursor.down count=3>", 580 - "<cursor.backward count=999><cursor.up count=6>", 615 + "<cursor.down count=4>", 616 + "<cursor.backward count=999><cursor.up count=7>", 581 617 "<cursor.down count=1>", 582 618 "<erase.down>", 583 619 "◇ foo ··· 596 632 │  group1 597 633 │  ◻ group1value0 598 634 │  ◻ group1value1 635 + │ ↑/↓ to navigate • Space: select • Enter: confirm 599 636 └ 600 637 ", 601 - "<cursor.backward count=999><cursor.up count=6>", 638 + "<cursor.backward count=999><cursor.up count=7>", 602 639 "<cursor.down count=3>", 603 640 "<erase.line><cursor.left count=1>", 604 641 "│  ◼ group1value0", 605 - "<cursor.down count=3>", 606 - "<cursor.backward count=999><cursor.up count=6>", 642 + "<cursor.down count=4>", 643 + "<cursor.backward count=999><cursor.up count=7>", 607 644 "<cursor.down count=3>", 608 645 "<erase.down>", 609 646 "│  ◼ group1value0 610 647 │  ◻ group1value1 648 + │ ↑/↓ to navigate • Space: select • Enter: confirm 611 649 └ 612 650 ", 613 - "<cursor.backward count=999><cursor.up count=6>", 651 + "<cursor.backward count=999><cursor.up count=7>", 614 652 "<cursor.down count=4>", 615 653 "<erase.line><cursor.left count=1>", 616 654 "│  ◼ group1value1", 617 - "<cursor.down count=2>", 618 - "<cursor.backward count=999><cursor.up count=6>", 655 + "<cursor.down count=3>", 656 + "<cursor.backward count=999><cursor.up count=7>", 619 657 "<cursor.down count=1>", 620 658 "<erase.down>", 621 659 "◇ foo ··· 637 675 │ │ ◻ group1value2 638 676 │ │ ◻ group1value3 639 677 │ ... 678 + │ ↑/↓ to navigate • Space: select • Enter: confirm 640 679 └ 641 680 ", 642 - "<cursor.backward count=999><cursor.up count=9>", 681 + "<cursor.backward count=999><cursor.up count=10>", 643 682 "<cursor.down count=2>", 644 683 "<erase.down>", 645 684 "│ ◻ group1 ··· 648 687 │ │ ◻ group1value2 649 688 │ │ ◻ group1value3 650 689 │ ... 690 + │ ↑/↓ to navigate • Space: select • Enter: confirm 651 691 └ 652 692 ", 653 - "<cursor.backward count=999><cursor.up count=9>", 693 + "<cursor.backward count=999><cursor.up count=10>", 654 694 "<cursor.down count=3>", 655 695 "<erase.down>", 656 696 "│ │ ◻ group1value0 ··· 658 698 │ │ ◻ group1value2 659 699 │ │ ◻ group1value3 660 700 │ ... 701 + │ ↑/↓ to navigate • Space: select • Enter: confirm 661 702 └ 662 703 ", 663 - "<cursor.backward count=999><cursor.up count=9>", 704 + "<cursor.backward count=999><cursor.up count=10>", 664 705 "<cursor.down count=4>", 665 706 "<erase.down>", 666 707 "│ │ ◻ group1value1 667 708 │ │ ◻ group1value2 668 709 │ │ ◻ group1value3 669 710 │ ... 711 + │ ↑/↓ to navigate • Space: select • Enter: confirm 670 712 └ 671 713 ", 672 - "<cursor.backward count=999><cursor.up count=9>", 714 + "<cursor.backward count=999><cursor.up count=10>", 673 715 "<cursor.down count=2>", 674 716 "<erase.down>", 675 717 "│ ... ··· 678 720 │ │ ◻ group1value3 679 721 │ │ ◻ group1value4 680 722 │ ... 723 + │ ↑/↓ to navigate • Space: select • Enter: confirm 681 724 └ 682 725 ", 683 - "<cursor.backward count=999><cursor.up count=9>", 726 + "<cursor.backward count=999><cursor.up count=10>", 684 727 "<cursor.down count=3>", 685 728 "<erase.down>", 686 729 "│ │ ◻ group1value2 ··· 688 731 │ │ ◻ group1value4 689 732 │ └ ◻ group1value5 690 733 │ ... 734 + │ ↑/↓ to navigate • Space: select • Enter: confirm 691 735 └ 692 736 ", 693 - "<cursor.backward count=999><cursor.up count=9>", 737 + "<cursor.backward count=999><cursor.up count=10>", 694 738 "<cursor.down count=3>", 695 739 "<erase.down>", 696 740 "│ │ ◻ group1value3 ··· 698 742 │ └ ◻ group1value5 699 743 │ ◻ group2 700 744 │ ... 745 + │ ↑/↓ to navigate • Space: select • Enter: confirm 701 746 └ 702 747 ", 703 - "<cursor.backward count=999><cursor.up count=9>", 748 + "<cursor.backward count=999><cursor.up count=10>", 704 749 "<cursor.down count=3>", 705 750 "<erase.down>", 706 751 "│ │ ◻ group1value4 ··· 708 753 │ ◻ group2 709 754 │ │ ◻ group2value0 710 755 │ ... 756 + │ ↑/↓ to navigate • Space: select • Enter: confirm 711 757 └ 712 758 ", 713 - "<cursor.backward count=999><cursor.up count=9>", 759 + "<cursor.backward count=999><cursor.up count=10>", 714 760 "<cursor.down count=3>", 715 761 "<erase.down>", 716 762 "│ └ ◻ group1value5 ··· 718 764 │ │ ◻ group2value0 719 765 │ │ ◻ group2value1 720 766 │ ... 767 + │ ↑/↓ to navigate • Space: select • Enter: confirm 721 768 └ 722 769 ", 723 - "<cursor.backward count=999><cursor.up count=9>", 770 + "<cursor.backward count=999><cursor.up count=10>", 724 771 "<cursor.down count=3>", 725 772 "<erase.down>", 726 773 "│ ◻ group2 ··· 728 775 │ │ ◻ group2value1 729 776 │ │ ◻ group2value2 730 777 │ ... 778 + │ ↑/↓ to navigate • Space: select • Enter: confirm 731 779 └ 732 780 ", 733 - "<cursor.backward count=999><cursor.up count=9>", 781 + "<cursor.backward count=999><cursor.up count=10>", 734 782 "<cursor.down count=3>", 735 783 "<erase.down>", 736 784 "│ │ ◻ group2value0 ··· 738 786 │ │ ◻ group2value2 739 787 │ │ ◻ group2value3 740 788 │ ... 789 + │ ↑/↓ to navigate • Space: select • Enter: confirm 741 790 └ 742 791 ", 743 - "<cursor.backward count=999><cursor.up count=9>", 792 + "<cursor.backward count=999><cursor.up count=10>", 744 793 "<cursor.down count=3>", 745 794 "<erase.down>", 746 795 "│ │ ◻ group2value1 ··· 748 797 │ │ ◻ group2value3 749 798 │ │ ◻ group2value4 750 799 │ └ ◻ group2value5 800 + │ ↑/↓ to navigate • Space: select • Enter: confirm 751 801 └ 752 802 ", 753 - "<cursor.backward count=999><cursor.up count=9>", 803 + "<cursor.backward count=999><cursor.up count=10>", 754 804 "<cursor.down count=5>", 755 805 "<erase.down>", 756 806 "│ │ ◻ group2value3 757 807 │ │ ◻ group2value4 758 808 │ └ ◻ group2value5 809 + │ ↑/↓ to navigate • Space: select • Enter: confirm 759 810 └ 760 811 ", 761 - "<cursor.backward count=999><cursor.up count=9>", 812 + "<cursor.backward count=999><cursor.up count=10>", 762 813 "<cursor.down count=6>", 763 814 "<erase.down>", 764 815 "│ │ ◻ group2value4 765 816 │ └ ◻ group2value5 817 + │ ↑/↓ to navigate • Space: select • Enter: confirm 766 818 └ 767 819 ", 768 - "<cursor.backward count=999><cursor.up count=9>", 820 + "<cursor.backward count=999><cursor.up count=10>", 769 821 "<cursor.down count=2>", 770 822 "<erase.down>", 771 823 "│ ◻ group1 ··· 774 826 │ │ ◻ group1value2 775 827 │ │ ◻ group1value3 776 828 │ ... 829 + │ ↑/↓ to navigate • Space: select • Enter: confirm 777 830 └ 778 831 ", 779 - "<cursor.backward count=999><cursor.up count=9>", 832 + "<cursor.backward count=999><cursor.up count=10>", 780 833 "<cursor.down count=2>", 781 834 "<erase.down>", 782 835 "│ ◻ group1 ··· 785 838 │ │ ◻ group1value2 786 839 │ │ ◻ group1value3 787 840 │ ... 841 + │ ↑/↓ to navigate • Space: select • Enter: confirm 788 842 └ 789 843 ", 790 - "<cursor.backward count=999><cursor.up count=9>", 844 + "<cursor.backward count=999><cursor.up count=10>", 791 845 "<cursor.down count=3>", 792 846 "<erase.line><cursor.left count=1>", 793 847 "│ │ ◼ group1value0", 794 - "<cursor.down count=6>", 795 - "<cursor.backward count=999><cursor.up count=9>", 848 + "<cursor.down count=7>", 849 + "<cursor.backward count=999><cursor.up count=10>", 796 850 "<cursor.down count=1>", 797 851 "<erase.down>", 798 852 "◇ foo ··· 814 868 │ │ ◻ group1value2 815 869 │ │ ◻ group1value3 816 870 │ ... 871 + │ ↑/↓ to navigate • Space: select • Enter: confirm 817 872 └ 818 873 ", 819 - "<cursor.backward count=999><cursor.up count=9>", 874 + "<cursor.backward count=999><cursor.up count=10>", 820 875 "<cursor.down count=2>", 821 876 "<erase.down>", 822 877 "│ ... ··· 825 880 │ │ ◻ group2value3 826 881 │ │ ◻ group2value4 827 882 │ └ ◻ group2value5 883 + │ ↑/↓ to navigate • Space: select • Enter: confirm 828 884 └ 829 885 ", 830 - "<cursor.backward count=999><cursor.up count=9>", 886 + "<cursor.backward count=999><cursor.up count=10>", 831 887 "<cursor.down count=7>", 832 888 "<erase.line><cursor.left count=1>", 833 889 "│ └ ◼ group2value5", 834 - "<cursor.down count=2>", 835 - "<cursor.backward count=999><cursor.up count=9>", 890 + "<cursor.down count=3>", 891 + "<cursor.backward count=999><cursor.up count=10>", 836 892 "<cursor.down count=1>", 837 893 "<erase.down>", 838 894 "◇ foo ··· 851 907 │ ◻ group1 852 908 │ │ ◻ value0 853 909 │ └ ◻ value1 910 + │ ↑/↓ to navigate • Space: select • Enter: confirm 854 911 └ 855 912 ", 856 - "<cursor.backward count=999><cursor.up count=6>", 913 + "<cursor.backward count=999><cursor.up count=7>", 857 914 "<cursor.down count=2>", 858 915 "<erase.down>", 859 916 "│ ◻ group1 860 917 │ │ ◻ value0 861 918 │ └ ◻ value1 919 + │ ↑/↓ to navigate • Space: select • Enter: confirm 862 920 └ 863 921 ", 864 - "<cursor.backward count=999><cursor.up count=6>", 922 + "<cursor.backward count=999><cursor.up count=7>", 865 923 "<cursor.down count=3>", 866 924 "<erase.line><cursor.left count=1>", 867 925 "│ │ ◼ value0", 868 - "<cursor.down count=3>", 869 - "<cursor.backward count=999><cursor.up count=6>", 926 + "<cursor.down count=4>", 927 + "<cursor.backward count=999><cursor.up count=7>", 870 928 "<cursor.down count=1>", 871 929 "<erase.down>", 872 930 "◇ foo ··· 884 942 ◻ group1 885 943 │ ◻ group1value0 886 944 └ ◻ group1value1 887 - 945 + ↑/↓ to navigate • Space: select • Enter: confirm 888 946 ", 889 947 "<cursor.backward count=999><cursor.up count=5>", 890 948 "<cursor.down count=1>", ··· 892 950 "◻ group1 893 951 │ ◻ group1value0 894 952 └ ◻ group1value1 895 - 953 + ↑/↓ to navigate • Space: select • Enter: confirm 896 954 ", 897 955 "<cursor.backward count=999><cursor.up count=5>", 898 956 "<cursor.down count=2>", ··· 918 976 │ └ ◻ group1value0 919 977 │ ◻ group2 920 978 │ └ ◻ group2value0 979 + │ ↑/↓ to navigate • Space: select • Enter: confirm 921 980 └ 922 981 ", 923 982 " ··· 934 993 │ ◻ group1 935 994 │ │ ◻ group1value0 936 995 │ └ ◻ group1value1 996 + │ ↑/↓ to navigate • Space: select • Enter: confirm 937 997 └ 938 998 ", 939 - "<cursor.backward count=999><cursor.up count=6>", 999 + "<cursor.backward count=999><cursor.up count=7>", 940 1000 "<cursor.down count=2>", 941 1001 "<erase.down>", 942 1002 "│ ◻ group1 943 1003 │ │ ◻ group1value0 944 1004 │ └ ◻ group1value1 1005 + │ ↑/↓ to navigate • Space: select • Enter: confirm 945 1006 └ 946 1007 ", 947 - "<cursor.backward count=999><cursor.up count=6>", 1008 + "<cursor.backward count=999><cursor.up count=7>", 948 1009 "<cursor.down count=3>", 949 1010 "<erase.line><cursor.left count=1>", 950 1011 "│ │ ◼ group1value0", 951 - "<cursor.down count=3>", 952 - "<cursor.backward count=999><cursor.up count=6>", 1012 + "<cursor.down count=4>", 1013 + "<cursor.backward count=999><cursor.up count=7>", 953 1014 "<cursor.down count=3>", 954 1015 "<erase.down>", 955 1016 "│ │ ◼ group1value0 956 1017 │ └ ◻ group1value1 1018 + │ ↑/↓ to navigate • Space: select • Enter: confirm 957 1019 └ 958 1020 ", 959 - "<cursor.backward count=999><cursor.up count=6>", 1021 + "<cursor.backward count=999><cursor.up count=7>", 960 1022 "<cursor.down count=2>", 961 1023 "<erase.down>", 962 1024 "│ ◼ group1 963 1025 │ │ ◼ group1value0 964 1026 │ └ ◼ group1value1 1027 + │ ↑/↓ to navigate • Space: select • Enter: confirm 965 1028 └ 966 1029 ", 967 - "<cursor.backward count=999><cursor.up count=6>", 1030 + "<cursor.backward count=999><cursor.up count=7>", 968 1031 "<cursor.down count=2>", 969 1032 "<erase.down>", 970 1033 "│ ◻ group1 971 1034 │ │ ◼ group1value0 972 1035 │ └ ◻ group1value1 1036 + │ ↑/↓ to navigate • Space: select • Enter: confirm 973 1037 └ 974 1038 ", 975 - "<cursor.backward count=999><cursor.up count=6>", 1039 + "<cursor.backward count=999><cursor.up count=7>", 976 1040 "<cursor.down count=1>", 977 1041 "<erase.down>", 978 1042 "◇ foo ··· 991 1055 │ ◻ group1 992 1056 │ │ ◻ group1value0 993 1057 │ └ ◻ group1value1 1058 + │ ↑/↓ to navigate • Space: select • Enter: confirm 994 1059 └ 995 1060 ", 996 - "<cursor.backward count=999><cursor.up count=6>", 1061 + "<cursor.backward count=999><cursor.up count=7>", 997 1062 "<cursor.down count=2>", 998 1063 "<erase.down>", 999 1064 "│ ◼ group1 1000 1065 │ │ ◼ group1value0 1001 1066 │ └ ◼ group1value1 1067 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1002 1068 └ 1003 1069 ", 1004 - "<cursor.backward count=999><cursor.up count=6>", 1070 + "<cursor.backward count=999><cursor.up count=7>", 1005 1071 "<cursor.down count=1>", 1006 1072 "<erase.down>", 1007 1073 "◇ foo ··· 1020 1086 │ ◻ group1 1021 1087 │ │ ◻ group1value0 1022 1088 │ └ ◻ group1value1 1089 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1023 1090 └ 1024 1091 ", 1025 - "<cursor.backward count=999><cursor.up count=6>", 1092 + "<cursor.backward count=999><cursor.up count=7>", 1026 1093 "<cursor.down count=2>", 1027 1094 "<erase.down>", 1028 1095 "│ ◻ group1 1029 1096 │ │ ◻ group1value0 1030 1097 │ └ ◻ group1value1 1098 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1031 1099 └ 1032 1100 ", 1033 - "<cursor.backward count=999><cursor.up count=6>", 1101 + "<cursor.backward count=999><cursor.up count=7>", 1034 1102 "<cursor.down count=3>", 1035 1103 "<erase.line><cursor.left count=1>", 1036 1104 "│ │ ◼ group1value0", 1037 - "<cursor.down count=3>", 1038 - "<cursor.backward count=999><cursor.up count=6>", 1105 + "<cursor.down count=4>", 1106 + "<cursor.backward count=999><cursor.up count=7>", 1039 1107 "<cursor.down count=3>", 1040 1108 "<erase.down>", 1041 1109 "│ │ ◼ group1value0 1042 1110 │ └ ◻ group1value1 1111 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1043 1112 └ 1044 1113 ", 1045 - "<cursor.backward count=999><cursor.up count=6>", 1114 + "<cursor.backward count=999><cursor.up count=7>", 1046 1115 "<cursor.down count=2>", 1047 1116 "<erase.down>", 1048 1117 "│ ◼ group1 1049 1118 │ │ ◼ group1value0 1050 1119 │ └ ◼ group1value1 1120 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1051 1121 └ 1052 1122 ", 1053 - "<cursor.backward count=999><cursor.up count=6>", 1123 + "<cursor.backward count=999><cursor.up count=7>", 1054 1124 "<cursor.down count=1>", 1055 1125 "<erase.down>", 1056 1126 "◇ foo ··· 1070 1140 │ │ ◻ group1value0 1071 1141 │ │ ◻ group1value1 1072 1142 │ └ ◻ group1value2 1143 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1073 1144 └ 1074 1145 ", 1075 - "<cursor.backward count=999><cursor.up count=7>", 1146 + "<cursor.backward count=999><cursor.up count=8>", 1076 1147 "<cursor.down count=2>", 1077 1148 "<erase.down>", 1078 1149 "│ ◻ group1 1079 1150 │ │ ◻ group1value0 1080 1151 │ │ ◻ group1value1 1081 1152 │ └ ◻ group1value2 1153 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1082 1154 └ 1083 1155 ", 1084 - "<cursor.backward count=999><cursor.up count=7>", 1156 + "<cursor.backward count=999><cursor.up count=8>", 1085 1157 "<cursor.down count=3>", 1086 1158 "<erase.line><cursor.left count=1>", 1087 1159 "│ │ ◼ group1value0", 1088 - "<cursor.down count=4>", 1089 - "<cursor.backward count=999><cursor.up count=7>", 1160 + "<cursor.down count=5>", 1161 + "<cursor.backward count=999><cursor.up count=8>", 1090 1162 "<cursor.down count=3>", 1091 1163 "<erase.down>", 1092 1164 "│ │ ◼ group1value0 1093 1165 │ │ ◻ group1value1 1094 1166 │ └ ◻ group1value2 1167 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1095 1168 └ 1096 1169 ", 1097 - "<cursor.backward count=999><cursor.up count=7>", 1170 + "<cursor.backward count=999><cursor.up count=8>", 1098 1171 "<cursor.down count=4>", 1099 1172 "<erase.line><cursor.left count=1>", 1100 1173 "│ │ ◼ group1value1", 1101 - "<cursor.down count=3>", 1102 - "<cursor.backward count=999><cursor.up count=7>", 1174 + "<cursor.down count=4>", 1175 + "<cursor.backward count=999><cursor.up count=8>", 1103 1176 "<cursor.down count=1>", 1104 1177 "<erase.down>", 1105 1178 "◇ foo ··· 1118 1191 │ ◻ group1 1119 1192 │ │ ◻ group1value0 1120 1193 │ └ ◻ group1value1 1194 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1121 1195 └ 1122 1196 ", 1123 - "<cursor.backward count=999><cursor.up count=6>", 1197 + "<cursor.backward count=999><cursor.up count=7>", 1124 1198 "<cursor.down count=1>", 1125 1199 "<erase.down>", 1126 1200 "◇ foo ··· 1139 1213 │ ◻ group1 1140 1214 │ │ ◻ group1value0 1141 1215 │ └ ◻ group1value1 1216 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1142 1217 └ 1143 1218 ", 1144 - "<cursor.backward count=999><cursor.up count=6>", 1219 + "<cursor.backward count=999><cursor.up count=7>", 1145 1220 "<cursor.down count=4>", 1146 1221 "<erase.line><cursor.left count=1>", 1147 1222 "│ └ ◼ group1value1", 1148 - "<cursor.down count=2>", 1149 - "<cursor.backward count=999><cursor.up count=6>", 1223 + "<cursor.down count=3>", 1224 + "<cursor.backward count=999><cursor.up count=7>", 1150 1225 "<cursor.down count=1>", 1151 1226 "<erase.down>", 1152 1227 "◇ foo ··· 1164 1239 ◻ group1 1165 1240 │ ◻ group1value0 1166 1241 └ ◻ group1value1 1167 - 1242 + ↑/↓ to navigate • Space: select • Enter: confirm 1168 1243 ", 1169 1244 "<cursor.backward count=999><cursor.up count=5>", 1170 1245 "<cursor.down count=1>", ··· 1172 1247 "◻ group1 1173 1248 │ ◻ group1value0 1174 1249 └ ◻ group1value1 1175 - 1250 + ↑/↓ to navigate • Space: select • Enter: confirm 1176 1251 ", 1177 1252 "<cursor.backward count=999><cursor.up count=5>", 1178 1253 "<cursor.down count=2>", ··· 1198 1273 │ └ ◻ group1value0 1199 1274 │ ◻ group2 1200 1275 │ └ ◻ group2value0 1276 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1201 1277 └ 1202 1278 ", 1203 - "<cursor.backward count=999><cursor.up count=7>", 1279 + "<cursor.backward count=999><cursor.up count=8>", 1204 1280 "<cursor.down count=2>", 1205 1281 "<erase.down>", 1206 1282 "│ ◻ group1 1207 1283 │ └ ◻ group1value0 1208 1284 │ ◻ group2 1209 1285 │ └ ◻ group2value0 1286 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1210 1287 └ 1211 1288 ", 1212 - "<cursor.backward count=999><cursor.up count=7>", 1289 + "<cursor.backward count=999><cursor.up count=8>", 1213 1290 "<cursor.down count=2>", 1214 1291 "<erase.down>", 1215 1292 "│ ◼ group1 1216 1293 │ └ ◼ group1value0 1217 1294 │ ◻ group2 1218 1295 │ └ ◻ group2value0 1296 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1219 1297 └ 1220 1298 ", 1221 - "<cursor.backward count=999><cursor.up count=7>", 1299 + "<cursor.backward count=999><cursor.up count=8>", 1222 1300 "<cursor.down count=1>", 1223 1301 "<erase.down>", 1224 1302 "◇ foo ··· 1242 1320 │ 1243 1321 │ ◻ group2 1244 1322 │ └ ◻ group2value0 1323 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1245 1324 └ 1246 1325 ", 1247 - "<cursor.backward count=999><cursor.up count=11>", 1326 + "<cursor.backward count=999><cursor.up count=12>", 1248 1327 "<cursor.down count=4>", 1249 1328 "<erase.down>", 1250 1329 "│ ◻ group1 ··· 1253 1332 │ 1254 1333 │ ◻ group2 1255 1334 │ └ ◻ group2value0 1335 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1256 1336 └ 1257 1337 ", 1258 - "<cursor.backward count=999><cursor.up count=11>", 1338 + "<cursor.backward count=999><cursor.up count=12>", 1259 1339 "<cursor.down count=4>", 1260 1340 "<erase.down>", 1261 1341 "│ ◼ group1 ··· 1264 1344 │ 1265 1345 │ ◻ group2 1266 1346 │ └ ◻ group2value0 1347 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1267 1348 └ 1268 1349 ", 1269 - "<cursor.backward count=999><cursor.up count=11>", 1350 + "<cursor.backward count=999><cursor.up count=12>", 1270 1351 "<cursor.down count=1>", 1271 1352 "<erase.down>", 1272 1353 "◇ foo ··· 1285 1366 │ ◻ group1 1286 1367 │ │ ◻ group1value0 1287 1368 │ └ ◼ group1value1 1369 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1288 1370 └ 1289 1371 ", 1290 - "<cursor.backward count=999><cursor.up count=6>", 1372 + "<cursor.backward count=999><cursor.up count=7>", 1291 1373 "<cursor.down count=1>", 1292 1374 "<erase.down>", 1293 1375 "◇ foo ··· 1309 1391 │ │ ◻ group1value2 1310 1392 │ │ ◻ group1value3 1311 1393 │ ... 1394 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1312 1395 └ 1313 1396 ", 1314 - "<cursor.backward count=999><cursor.up count=9>", 1397 + "<cursor.backward count=999><cursor.up count=10>", 1315 1398 "<cursor.down count=2>", 1316 1399 "<erase.down>", 1317 1400 "│ ◻ group1 ··· 1320 1403 │ │ ◻ group1value2 1321 1404 │ │ ◻ group1value3 1322 1405 │ ... 1406 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1323 1407 └ 1324 1408 ", 1325 - "<cursor.backward count=999><cursor.up count=9>", 1409 + "<cursor.backward count=999><cursor.up count=10>", 1326 1410 "<cursor.down count=3>", 1327 1411 "<erase.down>", 1328 1412 "│ │ ◻ group1value0 ··· 1330 1414 │ │ ◻ group1value2 1331 1415 │ │ ◻ group1value3 1332 1416 │ ... 1417 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1333 1418 └ 1334 1419 ", 1335 - "<cursor.backward count=999><cursor.up count=9>", 1420 + "<cursor.backward count=999><cursor.up count=10>", 1336 1421 "<cursor.down count=4>", 1337 1422 "<erase.down>", 1338 1423 "│ │ ◻ group1value1 1339 1424 │ │ ◻ group1value2 1340 1425 │ │ ◻ group1value3 1341 1426 │ ... 1427 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1342 1428 └ 1343 1429 ", 1344 - "<cursor.backward count=999><cursor.up count=9>", 1430 + "<cursor.backward count=999><cursor.up count=10>", 1345 1431 "<cursor.down count=2>", 1346 1432 "<erase.down>", 1347 1433 "│ ... ··· 1350 1436 │ │ ◻ group1value3 1351 1437 │ │ ◻ group1value4 1352 1438 │ ... 1439 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1353 1440 └ 1354 1441 ", 1355 - "<cursor.backward count=999><cursor.up count=9>", 1442 + "<cursor.backward count=999><cursor.up count=10>", 1356 1443 "<cursor.down count=3>", 1357 1444 "<erase.down>", 1358 1445 "│ │ ◻ group1value2 ··· 1360 1447 │ │ ◻ group1value4 1361 1448 │ └ ◻ group1value5 1362 1449 │ ... 1450 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1363 1451 └ 1364 1452 ", 1365 - "<cursor.backward count=999><cursor.up count=9>", 1453 + "<cursor.backward count=999><cursor.up count=10>", 1366 1454 "<cursor.down count=3>", 1367 1455 "<erase.down>", 1368 1456 "│ │ ◻ group1value3 ··· 1370 1458 │ └ ◻ group1value5 1371 1459 │ ◻ group2 1372 1460 │ ... 1461 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1373 1462 └ 1374 1463 ", 1375 - "<cursor.backward count=999><cursor.up count=9>", 1464 + "<cursor.backward count=999><cursor.up count=10>", 1376 1465 "<cursor.down count=5>", 1377 1466 "<erase.line><cursor.left count=1>", 1378 1467 "│ └ ◼ group1value5", 1379 - "<cursor.down count=4>", 1380 - "<cursor.backward count=999><cursor.up count=9>", 1468 + "<cursor.down count=5>", 1469 + "<cursor.backward count=999><cursor.up count=10>", 1381 1470 "<cursor.down count=1>", 1382 1471 "<erase.down>", 1383 1472 "◇ foo ··· 1396 1485 │ ◻ group1 1397 1486 │ │ ◻ group1value0 1398 1487 │ └ ◻ group1value1 1488 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1399 1489 └ 1400 1490 ", 1401 - "<cursor.backward count=999><cursor.up count=6>", 1491 + "<cursor.backward count=999><cursor.up count=7>", 1402 1492 "<cursor.down count=1>", 1403 1493 "<erase.down>", 1404 1494 "▲ foo ··· 1415 1505 │ ◻ group1 1416 1506 │ │ ◻ group1value0 1417 1507 │ └ ◻ group1value1 1508 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1418 1509 └ 1419 1510 ", 1420 - "<cursor.backward count=999><cursor.up count=6>", 1511 + "<cursor.backward count=999><cursor.up count=7>", 1421 1512 "<cursor.down count=3>", 1422 1513 "<erase.line><cursor.left count=1>", 1423 1514 "│ │ ◼ group1value0", 1424 - "<cursor.down count=3>", 1425 - "<cursor.backward count=999><cursor.up count=6>", 1515 + "<cursor.down count=4>", 1516 + "<cursor.backward count=999><cursor.up count=7>", 1426 1517 "<cursor.down count=1>", 1427 1518 "<erase.down>", 1428 1519 "◇ foo ··· 1443 1534 │ └ ◻ group1value1 1444 1535 │ ◻ group2 1445 1536 │ └ ◻ group2value0 1537 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1446 1538 └ 1447 1539 ", 1448 - "<cursor.backward count=999><cursor.up count=8>", 1540 + "<cursor.backward count=999><cursor.up count=9>", 1449 1541 "<cursor.down count=2>", 1450 1542 "<erase.down>", 1451 1543 "│ ◻ group1 ··· 1453 1545 │ └ ◻ group1value1 1454 1546 │ ◻ group2 1455 1547 │ └ ◻ group2value0 1548 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1456 1549 └ 1457 1550 ", 1458 - "<cursor.backward count=999><cursor.up count=8>", 1551 + "<cursor.backward count=999><cursor.up count=9>", 1459 1552 "<cursor.down count=3>", 1460 1553 "<erase.line><cursor.left count=1>", 1461 1554 "│ │ ◼ group1value0", 1462 - "<cursor.down count=5>", 1463 - "<cursor.backward count=999><cursor.up count=8>", 1555 + "<cursor.down count=6>", 1556 + "<cursor.backward count=999><cursor.up count=9>", 1464 1557 "<cursor.down count=1>", 1465 1558 "<erase.down>", 1466 1559 "◇ foo ··· 1479 1572 │  group1 1480 1573 │  ◻ group1value0 1481 1574 │  ◻ group1value1 1575 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1482 1576 └ 1483 1577 ", 1484 - "<cursor.backward count=999><cursor.up count=6>", 1578 + "<cursor.backward count=999><cursor.up count=7>", 1485 1579 "<cursor.down count=3>", 1486 1580 "<erase.line><cursor.left count=1>", 1487 1581 "│  ◼ group1value0", 1488 - "<cursor.down count=3>", 1489 - "<cursor.backward count=999><cursor.up count=6>", 1582 + "<cursor.down count=4>", 1583 + "<cursor.backward count=999><cursor.up count=7>", 1490 1584 "<cursor.down count=1>", 1491 1585 "<erase.down>", 1492 1586 "◇ foo ··· 1505 1599 │  group1 1506 1600 │  ◻ group1value0 1507 1601 │  ◻ group1value1 1602 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1508 1603 └ 1509 1604 ", 1510 - "<cursor.backward count=999><cursor.up count=6>", 1605 + "<cursor.backward count=999><cursor.up count=7>", 1511 1606 "<cursor.down count=3>", 1512 1607 "<erase.line><cursor.left count=1>", 1513 1608 "│  ◼ group1value0", 1514 - "<cursor.down count=3>", 1515 - "<cursor.backward count=999><cursor.up count=6>", 1609 + "<cursor.down count=4>", 1610 + "<cursor.backward count=999><cursor.up count=7>", 1516 1611 "<cursor.down count=3>", 1517 1612 "<erase.down>", 1518 1613 "│  ◼ group1value0 1519 1614 │  ◻ group1value1 1615 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1520 1616 └ 1521 1617 ", 1522 - "<cursor.backward count=999><cursor.up count=6>", 1618 + "<cursor.backward count=999><cursor.up count=7>", 1523 1619 "<cursor.down count=4>", 1524 1620 "<erase.line><cursor.left count=1>", 1525 1621 "│  ◼ group1value1", 1526 - "<cursor.down count=2>", 1527 - "<cursor.backward count=999><cursor.up count=6>", 1622 + "<cursor.down count=3>", 1623 + "<cursor.backward count=999><cursor.up count=7>", 1528 1624 "<cursor.down count=1>", 1529 1625 "<erase.down>", 1530 1626 "◇ foo ··· 1546 1642 │ │ ◻ group1value2 1547 1643 │ │ ◻ group1value3 1548 1644 │ ... 1645 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1549 1646 └ 1550 1647 ", 1551 - "<cursor.backward count=999><cursor.up count=9>", 1648 + "<cursor.backward count=999><cursor.up count=10>", 1552 1649 "<cursor.down count=2>", 1553 1650 "<erase.down>", 1554 1651 "│ ◻ group1 ··· 1557 1654 │ │ ◻ group1value2 1558 1655 │ │ ◻ group1value3 1559 1656 │ ... 1657 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1560 1658 └ 1561 1659 ", 1562 - "<cursor.backward count=999><cursor.up count=9>", 1660 + "<cursor.backward count=999><cursor.up count=10>", 1563 1661 "<cursor.down count=3>", 1564 1662 "<erase.down>", 1565 1663 "│ │ ◻ group1value0 ··· 1567 1665 │ │ ◻ group1value2 1568 1666 │ │ ◻ group1value3 1569 1667 │ ... 1668 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1570 1669 └ 1571 1670 ", 1572 - "<cursor.backward count=999><cursor.up count=9>", 1671 + "<cursor.backward count=999><cursor.up count=10>", 1573 1672 "<cursor.down count=4>", 1574 1673 "<erase.down>", 1575 1674 "│ │ ◻ group1value1 1576 1675 │ │ ◻ group1value2 1577 1676 │ │ ◻ group1value3 1578 1677 │ ... 1678 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1579 1679 └ 1580 1680 ", 1581 - "<cursor.backward count=999><cursor.up count=9>", 1681 + "<cursor.backward count=999><cursor.up count=10>", 1582 1682 "<cursor.down count=2>", 1583 1683 "<erase.down>", 1584 1684 "│ ... ··· 1587 1687 │ │ ◻ group1value3 1588 1688 │ │ ◻ group1value4 1589 1689 │ ... 1690 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1590 1691 └ 1591 1692 ", 1592 - "<cursor.backward count=999><cursor.up count=9>", 1693 + "<cursor.backward count=999><cursor.up count=10>", 1593 1694 "<cursor.down count=3>", 1594 1695 "<erase.down>", 1595 1696 "│ │ ◻ group1value2 ··· 1597 1698 │ │ ◻ group1value4 1598 1699 │ └ ◻ group1value5 1599 1700 │ ... 1701 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1600 1702 └ 1601 1703 ", 1602 - "<cursor.backward count=999><cursor.up count=9>", 1704 + "<cursor.backward count=999><cursor.up count=10>", 1603 1705 "<cursor.down count=3>", 1604 1706 "<erase.down>", 1605 1707 "│ │ ◻ group1value3 ··· 1607 1709 │ └ ◻ group1value5 1608 1710 │ ◻ group2 1609 1711 │ ... 1712 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1610 1713 └ 1611 1714 ", 1612 - "<cursor.backward count=999><cursor.up count=9>", 1715 + "<cursor.backward count=999><cursor.up count=10>", 1613 1716 "<cursor.down count=3>", 1614 1717 "<erase.down>", 1615 1718 "│ │ ◻ group1value4 ··· 1617 1720 │ ◻ group2 1618 1721 │ │ ◻ group2value0 1619 1722 │ ... 1723 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1620 1724 └ 1621 1725 ", 1622 - "<cursor.backward count=999><cursor.up count=9>", 1726 + "<cursor.backward count=999><cursor.up count=10>", 1623 1727 "<cursor.down count=3>", 1624 1728 "<erase.down>", 1625 1729 "│ └ ◻ group1value5 ··· 1627 1731 │ │ ◻ group2value0 1628 1732 │ │ ◻ group2value1 1629 1733 │ ... 1734 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1630 1735 └ 1631 1736 ", 1632 - "<cursor.backward count=999><cursor.up count=9>", 1737 + "<cursor.backward count=999><cursor.up count=10>", 1633 1738 "<cursor.down count=3>", 1634 1739 "<erase.down>", 1635 1740 "│ ◻ group2 ··· 1637 1742 │ │ ◻ group2value1 1638 1743 │ │ ◻ group2value2 1639 1744 │ ... 1745 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1640 1746 └ 1641 1747 ", 1642 - "<cursor.backward count=999><cursor.up count=9>", 1748 + "<cursor.backward count=999><cursor.up count=10>", 1643 1749 "<cursor.down count=3>", 1644 1750 "<erase.down>", 1645 1751 "│ │ ◻ group2value0 ··· 1647 1753 │ │ ◻ group2value2 1648 1754 │ │ ◻ group2value3 1649 1755 │ ... 1756 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1650 1757 └ 1651 1758 ", 1652 - "<cursor.backward count=999><cursor.up count=9>", 1759 + "<cursor.backward count=999><cursor.up count=10>", 1653 1760 "<cursor.down count=3>", 1654 1761 "<erase.down>", 1655 1762 "│ │ ◻ group2value1 ··· 1657 1764 │ │ ◻ group2value3 1658 1765 │ │ ◻ group2value4 1659 1766 │ └ ◻ group2value5 1767 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1660 1768 └ 1661 1769 ", 1662 - "<cursor.backward count=999><cursor.up count=9>", 1770 + "<cursor.backward count=999><cursor.up count=10>", 1663 1771 "<cursor.down count=5>", 1664 1772 "<erase.down>", 1665 1773 "│ │ ◻ group2value3 1666 1774 │ │ ◻ group2value4 1667 1775 │ └ ◻ group2value5 1776 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1668 1777 └ 1669 1778 ", 1670 - "<cursor.backward count=999><cursor.up count=9>", 1779 + "<cursor.backward count=999><cursor.up count=10>", 1671 1780 "<cursor.down count=6>", 1672 1781 "<erase.down>", 1673 1782 "│ │ ◻ group2value4 1674 1783 │ └ ◻ group2value5 1784 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1675 1785 └ 1676 1786 ", 1677 - "<cursor.backward count=999><cursor.up count=9>", 1787 + "<cursor.backward count=999><cursor.up count=10>", 1678 1788 "<cursor.down count=2>", 1679 1789 "<erase.down>", 1680 1790 "│ ◻ group1 ··· 1683 1793 │ │ ◻ group1value2 1684 1794 │ │ ◻ group1value3 1685 1795 │ ... 1796 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1686 1797 └ 1687 1798 ", 1688 - "<cursor.backward count=999><cursor.up count=9>", 1799 + "<cursor.backward count=999><cursor.up count=10>", 1689 1800 "<cursor.down count=2>", 1690 1801 "<erase.down>", 1691 1802 "│ ◻ group1 ··· 1694 1805 │ │ ◻ group1value2 1695 1806 │ │ ◻ group1value3 1696 1807 │ ... 1808 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1697 1809 └ 1698 1810 ", 1699 - "<cursor.backward count=999><cursor.up count=9>", 1811 + "<cursor.backward count=999><cursor.up count=10>", 1700 1812 "<cursor.down count=3>", 1701 1813 "<erase.line><cursor.left count=1>", 1702 1814 "│ │ ◼ group1value0", 1703 - "<cursor.down count=6>", 1704 - "<cursor.backward count=999><cursor.up count=9>", 1815 + "<cursor.down count=7>", 1816 + "<cursor.backward count=999><cursor.up count=10>", 1705 1817 "<cursor.down count=1>", 1706 1818 "<erase.down>", 1707 1819 "◇ foo ··· 1723 1835 │ │ ◻ group1value2 1724 1836 │ │ ◻ group1value3 1725 1837 │ ... 1838 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1726 1839 └ 1727 1840 ", 1728 - "<cursor.backward count=999><cursor.up count=9>", 1841 + "<cursor.backward count=999><cursor.up count=10>", 1729 1842 "<cursor.down count=2>", 1730 1843 "<erase.down>", 1731 1844 "│ ... ··· 1734 1847 │ │ ◻ group2value3 1735 1848 │ │ ◻ group2value4 1736 1849 │ └ ◻ group2value5 1850 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1737 1851 └ 1738 1852 ", 1739 - "<cursor.backward count=999><cursor.up count=9>", 1853 + "<cursor.backward count=999><cursor.up count=10>", 1740 1854 "<cursor.down count=7>", 1741 1855 "<erase.line><cursor.left count=1>", 1742 1856 "│ └ ◼ group2value5", 1743 - "<cursor.down count=2>", 1744 - "<cursor.backward count=999><cursor.up count=9>", 1857 + "<cursor.down count=3>", 1858 + "<cursor.backward count=999><cursor.up count=10>", 1745 1859 "<cursor.down count=1>", 1746 1860 "<erase.down>", 1747 1861 "◇ foo ··· 1760 1874 │ ◻ group1 1761 1875 │ │ ◻ value0 1762 1876 │ └ ◻ value1 1877 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1763 1878 └ 1764 1879 ", 1765 - "<cursor.backward count=999><cursor.up count=6>", 1880 + "<cursor.backward count=999><cursor.up count=7>", 1766 1881 "<cursor.down count=2>", 1767 1882 "<erase.down>", 1768 1883 "│ ◻ group1 1769 1884 │ │ ◻ value0 1770 1885 │ └ ◻ value1 1886 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1771 1887 └ 1772 1888 ", 1773 - "<cursor.backward count=999><cursor.up count=6>", 1889 + "<cursor.backward count=999><cursor.up count=7>", 1774 1890 "<cursor.down count=3>", 1775 1891 "<erase.line><cursor.left count=1>", 1776 1892 "│ │ ◼ value0", 1777 - "<cursor.down count=3>", 1778 - "<cursor.backward count=999><cursor.up count=6>", 1893 + "<cursor.down count=4>", 1894 + "<cursor.backward count=999><cursor.up count=7>", 1779 1895 "<cursor.down count=1>", 1780 1896 "<erase.down>", 1781 1897 "◇ foo ··· 1793 1909 ◻ group1 1794 1910 │ ◻ group1value0 1795 1911 └ ◻ group1value1 1796 - 1912 + ↑/↓ to navigate • Space: select • Enter: confirm 1797 1913 ", 1798 1914 "<cursor.backward count=999><cursor.up count=5>", 1799 1915 "<cursor.down count=1>", ··· 1801 1917 "◻ group1 1802 1918 │ ◻ group1value0 1803 1919 └ ◻ group1value1 1804 - 1920 + ↑/↓ to navigate • Space: select • Enter: confirm 1805 1921 ", 1806 1922 "<cursor.backward count=999><cursor.up count=5>", 1807 1923 "<cursor.down count=2>",
+468 -150
packages/prompts/test/__snapshots__/multi-select.test.ts.snap
··· 7 7 ◆ foo 8 8 │ ◻ opt0 9 9 │ ◻ opt1 10 + │ ↑/↓ to navigate • Space: select • Enter: confirm 10 11 └ 11 12 ", 12 13 " ··· 22 23 ◆ foo 23 24 │ ◻ opt0 24 25 │ ◻ opt1 26 + │ ↑/↓ to navigate • Space: select • Enter: confirm 25 27 └ 26 28 ", 27 - "<cursor.backward count=999><cursor.up count=5>", 29 + "<cursor.backward count=999><cursor.up count=6>", 28 30 "<cursor.down count=1>", 29 31 "<erase.down>", 30 32 "■ foo ··· 42 44 ◆ foo 43 45 │ ◻ opt0 (Hint 0) 44 46 │ ◻ opt1 47 + │ ↑/↓ to navigate • Space: select • Enter: confirm 45 48 └ 46 49 ", 47 - "<cursor.backward count=999><cursor.up count=5>", 50 + "<cursor.backward count=999><cursor.up count=6>", 48 51 "<cursor.down count=2>", 49 52 "<erase.line><cursor.left count=1>", 50 53 "│ ◼ opt0 (Hint 0)", 51 - "<cursor.down count=3>", 52 - "<cursor.backward count=999><cursor.up count=5>", 54 + "<cursor.down count=4>", 55 + "<cursor.backward count=999><cursor.up count=6>", 53 56 "<cursor.down count=1>", 54 57 "<erase.down>", 55 58 "◇ foo ··· 67 70 ◆ foo 68 71 │ ◻ opt0 69 72 │ ◻ opt1 73 + │ ↑/↓ to navigate • Space: select • Enter: confirm 70 74 └ 71 75 ", 72 - "<cursor.backward count=999><cursor.up count=5>", 76 + "<cursor.backward count=999><cursor.up count=6>", 73 77 "<cursor.down count=3>", 74 78 "<erase.line><cursor.left count=1>", 75 79 "│ ◼ opt1", 76 - "<cursor.down count=2>", 77 - "<cursor.backward count=999><cursor.up count=5>", 80 + "<cursor.down count=3>", 81 + "<cursor.backward count=999><cursor.up count=6>", 78 82 "<cursor.down count=1>", 79 83 "<erase.down>", 80 84 "◇ foo ··· 92 96 ◆ foo 93 97 │ ◻ Option 0 94 98 │ ◻ Option 1 99 + │ ↑/↓ to navigate • Space: select • Enter: confirm 95 100 └ 96 101 ", 97 - "<cursor.backward count=999><cursor.up count=5>", 102 + "<cursor.backward count=999><cursor.up count=6>", 98 103 "<cursor.down count=2>", 99 104 "<erase.line><cursor.left count=1>", 100 105 "│ ◼ Option 0", 101 - "<cursor.down count=3>", 102 - "<cursor.backward count=999><cursor.up count=5>", 106 + "<cursor.down count=4>", 107 + "<cursor.backward count=999><cursor.up count=6>", 103 108 "<cursor.down count=1>", 104 109 "<erase.down>", 105 110 "◇ foo ··· 117 122 ◆ foo 118 123 │ ◻ opt0 119 124 │ ◼ opt1 125 + │ ↑/↓ to navigate • Space: select • Enter: confirm 120 126 └ 121 127 ", 122 - "<cursor.backward count=999><cursor.up count=5>", 128 + "<cursor.backward count=999><cursor.up count=6>", 123 129 "<cursor.down count=1>", 124 130 "<erase.down>", 125 131 "◇ foo ··· 137 143 ◆ foo 138 144 │ ◻ opt0 139 145 │ ◻ opt1 146 + │ ↑/↓ to navigate • Space: select • Enter: confirm 140 147 └ 141 148 ", 142 - "<cursor.backward count=999><cursor.up count=5>", 149 + "<cursor.backward count=999><cursor.up count=6>", 143 150 "<cursor.down count=1>", 144 151 "<erase.down>", 145 152 "◇ foo ··· 156 163 "◆ foo 157 164 ◻ opt0 158 165 ◻ opt1 159 - 166 + ↑/↓ to navigate • Space: select • Enter: confirm 160 167 ", 161 168 "<cursor.backward count=999><cursor.up count=4>", 162 169 "<cursor.down count=1>", ··· 173 180 ] 174 181 `; 175 182 183 + exports[`multiselect (isCI = false) > maxItems accounts for instruction footer 1`] = ` 184 + [ 185 + "<cursor.hide>", 186 + "│ 187 + ◆ foo 188 + │ ◻ opt0 189 + │ ◻ opt1 190 + │ ◻ opt2 191 + │ ◻ opt3 192 + │ ◻ opt4 193 + │ ... 194 + │ ↑/↓ to navigate • Space: select • Enter: confirm 195 + └ 196 + ", 197 + "<cursor.backward count=999><cursor.up count=10>", 198 + "<cursor.down count=2>", 199 + "<erase.down>", 200 + "│ ◻ opt0 201 + │ ◻ opt1 202 + │ ◻ opt2 203 + │ ◻ opt3 204 + │ ◻ opt4 205 + │ ... 206 + │ ↑/↓ to navigate • Space: select • Enter: confirm 207 + └ 208 + ", 209 + "<cursor.backward count=999><cursor.up count=10>", 210 + "<cursor.down count=3>", 211 + "<erase.down>", 212 + "│ ◻ opt1 213 + │ ◻ opt2 214 + │ ◻ opt3 215 + │ ◻ opt4 216 + │ ... 217 + │ ↑/↓ to navigate • Space: select • Enter: confirm 218 + └ 219 + ", 220 + "<cursor.backward count=999><cursor.up count=10>", 221 + "<cursor.down count=4>", 222 + "<erase.down>", 223 + "│ ◻ opt2 224 + │ ◻ opt3 225 + │ ◻ opt4 226 + │ ... 227 + │ ↑/↓ to navigate • Space: select • Enter: confirm 228 + └ 229 + ", 230 + "<cursor.backward count=999><cursor.up count=10>", 231 + "<cursor.down count=2>", 232 + "<erase.down>", 233 + "│ ... 234 + │ ◻ opt2 235 + │ ◻ opt3 236 + │ ◻ opt4 237 + │ ◻ opt5 238 + │ ... 239 + │ ↑/↓ to navigate • Space: select • Enter: confirm 240 + └ 241 + ", 242 + "<cursor.backward count=999><cursor.up count=10>", 243 + "<cursor.down count=3>", 244 + "<erase.down>", 245 + "│ ◻ opt3 246 + │ ◻ opt4 247 + │ ◻ opt5 248 + │ ◻ opt6 249 + │ ... 250 + │ ↑/↓ to navigate • Space: select • Enter: confirm 251 + └ 252 + ", 253 + "<cursor.backward count=999><cursor.up count=10>", 254 + "<cursor.down count=3>", 255 + "<erase.down>", 256 + "│ ◻ opt4 257 + │ ◻ opt5 258 + │ ◻ opt6 259 + │ ◻ opt7 260 + │ ... 261 + │ ↑/↓ to navigate • Space: select • Enter: confirm 262 + └ 263 + ", 264 + "<cursor.backward count=999><cursor.up count=10>", 265 + "<cursor.down count=5>", 266 + "<erase.line><cursor.left count=1>", 267 + "│ ◼ opt6", 268 + "<cursor.down count=5>", 269 + "<cursor.backward count=999><cursor.up count=10>", 270 + "<cursor.down count=1>", 271 + "<erase.down>", 272 + "◇ foo 273 + │ opt6", 274 + " 275 + ", 276 + "<cursor.show>", 277 + ] 278 + `; 279 + 176 280 exports[`multiselect (isCI = false) > maxItems renders a sliding window 1`] = ` 177 281 [ 178 282 "<cursor.hide>", ··· 184 288 │ ◻ opt3 185 289 │ ◻ opt4 186 290 │ ... 291 + │ ↑/↓ to navigate • Space: select • Enter: confirm 187 292 └ 188 293 ", 189 - "<cursor.backward count=999><cursor.up count=9>", 294 + "<cursor.backward count=999><cursor.up count=10>", 190 295 "<cursor.down count=2>", 191 296 "<erase.down>", 192 297 "│ ◻ opt0 ··· 195 300 │ ◻ opt3 196 301 │ ◻ opt4 197 302 │ ... 303 + │ ↑/↓ to navigate • Space: select • Enter: confirm 198 304 └ 199 305 ", 200 - "<cursor.backward count=999><cursor.up count=9>", 306 + "<cursor.backward count=999><cursor.up count=10>", 201 307 "<cursor.down count=3>", 202 308 "<erase.down>", 203 309 "│ ◻ opt1 ··· 205 311 │ ◻ opt3 206 312 │ ◻ opt4 207 313 │ ... 314 + │ ↑/↓ to navigate • Space: select • Enter: confirm 208 315 └ 209 316 ", 210 - "<cursor.backward count=999><cursor.up count=9>", 317 + "<cursor.backward count=999><cursor.up count=10>", 211 318 "<cursor.down count=4>", 212 319 "<erase.down>", 213 320 "│ ◻ opt2 214 321 │ ◻ opt3 215 322 │ ◻ opt4 216 323 │ ... 324 + │ ↑/↓ to navigate • Space: select • Enter: confirm 217 325 └ 218 326 ", 219 - "<cursor.backward count=999><cursor.up count=9>", 327 + "<cursor.backward count=999><cursor.up count=10>", 220 328 "<cursor.down count=2>", 221 329 "<erase.down>", 222 330 "│ ... ··· 225 333 │ ◻ opt4 226 334 │ ◻ opt5 227 335 │ ... 336 + │ ↑/↓ to navigate • Space: select • Enter: confirm 228 337 └ 229 338 ", 230 - "<cursor.backward count=999><cursor.up count=9>", 339 + "<cursor.backward count=999><cursor.up count=10>", 231 340 "<cursor.down count=3>", 232 341 "<erase.down>", 233 342 "│ ◻ opt3 ··· 235 344 │ ◻ opt5 236 345 │ ◻ opt6 237 346 │ ... 347 + │ ↑/↓ to navigate • Space: select • Enter: confirm 238 348 └ 239 349 ", 240 - "<cursor.backward count=999><cursor.up count=9>", 350 + "<cursor.backward count=999><cursor.up count=10>", 241 351 "<cursor.down count=3>", 242 352 "<erase.down>", 243 353 "│ ◻ opt4 ··· 245 355 │ ◻ opt6 246 356 │ ◻ opt7 247 357 │ ... 358 + │ ↑/↓ to navigate • Space: select • Enter: confirm 248 359 └ 249 360 ", 250 - "<cursor.backward count=999><cursor.up count=9>", 361 + "<cursor.backward count=999><cursor.up count=10>", 251 362 "<cursor.down count=5>", 252 363 "<erase.line><cursor.left count=1>", 253 364 "│ ◼ opt6", 254 - "<cursor.down count=4>", 255 - "<cursor.backward count=999><cursor.up count=9>", 365 + "<cursor.down count=5>", 366 + "<cursor.backward count=999><cursor.up count=10>", 256 367 "<cursor.down count=1>", 257 368 "<erase.down>", 258 369 "◇ foo ··· 271 382 │ ◻ opt0 272 383 │ ◻ opt1 273 384 │ ◻ opt2 (Hint 2) 385 + │ ↑/↓ to navigate • Space: select • Enter: confirm 274 386 └ 275 387 ", 276 - "<cursor.backward count=999><cursor.up count=6>", 388 + "<cursor.backward count=999><cursor.up count=7>", 277 389 "<cursor.down count=3>", 278 390 "<erase.line><cursor.left count=1>", 279 391 "│ ◼ opt1", 280 - "<cursor.down count=3>", 281 - "<cursor.backward count=999><cursor.up count=6>", 392 + "<cursor.down count=4>", 393 + "<cursor.backward count=999><cursor.up count=7>", 282 394 "<cursor.down count=1>", 283 395 "<erase.down>", 284 396 "◇ foo ··· 289 401 ] 290 402 `; 291 403 404 + exports[`multiselect (isCI = false) > renders instructions without guide 1`] = ` 405 + [ 406 + "<cursor.hide>", 407 + "◆ foo 408 + ◻ opt0 409 + ◻ opt1 410 + ↑/↓ to navigate • Space: select • Enter: confirm 411 + ", 412 + "<cursor.backward count=999><cursor.up count=4>", 413 + "<erase.down>", 414 + "◇ foo 415 + none", 416 + " 417 + ", 418 + "<cursor.show>", 419 + ] 420 + `; 421 + 292 422 exports[`multiselect (isCI = false) > renders message 1`] = ` 293 423 [ 294 424 "<cursor.hide>", ··· 296 426 ◆ foo 297 427 │ ◻ opt0 298 428 │ ◻ opt1 429 + │ ↑/↓ to navigate • Space: select • Enter: confirm 299 430 └ 300 431 ", 301 - "<cursor.backward count=999><cursor.up count=5>", 432 + "<cursor.backward count=999><cursor.up count=6>", 302 433 "<cursor.down count=2>", 303 434 "<erase.line><cursor.left count=1>", 304 435 "│ ◼ opt0", 305 - "<cursor.down count=3>", 306 - "<cursor.backward count=999><cursor.up count=5>", 436 + "<cursor.down count=4>", 437 + "<cursor.backward count=999><cursor.up count=6>", 307 438 "<cursor.down count=1>", 308 439 "<erase.down>", 309 440 "◇ foo ··· 322 453 │ ◻ opt0 323 454 │ ◻ opt1 324 455 │ ◻ opt2 456 + │ ↑/↓ to navigate • Space: select • Enter: confirm 325 457 └ 326 458 ", 327 - "<cursor.backward count=999><cursor.up count=6>", 459 + "<cursor.backward count=999><cursor.up count=7>", 328 460 "<cursor.down count=2>", 329 461 "<erase.line><cursor.left count=1>", 330 462 "│ ◼ opt0", 331 - "<cursor.down count=4>", 332 - "<cursor.backward count=999><cursor.up count=6>", 463 + "<cursor.down count=5>", 464 + "<cursor.backward count=999><cursor.up count=7>", 333 465 "<cursor.down count=2>", 334 466 "<erase.down>", 335 467 "│ ◼ opt0 336 468 │ ◻ opt1 337 469 │ ◻ opt2 470 + │ ↑/↓ to navigate • Space: select • Enter: confirm 338 471 └ 339 472 ", 340 - "<cursor.backward count=999><cursor.up count=6>", 473 + "<cursor.backward count=999><cursor.up count=7>", 341 474 "<cursor.down count=3>", 342 475 "<erase.line><cursor.left count=1>", 343 476 "│ ◼ opt1", 344 - "<cursor.down count=3>", 345 - "<cursor.backward count=999><cursor.up count=6>", 477 + "<cursor.down count=4>", 478 + "<cursor.backward count=999><cursor.up count=7>", 346 479 "<cursor.down count=1>", 347 480 "<erase.down>", 348 481 "■ foo ··· 362 495 │ ◻ opt0 363 496 │ ◻ opt1 364 497 │ ◻ opt2 498 + │ ↑/↓ to navigate • Space: select • Enter: confirm 365 499 └ 366 500 ", 367 - "<cursor.backward count=999><cursor.up count=6>", 501 + "<cursor.backward count=999><cursor.up count=7>", 368 502 "<cursor.down count=2>", 369 503 "<erase.line><cursor.left count=1>", 370 504 "│ ◼ opt0", 371 - "<cursor.down count=4>", 372 - "<cursor.backward count=999><cursor.up count=6>", 505 + "<cursor.down count=5>", 506 + "<cursor.backward count=999><cursor.up count=7>", 373 507 "<cursor.down count=2>", 374 508 "<erase.down>", 375 509 "│ ◼ opt0 376 510 │ ◻ opt1 377 511 │ ◻ opt2 512 + │ ↑/↓ to navigate • Space: select • Enter: confirm 378 513 └ 379 514 ", 380 - "<cursor.backward count=999><cursor.up count=6>", 515 + "<cursor.backward count=999><cursor.up count=7>", 381 516 "<cursor.down count=3>", 382 517 "<erase.line><cursor.left count=1>", 383 518 "│ ◼ opt1", 384 - "<cursor.down count=3>", 385 - "<cursor.backward count=999><cursor.up count=6>", 519 + "<cursor.down count=4>", 520 + "<cursor.backward count=999><cursor.up count=7>", 386 521 "<cursor.down count=3>", 387 522 "<erase.down>", 388 523 "│ ◼ opt1 389 524 │ ◻ opt2 525 + │ ↑/↓ to navigate • Space: select • Enter: confirm 390 526 └ 391 527 ", 392 - "<cursor.backward count=999><cursor.up count=6>", 528 + "<cursor.backward count=999><cursor.up count=7>", 393 529 "<cursor.down count=1>", 394 530 "<erase.down>", 395 531 "◇ foo ··· 407 543 ◆ foo 408 544 │ ◻ opt0 409 545 │ ◻ opt1 546 + │ ↑/↓ to navigate • Space: select • Enter: confirm 410 547 └ 411 548 ", 412 - "<cursor.backward count=999><cursor.up count=5>", 549 + "<cursor.backward count=999><cursor.up count=6>", 413 550 "<cursor.down count=1>", 414 551 "<erase.down>", 415 552 "▲ foo ··· 424 561 "◆ foo 425 562 │ ◼ opt0 426 563 │ ◻ opt1 564 + │ ↑/↓ to navigate • Space: select • Enter: confirm 427 565 └ 428 566 ", 429 - "<cursor.backward count=999><cursor.up count=5>", 567 + "<cursor.backward count=999><cursor.up count=6>", 430 568 "<cursor.down count=1>", 431 569 "<erase.down>", 432 570 "◇ foo ··· 445 583 │ ◼ opt0 (Hint 0) 446 584 │ ◼ opt1 (Hint 1) 447 585 │ ◻ opt2 586 + │ ↑/↓ to navigate • Space: select • Enter: confirm 448 587 └ 449 588 ", 450 - "<cursor.backward count=999><cursor.up count=6>", 589 + "<cursor.backward count=999><cursor.up count=7>", 451 590 "<cursor.down count=2>", 452 591 "<erase.down>", 453 592 "│ ◼ opt0 (Hint 0) 454 593 │ ◼ opt1 (Hint 1) 455 594 │ ◻ opt2 595 + │ ↑/↓ to navigate • Space: select • Enter: confirm 456 596 └ 457 597 ", 458 - "<cursor.backward count=999><cursor.up count=6>", 598 + "<cursor.backward count=999><cursor.up count=7>", 459 599 "<cursor.down count=3>", 460 600 "<erase.down>", 461 601 "│ ◼ opt1 (Hint 1) 462 602 │ ◻ opt2 (Hint 2) 603 + │ ↑/↓ to navigate • Space: select • Enter: confirm 463 604 └ 464 605 ", 465 - "<cursor.backward count=999><cursor.up count=6>", 606 + "<cursor.backward count=999><cursor.up count=7>", 466 607 "<cursor.down count=1>", 467 608 "<erase.down>", 468 609 "◇ foo ··· 484 625 │ ◻ opt3 485 626 │ ◻ opt4 486 627 │ ... 628 + │ ↑/↓ to navigate • Space: select • Enter: confirm 487 629 └ 488 630 ", 489 - "<cursor.backward count=999><cursor.up count=9>", 631 + "<cursor.backward count=999><cursor.up count=10>", 490 632 "<cursor.down count=2>", 491 633 "<erase.down>", 492 634 "│ ◻ opt0 ··· 495 637 │ ◻ opt3 496 638 │ ◻ opt4 497 639 │ ... 640 + │ ↑/↓ to navigate • Space: select • Enter: confirm 498 641 └ 499 642 ", 500 - "<cursor.backward count=999><cursor.up count=9>", 643 + "<cursor.backward count=999><cursor.up count=10>", 501 644 "<cursor.down count=3>", 502 645 "<erase.down>", 503 646 "│ ◻ opt1 ··· 505 648 │ ◻ opt3 506 649 │ ◻ opt4 507 650 │ ... 651 + │ ↑/↓ to navigate • Space: select • Enter: confirm 508 652 └ 509 653 ", 510 - "<cursor.backward count=999><cursor.up count=9>", 654 + "<cursor.backward count=999><cursor.up count=10>", 511 655 "<cursor.down count=4>", 512 656 "<erase.down>", 513 657 "│ ◻ opt2 514 658 │ ◻ opt3 515 659 │ ◻ opt4 516 660 │ ... 661 + │ ↑/↓ to navigate • Space: select • Enter: confirm 517 662 └ 518 663 ", 519 - "<cursor.backward count=999><cursor.up count=9>", 664 + "<cursor.backward count=999><cursor.up count=10>", 520 665 "<cursor.down count=2>", 521 666 "<erase.down>", 522 667 "│ ... ··· 525 670 │ ◻ opt4 526 671 │ ◻ opt5 527 672 │ ... 673 + │ ↑/↓ to navigate • Space: select • Enter: confirm 528 674 └ 529 675 ", 530 - "<cursor.backward count=999><cursor.up count=9>", 676 + "<cursor.backward count=999><cursor.up count=10>", 531 677 "<cursor.down count=3>", 532 678 "<erase.down>", 533 679 "│ ◻ opt3 ··· 535 681 │ ◻ opt5 536 682 │ ◻ opt6 537 683 │ ... 684 + │ ↑/↓ to navigate • Space: select • Enter: confirm 538 685 └ 539 686 ", 540 - "<cursor.backward count=999><cursor.up count=9>", 687 + "<cursor.backward count=999><cursor.up count=10>", 541 688 "<cursor.down count=3>", 542 689 "<erase.down>", 543 690 "│ ◻ opt4 ··· 545 692 │ ◻ opt6 546 693 │ ◻ opt7 547 694 │ ... 695 + │ ↑/↓ to navigate • Space: select • Enter: confirm 548 696 └ 549 697 ", 550 - "<cursor.backward count=999><cursor.up count=9>", 698 + "<cursor.backward count=999><cursor.up count=10>", 551 699 "<cursor.down count=3>", 552 700 "<erase.down>", 553 701 "│ ◻ opt5 ··· 555 703 │ ◻ opt7 556 704 │ ◻ opt8 557 705 │ ... 706 + │ ↑/↓ to navigate • Space: select • Enter: confirm 558 707 └ 559 708 ", 560 - "<cursor.backward count=999><cursor.up count=9>", 709 + "<cursor.backward count=999><cursor.up count=10>", 561 710 "<cursor.down count=3>", 562 711 "<erase.down>", 563 712 "│ ◻ opt6 ··· 565 714 │ ◻ opt8 566 715 │ ◻ opt9 567 716 │ ... 717 + │ ↑/↓ to navigate • Space: select • Enter: confirm 568 718 └ 569 719 ", 570 - "<cursor.backward count=999><cursor.up count=9>", 720 + "<cursor.backward count=999><cursor.up count=10>", 571 721 "<cursor.down count=3>", 572 722 "<erase.down>", 573 723 "│ ◻ opt7 ··· 575 725 │ ◻ opt9 576 726 │ ◻ opt10 577 727 │ ◻ opt11 728 + │ ↑/↓ to navigate • Space: select • Enter: confirm 578 729 └ 579 730 ", 580 - "<cursor.backward count=999><cursor.up count=9>", 731 + "<cursor.backward count=999><cursor.up count=10>", 581 732 "<cursor.down count=5>", 582 733 "<erase.down>", 583 734 "│ ◻ opt9 584 735 │ ◻ opt10 585 736 │ ◻ opt11 737 + │ ↑/↓ to navigate • Space: select • Enter: confirm 586 738 └ 587 739 ", 588 - "<cursor.backward count=999><cursor.up count=9>", 740 + "<cursor.backward count=999><cursor.up count=10>", 589 741 "<cursor.down count=6>", 590 742 "<erase.down>", 591 743 "│ ◻ opt10 592 744 │ ◻ opt11 745 + │ ↑/↓ to navigate • Space: select • Enter: confirm 593 746 └ 594 747 ", 595 - "<cursor.backward count=999><cursor.up count=9>", 748 + "<cursor.backward count=999><cursor.up count=10>", 596 749 "<cursor.down count=2>", 597 750 "<erase.down>", 598 751 "│ ◻ opt0 ··· 601 754 │ ◻ opt3 602 755 │ ◻ opt4 603 756 │ ... 757 + │ ↑/↓ to navigate • Space: select • Enter: confirm 604 758 └ 605 759 ", 606 - "<cursor.backward count=999><cursor.up count=9>", 760 + "<cursor.backward count=999><cursor.up count=10>", 607 761 "<cursor.down count=2>", 608 762 "<erase.line><cursor.left count=1>", 609 763 "│ ◼ opt0", 610 - "<cursor.down count=7>", 611 - "<cursor.backward count=999><cursor.up count=9>", 764 + "<cursor.down count=8>", 765 + "<cursor.backward count=999><cursor.up count=10>", 612 766 "<cursor.down count=1>", 613 767 "<erase.down>", 614 768 "◇ foo ··· 630 784 │ ◻ opt3 631 785 │ ◻ opt4 632 786 │ ... 787 + │ ↑/↓ to navigate • Space: select • Enter: confirm 633 788 └ 634 789 ", 635 - "<cursor.backward count=999><cursor.up count=9>", 790 + "<cursor.backward count=999><cursor.up count=10>", 636 791 "<cursor.down count=2>", 637 792 "<erase.down>", 638 793 "│ ... ··· 641 796 │ ◻ opt9 642 797 │ ◻ opt10 643 798 │ ◻ opt11 799 + │ ↑/↓ to navigate • Space: select • Enter: confirm 644 800 └ 645 801 ", 646 - "<cursor.backward count=999><cursor.up count=9>", 802 + "<cursor.backward count=999><cursor.up count=10>", 647 803 "<cursor.down count=7>", 648 804 "<erase.line><cursor.left count=1>", 649 805 "│ ◼ opt11", 650 - "<cursor.down count=2>", 651 - "<cursor.backward count=999><cursor.up count=9>", 806 + "<cursor.down count=3>", 807 + "<cursor.backward count=999><cursor.up count=10>", 652 808 "<cursor.down count=1>", 653 809 "<erase.down>", 654 810 "◇ foo ··· 665 821 "◆ foo 666 822 ◻ opt0 667 823 ◻ opt1 668 - 824 + ↑/↓ to navigate • Space: select • Enter: confirm 669 825 ", 670 826 "<cursor.backward count=999><cursor.up count=4>", 671 827 "<cursor.down count=1>", ··· 695 851 │ 1 Option 1 Option 1 Option  696 852 │ 1 Option 1 Option 1 Option  697 853 │ 1 Option 1 854 + │ ↑/↓ to navigate • Space: select • Enter: confirm 698 855 └ 699 856 ", 700 - "<cursor.backward count=999><cursor.up count=11>", 857 + "<cursor.backward count=999><cursor.up count=12>", 701 858 "<cursor.down count=2>", 702 859 "<erase.line><cursor.left count=1>", 703 860 "│ ◼ Option 0 Option 0 Option ", 704 - "<cursor.down count=9>", 705 - "<cursor.backward count=999><cursor.up count=11>", 861 + "<cursor.down count=10>", 862 + "<cursor.backward count=999><cursor.up count=12>", 706 863 "<cursor.down count=1>", 707 864 "<erase.down>", 708 865 "■ foo ··· 726 883 │ foo foo foo foo foo foo foo 727 884 │ ◻ opt0 728 885 │ ◻ opt1 886 + │ ↑/↓ to navigate • Space: select • Enter: confirm 729 887 └ 730 888 ", 731 - "<cursor.backward count=999><cursor.up count=7>", 889 + "<cursor.backward count=999><cursor.up count=8>", 732 890 "<cursor.down count=4>", 733 891 "<erase.line><cursor.left count=1>", 734 892 "│ ◼ opt0", 735 - "<cursor.down count=3>", 736 - "<cursor.backward count=999><cursor.up count=7>", 893 + "<cursor.down count=4>", 894 + "<cursor.backward count=999><cursor.up count=8>", 737 895 "<cursor.down count=1>", 738 896 "<erase.down>", 739 897 "◇ foo foo foo foo foo foo foo ··· 759 917 │ 1 Option 1 Option 1 Option  760 918 │ 1 Option 1 Option 1 Option  761 919 │ 1 Option 1 920 + │ ↑/↓ to navigate • Space: select • Enter: confirm 762 921 └ 763 922 ", 764 - "<cursor.backward count=999><cursor.up count=11>", 923 + "<cursor.backward count=999><cursor.up count=12>", 765 924 "<cursor.down count=2>", 766 925 "<erase.line><cursor.left count=1>", 767 926 "│ ◼ Option 0 Option 0 Option ", 768 - "<cursor.down count=9>", 769 - "<cursor.backward count=999><cursor.up count=11>", 927 + "<cursor.down count=10>", 928 + "<cursor.backward count=999><cursor.up count=12>", 770 929 "<cursor.down count=1>", 771 930 "<erase.down>", 772 931 "◇ foo ··· 787 946 ◆ foo 788 947 │ ◻ opt0 789 948 │ ◻ opt1 949 + │ ↑/↓ to navigate • Space: select • Enter: confirm 790 950 └ 791 951 ", 792 952 " ··· 802 962 ◆ foo 803 963 │ ◻ opt0 804 964 │ ◻ opt1 965 + │ ↑/↓ to navigate • Space: select • Enter: confirm 805 966 └ 806 967 ", 807 - "<cursor.backward count=999><cursor.up count=5>", 968 + "<cursor.backward count=999><cursor.up count=6>", 808 969 "<cursor.down count=1>", 809 970 "<erase.down>", 810 971 "■ foo ··· 822 983 ◆ foo 823 984 │ ◻ opt0 (Hint 0) 824 985 │ ◻ opt1 986 + │ ↑/↓ to navigate • Space: select • Enter: confirm 825 987 └ 826 988 ", 827 - "<cursor.backward count=999><cursor.up count=5>", 989 + "<cursor.backward count=999><cursor.up count=6>", 828 990 "<cursor.down count=2>", 829 991 "<erase.line><cursor.left count=1>", 830 992 "│ ◼ opt0 (Hint 0)", 831 - "<cursor.down count=3>", 832 - "<cursor.backward count=999><cursor.up count=5>", 993 + "<cursor.down count=4>", 994 + "<cursor.backward count=999><cursor.up count=6>", 833 995 "<cursor.down count=1>", 834 996 "<erase.down>", 835 997 "◇ foo ··· 847 1009 ◆ foo 848 1010 │ ◻ opt0 849 1011 │ ◻ opt1 1012 + │ ↑/↓ to navigate • Space: select • Enter: confirm 850 1013 └ 851 1014 ", 852 - "<cursor.backward count=999><cursor.up count=5>", 1015 + "<cursor.backward count=999><cursor.up count=6>", 853 1016 "<cursor.down count=3>", 854 1017 "<erase.line><cursor.left count=1>", 855 1018 "│ ◼ opt1", 856 - "<cursor.down count=2>", 857 - "<cursor.backward count=999><cursor.up count=5>", 1019 + "<cursor.down count=3>", 1020 + "<cursor.backward count=999><cursor.up count=6>", 858 1021 "<cursor.down count=1>", 859 1022 "<erase.down>", 860 1023 "◇ foo ··· 872 1035 ◆ foo 873 1036 │ ◻ Option 0 874 1037 │ ◻ Option 1 1038 + │ ↑/↓ to navigate • Space: select • Enter: confirm 875 1039 └ 876 1040 ", 877 - "<cursor.backward count=999><cursor.up count=5>", 1041 + "<cursor.backward count=999><cursor.up count=6>", 878 1042 "<cursor.down count=2>", 879 1043 "<erase.line><cursor.left count=1>", 880 1044 "│ ◼ Option 0", 881 - "<cursor.down count=3>", 882 - "<cursor.backward count=999><cursor.up count=5>", 1045 + "<cursor.down count=4>", 1046 + "<cursor.backward count=999><cursor.up count=6>", 883 1047 "<cursor.down count=1>", 884 1048 "<erase.down>", 885 1049 "◇ foo ··· 897 1061 ◆ foo 898 1062 │ ◻ opt0 899 1063 │ ◼ opt1 1064 + │ ↑/↓ to navigate • Space: select • Enter: confirm 900 1065 └ 901 1066 ", 902 - "<cursor.backward count=999><cursor.up count=5>", 1067 + "<cursor.backward count=999><cursor.up count=6>", 903 1068 "<cursor.down count=1>", 904 1069 "<erase.down>", 905 1070 "◇ foo ··· 917 1082 ◆ foo 918 1083 │ ◻ opt0 919 1084 │ ◻ opt1 1085 + │ ↑/↓ to navigate • Space: select • Enter: confirm 920 1086 └ 921 1087 ", 922 - "<cursor.backward count=999><cursor.up count=5>", 1088 + "<cursor.backward count=999><cursor.up count=6>", 923 1089 "<cursor.down count=1>", 924 1090 "<erase.down>", 925 1091 "◇ foo ··· 936 1102 "◆ foo 937 1103 ◻ opt0 938 1104 ◻ opt1 939 - 1105 + ↑/↓ to navigate • Space: select • Enter: confirm 940 1106 ", 941 1107 "<cursor.backward count=999><cursor.up count=4>", 942 1108 "<cursor.down count=1>", ··· 953 1119 ] 954 1120 `; 955 1121 1122 + exports[`multiselect (isCI = true) > maxItems accounts for instruction footer 1`] = ` 1123 + [ 1124 + "<cursor.hide>", 1125 + "│ 1126 + ◆ foo 1127 + │ ◻ opt0 1128 + │ ◻ opt1 1129 + │ ◻ opt2 1130 + │ ◻ opt3 1131 + │ ◻ opt4 1132 + │ ... 1133 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1134 + └ 1135 + ", 1136 + "<cursor.backward count=999><cursor.up count=10>", 1137 + "<cursor.down count=2>", 1138 + "<erase.down>", 1139 + "│ ◻ opt0 1140 + │ ◻ opt1 1141 + │ ◻ opt2 1142 + │ ◻ opt3 1143 + │ ◻ opt4 1144 + │ ... 1145 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1146 + └ 1147 + ", 1148 + "<cursor.backward count=999><cursor.up count=10>", 1149 + "<cursor.down count=3>", 1150 + "<erase.down>", 1151 + "│ ◻ opt1 1152 + │ ◻ opt2 1153 + │ ◻ opt3 1154 + │ ◻ opt4 1155 + │ ... 1156 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1157 + └ 1158 + ", 1159 + "<cursor.backward count=999><cursor.up count=10>", 1160 + "<cursor.down count=4>", 1161 + "<erase.down>", 1162 + "│ ◻ opt2 1163 + │ ◻ opt3 1164 + │ ◻ opt4 1165 + │ ... 1166 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1167 + └ 1168 + ", 1169 + "<cursor.backward count=999><cursor.up count=10>", 1170 + "<cursor.down count=2>", 1171 + "<erase.down>", 1172 + "│ ... 1173 + │ ◻ opt2 1174 + │ ◻ opt3 1175 + │ ◻ opt4 1176 + │ ◻ opt5 1177 + │ ... 1178 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1179 + └ 1180 + ", 1181 + "<cursor.backward count=999><cursor.up count=10>", 1182 + "<cursor.down count=3>", 1183 + "<erase.down>", 1184 + "│ ◻ opt3 1185 + │ ◻ opt4 1186 + │ ◻ opt5 1187 + │ ◻ opt6 1188 + │ ... 1189 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1190 + └ 1191 + ", 1192 + "<cursor.backward count=999><cursor.up count=10>", 1193 + "<cursor.down count=3>", 1194 + "<erase.down>", 1195 + "│ ◻ opt4 1196 + │ ◻ opt5 1197 + │ ◻ opt6 1198 + │ ◻ opt7 1199 + │ ... 1200 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1201 + └ 1202 + ", 1203 + "<cursor.backward count=999><cursor.up count=10>", 1204 + "<cursor.down count=5>", 1205 + "<erase.line><cursor.left count=1>", 1206 + "│ ◼ opt6", 1207 + "<cursor.down count=5>", 1208 + "<cursor.backward count=999><cursor.up count=10>", 1209 + "<cursor.down count=1>", 1210 + "<erase.down>", 1211 + "◇ foo 1212 + │ opt6", 1213 + " 1214 + ", 1215 + "<cursor.show>", 1216 + ] 1217 + `; 1218 + 956 1219 exports[`multiselect (isCI = true) > maxItems renders a sliding window 1`] = ` 957 1220 [ 958 1221 "<cursor.hide>", ··· 964 1227 │ ◻ opt3 965 1228 │ ◻ opt4 966 1229 │ ... 1230 + │ ↑/↓ to navigate • Space: select • Enter: confirm 967 1231 └ 968 1232 ", 969 - "<cursor.backward count=999><cursor.up count=9>", 1233 + "<cursor.backward count=999><cursor.up count=10>", 970 1234 "<cursor.down count=2>", 971 1235 "<erase.down>", 972 1236 "│ ◻ opt0 ··· 975 1239 │ ◻ opt3 976 1240 │ ◻ opt4 977 1241 │ ... 1242 + │ ↑/↓ to navigate • Space: select • Enter: confirm 978 1243 └ 979 1244 ", 980 - "<cursor.backward count=999><cursor.up count=9>", 1245 + "<cursor.backward count=999><cursor.up count=10>", 981 1246 "<cursor.down count=3>", 982 1247 "<erase.down>", 983 1248 "│ ◻ opt1 ··· 985 1250 │ ◻ opt3 986 1251 │ ◻ opt4 987 1252 │ ... 1253 + │ ↑/↓ to navigate • Space: select • Enter: confirm 988 1254 └ 989 1255 ", 990 - "<cursor.backward count=999><cursor.up count=9>", 1256 + "<cursor.backward count=999><cursor.up count=10>", 991 1257 "<cursor.down count=4>", 992 1258 "<erase.down>", 993 1259 "│ ◻ opt2 994 1260 │ ◻ opt3 995 1261 │ ◻ opt4 996 1262 │ ... 1263 + │ ↑/↓ to navigate • Space: select • Enter: confirm 997 1264 └ 998 1265 ", 999 - "<cursor.backward count=999><cursor.up count=9>", 1266 + "<cursor.backward count=999><cursor.up count=10>", 1000 1267 "<cursor.down count=2>", 1001 1268 "<erase.down>", 1002 1269 "│ ... ··· 1005 1272 │ ◻ opt4 1006 1273 │ ◻ opt5 1007 1274 │ ... 1275 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1008 1276 └ 1009 1277 ", 1010 - "<cursor.backward count=999><cursor.up count=9>", 1278 + "<cursor.backward count=999><cursor.up count=10>", 1011 1279 "<cursor.down count=3>", 1012 1280 "<erase.down>", 1013 1281 "│ ◻ opt3 ··· 1015 1283 │ ◻ opt5 1016 1284 │ ◻ opt6 1017 1285 │ ... 1286 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1018 1287 └ 1019 1288 ", 1020 - "<cursor.backward count=999><cursor.up count=9>", 1289 + "<cursor.backward count=999><cursor.up count=10>", 1021 1290 "<cursor.down count=3>", 1022 1291 "<erase.down>", 1023 1292 "│ ◻ opt4 ··· 1025 1294 │ ◻ opt6 1026 1295 │ ◻ opt7 1027 1296 │ ... 1297 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1028 1298 └ 1029 1299 ", 1030 - "<cursor.backward count=999><cursor.up count=9>", 1300 + "<cursor.backward count=999><cursor.up count=10>", 1031 1301 "<cursor.down count=5>", 1032 1302 "<erase.line><cursor.left count=1>", 1033 1303 "│ ◼ opt6", 1034 - "<cursor.down count=4>", 1035 - "<cursor.backward count=999><cursor.up count=9>", 1304 + "<cursor.down count=5>", 1305 + "<cursor.backward count=999><cursor.up count=10>", 1036 1306 "<cursor.down count=1>", 1037 1307 "<erase.down>", 1038 1308 "◇ foo ··· 1051 1321 │ ◻ opt0 1052 1322 │ ◻ opt1 1053 1323 │ ◻ opt2 (Hint 2) 1324 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1054 1325 └ 1055 1326 ", 1056 - "<cursor.backward count=999><cursor.up count=6>", 1327 + "<cursor.backward count=999><cursor.up count=7>", 1057 1328 "<cursor.down count=3>", 1058 1329 "<erase.line><cursor.left count=1>", 1059 1330 "│ ◼ opt1", 1060 - "<cursor.down count=3>", 1061 - "<cursor.backward count=999><cursor.up count=6>", 1331 + "<cursor.down count=4>", 1332 + "<cursor.backward count=999><cursor.up count=7>", 1062 1333 "<cursor.down count=1>", 1063 1334 "<erase.down>", 1064 1335 "◇ foo ··· 1069 1340 ] 1070 1341 `; 1071 1342 1343 + exports[`multiselect (isCI = true) > renders instructions without guide 1`] = ` 1344 + [ 1345 + "<cursor.hide>", 1346 + "◆ foo 1347 + ◻ opt0 1348 + ◻ opt1 1349 + ↑/↓ to navigate • Space: select • Enter: confirm 1350 + ", 1351 + "<cursor.backward count=999><cursor.up count=4>", 1352 + "<erase.down>", 1353 + "◇ foo 1354 + none", 1355 + " 1356 + ", 1357 + "<cursor.show>", 1358 + ] 1359 + `; 1360 + 1072 1361 exports[`multiselect (isCI = true) > renders message 1`] = ` 1073 1362 [ 1074 1363 "<cursor.hide>", ··· 1076 1365 ◆ foo 1077 1366 │ ◻ opt0 1078 1367 │ ◻ opt1 1368 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1079 1369 └ 1080 1370 ", 1081 - "<cursor.backward count=999><cursor.up count=5>", 1371 + "<cursor.backward count=999><cursor.up count=6>", 1082 1372 "<cursor.down count=2>", 1083 1373 "<erase.line><cursor.left count=1>", 1084 1374 "│ ◼ opt0", 1085 - "<cursor.down count=3>", 1086 - "<cursor.backward count=999><cursor.up count=5>", 1375 + "<cursor.down count=4>", 1376 + "<cursor.backward count=999><cursor.up count=6>", 1087 1377 "<cursor.down count=1>", 1088 1378 "<erase.down>", 1089 1379 "◇ foo ··· 1102 1392 │ ◻ opt0 1103 1393 │ ◻ opt1 1104 1394 │ ◻ opt2 1395 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1105 1396 └ 1106 1397 ", 1107 - "<cursor.backward count=999><cursor.up count=6>", 1398 + "<cursor.backward count=999><cursor.up count=7>", 1108 1399 "<cursor.down count=2>", 1109 1400 "<erase.line><cursor.left count=1>", 1110 1401 "│ ◼ opt0", 1111 - "<cursor.down count=4>", 1112 - "<cursor.backward count=999><cursor.up count=6>", 1402 + "<cursor.down count=5>", 1403 + "<cursor.backward count=999><cursor.up count=7>", 1113 1404 "<cursor.down count=2>", 1114 1405 "<erase.down>", 1115 1406 "│ ◼ opt0 1116 1407 │ ◻ opt1 1117 1408 │ ◻ opt2 1409 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1118 1410 └ 1119 1411 ", 1120 - "<cursor.backward count=999><cursor.up count=6>", 1412 + "<cursor.backward count=999><cursor.up count=7>", 1121 1413 "<cursor.down count=3>", 1122 1414 "<erase.line><cursor.left count=1>", 1123 1415 "│ ◼ opt1", 1124 - "<cursor.down count=3>", 1125 - "<cursor.backward count=999><cursor.up count=6>", 1416 + "<cursor.down count=4>", 1417 + "<cursor.backward count=999><cursor.up count=7>", 1126 1418 "<cursor.down count=1>", 1127 1419 "<erase.down>", 1128 1420 "■ foo ··· 1142 1434 │ ◻ opt0 1143 1435 │ ◻ opt1 1144 1436 │ ◻ opt2 1437 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1145 1438 └ 1146 1439 ", 1147 - "<cursor.backward count=999><cursor.up count=6>", 1440 + "<cursor.backward count=999><cursor.up count=7>", 1148 1441 "<cursor.down count=2>", 1149 1442 "<erase.line><cursor.left count=1>", 1150 1443 "│ ◼ opt0", 1151 - "<cursor.down count=4>", 1152 - "<cursor.backward count=999><cursor.up count=6>", 1444 + "<cursor.down count=5>", 1445 + "<cursor.backward count=999><cursor.up count=7>", 1153 1446 "<cursor.down count=2>", 1154 1447 "<erase.down>", 1155 1448 "│ ◼ opt0 1156 1449 │ ◻ opt1 1157 1450 │ ◻ opt2 1451 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1158 1452 └ 1159 1453 ", 1160 - "<cursor.backward count=999><cursor.up count=6>", 1454 + "<cursor.backward count=999><cursor.up count=7>", 1161 1455 "<cursor.down count=3>", 1162 1456 "<erase.line><cursor.left count=1>", 1163 1457 "│ ◼ opt1", 1164 - "<cursor.down count=3>", 1165 - "<cursor.backward count=999><cursor.up count=6>", 1458 + "<cursor.down count=4>", 1459 + "<cursor.backward count=999><cursor.up count=7>", 1166 1460 "<cursor.down count=3>", 1167 1461 "<erase.down>", 1168 1462 "│ ◼ opt1 1169 1463 │ ◻ opt2 1464 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1170 1465 └ 1171 1466 ", 1172 - "<cursor.backward count=999><cursor.up count=6>", 1467 + "<cursor.backward count=999><cursor.up count=7>", 1173 1468 "<cursor.down count=1>", 1174 1469 "<erase.down>", 1175 1470 "◇ foo ··· 1187 1482 ◆ foo 1188 1483 │ ◻ opt0 1189 1484 │ ◻ opt1 1485 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1190 1486 └ 1191 1487 ", 1192 - "<cursor.backward count=999><cursor.up count=5>", 1488 + "<cursor.backward count=999><cursor.up count=6>", 1193 1489 "<cursor.down count=1>", 1194 1490 "<erase.down>", 1195 1491 "▲ foo ··· 1204 1500 "◆ foo 1205 1501 │ ◼ opt0 1206 1502 │ ◻ opt1 1503 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1207 1504 └ 1208 1505 ", 1209 - "<cursor.backward count=999><cursor.up count=5>", 1506 + "<cursor.backward count=999><cursor.up count=6>", 1210 1507 "<cursor.down count=1>", 1211 1508 "<erase.down>", 1212 1509 "◇ foo ··· 1225 1522 │ ◼ opt0 (Hint 0) 1226 1523 │ ◼ opt1 (Hint 1) 1227 1524 │ ◻ opt2 1525 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1228 1526 └ 1229 1527 ", 1230 - "<cursor.backward count=999><cursor.up count=6>", 1528 + "<cursor.backward count=999><cursor.up count=7>", 1231 1529 "<cursor.down count=2>", 1232 1530 "<erase.down>", 1233 1531 "│ ◼ opt0 (Hint 0) 1234 1532 │ ◼ opt1 (Hint 1) 1235 1533 │ ◻ opt2 1534 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1236 1535 └ 1237 1536 ", 1238 - "<cursor.backward count=999><cursor.up count=6>", 1537 + "<cursor.backward count=999><cursor.up count=7>", 1239 1538 "<cursor.down count=3>", 1240 1539 "<erase.down>", 1241 1540 "│ ◼ opt1 (Hint 1) 1242 1541 │ ◻ opt2 (Hint 2) 1542 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1243 1543 └ 1244 1544 ", 1245 - "<cursor.backward count=999><cursor.up count=6>", 1545 + "<cursor.backward count=999><cursor.up count=7>", 1246 1546 "<cursor.down count=1>", 1247 1547 "<erase.down>", 1248 1548 "◇ foo ··· 1264 1564 │ ◻ opt3 1265 1565 │ ◻ opt4 1266 1566 │ ... 1567 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1267 1568 └ 1268 1569 ", 1269 - "<cursor.backward count=999><cursor.up count=9>", 1570 + "<cursor.backward count=999><cursor.up count=10>", 1270 1571 "<cursor.down count=2>", 1271 1572 "<erase.down>", 1272 1573 "│ ◻ opt0 ··· 1275 1576 │ ◻ opt3 1276 1577 │ ◻ opt4 1277 1578 │ ... 1579 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1278 1580 └ 1279 1581 ", 1280 - "<cursor.backward count=999><cursor.up count=9>", 1582 + "<cursor.backward count=999><cursor.up count=10>", 1281 1583 "<cursor.down count=3>", 1282 1584 "<erase.down>", 1283 1585 "│ ◻ opt1 ··· 1285 1587 │ ◻ opt3 1286 1588 │ ◻ opt4 1287 1589 │ ... 1590 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1288 1591 └ 1289 1592 ", 1290 - "<cursor.backward count=999><cursor.up count=9>", 1593 + "<cursor.backward count=999><cursor.up count=10>", 1291 1594 "<cursor.down count=4>", 1292 1595 "<erase.down>", 1293 1596 "│ ◻ opt2 1294 1597 │ ◻ opt3 1295 1598 │ ◻ opt4 1296 1599 │ ... 1600 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1297 1601 └ 1298 1602 ", 1299 - "<cursor.backward count=999><cursor.up count=9>", 1603 + "<cursor.backward count=999><cursor.up count=10>", 1300 1604 "<cursor.down count=2>", 1301 1605 "<erase.down>", 1302 1606 "│ ... ··· 1305 1609 │ ◻ opt4 1306 1610 │ ◻ opt5 1307 1611 │ ... 1612 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1308 1613 └ 1309 1614 ", 1310 - "<cursor.backward count=999><cursor.up count=9>", 1615 + "<cursor.backward count=999><cursor.up count=10>", 1311 1616 "<cursor.down count=3>", 1312 1617 "<erase.down>", 1313 1618 "│ ◻ opt3 ··· 1315 1620 │ ◻ opt5 1316 1621 │ ◻ opt6 1317 1622 │ ... 1623 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1318 1624 └ 1319 1625 ", 1320 - "<cursor.backward count=999><cursor.up count=9>", 1626 + "<cursor.backward count=999><cursor.up count=10>", 1321 1627 "<cursor.down count=3>", 1322 1628 "<erase.down>", 1323 1629 "│ ◻ opt4 ··· 1325 1631 │ ◻ opt6 1326 1632 │ ◻ opt7 1327 1633 │ ... 1634 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1328 1635 └ 1329 1636 ", 1330 - "<cursor.backward count=999><cursor.up count=9>", 1637 + "<cursor.backward count=999><cursor.up count=10>", 1331 1638 "<cursor.down count=3>", 1332 1639 "<erase.down>", 1333 1640 "│ ◻ opt5 ··· 1335 1642 │ ◻ opt7 1336 1643 │ ◻ opt8 1337 1644 │ ... 1645 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1338 1646 └ 1339 1647 ", 1340 - "<cursor.backward count=999><cursor.up count=9>", 1648 + "<cursor.backward count=999><cursor.up count=10>", 1341 1649 "<cursor.down count=3>", 1342 1650 "<erase.down>", 1343 1651 "│ ◻ opt6 ··· 1345 1653 │ ◻ opt8 1346 1654 │ ◻ opt9 1347 1655 │ ... 1656 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1348 1657 └ 1349 1658 ", 1350 - "<cursor.backward count=999><cursor.up count=9>", 1659 + "<cursor.backward count=999><cursor.up count=10>", 1351 1660 "<cursor.down count=3>", 1352 1661 "<erase.down>", 1353 1662 "│ ◻ opt7 ··· 1355 1664 │ ◻ opt9 1356 1665 │ ◻ opt10 1357 1666 │ ◻ opt11 1667 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1358 1668 └ 1359 1669 ", 1360 - "<cursor.backward count=999><cursor.up count=9>", 1670 + "<cursor.backward count=999><cursor.up count=10>", 1361 1671 "<cursor.down count=5>", 1362 1672 "<erase.down>", 1363 1673 "│ ◻ opt9 1364 1674 │ ◻ opt10 1365 1675 │ ◻ opt11 1676 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1366 1677 └ 1367 1678 ", 1368 - "<cursor.backward count=999><cursor.up count=9>", 1679 + "<cursor.backward count=999><cursor.up count=10>", 1369 1680 "<cursor.down count=6>", 1370 1681 "<erase.down>", 1371 1682 "│ ◻ opt10 1372 1683 │ ◻ opt11 1684 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1373 1685 └ 1374 1686 ", 1375 - "<cursor.backward count=999><cursor.up count=9>", 1687 + "<cursor.backward count=999><cursor.up count=10>", 1376 1688 "<cursor.down count=2>", 1377 1689 "<erase.down>", 1378 1690 "│ ◻ opt0 ··· 1381 1693 │ ◻ opt3 1382 1694 │ ◻ opt4 1383 1695 │ ... 1696 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1384 1697 └ 1385 1698 ", 1386 - "<cursor.backward count=999><cursor.up count=9>", 1699 + "<cursor.backward count=999><cursor.up count=10>", 1387 1700 "<cursor.down count=2>", 1388 1701 "<erase.line><cursor.left count=1>", 1389 1702 "│ ◼ opt0", 1390 - "<cursor.down count=7>", 1391 - "<cursor.backward count=999><cursor.up count=9>", 1703 + "<cursor.down count=8>", 1704 + "<cursor.backward count=999><cursor.up count=10>", 1392 1705 "<cursor.down count=1>", 1393 1706 "<erase.down>", 1394 1707 "◇ foo ··· 1410 1723 │ ◻ opt3 1411 1724 │ ◻ opt4 1412 1725 │ ... 1726 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1413 1727 └ 1414 1728 ", 1415 - "<cursor.backward count=999><cursor.up count=9>", 1729 + "<cursor.backward count=999><cursor.up count=10>", 1416 1730 "<cursor.down count=2>", 1417 1731 "<erase.down>", 1418 1732 "│ ... ··· 1421 1735 │ ◻ opt9 1422 1736 │ ◻ opt10 1423 1737 │ ◻ opt11 1738 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1424 1739 └ 1425 1740 ", 1426 - "<cursor.backward count=999><cursor.up count=9>", 1741 + "<cursor.backward count=999><cursor.up count=10>", 1427 1742 "<cursor.down count=7>", 1428 1743 "<erase.line><cursor.left count=1>", 1429 1744 "│ ◼ opt11", 1430 - "<cursor.down count=2>", 1431 - "<cursor.backward count=999><cursor.up count=9>", 1745 + "<cursor.down count=3>", 1746 + "<cursor.backward count=999><cursor.up count=10>", 1432 1747 "<cursor.down count=1>", 1433 1748 "<erase.down>", 1434 1749 "◇ foo ··· 1445 1760 "◆ foo 1446 1761 ◻ opt0 1447 1762 ◻ opt1 1448 - 1763 + ↑/↓ to navigate • Space: select • Enter: confirm 1449 1764 ", 1450 1765 "<cursor.backward count=999><cursor.up count=4>", 1451 1766 "<cursor.down count=1>", ··· 1475 1790 │ 1 Option 1 Option 1 Option  1476 1791 │ 1 Option 1 Option 1 Option  1477 1792 │ 1 Option 1 1793 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1478 1794 └ 1479 1795 ", 1480 - "<cursor.backward count=999><cursor.up count=11>", 1796 + "<cursor.backward count=999><cursor.up count=12>", 1481 1797 "<cursor.down count=2>", 1482 1798 "<erase.line><cursor.left count=1>", 1483 1799 "│ ◼ Option 0 Option 0 Option ", 1484 - "<cursor.down count=9>", 1485 - "<cursor.backward count=999><cursor.up count=11>", 1800 + "<cursor.down count=10>", 1801 + "<cursor.backward count=999><cursor.up count=12>", 1486 1802 "<cursor.down count=1>", 1487 1803 "<erase.down>", 1488 1804 "■ foo ··· 1506 1822 │ foo foo foo foo foo foo foo 1507 1823 │ ◻ opt0 1508 1824 │ ◻ opt1 1825 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1509 1826 └ 1510 1827 ", 1511 - "<cursor.backward count=999><cursor.up count=7>", 1828 + "<cursor.backward count=999><cursor.up count=8>", 1512 1829 "<cursor.down count=4>", 1513 1830 "<erase.line><cursor.left count=1>", 1514 1831 "│ ◼ opt0", 1515 - "<cursor.down count=3>", 1516 - "<cursor.backward count=999><cursor.up count=7>", 1832 + "<cursor.down count=4>", 1833 + "<cursor.backward count=999><cursor.up count=8>", 1517 1834 "<cursor.down count=1>", 1518 1835 "<erase.down>", 1519 1836 "◇ foo foo foo foo foo foo foo ··· 1539 1856 │ 1 Option 1 Option 1 Option  1540 1857 │ 1 Option 1 Option 1 Option  1541 1858 │ 1 Option 1 1859 + │ ↑/↓ to navigate • Space: select • Enter: confirm 1542 1860 └ 1543 1861 ", 1544 - "<cursor.backward count=999><cursor.up count=11>", 1862 + "<cursor.backward count=999><cursor.up count=12>", 1545 1863 "<cursor.down count=2>", 1546 1864 "<erase.line><cursor.left count=1>", 1547 1865 "│ ◼ Option 0 Option 0 Option ", 1548 - "<cursor.down count=9>", 1549 - "<cursor.backward count=999><cursor.up count=11>", 1866 + "<cursor.down count=10>", 1867 + "<cursor.backward count=999><cursor.up count=12>", 1550 1868 "<cursor.down count=1>", 1551 1869 "<erase.down>", 1552 1870 "◇ foo
+324 -82
packages/prompts/test/__snapshots__/select.test.ts.snap
··· 7 7 ◆ foo 8 8 │ ● opt0 9 9 │ ○ opt1 10 + │ ↑/↓ to navigate • Enter: confirm 10 11 └ 11 12 ", 12 13 " ··· 22 23 ◆ foo 23 24 │ ● opt0 24 25 │ ○ opt1 26 + │ ↑/↓ to navigate • Enter: confirm 25 27 └ 26 28 ", 27 - "<cursor.backward count=999><cursor.up count=5>", 29 + "<cursor.backward count=999><cursor.up count=6>", 28 30 "<cursor.down count=1>", 29 31 "<erase.down>", 30 32 "■ foo ··· 46 48 │ multiple lines 47 49 │ ● Option 0 48 50 │ ○ Option 1 49 - │ ○ Option 2 50 51 │ ... 52 + │ ↑/↓ to navigate • Enter: confirm 51 53 └ 52 54 ", 53 55 "<cursor.backward count=999><cursor.up count=10>", ··· 55 57 "<erase.down>", 56 58 "│ ○ Option 0 57 59 │ ● Option 1 58 - │ ○ Option 2 59 60 │ ... 60 - └ 61 - ", 62 - "<cursor.backward count=999><cursor.up count=10>", 63 - "<cursor.down count=6>", 64 - "<erase.down>", 65 - "│ ○ Option 1 66 - │ ● Option 2 67 - │ ... 61 + │ ↑/↓ to navigate • Enter: confirm 68 62 └ 69 63 ", 70 64 "<cursor.backward count=999><cursor.up count=10>", 71 65 "<cursor.down count=5>", 72 66 "<erase.down>", 73 67 "│ ... 74 - │ ● Option 3 75 - │ ○ Option 4 68 + │ ● Option 2 76 69 │ ... 70 + │ ↑/↓ to navigate • Enter: confirm 77 71 └ 78 72 ", 79 73 "<cursor.backward count=999><cursor.up count=10>", 80 74 "<cursor.down count=6>", 81 - "<erase.down>", 82 - "│ ● Option 4 83 - │ ○ Option 5 84 - │ ... 85 - └ 86 - ", 75 + "<erase.line><cursor.left count=1>", 76 + "│ ● Option 3", 77 + "<cursor.down count=4>", 78 + "<cursor.backward count=999><cursor.up count=10>", 79 + "<cursor.down count=6>", 80 + "<erase.line><cursor.left count=1>", 81 + "│ ● Option 4", 82 + "<cursor.down count=4>", 87 83 "<cursor.backward count=999><cursor.up count=10>", 88 84 "<cursor.down count=1>", 89 85 "<erase.down>", ··· 108 104 │ ● Option 0 109 105 │ ○ Option 1 110 106 │ ○ Option 2 111 - │ ○ Option 3 112 107 │ ... 108 + │ ↑/↓ to navigate • Enter: confirm 113 109 └ 114 110 ", 115 111 "<cursor.backward count=999><cursor.up count=10>", ··· 118 114 "│ ○ Option 0 119 115 │ ● Option 1 120 116 │ ○ Option 2 121 - │ ○ Option 3 122 117 │ ... 118 + │ ↑/↓ to navigate • Enter: confirm 123 119 └ 124 120 ", 125 121 "<cursor.backward count=999><cursor.up count=10>", ··· 127 123 "<erase.down>", 128 124 "│ ○ Option 1 129 125 │ ● Option 2 130 - │ ○ Option 3 131 126 │ ... 127 + │ ↑/↓ to navigate • Enter: confirm 132 128 └ 133 129 ", 134 130 "<cursor.backward count=999><cursor.up count=10>", 135 131 "<cursor.down count=4>", 136 132 "<erase.down>", 137 133 "│ ... 138 - │ ○ Option 2 139 134 │ ● Option 3 140 135 │ ○ Option 4 141 136 │ ... 137 + │ ↑/↓ to navigate • Enter: confirm 142 138 └ 143 139 ", 144 140 "<cursor.backward count=999><cursor.up count=10>", ··· 161 157 ◆ foo 162 158 │ ● opt0 163 159 │ ○ opt1 160 + │ ↑/↓ to navigate • Enter: confirm 164 161 └ 165 162 ", 166 - "<cursor.backward count=999><cursor.up count=5>", 163 + "<cursor.backward count=999><cursor.up count=6>", 167 164 "<cursor.down count=2>", 168 165 "<erase.down>", 169 166 "│ ○ opt0 170 167 │ ● opt1 168 + │ ↑/↓ to navigate • Enter: confirm 171 169 └ 172 170 ", 173 - "<cursor.backward count=999><cursor.up count=5>", 171 + "<cursor.backward count=999><cursor.up count=6>", 174 172 "<cursor.down count=1>", 175 173 "<erase.down>", 176 174 "◇ foo ··· 187 185 "◆ foo 188 186 ● opt0 189 187 ○ opt1 190 - 188 + ↑/↓ to navigate • Enter: confirm 191 189 ", 192 190 "<cursor.backward count=999><cursor.up count=4>", 193 191 "<erase.down>", ··· 213 211 │ Long Option 214 212 │ Long Option 215 213 │ ... 214 + │ ↑/↓ to navigate • Enter: confirm 216 215 └ 217 216 ", 218 - "<cursor.backward count=999><cursor.up count=12>", 217 + "<cursor.backward count=999><cursor.up count=13>", 219 218 "<erase.down>", 220 219 "│ 221 220 ◆ Whatever 222 221 │ ... 223 - │ ○ Option 1 224 222 │ ○ Option 2 225 223 │ ● Option 3 224 + │ ↑/↓ to navigate • Enter: confirm 226 225 └ 227 226 ", 228 227 "<cursor.backward count=999><cursor.up count=7>", ··· 236 235 ] 237 236 `; 238 237 238 + exports[`select (isCI = false) > maxItems accounts for instruction footer 1`] = ` 239 + [ 240 + "<cursor.hide>", 241 + "│ 242 + ◆ foo 243 + │ ● opt0 244 + │ ○ opt1 245 + │ ○ opt2 246 + │ ○ opt3 247 + │ ○ opt4 248 + │ ... 249 + │ ↑/↓ to navigate • Enter: confirm 250 + └ 251 + ", 252 + "<cursor.backward count=999><cursor.up count=10>", 253 + "<cursor.down count=2>", 254 + "<erase.down>", 255 + "│ ○ opt0 256 + │ ● opt1 257 + │ ○ opt2 258 + │ ○ opt3 259 + │ ○ opt4 260 + │ ... 261 + │ ↑/↓ to navigate • Enter: confirm 262 + └ 263 + ", 264 + "<cursor.backward count=999><cursor.up count=10>", 265 + "<cursor.down count=3>", 266 + "<erase.down>", 267 + "│ ○ opt1 268 + │ ● opt2 269 + │ ○ opt3 270 + │ ○ opt4 271 + │ ... 272 + │ ↑/↓ to navigate • Enter: confirm 273 + └ 274 + ", 275 + "<cursor.backward count=999><cursor.up count=10>", 276 + "<cursor.down count=4>", 277 + "<erase.down>", 278 + "│ ○ opt2 279 + │ ● opt3 280 + │ ○ opt4 281 + │ ... 282 + │ ↑/↓ to navigate • Enter: confirm 283 + └ 284 + ", 285 + "<cursor.backward count=999><cursor.up count=10>", 286 + "<cursor.down count=2>", 287 + "<erase.down>", 288 + "│ ... 289 + │ ○ opt2 290 + │ ○ opt3 291 + │ ● opt4 292 + │ ○ opt5 293 + │ ... 294 + │ ↑/↓ to navigate • Enter: confirm 295 + └ 296 + ", 297 + "<cursor.backward count=999><cursor.up count=10>", 298 + "<cursor.down count=3>", 299 + "<erase.down>", 300 + "│ ○ opt3 301 + │ ○ opt4 302 + │ ● opt5 303 + │ ○ opt6 304 + │ ... 305 + │ ↑/↓ to navigate • Enter: confirm 306 + └ 307 + ", 308 + "<cursor.backward count=999><cursor.up count=10>", 309 + "<cursor.down count=3>", 310 + "<erase.down>", 311 + "│ ○ opt4 312 + │ ○ opt5 313 + │ ● opt6 314 + │ ○ opt7 315 + │ ... 316 + │ ↑/↓ to navigate • Enter: confirm 317 + └ 318 + ", 319 + "<cursor.backward count=999><cursor.up count=10>", 320 + "<cursor.down count=1>", 321 + "<erase.down>", 322 + "◇ foo 323 + │ opt6", 324 + " 325 + ", 326 + "<cursor.show>", 327 + ] 328 + `; 329 + 239 330 exports[`select (isCI = false) > renders disabled options 1`] = ` 240 331 [ 241 332 "<cursor.hide>", ··· 244 335 │ ○ Option 0 245 336 │ ● Option 1 246 337 │ ○ Option 2 (Hint 2) 338 + │ ↑/↓ to navigate • Enter: confirm 247 339 └ 248 340 ", 249 - "<cursor.backward count=999><cursor.up count=6>", 341 + "<cursor.backward count=999><cursor.up count=7>", 250 342 "<cursor.down count=1>", 251 343 "<erase.down>", 252 344 "◇ foo ··· 257 349 ] 258 350 `; 259 351 352 + exports[`select (isCI = false) > renders instructions without guide 1`] = ` 353 + [ 354 + "<cursor.hide>", 355 + "◆ foo 356 + ● opt0 357 + ○ opt1 358 + ↑/↓ to navigate • Enter: confirm 359 + ", 360 + "<cursor.backward count=999><cursor.up count=4>", 361 + "<erase.down>", 362 + "◇ foo 363 + opt0", 364 + " 365 + ", 366 + "<cursor.show>", 367 + ] 368 + `; 369 + 260 370 exports[`select (isCI = false) > renders multi-line option labels 1`] = ` 261 371 [ 262 372 "<cursor.hide>", ··· 265 375 │ ● Option 0 266 376 │ with multiple lines 267 377 │ ○ Option 1 378 + │ ↑/↓ to navigate • Enter: confirm 268 379 └ 269 380 ", 270 - "<cursor.backward count=999><cursor.up count=6>", 381 + "<cursor.backward count=999><cursor.up count=7>", 271 382 "<cursor.down count=2>", 272 383 "<erase.down>", 273 384 "│ ○ Option 0 274 385 │ with multiple lines 275 386 │ ● Option 1 387 + │ ↑/↓ to navigate • Enter: confirm 276 388 └ 277 389 ", 278 - "<cursor.backward count=999><cursor.up count=6>", 390 + "<cursor.backward count=999><cursor.up count=7>", 279 391 "<cursor.down count=1>", 280 392 "<erase.down>", 281 393 "◇ foo ··· 293 405 ◆ foo 294 406 │ ● opt0 (Hint 0) 295 407 │ ○ opt1 408 + │ ↑/↓ to navigate • Enter: confirm 296 409 └ 297 410 ", 298 - "<cursor.backward count=999><cursor.up count=5>", 411 + "<cursor.backward count=999><cursor.up count=6>", 299 412 "<cursor.down count=1>", 300 413 "<erase.down>", 301 414 "◇ foo ··· 313 426 ◆ foo 314 427 │ ● Option 0 315 428 │ ○ Option 1 429 + │ ↑/↓ to navigate • Enter: confirm 316 430 └ 317 431 ", 318 - "<cursor.backward count=999><cursor.up count=5>", 432 + "<cursor.backward count=999><cursor.up count=6>", 319 433 "<cursor.down count=1>", 320 434 "<erase.down>", 321 435 "◇ foo ··· 333 447 ◆ foo 334 448 │ ● opt0 335 449 │ ○ opt1 450 + │ ↑/↓ to navigate • Enter: confirm 336 451 └ 337 452 ", 338 - "<cursor.backward count=999><cursor.up count=5>", 453 + "<cursor.backward count=999><cursor.up count=6>", 339 454 "<cursor.down count=1>", 340 455 "<erase.down>", 341 456 "◇ foo ··· 353 468 ◆ foo 354 469 │ ● opt0 355 470 │ ○ opt1 471 + │ ↑/↓ to navigate • Enter: confirm 356 472 └ 357 473 ", 358 - "<cursor.backward count=999><cursor.up count=5>", 474 + "<cursor.backward count=999><cursor.up count=6>", 359 475 "<cursor.down count=2>", 360 476 "<erase.down>", 361 477 "│ ○ opt0 362 478 │ ● opt1 479 + │ ↑/↓ to navigate • Enter: confirm 363 480 └ 364 481 ", 365 - "<cursor.backward count=999><cursor.up count=5>", 482 + "<cursor.backward count=999><cursor.up count=6>", 366 483 "<cursor.down count=2>", 367 484 "<erase.down>", 368 485 "│ ● opt0 369 486 │ ○ opt1 487 + │ ↑/↓ to navigate • Enter: confirm 370 488 └ 371 489 ", 372 - "<cursor.backward count=999><cursor.up count=5>", 490 + "<cursor.backward count=999><cursor.up count=6>", 373 491 "<cursor.down count=1>", 374 492 "<erase.down>", 375 493 "◇ foo ··· 386 504 "◆ foo 387 505 ● opt0 388 506 ○ opt1 389 - 507 + ↑/↓ to navigate • Enter: confirm 390 508 ", 391 509 "<cursor.backward count=999><cursor.up count=4>", 392 510 "<erase.down>", ··· 409 527 │ foo foo foo foo foo foo foo 410 528 │ foo foo foo foo 411 529 │ ○ Option 1 530 + │ ↑/↓ to navigate • Enter: confirm 412 531 └ 413 532 ", 414 - "<cursor.backward count=999><cursor.up count=9>", 533 + "<cursor.backward count=999><cursor.up count=10>", 415 534 "<cursor.down count=1>", 416 535 "<erase.down>", 417 536 "■ foo ··· 436 555 │ foo foo foo foo foo foo foo 437 556 │ ● opt0 438 557 │ ○ opt1 558 + │ ↑/↓ to navigate • Enter: confirm 439 559 └ 440 560 ", 441 - "<cursor.backward count=999><cursor.up count=7>", 561 + "<cursor.backward count=999><cursor.up count=8>", 442 562 "<cursor.down count=1>", 443 563 "<erase.down>", 444 564 "◇ foo foo foo foo foo foo foo ··· 462 582 │ foo foo foo foo foo foo foo 463 583 │ foo foo foo foo 464 584 │ ○ Option 1 585 + │ ↑/↓ to navigate • Enter: confirm 465 586 └ 466 587 ", 467 - "<cursor.backward count=999><cursor.up count=9>", 588 + "<cursor.backward count=999><cursor.up count=10>", 468 589 "<cursor.down count=1>", 469 590 "<erase.down>", 470 591 "◇ foo ··· 486 607 ◆ foo 487 608 │ ● opt0 488 609 │ ○ opt1 610 + │ ↑/↓ to navigate • Enter: confirm 489 611 └ 490 612 ", 491 613 " ··· 501 623 ◆ foo 502 624 │ ● opt0 503 625 │ ○ opt1 626 + │ ↑/↓ to navigate • Enter: confirm 504 627 └ 505 628 ", 506 - "<cursor.backward count=999><cursor.up count=5>", 629 + "<cursor.backward count=999><cursor.up count=6>", 507 630 "<cursor.down count=1>", 508 631 "<erase.down>", 509 632 "■ foo ··· 525 648 │ multiple lines 526 649 │ ● Option 0 527 650 │ ○ Option 1 528 - │ ○ Option 2 529 651 │ ... 652 + │ ↑/↓ to navigate • Enter: confirm 530 653 └ 531 654 ", 532 655 "<cursor.backward count=999><cursor.up count=10>", ··· 534 657 "<erase.down>", 535 658 "│ ○ Option 0 536 659 │ ● Option 1 537 - │ ○ Option 2 538 660 │ ... 539 - └ 540 - ", 541 - "<cursor.backward count=999><cursor.up count=10>", 542 - "<cursor.down count=6>", 543 - "<erase.down>", 544 - "│ ○ Option 1 545 - │ ● Option 2 546 - │ ... 661 + │ ↑/↓ to navigate • Enter: confirm 547 662 └ 548 663 ", 549 664 "<cursor.backward count=999><cursor.up count=10>", 550 665 "<cursor.down count=5>", 551 666 "<erase.down>", 552 667 "│ ... 553 - │ ● Option 3 554 - │ ○ Option 4 668 + │ ● Option 2 555 669 │ ... 670 + │ ↑/↓ to navigate • Enter: confirm 556 671 └ 557 672 ", 558 673 "<cursor.backward count=999><cursor.up count=10>", 559 674 "<cursor.down count=6>", 560 - "<erase.down>", 561 - "│ ● Option 4 562 - │ ○ Option 5 563 - │ ... 564 - └ 565 - ", 675 + "<erase.line><cursor.left count=1>", 676 + "│ ● Option 3", 677 + "<cursor.down count=4>", 678 + "<cursor.backward count=999><cursor.up count=10>", 679 + "<cursor.down count=6>", 680 + "<erase.line><cursor.left count=1>", 681 + "│ ● Option 4", 682 + "<cursor.down count=4>", 566 683 "<cursor.backward count=999><cursor.up count=10>", 567 684 "<cursor.down count=1>", 568 685 "<erase.down>", ··· 587 704 │ ● Option 0 588 705 │ ○ Option 1 589 706 │ ○ Option 2 590 - │ ○ Option 3 591 707 │ ... 708 + │ ↑/↓ to navigate • Enter: confirm 592 709 └ 593 710 ", 594 711 "<cursor.backward count=999><cursor.up count=10>", ··· 597 714 "│ ○ Option 0 598 715 │ ● Option 1 599 716 │ ○ Option 2 600 - │ ○ Option 3 601 717 │ ... 718 + │ ↑/↓ to navigate • Enter: confirm 602 719 └ 603 720 ", 604 721 "<cursor.backward count=999><cursor.up count=10>", ··· 606 723 "<erase.down>", 607 724 "│ ○ Option 1 608 725 │ ● Option 2 609 - │ ○ Option 3 610 726 │ ... 727 + │ ↑/↓ to navigate • Enter: confirm 611 728 └ 612 729 ", 613 730 "<cursor.backward count=999><cursor.up count=10>", 614 731 "<cursor.down count=4>", 615 732 "<erase.down>", 616 733 "│ ... 617 - │ ○ Option 2 618 734 │ ● Option 3 619 735 │ ○ Option 4 620 736 │ ... 737 + │ ↑/↓ to navigate • Enter: confirm 621 738 └ 622 739 ", 623 740 "<cursor.backward count=999><cursor.up count=10>", ··· 640 757 ◆ foo 641 758 │ ● opt0 642 759 │ ○ opt1 760 + │ ↑/↓ to navigate • Enter: confirm 643 761 └ 644 762 ", 645 - "<cursor.backward count=999><cursor.up count=5>", 763 + "<cursor.backward count=999><cursor.up count=6>", 646 764 "<cursor.down count=2>", 647 765 "<erase.down>", 648 766 "│ ○ opt0 649 767 │ ● opt1 768 + │ ↑/↓ to navigate • Enter: confirm 650 769 └ 651 770 ", 652 - "<cursor.backward count=999><cursor.up count=5>", 771 + "<cursor.backward count=999><cursor.up count=6>", 653 772 "<cursor.down count=1>", 654 773 "<erase.down>", 655 774 "◇ foo ··· 666 785 "◆ foo 667 786 ● opt0 668 787 ○ opt1 669 - 788 + ↑/↓ to navigate • Enter: confirm 670 789 ", 671 790 "<cursor.backward count=999><cursor.up count=4>", 672 791 "<erase.down>", ··· 692 811 │ Long Option 693 812 │ Long Option 694 813 │ ... 814 + │ ↑/↓ to navigate • Enter: confirm 695 815 └ 696 816 ", 697 - "<cursor.backward count=999><cursor.up count=12>", 817 + "<cursor.backward count=999><cursor.up count=13>", 698 818 "<erase.down>", 699 819 "│ 700 820 ◆ Whatever 701 821 │ ... 702 - │ ○ Option 1 703 822 │ ○ Option 2 704 823 │ ● Option 3 824 + │ ↑/↓ to navigate • Enter: confirm 705 825 └ 706 826 ", 707 827 "<cursor.backward count=999><cursor.up count=7>", ··· 715 835 ] 716 836 `; 717 837 838 + exports[`select (isCI = true) > maxItems accounts for instruction footer 1`] = ` 839 + [ 840 + "<cursor.hide>", 841 + "│ 842 + ◆ foo 843 + │ ● opt0 844 + │ ○ opt1 845 + │ ○ opt2 846 + │ ○ opt3 847 + │ ○ opt4 848 + │ ... 849 + │ ↑/↓ to navigate • Enter: confirm 850 + └ 851 + ", 852 + "<cursor.backward count=999><cursor.up count=10>", 853 + "<cursor.down count=2>", 854 + "<erase.down>", 855 + "│ ○ opt0 856 + │ ● opt1 857 + │ ○ opt2 858 + │ ○ opt3 859 + │ ○ opt4 860 + │ ... 861 + │ ↑/↓ to navigate • Enter: confirm 862 + └ 863 + ", 864 + "<cursor.backward count=999><cursor.up count=10>", 865 + "<cursor.down count=3>", 866 + "<erase.down>", 867 + "│ ○ opt1 868 + │ ● opt2 869 + │ ○ opt3 870 + │ ○ opt4 871 + │ ... 872 + │ ↑/↓ to navigate • Enter: confirm 873 + └ 874 + ", 875 + "<cursor.backward count=999><cursor.up count=10>", 876 + "<cursor.down count=4>", 877 + "<erase.down>", 878 + "│ ○ opt2 879 + │ ● opt3 880 + │ ○ opt4 881 + │ ... 882 + │ ↑/↓ to navigate • Enter: confirm 883 + └ 884 + ", 885 + "<cursor.backward count=999><cursor.up count=10>", 886 + "<cursor.down count=2>", 887 + "<erase.down>", 888 + "│ ... 889 + │ ○ opt2 890 + │ ○ opt3 891 + │ ● opt4 892 + │ ○ opt5 893 + │ ... 894 + │ ↑/↓ to navigate • Enter: confirm 895 + └ 896 + ", 897 + "<cursor.backward count=999><cursor.up count=10>", 898 + "<cursor.down count=3>", 899 + "<erase.down>", 900 + "│ ○ opt3 901 + │ ○ opt4 902 + │ ● opt5 903 + │ ○ opt6 904 + │ ... 905 + │ ↑/↓ to navigate • Enter: confirm 906 + └ 907 + ", 908 + "<cursor.backward count=999><cursor.up count=10>", 909 + "<cursor.down count=3>", 910 + "<erase.down>", 911 + "│ ○ opt4 912 + │ ○ opt5 913 + │ ● opt6 914 + │ ○ opt7 915 + │ ... 916 + │ ↑/↓ to navigate • Enter: confirm 917 + └ 918 + ", 919 + "<cursor.backward count=999><cursor.up count=10>", 920 + "<cursor.down count=1>", 921 + "<erase.down>", 922 + "◇ foo 923 + │ opt6", 924 + " 925 + ", 926 + "<cursor.show>", 927 + ] 928 + `; 929 + 718 930 exports[`select (isCI = true) > renders disabled options 1`] = ` 719 931 [ 720 932 "<cursor.hide>", ··· 723 935 │ ○ Option 0 724 936 │ ● Option 1 725 937 │ ○ Option 2 (Hint 2) 938 + │ ↑/↓ to navigate • Enter: confirm 726 939 └ 727 940 ", 728 - "<cursor.backward count=999><cursor.up count=6>", 941 + "<cursor.backward count=999><cursor.up count=7>", 729 942 "<cursor.down count=1>", 730 943 "<erase.down>", 731 944 "◇ foo ··· 736 949 ] 737 950 `; 738 951 952 + exports[`select (isCI = true) > renders instructions without guide 1`] = ` 953 + [ 954 + "<cursor.hide>", 955 + "◆ foo 956 + ● opt0 957 + ○ opt1 958 + ↑/↓ to navigate • Enter: confirm 959 + ", 960 + "<cursor.backward count=999><cursor.up count=4>", 961 + "<erase.down>", 962 + "◇ foo 963 + opt0", 964 + " 965 + ", 966 + "<cursor.show>", 967 + ] 968 + `; 969 + 739 970 exports[`select (isCI = true) > renders multi-line option labels 1`] = ` 740 971 [ 741 972 "<cursor.hide>", ··· 744 975 │ ● Option 0 745 976 │ with multiple lines 746 977 │ ○ Option 1 978 + │ ↑/↓ to navigate • Enter: confirm 747 979 └ 748 980 ", 749 - "<cursor.backward count=999><cursor.up count=6>", 981 + "<cursor.backward count=999><cursor.up count=7>", 750 982 "<cursor.down count=2>", 751 983 "<erase.down>", 752 984 "│ ○ Option 0 753 985 │ with multiple lines 754 986 │ ● Option 1 987 + │ ↑/↓ to navigate • Enter: confirm 755 988 └ 756 989 ", 757 - "<cursor.backward count=999><cursor.up count=6>", 990 + "<cursor.backward count=999><cursor.up count=7>", 758 991 "<cursor.down count=1>", 759 992 "<erase.down>", 760 993 "◇ foo ··· 772 1005 ◆ foo 773 1006 │ ● opt0 (Hint 0) 774 1007 │ ○ opt1 1008 + │ ↑/↓ to navigate • Enter: confirm 775 1009 └ 776 1010 ", 777 - "<cursor.backward count=999><cursor.up count=5>", 1011 + "<cursor.backward count=999><cursor.up count=6>", 778 1012 "<cursor.down count=1>", 779 1013 "<erase.down>", 780 1014 "◇ foo ··· 792 1026 ◆ foo 793 1027 │ ● Option 0 794 1028 │ ○ Option 1 1029 + │ ↑/↓ to navigate • Enter: confirm 795 1030 └ 796 1031 ", 797 - "<cursor.backward count=999><cursor.up count=5>", 1032 + "<cursor.backward count=999><cursor.up count=6>", 798 1033 "<cursor.down count=1>", 799 1034 "<erase.down>", 800 1035 "◇ foo ··· 812 1047 ◆ foo 813 1048 │ ● opt0 814 1049 │ ○ opt1 1050 + │ ↑/↓ to navigate • Enter: confirm 815 1051 └ 816 1052 ", 817 - "<cursor.backward count=999><cursor.up count=5>", 1053 + "<cursor.backward count=999><cursor.up count=6>", 818 1054 "<cursor.down count=1>", 819 1055 "<erase.down>", 820 1056 "◇ foo ··· 832 1068 ◆ foo 833 1069 │ ● opt0 834 1070 │ ○ opt1 1071 + │ ↑/↓ to navigate • Enter: confirm 835 1072 └ 836 1073 ", 837 - "<cursor.backward count=999><cursor.up count=5>", 1074 + "<cursor.backward count=999><cursor.up count=6>", 838 1075 "<cursor.down count=2>", 839 1076 "<erase.down>", 840 1077 "│ ○ opt0 841 1078 │ ● opt1 1079 + │ ↑/↓ to navigate • Enter: confirm 842 1080 └ 843 1081 ", 844 - "<cursor.backward count=999><cursor.up count=5>", 1082 + "<cursor.backward count=999><cursor.up count=6>", 845 1083 "<cursor.down count=2>", 846 1084 "<erase.down>", 847 1085 "│ ● opt0 848 1086 │ ○ opt1 1087 + │ ↑/↓ to navigate • Enter: confirm 849 1088 └ 850 1089 ", 851 - "<cursor.backward count=999><cursor.up count=5>", 1090 + "<cursor.backward count=999><cursor.up count=6>", 852 1091 "<cursor.down count=1>", 853 1092 "<erase.down>", 854 1093 "◇ foo ··· 865 1104 "◆ foo 866 1105 ● opt0 867 1106 ○ opt1 868 - 1107 + ↑/↓ to navigate • Enter: confirm 869 1108 ", 870 1109 "<cursor.backward count=999><cursor.up count=4>", 871 1110 "<erase.down>", ··· 888 1127 │ foo foo foo foo foo foo foo 889 1128 │ foo foo foo foo 890 1129 │ ○ Option 1 1130 + │ ↑/↓ to navigate • Enter: confirm 891 1131 └ 892 1132 ", 893 - "<cursor.backward count=999><cursor.up count=9>", 1133 + "<cursor.backward count=999><cursor.up count=10>", 894 1134 "<cursor.down count=1>", 895 1135 "<erase.down>", 896 1136 "■ foo ··· 915 1155 │ foo foo foo foo foo foo foo 916 1156 │ ● opt0 917 1157 │ ○ opt1 1158 + │ ↑/↓ to navigate • Enter: confirm 918 1159 └ 919 1160 ", 920 - "<cursor.backward count=999><cursor.up count=7>", 1161 + "<cursor.backward count=999><cursor.up count=8>", 921 1162 "<cursor.down count=1>", 922 1163 "<erase.down>", 923 1164 "◇ foo foo foo foo foo foo foo ··· 941 1182 │ foo foo foo foo foo foo foo 942 1183 │ foo foo foo foo 943 1184 │ ○ Option 1 1185 + │ ↑/↓ to navigate • Enter: confirm 944 1186 └ 945 1187 ", 946 - "<cursor.backward count=999><cursor.up count=9>", 1188 + "<cursor.backward count=999><cursor.up count=10>", 947 1189 "<cursor.down count=1>", 948 1190 "<erase.down>", 949 1191 "◇ foo
+39
packages/prompts/test/multi-select.test.ts
··· 437 437 expect(value).toEqual(['opt0']); 438 438 expect(output.buffer).toMatchSnapshot(); 439 439 }); 440 + 441 + test('renders instructions without guide', async () => { 442 + const result = prompts.multiselect({ 443 + message: 'foo', 444 + options: [{ value: 'opt0' }, { value: 'opt1' }], 445 + required: false, 446 + withGuide: false, 447 + input, 448 + output, 449 + }); 450 + 451 + input.emit('keypress', '', { name: 'return' }); 452 + 453 + await result; 454 + expect(output.buffer).toMatchSnapshot(); 455 + }); 456 + 457 + test('maxItems accounts for instruction footer', async () => { 458 + const result = prompts.multiselect({ 459 + message: 'foo', 460 + options: [...Array(12).keys()].map((k) => ({ 461 + value: `opt${k}`, 462 + })), 463 + maxItems: 6, 464 + input, 465 + output, 466 + }); 467 + 468 + for (let i = 0; i < 6; i++) { 469 + input.emit('keypress', '', { name: 'down' }); 470 + } 471 + input.emit('keypress', '', { name: 'space' }); 472 + input.emit('keypress', '', { name: 'return' }); 473 + 474 + const value = await result; 475 + 476 + expect(value).toEqual(['opt6']); 477 + expect(output.buffer).toMatchSnapshot(); 478 + }); 440 479 });
+37
packages/prompts/test/select.test.ts
··· 340 340 expect(output.buffer).toMatchSnapshot(); 341 341 }); 342 342 343 + test('renders instructions without guide', async () => { 344 + const result = prompts.select({ 345 + message: 'foo', 346 + options: [{ value: 'opt0' }, { value: 'opt1' }], 347 + withGuide: false, 348 + input, 349 + output, 350 + }); 351 + 352 + input.emit('keypress', '', { name: 'return' }); 353 + 354 + await result; 355 + expect(output.buffer).toMatchSnapshot(); 356 + }); 357 + 358 + test('maxItems accounts for instruction footer', async () => { 359 + const result = prompts.select({ 360 + message: 'foo', 361 + options: [...Array(12).keys()].map((k) => ({ 362 + value: `opt${k}`, 363 + })), 364 + maxItems: 6, 365 + input, 366 + output, 367 + }); 368 + 369 + for (let i = 0; i < 6; i++) { 370 + input.emit('keypress', '', { name: 'down' }); 371 + } 372 + input.emit('keypress', '', { name: 'return' }); 373 + 374 + const value = await result; 375 + 376 + expect(value).toEqual('opt6'); 377 + expect(output.buffer).toMatchSnapshot(); 378 + }); 379 + 343 380 test('correctly limits options with explicit multiline message', async () => { 344 381 output.rows = 12; 345 382