Current section
Files
Jump to
Current section
Files
src/ui@animation.erl
-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 = <<Current/binary, Char/binary>>,
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().