Codex Handbook
tui/src/frames.rs 71 lines
use std::time::Duration;// Embed animation frames for each variant at compile time.macro_rules! frames_for {    ($dir:literal) => {        [            include_str!(concat!("../frames/", $dir, "/frame_1.txt")),            include_str!(concat!("../frames/", $dir, "/frame_2.txt")),            include_str!(concat!("../frames/", $dir, "/frame_3.txt")),            include_str!(concat!("../frames/", $dir, "/frame_4.txt")),            include_str!(concat!("../frames/", $dir, "/frame_5.txt")),            include_str!(concat!("../frames/", $dir, "/frame_6.txt")),            include_str!(concat!("../frames/", $dir, "/frame_7.txt")),            include_str!(concat!("../frames/", $dir, "/frame_8.txt")),            include_str!(concat!("../frames/", $dir, "/frame_9.txt")),            include_str!(concat!("../frames/", $dir, "/frame_10.txt")),            include_str!(concat!("../frames/", $dir, "/frame_11.txt")),            include_str!(concat!("../frames/", $dir, "/frame_12.txt")),            include_str!(concat!("../frames/", $dir, "/frame_13.txt")),            include_str!(concat!("../frames/", $dir, "/frame_14.txt")),            include_str!(concat!("../frames/", $dir, "/frame_15.txt")),            include_str!(concat!("../frames/", $dir, "/frame_16.txt")),            include_str!(concat!("../frames/", $dir, "/frame_17.txt")),            include_str!(concat!("../frames/", $dir, "/frame_18.txt")),            include_str!(concat!("../frames/", $dir, "/frame_19.txt")),            include_str!(concat!("../frames/", $dir, "/frame_20.txt")),            include_str!(concat!("../frames/", $dir, "/frame_21.txt")),            include_str!(concat!("../frames/", $dir, "/frame_22.txt")),            include_str!(concat!("../frames/", $dir, "/frame_23.txt")),            include_str!(concat!("../frames/", $dir, "/frame_24.txt")),            include_str!(concat!("../frames/", $dir, "/frame_25.txt")),            include_str!(concat!("../frames/", $dir, "/frame_26.txt")),            include_str!(concat!("../frames/", $dir, "/frame_27.txt")),            include_str!(concat!("../frames/", $dir, "/frame_28.txt")),            include_str!(concat!("../frames/", $dir, "/frame_29.txt")),            include_str!(concat!("../frames/", $dir, "/frame_30.txt")),            include_str!(concat!("../frames/", $dir, "/frame_31.txt")),            include_str!(concat!("../frames/", $dir, "/frame_32.txt")),            include_str!(concat!("../frames/", $dir, "/frame_33.txt")),            include_str!(concat!("../frames/", $dir, "/frame_34.txt")),            include_str!(concat!("../frames/", $dir, "/frame_35.txt")),            include_str!(concat!("../frames/", $dir, "/frame_36.txt")),        ]    };}pub(crate) const FRAMES_DEFAULT: [&str; 36] = frames_for!("default");pub(crate) const FRAMES_CODEX: [&str; 36] = frames_for!("codex");pub(crate) const FRAMES_OPENAI: [&str; 36] = frames_for!("openai");pub(crate) const FRAMES_BLOCKS: [&str; 36] = frames_for!("blocks");pub(crate) const FRAMES_DOTS: [&str; 36] = frames_for!("dots");pub(crate) const FRAMES_HASH: [&str; 36] = frames_for!("hash");pub(crate) const FRAMES_HBARS: [&str; 36] = frames_for!("hbars");pub(crate) const FRAMES_VBARS: [&str; 36] = frames_for!("vbars");pub(crate) const FRAMES_SHAPES: [&str; 36] = frames_for!("shapes");pub(crate) const FRAMES_SLUG: [&str; 36] = frames_for!("slug");pub(crate) const ALL_VARIANTS: &[&[&str]] = &[    &FRAMES_DEFAULT,    &FRAMES_CODEX,    &FRAMES_OPENAI,    &FRAMES_BLOCKS,    &FRAMES_DOTS,    &FRAMES_HASH,    &FRAMES_HBARS,    &FRAMES_VBARS,    &FRAMES_SHAPES,    &FRAMES_SLUG,];pub(crate) const FRAME_TICK_DEFAULT: Duration = Duration::from_millis(80);