Skip to content

Commit 7b009df

Browse files
authored
fix: spinner should only clear multi-line (#374)
Fixes #373
1 parent 0ca2c4c commit 7b009df

File tree

5 files changed

+56
-132
lines changed

5 files changed

+56
-132
lines changed

.changeset/cruel-hairs-swim.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@clack/prompts": patch
3+
---
4+
5+
Fix spinner clearing too many lines upwards when non-wrapping.

packages/prompts/src/spinner.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ export const spinner = ({
101101
trim: false,
102102
});
103103
const prevLines = wrapped.split('\n');
104-
output.write(cursor.up(prevLines.length - 1));
104+
if (prevLines.length > 1) {
105+
output.write(cursor.up(prevLines.length - 1));
106+
}
105107
output.write(cursor.to(0));
106108
output.write(erase.down());
107109
};

packages/prompts/test/__snapshots__/progress-bar.test.ts.snap

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ exports[`prompts - progress (isCI = false) > message > sets message for next fra
66
"│
77
",
88
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
9-
"<cursor.up count=0>",
109
"<cursor.left count=1>",
1110
"<erase.down>",
1211
"◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo",
@@ -96,15 +95,12 @@ exports[`prompts - progress (isCI = false) > start > renders frames at interval
9695
"│
9796
",
9897
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
99-
"<cursor.up count=0>",
10098
"<cursor.left count=1>",
10199
"<erase.down>",
102100
"◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
103-
"<cursor.up count=0>",
104101
"<cursor.left count=1>",
105102
"<erase.down>",
106103
"◓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
107-
"<cursor.up count=0>",
108104
"<cursor.left count=1>",
109105
"<erase.down>",
110106
"◑ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
@@ -135,7 +131,6 @@ exports[`prompts - progress (isCI = false) > stop > renders cancel symbol if cod
135131
"│
136132
",
137133
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
138-
"<cursor.up count=0>",
139134
"<cursor.left count=1>",
140135
"<erase.down>",
141136
"■
@@ -150,7 +145,6 @@ exports[`prompts - progress (isCI = false) > stop > renders error symbol if code
150145
"│
151146
",
152147
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
153-
"<cursor.up count=0>",
154148
"<cursor.left count=1>",
155149
"<erase.down>",
156150
"▲
@@ -165,7 +159,6 @@ exports[`prompts - progress (isCI = false) > stop > renders message 1`] = `
165159
"│
166160
",
167161
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
168-
"<cursor.up count=0>",
169162
"<cursor.left count=1>",
170163
"<erase.down>",
171164
"◇ foo
@@ -180,7 +173,6 @@ exports[`prompts - progress (isCI = false) > stop > renders message without remo
180173
"│
181174
",
182175
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
183-
"<cursor.up count=0>",
184176
"<cursor.left count=1>",
185177
"<erase.down>",
186178
"◇ foo.
@@ -195,7 +187,6 @@ exports[`prompts - progress (isCI = false) > stop > renders submit symbol and st
195187
"│
196188
",
197189
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ",
198-
"<cursor.up count=0>",
199190
"<cursor.left count=1>",
200191
"<erase.down>",
201192
"◇
@@ -210,19 +201,15 @@ exports[`prompts - progress (isCI = false) > style > renders block progressbar 1
210201
"│
211202
",
212203
"◒ ██████████ ",
213-
"<cursor.up count=0>",
214204
"<cursor.left count=1>",
215205
"<erase.down>",
216206
"◐ ██████████ ",
217-
"<cursor.up count=0>",
218207
"<cursor.left count=1>",
219208
"<erase.down>",
220209
"◓ ██████████ ",
221-
"<cursor.up count=0>",
222210
"<cursor.left count=1>",
223211
"<erase.down>",
224212
"◑ ██████████ ",
225-
"<cursor.up count=0>",
226213
"<cursor.left count=1>",
227214
"<erase.down>",
228215
"◇
@@ -237,19 +224,15 @@ exports[`prompts - progress (isCI = false) > style > renders heavy progressbar 1
237224
"│
238225
",
239226
"◒ ━━━━━━━━━━ ",
240-
"<cursor.up count=0>",
241227
"<cursor.left count=1>",
242228
"<erase.down>",
243229
"◐ ━━━━━━━━━━ ",
244-
"<cursor.up count=0>",
245230
"<cursor.left count=1>",
246231
"<erase.down>",
247232
"◓ ━━━━━━━━━━ ",
248-
"<cursor.up count=0>",
249233
"<cursor.left count=1>",
250234
"<erase.down>",
251235
"◑ ━━━━━━━━━━ ",
252-
"<cursor.up count=0>",
253236
"<cursor.left count=1>",
254237
"<erase.down>",
255238
"◇
@@ -264,19 +247,15 @@ exports[`prompts - progress (isCI = false) > style > renders light progressbar 1
264247
"│
265248
",
266249
"◒ ────────── ",
267-
"<cursor.up count=0>",
268250
"<cursor.left count=1>",
269251
"<erase.down>",
270252
"◐ ────────── ",
271-
"<cursor.up count=0>",
272253
"<cursor.left count=1>",
273254
"<erase.down>",
274255
"◓ ────────── ",
275-
"<cursor.up count=0>",
276256
"<cursor.left count=1>",
277257
"<erase.down>",
278258
"◑ ────────── ",
279-
"<cursor.up count=0>",
280259
"<cursor.left count=1>",
281260
"<erase.down>",
282261
"◇
@@ -293,7 +272,6 @@ exports[`prompts - progress (isCI = true) > message > sets message for next fram
293272
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
294273
"
295274
",
296-
"<cursor.up count=0>",
297275
"<cursor.left count=1>",
298276
"<erase.down>",
299277
"◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...",
@@ -412,7 +390,6 @@ exports[`prompts - progress (isCI = true) > stop > renders cancel symbol if code
412390
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
413391
"
414392
",
415-
"<cursor.up count=0>",
416393
"<cursor.left count=1>",
417394
"<erase.down>",
418395
"■
@@ -429,7 +406,6 @@ exports[`prompts - progress (isCI = true) > stop > renders error symbol if code
429406
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
430407
"
431408
",
432-
"<cursor.up count=0>",
433409
"<cursor.left count=1>",
434410
"<erase.down>",
435411
"▲
@@ -446,7 +422,6 @@ exports[`prompts - progress (isCI = true) > stop > renders message 1`] = `
446422
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
447423
"
448424
",
449-
"<cursor.up count=0>",
450425
"<cursor.left count=1>",
451426
"<erase.down>",
452427
"◇ foo
@@ -463,7 +438,6 @@ exports[`prompts - progress (isCI = true) > stop > renders message without remov
463438
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
464439
"
465440
",
466-
"<cursor.up count=0>",
467441
"<cursor.left count=1>",
468442
"<erase.down>",
469443
"◇ foo.
@@ -480,7 +454,6 @@ exports[`prompts - progress (isCI = true) > stop > renders submit symbol and sto
480454
"◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...",
481455
"
482456
",
483-
"<cursor.up count=0>",
484457
"<cursor.left count=1>",
485458
"<erase.down>",
486459
"◇
@@ -497,13 +470,11 @@ exports[`prompts - progress (isCI = true) > style > renders block progressbar 1`
497470
"◒ ██████████ ...",
498471
"
499472
",
500-
"<cursor.up count=0>",
501473
"<cursor.left count=1>",
502474
"<erase.down>",
503475
"◐ ██████████ ...",
504476
"
505477
",
506-
"<cursor.up count=0>",
507478
"<cursor.left count=1>",
508479
"<erase.down>",
509480
"◇
@@ -520,13 +491,11 @@ exports[`prompts - progress (isCI = true) > style > renders heavy progressbar 1`
520491
"◒ ━━━━━━━━━━ ...",
521492
"
522493
",
523-
"<cursor.up count=0>",
524494
"<cursor.left count=1>",
525495
"<erase.down>",
526496
"◐ ━━━━━━━━━━ ...",
527497
"
528498
",
529-
"<cursor.up count=0>",
530499
"<cursor.left count=1>",
531500
"<erase.down>",
532501
"◇
@@ -543,13 +512,11 @@ exports[`prompts - progress (isCI = true) > style > renders light progressbar 1`
543512
"◒ ────────── ...",
544513
"
545514
",
546-
"<cursor.up count=0>",
547515
"<cursor.left count=1>",
548516
"<erase.down>",
549517
"◐ ────────── ...",
550518
"
551519
",
552-
"<cursor.up count=0>",
553520
"<cursor.left count=1>",
554521
"<erase.down>",
555522
"◇

0 commit comments

Comments
 (0)