# Copyright Kevin Deldycke <kevin@deldycke.com> and contributors.
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""The bundled catalog of terminal spinner presets.
Ported from [cli-spinners](https://github.com/sindresorhus/cli-spinners),
with frame intervals converted from milliseconds to seconds.
```{note}
One upstream entry is deliberately absent. `timeTravel` is `clock` running
backwards, which upstream has to ship as a second preset because its renderers
only play frames forwards. {class}`~click_extra.spinner.Spinner` takes a
`reverse` argument, so the same animation is `SPINNERS["clock"]` with
`reverse=True` and a duplicate would only be a second name for it.
```
```{note}
The emoji frames are one cell narrower than upstream writes them. Upstream pads
each with a trailing space, so a terminal drawing the emoji one cell wide still
leaves a gap before whatever follows. Here that space is one cell too many:
{class}`~click_extra.spinner.Spinner` already writes one before its label, and
the pair reads as a double gap. A capture laid out on the frames alone also
reserves a column nothing is ever drawn in, which leaves the glyph off center.
Every frame of a preset is the same width, so a label never moves as the
animation turns. `weather` is the one upstream entry that was ragged, mixing
two- and three-cell frames.
```
"""
from __future__ import annotations
from typing import NamedTuple
TYPE_CHECKING = False
if TYPE_CHECKING:
from typing import Final
ASCII_SPINNER_FRAMES: Final = ("-", "\\", "|", "/")
"""Plain ASCII animation frames, for terminals or fonts lacking Unicode glyphs."""
SPINNER_FRAMES: Final = ("โ ", "โ ", "โ น", "โ ธ", "โ ผ", "โ ด", "โ ฆ", "โ ง", "โ ", "โ ")
"""Default animation frames: the ubiquitous Braille-dots spinner.
Ten frames give a smooth rotation in any UTF-8 terminal. Fall back to
{data}`ASCII_SPINNER_FRAMES` where Braille glyphs are unavailable.
"""
[docs]
class SpinnerPreset(NamedTuple):
"""A named spinner animation: its frames and the interval they look best at.
The {data}`~click_extra.spinner_presets.SPINNERS` catalog is ported from
[cli-spinners](https://github.com/sindresorhus/cli-spinners), with intervals
converted from milliseconds to seconds. Pass one to
{class}`~click_extra.spinner.Spinner` via its `spinner` argument.
"""
frames: tuple[str, ...]
"""The animation frames, cycled in order."""
interval: float
"""Seconds between two frames, tuned per spinner upstream."""
# Single-code-point animations are packed as `tuple("frames")` to stay
# one-liners; animations with multi-character frames keep an explicit tuple.
SPINNERS: Final = {
"dots": SpinnerPreset(SPINNER_FRAMES, 0.08),
"dots2": SpinnerPreset(tuple("โฃพโฃฝโฃปโขฟโกฟโฃโฃฏโฃท"), 0.08),
"dots3": SpinnerPreset(tuple("โ โ โ โ โ โ ฆโ ดโ ฒโ ณโ "), 0.08),
"dots4": SpinnerPreset(tuple("โ โ โ โ โ โ ธโ ฐโ โ ฐโ ธโ โ โ โ "), 0.08),
"dots5": SpinnerPreset(tuple("โ โ โ โ โ โ โ โ ฒโ ดโ ฆโ โ โ โ โ โ โ "), 0.08),
"dots6": SpinnerPreset(tuple("โ โ โ โ โ โ โ โ โ ฒโ ดโ คโ โ โ คโ ดโ ฒโ โ โ โ โ โ โ โ "), 0.08),
"dots7": SpinnerPreset(tuple("โ โ โ โ โ โ โ โ โ โ ฆโ คโ โ โ คโ ฆโ โ โ โ โ โ โ โ โ "), 0.08),
"dots8": SpinnerPreset(tuple("โ โ โ โ โ โ โ โ โ โ ฒโ ดโ คโ โ โ คโ โ โ คโ ฆโ โ โ โ โ โ โ โ โ โ "), 0.08),
"dots9": SpinnerPreset(tuple("โขนโขบโขผโฃธโฃโกงโกโก"), 0.08),
"dots10": SpinnerPreset(tuple("โขโขโขโกโกโกโก "), 0.08),
"dots11": SpinnerPreset(tuple("โ โ โ โกโขโ โ โ "), 0.1),
"dots12": SpinnerPreset(
(
"โขโ ",
"โกโ ",
"โ โ ",
"โขโ ",
"โกโ ",
"โ
โ ",
"โขโ ",
"โกโ ",
"โ โ ",
"โขโ ",
"โกโ ",
"โ โ ",
"โขโ ",
"โกโ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ฉ",
"โ โข",
"โ โก",
"โขโ ฉ",
"โกโข",
"โ โก",
"โขโ ฉ",
"โกโข",
"โ
โก",
"โขโ จ",
"โกโข",
"โ โก",
"โขโ ",
"โกโข",
"โ โก",
"โขโ ",
"โกโ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ",
"โ โ ฉ",
"โ โข",
"โ โก",
"โ โ ฉ",
"โ โข",
"โ โก",
"โ โ ฉ",
"โ โข",
"โ โก",
"โ โ จ",
"โ โข",
"โ โก",
"โ โ ",
"โ โข",
"โ โก",
),
0.08,
),
"dots13": SpinnerPreset(tuple("โฃผโฃนโขปโ ฟโกโฃโฃงโฃถ"), 0.08),
"dots14": SpinnerPreset(
("โ โ ", "โ โ ", "โ โ น", "โ โขธ", "โ โฃฐ", "โขโฃ ", "โฃโฃ", "โฃโก", "โฃโ ", "โกโ ", "โ โ ", "โ โ "), 0.08
),
"dots-8bit": SpinnerPreset(
tuple(
"โ โ โ โ โ โ
โ โ โกโกโกโกโกโก
โกโกโ โ โ โ โ โ โ โ โกโกโกโกโกโกโกโกโ โ โ โ โ โ โ โ โกโกโกโกโกโกโกโกโ โ โ โ โ โ โ โ โกโกโกโกโกโกโกโกโ โ กโ ขโ ฃโ คโ ฅโ ฆโ งโก โกกโกขโกฃโกคโกฅโกฆโกงโ จโ ฉโ ชโ ซโ ฌโ ญโ ฎโ ฏโกจโกฉโกชโกซโกฌโกญโกฎโกฏโ ฐโ ฑโ ฒโ ณโ ดโ ตโ ถโ ทโกฐโกฑโกฒโกณโกดโกตโกถโกทโ ธโ นโ บโ ปโ ผโ ฝโ พโ ฟโกธโกนโกบโกปโกผโกฝโกพโกฟโขโขโขโขโขโข
โขโขโฃโฃโฃโฃโฃโฃ
โฃโฃโขโขโขโขโขโขโขโขโฃโฃโฃโฃโฃโฃโฃโฃโขโขโขโขโขโขโขโขโฃโฃโฃโฃโฃโฃโฃโฃโขโขโขโขโขโขโขโขโฃโฃโฃโฃโฃโฃโฃโฃโข โขกโขขโขฃโขคโขฅโขฆโขงโฃ โฃกโฃขโฃฃโฃคโฃฅโฃฆโฃงโขจโขฉโขชโขซโขฌโขญโขฎโขฏโฃจโฃฉโฃชโฃซโฃฌโฃญโฃฎโฃฏโขฐโขฑโขฒโขณโขดโขตโขถโขทโฃฐโฃฑโฃฒโฃณโฃดโฃตโฃถโฃทโขธโขนโขบโขปโขผโขฝโขพโขฟโฃธโฃนโฃบโฃปโฃผโฃฝโฃพโฃฟ"
),
0.08,
),
"dots-circle": SpinnerPreset(
("โข ", "โ โ ", "โ โ ", "โ โ ฑ", " โกฑ", "โขโกฐ", "โขโก ", "โขโก"), 0.08
),
"sand": SpinnerPreset(tuple("โ โ โ โกโกโกโก โฃโฃโฃโฃโฃโฃโฃคโฃฅโฃฆโฃฎโฃถโฃทโฃฟโกฟโ ฟโขโ โกโ โ ซโขโ โ โกโ โ โ กโข"), 0.08),
"line": SpinnerPreset(ASCII_SPINNER_FRAMES, 0.13),
"line2": SpinnerPreset(tuple("โ -โโโ-"), 0.1),
"rolling-line": SpinnerPreset(
("/ ", " - ", " \\ ", " |", " |", " \\ ", " - ", "/ "), 0.08
),
"pipe": SpinnerPreset(tuple("โคโโดโโโโฌโ"), 0.1),
"simple-dots": SpinnerPreset((". ", ".. ", "...", " "), 0.4),
"simple-dots-scrolling": SpinnerPreset(
(". ", ".. ", "...", " ..", " .", " "), 0.2
),
"star": SpinnerPreset(tuple("โถโธโนโบโนโท"), 0.07),
"star2": SpinnerPreset(tuple("+x*"), 0.08),
"flip": SpinnerPreset(tuple("___-``'ยด-___"), 0.07),
"hamburger": SpinnerPreset(tuple("โฑโฒโด"), 0.1),
"grow-vertical": SpinnerPreset(tuple("โโโโ
โโโโ
โโ"), 0.12),
"grow-horizontal": SpinnerPreset(tuple("โโโโโโโโโโโโ"), 0.12),
"balloon": SpinnerPreset(tuple(" .oO@* "), 0.14),
"balloon2": SpinnerPreset(tuple(".oOยฐOo."), 0.12),
"noise": SpinnerPreset(tuple("โโโ"), 0.1),
"bounce": SpinnerPreset(tuple("โ โ โ โ "), 0.12),
"box-bounce": SpinnerPreset(tuple("โโโโ"), 0.12),
"box-bounce2": SpinnerPreset(tuple("โโโโ"), 0.1),
"triangle": SpinnerPreset(tuple("โขโฃโคโฅ"), 0.05),
"binary": SpinnerPreset(
(
"010010",
"001100",
"100101",
"111010",
"111101",
"010111",
"101011",
"111000",
"110011",
"110101",
),
0.08,
),
"arc": SpinnerPreset(tuple("โโ โโโกโ"), 0.1),
"circle": SpinnerPreset(tuple("โกโโ "), 0.12),
"square-corners": SpinnerPreset(tuple("โฐโณโฒโฑ"), 0.18),
"circle-quarters": SpinnerPreset(tuple("โดโทโถโต"), 0.12),
"circle-halves": SpinnerPreset(tuple("โโโโ"), 0.05),
"squish": SpinnerPreset(tuple("โซโช"), 0.1),
"toggle": SpinnerPreset(tuple("โถโท"), 0.25),
"toggle2": SpinnerPreset(tuple("โซโช"), 0.08),
"toggle3": SpinnerPreset(tuple("โกโ "), 0.12),
"toggle4": SpinnerPreset(tuple("โ โกโชโซ"), 0.1),
"toggle5": SpinnerPreset(tuple("โฎโฏ"), 0.1),
"toggle6": SpinnerPreset(tuple("แแ"), 0.3),
"toggle7": SpinnerPreset(tuple("โฆพโฆฟ"), 0.08),
"toggle8": SpinnerPreset(tuple("โโ"), 0.1),
"toggle9": SpinnerPreset(tuple("โโ"), 0.1),
"toggle10": SpinnerPreset(tuple("ใใใ"), 0.1),
"toggle11": SpinnerPreset(tuple("โงโง"), 0.05),
"toggle12": SpinnerPreset(tuple("โโ"), 0.12),
"toggle13": SpinnerPreset(tuple("=*-"), 0.08),
"arrow": SpinnerPreset(tuple("โโโโโโโโ"), 0.1),
"arrow2": SpinnerPreset(("โฌ๏ธ", "โ๏ธ", "โก๏ธ", "โ๏ธ", "โฌ๏ธ", "โ๏ธ", "โฌ
๏ธ", "โ๏ธ"), 0.08),
"arrow3": SpinnerPreset(
("โนโนโนโนโน", "โธโนโนโนโน", "โนโธโนโนโน", "โนโนโธโนโน", "โนโนโนโธโน", "โนโนโนโนโธ"), 0.12
),
"bouncing-bar": SpinnerPreset(
(
"[ ]",
"[= ]",
"[== ]",
"[=== ]",
"[====]",
"[ ===]",
"[ ==]",
"[ =]",
"[ ]",
"[ =]",
"[ ==]",
"[ ===]",
"[====]",
"[=== ]",
"[== ]",
"[= ]",
),
0.08,
),
"bouncing-ball": SpinnerPreset(
(
"( โ )",
"( โ )",
"( โ )",
"( โ )",
"( โ)",
"( โ )",
"( โ )",
"( โ )",
"( โ )",
"(โ )",
),
0.08,
),
"smiley": SpinnerPreset(("๐", "๐"), 0.2),
"monkey": SpinnerPreset(("๐", "๐", "๐", "๐"), 0.3),
"hearts": SpinnerPreset(("๐", "๐", "๐", "๐", "๐"), 0.1),
"clock": SpinnerPreset(
(
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
"๐",
),
0.1,
),
"earth": SpinnerPreset(("๐", "๐", "๐"), 0.18),
"material": SpinnerPreset(
(
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
"โโโโโโโโโโโโโโโโโโโโ",
),
0.017,
),
"moon": SpinnerPreset(("๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐"), 0.08),
"runner": SpinnerPreset(("๐ถ", "๐"), 0.14),
"pong": SpinnerPreset(
(
"โโ โ",
"โโ โ",
"โ โ โ",
"โ โ โ",
"โ โก โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โก โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โกโ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โก โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โ โ",
"โ โก โ",
"โโ โ",
),
0.08,
),
"shark": SpinnerPreset(
(
"โ|\\____________โ",
"โ_|\\___________โ",
"โ__|\\__________โ",
"โ___|\\_________โ",
"โ____|\\________โ",
"โ_____|\\_______โ",
"โ______|\\______โ",
"โ_______|\\_____โ",
"โ________|\\____โ",
"โ_________|\\___โ",
"โ__________|\\__โ",
"โ___________|\\_โ",
"โ____________|\\โ",
"โ____________/|โ",
"โ___________/|_โ",
"โ__________/|__โ",
"โ_________/|___โ",
"โ________/|____โ",
"โ_______/|_____โ",
"โ______/|______โ",
"โ_____/|_______โ",
"โ____/|________โ",
"โ___/|_________โ",
"โ__/|__________โ",
"โ_/|___________โ",
"โ/|____________โ",
),
0.12,
),
"dqpb": SpinnerPreset(tuple("dqpb"), 0.1),
"weather": SpinnerPreset(
(
"โ๏ธ",
"โ๏ธ",
"โ๏ธ",
"๐ค ",
"โ
๏ธ",
"๐ฅ ",
"โ๏ธ",
"๐ง ",
"๐จ ",
"๐ง ",
"๐จ ",
"๐ง ",
"๐จ ",
"โ ",
"๐จ ",
"๐ง ",
"๐จ ",
"โ๏ธ",
"๐ฅ ",
"โ
๏ธ",
"๐ค ",
"โ๏ธ",
"โ๏ธ",
),
0.1,
),
"christmas": SpinnerPreset(tuple("๐ฒ๐"), 0.4),
"grenade": SpinnerPreset(
(
"ุ ",
"โฒ ",
" ยด ",
" โพ ",
" โธ",
" โธ",
" |",
" โ",
" โ",
" เทด ",
" โ",
" ",
" ",
" ",
),
0.08,
),
"point": SpinnerPreset(("โโโ", "โโโ", "โโโ", "โโโ", "โโโ"), 0.125),
"layer": SpinnerPreset(tuple("-=โก"), 0.15),
"beta-wave": SpinnerPreset(
("ฯฮฒฮฒฮฒฮฒฮฒฮฒ", "ฮฒฯฮฒฮฒฮฒฮฒฮฒ", "ฮฒฮฒฯฮฒฮฒฮฒฮฒ", "ฮฒฮฒฮฒฯฮฒฮฒฮฒ", "ฮฒฮฒฮฒฮฒฯฮฒฮฒ", "ฮฒฮฒฮฒฮฒฮฒฯฮฒ", "ฮฒฮฒฮฒฮฒฮฒฮฒฯ"),
0.08,
),
"finger-dance": SpinnerPreset(("๐ค", "๐ค", "๐", "โ", "๐ค", "๐"), 0.16),
"fist-bump": SpinnerPreset(
(
"๐ค\u3000\u3000\u3000\u3000๐ค",
"๐ค\u3000\u3000\u3000\u3000๐ค",
"๐ค\u3000\u3000\u3000\u3000๐ค",
"\u3000๐ค\u3000\u3000๐ค\u3000",
"\u3000\u3000๐ค๐ค\u3000\u3000",
"\u3000๐คโจ๐ค\u3000\u3000",
"๐ค\u3000โจ\u3000๐ค\u3000",
),
0.08,
),
"soccer-header": SpinnerPreset(
(
" ๐งโฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ๐ง ",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
"๐ง โฝ๏ธ ๐ง",
),
0.08,
),
"mindblown": SpinnerPreset(
(
"๐",
"๐",
"๐ฎ",
"๐ฎ",
"๐ฆ",
"๐ฆ",
"๐ง",
"๐ง",
"๐คฏ",
"๐ฅ",
"โจ",
"\u3000",
"\u3000",
"\u3000",
),
0.16,
),
"speaker": SpinnerPreset(("๐", "๐", "๐", "๐"), 0.16),
"orange-pulse": SpinnerPreset(("๐ธ", "๐ถ", "๐ ", "๐ ", "๐ถ"), 0.1),
"blue-pulse": SpinnerPreset(("๐น", "๐ท", "๐ต", "๐ต", "๐ท"), 0.1),
"orange-blue-pulse": SpinnerPreset(
("๐ธ", "๐ถ", "๐ ", "๐ ", "๐ถ", "๐น", "๐ท", "๐ต", "๐ต", "๐ท"), 0.1
),
"aesthetic": SpinnerPreset(
(
"โฐโฑโฑโฑโฑโฑโฑ",
"โฐโฐโฑโฑโฑโฑโฑ",
"โฐโฐโฐโฑโฑโฑโฑ",
"โฐโฐโฐโฐโฑโฑโฑ",
"โฐโฐโฐโฐโฐโฑโฑ",
"โฐโฐโฐโฐโฐโฐโฑ",
"โฐโฐโฐโฐโฐโฐโฐ",
"โฐโฑโฑโฑโฑโฑโฑ",
),
0.08,
),
"dwarf-fortress": SpinnerPreset(
(
" โโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบโโโโโโยฃยฃยฃ ",
"โบ โโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบโโโโโยฃยฃยฃ ",
" โบ โโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบโโโโยฃยฃยฃ ",
" โบ โโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบโโโยฃยฃยฃ ",
" โบ โโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบโโยฃยฃยฃ ",
" โบ โยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบโยฃยฃยฃ ",
" โบ ยฃยฃยฃ ",
" โบยฃยฃยฃ ",
" โบยฃยฃยฃ ",
" โบโยฃยฃ ",
" โบโยฃยฃ ",
" โบโยฃยฃ ",
" โบโยฃยฃ ",
" โบโยฃยฃ ",
" โบโยฃยฃ ",
" โบ ยฃยฃ ",
" โบยฃยฃ ",
" โบยฃยฃ ",
" โบโยฃ ",
" โบโยฃ ",
" โบโยฃ ",
" โบโยฃ ",
" โบโยฃ ",
" โบโยฃ ",
" โบ ยฃ ",
" โบยฃ ",
" โบยฃ ",
" โบโ ",
" โบโ ",
" โบโ ",
" โบโ ",
" โบโ ",
" โบโ ",
" โบ ",
" โบ &",
" โบ โผ&",
" โบ โผ &",
" โบโผ &",
" โบโผ & ",
" โผ & ",
" โบ & ",
" โผ & ",
" โบ & ",
" โผ & ",
" โบ & ",
"โผ & ",
" & ",
" & ",
" & โ ",
" & โ ",
" & โ ",
" & ยฃ ",
" & โยฃ ",
" & โยฃ ",
" & โยฃ ",
" & ยฃยฃ ",
" & โยฃยฃ ",
" & โยฃยฃ ",
"& โยฃยฃ ",
"& ยฃยฃยฃ ",
" โยฃยฃยฃ ",
" โยฃยฃยฃ ",
" โยฃยฃยฃ ",
" โยฃยฃยฃ ",
" โโยฃยฃยฃ ",
" โโยฃยฃยฃ ",
" โโยฃยฃยฃ ",
" โโยฃยฃยฃ ",
" โโโยฃยฃยฃ ",
" โโโยฃยฃยฃ ",
" โโโยฃยฃยฃ ",
" โโโยฃยฃยฃ ",
" โโโโยฃยฃยฃ ",
" โโโโยฃยฃยฃ ",
" โโโโยฃยฃยฃ ",
" โโโโยฃยฃยฃ ",
" โโโโโยฃยฃยฃ ",
" โโโโโยฃยฃยฃ ",
" โโโโโยฃยฃยฃ ",
" โโโโโยฃยฃยฃ ",
" โโโโโโยฃยฃยฃ ",
" โโโโโโยฃยฃยฃ ",
" โโโโโโยฃยฃยฃ ",
" โโโโโโยฃยฃยฃ ",
" โโโโโโยฃยฃยฃ ",
),
0.08,
),
"fish": SpinnerPreset(
(
"~~~~~~~~~~~~~~~~~~~~",
"> ~~~~~~~~~~~~~~~~~~",
"ยบ> ~~~~~~~~~~~~~~~~~",
"(ยบ> ~~~~~~~~~~~~~~~~",
"((ยบ> ~~~~~~~~~~~~~~~",
"<((ยบ> ~~~~~~~~~~~~~~",
"><((ยบ> ~~~~~~~~~~~~~",
" ><((ยบ> ~~~~~~~~~~~~",
"~ ><((ยบ> ~~~~~~~~~~~",
"~~ <>((ยบ> ~~~~~~~~~~",
"~~~ ><((ยบ> ~~~~~~~~~",
"~~~~ <>((ยบ> ~~~~~~~~",
"~~~~~ ><((ยบ> ~~~~~~~",
"~~~~~~ <>((ยบ> ~~~~~~",
"~~~~~~~ ><((ยบ> ~~~~~",
"~~~~~~~~ <>((ยบ> ~~~~",
"~~~~~~~~~ ><((ยบ> ~~~",
"~~~~~~~~~~ <>((ยบ> ~~",
"~~~~~~~~~~~ ><((ยบ> ~",
"~~~~~~~~~~~~ <>((ยบ> ",
"~~~~~~~~~~~~~ ><((ยบ>",
"~~~~~~~~~~~~~~ <>((ยบ",
"~~~~~~~~~~~~~~~ ><((",
"~~~~~~~~~~~~~~~~ <>(",
"~~~~~~~~~~~~~~~~~ ><",
"~~~~~~~~~~~~~~~~~~ <",
"~~~~~~~~~~~~~~~~~~~~",
),
0.08,
),
}
"""Named spinner animations ported from cli-spinners, keyed by name.
Each value is a {class}`SpinnerPreset` bundling frames and a tuned interval.
Select one with {class}`~click_extra.spinner.Spinner`'s `spinner` argument::
from click_extra import Spinner, SPINNERS
with Spinner("Brewing tea", spinner=SPINNERS["moon"]):
...
Unlike the upstream `\\b`-based renderers, {class}`~click_extra.spinner.Spinner` redraws the whole
line, so the multi-character animations (`bouncingBar`, `pong`, `shark`, โฆ)
render correctly here.
"""