From b06d64a89081eaffbc8398afcccff2558150e23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franc=CC=A7ois-Guillaume=20Ribreau?= Date: Wed, 23 Feb 2022 17:42:54 +0100 Subject: [PATCH] fix: bring back the update spinners script --- src/utils/mod.rs | 1 + src/utils/spinner_data.rs | 6 + src/utils/spinner_names.rs | 174 +-- src/utils/spinners_data.rs | 2360 ++++++++++++++++++------------------ update_spinners.sh | 24 + 5 files changed, 1295 insertions(+), 1270 deletions(-) create mode 100644 src/utils/spinner_data.rs create mode 100755 update_spinners.sh diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 0ef5575..3466ad5 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,2 +1,3 @@ pub mod spinner_names; pub mod spinners_data; +pub mod spinner_data; diff --git a/src/utils/spinner_data.rs b/src/utils/spinner_data.rs new file mode 100644 index 0000000..43b2f27 --- /dev/null +++ b/src/utils/spinner_data.rs @@ -0,0 +1,6 @@ +#[derive(Debug, Clone)] +pub struct SpinnerData { + pub frames: Vec<&'static str>, + pub interval: u16, +} + diff --git a/src/utils/spinner_names.rs b/src/utils/spinner_names.rs index 7a0d372..a954ca4 100644 --- a/src/utils/spinner_names.rs +++ b/src/utils/spinner_names.rs @@ -1,87 +1,87 @@ -use strum::{Display, EnumIter, EnumString}; - -#[derive(Debug, Clone, EnumIter, Display, EnumString)] -pub enum SpinnerNames { - Dots, - Dots2, - Dots3, - Dots4, - Dots5, - Dots6, - Dots7, - Dots8, - Dots9, - Dots10, - Dots11, - Dots12, - Dots8Bit, - Line, - Line2, - Pipe, - SimpleDots, - SimpleDotsScrolling, - Star, - Star2, - Flip, - Hamburger, - GrowVertical, - GrowHorizontal, - Balloon, - Balloon2, - Noise, - Bounce, - BoxBounce, - BoxBounce2, - Triangle, - Arc, - Circle, - SquareCorners, - CircleQuarters, - CircleHalves, - Squish, - Toggle, - Toggle2, - Toggle3, - Toggle4, - Toggle5, - Toggle6, - Toggle7, - Toggle8, - Toggle9, - Toggle10, - Toggle11, - Toggle12, - Toggle13, - Arrow, - Arrow2, - Arrow3, - BouncingBar, - BouncingBall, - Smiley, - Monkey, - Hearts, - Clock, - Earth, - Material, - Moon, - Runner, - Pong, - Shark, - Dqpb, - Weather, - Christmas, - Grenade, - Point, - Layer, - BetaWave, - FingerDance, - FistBump, - SoccerHeader, - Mindblown, - Speaker, - OrangePulse, - BluePulse, - OrangeBluePulse, - TimeTravel, - Aesthetic, -} +use strum::{Display, EnumIter, EnumString}; + +#[derive(Debug, Clone, EnumIter, Display, EnumString)] +pub enum SpinnerNames { + Dots, + Dots2, + Dots3, + Dots4, + Dots5, + Dots6, + Dots7, + Dots8, + Dots9, + Dots10, + Dots11, + Dots12, + Dots8Bit, + Line, + Line2, + Pipe, + SimpleDots, + SimpleDotsScrolling, + Star, + Star2, + Flip, + Hamburger, + GrowVertical, + GrowHorizontal, + Balloon, + Balloon2, + Noise, + Bounce, + BoxBounce, + BoxBounce2, + Triangle, + Arc, + Circle, + SquareCorners, + CircleQuarters, + CircleHalves, + Squish, + Toggle, + Toggle2, + Toggle3, + Toggle4, + Toggle5, + Toggle6, + Toggle7, + Toggle8, + Toggle9, + Toggle10, + Toggle11, + Toggle12, + Toggle13, + Arrow, + Arrow2, + Arrow3, + BouncingBar, + BouncingBall, + Smiley, + Monkey, + Hearts, + Clock, + Earth, + Material, + Moon, + Runner, + Pong, + Shark, + Dqpb, + Weather, + Christmas, + Grenade, + Point, + Layer, + BetaWave, + FingerDance, + FistBump, + SoccerHeader, + Mindblown, + Speaker, + OrangePulse, + BluePulse, + OrangeBluePulse, + TimeTravel, + Aesthetic, +} diff --git a/src/utils/spinners_data.rs b/src/utils/spinners_data.rs index 4b2f697..d807966 100644 --- a/src/utils/spinners_data.rs +++ b/src/utils/spinners_data.rs @@ -1,1183 +1,1177 @@ -use lazy_static::lazy_static; -use maplit::{self, hashmap}; -use std::collections::HashMap; - -#[derive(Debug, Clone)] -pub struct SpinnerData { - pub frames: Vec<&'static str>, - pub interval: u16, -} - -lazy_static! { - pub static ref SPINNERS: HashMap = { - hashmap! { - "Dots".into() => SpinnerData {frames: vec![ - "⠋", - "⠙", - "⠹", - "⠸", - "⠼", - "⠴", - "⠦", - "⠧", - "⠇", - "⠏" - ], interval: 80}, - "Dots2".into() => SpinnerData {frames: vec![ - "⣾", - "⣽", - "⣻", - "⢿", - "⡿", - "⣟", - "⣯", - "⣷" - ], interval: 80}, - "Dots3".into() => SpinnerData {frames: vec![ - "⠋", - "⠙", - "⠚", - "⠞", - "⠖", - "⠦", - "⠴", - "⠲", - "⠳", - "⠓" - ], interval: 80}, - "Dots4".into() => SpinnerData {frames: vec![ - "⠄", - "⠆", - "⠇", - "⠋", - "⠙", - "⠸", - "⠰", - "⠠", - "⠰", - "⠸", - "⠙", - "⠋", - "⠇", - "⠆" - ], interval: 80}, - "Dots5".into() => SpinnerData {frames: vec![ - "⠋", - "⠙", - "⠚", - "⠒", - "⠂", - "⠂", - "⠒", - "⠲", - "⠴", - "⠦", - "⠖", - "⠒", - "⠐", - "⠐", - "⠒", - "⠓", - "⠋" - ], interval: 80}, - "Dots6".into() => SpinnerData {frames: vec![ - "⠁", - "⠉", - "⠙", - "⠚", - "⠒", - "⠂", - "⠂", - "⠒", - "⠲", - "⠴", - "⠤", - "⠄", - "⠄", - "⠤", - "⠴", - "⠲", - "⠒", - "⠂", - "⠂", - "⠒", - "⠚", - "⠙", - "⠉", - "⠁" - ], interval: 80}, - "Dots7".into() => SpinnerData {frames: vec![ - "⠈", - "⠉", - "⠋", - "⠓", - "⠒", - "⠐", - "⠐", - "⠒", - "⠖", - "⠦", - "⠤", - "⠠", - "⠠", - "⠤", - "⠦", - "⠖", - "⠒", - "⠐", - "⠐", - "⠒", - "⠓", - "⠋", - "⠉", - "⠈" - ], interval: 80}, - "Dots8".into() => SpinnerData {frames: vec![ - "⠁", - "⠁", - "⠉", - "⠙", - "⠚", - "⠒", - "⠂", - "⠂", - "⠒", - "⠲", - "⠴", - "⠤", - "⠄", - "⠄", - "⠤", - "⠠", - "⠠", - "⠤", - "⠦", - "⠖", - "⠒", - "⠐", - "⠐", - "⠒", - "⠓", - "⠋", - "⠉", - "⠈", - "⠈" - ], interval: 80}, - "Dots9".into() => SpinnerData {frames: vec![ - "⢹", - "⢺", - "⢼", - "⣸", - "⣇", - "⡧", - "⡗", - "⡏" - ], interval: 80}, - "Dots10".into() => SpinnerData {frames: vec![ - "⢄", - "⢂", - "⢁", - "⡁", - "⡈", - "⡐", - "⡠" - ], interval: 80}, - "Dots11".into() => SpinnerData {frames: vec![ - "⠁", - "⠂", - "⠄", - "⡀", - "⢀", - "⠠", - "⠐", - "⠈" - ], interval: 100}, - "Dots12".into() => SpinnerData {frames: vec![ - "⢀⠀", - "⡀⠀", - "⠄⠀", - "⢂⠀", - "⡂⠀", - "⠅⠀", - "⢃⠀", - "⡃⠀", - "⠍⠀", - "⢋⠀", - "⡋⠀", - "⠍⠁", - "⢋⠁", - "⡋⠁", - "⠍⠉", - "⠋⠉", - "⠋⠉", - "⠉⠙", - "⠉⠙", - "⠉⠩", - "⠈⢙", - "⠈⡙", - "⢈⠩", - "⡀⢙", - "⠄⡙", - "⢂⠩", - "⡂⢘", - "⠅⡘", - "⢃⠨", - "⡃⢐", - "⠍⡐", - "⢋⠠", - "⡋⢀", - "⠍⡁", - "⢋⠁", - "⡋⠁", - "⠍⠉", - "⠋⠉", - "⠋⠉", - "⠉⠙", - "⠉⠙", - "⠉⠩", - "⠈⢙", - "⠈⡙", - "⠈⠩", - "⠀⢙", - "⠀⡙", - "⠀⠩", - "⠀⢘", - "⠀⡘", - "⠀⠨", - "⠀⢐", - "⠀⡐", - "⠀⠠", - "⠀⢀", - "⠀⡀" - ], interval: 80}, - "Dots8Bit".into() => SpinnerData {frames: vec![ - "⠀", - "⠁", - "⠂", - "⠃", - "⠄", - "⠅", - "⠆", - "⠇", - "⡀", - "⡁", - "⡂", - "⡃", - "⡄", - "⡅", - "⡆", - "⡇", - "⠈", - "⠉", - "⠊", - "⠋", - "⠌", - "⠍", - "⠎", - "⠏", - "⡈", - "⡉", - "⡊", - "⡋", - "⡌", - "⡍", - "⡎", - "⡏", - "⠐", - "⠑", - "⠒", - "⠓", - "⠔", - "⠕", - "⠖", - "⠗", - "⡐", - "⡑", - "⡒", - "⡓", - "⡔", - "⡕", - "⡖", - "⡗", - "⠘", - "⠙", - "⠚", - "⠛", - "⠜", - "⠝", - "⠞", - "⠟", - "⡘", - "⡙", - "⡚", - "⡛", - "⡜", - "⡝", - "⡞", - "⡟", - "⠠", - "⠡", - "⠢", - "⠣", - "⠤", - "⠥", - "⠦", - "⠧", - "⡠", - "⡡", - "⡢", - "⡣", - "⡤", - "⡥", - "⡦", - "⡧", - "⠨", - "⠩", - "⠪", - "⠫", - "⠬", - "⠭", - "⠮", - "⠯", - "⡨", - "⡩", - "⡪", - "⡫", - "⡬", - "⡭", - "⡮", - "⡯", - "⠰", - "⠱", - "⠲", - "⠳", - "⠴", - "⠵", - "⠶", - "⠷", - "⡰", - "⡱", - "⡲", - "⡳", - "⡴", - "⡵", - "⡶", - "⡷", - "⠸", - "⠹", - "⠺", - "⠻", - "⠼", - "⠽", - "⠾", - "⠿", - "⡸", - "⡹", - "⡺", - "⡻", - "⡼", - "⡽", - "⡾", - "⡿", - "⢀", - "⢁", - "⢂", - "⢃", - "⢄", - "⢅", - "⢆", - "⢇", - "⣀", - "⣁", - "⣂", - "⣃", - "⣄", - "⣅", - "⣆", - "⣇", - "⢈", - "⢉", - "⢊", - "⢋", - "⢌", - "⢍", - "⢎", - "⢏", - "⣈", - "⣉", - "⣊", - "⣋", - "⣌", - "⣍", - "⣎", - "⣏", - "⢐", - "⢑", - "⢒", - "⢓", - "⢔", - "⢕", - "⢖", - "⢗", - "⣐", - "⣑", - "⣒", - "⣓", - "⣔", - "⣕", - "⣖", - "⣗", - "⢘", - "⢙", - "⢚", - "⢛", - "⢜", - "⢝", - "⢞", - "⢟", - "⣘", - "⣙", - "⣚", - "⣛", - "⣜", - "⣝", - "⣞", - "⣟", - "⢠", - "⢡", - "⢢", - "⢣", - "⢤", - "⢥", - "⢦", - "⢧", - "⣠", - "⣡", - "⣢", - "⣣", - "⣤", - "⣥", - "⣦", - "⣧", - "⢨", - "⢩", - "⢪", - "⢫", - "⢬", - "⢭", - "⢮", - "⢯", - "⣨", - "⣩", - "⣪", - "⣫", - "⣬", - "⣭", - "⣮", - "⣯", - "⢰", - "⢱", - "⢲", - "⢳", - "⢴", - "⢵", - "⢶", - "⢷", - "⣰", - "⣱", - "⣲", - "⣳", - "⣴", - "⣵", - "⣶", - "⣷", - "⢸", - "⢹", - "⢺", - "⢻", - "⢼", - "⢽", - "⢾", - "⢿", - "⣸", - "⣹", - "⣺", - "⣻", - "⣼", - "⣽", - "⣾", - "⣿" - ], interval: 80}, - "Line".into() => SpinnerData {frames: vec![ - "-", - "\\", - "|", - "/" - ], interval: 130}, - "Line2".into() => SpinnerData {frames: vec![ - "⠂", - "-", - "–", - "—", - "–", - "-" - ], interval: 100}, - "Pipe".into() => SpinnerData {frames: vec![ - "┤", - "┘", - "┴", - "└", - "├", - "┌", - "┬", - "┐" - ], interval: 100}, - "SimpleDots".into() => SpinnerData {frames: vec![ - ". ", - ".. ", - "...", - " " - ], interval: 400}, - "SimpleDotsScrolling".into() => SpinnerData {frames: vec![ - ". ", - ".. ", - "...", - " ..", - " .", - " " - ], interval: 200}, - "Star".into() => SpinnerData {frames: vec![ - "✶", - "✸", - "✹", - "✺", - "✹", - "✷" - ], interval: 70}, - "Star2".into() => SpinnerData {frames: vec![ - "+", - "x", - "*" - ], interval: 80}, - "Flip".into() => SpinnerData {frames: vec![ - "_", - "_", - "_", - "-", - "`", - "`", - "'", - "´", - "-", - "_", - "_", - "_" - ], interval: 70}, - "Hamburger".into() => SpinnerData {frames: vec![ - "☱", - "☲", - "☴" - ], interval: 100}, - "GrowVertical".into() => SpinnerData {frames: vec![ - "▁", - "▃", - "▄", - "▅", - "▆", - "▇", - "▆", - "▅", - "▄", - "▃" - ], interval: 120}, - "GrowHorizontal".into() => SpinnerData {frames: vec![ - "▏", - "▎", - "▍", - "▌", - "▋", - "▊", - "▉", - "▊", - "▋", - "▌", - "▍", - "▎" - ], interval: 120}, - "Balloon".into() => SpinnerData {frames: vec![ - " ", - ".", - "o", - "O", - "@", - "*", - " " - ], interval: 140}, - "Balloon2".into() => SpinnerData {frames: vec![ - ".", - "o", - "O", - "°", - "O", - "o", - "." - ], interval: 120}, - "Noise".into() => SpinnerData {frames: vec![ - "▓", - "▒", - "░" - ], interval: 100}, - "Bounce".into() => SpinnerData {frames: vec![ - "⠁", - "⠂", - "⠄", - "⠂" - ], interval: 120}, - "BoxBounce".into() => SpinnerData {frames: vec![ - "▖", - "▘", - "▝", - "▗" - ], interval: 120}, - "BoxBounce2".into() => SpinnerData {frames: vec![ - "▌", - "▀", - "▐", - "▄" - ], interval: 100}, - "Triangle".into() => SpinnerData {frames: vec![ - "◢", - "◣", - "◤", - "◥" - ], interval: 50}, - "Arc".into() => SpinnerData {frames: vec![ - "◜", - "◠", - "◝", - "◞", - "◡", - "◟" - ], interval: 100}, - "Circle".into() => SpinnerData {frames: vec![ - "◡", - "⊙", - "◠" - ], interval: 120}, - "SquareCorners".into() => SpinnerData {frames: vec![ - "◰", - "◳", - "◲", - "◱" - ], interval: 180}, - "CircleQuarters".into() => SpinnerData {frames: vec![ - "◴", - "◷", - "◶", - "◵" - ], interval: 120}, - "CircleHalves".into() => SpinnerData {frames: vec![ - "◐", - "◓", - "◑", - "◒" - ], interval: 50}, - "Squish".into() => SpinnerData {frames: vec![ - "╫", - "╪" - ], interval: 100}, - "Toggle".into() => SpinnerData {frames: vec![ - "⊶", - "⊷" - ], interval: 250}, - "Toggle2".into() => SpinnerData {frames: vec![ - "▫", - "▪" - ], interval: 80}, - "Toggle3".into() => SpinnerData {frames: vec![ - "□", - "■" - ], interval: 120}, - "Toggle4".into() => SpinnerData {frames: vec![ - "■", - "□", - "▪", - "▫" - ], interval: 100}, - "Toggle5".into() => SpinnerData {frames: vec![ - "▮", - "▯" - ], interval: 100}, - "Toggle6".into() => SpinnerData {frames: vec![ - "ဝ", - "၀" - ], interval: 300}, - "Toggle7".into() => SpinnerData {frames: vec![ - "⦾", - "⦿" - ], interval: 80}, - "Toggle8".into() => SpinnerData {frames: vec![ - "◍", - "◌" - ], interval: 100}, - "Toggle9".into() => SpinnerData {frames: vec![ - "◉", - "◎" - ], interval: 100}, - "Toggle10".into() => SpinnerData {frames: vec![ - "㊂", - "㊀", - "㊁" - ], interval: 100}, - "Toggle11".into() => SpinnerData {frames: vec![ - "⧇", - "⧆" - ], interval: 50}, - "Toggle12".into() => SpinnerData {frames: vec![ - "☗", - "☖" - ], interval: 120}, - "Toggle13".into() => SpinnerData {frames: vec![ - "=", - "*", - "-" - ], interval: 80}, - "Arrow".into() => SpinnerData {frames: vec![ - "←", - "↖", - "↑", - "↗", - "→", - "↘", - "↓", - "↙" - ], interval: 100}, - "Arrow2".into() => SpinnerData {frames: vec![ - "⬆️ ", - "↗️ ", - "➡️ ", - "↘️ ", - "⬇️ ", - "↙️ ", - "⬅️ ", - "↖️ " - ], interval: 80}, - "Arrow3".into() => SpinnerData {frames: vec![ - "▹▹▹▹▹", - "▸▹▹▹▹", - "▹▸▹▹▹", - "▹▹▸▹▹", - "▹▹▹▸▹", - "▹▹▹▹▸" - ], interval: 120}, - "BouncingBar".into() => SpinnerData {frames: vec![ - "[ ]", - "[= ]", - "[== ]", - "[=== ]", - "[ ===]", - "[ ==]", - "[ =]", - "[ ]", - "[ =]", - "[ ==]", - "[ ===]", - "[====]", - "[=== ]", - "[== ]", - "[= ]" - ], interval: 80}, - "BouncingBall".into() => SpinnerData {frames: vec![ - "( ● )", - "( ● )", - "( ● )", - "( ● )", - "( ●)", - "( ● )", - "( ● )", - "( ● )", - "( ● )", - "(● )" - ], interval: 80}, - "Smiley".into() => SpinnerData {frames: vec![ - "😄 ", - "😝 " - ], interval: 200}, - "Monkey".into() => SpinnerData {frames: vec![ - "🙈 ", - "🙈 ", - "🙉 ", - "🙊 " - ], interval: 300}, - "Hearts".into() => SpinnerData {frames: vec![ - "💛 ", - "💙 ", - "💜 ", - "💚 ", - "❤️ " - ], interval: 100}, - "Clock".into() => SpinnerData {frames: vec![ - "🕛 ", - "🕐 ", - "🕑 ", - "🕒 ", - "🕓 ", - "🕔 ", - "🕕 ", - "🕖 ", - "🕗 ", - "🕘 ", - "🕙 ", - "🕚 " - ], interval: 100}, - "Earth".into() => SpinnerData {frames: vec![ - "🌍 ", - "🌎 ", - "🌏 " - ], interval: 180}, - "Material".into() => SpinnerData {frames: vec![ - "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "███████▁▁▁▁▁▁▁▁▁▁▁▁▁", - "████████▁▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "██████████▁▁▁▁▁▁▁▁▁▁", - "███████████▁▁▁▁▁▁▁▁▁", - "█████████████▁▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁▁██████████████▁▁▁▁", - "▁▁▁██████████████▁▁▁", - "▁▁▁▁█████████████▁▁▁", - "▁▁▁▁██████████████▁▁", - "▁▁▁▁██████████████▁▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁██████████████▁", - "▁▁▁▁▁▁██████████████", - "▁▁▁▁▁▁██████████████", - "▁▁▁▁▁▁▁█████████████", - "▁▁▁▁▁▁▁█████████████", - "▁▁▁▁▁▁▁▁████████████", - "▁▁▁▁▁▁▁▁████████████", - "▁▁▁▁▁▁▁▁▁███████████", - "▁▁▁▁▁▁▁▁▁███████████", - "▁▁▁▁▁▁▁▁▁▁██████████", - "▁▁▁▁▁▁▁▁▁▁██████████", - "▁▁▁▁▁▁▁▁▁▁▁▁████████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "████████▁▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "█████████▁▁▁▁▁▁▁▁▁▁▁", - "███████████▁▁▁▁▁▁▁▁▁", - "████████████▁▁▁▁▁▁▁▁", - "████████████▁▁▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "██████████████▁▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁██████████████▁▁▁▁▁", - "▁▁▁█████████████▁▁▁▁", - "▁▁▁▁▁████████████▁▁▁", - "▁▁▁▁▁████████████▁▁▁", - "▁▁▁▁▁▁███████████▁▁▁", - "▁▁▁▁▁▁▁▁█████████▁▁▁", - "▁▁▁▁▁▁▁▁█████████▁▁▁", - "▁▁▁▁▁▁▁▁▁█████████▁▁", - "▁▁▁▁▁▁▁▁▁█████████▁▁", - "▁▁▁▁▁▁▁▁▁▁█████████▁", - "▁▁▁▁▁▁▁▁▁▁▁████████▁", - "▁▁▁▁▁▁▁▁▁▁▁████████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", - "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁" - ], interval: 17}, - "Moon".into() => SpinnerData {frames: vec![ - "🌑 ", - "🌒 ", - "🌓 ", - "🌔 ", - "🌕 ", - "🌖 ", - "🌗 ", - "🌘 " - ], interval: 80}, - "Runner".into() => SpinnerData {frames: vec![ - "🚶 ", - "🏃 " - ], interval: 140}, - "Pong".into() => SpinnerData {frames: vec![ - "▐⠂ ▌", - "▐⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂▌", - "▐ ⠠▌", - "▐ ⡀▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐ ⠠ ▌", - "▐ ⠂ ▌", - "▐ ⠈ ▌", - "▐ ⠂ ▌", - "▐ ⠠ ▌", - "▐ ⡀ ▌", - "▐⠠ ▌" - ], interval: 80}, - "Shark".into() => SpinnerData {frames: vec![ - "▐|\\____________▌", - "▐_|\\___________▌", - "▐__|\\__________▌", - "▐___|\\_________▌", - "▐____|\\________▌", - "▐_____|\\_______▌", - "▐______|\\______▌", - "▐_______|\\_____▌", - "▐________|\\____▌", - "▐_________|\\___▌", - "▐__________|\\__▌", - "▐___________|\\_▌", - "▐____________|\\▌", - "▐____________/|▌", - "▐___________/|_▌", - "▐__________/|__▌", - "▐_________/|___▌", - "▐________/|____▌", - "▐_______/|_____▌", - "▐______/|______▌", - "▐_____/|_______▌", - "▐____/|________▌", - "▐___/|_________▌", - "▐__/|__________▌", - "▐_/|___________▌", - "▐/|____________▌" - ], interval: 120}, - "Dqpb".into() => SpinnerData {frames: vec![ - "d", - "q", - "p", - "b" - ], interval: 100}, - "Weather".into() => SpinnerData {frames: vec![ - "☀️ ", - "☀️ ", - "☀️ ", - "🌤 ", - "⛅️ ", - "🌥 ", - "☁️ ", - "🌧 ", - "🌨 ", - "🌧 ", - "🌨 ", - "🌧 ", - "🌨 ", - "⛈ ", - "🌨 ", - "🌧 ", - "🌨 ", - "☁️ ", - "🌥 ", - "⛅️ ", - "🌤 ", - "☀️ ", - "☀️ " - ], interval: 100}, - "Christmas".into() => SpinnerData {frames: vec![ - "🌲", - "🎄" - ], interval: 400}, - "Grenade".into() => SpinnerData {frames: vec![ - "، ", - "′ ", - " ´ ", - " ‾ ", - " ⸌", - " ⸊", - " |", - " ⁎", - " ⁕", - " ෴ ", - " ⁓", - " ", - " ", - " " - ], interval: 80}, - "Point".into() => SpinnerData {frames: vec![ - "∙∙∙", - "●∙∙", - "∙●∙", - "∙∙●", - "∙∙∙" - ], interval: 125}, - "Layer".into() => SpinnerData {frames: vec![ - "-", - "=", - "≡" - ], interval: 150}, - "BetaWave".into() => SpinnerData {frames: vec![ - "ρββββββ", - "βρβββββ", - "ββρββββ", - "βββρβββ", - "ββββρββ", - "βββββρβ", - "ββββββρ" - ], interval: 80}, - "FingerDance".into() => SpinnerData {frames: vec![ - "🤘 ", - "🤟 ", - "🖖 ", - "✋ ", - "🤚 ", - "👆 " - ], interval: 160}, - "FistBump".into() => SpinnerData {frames: vec![ - "🤜    🤛 ", - "🤜    🤛 ", - "🤜    🤛 ", - " 🤜  🤛  ", - "  🤜🤛   ", - " 🤜✨🤛   ", - "🤜 ✨ 🤛  " - ], interval: 80}, - "SoccerHeader".into() => SpinnerData {frames: vec![ - " 🧑⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 ", - "🧑 ⚽️ 🧑 " - ], interval: 80}, - "Mindblown".into() => SpinnerData {frames: vec![ - "😐 ", - "😐 ", - "😮 ", - "😮 ", - "😦 ", - "😦 ", - "😧 ", - "😧 ", - "🤯 ", - "💥 ", - "✨ ", - "  ", - "  ", - "  " - ], interval: 160}, - "Speaker".into() => SpinnerData {frames: vec![ - "🔈 ", - "🔉 ", - "🔊 ", - "🔉 " - ], interval: 160}, - "OrangePulse".into() => SpinnerData {frames: vec![ - "🔸 ", - "🔶 ", - "🟠 ", - "🟠 ", - "🔶 " - ], interval: 100}, - "BluePulse".into() => SpinnerData {frames: vec![ - "🔹 ", - "🔷 ", - "🔵 ", - "🔵 ", - "🔷 " - ], interval: 100}, - "OrangeBluePulse".into() => SpinnerData {frames: vec![ - "🔸 ", - "🔶 ", - "🟠 ", - "🟠 ", - "🔶 ", - "🔹 ", - "🔷 ", - "🔵 ", - "🔵 ", - "🔷 " - ], interval: 100}, - "TimeTravel".into() => SpinnerData {frames: vec![ - "🕛 ", - "🕚 ", - "🕙 ", - "🕘 ", - "🕗 ", - "🕖 ", - "🕕 ", - "🕔 ", - "🕓 ", - "🕒 ", - "🕑 ", - "🕐 " - ], interval: 100}, - "Aesthetic".into() => SpinnerData {frames: vec![ - "▰▱▱▱▱▱▱", - "▰▰▱▱▱▱▱", - "▰▰▰▱▱▱▱", - "▰▰▰▰▱▱▱", - "▰▰▰▰▰▱▱", - "▰▰▰▰▰▰▱", - "▰▰▰▰▰▰▰", - "▰▱▱▱▱▱▱" - ], interval: 80} - } - }; -} +use crate::utils::spinner_data::SpinnerData; +use lazy_static::lazy_static; +use maplit::{self, hashmap}; +use std::collections::HashMap; +lazy_static! { + pub static ref SPINNERS: HashMap = { + hashmap! { + "Dots".into() => SpinnerData {frames: vec![ + "⠋", + "⠙", + "⠹", + "⠸", + "⠼", + "⠴", + "⠦", + "⠧", + "⠇", + "⠏" + ], interval: 80}, + "Dots2".into() => SpinnerData {frames: vec![ + "⣾", + "⣽", + "⣻", + "⢿", + "⡿", + "⣟", + "⣯", + "⣷" + ], interval: 80}, + "Dots3".into() => SpinnerData {frames: vec![ + "⠋", + "⠙", + "⠚", + "⠞", + "⠖", + "⠦", + "⠴", + "⠲", + "⠳", + "⠓" + ], interval: 80}, + "Dots4".into() => SpinnerData {frames: vec![ + "⠄", + "⠆", + "⠇", + "⠋", + "⠙", + "⠸", + "⠰", + "⠠", + "⠰", + "⠸", + "⠙", + "⠋", + "⠇", + "⠆" + ], interval: 80}, + "Dots5".into() => SpinnerData {frames: vec![ + "⠋", + "⠙", + "⠚", + "⠒", + "⠂", + "⠂", + "⠒", + "⠲", + "⠴", + "⠦", + "⠖", + "⠒", + "⠐", + "⠐", + "⠒", + "⠓", + "⠋" + ], interval: 80}, + "Dots6".into() => SpinnerData {frames: vec![ + "⠁", + "⠉", + "⠙", + "⠚", + "⠒", + "⠂", + "⠂", + "⠒", + "⠲", + "⠴", + "⠤", + "⠄", + "⠄", + "⠤", + "⠴", + "⠲", + "⠒", + "⠂", + "⠂", + "⠒", + "⠚", + "⠙", + "⠉", + "⠁" + ], interval: 80}, + "Dots7".into() => SpinnerData {frames: vec![ + "⠈", + "⠉", + "⠋", + "⠓", + "⠒", + "⠐", + "⠐", + "⠒", + "⠖", + "⠦", + "⠤", + "⠠", + "⠠", + "⠤", + "⠦", + "⠖", + "⠒", + "⠐", + "⠐", + "⠒", + "⠓", + "⠋", + "⠉", + "⠈" + ], interval: 80}, + "Dots8".into() => SpinnerData {frames: vec![ + "⠁", + "⠁", + "⠉", + "⠙", + "⠚", + "⠒", + "⠂", + "⠂", + "⠒", + "⠲", + "⠴", + "⠤", + "⠄", + "⠄", + "⠤", + "⠠", + "⠠", + "⠤", + "⠦", + "⠖", + "⠒", + "⠐", + "⠐", + "⠒", + "⠓", + "⠋", + "⠉", + "⠈", + "⠈" + ], interval: 80}, + "Dots9".into() => SpinnerData {frames: vec![ + "⢹", + "⢺", + "⢼", + "⣸", + "⣇", + "⡧", + "⡗", + "⡏" + ], interval: 80}, + "Dots10".into() => SpinnerData {frames: vec![ + "⢄", + "⢂", + "⢁", + "⡁", + "⡈", + "⡐", + "⡠" + ], interval: 80}, + "Dots11".into() => SpinnerData {frames: vec![ + "⠁", + "⠂", + "⠄", + "⡀", + "⢀", + "⠠", + "⠐", + "⠈" + ], interval: 100}, + "Dots12".into() => SpinnerData {frames: vec![ + "⢀⠀", + "⡀⠀", + "⠄⠀", + "⢂⠀", + "⡂⠀", + "⠅⠀", + "⢃⠀", + "⡃⠀", + "⠍⠀", + "⢋⠀", + "⡋⠀", + "⠍⠁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⢈⠩", + "⡀⢙", + "⠄⡙", + "⢂⠩", + "⡂⢘", + "⠅⡘", + "⢃⠨", + "⡃⢐", + "⠍⡐", + "⢋⠠", + "⡋⢀", + "⠍⡁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⠈⠩", + "⠀⢙", + "⠀⡙", + "⠀⠩", + "⠀⢘", + "⠀⡘", + "⠀⠨", + "⠀⢐", + "⠀⡐", + "⠀⠠", + "⠀⢀", + "⠀⡀" + ], interval: 80}, + "Dots8Bit".into() => SpinnerData {frames: vec![ + "⠀", + "⠁", + "⠂", + "⠃", + "⠄", + "⠅", + "⠆", + "⠇", + "⡀", + "⡁", + "⡂", + "⡃", + "⡄", + "⡅", + "⡆", + "⡇", + "⠈", + "⠉", + "⠊", + "⠋", + "⠌", + "⠍", + "⠎", + "⠏", + "⡈", + "⡉", + "⡊", + "⡋", + "⡌", + "⡍", + "⡎", + "⡏", + "⠐", + "⠑", + "⠒", + "⠓", + "⠔", + "⠕", + "⠖", + "⠗", + "⡐", + "⡑", + "⡒", + "⡓", + "⡔", + "⡕", + "⡖", + "⡗", + "⠘", + "⠙", + "⠚", + "⠛", + "⠜", + "⠝", + "⠞", + "⠟", + "⡘", + "⡙", + "⡚", + "⡛", + "⡜", + "⡝", + "⡞", + "⡟", + "⠠", + "⠡", + "⠢", + "⠣", + "⠤", + "⠥", + "⠦", + "⠧", + "⡠", + "⡡", + "⡢", + "⡣", + "⡤", + "⡥", + "⡦", + "⡧", + "⠨", + "⠩", + "⠪", + "⠫", + "⠬", + "⠭", + "⠮", + "⠯", + "⡨", + "⡩", + "⡪", + "⡫", + "⡬", + "⡭", + "⡮", + "⡯", + "⠰", + "⠱", + "⠲", + "⠳", + "⠴", + "⠵", + "⠶", + "⠷", + "⡰", + "⡱", + "⡲", + "⡳", + "⡴", + "⡵", + "⡶", + "⡷", + "⠸", + "⠹", + "⠺", + "⠻", + "⠼", + "⠽", + "⠾", + "⠿", + "⡸", + "⡹", + "⡺", + "⡻", + "⡼", + "⡽", + "⡾", + "⡿", + "⢀", + "⢁", + "⢂", + "⢃", + "⢄", + "⢅", + "⢆", + "⢇", + "⣀", + "⣁", + "⣂", + "⣃", + "⣄", + "⣅", + "⣆", + "⣇", + "⢈", + "⢉", + "⢊", + "⢋", + "⢌", + "⢍", + "⢎", + "⢏", + "⣈", + "⣉", + "⣊", + "⣋", + "⣌", + "⣍", + "⣎", + "⣏", + "⢐", + "⢑", + "⢒", + "⢓", + "⢔", + "⢕", + "⢖", + "⢗", + "⣐", + "⣑", + "⣒", + "⣓", + "⣔", + "⣕", + "⣖", + "⣗", + "⢘", + "⢙", + "⢚", + "⢛", + "⢜", + "⢝", + "⢞", + "⢟", + "⣘", + "⣙", + "⣚", + "⣛", + "⣜", + "⣝", + "⣞", + "⣟", + "⢠", + "⢡", + "⢢", + "⢣", + "⢤", + "⢥", + "⢦", + "⢧", + "⣠", + "⣡", + "⣢", + "⣣", + "⣤", + "⣥", + "⣦", + "⣧", + "⢨", + "⢩", + "⢪", + "⢫", + "⢬", + "⢭", + "⢮", + "⢯", + "⣨", + "⣩", + "⣪", + "⣫", + "⣬", + "⣭", + "⣮", + "⣯", + "⢰", + "⢱", + "⢲", + "⢳", + "⢴", + "⢵", + "⢶", + "⢷", + "⣰", + "⣱", + "⣲", + "⣳", + "⣴", + "⣵", + "⣶", + "⣷", + "⢸", + "⢹", + "⢺", + "⢻", + "⢼", + "⢽", + "⢾", + "⢿", + "⣸", + "⣹", + "⣺", + "⣻", + "⣼", + "⣽", + "⣾", + "⣿" + ], interval: 80}, + "Line".into() => SpinnerData {frames: vec![ + "-", + "\\", + "|", + "/" + ], interval: 130}, + "Line2".into() => SpinnerData {frames: vec![ + "⠂", + "-", + "–", + "—", + "–", + "-" + ], interval: 100}, + "Pipe".into() => SpinnerData {frames: vec![ + "┤", + "┘", + "┴", + "└", + "├", + "┌", + "┬", + "┐" + ], interval: 100}, + "SimpleDots".into() => SpinnerData {frames: vec![ + ". ", + ".. ", + "...", + " " + ], interval: 400}, + "SimpleDotsScrolling".into() => SpinnerData {frames: vec![ + ". ", + ".. ", + "...", + " ..", + " .", + " " + ], interval: 200}, + "Star".into() => SpinnerData {frames: vec![ + "✶", + "✸", + "✹", + "✺", + "✹", + "✷" + ], interval: 70}, + "Star2".into() => SpinnerData {frames: vec![ + "+", + "x", + "*" + ], interval: 80}, + "Flip".into() => SpinnerData {frames: vec![ + "_", + "_", + "_", + "-", + "`", + "`", + "'", + "´", + "-", + "_", + "_", + "_" + ], interval: 70}, + "Hamburger".into() => SpinnerData {frames: vec![ + "☱", + "☲", + "☴" + ], interval: 100}, + "GrowVertical".into() => SpinnerData {frames: vec![ + "▁", + "▃", + "▄", + "▅", + "▆", + "▇", + "▆", + "▅", + "▄", + "▃" + ], interval: 120}, + "GrowHorizontal".into() => SpinnerData {frames: vec![ + "▏", + "▎", + "▍", + "▌", + "▋", + "▊", + "▉", + "▊", + "▋", + "▌", + "▍", + "▎" + ], interval: 120}, + "Balloon".into() => SpinnerData {frames: vec![ + " ", + ".", + "o", + "O", + "@", + "*", + " " + ], interval: 140}, + "Balloon2".into() => SpinnerData {frames: vec![ + ".", + "o", + "O", + "°", + "O", + "o", + "." + ], interval: 120}, + "Noise".into() => SpinnerData {frames: vec![ + "▓", + "▒", + "░" + ], interval: 100}, + "Bounce".into() => SpinnerData {frames: vec![ + "⠁", + "⠂", + "⠄", + "⠂" + ], interval: 120}, + "BoxBounce".into() => SpinnerData {frames: vec![ + "▖", + "▘", + "▝", + "▗" + ], interval: 120}, + "BoxBounce2".into() => SpinnerData {frames: vec![ + "▌", + "▀", + "▐", + "▄" + ], interval: 100}, + "Triangle".into() => SpinnerData {frames: vec![ + "◢", + "◣", + "◤", + "◥" + ], interval: 50}, + "Arc".into() => SpinnerData {frames: vec![ + "◜", + "◠", + "◝", + "◞", + "◡", + "◟" + ], interval: 100}, + "Circle".into() => SpinnerData {frames: vec![ + "◡", + "⊙", + "◠" + ], interval: 120}, + "SquareCorners".into() => SpinnerData {frames: vec![ + "◰", + "◳", + "◲", + "◱" + ], interval: 180}, + "CircleQuarters".into() => SpinnerData {frames: vec![ + "◴", + "◷", + "◶", + "◵" + ], interval: 120}, + "CircleHalves".into() => SpinnerData {frames: vec![ + "◐", + "◓", + "◑", + "◒" + ], interval: 50}, + "Squish".into() => SpinnerData {frames: vec![ + "╫", + "╪" + ], interval: 100}, + "Toggle".into() => SpinnerData {frames: vec![ + "⊶", + "⊷" + ], interval: 250}, + "Toggle2".into() => SpinnerData {frames: vec![ + "▫", + "▪" + ], interval: 80}, + "Toggle3".into() => SpinnerData {frames: vec![ + "□", + "■" + ], interval: 120}, + "Toggle4".into() => SpinnerData {frames: vec![ + "■", + "□", + "▪", + "▫" + ], interval: 100}, + "Toggle5".into() => SpinnerData {frames: vec![ + "▮", + "▯" + ], interval: 100}, + "Toggle6".into() => SpinnerData {frames: vec![ + "ဝ", + "၀" + ], interval: 300}, + "Toggle7".into() => SpinnerData {frames: vec![ + "⦾", + "⦿" + ], interval: 80}, + "Toggle8".into() => SpinnerData {frames: vec![ + "◍", + "◌" + ], interval: 100}, + "Toggle9".into() => SpinnerData {frames: vec![ + "◉", + "◎" + ], interval: 100}, + "Toggle10".into() => SpinnerData {frames: vec![ + "㊂", + "㊀", + "㊁" + ], interval: 100}, + "Toggle11".into() => SpinnerData {frames: vec![ + "⧇", + "⧆" + ], interval: 50}, + "Toggle12".into() => SpinnerData {frames: vec![ + "☗", + "☖" + ], interval: 120}, + "Toggle13".into() => SpinnerData {frames: vec![ + "=", + "*", + "-" + ], interval: 80}, + "Arrow".into() => SpinnerData {frames: vec![ + "←", + "↖", + "↑", + "↗", + "→", + "↘", + "↓", + "↙" + ], interval: 100}, + "Arrow2".into() => SpinnerData {frames: vec![ + "⬆️ ", + "↗️ ", + "➡️ ", + "↘️ ", + "⬇️ ", + "↙️ ", + "⬅️ ", + "↖️ " + ], interval: 80}, + "Arrow3".into() => SpinnerData {frames: vec![ + "▹▹▹▹▹", + "▸▹▹▹▹", + "▹▸▹▹▹", + "▹▹▸▹▹", + "▹▹▹▸▹", + "▹▹▹▹▸" + ], interval: 120}, + "BouncingBar".into() => SpinnerData {frames: vec![ + "[ ]", + "[= ]", + "[== ]", + "[=== ]", + "[ ===]", + "[ ==]", + "[ =]", + "[ ]", + "[ =]", + "[ ==]", + "[ ===]", + "[====]", + "[=== ]", + "[== ]", + "[= ]" + ], interval: 80}, + "BouncingBall".into() => SpinnerData {frames: vec![ + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "( ●)", + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "(● )" + ], interval: 80}, + "Smiley".into() => SpinnerData {frames: vec![ + "😄 ", + "😝 " + ], interval: 200}, + "Monkey".into() => SpinnerData {frames: vec![ + "🙈 ", + "🙈 ", + "🙉 ", + "🙊 " + ], interval: 300}, + "Hearts".into() => SpinnerData {frames: vec![ + "💛 ", + "💙 ", + "💜 ", + "💚 ", + "❤️ " + ], interval: 100}, + "Clock".into() => SpinnerData {frames: vec![ + "🕛 ", + "🕐 ", + "🕑 ", + "🕒 ", + "🕓 ", + "🕔 ", + "🕕 ", + "🕖 ", + "🕗 ", + "🕘 ", + "🕙 ", + "🕚 " + ], interval: 100}, + "Earth".into() => SpinnerData {frames: vec![ + "🌍 ", + "🌎 ", + "🌏 " + ], interval: 180}, + "Material".into() => SpinnerData {frames: vec![ + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███████▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "██████████▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "█████████████▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁██████████████▁▁▁▁", + "▁▁▁██████████████▁▁▁", + "▁▁▁▁█████████████▁▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁▁▁████████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁▁█████████████▁▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁▁███████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁▁█████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁" + ], interval: 17}, + "Moon".into() => SpinnerData {frames: vec![ + "🌑 ", + "🌒 ", + "🌓 ", + "🌔 ", + "🌕 ", + "🌖 ", + "🌗 ", + "🌘 " + ], interval: 80}, + "Runner".into() => SpinnerData {frames: vec![ + "🚶 ", + "🏃 " + ], interval: 140}, + "Pong".into() => SpinnerData {frames: vec![ + "▐⠂ ▌", + "▐⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂▌", + "▐ ⠠▌", + "▐ ⡀▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐⠠ ▌" + ], interval: 80}, + "Shark".into() => SpinnerData {frames: vec![ + "▐|\\____________▌", + "▐_|\\___________▌", + "▐__|\\__________▌", + "▐___|\\_________▌", + "▐____|\\________▌", + "▐_____|\\_______▌", + "▐______|\\______▌", + "▐_______|\\_____▌", + "▐________|\\____▌", + "▐_________|\\___▌", + "▐__________|\\__▌", + "▐___________|\\_▌", + "▐____________|\\▌", + "▐____________/|▌", + "▐___________/|_▌", + "▐__________/|__▌", + "▐_________/|___▌", + "▐________/|____▌", + "▐_______/|_____▌", + "▐______/|______▌", + "▐_____/|_______▌", + "▐____/|________▌", + "▐___/|_________▌", + "▐__/|__________▌", + "▐_/|___________▌", + "▐/|____________▌" + ], interval: 120}, + "Dqpb".into() => SpinnerData {frames: vec![ + "d", + "q", + "p", + "b" + ], interval: 100}, + "Weather".into() => SpinnerData {frames: vec![ + "☀️ ", + "☀️ ", + "☀️ ", + "🌤 ", + "⛅️ ", + "🌥 ", + "☁️ ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "⛈ ", + "🌨 ", + "🌧 ", + "🌨 ", + "☁️ ", + "🌥 ", + "⛅️ ", + "🌤 ", + "☀️ ", + "☀️ " + ], interval: 100}, + "Christmas".into() => SpinnerData {frames: vec![ + "🌲", + "🎄" + ], interval: 400}, + "Grenade".into() => SpinnerData {frames: vec![ + "، ", + "′ ", + " ´ ", + " ‾ ", + " ⸌", + " ⸊", + " |", + " ⁎", + " ⁕", + " ෴ ", + " ⁓", + " ", + " ", + " " + ], interval: 80}, + "Point".into() => SpinnerData {frames: vec![ + "∙∙∙", + "●∙∙", + "∙●∙", + "∙∙●", + "∙∙∙" + ], interval: 125}, + "Layer".into() => SpinnerData {frames: vec![ + "-", + "=", + "≡" + ], interval: 150}, + "BetaWave".into() => SpinnerData {frames: vec![ + "ρββββββ", + "βρβββββ", + "ββρββββ", + "βββρβββ", + "ββββρββ", + "βββββρβ", + "ββββββρ" + ], interval: 80}, + "FingerDance".into() => SpinnerData {frames: vec![ + "🤘 ", + "🤟 ", + "🖖 ", + "✋ ", + "🤚 ", + "👆 " + ], interval: 160}, + "FistBump".into() => SpinnerData {frames: vec![ + "🤜    🤛 ", + "🤜    🤛 ", + "🤜    🤛 ", + " 🤜  🤛  ", + "  🤜🤛   ", + " 🤜✨🤛   ", + "🤜 ✨ 🤛  " + ], interval: 80}, + "SoccerHeader".into() => SpinnerData {frames: vec![ + " 🧑⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 ", + "🧑 ⚽️ 🧑 " + ], interval: 80}, + "Mindblown".into() => SpinnerData {frames: vec![ + "😐 ", + "😐 ", + "😮 ", + "😮 ", + "😦 ", + "😦 ", + "😧 ", + "😧 ", + "🤯 ", + "💥 ", + "✨ ", + "  ", + "  ", + "  " + ], interval: 160}, + "Speaker".into() => SpinnerData {frames: vec![ + "🔈 ", + "🔉 ", + "🔊 ", + "🔉 " + ], interval: 160}, + "OrangePulse".into() => SpinnerData {frames: vec![ + "🔸 ", + "🔶 ", + "🟠 ", + "🟠 ", + "🔶 " + ], interval: 100}, + "BluePulse".into() => SpinnerData {frames: vec![ + "🔹 ", + "🔷 ", + "🔵 ", + "🔵 ", + "🔷 " + ], interval: 100}, + "OrangeBluePulse".into() => SpinnerData {frames: vec![ + "🔸 ", + "🔶 ", + "🟠 ", + "🟠 ", + "🔶 ", + "🔹 ", + "🔷 ", + "🔵 ", + "🔵 ", + "🔷 " + ], interval: 100}, + "TimeTravel".into() => SpinnerData {frames: vec![ + "🕛 ", + "🕚 ", + "🕙 ", + "🕘 ", + "🕗 ", + "🕖 ", + "🕕 ", + "🕔 ", + "🕓 ", + "🕒 ", + "🕑 ", + "🕐 " + ], interval: 100}, + "Aesthetic".into() => SpinnerData {frames: vec![ + "▰▱▱▱▱▱▱", + "▰▰▱▱▱▱▱", + "▰▰▰▱▱▱▱", + "▰▰▰▰▱▱▱", + "▰▰▰▰▰▱▱", + "▰▰▰▰▰▰▱", + "▰▰▰▰▰▰▰", + "▰▱▱▱▱▱▱" + ], interval: 80} + } + }; +} diff --git a/update_spinners.sh b/update_spinners.sh new file mode 100755 index 0000000..e014e18 --- /dev/null +++ b/update_spinners.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# jq is required : npm i jq.node --global +curl --silent https://raw.githubusercontent.com/sindresorhus/cli-spinners/master/spinners.json | jqn -r lodash --color=false 'toPairs | map(([k, v]) => ({...v, name: lodash.upperFirst(k)}))' > src/spinners.json + + +jqn 'pluck("name") | thru(x => `use strum::{Display, EnumIter, EnumString}; + +#[derive(Debug, Clone, EnumIter, Display, EnumString)] +pub enum SpinnerNames{${x.join(",\n")}}`)' < src/spinners.json | rustfmt > src/utils/spinner_names.rs + +jqn 'thru(ipt => `use std::collections::HashMap; +use crate::utils::spinner_data::SpinnerData; +use lazy_static::lazy_static; +use maplit::{self, hashmap}; +lazy_static! { + pub static ref SPINNERS: HashMap = { + hashmap! { + ${ipt.map(spinner => "\""+spinner.name+"\".into() => SpinnerData {frames: vec!" + JSON.stringify(spinner.frames, null, 2) + ", interval: "+ spinner.interval + "}").join(",\n")} + } + } +} +`)' < src/spinners.json | rustfmt > src/utils/spinners_data.rs + +rm src/spinners.json