-module(ui@animation). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/ui/animation.gleam"). -export([countdown/1, typewriter_effect/2, loading_animation/2]). -file("src/ui/animation.gleam", 11). -spec countdown_loop(integer()) -> nil. countdown_loop(Remaining) -> case Remaining of 0 -> utils@misc:overwrite_line(<<"Done!"/utf8>>), gleam_stdlib:println(<<""/utf8>>); _ -> utils@misc:overwrite_line( <<"Countdown: "/utf8, (erlang:integer_to_binary(Remaining))/binary>> ), utils@misc:sleep(1000), countdown_loop(Remaining - 1) end. -file("src/ui/animation.gleam", 7). -spec countdown(integer()) -> nil. countdown(Seconds) -> countdown_loop(Seconds). -file("src/ui/animation.gleam", 31). -spec typewriter_loop(list(binary()), binary(), integer()) -> nil. typewriter_loop(Chars, Current, Delay) -> case Chars of [] -> nil; [Char | Rest] -> New_current = <>, utils@misc:overwrite_line(New_current), utils@misc:sleep(Delay), typewriter_loop(Rest, New_current, Delay) end. -file("src/ui/animation.gleam", 25). -spec typewriter_effect(binary(), integer()) -> nil. typewriter_effect(Text, Delay_ms) -> Chars = gleam@string:to_graphemes(Text), typewriter_loop(Chars, <<""/utf8>>, Delay_ms), gleam_stdlib:println(<<""/utf8>>). -file("src/ui/animation.gleam", 43). -spec loading_animation(binary(), integer()) -> nil. loading_animation(Text, Duration_ms) -> Frames = [<<"⠋"/utf8>>, <<"⠙"/utf8>>, <<"⠹"/utf8>>, <<"⠸"/utf8>>, <<"⠼"/utf8>>, <<"⠴"/utf8>>, <<"⠦"/utf8>>, <<"⠧"/utf8>>, <<"⠇"/utf8>>, <<"⠏"/utf8>>], Frame_duration = 80, Total_frames = case Frame_duration of 0 -> 0; Gleam@denominator -> Duration_ms div Gleam@denominator end, utils@misc:hide_cursor(), event@loading:loading_loop(Text, Frames, 0, Total_frames), utils@misc:clear_line(), utils@misc:show_cursor().