diff --git a/.chglog/CHANGELOG.tpl.md b/.chglog/CHANGELOG.tpl.md
deleted file mode 100644
index 5683d039d..000000000
--- a/.chglog/CHANGELOG.tpl.md
+++ /dev/null
@@ -1,56 +0,0 @@
-{{ if .Versions -}}
-
-## [Unreleased]
-
-{{ if .Unreleased.CommitGroups -}}
-{{ range .Unreleased.CommitGroups -}}
-### {{ .Title }}
-{{ range .Commits -}}
-- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
-{{ end }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
-
-{{ range .Versions }}
-
-## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
-{{ range .CommitGroups -}}
-### {{ .Title }}
-{{ range .Commits -}}
-- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
-{{ end }}
-{{ end -}}
-
-{{- if .RevertCommits -}}
-### Reverts
-{{ range .RevertCommits -}}
-- {{ .Revert.Header }}
-{{ end }}
-{{ end -}}
-
-{{- if .MergeCommits -}}
-### Pull Requests
-{{ range .MergeCommits -}}
-- {{ .Header }}
-{{ end }}
-{{ end -}}
-
-{{- if .NoteGroups -}}
-{{ range .NoteGroups -}}
-### {{ .Title }}
-{{ range .Notes }}
-{{ .Body }}
-{{ end }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
-
-{{- if .Versions }}
-[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
-{{ range .Versions -}}
-{{ if .Tag.Previous -}}
-[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
-{{ end -}}
-{{ end -}}
-{{ end -}}
\ No newline at end of file
diff --git a/.chglog/config.yml b/.chglog/config.yml
deleted file mode 100644
index e335c9ce7..000000000
--- a/.chglog/config.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-bin: git
-style: github
-template: CHANGELOG.tpl.md
-info:
- title: CHANGELOG
- repository_url: https://github.com/pterm/pterm
-
-options:
- tag_filter_pattern: '^v'
- sort: "semver"
-
- commits:
- filters:
- Type:
- - feat
- - fix
- - perf
- - test
- - refactor
- sort_by: Scope
-
- commit_groups:
- group_by: Type
- sort_by: Custom
- title_order:
- - feat
- - fix
- - perf
- - test
- - refactor
- title_maps:
- feat: Features
- fix: Bug Fixes
- perf: Performance Improvements
- refactor: Code Refactoring
- docs: Documentation Changes
-
- header:
- pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
- pattern_maps:
- - Type
- - Scope
- - Subject
-
- issues:
- prefix:
- - #
-
- refs:
- actions:
- - Closes
- - Fixes
-
- merges:
- pattern: "^Merge branch '(\\w+)'$"
- pattern_maps:
- - Source
-
- reverts:
- pattern: "^Revert \"([\\s\\S]*)\"$"
- pattern_maps:
- - Header
-
- notes:
- keywords:
- - BREAKING CHANGE
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 2b5876bf1..a54f81c50 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,20 +1,3 @@
-### Description
-Describe your work here.
+
-### Scope
-> What is affected by this pull request?
-
-- [ ] Bug Fix
-- [ ] New Feature
-- [ ] Documentation
-- [ ] Other
-
-### Related Issue
-Fixes #
-
-
-### To-Do Checklist
-- [ ] I tested my changes
-- [ ] I have commented every method that I created/changed
-- [ ] I updated the examples to fit with my changes
-- [ ] I have added tests for my newly created methods
+Fixes #YOUR_ISSUE_NUMBER
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 2d23495e8..000000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,1305 +0,0 @@
-
-## [Unreleased]
-
-### Bug Fixes
-- buggy basic text input ([#551](https://github.com/pterm/pterm/issues/551))
-- **textinput:** fixed buggy behavior ([#550](https://github.com/pterm/pterm/issues/550))
-
-
-
-## [v0.12.64] - 2023-08-03
-### Features
-- add custom delimiters to select printers ([#545](https://github.com/pterm/pterm/issues/545))
-
-
-
-## [v0.12.63] - 2023-07-18
-### Features
-- add filter option for `select`
-
-### Bug Fixes
-- fixed area on Windows
-- **box:** fixed wrong title length calculation
-
-### Code Refactoring
-- use WithBoolean on multiselect printer
-- use WithBoolean on multiselect printer
-- use WithBoolean method on WithFilter method of select printer
-
-
-
-## [v0.12.62] - 2023-05-24
-### Bug Fixes
-- fixed not being able to add a custom graceful shutdown
-
-
-
-## [v0.12.61] - 2023-05-14
-### Bug Fixes
-- **table:** fixed table when a column contained a whitespace at the start or end
-
-
-
-## [v0.12.60] - 2023-05-11
-### Features
-- **progressbar:** various progressbar improvements
-- **progressbar:** various progressbar improvements
-- **progressbar:** various progressbar improvements
-- **rgb:** added RGBStyle
-
-### Test
-- **rgb:** added RGBStyle tests
-
-### Code Refactoring
-- **rgb:** removed 'GetValues' for 'RGBStyle'
-
-
-
-## [v0.12.59] - 2023-04-15
-### Features
-- add optional mask to InteractiveTextInputPrinter
-
-
-
-## [v0.12.58] - 2023-04-03
-### Features
-- **logger:** implemented structured logging
-- **logger:** implemented structured logging
-- **logger:** implemented structured logging
-- **logger:** added logger
-- **logger:** create logger
-- **rgb:** made it possible to use RGB colors as background
-- **rgb:** made it possible to use RGB colors as background
-- **rgb:** made it possible to use RGB colors as background
-
-### Bug Fixes
-- **rgb:** fix Fade maxValue == current not displaying the last color
-
-
-
-## [v0.12.57] - 2023-03-28
-### Code Refactoring
-- use `pterm.Print` instead of `fmt.Print` functions
-
-
-
-## [v0.12.56] - 2023-03-14
-### Bug Fixes
-- **table:** fixed panic when multiple lines contained color in a single row
-
-
-
-## [v0.12.55] - 2023-03-04
-### Features
-- **table:** multiline support for table printer
-- **table:** multiline support for table printer
-
-### Code Refactoring
-- **table:** fixed linting
-
-
-
-## [v0.12.54] - 2023-01-22
-### Bug Fixes
-- **tree:** print top node [#443](https://github.com/pterm/pterm/issues/443)
-
-
-
-## [v0.12.53] - 2023-01-05
-### Features
-- **color:** added `color.ToStyle()`
-- **color:** added `color.ToStyle()`
-- **progressbar:** added optional title to `Start` method
-
-### Bug Fixes
-- **prefix:** fixed line numbers in different print functions
-
-
-
-## [v0.12.52] - 2023-01-05
-### Features
-- **multiselect:** added theme support for checkmarks
-- **multiselect:** added theme support for checkmarks
-
-### Test
-- **multiselect:** fixed test
-
-### Code Refactoring
-- **progressbar:** make add more safe
-
-
-
-## [v0.12.51] - 2022-12-24
-### Bug Fixes
-- Make sure the confirm printer can clean up after Ctrl+C
-
-
-
-## [v0.12.50] - 2022-11-22
-### Bug Fixes
-- revert original test & add new test
-- slice bounds out of range on select printer
-
-
-
-## [v0.12.49] - 2022-10-03
-
-
-## [v0.12.48] - 2022-10-02
-### Features
-- custom select/confirm key for interactive printer
-- add flag to disable filter/search for interactive printer
-
-
-
-## [v0.12.47] - 2022-09-19
-### Features
-- adding interactive continue printer
-
-### Bug Fixes
-- typo
-- append the selected value to the prompt
-
-### Code Refactoring
-- ignore invalid custom handles
-- initiazile handles on getSuffix
-- comment format
-- address renaming PR comments
-- show full handles by default
-- use a map for the options
-
-### Reverts
-- refactor: use a map for the options
-
-
-
-## [v0.12.46] - 2022-09-05
-### Features
-- **putils:** add `CenterText` in putils
-
-### Bug Fixes
-- **textinput:** fixed overwriting the default values
-
-
-
-## [v0.12.45] - 2022-07-26
-### Bug Fixes
-- make sure the interactive printers can cleanup after Ctrl+C
-- the interactive confirm answers should match the confirm/reject text
-
-### Test
-- add tests for custom answers
-
-
-
-## [v0.12.44] - 2022-07-22
-
-
-## [v0.12.43] - 2022-07-17
-### Bug Fixes
-- **spinner:** fix line didn't clear properly
-- **table:** fixed column length calculation for Chinese strings
-
-
-
-## [v0.12.42] - 2022-06-21
-### Features
-- **input:** added text input printer
-
-
-
-## [v0.12.41] - 2022-04-12
-
-
-## [v0.12.40] - 2022-03-28
-### Features
-- added a custom writer for all printers
-
-
-
-## [v0.12.39] - 2022-03-18
-### Features
-- use fallback color in `BigTextPrinter` when `RGB` is not supported
-
-### Test
-- fix `BigTextPrinter` test
-- removed `testdata`
-- removed snapshot testing
-
-
-
-## [v0.12.38] - 2022-03-09
-### Features
-- added `NewLettersFromStringWithRGB`
-- added `NewLettersFromStringWithRGB`
-
-### Test
-- **bigtext:** fix formatting error in bigtext test
-
-
-
-## [v0.12.37] - 2022-02-17
-### Features
-- **progressbar:** Add option to set the `MaxWidth` of the progressbar
-
-### Test
-- **progressbar:** added 100% test coverage for new features
-
-### Code Refactoring
-- **putils:** Improved styling
-
-
-
-## [v0.12.36] - 2022-02-01
-### Features
-- proposal horizontal table header row and row separators fixes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators changes
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-- proposal horizontal table header row and row separators
-
-
-
-## [v0.12.35] - 2022-02-01
-### Code Refactoring
-- fix linting
-- regenerate snapshots
-
-
-
-## [v0.12.34] - 2022-01-16
-### Bug Fixes
-- **progressbar:** refresh progressbars on every PTerm print ([#302](https://github.com/pterm/pterm/issues/302))
-
-### Test
-- removed `AreaPrinter` test output
-- **table:** changed mock reader from `os.Stdin` to `outBuf`
-
-
-
-## [v0.12.33] - 2021-10-24
-### Features
-- add `PrintOnErrorf` for every `TextPrinter` ([#279](https://github.com/pterm/pterm/issues/279))
-- **coverage:** add unit test
-- **progressbar:** made updating the progressbar title easier. ([#267](https://github.com/pterm/pterm/issues/267))
-- **table:** increase test coverage
-- **table:** revamp to follow practice
-- **table:** add support for right data alignment
-
-### Bug Fixes
-- **idea:** revert unwanted config changes
-- **linter:** do linter recommendation to delete fallthrough
-
-
-
-## [v0.12.32] - 2021-10-15
-### Features
-- added `AreaPrinter.Clear()`
-
-### Bug Fixes
-- progressbar method name
-- **header:** fixed length calculation for Chinese strings
-
-### Code Refactoring
-- change bitSize size
-
-
-
-## [v0.12.31] - 2021-09-21
-### Features
-- **prefix:** added `LineNumberOffset` to `PrefixPrinter`
-
-
-
-## [v0.12.30] - 2021-08-16
-### Bug Fixes
-- **style:** resetting to previous color also resets attributes
-
-### Code Refactoring
-- adapt new testza function name
-
-
-
-## [v0.12.29] - 2021-07-19
-### Features
-- **putils:** add `PrintAverageExecutionTime`
-
-### Test
-- fix rgb error test
-- fix internal test import cycle
-- move tests into own package
-
-### Code Refactoring
-- replace `testify` with `testza`
-
-
-
-## [v0.12.28] - 2021-07-17
-### Features
-- **spinner:** add option to show a timer
-
-### Bug Fixes
-- **bar chart:** fix panic when rendering empty horizontal bar chart
-
-### Test
-- **spinner:** try to fix RawOutput text
-- **spinner:** add raw output test
-
-### Code Refactoring
-- **spinner:** better raw output logic
-- **spinner:** refactor
-
-
-
-## [v0.12.27] - 2021-07-05
-### Bug Fixes
-- **style:** fix multiline style coloring
-
-### Test
-- **style:** fix multiline style coloring
-- **style:** fix multiline style coloring
-
-
-
-## [v0.12.26] - 2021-07-01
-### Bug Fixes
-- **spinner:** Override previous text in `UpdateText`
-
-
-
-## [v0.12.25] - 2021-07-01
-### Features
-- **table:** add `Boxed` option
-
-### Test
-- add tests for boxed `TablePrinter`
-
-
-
-## [v0.12.24] - 2021-06-13
-### Features
-- **boxprinter:** replace line breaks in title with space
-- **boxprinter:** add title center position to `BoxPrinter`
-- **boxprinter:** add title & title position to `BoxPrinter`
-- **boxprinter:** add title & title position to `BoxPrinter`
-- **putils:** add `TableDataFromSeparatedValues`
-- **putils:** add `TableDataFromTSV`
-- **putils:** add `TableDataFromCSV`
-- **putils:** add function to convert TSV to `TableData`
-- **putils:** add function to convert CSV to `TableData`
-
-### Test
-- add test for putils `TableData` generation
-- **boxprinter:** add tests for title center position to `BoxPrinter`
-- **boxprinter:** add tests for title & title position
-
-### Code Refactoring
-- **boxprinter:** prefix title positions with `Title`
-- **putils:** add `rowSeparator` to `TableFromSeparatedValues`
-
-
-
-## [v0.12.23] - 2021-06-07
-### Features
-- Add util functions to create tables from slices of structs ([#217](https://github.com/pterm/pterm/issues/217))
-
-### Bug Fixes
-- **headerprinter:** don't panic if content width > terminal width
-
-### Test
-- **prefix:** `pterm.Error` default no line number shown
-
-### Code Refactoring
-- **prefix:** `pterm.Error` default no line number shown
-
-
-
-## [v0.12.22] - 2021-05-30
-### Features
-- make spinner update faster
-
-### Performance Improvements
-- improve performance of `SpinnerPrinter`
-
-
-
-## [v0.12.21] - 2021-05-30
-### Features
-- print lines above active spinners
-- **putils:** add `DownloadFileWithProgressbar`
-
-### Test
-- clear active spinners after tests complete
-
-### Code Refactoring
-- **putils:** change internal variable name
-
-
-
-## [v0.12.20] - 2021-05-29
-### Features
-- force color output by default
-
-
-
-## [v0.12.19] - 2021-05-29
-### Features
-- add `PrintOnError` for all printers and interface
-- **putils:** add `putils` package ([#206](https://github.com/pterm/pterm/issues/206))
-
-### Bug Fixes
-- **header:** fix multiline header
-
-### Test
-- add tests for all printers for `PrintOnError`
-
-### Code Refactoring
-- make `PrintOnError` return `*TextPrinter`
-- **area:** better height calculation
-
-
-
-## [v0.12.18] - 2021-05-22
-### Features
-- add `AreaPrinter`
-- **area:** add `Center` option
-- **area:** add `Fullscreen` option
-- **area:** add `GetContent` function
-- **area:** add `AreaPrinter`
-
-### Test
-- **area:** fix tests for `AreaPrinter`
-- **area:** add `AreaPrinter` tests
-
-### Code Refactoring
-- fix linting errors
-
-
-
-## [v0.12.17] - 2021-05-14
-### Bug Fixes
-- fix `pterm.Fatal.Printfln` not panicking
-- **prefix:** fix `pterm.Fatal.Printfln` not panicking and had output in debug mode
-
-### Test
-- **prefix:** add tests for `Sprintfln` and `Printfln` function when in debug mode
-
-
-
-## [v0.12.16] - 2021-05-13
-### Code Refactoring
-- **prefix:** make `PrintOnError` accept multiple inputs
-
-
-
-## [v0.12.15] - 2021-05-13
-### Features
-- add raw output mode for `BarChart`
-- add disable styling boolean option
-- **bigtext:** add raw output mode
-- **centerprinter:** add raw output mode
-- **headerprinter:** add raw output mode
-- **panelprinter:** add raw output mode
-- **paragraph:** add raw output mode
-- **prefix:** add `PrintIfError`
-- **prefix:** add raw output mode
-- **progressbar:** add raw output mode
-- **spinner:** add raw output mode
-
-### Bug Fixes
-- **prefix:** fix `PrintOnError`
-
-### Test
-- add tests with `RawOutput` enabled
-- add interface tests for `Color` and `RGB`
-- added tests for `DisableStyling` and `EnableStyling`
-
-### Code Refactoring
-- correct behaviour of Enable-/DisableStyling
-- fix variable names
-
-
-
-## [v0.12.14] - 2021-05-09
-### Features
-- **basic-text:** add `Sprintfln` and `Printfln` function
-- **boxprinter:** add `Sprintfln` and `Printfln` function
-- **centerprinter:** add `Sprintfln` and `Printfln` function
-- **color:** add `Sprintfln` and `Printfln` function
-- **header:** add `Sprintfln` and `Printfln` function
-- **paragraph:** add `Sprintfln` and `Printfln` function
-- **prefix:** add `Sprintfln` and `Printfln` function
-- **print:** add `Sprintfln` and `Printfln` function
-- **printer-interface:** add `Sprintfln` and `Printfln` to the interface
-- **rgb:** add `Sprintfln` and `Printfln` function
-- **section:** add `Sprintfln` and `Printfln` function
-
-### Bug Fixes
-- **header:** fix inline color in `Header`
-
-### Test
-- add tests for `Sprintfln` and `Printfln` function
-
-### Code Refactoring
-- refactor `Sprintfln` and `Printfln` func. for better performance
-
-### Reverts
-- ci: change color scheme for rendered examples
-
-
-
-## [v0.12.13] - 2021-04-10
-### Bug Fixes
-- **bigtext:** fix height of some characters [#180](https://github.com/pterm/pterm/issues/180)
-- **color:** make color implement `TextPrinter`
-
-### Test
-- add interface tests
-
-### Code Refactoring
-- **examples:** center the intro of `demo`
-- **examples:** add note to box printer
-
-
-
-## [v0.12.12] - 2021-03-01
-### Features
-- **prefixprinter:** Add option to show line number of caller
-
-### Code Refactoring
-- **examples:** Update `PrefixPrinter` example
-
-
-
-## [v0.12.11] - 2021-02-26
-### Code Refactoring
-- refactor print logic of `BoxPrinter`
-- refactor print logic of `CenterPrinter`
-
-
-
-## [v0.12.10] - 2021-02-26
-### Bug Fixes
-- correct `pterm.Println()` behaviour to fit to `fmt.Println()`
-
-
-
-## [v0.12.9] - 2021-02-23
-### Bug Fixes
-- correct `pterm.Println()` behaviour to fit to `fmt.Println()`
-- change terminal package import path to updated version
-
-
-
-## [v0.12.8] - 2020-12-11
-### Features
-- **boxprinter:** add `WithHorizontalString` to `BoxPrinter`
-- **boxprinter:** add `BoxPrinter`
-- **panel:** add optional border for `Panel`
-- **panelprinter:** add theme support to `PanelPrinter`
-- **theme:** add `BoxStyle` and `BoxTextStyle`
-- **theme:** add optional theme for border in `Panel`
-
-### Bug Fixes
-- revert change horizontal string change
-
-### Test
-- **boxprinter:** add test
-- **boxprinter:** test multiple lines in one box
-- **boxprinter:** add tests for `BoxPrinter`
-- **panelprinter:** add tests for adding box printer
-- **panelprinter:** add tests for optional border for `Panel`
-- **theme:** add tests for `BoxStyle` and `BoxTextStyle`
-
-### Code Refactoring
-- remove analytics
-- **boxprinter:** return theme when style is nil
-- **boxprinter:** change `DefaultBox` top and bottom padding to 0
-- **boxprinter:** fix spacing between boxes and in boxes
-- **boxprinter:** refactor code
-- **boxprinter:** change from `RenderablePrinter` to `TextPrinter`
-- **panelprinter:** add `BoxPrinter` to surround panels with a fully custom box
-- **panelprinter:** optional border for `Panel`
-
-
-
-## [v0.12.7] - 2020-11-24
-### Features
-- add values to chart
-- add horizontal `BarChartPrinter`
-- add `BarChartPrinter`
-- add `BarChartPrinter`
-- add `BarChartPrinter`
-- **theme:** add theme support to `BarChart`
-
-### Bug Fixes
-- center bars over colored labels in `BarChart`
-
-### Test
-- add tests to `BarChartPrinter`
-
-
-
-## [v0.12.6] - 2020-11-17
-### Bug Fixes
-- disabling output works as expected now ([#149](https://github.com/pterm/pterm/issues/149))
-
-
-
-## [v0.12.5] - 2020-11-17
-### Bug Fixes
-- fix `PrefixPrinter` with multiple trailing newline endings.
-
-
-
-## [v0.12.4] - 2020-11-17
-### Bug Fixes
-- fix `Printf` of `PrefixPrinter`
-
-
-
-## [v0.12.3] - 2020-11-12
-### Test
-- reduce tests
-- different test logic for rgb printing
-- add better test names for `RGB` tests
-
-
-
-## [v0.12.2] - 2020-11-05
-### Features
-- color each line separately when using multi line input
-
-### Bug Fixes
-- fix internal `GetStringMaxWidth` max width
-
-### Test
-- **basictext:** proxy print functions to DevNull
-- **progressbar:** proxy print functions to DevNull
-
-### Code Refactoring
-- use `pterm.Sprint` to print
-
-
-
-## [v0.12.1] - 2020-11-04
-### Bug Fixes
-- **panel:** Fix output when input is colored
-
-### Performance Improvements
-- **header:** calculate margin faster
-
-
-
-## [v0.12.0] - 2020-11-04
-### Features
-- **panel:** add an option to make a padding beneath `panel`
-- **panel:** add an option to make columns the same length
-
-### Bug Fixes
-- **panel:** add invalid check for `padding` in `panel`
-
-### Test
-- **bulletlist:** `BulletListItem` remove `Render` and `Srender`
-- **bulletlist:** change `BulletList` to `BulletListPrinter`
-- **panel:** add invalid check for `padding` in `panel`
-- **panel:** add test for `WithBottomPadding`
-- **panel:** add test for `WithSameColumnWidth` & multiple `panel`
-- **panel:** add test for `WithSameColumnWidth`
-- **progressbar:** change directory name `progressbar_test` to `progressbar_printer_test`
-- **progressbar:** change `Progressbar` to `ProgressbarPrinter`
-- **spinner:** change directory name `spinner_test` to `spinner_printer_test`
-- **spinner:** change `Spinner` to `SpinnerPrinter`
-- **table:** change `Table` to `TablePrinter`
-- **tree:** change `Tree` to `TreePrinter`
-
-### Code Refactoring
-- make all printer names end with `Printer` ([#134](https://github.com/pterm/pterm/issues/134))
-- **bulletlist:** remove `DefaultBulletListItem`
-- **bulletlist:** `BulletListItem` remove `Render` and `Srender`
-- **bulletlist:** `BulletListItem` is no renderable anymore
-- **bulletlist:** change `BulletList` to `BulletListPrinter`
-- **progressbar:** change `ActiveProgressbars` to `ActiveProgressbarPrinters`
-- **progressbar:** change directory name `progressbar` to `progressbar_printer`
-- **progressbar:** change `Progressbar` to `ProgressbarPrinter`
-- **spinner:** change directory name `spinner` to `spinner_printer`
-- **spinner:** change `Spinner` to `SpinnerPrinter`
-- **table:** change `Table` to `TablePrinter`
-- **tree:** change `Tree` to `TreePrinter`
-
-### BREAKING CHANGE
-
-Removed `DefaultBulletListItem`.
-
-Change names of printers which didn't end with `Printer`. Every printer name ends with `Printer` now to fit into the new naming convention.
-
-change `ActiveProgressbars` to `ActiveProgressbarPrinters`
-
-`BulletListItem` is no renderable anymore, removed `Render` and `Srender`
-
-`BulletListItem` is no renderable anymore, removed `Render` and `Srender`
-
-`BulletListItem` is no renderable anymore
-
-change `Tree` to `TreePrinter` to unify the naming scheme
-
-change `Tree` to `TreePrinter` to unify the naming scheme
-
-change `Table` to `TablePrinter` to unify the naming scheme
-
-change `Table` to `TablePrinter` to unify the naming scheme
-
-change `Spinner` to `SpinnerPrinter` to unify the naming scheme
-
-change `Spinner` to `SpinnerPrinter` to unify the naming scheme
-
-change `Progressbar` to `ProgressbarPrinter` to unify the naming scheme
-
-change `Progressbar` to `ProgressbarPrinter` to unify the naming scheme
-
-change `BulletList` to `BulletListPrinter` to unify the naming scheme
-
-change `BulletList` to `BulletListPrinter` to unify the naming scheme
-
-
-
-## [v0.11.0] - 2020-11-03
-### Features
-- add `PanelPrinter`
-
-### Bug Fixes
-- **centerprinter:** make centerprinter func return pointer
-
-### BREAKING CHANGE
-
-make centerprinter func `WithCenterEachLineSeparately` return a pointer of centerprinter
-
-
-
-## [v0.10.1] - 2020-11-02
-### Features
-- add `CenterPrinter`
-
-
-
-## [v0.10.0] - 2020-11-01
-### Features
-- make printers return errors
-- add `DisableOutput()` and `EnableOutput()` ([#108](https://github.com/pterm/pterm/issues/108))
-
-### Code Refactoring
-- ignore errors where no errors can occur
-- **theme:** change `ListTextStyle` to `BulletListTextStyle` ([#104](https://github.com/pterm/pterm/issues/104))
-- **theme:** change `ProgressbarBarStyle` to `FgCyan` ([#106](https://github.com/pterm/pterm/issues/106))
-- **theme:** change white to default color in `Theme` ([#103](https://github.com/pterm/pterm/issues/103))
-
-### BREAKING CHANGE
-
-Interface of `RenderablePrinter` and `LivePrinter` changed.
-
-The global variable `DisableOutput` was renamed to `Output`.
-
-
-
-## [v0.9.3] - 2020-10-31
-### Features
-- add a levelList converter for TreeListPrinter
-- add `TreeListPrinter` as a renderable printer
-- add `TreeListPrinter` as a renderable printer
-- **theme:** add theme support for `Tree`
-
-### Test
-- **tree:** add `Tree` tests
-
-### Code Refactoring
-- clean up `Tree`
-- **theme:** change `TreeTextStyle` to `FgDefault`
-- **tree:** add Indent to control the spacing between levels and changed docs(examples)
-- **tree:** add more spacing between levels
-- **tree:** refactor `Tree` code and write tests for `Tree`
-- **tree:** refactor `Tree` code and write tests for `Tree`
-- **tree:** refactor `Tree` code
-- **tree:** refactor `Tree` code
-- **tree:** refactor `Tree` code
-
-
-
-## [v0.9.2] - 2020-10-29
-### Features
-- add option to disable and enable colors
-
-
-
-## [v0.9.1] - 2020-10-27
-### Code Refactoring
-- make the prefix of `Info` smaller again
-
-
-
-## [v0.9.0] - 2020-10-27
-### Features
-- add `Debug` `PrefixPrinter`
-- add support for enabling and disabling debug messages
-
-### Bug Fixes
-- progressbar disappears when done and something is printed after
-
-### Test
-- add debugger tests to `PrefixPrinter`
-- add progressbar tests
-
-### Code Refactoring
-- remove `UpdateDelay` from `Progressbar`
-- change `NewList` to `NewBulletList`
-- change `NewList` to `NewBulletList`
-- deprecate `UpdateDelay` in `Progressbar`
-
-### BREAKING CHANGE
-
-Removed `UpdateDelay` from `Progressbar`. It's no longer used. The Progressbar automatically updates on every change to the current value.
-
-Changed `NewList` to `NewBulletList`.
-
-
-
-## [v0.8.1] - 2020-10-26
-### Features
-- add fade from one RGB over several RGBs to another RGB
-
-### Code Refactoring
-- refactor doc
-- refactor code
-
-
-
-## [v0.8.0] - 2020-10-24
-### Features
-- add `BigTextPrinter` ([#75](https://github.com/pterm/pterm/issues/75))
-- use level of section printer
-- add `BulletListPrinter` ([#67](https://github.com/pterm/pterm/issues/67))
-
-### Test
-- test that `%s` won't fail to print
-
-### Code Refactoring
-- make `BigTextPrinter` release ready
-- change `LineCharacter` to `BarCharacter` ([#70](https://github.com/pterm/pterm/issues/70))
-
-### BREAKING CHANGE
-
-Changed `LineCharacter` to `BarCharacter`.
-
-
-
-## [v0.7.0] - 2020-10-20
-### Features
-- **progressbar:** add RemoveWhenDone
-
-### Bug Fixes
-- make theme accept pointer styles
-- make Spinner accept pointer Style
-- make WithMessageStyle accept Style pointer
-- add nil check to SectionPrinter Style
-- section printer Style to pointer
-
-### Test
-- add tests color and style
-- add tests to root print functions
-- add tests to progressbar
-- add tests to terminal
-- add tests to theme
-- fix internal percentage test
-- add tests to Spinner
-- add tests for TablePrinter
-- special tests for special statements
-- complete PrefixPrinter tests
-- add PrefixPrinter tests
-- rename HeaderPrinter tests
-- complete HeaderPrinter tests
-- add ParagraphPrinter tests
-- add HeaderPrinter tests
-- make unit test system check different types
-- add SectionPrinter tests
-- implement test utils
-- add rgb tests
-
-### Code Refactoring
-- use log output
-- remove obsolete if
-- fit progressbar to new percentage calculation method
-- make fatal panic
-- rename parameters
-- don't show empty line when removing a progressbar
-
-
-
-## [v0.6.1] - 2020-10-20
-### Bug Fixes
-- fix RGB methods
-
-
-
-## [v0.6.0] - 2020-10-19
-### Features
-- add BasicTextPrinter
-- add theme support to section and table printer
-- add theme support to spinner
-- add theme support to headers
-- add template support for progressbars
-- add default theme
-
-### Test
-- **benchmark:** fix spinner benchmark
-
-### Code Refactoring
-- make printers accept pointers to styles
-- remove emojis to comply with cross-platform policy
-- change LivePrinter interface to pointer output
-- change TextPrinter interface to pointer output
-
-### BREAKING CHANGE
-
-All printers only accept pointers as any `Style` attribute.
-
-LivePrinter now requires to return a pointer.
-
-TextPrinter now requires to return a pointer.
-
-
-
-## [v0.5.1] - 2020-10-14
-### Features
-- add ability to disable output ([#44](https://github.com/pterm/pterm/issues/44))
-- add `Srender` to `RenderPrinter` interface
-- add csv table support ([#42](https://github.com/pterm/pterm/issues/42))
-- add HEX to RGB converter in `RGB` ([#41](https://github.com/pterm/pterm/issues/41))
-- add theme to generated animations
-- add color fade example ([#38](https://github.com/pterm/pterm/issues/38))
-- implement `TextPrinter` into `RGB`
-- implement color fade to `Progressbar` ([#37](https://github.com/pterm/pterm/issues/37))
-- add color fade function and `RBG` ([#34](https://github.com/pterm/pterm/issues/34))
-- change `Section` style
-
-### Code Refactoring
-- declare function name as `WithCSVReader`
-
-
-
-## [v0.5.0] - 2020-10-08
-### Features
-- implement `LivePrinter` in `Spinner`
-- add `BottomPadding` to `SectionPrinter`
-- add `RenderPrinter` interface
-- implement `LivePrinter` in `Progressbar`
-- add `LivePrinter` interface
-- add `TablePrinter` ([#27](https://github.com/pterm/pterm/issues/27))
-- add `ParagraphPrinter` ([#24](https://github.com/pterm/pterm/issues/24))
-
-### Test
-- add `Print` equals `Sprint` tests for `GenericPrinter`
-- add `Spinner` benchmarks
-
-### Code Refactoring
-- rename spinner_printer.go to spinner.go
-- rename `GenericPrinter` to `TextPrinter`
-
-### BREAKING CHANGE
-
-The `GenericPrinter` is now called `TextPrinter`.
-
-
-
-## [v0.4.1] - 2020-10-07
-
-
-## [v0.4.0] - 2020-10-07
-### Features
-- add `Add` to `Style`
-- add options shorthands to `SectionPrinter`
-
-### Test
-- ignore writer close errors in stdout capture
-
-### Code Refactoring
-- use `Style` instead of colors
-- refactor function parameters to fit expectation
-- rename `RemoveColors` to `RemoveColorFromString`
-
-### BREAKING CHANGE
-
-use `Style` instead of colors
-
-Refactor function parameters to fit expectation.
-Affects: `WithStyle(colors -> style)`, `WithScope(string, colors -> scope)`
-
-rename `RemoveColors` to `RemoveColorFromString`
-
-
-
-## [v0.3.2] - 2020-10-06
-### Features
-- add `SectionPrinter`
-
-### Bug Fixes
-- fix `Sprintf` function of `HeaderPrinter`
-
-### Test
-- add tests for `HeaderPrinter` and `SectionPrinter`
-
-
-
-## [v0.3.1] - 2020-10-06
-### Features
-- add `BarFiller` to `Progressbar`
-
-### Test
-- fix import cycle
-- change to inbuilt `SetDefaultOutput` option
-- add more benchmarks
-- add benchmarks
-- add tests to `GenericPrinter` and default print methods
-
-### Code Refactoring
-- set default `BarFiller` to space
-- move tests directly into `pterm` module
-
-
-
-## [v0.3.0] - 2020-10-05
-### Bug Fixes
-- fix `WithXYZ(b ...bool)` to detect booleans correctly
-
-### Code Refactoring
-- remove `Version` constant
-- change `WithXXX(b bool)` to `WithXXX(b ...bool)`
-- change `SetXXX` to `WithXXX`
-- change `Header` to `DefaultHeader`
-
-### BREAKING CHANGE
-
-remove `Version` constant
-
-rename `SetXXX` to `WithXXX`
-
-rename `Header` to `DefaultHeader`
-
-
-
-## [v0.2.4] - 2020-10-04
-### Bug Fixes
-- `Printf` works again
-
-
-
-## [v0.2.3] - 2020-10-04
-### Features
-- automatically print above `Progressbar`
-
-### Code Refactoring
-- remove goroutine from `Progressbar`
-
-
-
-## [v0.2.2] - 2020-10-04
-### Features
-- add `Fatal` printer
-
-
-
-## [v0.2.1] - 2020-10-04
-### Features
-- make progressbar configurable
-- add percentage helper
-- add `RemoveColors`
-- add `Progressbar` ([#5](https://github.com/pterm/pterm/issues/5))
-- add `Progressbar`
-- add fatal to `PrefixPrinter` ([#4](https://github.com/pterm/pterm/issues/4))
-- **progressbar:** fade percentage color according to value
-
-### Code Refactoring
-- bump version to "v0.2.1"
-
-
-
-## [v0.2.0] - 2020-09-30
-### Features
-- change style of `Description` printer
-- add color in color support
-- add `RemoveWhenDone` to `Spinner`
-- add multiline support to `PrefixPrinter`
-- add `UpdateText` to spinner
-
-### Bug Fixes
-- spinners spin evenly when multiple spinners are started
-
-### Performance Improvements
-- improve spinner performance
-
-### Code Refactoring
-- bump version to "v0.2.0"
-- change `WithXXX` to `SetXXX`
-- removed `Println` aliases
-
-### BREAKING CHANGE
-
-every `WithXXX` is renamed to `SetXXX`
-
-remove `GetFormattedMessage` from `PrefixPrinter`
-
-removed `Println` aliases
-
-
-
-## [v0.1.0] - 2020-09-28
-### Features
-- add spinners
-- shorten printer names and add builder methods to printers
-- add `Printo` to override printed text
-- add `FullWidth` to `HeaderPrinter`
-- add terminal size detection
-
-### Code Refactoring
-- bump version to "v0.1.0"
-- consistent example code for `Printo`
-- better comments for `Printo`
-- simplify `HeaderPrinter`
-
-### BREAKING CHANGE
-
-printer names changed
-
-removed `Header` and put it's content directly into `HeaderPrinter`
-
-
-
-## [v0.0.1] - 2020-09-21
-### Features
-- add aliases to default printers
-- add header example
-- integrate ci
-- add `HeaderPrinter`
-- add exported version variable
-- add example `override-default-printer`
-- change prefix text color to `LightWhite`
-
-### Bug Fixes
-- header should now work in CI
-
-### Code Refactoring
-- bump version to "v0.0.1"
-- refactor project
-- add comments to functions
-
-
-
-## v0.0.0 - 2020-09-18
-### Features
-- add changelog template
-- configs
-- initial commit
-
-
-[Unreleased]: https://github.com/pterm/pterm/compare/v0.12.64...HEAD
-[v0.12.64]: https://github.com/pterm/pterm/compare/v0.12.63...v0.12.64
-[v0.12.63]: https://github.com/pterm/pterm/compare/v0.12.62...v0.12.63
-[v0.12.62]: https://github.com/pterm/pterm/compare/v0.12.61...v0.12.62
-[v0.12.61]: https://github.com/pterm/pterm/compare/v0.12.60...v0.12.61
-[v0.12.60]: https://github.com/pterm/pterm/compare/v0.12.59...v0.12.60
-[v0.12.59]: https://github.com/pterm/pterm/compare/v0.12.58...v0.12.59
-[v0.12.58]: https://github.com/pterm/pterm/compare/v0.12.57...v0.12.58
-[v0.12.57]: https://github.com/pterm/pterm/compare/v0.12.56...v0.12.57
-[v0.12.56]: https://github.com/pterm/pterm/compare/v0.12.55...v0.12.56
-[v0.12.55]: https://github.com/pterm/pterm/compare/v0.12.54...v0.12.55
-[v0.12.54]: https://github.com/pterm/pterm/compare/v0.12.53...v0.12.54
-[v0.12.53]: https://github.com/pterm/pterm/compare/v0.12.52...v0.12.53
-[v0.12.52]: https://github.com/pterm/pterm/compare/v0.12.51...v0.12.52
-[v0.12.51]: https://github.com/pterm/pterm/compare/v0.12.50...v0.12.51
-[v0.12.50]: https://github.com/pterm/pterm/compare/v0.12.49...v0.12.50
-[v0.12.49]: https://github.com/pterm/pterm/compare/v0.12.48...v0.12.49
-[v0.12.48]: https://github.com/pterm/pterm/compare/v0.12.47...v0.12.48
-[v0.12.47]: https://github.com/pterm/pterm/compare/v0.12.46...v0.12.47
-[v0.12.46]: https://github.com/pterm/pterm/compare/v0.12.45...v0.12.46
-[v0.12.45]: https://github.com/pterm/pterm/compare/v0.12.44...v0.12.45
-[v0.12.44]: https://github.com/pterm/pterm/compare/v0.12.43...v0.12.44
-[v0.12.43]: https://github.com/pterm/pterm/compare/v0.12.42...v0.12.43
-[v0.12.42]: https://github.com/pterm/pterm/compare/v0.12.41...v0.12.42
-[v0.12.41]: https://github.com/pterm/pterm/compare/v0.12.40...v0.12.41
-[v0.12.40]: https://github.com/pterm/pterm/compare/v0.12.39...v0.12.40
-[v0.12.39]: https://github.com/pterm/pterm/compare/v0.12.38...v0.12.39
-[v0.12.38]: https://github.com/pterm/pterm/compare/v0.12.37...v0.12.38
-[v0.12.37]: https://github.com/pterm/pterm/compare/v0.12.36...v0.12.37
-[v0.12.36]: https://github.com/pterm/pterm/compare/v0.12.35...v0.12.36
-[v0.12.35]: https://github.com/pterm/pterm/compare/v0.12.34...v0.12.35
-[v0.12.34]: https://github.com/pterm/pterm/compare/v0.12.33...v0.12.34
-[v0.12.33]: https://github.com/pterm/pterm/compare/v0.12.32...v0.12.33
-[v0.12.32]: https://github.com/pterm/pterm/compare/v0.12.31...v0.12.32
-[v0.12.31]: https://github.com/pterm/pterm/compare/v0.12.30...v0.12.31
-[v0.12.30]: https://github.com/pterm/pterm/compare/v0.12.29...v0.12.30
-[v0.12.29]: https://github.com/pterm/pterm/compare/v0.12.28...v0.12.29
-[v0.12.28]: https://github.com/pterm/pterm/compare/v0.12.27...v0.12.28
-[v0.12.27]: https://github.com/pterm/pterm/compare/v0.12.26...v0.12.27
-[v0.12.26]: https://github.com/pterm/pterm/compare/v0.12.25...v0.12.26
-[v0.12.25]: https://github.com/pterm/pterm/compare/v0.12.24...v0.12.25
-[v0.12.24]: https://github.com/pterm/pterm/compare/v0.12.23...v0.12.24
-[v0.12.23]: https://github.com/pterm/pterm/compare/v0.12.22...v0.12.23
-[v0.12.22]: https://github.com/pterm/pterm/compare/v0.12.21...v0.12.22
-[v0.12.21]: https://github.com/pterm/pterm/compare/v0.12.20...v0.12.21
-[v0.12.20]: https://github.com/pterm/pterm/compare/v0.12.19...v0.12.20
-[v0.12.19]: https://github.com/pterm/pterm/compare/v0.12.18...v0.12.19
-[v0.12.18]: https://github.com/pterm/pterm/compare/v0.12.17...v0.12.18
-[v0.12.17]: https://github.com/pterm/pterm/compare/v0.12.16...v0.12.17
-[v0.12.16]: https://github.com/pterm/pterm/compare/v0.12.15...v0.12.16
-[v0.12.15]: https://github.com/pterm/pterm/compare/v0.12.14...v0.12.15
-[v0.12.14]: https://github.com/pterm/pterm/compare/v0.12.13...v0.12.14
-[v0.12.13]: https://github.com/pterm/pterm/compare/v0.12.12...v0.12.13
-[v0.12.12]: https://github.com/pterm/pterm/compare/v0.12.11...v0.12.12
-[v0.12.11]: https://github.com/pterm/pterm/compare/v0.12.10...v0.12.11
-[v0.12.10]: https://github.com/pterm/pterm/compare/v0.12.9...v0.12.10
-[v0.12.9]: https://github.com/pterm/pterm/compare/v0.12.8...v0.12.9
-[v0.12.8]: https://github.com/pterm/pterm/compare/v0.12.7...v0.12.8
-[v0.12.7]: https://github.com/pterm/pterm/compare/v0.12.6...v0.12.7
-[v0.12.6]: https://github.com/pterm/pterm/compare/v0.12.5...v0.12.6
-[v0.12.5]: https://github.com/pterm/pterm/compare/v0.12.4...v0.12.5
-[v0.12.4]: https://github.com/pterm/pterm/compare/v0.12.3...v0.12.4
-[v0.12.3]: https://github.com/pterm/pterm/compare/v0.12.2...v0.12.3
-[v0.12.2]: https://github.com/pterm/pterm/compare/v0.12.1...v0.12.2
-[v0.12.1]: https://github.com/pterm/pterm/compare/v0.12.0...v0.12.1
-[v0.12.0]: https://github.com/pterm/pterm/compare/v0.11.0...v0.12.0
-[v0.11.0]: https://github.com/pterm/pterm/compare/v0.10.1...v0.11.0
-[v0.10.1]: https://github.com/pterm/pterm/compare/v0.10.0...v0.10.1
-[v0.10.0]: https://github.com/pterm/pterm/compare/v0.9.3...v0.10.0
-[v0.9.3]: https://github.com/pterm/pterm/compare/v0.9.2...v0.9.3
-[v0.9.2]: https://github.com/pterm/pterm/compare/v0.9.1...v0.9.2
-[v0.9.1]: https://github.com/pterm/pterm/compare/v0.9.0...v0.9.1
-[v0.9.0]: https://github.com/pterm/pterm/compare/v0.8.1...v0.9.0
-[v0.8.1]: https://github.com/pterm/pterm/compare/v0.8.0...v0.8.1
-[v0.8.0]: https://github.com/pterm/pterm/compare/v0.7.0...v0.8.0
-[v0.7.0]: https://github.com/pterm/pterm/compare/v0.6.1...v0.7.0
-[v0.6.1]: https://github.com/pterm/pterm/compare/v0.6.0...v0.6.1
-[v0.6.0]: https://github.com/pterm/pterm/compare/v0.5.1...v0.6.0
-[v0.5.1]: https://github.com/pterm/pterm/compare/v0.5.0...v0.5.1
-[v0.5.0]: https://github.com/pterm/pterm/compare/v0.4.1...v0.5.0
-[v0.4.1]: https://github.com/pterm/pterm/compare/v0.4.0...v0.4.1
-[v0.4.0]: https://github.com/pterm/pterm/compare/v0.3.2...v0.4.0
-[v0.3.2]: https://github.com/pterm/pterm/compare/v0.3.1...v0.3.2
-[v0.3.1]: https://github.com/pterm/pterm/compare/v0.3.0...v0.3.1
-[v0.3.0]: https://github.com/pterm/pterm/compare/v0.2.4...v0.3.0
-[v0.2.4]: https://github.com/pterm/pterm/compare/v0.2.3...v0.2.4
-[v0.2.3]: https://github.com/pterm/pterm/compare/v0.2.2...v0.2.3
-[v0.2.2]: https://github.com/pterm/pterm/compare/v0.2.1...v0.2.2
-[v0.2.1]: https://github.com/pterm/pterm/compare/v0.2.0...v0.2.1
-[v0.2.0]: https://github.com/pterm/pterm/compare/v0.1.0...v0.2.0
-[v0.1.0]: https://github.com/pterm/pterm/compare/v0.0.1...v0.1.0
-[v0.0.1]: https://github.com/pterm/pterm/compare/v0.0.0...v0.0.1
diff --git a/README.md b/README.md
index a89f6502d..6a9cd7842 100644
--- a/README.md
+++ b/README.md
@@ -135,9 +135,9 @@ go get github.com/pterm/pterm
-### area/center
+### area/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
@@ -150,24 +150,37 @@ import (
"time"
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Start a new default area in the center of the terminal.
- // The Start() function returns the created area and an error.
+ // Print an informational message using PTerm's Info printer.
+ // This message will stay in place while the area updates.
+ pterm.Info.Println("The previous text will stay in place, while the area updates.")
+
+ // Print two new lines as spacer.
+ pterm.Print("\n\n")
+
+ // Start the Area printer from PTerm's DefaultArea, with the Center option.
+ // The Area printer allows us to update a specific area of the console output.
+ // The returned 'area' object is used to control the area updates.
area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times to simulate a dynamic update.
- for i := 0; i < 5; i++ {
- // Update the content of the area with the current count.
- // The Sprintf function is used to format the string.
- area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
+ // Loop 10 times to update the area with the current time.
+ for i := 0; i < 10; i++ {
+ // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
+ // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
+ // The Srender() function is used to save the BigText as a string.
+ str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
- // Pause for a second to simulate a time-consuming task.
+ // Update the Area contents with the current time string.
+ area.Update(str)
+
+ // Sleep for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the area after all updates are done.
+ // Stop the Area printer after all updates are done.
area.Stop()
}
@@ -175,9 +188,9 @@ func main() {
-### area/default
+### area/center
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
@@ -193,22 +206,21 @@ import (
)
func main() {
- // Start a new default area and get a reference to it.
- // The second return value is an error which is ignored here.
- area, _ := pterm.DefaultArea.Start()
+ // Start a new default area in the center of the terminal.
+ // The Start() function returns the created area and an error.
+ area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times
+ // Loop 5 times to simulate a dynamic update.
for i := 0; i < 5; i++ {
- // Update the content of the area dynamically.
- // Here we're just displaying the current count.
+ // Update the content of the area with the current count.
+ // The Sprintf function is used to format the string.
area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Pause for a second before the next update.
+ // Pause for a second to simulate a time-consuming task.
time.Sleep(time.Second)
}
// Stop the area after all updates are done.
- // This will clean up and free resources used by the area.
area.Stop()
}
@@ -216,9 +228,9 @@ func main() {
-### area/demo
+### area/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
@@ -231,37 +243,25 @@ import (
"time"
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Print an informational message using PTerm's Info printer.
- // This message will stay in place while the area updates.
- pterm.Info.Println("The previous text will stay in place, while the area updates.")
-
- // Print two new lines as spacer.
- pterm.Print("\n\n")
-
- // Start the Area printer from PTerm's DefaultArea, with the Center option.
- // The Area printer allows us to update a specific area of the console output.
- // The returned 'area' object is used to control the area updates.
- area, _ := pterm.DefaultArea.WithCenter().Start()
-
- // Loop 10 times to update the area with the current time.
- for i := 0; i < 10; i++ {
- // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
- // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
- // The Srender() function is used to save the BigText as a string.
- str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
+ // Start a new default area and get a reference to it.
+ // The second return value is an error which is ignored here.
+ area, _ := pterm.DefaultArea.Start()
- // Update the Area contents with the current time string.
- area.Update(str)
+ // Loop 5 times
+ for i := 0; i < 5; i++ {
+ // Update the content of the area dynamically.
+ // Here we're just displaying the current count.
+ area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Sleep for a second before the next update.
+ // Pause for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the Area printer after all updates are done.
+ // Stop the area after all updates are done.
+ // This will clean up and free resources used by the area.
area.Stop()
}
@@ -404,6 +404,47 @@ func main() {
+### barchart/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Define the bars for the chart
+ bars := []pterm.Bar{
+ {Label: "Bar 1", Value: 5},
+ {Label: "Bar 2", Value: 3},
+ {Label: "Longer Label", Value: 7},
+ }
+
+ // Print an informational message
+ pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
+
+ // Create a bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithBars(bars).Render()
+
+ // Create a horizontal bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
+}
+
+```
+
+
+
### barchart/custom-height
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/custom-height/animation.svg)
@@ -518,47 +559,6 @@ func main() {
-### barchart/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the bars for the chart
- bars := []pterm.Bar{
- {Label: "Bar 1", Value: 5},
- {Label: "Bar 2", Value: 3},
- {Label: "Longer Label", Value: 7},
- }
-
- // Print an informational message
- pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
-
- // Create a bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithBars(bars).Render()
-
- // Create a horizontal bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
-}
-
-```
-
-
-
### barchart/horizontal
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/horizontal/animation.svg)
@@ -789,9 +789,9 @@ func main() {
-### bigtext/colored
+### bigtext/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
@@ -806,21 +806,33 @@ import (
)
func main() {
- // Initialize a big text display with the letters "P" and "Term"
- // "P" is displayed in cyan and "Term" is displayed in light magenta
+ // Create a large text with the LetterStyle from the standard theme.
+ // This is useful for creating title screens.
+ pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+
+ // Create a large text with differently colored letters.
+ // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
+ // This can be used to highlight specific parts of the text.
pterm.DefaultBigText.WithLetters(
putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
- Render() // Render the big text to the terminal
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
+ ).Render()
+
+ // Create a large text with a specific RGB color.
+ // This can be used when you need a specific color that is not available in the standard colors.
+ // Here, the color is gold (RGB: 255, 215, 0).
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
+ ).Render()
}
```
-### bigtext/default
+### bigtext/colored
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
@@ -835,23 +847,21 @@ import (
)
func main() {
- // Define the text to be rendered
- var text = "PTerm"
-
- // Convert the text into a format suitable for PTerm
- var letters = putils.LettersFromString(text)
-
- // Render the text using PTerm's default big text style
- pterm.DefaultBigText.WithLetters(letters).Render()
+ // Initialize a big text display with the letters "P" and "Term"
+ // "P" is displayed in cyan and "Term" is displayed in light magenta
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
+ Render() // Render the big text to the terminal
}
```
-### bigtext/demo
+### bigtext/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
@@ -866,33 +876,23 @@ import (
)
func main() {
- // Create a large text with the LetterStyle from the standard theme.
- // This is useful for creating title screens.
- pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+ // Define the text to be rendered
+ var text = "PTerm"
- // Create a large text with differently colored letters.
- // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
- // This can be used to highlight specific parts of the text.
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
- ).Render()
+ // Convert the text into a format suitable for PTerm
+ var letters = putils.LettersFromString(text)
- // Create a large text with a specific RGB color.
- // This can be used when you need a specific color that is not available in the standard colors.
- // Here, the color is gold (RGB: 255, 215, 0).
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
- ).Render()
+ // Render the text using PTerm's default big text style
+ pterm.DefaultBigText.WithLetters(letters).Render()
}
```
-### box/custom-padding
+### box/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
@@ -904,17 +904,35 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with custom padding options and print "Hello, World!" inside it.
- pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
-}
-
-```
-
-
+ // Print an informational message.
+ pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
-### box/default
+ // Create three panels with text, some of them with titles.
+ // The panels are created using the DefaultBox style.
+ panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
+ panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
+ panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
+ // Combine the panels into a layout using the DefaultPanel style.
+ // The layout is a 2D grid, with each row being an array of panels.
+ // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
+ panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
+ {{Data: panel1}, {Data: panel2}},
+ {{Data: panel3}},
+ }).Srender()
+
+ // Print the panels layout inside a box with a title.
+ // The box is created using the DefaultBox style, with the title positioned at the bottom right.
+ pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
+}
+
+```
+
+
+
+### box/custom-padding
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
@@ -926,18 +944,17 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with PTerm and print a message in it.
- // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
- pterm.DefaultBox.Println("Hello, World!")
+ // Create a default box with custom padding options and print "Hello, World!" inside it.
+ pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
}
```
-### box/demo
+### box/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
@@ -949,26 +966,9 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Print an informational message.
- pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
-
- // Create three panels with text, some of them with titles.
- // The panels are created using the DefaultBox style.
- panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
- panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
- panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
-
- // Combine the panels into a layout using the DefaultPanel style.
- // The layout is a 2D grid, with each row being an array of panels.
- // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
- panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
- {{Data: panel1}, {Data: panel2}},
- {{Data: panel3}},
- }).Srender()
-
- // Print the panels layout inside a box with a title.
- // The box is created using the DefaultBox style, with the title positioned at the bottom right.
- pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
+ // Create a default box with PTerm and print a message in it.
+ // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
+ pterm.DefaultBox.Println("Hello, World!")
}
```
@@ -1016,9 +1016,9 @@ func main() {
-### bulletlist/customized
+### bulletlist/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
@@ -1029,44 +1029,37 @@ package main
import (
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different styles and levels.
+ // Define a list of bullet list items with different levels.
bulletListItems := []pterm.BulletListItem{
- {
- Level: 0, // Level 0 (top level)
- Text: "Blue", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
- BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
- },
- {
- Level: 1, // Level 1 (sub-item)
- Text: "Green", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
- Bullet: "-", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
- },
- {
- Level: 2, // Level 2 (sub-sub-item)
- Text: "Cyan", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
- Bullet: ">", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
- },
+ {Level: 0, Text: "Level 0"}, // Level 0 item
+ {Level: 1, Text: "Level 1"}, // Level 1 item
+ {Level: 2, Text: "Level 2"}, // Level 2 item
}
- // Create a bullet list with the defined items and render it.
+ // Use the default bullet list style to render the list items.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
+
+ // Define a string with different levels of indentation.
+ text := `0
+ 1
+ 2
+ 3`
+
+ // Convert the indented string to a bullet list and render it.
+ putils.BulletListFromString(text, " ").Render()
}
```
-### bulletlist/demo
+### bulletlist/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
@@ -1077,28 +1070,35 @@ package main
import (
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different levels.
+ // Define a list of bullet list items with different styles and levels.
bulletListItems := []pterm.BulletListItem{
- {Level: 0, Text: "Level 0"}, // Level 0 item
- {Level: 1, Text: "Level 1"}, // Level 1 item
- {Level: 2, Text: "Level 2"}, // Level 2 item
+ {
+ Level: 0, // Level 0 (top level)
+ Text: "Blue", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
+ BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
+ },
+ {
+ Level: 1, // Level 1 (sub-item)
+ Text: "Green", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
+ Bullet: "-", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
+ },
+ {
+ Level: 2, // Level 2 (sub-sub-item)
+ Text: "Cyan", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
+ Bullet: ">", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
+ },
}
- // Use the default bullet list style to render the list items.
+ // Create a bullet list with the defined items and render it.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
-
- // Define a string with different levels of indentation.
- text := `0
- 1
- 2
- 3`
-
- // Convert the indented string to a bullet list and render it.
- putils.BulletListFromString(text, " ").Render()
}
```
@@ -1638,7 +1638,7 @@ func main() {
pterm.DefaultCenter.WithCenterEachLineSeparately().Println(fadeInfo)
})
- showcase("Fully Customizale", 2, func() {
+ showcase("Fully Customizable", 2, func() {
for i := 0; i < 4; i++ {
pterm.Println()
}
@@ -1778,6 +1778,36 @@ func randomInt(min, max int) int {
+### header/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import "github.com/pterm/pterm"
+
+func main() {
+ // Print a default header.
+ // This uses the default settings of PTerm to print a header.
+ pterm.DefaultHeader.Println("This is the default header!")
+
+ // Print a spacer line for better readability.
+ pterm.Println()
+
+ // Print a full-width header.
+ // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
+ pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
+}
+
+```
+
+
+
### header/custom
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/custom/animation.svg)
@@ -1810,9 +1840,9 @@ func main() {
-### header/demo
+### heatmap/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
@@ -1821,19 +1851,29 @@ func main() {
```go
package main
-import "github.com/pterm/pterm"
+import (
+ "github.com/pterm/pterm"
+)
func main() {
- // Print a default header.
- // This uses the default settings of PTerm to print a header.
- pterm.DefaultHeader.Println("This is the default header!")
+ // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
+ data := [][]float32{
+ {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
+ {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
+ {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
+ {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
+ {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
+ }
- // Print a spacer line for better readability.
- pterm.Println()
+ // Define the labels for the X and Y axes of the heatmap.
+ headerData := pterm.HeatmapAxis{
+ XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
+ YAxis: []string{"1", "2", "3", "4", "5"},
+ }
- // Print a full-width header.
- // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
- pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
+ // Create a heatmap with the defined data and axis labels, and enable RGB colors.
+ // Then render the heatmap.
+ pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
}
```
@@ -1998,46 +2038,6 @@ func main() {
-### heatmap/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
- data := [][]float32{
- {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
- {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
- {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
- {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
- {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
- }
-
- // Define the labels for the X and Y axes of the heatmap.
- headerData := pterm.HeatmapAxis{
- XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
- YAxis: []string{"1", "2", "3", "4", "5"},
- }
-
- // Create a heatmap with the defined data and axis labels, and enable RGB colors.
- // Then render the heatmap.
- pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
-}
-
-```
-
-
-
### heatmap/no_grid
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/no_grid/animation.svg)
@@ -2200,9 +2200,9 @@ func main() {
-### interactive_multiselect/custom-checkmarks
+### interactive_multiselect/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
@@ -2212,33 +2212,29 @@ func main() {
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options
+ // Initialize an empty slice to hold the options.
var options []string
- // Populate the options slice with 5 options
- for i := 0; i < 5; i++ {
+ // Populate the options slice with 100 options.
+ for i := 0; i < 100; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Create a new interactive multiselect printer with the options
- // Disable the filter, set the keys for confirming and selecting, and define the checkmark symbols
- printer := pterm.DefaultInteractiveMultiselect.
- WithOptions(options).
- WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space).
- WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
+ // Add 5 more options to the slice, indicating the availability of fuzzy searching.
+ for i := 0; i < 5; i++ {
+ options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
+ }
- // Show the interactive multiselect and get the selected options
- selectedOptions, _ := printer.Show()
+ // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
+ // The Show() method displays the options and waits for user input.
+ selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
- // Print the selected options
+ // Print the selected options, highlighted in green.
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
@@ -2246,9 +2242,9 @@ func main() {
-### interactive_multiselect/custom-keys
+### interactive_multiselect/custom-checkmarks
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
@@ -2258,7 +2254,6 @@ func main() {
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
@@ -2273,12 +2268,11 @@ func main() {
}
// Create a new interactive multiselect printer with the options
- // Disable the filter and set the keys for confirming and selecting options
+ // Disable the filter and define the checkmark symbols
printer := pterm.DefaultInteractiveMultiselect.
WithOptions(options).
WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space)
+ WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
// Show the interactive multiselect and get the selected options
selectedOptions, _ := printer.Show()
@@ -2291,9 +2285,9 @@ func main() {
-### interactive_multiselect/demo
+### interactive_multiselect/custom-keys
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
@@ -2303,29 +2297,32 @@ func main() {
package main
import (
+ "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options.
+ // Initialize an empty slice to hold the options
var options []string
- // Populate the options slice with 100 options.
- for i := 0; i < 100; i++ {
+ // Populate the options slice with 5 options
+ for i := 0; i < 5; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Add 5 more options to the slice, indicating the availability of fuzzy searching.
- for i := 0; i < 5; i++ {
- options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
- }
+ // Create a new interactive multiselect printer with the options
+ // Disable the filter and set the keys for confirming and selecting options
+ printer := pterm.DefaultInteractiveMultiselect.
+ WithOptions(options).
+ WithFilter(false).
+ WithKeyConfirm(keys.Enter).
+ WithKeySelect(keys.Space)
- // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
- // The Show() method displays the options and waits for user input.
- selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
+ // Show the interactive multiselect and get the selected options
+ selectedOptions, _ := printer.Show()
- // Print the selected options, highlighted in green.
+ // Print the selected options
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
@@ -2391,11 +2388,38 @@ import (
)
func main() {
- // Create an interactive text input with single line input mode
- textInput := pterm.DefaultInteractiveTextInput.WithMultiLine(false)
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.Show()
- // Show the text input and get the result
- result, _ := textInput.Show()
+ // Print a blank line for better readability
+ pterm.Println()
+
+ // Print the user's answer with an info prefix
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
+
+
+
+### interactive_textinput/default-value
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/default-value/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.WithDefaultValue("Some default value").Show()
// Print a blank line for better readability
pterm.Println()
@@ -2428,48 +2452,124 @@ func main() {
// This allows the user to input multiple lines of text.
textInput := pterm.DefaultInteractiveTextInput.WithMultiLine()
- // Show the text input to the user and store the result.
- // The second return value (an error) is ignored with '_'.
- result, _ := textInput.Show()
+ // Show the text input to the user and store the result.
+ // The second return value (an error) is ignored with '_'.
+ result, _ := textInput.Show()
+
+ // Print a blank line for better readability in the output.
+ pterm.Println()
+
+ // Print the user's input prefixed with an informational message.
+ // The '%s' placeholder is replaced with the user's input.
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
+
+
+
+### interactive_textinput/password
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/password/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import "github.com/pterm/pterm"
+
+func main() {
+ // Create an interactive text input with a mask for password input
+ passwordInput := pterm.DefaultInteractiveTextInput.WithMask("*")
+
+ // Show the password input prompt and store the result
+ result, _ := passwordInput.Show("Enter your password")
+
+ // Get the default logger from PTerm
+ logger := pterm.DefaultLogger
+
+ // Log the received password (masked)
+ // Note: In a real-world application, you should never log passwords
+ logger.Info("Password received", logger.Args("password", result))
+}
+
+```
+
+
+
+### logger/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+ "time"
+)
+
+func main() {
+ // Create a logger with trace level
+ logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
+
+ // Log a trace level message
+ logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
- // Print a blank line for better readability in the output.
- pterm.Println()
+ // Pause for 3 seconds
+ sleep()
- // Print the user's input prefixed with an informational message.
- // The '%s' placeholder is replaced with the user's input.
- pterm.Info.Printfln("You answered: %s", result)
-}
+ // Define a map with interesting stuff
+ interstingStuff := map[string]any{
+ "when were crayons invented": "1903",
+ "what is the meaning of life": 42,
+ "is this interesting": true,
+ }
-```
+ // Log a debug level message with arguments from the map
+ logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
-
+ // Pause for 3 seconds
+ sleep()
-### interactive_textinput/password
+ // Log an info level message
+ logger.Info("That was actually interesting", logger.Args("such", "wow"))
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/password/animation.svg)
+ // Pause for 3 seconds
+ sleep()
-
+ // Log a warning level message
+ logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
-SHOW SOURCE
+ // Pause for 3 seconds
+ sleep()
-```go
-package main
+ // Log an error level message
+ logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
-import "github.com/pterm/pterm"
+ // Pause for 3 seconds
+ sleep()
-func main() {
- // Create an interactive text input with a mask for password input
- passwordInput := pterm.DefaultInteractiveTextInput.WithMask("*")
+ // Log an info level message with a long text that will be automatically wrapped
+ logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
- // Show the password input prompt and store the result
- result, _ := passwordInput.Show("Enter your password")
+ // Pause for 3 seconds
+ sleep()
- // Get the default logger from PTerm
- logger := pterm.DefaultLogger
+ // Log a fatal level message
+ logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
+}
- // Log the received password (masked)
- // Note: In a real-world application, you should never log passwords
- logger.Info("Password received", logger.Args("password", result))
+// Function to pause the execution for 3 seconds
+func sleep() {
+ time.Sleep(time.Second * 3)
}
```
@@ -2574,82 +2674,6 @@ func main() {
-### logger/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
- "time"
-)
-
-func main() {
- // Create a logger with trace level
- logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
-
- // Log a trace level message
- logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
-
- // Pause for 3 seconds
- sleep()
-
- // Define a map with interesting stuff
- interstingStuff := map[string]any{
- "when were crayons invented": "1903",
- "what is the meaning of life": 42,
- "is this interesting": true,
- }
-
- // Log a debug level message with arguments from the map
- logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message
- logger.Info("That was actually interesting", logger.Args("such", "wow"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a warning level message
- logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an error level message
- logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message with a long text that will be automatically wrapped
- logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a fatal level message
- logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
-}
-
-// Function to pause the execution for 3 seconds
-func sleep() {
- time.Sleep(time.Second * 3)
-}
-
-```
-
-
-
### logger/json
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/json/animation.svg)
@@ -2851,9 +2875,9 @@ func main() {
-### paragraph/customized
+### paragraph/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
@@ -2865,32 +2889,29 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define a long text to be printed as a paragraph.
- longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
+ // Using the default paragraph printer to print a long text.
+ // The text is split at the spaces, which is useful for continuous text of all kinds.
+ // The line width can be manually adjusted if needed.
+ pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text as a paragraph with a custom maximal width of 60 characters.
- pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
- // Print a line space to separate the paragraph from the following text.
+ // Printing a line space for separation.
pterm.Println()
- // Define another long text to be printed without a paragraph printer.
- longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text without using a paragraph printer.
- pterm.Println(longTextWithoutParagraph)
+ // Printing a long text without using the paragraph printer.
+ // The default Println() function is used here, which does not provide intelligent splitting.
+ pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
}
```
-### paragraph/demo
+### paragraph/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
@@ -2902,20 +2923,23 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Using the default paragraph printer to print a long text.
- // The text is split at the spaces, which is useful for continuous text of all kinds.
- // The line width can be manually adjusted if needed.
- pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
+ // Define a long text to be printed as a paragraph.
+ longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
- // Printing a line space for separation.
+ // Print the long text as a paragraph with a custom maximal width of 60 characters.
+ pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+
+ // Print a line space to separate the paragraph from the following text.
pterm.Println()
- // Printing a long text without using the paragraph printer.
- // The default Println() function is used here, which does not provide intelligent splitting.
- pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ // Define another long text to be printed without a paragraph printer.
+ longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
+
+ // Print the long text without using a paragraph printer.
+ pterm.Println(longTextWithoutParagraph)
}
```
@@ -3317,9 +3341,9 @@ func main() {
-### table/boxed
+### table/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
@@ -3331,10 +3355,8 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the table.
- // Each inner slice represents a row in the table.
- // The first row is considered as the header of the table.
- tableData := pterm.TableData{
+ // Define the data for the first table
+ tableData1 := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -3342,19 +3364,31 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with the defined data.
- // The table has a header and is boxed.
- // Finally, render the table to print it.
- pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
+ // Create a table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
+
+ pterm.Println() // Blank line
+
+ // Define the data for the second table
+ tableData2 := pterm.TableData{
+ {"Firstname", "Lastname", "Email"},
+ {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
+ {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
+ {"Libby", "Camacho", "lobortis@semper.com"},
+ {"张", "小宝", "zhang@example.com"},
+ }
+
+ // Create another table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
}
```
-### table/demo
+### table/boxed
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
@@ -3366,8 +3400,10 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the first table
- tableData1 := pterm.TableData{
+ // Define the data for the table.
+ // Each inner slice represents a row in the table.
+ // The first row is considered as the header of the table.
+ tableData := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -3375,22 +3411,10 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
-
- pterm.Println() // Blank line
-
- // Define the data for the second table
- tableData2 := pterm.TableData{
- {"Firstname", "Lastname", "Email"},
- {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
- {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
- {"Libby", "Camacho", "lobortis@semper.com"},
- {"张", "小宝", "zhang@example.com"},
- }
-
- // Create another table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
+ // Create a table with the defined data.
+ // The table has a header and is boxed.
+ // Finally, render the table to print it.
+ pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
}
```
diff --git a/SECURITY.md b/SECURITY.md
index 27611496b..3e4653f83 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -8,7 +8,6 @@ PTerm is a command-line interface (CLI) tool library, and we believe the securit
If you discover a security issue in PTerm, please follow these steps:
Open a new issue in the PTerm GitHub repository, describing the security problem in detail.
-Do not disclose any sensitive information or exploit details in the issue, as PTerm is not considered to have any exploitable features.
## 3. Vulnerable Dependencies
If a dependency of PTerm is found to be vulnerable or infected and requires immediate updates, please follow these steps:
diff --git a/_examples/README.md b/_examples/README.md
index 3468537e5..1402ef814 100644
--- a/_examples/README.md
+++ b/_examples/README.md
@@ -3,9 +3,9 @@
> This directory contains examples of using the PTerm library.
-### area/center
+### area/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
@@ -18,24 +18,37 @@ import (
"time"
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Start a new default area in the center of the terminal.
- // The Start() function returns the created area and an error.
+ // Print an informational message using PTerm's Info printer.
+ // This message will stay in place while the area updates.
+ pterm.Info.Println("The previous text will stay in place, while the area updates.")
+
+ // Print two new lines as spacer.
+ pterm.Print("\n\n")
+
+ // Start the Area printer from PTerm's DefaultArea, with the Center option.
+ // The Area printer allows us to update a specific area of the console output.
+ // The returned 'area' object is used to control the area updates.
area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times to simulate a dynamic update.
- for i := 0; i < 5; i++ {
- // Update the content of the area with the current count.
- // The Sprintf function is used to format the string.
- area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
+ // Loop 10 times to update the area with the current time.
+ for i := 0; i < 10; i++ {
+ // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
+ // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
+ // The Srender() function is used to save the BigText as a string.
+ str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
- // Pause for a second to simulate a time-consuming task.
+ // Update the Area contents with the current time string.
+ area.Update(str)
+
+ // Sleep for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the area after all updates are done.
+ // Stop the Area printer after all updates are done.
area.Stop()
}
@@ -43,9 +56,9 @@ func main() {
-### area/default
+### area/center
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
@@ -61,22 +74,21 @@ import (
)
func main() {
- // Start a new default area and get a reference to it.
- // The second return value is an error which is ignored here.
- area, _ := pterm.DefaultArea.Start()
+ // Start a new default area in the center of the terminal.
+ // The Start() function returns the created area and an error.
+ area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times
+ // Loop 5 times to simulate a dynamic update.
for i := 0; i < 5; i++ {
- // Update the content of the area dynamically.
- // Here we're just displaying the current count.
+ // Update the content of the area with the current count.
+ // The Sprintf function is used to format the string.
area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Pause for a second before the next update.
+ // Pause for a second to simulate a time-consuming task.
time.Sleep(time.Second)
}
// Stop the area after all updates are done.
- // This will clean up and free resources used by the area.
area.Stop()
}
@@ -84,9 +96,9 @@ func main() {
-### area/demo
+### area/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
@@ -99,37 +111,25 @@ import (
"time"
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Print an informational message using PTerm's Info printer.
- // This message will stay in place while the area updates.
- pterm.Info.Println("The previous text will stay in place, while the area updates.")
-
- // Print two new lines as spacer.
- pterm.Print("\n\n")
-
- // Start the Area printer from PTerm's DefaultArea, with the Center option.
- // The Area printer allows us to update a specific area of the console output.
- // The returned 'area' object is used to control the area updates.
- area, _ := pterm.DefaultArea.WithCenter().Start()
-
- // Loop 10 times to update the area with the current time.
- for i := 0; i < 10; i++ {
- // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
- // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
- // The Srender() function is used to save the BigText as a string.
- str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
+ // Start a new default area and get a reference to it.
+ // The second return value is an error which is ignored here.
+ area, _ := pterm.DefaultArea.Start()
- // Update the Area contents with the current time string.
- area.Update(str)
+ // Loop 5 times
+ for i := 0; i < 5; i++ {
+ // Update the content of the area dynamically.
+ // Here we're just displaying the current count.
+ area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Sleep for a second before the next update.
+ // Pause for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the Area printer after all updates are done.
+ // Stop the area after all updates are done.
+ // This will clean up and free resources used by the area.
area.Stop()
}
@@ -272,6 +272,47 @@ func main() {
+### barchart/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Define the bars for the chart
+ bars := []pterm.Bar{
+ {Label: "Bar 1", Value: 5},
+ {Label: "Bar 2", Value: 3},
+ {Label: "Longer Label", Value: 7},
+ }
+
+ // Print an informational message
+ pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
+
+ // Create a bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithBars(bars).Render()
+
+ // Create a horizontal bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
+}
+
+```
+
+
+
### barchart/custom-height
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/custom-height/animation.svg)
@@ -386,47 +427,6 @@ func main() {
-### barchart/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the bars for the chart
- bars := []pterm.Bar{
- {Label: "Bar 1", Value: 5},
- {Label: "Bar 2", Value: 3},
- {Label: "Longer Label", Value: 7},
- }
-
- // Print an informational message
- pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
-
- // Create a bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithBars(bars).Render()
-
- // Create a horizontal bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
-}
-
-```
-
-
-
### barchart/horizontal
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/horizontal/animation.svg)
@@ -657,9 +657,9 @@ func main() {
-### bigtext/colored
+### bigtext/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
@@ -674,21 +674,33 @@ import (
)
func main() {
- // Initialize a big text display with the letters "P" and "Term"
- // "P" is displayed in cyan and "Term" is displayed in light magenta
+ // Create a large text with the LetterStyle from the standard theme.
+ // This is useful for creating title screens.
+ pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+
+ // Create a large text with differently colored letters.
+ // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
+ // This can be used to highlight specific parts of the text.
pterm.DefaultBigText.WithLetters(
putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
- Render() // Render the big text to the terminal
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
+ ).Render()
+
+ // Create a large text with a specific RGB color.
+ // This can be used when you need a specific color that is not available in the standard colors.
+ // Here, the color is gold (RGB: 255, 215, 0).
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
+ ).Render()
}
```
-### bigtext/default
+### bigtext/colored
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
@@ -703,23 +715,21 @@ import (
)
func main() {
- // Define the text to be rendered
- var text = "PTerm"
-
- // Convert the text into a format suitable for PTerm
- var letters = putils.LettersFromString(text)
-
- // Render the text using PTerm's default big text style
- pterm.DefaultBigText.WithLetters(letters).Render()
+ // Initialize a big text display with the letters "P" and "Term"
+ // "P" is displayed in cyan and "Term" is displayed in light magenta
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
+ Render() // Render the big text to the terminal
}
```
-### bigtext/demo
+### bigtext/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
@@ -734,33 +744,23 @@ import (
)
func main() {
- // Create a large text with the LetterStyle from the standard theme.
- // This is useful for creating title screens.
- pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+ // Define the text to be rendered
+ var text = "PTerm"
- // Create a large text with differently colored letters.
- // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
- // This can be used to highlight specific parts of the text.
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
- ).Render()
+ // Convert the text into a format suitable for PTerm
+ var letters = putils.LettersFromString(text)
- // Create a large text with a specific RGB color.
- // This can be used when you need a specific color that is not available in the standard colors.
- // Here, the color is gold (RGB: 255, 215, 0).
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
- ).Render()
+ // Render the text using PTerm's default big text style
+ pterm.DefaultBigText.WithLetters(letters).Render()
}
```
-### box/custom-padding
+### box/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
@@ -772,17 +772,35 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with custom padding options and print "Hello, World!" inside it.
- pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
-}
-
-```
-
-
+ // Print an informational message.
+ pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
-### box/default
+ // Create three panels with text, some of them with titles.
+ // The panels are created using the DefaultBox style.
+ panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
+ panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
+ panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
+ // Combine the panels into a layout using the DefaultPanel style.
+ // The layout is a 2D grid, with each row being an array of panels.
+ // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
+ panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
+ {{Data: panel1}, {Data: panel2}},
+ {{Data: panel3}},
+ }).Srender()
+
+ // Print the panels layout inside a box with a title.
+ // The box is created using the DefaultBox style, with the title positioned at the bottom right.
+ pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
+}
+
+```
+
+
+
+### box/custom-padding
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
@@ -794,18 +812,17 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with PTerm and print a message in it.
- // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
- pterm.DefaultBox.Println("Hello, World!")
+ // Create a default box with custom padding options and print "Hello, World!" inside it.
+ pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
}
```
-### box/demo
+### box/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
@@ -817,26 +834,9 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Print an informational message.
- pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
-
- // Create three panels with text, some of them with titles.
- // The panels are created using the DefaultBox style.
- panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
- panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
- panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
-
- // Combine the panels into a layout using the DefaultPanel style.
- // The layout is a 2D grid, with each row being an array of panels.
- // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
- panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
- {{Data: panel1}, {Data: panel2}},
- {{Data: panel3}},
- }).Srender()
-
- // Print the panels layout inside a box with a title.
- // The box is created using the DefaultBox style, with the title positioned at the bottom right.
- pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
+ // Create a default box with PTerm and print a message in it.
+ // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
+ pterm.DefaultBox.Println("Hello, World!")
}
```
@@ -884,9 +884,9 @@ func main() {
-### bulletlist/customized
+### bulletlist/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
@@ -897,44 +897,37 @@ package main
import (
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different styles and levels.
+ // Define a list of bullet list items with different levels.
bulletListItems := []pterm.BulletListItem{
- {
- Level: 0, // Level 0 (top level)
- Text: "Blue", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
- BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
- },
- {
- Level: 1, // Level 1 (sub-item)
- Text: "Green", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
- Bullet: "-", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
- },
- {
- Level: 2, // Level 2 (sub-sub-item)
- Text: "Cyan", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
- Bullet: ">", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
- },
+ {Level: 0, Text: "Level 0"}, // Level 0 item
+ {Level: 1, Text: "Level 1"}, // Level 1 item
+ {Level: 2, Text: "Level 2"}, // Level 2 item
}
- // Create a bullet list with the defined items and render it.
+ // Use the default bullet list style to render the list items.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
+
+ // Define a string with different levels of indentation.
+ text := `0
+ 1
+ 2
+ 3`
+
+ // Convert the indented string to a bullet list and render it.
+ putils.BulletListFromString(text, " ").Render()
}
```
-### bulletlist/demo
+### bulletlist/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
@@ -945,28 +938,35 @@ package main
import (
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different levels.
+ // Define a list of bullet list items with different styles and levels.
bulletListItems := []pterm.BulletListItem{
- {Level: 0, Text: "Level 0"}, // Level 0 item
- {Level: 1, Text: "Level 1"}, // Level 1 item
- {Level: 2, Text: "Level 2"}, // Level 2 item
+ {
+ Level: 0, // Level 0 (top level)
+ Text: "Blue", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
+ BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
+ },
+ {
+ Level: 1, // Level 1 (sub-item)
+ Text: "Green", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
+ Bullet: "-", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
+ },
+ {
+ Level: 2, // Level 2 (sub-sub-item)
+ Text: "Cyan", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
+ Bullet: ">", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
+ },
}
- // Use the default bullet list style to render the list items.
+ // Create a bullet list with the defined items and render it.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
-
- // Define a string with different levels of indentation.
- text := `0
- 1
- 2
- 3`
-
- // Convert the indented string to a bullet list and render it.
- putils.BulletListFromString(text, " ").Render()
}
```
@@ -1506,7 +1506,7 @@ func main() {
pterm.DefaultCenter.WithCenterEachLineSeparately().Println(fadeInfo)
})
- showcase("Fully Customizale", 2, func() {
+ showcase("Fully Customizable", 2, func() {
for i := 0; i < 4; i++ {
pterm.Println()
}
@@ -1646,6 +1646,36 @@ func randomInt(min, max int) int {
+### header/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import "github.com/pterm/pterm"
+
+func main() {
+ // Print a default header.
+ // This uses the default settings of PTerm to print a header.
+ pterm.DefaultHeader.Println("This is the default header!")
+
+ // Print a spacer line for better readability.
+ pterm.Println()
+
+ // Print a full-width header.
+ // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
+ pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
+}
+
+```
+
+
+
### header/custom
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/custom/animation.svg)
@@ -1678,9 +1708,9 @@ func main() {
-### header/demo
+### heatmap/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
@@ -1689,19 +1719,29 @@ func main() {
```go
package main
-import "github.com/pterm/pterm"
+import (
+ "github.com/pterm/pterm"
+)
func main() {
- // Print a default header.
- // This uses the default settings of PTerm to print a header.
- pterm.DefaultHeader.Println("This is the default header!")
+ // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
+ data := [][]float32{
+ {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
+ {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
+ {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
+ {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
+ {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
+ }
- // Print a spacer line for better readability.
- pterm.Println()
+ // Define the labels for the X and Y axes of the heatmap.
+ headerData := pterm.HeatmapAxis{
+ XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
+ YAxis: []string{"1", "2", "3", "4", "5"},
+ }
- // Print a full-width header.
- // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
- pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
+ // Create a heatmap with the defined data and axis labels, and enable RGB colors.
+ // Then render the heatmap.
+ pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
}
```
@@ -1866,46 +1906,6 @@ func main() {
-### heatmap/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
- data := [][]float32{
- {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
- {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
- {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
- {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
- {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
- }
-
- // Define the labels for the X and Y axes of the heatmap.
- headerData := pterm.HeatmapAxis{
- XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
- YAxis: []string{"1", "2", "3", "4", "5"},
- }
-
- // Create a heatmap with the defined data and axis labels, and enable RGB colors.
- // Then render the heatmap.
- pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
-}
-
-```
-
-
-
### heatmap/no_grid
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/no_grid/animation.svg)
@@ -2068,9 +2068,9 @@ func main() {
-### interactive_multiselect/custom-checkmarks
+### interactive_multiselect/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
@@ -2080,33 +2080,29 @@ func main() {
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options
+ // Initialize an empty slice to hold the options.
var options []string
- // Populate the options slice with 5 options
- for i := 0; i < 5; i++ {
+ // Populate the options slice with 100 options.
+ for i := 0; i < 100; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Create a new interactive multiselect printer with the options
- // Disable the filter, set the keys for confirming and selecting, and define the checkmark symbols
- printer := pterm.DefaultInteractiveMultiselect.
- WithOptions(options).
- WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space).
- WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
+ // Add 5 more options to the slice, indicating the availability of fuzzy searching.
+ for i := 0; i < 5; i++ {
+ options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
+ }
- // Show the interactive multiselect and get the selected options
- selectedOptions, _ := printer.Show()
+ // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
+ // The Show() method displays the options and waits for user input.
+ selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
- // Print the selected options
+ // Print the selected options, highlighted in green.
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
@@ -2114,9 +2110,9 @@ func main() {
-### interactive_multiselect/custom-keys
+### interactive_multiselect/custom-checkmarks
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
@@ -2126,7 +2122,6 @@ func main() {
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
@@ -2141,12 +2136,11 @@ func main() {
}
// Create a new interactive multiselect printer with the options
- // Disable the filter and set the keys for confirming and selecting options
+ // Disable the filter and define the checkmark symbols
printer := pterm.DefaultInteractiveMultiselect.
WithOptions(options).
WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space)
+ WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
// Show the interactive multiselect and get the selected options
selectedOptions, _ := printer.Show()
@@ -2159,9 +2153,9 @@ func main() {
-### interactive_multiselect/demo
+### interactive_multiselect/custom-keys
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
@@ -2171,29 +2165,32 @@ func main() {
package main
import (
+ "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options.
+ // Initialize an empty slice to hold the options
var options []string
- // Populate the options slice with 100 options.
- for i := 0; i < 100; i++ {
+ // Populate the options slice with 5 options
+ for i := 0; i < 5; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Add 5 more options to the slice, indicating the availability of fuzzy searching.
- for i := 0; i < 5; i++ {
- options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
- }
+ // Create a new interactive multiselect printer with the options
+ // Disable the filter and set the keys for confirming and selecting options
+ printer := pterm.DefaultInteractiveMultiselect.
+ WithOptions(options).
+ WithFilter(false).
+ WithKeyConfirm(keys.Enter).
+ WithKeySelect(keys.Space)
- // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
- // The Show() method displays the options and waits for user input.
- selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
+ // Show the interactive multiselect and get the selected options
+ selectedOptions, _ := printer.Show()
- // Print the selected options, highlighted in green.
+ // Print the selected options
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
@@ -2259,11 +2256,38 @@ import (
)
func main() {
- // Create an interactive text input with single line input mode
- textInput := pterm.DefaultInteractiveTextInput.WithMultiLine(false)
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.Show()
- // Show the text input and get the result
- result, _ := textInput.Show()
+ // Print a blank line for better readability
+ pterm.Println()
+
+ // Print the user's answer with an info prefix
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
+
+
+
+### interactive_textinput/default-value
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/default-value/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.WithDefaultValue("Some default value").Show()
// Print a blank line for better readability
pterm.Println()
@@ -2296,48 +2320,124 @@ func main() {
// This allows the user to input multiple lines of text.
textInput := pterm.DefaultInteractiveTextInput.WithMultiLine()
- // Show the text input to the user and store the result.
- // The second return value (an error) is ignored with '_'.
- result, _ := textInput.Show()
+ // Show the text input to the user and store the result.
+ // The second return value (an error) is ignored with '_'.
+ result, _ := textInput.Show()
+
+ // Print a blank line for better readability in the output.
+ pterm.Println()
+
+ // Print the user's input prefixed with an informational message.
+ // The '%s' placeholder is replaced with the user's input.
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
+
+
+
+### interactive_textinput/password
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/password/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import "github.com/pterm/pterm"
+
+func main() {
+ // Create an interactive text input with a mask for password input
+ passwordInput := pterm.DefaultInteractiveTextInput.WithMask("*")
+
+ // Show the password input prompt and store the result
+ result, _ := passwordInput.Show("Enter your password")
+
+ // Get the default logger from PTerm
+ logger := pterm.DefaultLogger
+
+ // Log the received password (masked)
+ // Note: In a real-world application, you should never log passwords
+ logger.Info("Password received", logger.Args("password", result))
+}
+
+```
+
+
+
+### logger/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+ "time"
+)
+
+func main() {
+ // Create a logger with trace level
+ logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
+
+ // Log a trace level message
+ logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
- // Print a blank line for better readability in the output.
- pterm.Println()
+ // Pause for 3 seconds
+ sleep()
- // Print the user's input prefixed with an informational message.
- // The '%s' placeholder is replaced with the user's input.
- pterm.Info.Printfln("You answered: %s", result)
-}
+ // Define a map with interesting stuff
+ interstingStuff := map[string]any{
+ "when were crayons invented": "1903",
+ "what is the meaning of life": 42,
+ "is this interesting": true,
+ }
-```
+ // Log a debug level message with arguments from the map
+ logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
-
+ // Pause for 3 seconds
+ sleep()
-### interactive_textinput/password
+ // Log an info level message
+ logger.Info("That was actually interesting", logger.Args("such", "wow"))
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/password/animation.svg)
+ // Pause for 3 seconds
+ sleep()
-
+ // Log a warning level message
+ logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
-SHOW SOURCE
+ // Pause for 3 seconds
+ sleep()
-```go
-package main
+ // Log an error level message
+ logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
-import "github.com/pterm/pterm"
+ // Pause for 3 seconds
+ sleep()
-func main() {
- // Create an interactive text input with a mask for password input
- passwordInput := pterm.DefaultInteractiveTextInput.WithMask("*")
+ // Log an info level message with a long text that will be automatically wrapped
+ logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
- // Show the password input prompt and store the result
- result, _ := passwordInput.Show("Enter your password")
+ // Pause for 3 seconds
+ sleep()
- // Get the default logger from PTerm
- logger := pterm.DefaultLogger
+ // Log a fatal level message
+ logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
+}
- // Log the received password (masked)
- // Note: In a real-world application, you should never log passwords
- logger.Info("Password received", logger.Args("password", result))
+// Function to pause the execution for 3 seconds
+func sleep() {
+ time.Sleep(time.Second * 3)
}
```
@@ -2442,82 +2542,6 @@ func main() {
-### logger/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
- "time"
-)
-
-func main() {
- // Create a logger with trace level
- logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
-
- // Log a trace level message
- logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
-
- // Pause for 3 seconds
- sleep()
-
- // Define a map with interesting stuff
- interstingStuff := map[string]any{
- "when were crayons invented": "1903",
- "what is the meaning of life": 42,
- "is this interesting": true,
- }
-
- // Log a debug level message with arguments from the map
- logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message
- logger.Info("That was actually interesting", logger.Args("such", "wow"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a warning level message
- logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an error level message
- logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message with a long text that will be automatically wrapped
- logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a fatal level message
- logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
-}
-
-// Function to pause the execution for 3 seconds
-func sleep() {
- time.Sleep(time.Second * 3)
-}
-
-```
-
-
-
### logger/json
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/json/animation.svg)
@@ -2719,9 +2743,9 @@ func main() {
-### paragraph/customized
+### paragraph/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
@@ -2733,32 +2757,29 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define a long text to be printed as a paragraph.
- longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
+ // Using the default paragraph printer to print a long text.
+ // The text is split at the spaces, which is useful for continuous text of all kinds.
+ // The line width can be manually adjusted if needed.
+ pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text as a paragraph with a custom maximal width of 60 characters.
- pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
- // Print a line space to separate the paragraph from the following text.
+ // Printing a line space for separation.
pterm.Println()
- // Define another long text to be printed without a paragraph printer.
- longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text without using a paragraph printer.
- pterm.Println(longTextWithoutParagraph)
+ // Printing a long text without using the paragraph printer.
+ // The default Println() function is used here, which does not provide intelligent splitting.
+ pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
}
```
-### paragraph/demo
+### paragraph/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
@@ -2770,20 +2791,23 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Using the default paragraph printer to print a long text.
- // The text is split at the spaces, which is useful for continuous text of all kinds.
- // The line width can be manually adjusted if needed.
- pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
+ // Define a long text to be printed as a paragraph.
+ longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
- // Printing a line space for separation.
+ // Print the long text as a paragraph with a custom maximal width of 60 characters.
+ pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+
+ // Print a line space to separate the paragraph from the following text.
pterm.Println()
- // Printing a long text without using the paragraph printer.
- // The default Println() function is used here, which does not provide intelligent splitting.
- pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ // Define another long text to be printed without a paragraph printer.
+ longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
+
+ // Print the long text without using a paragraph printer.
+ pterm.Println(longTextWithoutParagraph)
}
```
@@ -3185,9 +3209,9 @@ func main() {
-### table/boxed
+### table/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
@@ -3199,10 +3223,8 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the table.
- // Each inner slice represents a row in the table.
- // The first row is considered as the header of the table.
- tableData := pterm.TableData{
+ // Define the data for the first table
+ tableData1 := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -3210,19 +3232,31 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with the defined data.
- // The table has a header and is boxed.
- // Finally, render the table to print it.
- pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
+ // Create a table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
+
+ pterm.Println() // Blank line
+
+ // Define the data for the second table
+ tableData2 := pterm.TableData{
+ {"Firstname", "Lastname", "Email"},
+ {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
+ {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
+ {"Libby", "Camacho", "lobortis@semper.com"},
+ {"张", "小宝", "zhang@example.com"},
+ }
+
+ // Create another table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
}
```
-### table/demo
+### table/boxed
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
@@ -3234,8 +3268,10 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the first table
- tableData1 := pterm.TableData{
+ // Define the data for the table.
+ // Each inner slice represents a row in the table.
+ // The first row is considered as the header of the table.
+ tableData := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -3243,22 +3279,10 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
-
- pterm.Println() // Blank line
-
- // Define the data for the second table
- tableData2 := pterm.TableData{
- {"Firstname", "Lastname", "Email"},
- {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
- {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
- {"Libby", "Camacho", "lobortis@semper.com"},
- {"张", "小宝", "zhang@example.com"},
- }
-
- // Create another table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
+ // Create a table with the defined data.
+ // The table has a header and is boxed.
+ // Finally, render the table to print it.
+ pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
}
```
diff --git a/_examples/area/README.md b/_examples/area/README.md
index acb280b7f..412bfa538 100644
--- a/_examples/area/README.md
+++ b/_examples/area/README.md
@@ -1,6 +1,6 @@
-### area/center
+### area/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
@@ -13,24 +13,37 @@ import (
"time"
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Start a new default area in the center of the terminal.
- // The Start() function returns the created area and an error.
+ // Print an informational message using PTerm's Info printer.
+ // This message will stay in place while the area updates.
+ pterm.Info.Println("The previous text will stay in place, while the area updates.")
+
+ // Print two new lines as spacer.
+ pterm.Print("\n\n")
+
+ // Start the Area printer from PTerm's DefaultArea, with the Center option.
+ // The Area printer allows us to update a specific area of the console output.
+ // The returned 'area' object is used to control the area updates.
area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times to simulate a dynamic update.
- for i := 0; i < 5; i++ {
- // Update the content of the area with the current count.
- // The Sprintf function is used to format the string.
- area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
+ // Loop 10 times to update the area with the current time.
+ for i := 0; i < 10; i++ {
+ // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
+ // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
+ // The Srender() function is used to save the BigText as a string.
+ str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
- // Pause for a second to simulate a time-consuming task.
+ // Update the Area contents with the current time string.
+ area.Update(str)
+
+ // Sleep for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the area after all updates are done.
+ // Stop the Area printer after all updates are done.
area.Stop()
}
@@ -38,9 +51,9 @@ func main() {
-### area/default
+### area/center
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/center/animation.svg)
@@ -56,22 +69,21 @@ import (
)
func main() {
- // Start a new default area and get a reference to it.
- // The second return value is an error which is ignored here.
- area, _ := pterm.DefaultArea.Start()
+ // Start a new default area in the center of the terminal.
+ // The Start() function returns the created area and an error.
+ area, _ := pterm.DefaultArea.WithCenter().Start()
- // Loop 5 times
+ // Loop 5 times to simulate a dynamic update.
for i := 0; i < 5; i++ {
- // Update the content of the area dynamically.
- // Here we're just displaying the current count.
+ // Update the content of the area with the current count.
+ // The Sprintf function is used to format the string.
area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Pause for a second before the next update.
+ // Pause for a second to simulate a time-consuming task.
time.Sleep(time.Second)
}
// Stop the area after all updates are done.
- // This will clean up and free resources used by the area.
area.Stop()
}
@@ -79,9 +91,9 @@ func main() {
-### area/demo
+### area/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/area/default/animation.svg)
@@ -94,37 +106,25 @@ import (
"time"
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Print an informational message using PTerm's Info printer.
- // This message will stay in place while the area updates.
- pterm.Info.Println("The previous text will stay in place, while the area updates.")
-
- // Print two new lines as spacer.
- pterm.Print("\n\n")
-
- // Start the Area printer from PTerm's DefaultArea, with the Center option.
- // The Area printer allows us to update a specific area of the console output.
- // The returned 'area' object is used to control the area updates.
- area, _ := pterm.DefaultArea.WithCenter().Start()
-
- // Loop 10 times to update the area with the current time.
- for i := 0; i < 10; i++ {
- // Get the current time, format it as "15:04:05" (hour:minute:second), and convert it to a string.
- // Then, create a BigText from the time string using PTerm's DefaultBigText and putils NewLettersFromString.
- // The Srender() function is used to save the BigText as a string.
- str, _ := pterm.DefaultBigText.WithLetters(putils.LettersFromString(time.Now().Format("15:04:05"))).Srender()
+ // Start a new default area and get a reference to it.
+ // The second return value is an error which is ignored here.
+ area, _ := pterm.DefaultArea.Start()
- // Update the Area contents with the current time string.
- area.Update(str)
+ // Loop 5 times
+ for i := 0; i < 5; i++ {
+ // Update the content of the area dynamically.
+ // Here we're just displaying the current count.
+ area.Update(pterm.Sprintf("Current count: %d\nAreas can update their content dynamically!", i))
- // Sleep for a second before the next update.
+ // Pause for a second before the next update.
time.Sleep(time.Second)
}
- // Stop the Area printer after all updates are done.
+ // Stop the area after all updates are done.
+ // This will clean up and free resources used by the area.
area.Stop()
}
diff --git a/_examples/area/center/animation.svg b/_examples/area/center/animation.svg
index 8f04f521b..45f39de04 100644
--- a/_examples/area/center/animation.svg
+++ b/_examples/area/center/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.283983s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}3%{transform:translateX(-80px)}3.6%{transform:translateX(-160px)}13.8%{transform:translateX(-240px)}13.8%{transform:translateX(-320px)}13.8%{transform:translateX(-400px)}13.8%{transform:translateX(-480px)}13.8%{transform:translateX(-560px)}13.8%{transform:translateX(-640px)}13.8%{transform:translateX(-720px)}13.8%{transform:translateX(-800px)}24.6%{transform:translateX(-880px)}24.6%{transform:translateX(-960px)}24.6%{transform:translateX(-1040px)}35.4%{transform:translateX(-1120px)}35.4%{transform:translateX(-1200px)}35.4%{transform:translateX(-1280px)}46.1%{transform:translateX(-1360px)}100%{transform:translateX(-1440px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:4
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.234333s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}1.4%{transform:translateX(-80px)}2.4%{transform:translateX(-160px)}2.5%{transform:translateX(-240px)}2.5%{transform:translateX(-320px)}2.5%{transform:translateX(-400px)}2.5%{transform:translateX(-480px)}13.3%{transform:translateX(-560px)}13.3%{transform:translateX(-640px)}13.3%{transform:translateX(-720px)}24.2%{transform:translateX(-800px)}24.2%{transform:translateX(-880px)}24.2%{transform:translateX(-960px)}35%{transform:translateX(-1040px)}35%{transform:translateX(-1120px)}35%{transform:translateX(-1200px)}45.8%{transform:translateX(-1280px)}45.8%{transform:translateX(-1360px)}45.9%{transform:translateX(-1440px)}45.9%{transform:translateX(-1520px)}100%{transform:translateX(-1600px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Restartinganimation...
\ No newline at end of file
diff --git a/_examples/area/default/animation.svg b/_examples/area/default/animation.svg
index 48f84a2bc..a9b9199a6 100644
--- a/_examples/area/default/animation.svg
+++ b/_examples/area/default/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.1506s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}1.6%{transform:translateX(-80px)}12.5%{transform:translateX(-160px)}12.5%{transform:translateX(-240px)}23.5%{transform:translateX(-320px)}23.5%{transform:translateX(-400px)}34.4%{transform:translateX(-480px)}34.4%{transform:translateX(-560px)}45.4%{transform:translateX(-640px)}45.4%{transform:translateX(-720px)}100%{transform:translateX(-800px)}}Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Currentcount:0Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.255954s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}2.7%{transform:translateX(-80px)}13.5%{transform:translateX(-160px)}13.6%{transform:translateX(-240px)}13.6%{transform:translateX(-320px)}13.6%{transform:translateX(-400px)}13.6%{transform:translateX(-480px)}13.6%{transform:translateX(-560px)}24.4%{transform:translateX(-640px)}35.2%{transform:translateX(-720px)}46%{transform:translateX(-800px)}46%{transform:translateX(-880px)}100%{transform:translateX(-960px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:3Currentcount:4Currentcount:1Currentcount:2Restartinganimation...
\ No newline at end of file
diff --git a/_examples/area/demo/animation.svg b/_examples/area/demo/animation.svg
index 88c57f2dc..60ce82d0b 100644
--- a/_examples/area/demo/animation.svg
+++ b/_examples/area/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:14.021021s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}0.1%{transform:translateX(-80px)}0.2%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}7.2%{transform:translateX(-320px)}7.2%{transform:translateX(-400px)}7.2%{transform:translateX(-480px)}14.4%{transform:translateX(-560px)}14.4%{transform:translateX(-640px)}21.5%{transform:translateX(-720px)}28.6%{transform:translateX(-800px)}35.8%{transform:translateX(-880px)}42.9%{transform:translateX(-960px)}50.1%{transform:translateX(-1040px)}57.2%{transform:translateX(-1120px)}64.3%{transform:translateX(-1200px)}100%{transform:translateX(-1280px)}} INFO Theprevioustextwillstayinplace,whiletheareaupdates.█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:14.026583s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}0.1%{transform:translateX(-80px)}0.1%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}7.2%{transform:translateX(-320px)}14.4%{transform:translateX(-400px)}14.4%{transform:translateX(-480px)}21.5%{transform:translateX(-560px)}28.7%{transform:translateX(-640px)}35.8%{transform:translateX(-720px)}42.9%{transform:translateX(-800px)}42.9%{transform:translateX(-880px)}50.1%{transform:translateX(-960px)}50.1%{transform:translateX(-1040px)}57.2%{transform:translateX(-1120px)}64.4%{transform:translateX(-1200px)}100%{transform:translateX(-1280px)}} INFO Theprevioustextwillstayinplace,whiletheareaupdates.████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/area/dynamic-chart/animation.svg b/_examples/area/dynamic-chart/animation.svg
index eeefc47d0..907cc16b8 100644
--- a/_examples/area/dynamic-chart/animation.svg
+++ b/_examples/area/dynamic-chart/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:9.907125s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}1.3%{transform:translateX(-80px)}1.4%{transform:translateX(-160px)}2.6%{transform:translateX(-240px)}2.6%{transform:translateX(-320px)}2.6%{transform:translateX(-400px)}2.6%{transform:translateX(-480px)}7.7%{transform:translateX(-560px)}7.8%{transform:translateX(-640px)}7.8%{transform:translateX(-720px)}7.8%{transform:translateX(-800px)}7.8%{transform:translateX(-880px)}7.8%{transform:translateX(-960px)}7.8%{transform:translateX(-1040px)}7.8%{transform:translateX(-1120px)}7.8%{transform:translateX(-1200px)}7.8%{transform:translateX(-1280px)}7.8%{transform:translateX(-1360px)}7.8%{transform:translateX(-1440px)}7.8%{transform:translateX(-1520px)}7.8%{transform:translateX(-1600px)}7.8%{transform:translateX(-1680px)}7.8%{transform:translateX(-1760px)}7.8%{transform:translateX(-1840px)}7.8%{transform:translateX(-1920px)}7.8%{transform:translateX(-2000px)}7.8%{transform:translateX(-2080px)}7.9%{transform:translateX(-2160px)}7.9%{transform:translateX(-2240px)}7.9%{transform:translateX(-2320px)}7.9%{transform:translateX(-2400px)}7.9%{transform:translateX(-2480px)}7.9%{transform:translateX(-2560px)}7.9%{transform:translateX(-2640px)}7.9%{transform:translateX(-2720px)}7.9%{transform:translateX(-2800px)}7.9%{transform:translateX(-2880px)}7.9%{transform:translateX(-2960px)}7.9%{transform:translateX(-3040px)}7.9%{transform:translateX(-3120px)}7.9%{transform:translateX(-3200px)}7.9%{transform:translateX(-3280px)}7.9%{transform:translateX(-3360px)}7.9%{transform:translateX(-3440px)}7.9%{transform:translateX(-3520px)}7.9%{transform:translateX(-3600px)}7.9%{transform:translateX(-3680px)}7.9%{transform:translateX(-3760px)}7.9%{transform:translateX(-3840px)}7.9%{transform:translateX(-3920px)}7.9%{transform:translateX(-4000px)}7.9%{transform:translateX(-4080px)}7.9%{transform:translateX(-4160px)}7.9%{transform:translateX(-4240px)}7.9%{transform:translateX(-4320px)}7.9%{transform:translateX(-4400px)}7.9%{transform:translateX(-4480px)}7.9%{transform:translateX(-4560px)}7.9%{transform:translateX(-4640px)}7.9%{transform:translateX(-4720px)}7.9%{transform:translateX(-4800px)}7.9%{transform:translateX(-4880px)}7.9%{transform:translateX(-4960px)}7.9%{transform:translateX(-5040px)}7.9%{transform:translateX(-5120px)}7.9%{transform:translateX(-5200px)}7.9%{transform:translateX(-5280px)}7.9%{transform:translateX(-5360px)}7.9%{transform:translateX(-5440px)}7.9%{transform:translateX(-5520px)}7.9%{transform:translateX(-5600px)}7.9%{transform:translateX(-5680px)}8%{transform:translateX(-5760px)}8%{transform:translateX(-5840px)}8%{transform:translateX(-5920px)}8%{transform:translateX(-6000px)}8%{transform:translateX(-6080px)}8%{transform:translateX(-6160px)}8%{transform:translateX(-6240px)}8%{transform:translateX(-6320px)}8%{transform:translateX(-6400px)}8%{transform:translateX(-6480px)}8%{transform:translateX(-6560px)}8%{transform:translateX(-6640px)}8%{transform:translateX(-6720px)}8%{transform:translateX(-6800px)}8%{transform:translateX(-6880px)}8%{transform:translateX(-6960px)}8%{transform:translateX(-7040px)}8%{transform:translateX(-7120px)}8%{transform:translateX(-7200px)}8%{transform:translateX(-7280px)}13.1%{transform:translateX(-7360px)}13.1%{transform:translateX(-7440px)}13.1%{transform:translateX(-7520px)}13.1%{transform:translateX(-7600px)}13.1%{transform:translateX(-7680px)}13.1%{transform:translateX(-7760px)}13.1%{transform:translateX(-7840px)}13.1%{transform:translateX(-7920px)}13.1%{transform:translateX(-8000px)}13.1%{transform:translateX(-8080px)}13.1%{transform:translateX(-8160px)}13.1%{transform:translateX(-8240px)}13.1%{transform:translateX(-8320px)}13.1%{transform:translateX(-8400px)}13.1%{transform:translateX(-8480px)}13.1%{transform:translateX(-8560px)}13.1%{transform:translateX(-8640px)}13.1%{transform:translateX(-8720px)}13.1%{transform:translateX(-8800px)}13.1%{transform:translateX(-8880px)}13.1%{transform:translateX(-8960px)}13.1%{transform:translateX(-9040px)}13.1%{transform:translateX(-9120px)}13.1%{transform:translateX(-9200px)}13.1%{transform:translateX(-9280px)}13.1%{transform:translateX(-9360px)}13.1%{transform:translateX(-9440px)}13.1%{transform:translateX(-9520px)}13.1%{transform:translateX(-9600px)}13.1%{transform:translateX(-9680px)}13.1%{transform:translateX(-9760px)}13.1%{transform:translateX(-9840px)}13.1%{transform:translateX(-9920px)}13.1%{transform:translateX(-10000px)}13.1%{transform:translateX(-10080px)}13.1%{transform:translateX(-10160px)}13.1%{transform:translateX(-10240px)}13.1%{transform:translateX(-10320px)}13.1%{transform:translateX(-10400px)}13.1%{transform:translateX(-10480px)}13.2%{transform:translateX(-10560px)}13.2%{transform:translateX(-10640px)}13.2%{transform:translateX(-10720px)}13.2%{transform:translateX(-10800px)}13.2%{transform:translateX(-10880px)}13.2%{transform:translateX(-10960px)}13.2%{transform:translateX(-11040px)}13.2%{transform:translateX(-11120px)}13.2%{transform:translateX(-11200px)}13.2%{transform:translateX(-11280px)}13.2%{transform:translateX(-11360px)}13.2%{transform:translateX(-11440px)}13.2%{transform:translateX(-11520px)}13.2%{transform:translateX(-11600px)}13.2%{transform:translateX(-11680px)}13.2%{transform:translateX(-11760px)}13.2%{transform:translateX(-11840px)}13.2%{transform:translateX(-11920px)}13.2%{transform:translateX(-12000px)}13.2%{transform:translateX(-12080px)}13.2%{transform:translateX(-12160px)}13.2%{transform:translateX(-12240px)}13.2%{transform:translateX(-12320px)}13.2%{transform:translateX(-12400px)}13.2%{transform:translateX(-12480px)}13.2%{transform:translateX(-12560px)}13.2%{transform:translateX(-12640px)}13.2%{transform:translateX(-12720px)}13.2%{transform:translateX(-12800px)}13.2%{transform:translateX(-12880px)}13.2%{transform:translateX(-12960px)}13.2%{transform:translateX(-13040px)}13.2%{transform:translateX(-13120px)}13.2%{transform:translateX(-13200px)}13.2%{transform:translateX(-13280px)}13.2%{transform:translateX(-13360px)}13.2%{transform:translateX(-13440px)}13.2%{transform:translateX(-13520px)}13.2%{transform:translateX(-13600px)}13.2%{transform:translateX(-13680px)}13.2%{transform:translateX(-13760px)}13.2%{transform:translateX(-13840px)}13.2%{transform:translateX(-13920px)}13.2%{transform:translateX(-14000px)}13.2%{transform:translateX(-14080px)}13.2%{transform:translateX(-14160px)}13.2%{transform:translateX(-14240px)}13.3%{transform:translateX(-14320px)}13.3%{transform:translateX(-14400px)}13.3%{transform:translateX(-14480px)}13.3%{transform:translateX(-14560px)}18.3%{transform:translateX(-14640px)}18.4%{transform:translateX(-14720px)}18.4%{transform:translateX(-14800px)}18.4%{transform:translateX(-14880px)}18.4%{transform:translateX(-14960px)}18.4%{transform:translateX(-15040px)}18.4%{transform:translateX(-15120px)}18.4%{transform:translateX(-15200px)}18.4%{transform:translateX(-15280px)}18.4%{transform:translateX(-15360px)}18.4%{transform:translateX(-15440px)}18.4%{transform:translateX(-15520px)}18.4%{transform:translateX(-15600px)}18.4%{transform:translateX(-15680px)}18.4%{transform:translateX(-15760px)}18.4%{transform:translateX(-15840px)}18.4%{transform:translateX(-15920px)}18.4%{transform:translateX(-16000px)}18.4%{transform:translateX(-16080px)}18.4%{transform:translateX(-16160px)}18.4%{transform:translateX(-16240px)}18.4%{transform:translateX(-16320px)}18.4%{transform:translateX(-16400px)}18.4%{transform:translateX(-16480px)}18.4%{transform:translateX(-16560px)}18.4%{transform:translateX(-16640px)}18.4%{transform:translateX(-16720px)}18.4%{transform:translateX(-16800px)}18.4%{transform:translateX(-16880px)}18.4%{transform:translateX(-16960px)}18.4%{transform:translateX(-17040px)}18.4%{transform:translateX(-17120px)}18.4%{transform:translateX(-17200px)}18.4%{transform:translateX(-17280px)}18.4%{transform:translateX(-17360px)}18.4%{transform:translateX(-17440px)}18.4%{transform:translateX(-17520px)}18.4%{transform:translateX(-17600px)}18.4%{transform:translateX(-17680px)}18.4%{transform:translateX(-17760px)}18.4%{transform:translateX(-17840px)}18.4%{transform:translateX(-17920px)}18.4%{transform:translateX(-18000px)}18.4%{transform:translateX(-18080px)}18.4%{transform:translateX(-18160px)}18.4%{transform:translateX(-18240px)}18.4%{transform:translateX(-18320px)}18.4%{transform:translateX(-18400px)}18.4%{transform:translateX(-18480px)}18.4%{transform:translateX(-18560px)}18.5%{transform:translateX(-18640px)}18.5%{transform:translateX(-18720px)}18.5%{transform:translateX(-18800px)}18.5%{transform:translateX(-18880px)}18.5%{transform:translateX(-18960px)}18.5%{transform:translateX(-19040px)}18.5%{transform:translateX(-19120px)}18.5%{transform:translateX(-19200px)}18.5%{transform:translateX(-19280px)}18.5%{transform:translateX(-19360px)}18.5%{transform:translateX(-19440px)}18.5%{transform:translateX(-19520px)}18.5%{transform:translateX(-19600px)}18.5%{transform:translateX(-19680px)}18.5%{transform:translateX(-19760px)}18.5%{transform:translateX(-19840px)}18.5%{transform:translateX(-19920px)}18.5%{transform:translateX(-20000px)}18.5%{transform:translateX(-20080px)}18.5%{transform:translateX(-20160px)}18.5%{transform:translateX(-20240px)}18.5%{transform:translateX(-20320px)}18.5%{transform:translateX(-20400px)}18.5%{transform:translateX(-20480px)}18.5%{transform:translateX(-20560px)}18.5%{transform:translateX(-20640px)}18.5%{transform:translateX(-20720px)}18.5%{transform:translateX(-20800px)}18.5%{transform:translateX(-20880px)}18.5%{transform:translateX(-20960px)}18.5%{transform:translateX(-21040px)}18.5%{transform:translateX(-21120px)}18.5%{transform:translateX(-21200px)}18.5%{transform:translateX(-21280px)}18.5%{transform:translateX(-21360px)}18.5%{transform:translateX(-21440px)}18.5%{transform:translateX(-21520px)}18.5%{transform:translateX(-21600px)}18.5%{transform:translateX(-21680px)}18.5%{transform:translateX(-21760px)}18.5%{transform:translateX(-21840px)}23.6%{transform:translateX(-21920px)}23.6%{transform:translateX(-22000px)}28.7%{transform:translateX(-22080px)}28.7%{transform:translateX(-22160px)}28.7%{transform:translateX(-22240px)}28.7%{transform:translateX(-22320px)}28.7%{transform:translateX(-22400px)}28.7%{transform:translateX(-22480px)}28.7%{transform:translateX(-22560px)}28.7%{transform:translateX(-22640px)}28.7%{transform:translateX(-22720px)}28.7%{transform:translateX(-22800px)}28.7%{transform:translateX(-22880px)}28.7%{transform:translateX(-22960px)}28.7%{transform:translateX(-23040px)}28.7%{transform:translateX(-23120px)}28.7%{transform:translateX(-23200px)}28.7%{transform:translateX(-23280px)}28.7%{transform:translateX(-23360px)}28.7%{transform:translateX(-23440px)}33.8%{transform:translateX(-23520px)}38.9%{transform:translateX(-23600px)}38.9%{transform:translateX(-23680px)}38.9%{transform:translateX(-23760px)}38.9%{transform:translateX(-23840px)}38.9%{transform:translateX(-23920px)}38.9%{transform:translateX(-24000px)}38.9%{transform:translateX(-24080px)}38.9%{transform:translateX(-24160px)}38.9%{transform:translateX(-24240px)}38.9%{transform:translateX(-24320px)}38.9%{transform:translateX(-24400px)}38.9%{transform:translateX(-24480px)}38.9%{transform:translateX(-24560px)}38.9%{transform:translateX(-24640px)}38.9%{transform:translateX(-24720px)}38.9%{transform:translateX(-24800px)}38.9%{transform:translateX(-24880px)}38.9%{transform:translateX(-24960px)}38.9%{transform:translateX(-25040px)}38.9%{transform:translateX(-25120px)}38.9%{transform:translateX(-25200px)}38.9%{transform:translateX(-25280px)}38.9%{transform:translateX(-25360px)}38.9%{transform:translateX(-25440px)}38.9%{transform:translateX(-25520px)}38.9%{transform:translateX(-25600px)}38.9%{transform:translateX(-25680px)}38.9%{transform:translateX(-25760px)}38.9%{transform:translateX(-25840px)}38.9%{transform:translateX(-25920px)}39%{transform:translateX(-26000px)}39%{transform:translateX(-26080px)}39%{transform:translateX(-26160px)}39%{transform:translateX(-26240px)}39%{transform:translateX(-26320px)}39%{transform:translateX(-26400px)}39%{transform:translateX(-26480px)}39%{transform:translateX(-26560px)}39%{transform:translateX(-26640px)}39%{transform:translateX(-26720px)}39%{transform:translateX(-26800px)}39%{transform:translateX(-26880px)}39%{transform:translateX(-26960px)}39%{transform:translateX(-27040px)}39%{transform:translateX(-27120px)}39%{transform:translateX(-27200px)}39%{transform:translateX(-27280px)}39%{transform:translateX(-27360px)}39%{transform:translateX(-27440px)}39%{transform:translateX(-27520px)}39%{transform:translateX(-27600px)}39%{transform:translateX(-27680px)}39%{transform:translateX(-27760px)}39%{transform:translateX(-27840px)}39%{transform:translateX(-27920px)}39%{transform:translateX(-28000px)}39%{transform:translateX(-28080px)}39%{transform:translateX(-28160px)}39%{transform:translateX(-28240px)}39%{transform:translateX(-28320px)}39%{transform:translateX(-28400px)}39%{transform:translateX(-28480px)}39%{transform:translateX(-28560px)}39%{transform:translateX(-28640px)}39%{transform:translateX(-28720px)}39%{transform:translateX(-28800px)}39%{transform:translateX(-28880px)}39%{transform:translateX(-28960px)}39%{transform:translateX(-29040px)}39%{transform:translateX(-29120px)}39%{transform:translateX(-29200px)}39%{transform:translateX(-29280px)}39%{transform:translateX(-29360px)}39%{transform:translateX(-29440px)}39%{transform:translateX(-29520px)}39%{transform:translateX(-29600px)}39%{transform:translateX(-29680px)}39%{transform:translateX(-29760px)}39%{transform:translateX(-29840px)}39%{transform:translateX(-29920px)}39%{transform:translateX(-30000px)}39%{transform:translateX(-30080px)}39%{transform:translateX(-30160px)}44.1%{transform:translateX(-30240px)}44.1%{transform:translateX(-30320px)}44.1%{transform:translateX(-30400px)}44.1%{transform:translateX(-30480px)}44.1%{transform:translateX(-30560px)}44.1%{transform:translateX(-30640px)}44.1%{transform:translateX(-30720px)}44.1%{transform:translateX(-30800px)}44.1%{transform:translateX(-30880px)}44.1%{transform:translateX(-30960px)}44.1%{transform:translateX(-31040px)}44.2%{transform:translateX(-31120px)}44.2%{transform:translateX(-31200px)}44.2%{transform:translateX(-31280px)}44.2%{transform:translateX(-31360px)}44.2%{transform:translateX(-31440px)}44.2%{transform:translateX(-31520px)}44.2%{transform:translateX(-31600px)}44.2%{transform:translateX(-31680px)}44.2%{transform:translateX(-31760px)}44.2%{transform:translateX(-31840px)}44.2%{transform:translateX(-31920px)}44.2%{transform:translateX(-32000px)}44.2%{transform:translateX(-32080px)}44.2%{transform:translateX(-32160px)}44.2%{transform:translateX(-32240px)}44.2%{transform:translateX(-32320px)}44.2%{transform:translateX(-32400px)}44.2%{transform:translateX(-32480px)}44.2%{transform:translateX(-32560px)}44.2%{transform:translateX(-32640px)}44.2%{transform:translateX(-32720px)}44.2%{transform:translateX(-32800px)}44.2%{transform:translateX(-32880px)}44.2%{transform:translateX(-32960px)}44.2%{transform:translateX(-33040px)}44.2%{transform:translateX(-33120px)}44.2%{transform:translateX(-33200px)}44.2%{transform:translateX(-33280px)}44.2%{transform:translateX(-33360px)}44.2%{transform:translateX(-33440px)}44.2%{transform:translateX(-33520px)}44.2%{transform:translateX(-33600px)}44.2%{transform:translateX(-33680px)}44.2%{transform:translateX(-33760px)}44.2%{transform:translateX(-33840px)}44.2%{transform:translateX(-33920px)}44.2%{transform:translateX(-34000px)}44.2%{transform:translateX(-34080px)}44.2%{transform:translateX(-34160px)}44.2%{transform:translateX(-34240px)}44.2%{transform:translateX(-34320px)}44.2%{transform:translateX(-34400px)}44.2%{transform:translateX(-34480px)}44.2%{transform:translateX(-34560px)}44.2%{transform:translateX(-34640px)}44.2%{transform:translateX(-34720px)}44.2%{transform:translateX(-34800px)}44.2%{transform:translateX(-34880px)}44.2%{transform:translateX(-34960px)}44.2%{transform:translateX(-35040px)}44.2%{transform:translateX(-35120px)}44.2%{transform:translateX(-35200px)}44.3%{transform:translateX(-35280px)}44.3%{transform:translateX(-35360px)}44.3%{transform:translateX(-35440px)}44.3%{transform:translateX(-35520px)}44.3%{transform:translateX(-35600px)}44.3%{transform:translateX(-35680px)}44.3%{transform:translateX(-35760px)}44.3%{transform:translateX(-35840px)}44.3%{transform:translateX(-35920px)}44.3%{transform:translateX(-36000px)}44.3%{transform:translateX(-36080px)}44.3%{transform:translateX(-36160px)}44.3%{transform:translateX(-36240px)}44.3%{transform:translateX(-36320px)}44.3%{transform:translateX(-36400px)}44.3%{transform:translateX(-36480px)}44.3%{transform:translateX(-36560px)}44.3%{transform:translateX(-36640px)}44.3%{transform:translateX(-36720px)}44.3%{transform:translateX(-36800px)}44.3%{transform:translateX(-36880px)}44.3%{transform:translateX(-36960px)}44.3%{transform:translateX(-37040px)}44.3%{transform:translateX(-37120px)}44.3%{transform:translateX(-37200px)}44.3%{transform:translateX(-37280px)}49.4%{transform:translateX(-37360px)}49.4%{transform:translateX(-37440px)}49.4%{transform:translateX(-37520px)}49.4%{transform:translateX(-37600px)}49.4%{transform:translateX(-37680px)}49.4%{transform:translateX(-37760px)}49.4%{transform:translateX(-37840px)}49.4%{transform:translateX(-37920px)}49.4%{transform:translateX(-38000px)}49.4%{transform:translateX(-38080px)}49.4%{transform:translateX(-38160px)}49.4%{transform:translateX(-38240px)}49.4%{transform:translateX(-38320px)}49.4%{transform:translateX(-38400px)}49.4%{transform:translateX(-38480px)}49.4%{transform:translateX(-38560px)}49.4%{transform:translateX(-38640px)}49.4%{transform:translateX(-38720px)}49.4%{transform:translateX(-38800px)}49.4%{transform:translateX(-38880px)}49.4%{transform:translateX(-38960px)}49.4%{transform:translateX(-39040px)}49.4%{transform:translateX(-39120px)}49.4%{transform:translateX(-39200px)}49.4%{transform:translateX(-39280px)}49.4%{transform:translateX(-39360px)}49.4%{transform:translateX(-39440px)}49.4%{transform:translateX(-39520px)}49.4%{transform:translateX(-39600px)}49.4%{transform:translateX(-39680px)}49.4%{transform:translateX(-39760px)}49.4%{transform:translateX(-39840px)}49.4%{transform:translateX(-39920px)}49.4%{transform:translateX(-40000px)}49.4%{transform:translateX(-40080px)}49.4%{transform:translateX(-40160px)}49.4%{transform:translateX(-40240px)}49.4%{transform:translateX(-40320px)}49.5%{transform:translateX(-40400px)}49.5%{transform:translateX(-40480px)}49.5%{transform:translateX(-40560px)}49.5%{transform:translateX(-40640px)}49.5%{transform:translateX(-40720px)}49.5%{transform:translateX(-40800px)}49.5%{transform:translateX(-40880px)}49.5%{transform:translateX(-40960px)}49.5%{transform:translateX(-41040px)}49.5%{transform:translateX(-41120px)}49.5%{transform:translateX(-41200px)}49.5%{transform:translateX(-41280px)}49.5%{transform:translateX(-41360px)}49.5%{transform:translateX(-41440px)}49.5%{transform:translateX(-41520px)}49.5%{transform:translateX(-41600px)}49.5%{transform:translateX(-41680px)}49.5%{transform:translateX(-41760px)}49.5%{transform:translateX(-41840px)}49.5%{transform:translateX(-41920px)}49.5%{transform:translateX(-42000px)}49.5%{transform:translateX(-42080px)}49.5%{transform:translateX(-42160px)}49.5%{transform:translateX(-42240px)}49.5%{transform:translateX(-42320px)}49.5%{transform:translateX(-42400px)}49.5%{transform:translateX(-42480px)}49.5%{transform:translateX(-42560px)}49.5%{transform:translateX(-42640px)}49.5%{transform:translateX(-42720px)}49.5%{transform:translateX(-42800px)}49.5%{transform:translateX(-42880px)}49.5%{transform:translateX(-42960px)}49.5%{transform:translateX(-43040px)}49.5%{transform:translateX(-43120px)}49.5%{transform:translateX(-43200px)}49.5%{transform:translateX(-43280px)}49.5%{transform:translateX(-43360px)}49.5%{transform:translateX(-43440px)}49.5%{transform:translateX(-43520px)}49.5%{transform:translateX(-43600px)}100%{transform:translateX(-43680px)}}████████████ABCD████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:10.007896s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}3%{transform:translateX(-80px)}3.9%{transform:translateX(-160px)}4.3%{transform:translateX(-240px)}4.3%{transform:translateX(-320px)}4.3%{transform:translateX(-400px)}4.3%{transform:translateX(-480px)}4.4%{transform:translateX(-560px)}4.4%{transform:translateX(-640px)}4.4%{transform:translateX(-720px)}4.4%{transform:translateX(-800px)}4.5%{transform:translateX(-880px)}4.5%{transform:translateX(-960px)}4.5%{transform:translateX(-1040px)}4.5%{transform:translateX(-1120px)}9.6%{transform:translateX(-1200px)}9.6%{transform:translateX(-1280px)}9.6%{transform:translateX(-1360px)}9.6%{transform:translateX(-1440px)}9.6%{transform:translateX(-1520px)}9.6%{transform:translateX(-1600px)}9.6%{transform:translateX(-1680px)}9.6%{transform:translateX(-1760px)}9.6%{transform:translateX(-1840px)}9.6%{transform:translateX(-1920px)}9.6%{transform:translateX(-2000px)}9.6%{transform:translateX(-2080px)}9.6%{transform:translateX(-2160px)}9.6%{transform:translateX(-2240px)}9.6%{transform:translateX(-2320px)}14.7%{transform:translateX(-2400px)}14.7%{transform:translateX(-2480px)}19.7%{transform:translateX(-2560px)}19.7%{transform:translateX(-2640px)}24.8%{transform:translateX(-2720px)}24.8%{transform:translateX(-2800px)}29.8%{transform:translateX(-2880px)}29.8%{transform:translateX(-2960px)}29.8%{transform:translateX(-3040px)}34.9%{transform:translateX(-3120px)}34.9%{transform:translateX(-3200px)}34.9%{transform:translateX(-3280px)}34.9%{transform:translateX(-3360px)}34.9%{transform:translateX(-3440px)}34.9%{transform:translateX(-3520px)}34.9%{transform:translateX(-3600px)}34.9%{transform:translateX(-3680px)}34.9%{transform:translateX(-3760px)}34.9%{transform:translateX(-3840px)}34.9%{transform:translateX(-3920px)}34.9%{transform:translateX(-4000px)}34.9%{transform:translateX(-4080px)}34.9%{transform:translateX(-4160px)}39.9%{transform:translateX(-4240px)}39.9%{transform:translateX(-4320px)}39.9%{transform:translateX(-4400px)}39.9%{transform:translateX(-4480px)}39.9%{transform:translateX(-4560px)}39.9%{transform:translateX(-4640px)}39.9%{transform:translateX(-4720px)}39.9%{transform:translateX(-4800px)}45%{transform:translateX(-4880px)}45%{transform:translateX(-4960px)}45%{transform:translateX(-5040px)}45%{transform:translateX(-5120px)}45%{transform:translateX(-5200px)}45%{transform:translateX(-5280px)}45%{transform:translateX(-5360px)}45%{transform:translateX(-5440px)}45%{transform:translateX(-5520px)}45%{transform:translateX(-5600px)}45%{transform:translateX(-5680px)}45%{transform:translateX(-5760px)}45%{transform:translateX(-5840px)}45%{transform:translateX(-5920px)}45%{transform:translateX(-6000px)}45%{transform:translateX(-6080px)}45%{transform:translateX(-6160px)}50%{transform:translateX(-6240px)}50%{transform:translateX(-6320px)}50%{transform:translateX(-6400px)}100%{transform:translateX(-6480px)}}████████████ABCD████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/area/fullscreen-center/animation.svg b/_examples/area/fullscreen-center/animation.svg
index f28c671a5..daef85062 100644
--- a/_examples/area/fullscreen-center/animation.svg
+++ b/_examples/area/fullscreen-center/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.288362s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}3%{transform:translateX(-80px)}3.6%{transform:translateX(-160px)}13.9%{transform:translateX(-240px)}24.6%{transform:translateX(-320px)}24.6%{transform:translateX(-400px)}24.6%{transform:translateX(-480px)}24.6%{transform:translateX(-560px)}24.6%{transform:translateX(-640px)}24.6%{transform:translateX(-720px)}24.6%{transform:translateX(-800px)}35.4%{transform:translateX(-880px)}35.4%{transform:translateX(-960px)}46.1%{transform:translateX(-1040px)}46.1%{transform:translateX(-1120px)}46.2%{transform:translateX(-1200px)}46.2%{transform:translateX(-1280px)}46.2%{transform:translateX(-1360px)}46.2%{transform:translateX(-1440px)}46.2%{transform:translateX(-1520px)}46.2%{transform:translateX(-1600px)}100%{transform:translateX(-1680px)}}Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Currentcount:0Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.446123s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}4.7%{transform:translateX(-80px)}5.4%{transform:translateX(-160px)}15.3%{transform:translateX(-240px)}15.3%{transform:translateX(-320px)}15.3%{transform:translateX(-400px)}15.3%{transform:translateX(-480px)}15.3%{transform:translateX(-560px)}15.3%{transform:translateX(-640px)}15.3%{transform:translateX(-720px)}15.3%{transform:translateX(-800px)}15.3%{transform:translateX(-880px)}25.9%{transform:translateX(-960px)}25.9%{transform:translateX(-1040px)}25.9%{transform:translateX(-1120px)}25.9%{transform:translateX(-1200px)}25.9%{transform:translateX(-1280px)}25.9%{transform:translateX(-1360px)}25.9%{transform:translateX(-1440px)}25.9%{transform:translateX(-1520px)}36.5%{transform:translateX(-1600px)}36.5%{transform:translateX(-1680px)}36.5%{transform:translateX(-1760px)}36.5%{transform:translateX(-1840px)}36.5%{transform:translateX(-1920px)}36.5%{transform:translateX(-2000px)}36.5%{transform:translateX(-2080px)}36.5%{transform:translateX(-2160px)}36.5%{transform:translateX(-2240px)}36.5%{transform:translateX(-2320px)}47.1%{transform:translateX(-2400px)}47.1%{transform:translateX(-2480px)}47.1%{transform:translateX(-2560px)}47.1%{transform:translateX(-2640px)}47.1%{transform:translateX(-2720px)}47.1%{transform:translateX(-2800px)}47.1%{transform:translateX(-2880px)}100%{transform:translateX(-2960px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Restartinganimation...
\ No newline at end of file
diff --git a/_examples/area/fullscreen/animation.svg b/_examples/area/fullscreen/animation.svg
index 097c35ee5..64fe6a3ca 100644
--- a/_examples/area/fullscreen/animation.svg
+++ b/_examples/area/fullscreen/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.239312s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}2.5%{transform:translateX(-80px)}3.2%{transform:translateX(-160px)}13.3%{transform:translateX(-240px)}13.3%{transform:translateX(-320px)}13.4%{transform:translateX(-400px)}13.4%{transform:translateX(-480px)}13.4%{transform:translateX(-560px)}13.4%{transform:translateX(-640px)}13.4%{transform:translateX(-720px)}13.4%{transform:translateX(-800px)}13.4%{transform:translateX(-880px)}13.4%{transform:translateX(-960px)}13.4%{transform:translateX(-1040px)}24.2%{transform:translateX(-1120px)}24.2%{transform:translateX(-1200px)}24.2%{transform:translateX(-1280px)}24.2%{transform:translateX(-1360px)}24.2%{transform:translateX(-1440px)}24.2%{transform:translateX(-1520px)}24.2%{transform:translateX(-1600px)}24.2%{transform:translateX(-1680px)}24.2%{transform:translateX(-1760px)}24.2%{transform:translateX(-1840px)}24.2%{transform:translateX(-1920px)}24.2%{transform:translateX(-2000px)}24.2%{transform:translateX(-2080px)}35%{transform:translateX(-2160px)}35%{transform:translateX(-2240px)}35%{transform:translateX(-2320px)}35%{transform:translateX(-2400px)}35%{transform:translateX(-2480px)}35%{transform:translateX(-2560px)}45.9%{transform:translateX(-2640px)}45.9%{transform:translateX(-2720px)}45.9%{transform:translateX(-2800px)}45.9%{transform:translateX(-2880px)}45.9%{transform:translateX(-2960px)}45.9%{transform:translateX(-3040px)}45.9%{transform:translateX(-3120px)}100%{transform:translateX(-3200px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:9.233347s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}2.5%{transform:translateX(-80px)}3.4%{transform:translateX(-160px)}13.3%{transform:translateX(-240px)}13.3%{transform:translateX(-320px)}13.3%{transform:translateX(-400px)}13.3%{transform:translateX(-480px)}13.3%{transform:translateX(-560px)}13.3%{transform:translateX(-640px)}13.3%{transform:translateX(-720px)}13.3%{transform:translateX(-800px)}13.3%{transform:translateX(-880px)}13.3%{transform:translateX(-960px)}13.3%{transform:translateX(-1040px)}13.3%{transform:translateX(-1120px)}13.3%{transform:translateX(-1200px)}24.1%{transform:translateX(-1280px)}24.2%{transform:translateX(-1360px)}24.2%{transform:translateX(-1440px)}24.2%{transform:translateX(-1520px)}24.2%{transform:translateX(-1600px)}24.2%{transform:translateX(-1680px)}24.2%{transform:translateX(-1760px)}24.2%{transform:translateX(-1840px)}24.2%{transform:translateX(-1920px)}24.2%{transform:translateX(-2000px)}24.2%{transform:translateX(-2080px)}24.2%{transform:translateX(-2160px)}24.2%{transform:translateX(-2240px)}24.2%{transform:translateX(-2320px)}24.2%{transform:translateX(-2400px)}24.2%{transform:translateX(-2480px)}24.2%{transform:translateX(-2560px)}35%{transform:translateX(-2640px)}35%{transform:translateX(-2720px)}45.8%{transform:translateX(-2800px)}45.8%{transform:translateX(-2880px)}45.8%{transform:translateX(-2960px)}45.8%{transform:translateX(-3040px)}45.8%{transform:translateX(-3120px)}45.8%{transform:translateX(-3200px)}100%{transform:translateX(-3280px)}}Currentcount:0Areascanupdatetheircontentdynamically!Currentcount:1Currentcount:2Currentcount:3Currentcount:4Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/README.md b/_examples/barchart/README.md
index c6d4c36a3..4e4497e06 100644
--- a/_examples/barchart/README.md
+++ b/_examples/barchart/README.md
@@ -1,3 +1,44 @@
+### barchart/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Define the bars for the chart
+ bars := []pterm.Bar{
+ {Label: "Bar 1", Value: 5},
+ {Label: "Bar 2", Value: 3},
+ {Label: "Longer Label", Value: 7},
+ }
+
+ // Print an informational message
+ pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
+
+ // Create a bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithBars(bars).Render()
+
+ // Create a horizontal bar chart with the defined bars and render it
+ // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
+ // The Render function is then called to display the chart
+ pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
+}
+
+```
+
+
+
### barchart/custom-height
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/custom-height/animation.svg)
@@ -112,47 +153,6 @@ func main() {
-### barchart/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the bars for the chart
- bars := []pterm.Bar{
- {Label: "Bar 1", Value: 5},
- {Label: "Bar 2", Value: 3},
- {Label: "Longer Label", Value: 7},
- }
-
- // Print an informational message
- pterm.Info.Println("Chart example with positive only values (bars use 100% of chart area)")
-
- // Create a bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithBars(bars).Render()
-
- // Create a horizontal bar chart with the defined bars and render it
- // The DefaultBarChart is used as a base, the chart is made horizontal with the WithHorizontal option, and the bars are added with the WithBars option
- // The Render function is then called to display the chart
- pterm.DefaultBarChart.WithHorizontal().WithBars(bars).Render()
-}
-
-```
-
-
-
### barchart/horizontal
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/barchart/horizontal/animation.svg)
diff --git a/_examples/barchart/custom-height/animation.svg b/_examples/barchart/custom-height/animation.svg
index 9a152f5fb..5eb41a8df 100644
--- a/_examples/barchart/custom-height/animation.svg
+++ b/_examples/barchart/custom-height/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:5.261057s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}3.8%{transform:translateX(-80px)}5%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:5.208346s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}2.8%{transform:translateX(-80px)}4%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/custom-width/animation.svg b/_examples/barchart/custom-width/animation.svg
index ffa45da89..1297d3b17 100644
--- a/_examples/barchart/custom-width/animation.svg
+++ b/_examples/barchart/custom-width/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:transparent}.j{animation-duration:5.376313s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}5.8%{transform:translateX(-80px)}7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}A█B██C███D████E█████F████G███H██I█Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:transparent}.j{animation-duration:5.222801s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}2.9%{transform:translateX(-80px)}4.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}A█B██C███D████E█████F████G███H██I█Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/default/animation.svg b/_examples/barchart/default/animation.svg
index c35d44514..4c50f51f2 100644
--- a/_examples/barchart/default/animation.svg
+++ b/_examples/barchart/default/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:5.429244s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}5.8%{transform:translateX(-80px)}7.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:transparent}.j{animation-duration:5.609764s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}9.6%{transform:translateX(-80px)}10.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/demo/animation.svg b/_examples/barchart/demo/animation.svg
index 5d6752394..711fd625e 100644
--- a/_examples/barchart/demo/animation.svg
+++ b/_examples/barchart/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:transparent}.l{animation-duration:5.60441s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}.m{fill:rgb(160,160,160);white-space:pre}@keyframes k{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}6.8%{transform:translateX(-160px)}7.4%{transform:translateX(-240px)}9.6%{transform:translateX(-320px)}10.6%{transform:translateX(-400px)}10.8%{transform:translateX(-480px)}10.8%{transform:translateX(-560px)}10.8%{transform:translateX(-640px)}10.8%{transform:translateX(-720px)}10.8%{transform:translateX(-800px)}10.8%{transform:translateX(-880px)}10.8%{transform:translateX(-960px)}100%{transform:translateX(-1040px)}} INFO Chartexamplewithpositiveonlyvalues(barsuse100%ofchartarea)████████████Bar1Bar2LongerLabelBar1█████████████████████████████████████Bar2██████████████████████LongerLabel█████████████████████████████████████████████████████LongerLabel██████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:transparent}.l{animation-duration:5.5081620000000004s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}.m{fill:rgb(160,160,160);white-space:pre}@keyframes k{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}8%{transform:translateX(-160px)}8%{transform:translateX(-240px)}8%{transform:translateX(-320px)}8%{transform:translateX(-400px)}8%{transform:translateX(-480px)}8%{transform:translateX(-560px)}8%{transform:translateX(-640px)}8%{transform:translateX(-720px)}8%{transform:translateX(-800px)}8%{transform:translateX(-880px)}8%{transform:translateX(-960px)}8%{transform:translateX(-1040px)}8%{transform:translateX(-1120px)}8%{transform:translateX(-1200px)}8%{transform:translateX(-1280px)}8%{transform:translateX(-1360px)}8%{transform:translateX(-1440px)}8%{transform:translateX(-1520px)}8%{transform:translateX(-1600px)}8%{transform:translateX(-1680px)}8%{transform:translateX(-1760px)}8%{transform:translateX(-1840px)}8%{transform:translateX(-1920px)}8%{transform:translateX(-2000px)}8.1%{transform:translateX(-2080px)}8.1%{transform:translateX(-2160px)}8.1%{transform:translateX(-2240px)}8.1%{transform:translateX(-2320px)}8.1%{transform:translateX(-2400px)}8.1%{transform:translateX(-2480px)}8.1%{transform:translateX(-2560px)}8.1%{transform:translateX(-2640px)}8.1%{transform:translateX(-2720px)}8.1%{transform:translateX(-2800px)}8.1%{transform:translateX(-2880px)}8.1%{transform:translateX(-2960px)}8.1%{transform:translateX(-3040px)}8.1%{transform:translateX(-3120px)}9.2%{transform:translateX(-3200px)}9.2%{transform:translateX(-3280px)}9.2%{transform:translateX(-3360px)}9.2%{transform:translateX(-3440px)}9.2%{transform:translateX(-3520px)}9.2%{transform:translateX(-3600px)}9.2%{transform:translateX(-3680px)}9.2%{transform:translateX(-3760px)}9.2%{transform:translateX(-3840px)}100%{transform:translateX(-3920px)}} INFO Chartexamplewithpositiveonlyvalues(barsuse100%ofchartarea)████████████Bar1Bar2LongerLabelBar1█████████████████████████████████████Bar2██████████████████████LongerLabel█████████████████████████████████████████████████████LongerLabel██████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/horizontal-show-value/animation.svg b/_examples/barchart/horizontal-show-value/animation.svg
index 56b384fc8..3138a83d9 100644
--- a/_examples/barchart/horizontal-show-value/animation.svg
+++ b/_examples/barchart/horizontal-show-value/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.3415420000000005s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}6.1%{transform:translateX(-80px)}6.4%{transform:translateX(-160px)}6.4%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}A██████████10B█████████████████████20C███████████████████████████████30D██████████████████████████████████████████40E████████████████████████████████████████████████████50F██████████████████████████████████████████40G███████████████████████████████30H█████████████████████20I██████████10F██████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.388275s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}6.6%{transform:translateX(-80px)}7.2%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}A██████████10B█████████████████████20C███████████████████████████████30D██████████████████████████████████████████40E████████████████████████████████████████████████████50F██████████████████████████████████████████40G███████████████████████████████30H█████████████████████20I██████████10F██████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/horizontal/animation.svg b/_examples/barchart/horizontal/animation.svg
index be2d3dcfc..788658913 100644
--- a/_examples/barchart/horizontal/animation.svg
+++ b/_examples/barchart/horizontal/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:transparent}.j{animation-duration:5.654095s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}10.5%{transform:translateX(-80px)}11.6%{transform:translateX(-160px)}11.6%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}A██████████B█████████████████████C███████████████████████████████D██████████████████████████████████████████E████████████████████████████████████████████████████F██████████████████████████████████████████G███████████████████████████████H█████████████████████I██████████F███████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:transparent}.j{animation-duration:5.600891s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}9.6%{transform:translateX(-80px)}10.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}A██████████B█████████████████████C███████████████████████████████D██████████████████████████████████████████E████████████████████████████████████████████████████F██████████████████████████████████████████G███████████████████████████████H█████████████████████I██████████F████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/mixed-values/animation.svg b/_examples/barchart/mixed-values/animation.svg
index ae400a089..f9eb2691a 100644
--- a/_examples/barchart/mixed-values/animation.svg
+++ b/_examples/barchart/mixed-values/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.h{fill:rgb(0,198,255);white-space:pre}.i{fill:rgb(126,231,233);white-space:pre}.j{fill:transparent}.l{animation-duration:5.633207s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}7.7%{transform:translateX(-80px)}8.1%{transform:translateX(-160px)}9.2%{transform:translateX(-240px)}9.8%{transform:translateX(-320px)}9.9%{transform:translateX(-400px)}9.9%{transform:translateX(-480px)}9.9%{transform:translateX(-560px)}9.9%{transform:translateX(-640px)}9.9%{transform:translateX(-720px)}9.9%{transform:translateX(-800px)}9.9%{transform:translateX(-880px)}9.9%{transform:translateX(-960px)}9.9%{transform:translateX(-1040px)}9.9%{transform:translateX(-1120px)}9.9%{transform:translateX(-1200px)}9.9%{transform:translateX(-1280px)}9.9%{transform:translateX(-1360px)}9.9%{transform:translateX(-1440px)}9.9%{transform:translateX(-1520px)}9.9%{transform:translateX(-1600px)}9.9%{transform:translateX(-1680px)}9.9%{transform:translateX(-1760px)}9.9%{transform:translateX(-1840px)}9.9%{transform:translateX(-1920px)}9.9%{transform:translateX(-2000px)}9.9%{transform:translateX(-2080px)}9.9%{transform:translateX(-2160px)}9.9%{transform:translateX(-2240px)}10%{transform:translateX(-2320px)}10%{transform:translateX(-2400px)}10%{transform:translateX(-2480px)}10.2%{transform:translateX(-2560px)}10.2%{transform:translateX(-2640px)}10.3%{transform:translateX(-2720px)}11.1%{transform:translateX(-2800px)}11.1%{transform:translateX(-2880px)}11.1%{transform:translateX(-2960px)}11.1%{transform:translateX(-3040px)}11.1%{transform:translateX(-3120px)}11.2%{transform:translateX(-3200px)}11.2%{transform:translateX(-3280px)}11.2%{transform:translateX(-3360px)}11.2%{transform:translateX(-3440px)}11.2%{transform:translateX(-3520px)}11.2%{transform:translateX(-3600px)}11.2%{transform:translateX(-3680px)}100%{transform:translateX(-3760px)}}#Chartexamplewithmixedvalues(notescreenspaceusageincasewhenABSOLUTEvaluesofnegativeandpositivepartsarediffertoomuch)257██████████████████-3-2Bar1Bar2Bar3Bar4LongerLabelBar1███████2Bar2███████████-3Bar3███████-2Bar4██████████████████5LongerLabel██████████████████████████7Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.h{fill:rgb(0,198,255);white-space:pre}.i{fill:rgb(126,231,233);white-space:pre}.j{fill:transparent}.l{animation-duration:5.401867s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}4.7%{transform:translateX(-80px)}7.2%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}7.2%{transform:translateX(-320px)}7.2%{transform:translateX(-400px)}7.2%{transform:translateX(-480px)}7.2%{transform:translateX(-560px)}7.2%{transform:translateX(-640px)}7.2%{transform:translateX(-720px)}7.2%{transform:translateX(-800px)}7.2%{transform:translateX(-880px)}7.3%{transform:translateX(-960px)}7.3%{transform:translateX(-1040px)}7.3%{transform:translateX(-1120px)}7.3%{transform:translateX(-1200px)}7.3%{transform:translateX(-1280px)}7.4%{transform:translateX(-1360px)}100%{transform:translateX(-1440px)}}#Chartexamplewithmixedvalues(notescreenspaceusageincasewhenABSOLUTEvaluesofnegativeandpositivepartsarediffertoomuch)257██████████████████-3-2Bar1Bar2Bar3Bar4LongerLabelBar1███████2Bar2███████████-3Bar3███████-2Bar4██████████████████5LongerLabel██████████████████████████7Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/negative-values/animation.svg b/_examples/barchart/negative-values/animation.svg
index 0b3de83ff..b19cbcd47 100644
--- a/_examples/barchart/negative-values/animation.svg
+++ b/_examples/barchart/negative-values/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(160,160,160);white-space:pre}.k{fill:transparent}.m{animation-duration:5.577597s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}3.2%{transform:translateX(-80px)}4.7%{transform:translateX(-160px)}6.3%{transform:translateX(-240px)}8.5%{transform:translateX(-320px)}8.5%{transform:translateX(-400px)}8.5%{transform:translateX(-480px)}8.5%{transform:translateX(-560px)}8.5%{transform:translateX(-640px)}8.5%{transform:translateX(-720px)}8.5%{transform:translateX(-800px)}8.5%{transform:translateX(-880px)}8.5%{transform:translateX(-960px)}8.5%{transform:translateX(-1040px)}8.5%{transform:translateX(-1120px)}8.5%{transform:translateX(-1200px)}8.5%{transform:translateX(-1280px)}8.5%{transform:translateX(-1360px)}8.5%{transform:translateX(-1440px)}8.5%{transform:translateX(-1520px)}8.5%{transform:translateX(-1600px)}8.6%{transform:translateX(-1680px)}8.6%{transform:translateX(-1760px)}8.6%{transform:translateX(-1840px)}8.6%{transform:translateX(-1920px)}8.6%{transform:translateX(-2000px)}8.6%{transform:translateX(-2080px)}8.6%{transform:translateX(-2160px)}8.6%{transform:translateX(-2240px)}8.6%{transform:translateX(-2320px)}8.6%{transform:translateX(-2400px)}8.6%{transform:translateX(-2480px)}8.6%{transform:translateX(-2560px)}8.6%{transform:translateX(-2640px)}8.6%{transform:translateX(-2720px)}8.6%{transform:translateX(-2800px)}8.7%{transform:translateX(-2880px)}8.7%{transform:translateX(-2960px)}8.7%{transform:translateX(-3040px)}8.7%{transform:translateX(-3120px)}8.7%{transform:translateX(-3200px)}8.7%{transform:translateX(-3280px)}8.7%{transform:translateX(-3360px)}9.9%{transform:translateX(-3440px)}9.9%{transform:translateX(-3520px)}9.9%{transform:translateX(-3600px)}9.9%{transform:translateX(-3680px)}9.9%{transform:translateX(-3760px)}10.2%{transform:translateX(-3840px)}10.2%{transform:translateX(-3920px)}10.3%{transform:translateX(-4000px)}10.4%{transform:translateX(-4080px)}100%{transform:translateX(-4160px)}} INFO Chartexamplewithnegativeonlyvalues(barsuse100%ofchartarea)████████████-5-3-7Bar1Bar2LongerLabelBar1█████████████████████████████████████-5Bar2██████████████████████-3LongerLabel█████████████████████████████████████████████████████-7LongerLabel██████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(160,160,160);white-space:pre}.k{fill:transparent}.m{animation-duration:5.461949s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}6.2%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}7.2%{transform:translateX(-320px)}7.2%{transform:translateX(-400px)}7.2%{transform:translateX(-480px)}7.2%{transform:translateX(-560px)}7.3%{transform:translateX(-640px)}8.5%{transform:translateX(-720px)}8.5%{transform:translateX(-800px)}8.5%{transform:translateX(-880px)}100%{transform:translateX(-960px)}} INFO Chartexamplewithnegativeonlyvalues(barsuse100%ofchartarea)████████████-5-3-7Bar1Bar2LongerLabelBar1█████████████████████████████████████-5Bar2██████████████████████-3LongerLabel█████████████████████████████████████████████████████-7LongerLabel██████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/barchart/show-value/animation.svg b/_examples/barchart/show-value/animation.svg
index ae0f006a3..cd434bc66 100644
--- a/_examples/barchart/show-value/animation.svg
+++ b/_examples/barchart/show-value/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:transparent}.k{animation-duration:5.445785s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}6.5%{transform:translateX(-80px)}8.2%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}102030405040302010██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:transparent}.k{animation-duration:5.564478s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}9.2%{transform:translateX(-80px)}10.1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}102030405040302010██████████████████████████████████████████████████ABCDEFGHIRestartinganimation...
\ No newline at end of file
diff --git a/_examples/basictext/demo/animation.svg b/_examples/basictext/demo/animation.svg
index b69d49d33..d05039c4e 100644
--- a/_examples/basictext/demo/animation.svg
+++ b/_examples/basictext/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:transparent}.j{animation-duration:5.217931s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}4.2%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Defaultbasictextprinter.CanbeusedinanyTextPrintercontext.Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:transparent}.j{animation-duration:5.33536s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}6.3%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Defaultbasictextprinter.CanbeusedinanyTextPrintercontext.Restartinganimation...
\ No newline at end of file
diff --git a/_examples/bigtext/README.md b/_examples/bigtext/README.md
index 88cb2afe1..d739ca642 100644
--- a/_examples/bigtext/README.md
+++ b/_examples/bigtext/README.md
@@ -1,6 +1,6 @@
-### bigtext/colored
+### bigtext/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
@@ -15,21 +15,33 @@ import (
)
func main() {
- // Initialize a big text display with the letters "P" and "Term"
- // "P" is displayed in cyan and "Term" is displayed in light magenta
+ // Create a large text with the LetterStyle from the standard theme.
+ // This is useful for creating title screens.
+ pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+
+ // Create a large text with differently colored letters.
+ // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
+ // This can be used to highlight specific parts of the text.
pterm.DefaultBigText.WithLetters(
putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
- Render() // Render the big text to the terminal
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
+ ).Render()
+
+ // Create a large text with a specific RGB color.
+ // This can be used when you need a specific color that is not available in the standard colors.
+ // Here, the color is gold (RGB: 255, 215, 0).
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
+ ).Render()
}
```
-### bigtext/default
+### bigtext/colored
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/colored/animation.svg)
@@ -44,23 +56,21 @@ import (
)
func main() {
- // Define the text to be rendered
- var text = "PTerm"
-
- // Convert the text into a format suitable for PTerm
- var letters = putils.LettersFromString(text)
-
- // Render the text using PTerm's default big text style
- pterm.DefaultBigText.WithLetters(letters).Render()
+ // Initialize a big text display with the letters "P" and "Term"
+ // "P" is displayed in cyan and "Term" is displayed in light magenta
+ pterm.DefaultBigText.WithLetters(
+ putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
+ putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle())).
+ Render() // Render the big text to the terminal
}
```
-### bigtext/demo
+### bigtext/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bigtext/default/animation.svg)
@@ -75,24 +85,14 @@ import (
)
func main() {
- // Create a large text with the LetterStyle from the standard theme.
- // This is useful for creating title screens.
- pterm.DefaultBigText.WithLetters(putils.LettersFromString("PTerm")).Render()
+ // Define the text to be rendered
+ var text = "PTerm"
- // Create a large text with differently colored letters.
- // Here, the first letter 'P' is colored cyan and the rest 'Term' is colored light magenta.
- // This can be used to highlight specific parts of the text.
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithStyle("P", pterm.FgCyan.ToStyle()),
- putils.LettersFromStringWithStyle("Term", pterm.FgLightMagenta.ToStyle()),
- ).Render()
+ // Convert the text into a format suitable for PTerm
+ var letters = putils.LettersFromString(text)
- // Create a large text with a specific RGB color.
- // This can be used when you need a specific color that is not available in the standard colors.
- // Here, the color is gold (RGB: 255, 215, 0).
- pterm.DefaultBigText.WithLetters(
- putils.LettersFromStringWithRGB("PTerm", pterm.NewRGB(255, 215, 0)),
- ).Render()
+ // Render the text using PTerm's default big text style
+ pterm.DefaultBigText.WithLetters(letters).Render()
}
```
diff --git a/_examples/bigtext/colored/animation.svg b/_examples/bigtext/colored/animation.svg
index 536b93b18..daaa6bda1 100644
--- a/_examples/bigtext/colored/animation.svg
+++ b/_examples/bigtext/colored/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:transparent}.j{animation-duration:5.00764s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}0.2%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,198,255);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:transparent}.j{animation-duration:5.026351s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}.k{fill:rgb(160,160,160);white-space:pre}@keyframes i{0%{transform:translateX(-0px)}0.5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/bigtext/default/animation.svg b/_examples/bigtext/default/animation.svg
index 01a295879..0b66d42a7 100644
--- a/_examples/bigtext/default/animation.svg
+++ b/_examples/bigtext/default/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.044811s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}0.9%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.024457s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}0.5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/bigtext/demo/animation.svg b/_examples/bigtext/demo/animation.svg
index ef40eb9ac..293f9114a 100644
--- a/_examples/bigtext/demo/animation.svg
+++ b/_examples/bigtext/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,215,0);white-space:pre}.j{fill:transparent}.l{animation-duration:5.008825s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}0.1%{transform:translateX(-80px)}0.2%{transform:translateX(-160px)}0.2%{transform:translateX(-240px)}0.2%{transform:translateX(-320px)}0.2%{transform:translateX(-400px)}100%{transform:translateX(-480px)}}█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(0,198,255);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,215,0);white-space:pre}.j{fill:transparent}.l{animation-duration:5.036238s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}0.4%{transform:translateX(-80px)}0.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████Restartinganimation...
\ No newline at end of file
diff --git a/_examples/box/README.md b/_examples/box/README.md
index ccb44ca47..d9a5dff1b 100644
--- a/_examples/box/README.md
+++ b/_examples/box/README.md
@@ -1,6 +1,6 @@
-### box/custom-padding
+### box/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
@@ -12,17 +12,35 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with custom padding options and print "Hello, World!" inside it.
- pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
+ // Print an informational message.
+ pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
+
+ // Create three panels with text, some of them with titles.
+ // The panels are created using the DefaultBox style.
+ panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
+ panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
+ panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
+
+ // Combine the panels into a layout using the DefaultPanel style.
+ // The layout is a 2D grid, with each row being an array of panels.
+ // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
+ panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
+ {{Data: panel1}, {Data: panel2}},
+ {{Data: panel3}},
+ }).Srender()
+
+ // Print the panels layout inside a box with a title.
+ // The box is created using the DefaultBox style, with the title positioned at the bottom right.
+ pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
}
```
-### box/default
+### box/custom-padding
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/custom-padding/animation.svg)
@@ -34,18 +52,17 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Create a default box with PTerm and print a message in it.
- // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
- pterm.DefaultBox.Println("Hello, World!")
+ // Create a default box with custom padding options and print "Hello, World!" inside it.
+ pterm.DefaultBox.WithRightPadding(10).WithLeftPadding(10).WithTopPadding(2).WithBottomPadding(2).Println("Hello, World!")
}
```
-### box/demo
+### box/default
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/box/default/animation.svg)
@@ -57,26 +74,9 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Print an informational message.
- pterm.Info.Println("This might not be rendered correctly on GitHub,\nbut it will work in a real terminal.\nThis is because GitHub does not use a monospaced font by default for SVGs")
-
- // Create three panels with text, some of them with titles.
- // The panels are created using the DefaultBox style.
- panel1 := pterm.DefaultBox.Sprint("Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit,\nsed do eiusmod tempor incididunt\nut labore et dolore\nmagna aliqua.")
- panel2 := pterm.DefaultBox.WithTitle("title").Sprint("Ut enim ad minim veniam,\nquis nostrud exercitation\nullamco laboris\nnisi ut aliquip\nex ea commodo\nconsequat.")
- panel3 := pterm.DefaultBox.WithTitle("bottom center title").WithTitleBottomCenter().Sprint("Duis aute irure\ndolor in reprehenderit\nin voluptate velit esse cillum\ndolore eu fugiat\nnulla pariatur.")
-
- // Combine the panels into a layout using the DefaultPanel style.
- // The layout is a 2D grid, with each row being an array of panels.
- // In this case, the first row contains panel1 and panel2, and the second row contains only panel3.
- panels, _ := pterm.DefaultPanel.WithPanels(pterm.Panels{
- {{Data: panel1}, {Data: panel2}},
- {{Data: panel3}},
- }).Srender()
-
- // Print the panels layout inside a box with a title.
- // The box is created using the DefaultBox style, with the title positioned at the bottom right.
- pterm.DefaultBox.WithTitle("Lorem Ipsum").WithTitleBottomRight().WithRightPadding(0).WithBottomPadding(0).Println(panels)
+ // Create a default box with PTerm and print a message in it.
+ // The DefaultBox.Println method automatically starts, prints the message, and stops the box.
+ pterm.DefaultBox.Println("Hello, World!")
}
```
diff --git a/_examples/box/custom-padding/animation.svg b/_examples/box/custom-padding/animation.svg
index fedcdda98..1c990a229 100644
--- a/_examples/box/custom-padding/animation.svg
+++ b/_examples/box/custom-padding/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.1802s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}3.5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}┌─────────────────────────────────┐|||Hello,World!|└─────────────────────────────────┘Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.558754s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}8.9%{transform:translateX(-80px)}10.1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}┌─────────────────────────────────┐|||Hello,World!|└─────────────────────────────────┘Restartinganimation...
\ No newline at end of file
diff --git a/_examples/box/default/animation.svg b/_examples/box/default/animation.svg
index 8f7f156ee..44d4f74a3 100644
--- a/_examples/box/default/animation.svg
+++ b/_examples/box/default/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.256742s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}3.8%{transform:translateX(-80px)}4.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}┌───────────────┐|Hello,World!|└───────────────┘Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.319768s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}┌───────────────┐|Hello,World!|└───────────────┘Restartinganimation...
\ No newline at end of file
diff --git a/_examples/box/demo/animation.svg b/_examples/box/demo/animation.svg
index 092cf1ee4..e91b745df 100644
--- a/_examples/box/demo/animation.svg
+++ b/_examples/box/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:5.553097s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}5%{transform:translateX(-80px)}9%{transform:translateX(-160px)}9%{transform:translateX(-240px)}10%{transform:translateX(-320px)}10%{transform:translateX(-400px)}100%{transform:translateX(-480px)}} INFO ThismightnotberenderedcorrectlyonGitHub,butitwillworkinarealterminal.ThisisbecauseGitHubdoesnotuseamonospacedfontbydefaultforSVGs┌────────────────────────────────────────────────────────────────────┐|┌──────────────────────────────────┐┌─title───────────────────┐|||Loremipsumdolorsitamet,||Utenimadminimveniam,||||consecteturadipiscingelit,||quisnostrudexercitation||||seddoeiusmodtemporincididunt||ullamcolaboris||||utlaboreetdolore||nisiutaliquip||||magnaaliqua.||exeacommodo|||└──────────────────────────────────┘|consequat.|||└───────────────────────────┘||┌────────────────────────────────┐|||Duisauteirure||||dolorinreprehenderit||||involuptatevelitessecillum||||doloreeufugiat||||nullapariatur.|||└─────bottomcentertitle──────┘|||└──────────────────────────────────────────────────────LoremIpsum─┘||||involuptatevelitessecillum|Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:5.521239s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}5.7%{transform:translateX(-80px)}7.2%{transform:translateX(-160px)}9.3%{transform:translateX(-240px)}9.3%{transform:translateX(-320px)}9.3%{transform:translateX(-400px)}9.3%{transform:translateX(-480px)}9.3%{transform:translateX(-560px)}9.3%{transform:translateX(-640px)}9.3%{transform:translateX(-720px)}9.3%{transform:translateX(-800px)}9.4%{transform:translateX(-880px)}9.4%{transform:translateX(-960px)}9.4%{transform:translateX(-1040px)}9.4%{transform:translateX(-1120px)}9.4%{transform:translateX(-1200px)}9.4%{transform:translateX(-1280px)}9.4%{transform:translateX(-1360px)}9.4%{transform:translateX(-1440px)}9.4%{transform:translateX(-1520px)}9.4%{transform:translateX(-1600px)}9.4%{transform:translateX(-1680px)}9.4%{transform:translateX(-1760px)}9.4%{transform:translateX(-1840px)}9.4%{transform:translateX(-1920px)}9.4%{transform:translateX(-2000px)}9.4%{transform:translateX(-2080px)}9.4%{transform:translateX(-2160px)}9.4%{transform:translateX(-2240px)}9.4%{transform:translateX(-2320px)}9.4%{transform:translateX(-2400px)}9.4%{transform:translateX(-2480px)}9.4%{transform:translateX(-2560px)}9.4%{transform:translateX(-2640px)}9.4%{transform:translateX(-2720px)}9.4%{transform:translateX(-2800px)}9.4%{transform:translateX(-2880px)}9.4%{transform:translateX(-2960px)}9.4%{transform:translateX(-3040px)}9.4%{transform:translateX(-3120px)}9.4%{transform:translateX(-3200px)}9.4%{transform:translateX(-3280px)}9.4%{transform:translateX(-3360px)}9.4%{transform:translateX(-3440px)}100%{transform:translateX(-3520px)}} INFO ThismightnotberenderedcorrectlyonGitHub,butitwillworkinarealterminal.ThisisbecauseGitHubdoesnotuseamonospacedfontbydefaultforSVGs┌────────────────────────────────────────────────────────────────────┐|┌──────────────────────────────────┐┌─title───────────────────┐|||Loremipsumdolorsitamet,||Utenimadminimveniam,||||consecteturadipiscingelit,||quisnostrudexercitation||||seddoeiusmodtemporincididunt||ullamcolaboris||||utlaboreetdolore||nisiutaliquip||||magnaaliqua.||exeacommodo|||└──────────────────────────────────┘|consequat.|||└───────────────────────────┘||┌────────────────────────────────┐|||Duisauteirure||||dolorinreprehenderit||||involuptatevelitessecillum||||doloreeufugiat||||nullapariatur.|||└─────bottomcentertitle──────┘|||└──────────────────────────────────────────────────────LoremIpsum─┘|┌─────────────────|||└──────────────────────────────────|┌──────────────────────────|Restartinganimation...
\ No newline at end of file
diff --git a/_examples/box/title/animation.svg b/_examples/box/title/animation.svg
index 8f3e741f9..a3e5581e6 100644
--- a/_examples/box/title/animation.svg
+++ b/_examples/box/title/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(243,86,86);white-space:pre}.h{fill:transparent}.j{animation-duration:5.259367s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}4.6%{transform:translateX(-80px)}4.9%{transform:translateX(-160px)}4.9%{transform:translateX(-240px)}4.9%{transform:translateX(-320px)}4.9%{transform:translateX(-400px)}4.9%{transform:translateX(-480px)}100%{transform:translateX(-560px)}}┌─I'mabox!────────┐┌────I'mabox!─────┐┌────────I'mabox!─┐|||||||Hello,World!||Hello,World!||Hello,World!||1||2||3|└─────────────────────┘└─────────────────────┘└─────────────────────┘┌─────────────────────┐┌─────────────────────┐┌─────────────────────┐|4||5||6|└────────I'mabox!─┘└────I'mabox!─────┘└─I'mabox!────────┘┌─I'mabox!────────┐|||Hello,World!||7|└─────────────────────┘Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(243,86,86);white-space:pre}.h{fill:transparent}.j{animation-duration:5.388229s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}7.2%{transform:translateX(-160px)}7.2%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}┌─I'mabox!────────┐┌────I'mabox!─────┐┌────────I'mabox!─┐|||||||Hello,World!||Hello,World!||Hello,World!||1||2||3|└─────────────────────┘└─────────────────────┘└─────────────────────┘┌─────────────────────┐┌─────────────────────┐┌─────────────────────┐|4||5||6|└────────I'mabox!─┘└────I'mabox!─────┘└─I'mabox!────────┘┌─I'mabox!────────┐|||Hello,World!||7|└─────────────────────┘|||Restartinganimation...
\ No newline at end of file
diff --git a/_examples/bulletlist/README.md b/_examples/bulletlist/README.md
index 4ad1113b6..ab6488fc0 100644
--- a/_examples/bulletlist/README.md
+++ b/_examples/bulletlist/README.md
@@ -1,6 +1,6 @@
-### bulletlist/customized
+### bulletlist/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
@@ -11,44 +11,37 @@ package main
import (
"github.com/pterm/pterm"
+ "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different styles and levels.
+ // Define a list of bullet list items with different levels.
bulletListItems := []pterm.BulletListItem{
- {
- Level: 0, // Level 0 (top level)
- Text: "Blue", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
- BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
- },
- {
- Level: 1, // Level 1 (sub-item)
- Text: "Green", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
- Bullet: "-", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
- },
- {
- Level: 2, // Level 2 (sub-sub-item)
- Text: "Cyan", // Text to display
- TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
- Bullet: ">", // Custom bullet symbol
- BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
- },
+ {Level: 0, Text: "Level 0"}, // Level 0 item
+ {Level: 1, Text: "Level 1"}, // Level 1 item
+ {Level: 2, Text: "Level 2"}, // Level 2 item
}
- // Create a bullet list with the defined items and render it.
+ // Use the default bullet list style to render the list items.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
+
+ // Define a string with different levels of indentation.
+ text := `0
+ 1
+ 2
+ 3`
+
+ // Convert the indented string to a bullet list and render it.
+ putils.BulletListFromString(text, " ").Render()
}
```
-### bulletlist/demo
+### bulletlist/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/bulletlist/customized/animation.svg)
@@ -59,28 +52,35 @@ package main
import (
"github.com/pterm/pterm"
- "github.com/pterm/pterm/putils"
)
func main() {
- // Define a list of bullet list items with different levels.
+ // Define a list of bullet list items with different styles and levels.
bulletListItems := []pterm.BulletListItem{
- {Level: 0, Text: "Level 0"}, // Level 0 item
- {Level: 1, Text: "Level 1"}, // Level 1 item
- {Level: 2, Text: "Level 2"}, // Level 2 item
+ {
+ Level: 0, // Level 0 (top level)
+ Text: "Blue", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgBlue), // Text color
+ BulletStyle: pterm.NewStyle(pterm.FgRed), // Bullet color
+ },
+ {
+ Level: 1, // Level 1 (sub-item)
+ Text: "Green", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgGreen), // Text color
+ Bullet: "-", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgLightWhite), // Bullet color
+ },
+ {
+ Level: 2, // Level 2 (sub-sub-item)
+ Text: "Cyan", // Text to display
+ TextStyle: pterm.NewStyle(pterm.FgCyan), // Text color
+ Bullet: ">", // Custom bullet symbol
+ BulletStyle: pterm.NewStyle(pterm.FgYellow), // Bullet color
+ },
}
- // Use the default bullet list style to render the list items.
+ // Create a bullet list with the defined items and render it.
pterm.DefaultBulletList.WithItems(bulletListItems).Render()
-
- // Define a string with different levels of indentation.
- text := `0
- 1
- 2
- 3`
-
- // Convert the indented string to a bullet list and render it.
- putils.BulletListFromString(text, " ").Render()
}
```
diff --git a/_examples/bulletlist/customized/animation.svg b/_examples/bulletlist/customized/animation.svg
index 3bbb878f2..585550c8b 100644
--- a/_examples/bulletlist/customized/animation.svg
+++ b/_examples/bulletlist/customized/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(255,0,4);white-space:pre}.g{fill:rgb(0,71,255);white-space:pre}.h{fill:rgb(255,255,255);white-space:pre}.i{fill:rgb(124,255,0);white-space:pre}.j{fill:rgb(255,241,0);white-space:pre}.k{fill:rgb(0,198,255);white-space:pre}.l{fill:transparent}.n{animation-duration:5.276908s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}•Blue-Green>CyanRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(255,0,4);white-space:pre}.g{fill:rgb(0,71,255);white-space:pre}.h{fill:rgb(255,255,255);white-space:pre}.i{fill:rgb(124,255,0);white-space:pre}.j{fill:rgb(255,241,0);white-space:pre}.k{fill:rgb(0,198,255);white-space:pre}.l{fill:transparent}.n{animation-duration:5.240141s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}3.8%{transform:translateX(-80px)}4.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}•Blue-Green>CyanRestartinganimation...
\ No newline at end of file
diff --git a/_examples/bulletlist/demo/animation.svg b/_examples/bulletlist/demo/animation.svg
index 8953b5a4f..ff5a13f76 100644
--- a/_examples/bulletlist/demo/animation.svg
+++ b/_examples/bulletlist/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:transparent}.j{animation-duration:5.03032s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}0.6%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}•Level0•Level1•Level2•0•1•2•3Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:transparent}.j{animation-duration:5.047994s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}0.7%{transform:translateX(-80px)}1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}•Level0•Level1•Level2•0•1•2•3Restartinganimation...
\ No newline at end of file
diff --git a/_examples/center/demo/animation.svg b/_examples/center/demo/animation.svg
index 2dc1c0b3f..764653bdc 100644
--- a/_examples/center/demo/animation.svg
+++ b/_examples/center/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.014326s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}0.2%{transform:translateX(-80px)}0.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Thistextiscentered!Itcentersthewholeblockbydefault.Inthatwayyoucandostufflikethis:███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Thistextiscentered!ButeachlineiscenteredseparatelyRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.032022s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}0.5%{transform:translateX(-80px)}0.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Thistextiscentered!Itcentersthewholeblockbydefault.Inthatwayyoucandostufflikethis:███████████████████████████████████████████████████████████████████████████████████████████████████████████████████Thistextiscentered!ButeachlineiscenteredseparatelyRestartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/demo/animation.svg b/_examples/coloring/demo/animation.svg
index 3091f7072..c1cd2b3ab 100644
--- a/_examples/coloring/demo/animation.svg
+++ b/_examples/coloring/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(255,0,4);white-space:pre}.i{fill:rgb(124,255,0);white-space:pre}.j{fill:rgb(255,241,0);white-space:pre}.k{fill:rgb(243,86,86);white-space:pre}.l{fill:rgb(127,253,127);white-space:pre}.m{fill:rgb(220,239,139);white-space:pre}.n{fill:rgb(160,160,160);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(168,204,140)}.q{fill:rgb(219,171,121)}.r{fill:rgb(0,71,255);white-space:pre}.s{fill:rgb(255,0,255);white-space:pre}.t{fill:rgb(0,198,255);white-space:pre}.u{fill:rgb(207,207,207);white-space:pre}.v{fill:rgb(152,161,254);white-space:pre}.w{fill:rgb(234,89,246);white-space:pre}.x{fill:rgb(126,231,233);white-space:pre}.y{fill:rgb(255,255,255);white-space:pre}.z{fill:rgb(113,190,242)}.A{fill:rgb(210,144,228)}.B{fill:rgb(102,194,205)}.C{fill:rgb(185,191,202)}.D{fill:rgb(115,190,243)}.E{fill:rgb(210,144,227)}.F{fill:rgb(255,255,255)}.G{fill:rgb(127,253,127);font-weight:bold;white-space:pre}.H{fill:transparent}.J{animation-duration:5.323588s;animation-iteration-count:infinite;animation-name:I;animation-timing-function:steps(1,end)}@keyframes I{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}5.9%{transform:translateX(-160px)}5.9%{transform:translateX(-240px)}5.9%{transform:translateX(-320px)}5.9%{transform:translateX(-400px)}5.9%{transform:translateX(-480px)}5.9%{transform:translateX(-560px)}5.9%{transform:translateX(-640px)}5.9%{transform:translateX(-720px)}5.9%{transform:translateX(-800px)}5.9%{transform:translateX(-880px)}5.9%{transform:translateX(-960px)}5.9%{transform:translateX(-1040px)}5.9%{transform:translateX(-1120px)}5.9%{transform:translateX(-1200px)}5.9%{transform:translateX(-1280px)}5.9%{transform:translateX(-1360px)}5.9%{transform:translateX(-1440px)}6%{transform:translateX(-1520px)}6.1%{transform:translateX(-1600px)}6.1%{transform:translateX(-1680px)}6.1%{transform:translateX(-1760px)}6.1%{transform:translateX(-1840px)}6.1%{transform:translateX(-1920px)}6.1%{transform:translateX(-2000px)}100%{transform:translateX(-2080px)}}Black|Red|Green|Yellow|LightRed|LightGreen|LightYellow0Black|Red|Green|Yellow|Light Red|Light Green|Light YellowBlue|Magenta|Cyan|WhiteLightBlue|LightMagenta|LightCyan|LightWhiteBlue|Magenta|Cyan|WhiteLight Blue|Light Magenta|Light Cyan|Light WhiteHello,World!Evennestedcolorsaresupported!This text uses a style and is bold and light green with a red background!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(255,0,4);white-space:pre}.i{fill:rgb(124,255,0);white-space:pre}.j{fill:rgb(255,241,0);white-space:pre}.k{fill:rgb(243,86,86);white-space:pre}.l{fill:rgb(127,253,127);white-space:pre}.m{fill:rgb(220,239,139);white-space:pre}.n{fill:rgb(160,160,160);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(168,204,140)}.q{fill:rgb(219,171,121)}.r{fill:rgb(0,71,255);white-space:pre}.s{fill:rgb(255,0,255);white-space:pre}.t{fill:rgb(0,198,255);white-space:pre}.u{fill:rgb(207,207,207);white-space:pre}.v{fill:rgb(152,161,254);white-space:pre}.w{fill:rgb(234,89,246);white-space:pre}.x{fill:rgb(126,231,233);white-space:pre}.y{fill:rgb(255,255,255);white-space:pre}.z{fill:rgb(113,190,242)}.A{fill:rgb(210,144,228)}.B{fill:rgb(102,194,205)}.C{fill:rgb(185,191,202)}.D{fill:rgb(115,190,243)}.E{fill:rgb(210,144,227)}.F{fill:rgb(255,255,255)}.G{fill:rgb(127,253,127);font-weight:bold;white-space:pre}.H{fill:transparent}.J{animation-duration:5.263684s;animation-iteration-count:infinite;animation-name:I;animation-timing-function:steps(1,end)}@keyframes I{0%{transform:translateX(-0px)}5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Black|Red|Green|Yellow|LightRed|LightGreen|LightYellow0Black|Red|Green|Yellow|Light Red|Light Green|Light YellowBlue|Magenta|Cyan|WhiteLightBlue|LightMagenta|LightCyan|LightWhiteBlue|Magenta|Cyan|WhiteLight Blue|Light Magenta|Light Cyan|Light WhiteHello,World!Evennestedcolorsaresupported!This text uses a style and is bold and light green with a red background!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/disable-output/animation.svg b/_examples/coloring/disable-output/animation.svg
index f42407983..3452ff715 100644
--- a/_examples/coloring/disable-output/animation.svg
+++ b/_examples/coloring/disable-output/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(102,194,205)}.h{white-space:pre}.i{fill:rgb(126,231,233);white-space:pre}.j{fill:transparent}.l{animation-duration:5.335243s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}6.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Printingsomething...[0/15]Printingsomething...[1/15]Printingsomething...[2/15]Printingsomething...[3/15]Printingsomething...[4/15] INFO DisabledOutput! INFO EnabledOutput!Printingsomething...[10/15]Printingsomething...[11/15]Printingsomething...[12/15]Printingsomething...[13/15]Printingsomething...[14/15]Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(102,194,205)}.h{white-space:pre}.i{fill:rgb(126,231,233);white-space:pre}.j{fill:transparent}.l{animation-duration:5.27736s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}3.8%{transform:translateX(-80px)}5.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Printingsomething...[0/15]Printingsomething...[1/15]Printingsomething...[2/15]Printingsomething...[3/15]Printingsomething...[4/15] INFO DisabledOutput! INFO EnabledOutput!Printingsomething...[10/15]Printingsomething...[11/15]Printingsomething...[12/15]Printingsomething...[13/15]Printingsomething...[14/15]Restartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/fade-colors-rgb-style/animation.svg b/_examples/coloring/fade-colors-rgb-style/animation.svg
index 7c5c7bfdf..e01e02853 100644
--- a/_examples/coloring/fade-colors-rgb-style/animation.svg
+++ b/_examples/coloring/fade-colors-rgb-style/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(128,128,128)}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(125,125,125)}.i{fill:rgb(255,250,255);white-space:pre}.j{fill:rgb(123,123,123)}.k{fill:rgb(255,246,255);white-space:pre}.l{fill:rgb(121,121,121)}.m{fill:rgb(255,241,255);white-space:pre}.n{fill:rgb(119,119,119)}.o{fill:rgb(255,237,255);white-space:pre}.p{fill:rgb(116,116,116)}.q{fill:rgb(255,233,255);white-space:pre}.r{fill:rgb(114,114,114)}.s{fill:rgb(255,228,255);white-space:pre}.t{fill:rgb(112,112,112)}.u{fill:rgb(255,224,255);white-space:pre}.v{fill:rgb(110,110,110)}.w{fill:rgb(255,219,255);white-space:pre}.x{fill:rgb(108,108,108)}.y{fill:rgb(255,215,255);white-space:pre}.z{fill:rgb(105,105,105)}.A{fill:rgb(255,211,255);white-space:pre}.B{fill:rgb(103,103,103)}.C{fill:rgb(255,206,255);white-space:pre}.D{fill:rgb(101,101,101)}.E{fill:rgb(255,202,255);white-space:pre}.F{fill:rgb(99,99,99)}.G{fill:rgb(255,197,255);white-space:pre}.H{fill:rgb(97,97,97)}.I{fill:rgb(255,193,255);white-space:pre}.J{fill:rgb(94,94,94)}.K{fill:rgb(255,189,255);white-space:pre}.L{fill:rgb(92,92,92)}.M{fill:rgb(255,184,255);white-space:pre}.N{fill:rgb(90,90,90)}.O{fill:rgb(255,180,255);white-space:pre}.P{fill:rgb(88,88,88)}.Q{fill:rgb(255,175,255);white-space:pre}.R{fill:rgb(86,86,86)}.S{fill:rgb(255,171,255);white-space:pre}.T{fill:rgb(83,83,83)}.U{fill:rgb(255,167,255);white-space:pre}.V{fill:rgb(81,81,81)}.W{fill:rgb(255,162,255);white-space:pre}.X{fill:rgb(79,79,79)}.Y{fill:rgb(255,158,255);white-space:pre}.Z{fill:rgb(77,77,77)}.aa{fill:rgb(255,153,255);white-space:pre}.ab{fill:rgb(75,75,75)}.ac{fill:rgb(255,149,255);white-space:pre}.ad{fill:rgb(72,72,72)}.ae{fill:rgb(255,145,255);white-space:pre}.af{fill:rgb(70,70,70)}.ag{fill:rgb(255,140,255);white-space:pre}.ah{fill:rgb(68,68,68)}.ai{fill:rgb(255,136,255);white-space:pre}.aj{fill:rgb(66,66,66)}.ak{fill:rgb(255,131,255);white-space:pre}.al{fill:rgb(64,64,64)}.am{fill:rgb(255,127,255);white-space:pre}.an{fill:rgb(61,61,61)}.ao{fill:rgb(255,123,255);white-space:pre}.ap{fill:rgb(59,59,59)}.aq{fill:rgb(255,118,255);white-space:pre}.ar{fill:rgb(57,57,57)}.as{fill:rgb(255,114,255);white-space:pre}.at{fill:rgb(55,55,55)}.au{fill:rgb(255,109,255);white-space:pre}.av{fill:rgb(52,52,52)}.aw{fill:rgb(255,105,255);white-space:pre}.ax{fill:rgb(50,50,50)}.ay{fill:rgb(255,101,255);white-space:pre}.az{fill:rgb(48,48,48)}.aA{fill:rgb(255,96,255);white-space:pre}.aB{fill:rgb(46,46,46)}.aC{fill:rgb(255,92,255);white-space:pre}.aD{fill:rgb(44,44,44)}.aE{fill:rgb(255,87,255);white-space:pre}.aF{fill:rgb(41,41,41)}.aG{fill:rgb(255,83,255);white-space:pre}.aH{fill:rgb(39,39,39)}.aI{fill:rgb(255,79,255);white-space:pre}.aJ{fill:rgb(37,37,37)}.aK{fill:rgb(255,74,255);white-space:pre}.aL{fill:rgb(255,70,255);white-space:pre}.aM{fill:rgb(33,33,33)}.aN{fill:rgb(255,65,255);white-space:pre}.aO{fill:rgb(30,30,30)}.aP{fill:rgb(255,61,255);white-space:pre}.aQ{fill:rgb(28,28,28)}.aR{fill:rgb(255,57,255);white-space:pre}.aS{fill:rgb(26,26,26)}.aT{fill:rgb(255,52,255);white-space:pre}.aU{fill:rgb(24,24,24)}.aV{fill:rgb(255,48,255);white-space:pre}.aW{fill:rgb(22,22,22)}.aX{fill:rgb(255,43,255);white-space:pre}.aY{fill:rgb(19,19,19)}.aZ{fill:rgb(255,39,255);white-space:pre}.ba{fill:rgb(17,17,17)}.bb{fill:rgb(255,35,255);white-space:pre}.bc{fill:rgb(15,15,15)}.bd{fill:rgb(255,30,255);white-space:pre}.be{fill:rgb(13,13,13)}.bf{fill:rgb(255,26,255);white-space:pre}.bg{fill:rgb(11,11,11)}.bh{fill:rgb(255,21,255);white-space:pre}.bi{fill:rgb(8,8,8)}.bj{fill:rgb(255,17,255);white-space:pre}.bk{fill:rgb(6,6,6)}.bl{fill:rgb(255,13,255);white-space:pre}.bm{fill:rgb(4,4,4)}.bn{fill:rgb(255,8,255);white-space:pre}.bo{fill:rgb(2,2,2)}.bp{fill:rgb(255,4,255);white-space:pre}.bq{fill:rgb(255,0,0)}.br{fill:rgb(0,0,0);white-space:pre}.bs{fill:rgb(3,0,3);white-space:pre}.bt{fill:rgb(7,0,7);white-space:pre}.bu{fill:rgb(11,0,11);white-space:pre}.bv{fill:rgb(15,0,15);white-space:pre}.bw{fill:rgb(18,0,18);white-space:pre}.bx{fill:rgb(22,0,22);white-space:pre}.by{fill:rgb(26,0,26);white-space:pre}.bz{fill:rgb(30,0,30);white-space:pre}.bA{fill:rgb(33,0,33);white-space:pre}.bB{fill:rgb(37,0,37);white-space:pre}.bC{fill:rgb(41,0,41);white-space:pre}.bD{fill:rgb(45,0,45);white-space:pre}.bE{fill:rgb(48,0,48);white-space:pre}.bF{fill:rgb(52,0,52);white-space:pre}.bG{fill:rgb(56,0,56);white-space:pre}.bH{fill:rgb(60,0,60);white-space:pre}.bI{fill:rgb(63,0,63);white-space:pre}.bJ{fill:rgb(67,0,67);white-space:pre}.bK{fill:rgb(71,0,71);white-space:pre}.bL{fill:rgb(75,0,75);white-space:pre}.bM{fill:rgb(78,0,78);white-space:pre}.bN{fill:rgb(82,0,82);white-space:pre}.bO{fill:rgb(86,0,86);white-space:pre}.bP{fill:rgb(90,0,90);white-space:pre}.bQ{fill:rgb(93,0,93);white-space:pre}.bR{fill:rgb(97,0,97);white-space:pre}.bS{fill:rgb(101,0,101);white-space:pre}.bT{fill:rgb(105,0,105);white-space:pre}.bU{fill:rgb(108,0,108);white-space:pre}.bV{fill:rgb(112,0,112);white-space:pre}.bW{fill:rgb(116,0,116);white-space:pre}.bX{fill:rgb(120,0,120);white-space:pre}.bY{fill:rgb(123,0,123);white-space:pre}.bZ{fill:rgb(127,0,127);white-space:pre}.ca{fill:rgb(131,0,131);white-space:pre}.cb{fill:rgb(135,0,135);white-space:pre}.cc{fill:rgb(138,0,138);white-space:pre}.cd{fill:rgb(142,0,142);white-space:pre}.ce{fill:rgb(146,0,146);white-space:pre}.cf{fill:rgb(150,0,150);white-space:pre}.cg{fill:rgb(153,0,153);white-space:pre}.ch{fill:rgb(157,0,157);white-space:pre}.ci{fill:rgb(161,0,161);white-space:pre}.cj{fill:rgb(165,0,165);white-space:pre}.ck{fill:rgb(168,0,168);white-space:pre}.cl{fill:rgb(172,0,172);white-space:pre}.cm{fill:rgb(176,0,176);white-space:pre}.cn{fill:rgb(180,0,180);white-space:pre}.co{fill:rgb(183,0,183);white-space:pre}.cp{fill:rgb(187,0,187);white-space:pre}.cq{fill:rgb(191,0,191);white-space:pre}.cr{fill:rgb(195,0,195);white-space:pre}.cs{fill:rgb(198,0,198);white-space:pre}.ct{fill:rgb(202,0,202);white-space:pre}.cu{fill:rgb(206,0,206);white-space:pre}.cv{fill:rgb(210,0,210);white-space:pre}.cw{fill:rgb(213,0,213);white-space:pre}.cx{fill:rgb(217,0,217);white-space:pre}.cy{fill:rgb(221,0,221);white-space:pre}.cz{fill:rgb(225,0,225);white-space:pre}.cA{fill:rgb(228,0,228);white-space:pre}.cB{fill:rgb(232,0,232);white-space:pre}.cC{fill:rgb(236,0,236);white-space:pre}.cD{fill:rgb(240,0,240);white-space:pre}.cE{fill:rgb(243,0,243);white-space:pre}.cF{fill:rgb(247,0,247);white-space:pre}.cG{fill:rgb(251,0,251);white-space:pre}.cH{fill:rgb(250,0,0)}.cI{fill:rgb(250,255,250);white-space:pre}.cJ{fill:rgb(245,0,0)}.cK{fill:rgb(245,255,245);white-space:pre}.cL{fill:rgb(241,0,0)}.cM{fill:rgb(241,255,241);white-space:pre}.cN{fill:rgb(236,0,0)}.cO{fill:rgb(236,255,236);white-space:pre}.cP{fill:rgb(232,0,0)}.cQ{fill:rgb(232,255,232);white-space:pre}.cR{fill:rgb(227,0,0)}.cS{fill:rgb(227,255,227);white-space:pre}.cT{fill:rgb(223,0,0)}.cU{fill:rgb(223,255,223);white-space:pre}.cV{fill:rgb(218,0,0)}.cW{fill:rgb(218,255,218);white-space:pre}.cX{fill:rgb(214,0,0)}.cY{fill:rgb(214,255,214);white-space:pre}.cZ{fill:rgb(209,0,0)}.da{fill:rgb(209,255,209);white-space:pre}.db{fill:rgb(204,0,0)}.dc{fill:rgb(204,255,204);white-space:pre}.dd{fill:rgb(200,0,0)}.de{fill:rgb(200,255,200);white-space:pre}.df{fill:rgb(195,0,0)}.dg{fill:rgb(195,255,195);white-space:pre}.dh{fill:rgb(191,0,0)}.di{fill:rgb(191,255,191);white-space:pre}.dj{fill:rgb(186,0,0)}.dk{fill:rgb(186,255,186);white-space:pre}.dl{fill:rgb(182,0,0)}.dm{fill:rgb(182,255,182);white-space:pre}.dn{fill:rgb(177,0,0)}.do{fill:rgb(177,255,177);white-space:pre}.dp{fill:rgb(173,0,0)}.dq{fill:rgb(173,255,173);white-space:pre}.dr{fill:rgb(168,0,0)}.ds{fill:rgb(168,255,168);white-space:pre}.dt{fill:rgb(163,0,0)}.du{fill:rgb(163,255,163);white-space:pre}.dv{fill:rgb(159,0,0)}.dw{fill:rgb(159,255,159);white-space:pre}.dx{fill:rgb(154,0,0)}.dy{fill:rgb(154,255,154);white-space:pre}.dz{fill:rgb(150,0,0)}.dA{fill:rgb(150,255,150);white-space:pre}.dB{fill:rgb(145,0,0)}.dC{fill:rgb(145,255,145);white-space:pre}.dD{fill:rgb(141,0,0)}.dE{fill:rgb(141,255,141);white-space:pre}.dF{fill:rgb(136,0,0)}.dG{fill:rgb(136,255,136);white-space:pre}.dH{fill:rgb(132,0,0)}.dI{fill:rgb(132,255,132);white-space:pre}.dJ{fill:rgb(127,0,0)}.dK{fill:rgb(127,255,127);white-space:pre}.dL{fill:rgb(122,0,0)}.dM{fill:rgb(122,255,122);white-space:pre}.dN{fill:rgb(118,0,0)}.dO{fill:rgb(118,255,118);white-space:pre}.dP{fill:rgb(113,0,0)}.dQ{fill:rgb(113,255,113);white-space:pre}.dR{fill:rgb(109,0,0)}.dS{fill:rgb(109,255,109);white-space:pre}.dT{fill:rgb(104,0,0)}.dU{fill:rgb(104,255,104);white-space:pre}.dV{fill:rgb(100,0,0)}.dW{fill:rgb(100,255,100);white-space:pre}.dX{fill:rgb(95,0,0)}.dY{fill:rgb(95,255,95);white-space:pre}.dZ{fill:rgb(91,0,0)}.ea{fill:rgb(91,255,91);white-space:pre}.eb{fill:rgb(86,0,0)}.ec{fill:rgb(86,255,86);white-space:pre}.ed{fill:rgb(81,0,0)}.ee{fill:rgb(81,255,81);white-space:pre}.ef{fill:rgb(77,0,0)}.eg{fill:rgb(77,255,77);white-space:pre}.eh{fill:rgb(72,0,0)}.ei{fill:rgb(72,255,72);white-space:pre}.ej{fill:rgb(68,0,0)}.ek{fill:rgb(68,255,68);font-weight:bold;white-space:pre}.el{fill:rgb(63,0,0)}.em{fill:rgb(63,255,63);font-weight:bold;white-space:pre}.en{fill:rgb(59,0,0)}.eo{fill:rgb(59,255,59);font-weight:bold;white-space:pre}.ep{fill:rgb(54,0,0)}.eq{fill:rgb(54,255,54);font-weight:bold;white-space:pre}.er{fill:rgb(50,0,0)}.es{fill:rgb(50,255,50);white-space:pre}.et{fill:rgb(45,0,0)}.eu{fill:rgb(45,255,45);white-space:pre}.ev{fill:rgb(40,0,0)}.ew{fill:rgb(40,255,40);white-space:pre}.ex{fill:rgb(36,0,0)}.ey{fill:rgb(36,255,36);white-space:pre}.ez{fill:rgb(31,0,0)}.eA{fill:rgb(31,255,31);white-space:pre}.eB{fill:rgb(27,0,0)}.eC{fill:rgb(27,255,27);white-space:pre}.eD{fill:rgb(22,0,0)}.eE{fill:rgb(22,255,22);white-space:pre}.eF{fill:rgb(18,0,0)}.eG{fill:rgb(18,255,18);white-space:pre}.eH{fill:rgb(13,0,0)}.eI{fill:rgb(13,255,13);white-space:pre}.eJ{fill:rgb(9,0,0)}.eK{fill:rgb(9,255,9);white-space:pre}.eL{fill:rgb(4,0,0)}.eM{fill:rgb(4,255,4);white-space:pre}.eN{fill:transparent}.eP{animation-duration:5.220142s;animation-iteration-count:infinite;animation-name:eO;animation-timing-function:steps(1,end)}.eQ{fill:rgb(160,160,160);white-space:pre}@keyframes eO{0%{transform:translateX(-0px)}3.1%{transform:translateX(-80px)}4.2%{transform:translateX(-160px)}4.2%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Thebackgroundandforegroundcolorscanbecustomizedindividually.Stylescanalsobeapplied.Forexample:BoldorItalic.RGBcolorsonlyworkinTerminalswhichsupportTrueCStylescanalsobeapplied.Forexample:BolRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(128,128,128)}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(125,125,125)}.i{fill:rgb(255,250,255);white-space:pre}.j{fill:rgb(123,123,123)}.k{fill:rgb(255,246,255);white-space:pre}.l{fill:rgb(121,121,121)}.m{fill:rgb(255,241,255);white-space:pre}.n{fill:rgb(119,119,119)}.o{fill:rgb(255,237,255);white-space:pre}.p{fill:rgb(116,116,116)}.q{fill:rgb(255,233,255);white-space:pre}.r{fill:rgb(114,114,114)}.s{fill:rgb(255,228,255);white-space:pre}.t{fill:rgb(112,112,112)}.u{fill:rgb(255,224,255);white-space:pre}.v{fill:rgb(110,110,110)}.w{fill:rgb(255,219,255);white-space:pre}.x{fill:rgb(108,108,108)}.y{fill:rgb(255,215,255);white-space:pre}.z{fill:rgb(105,105,105)}.A{fill:rgb(255,211,255);white-space:pre}.B{fill:rgb(103,103,103)}.C{fill:rgb(255,206,255);white-space:pre}.D{fill:rgb(101,101,101)}.E{fill:rgb(255,202,255);white-space:pre}.F{fill:rgb(99,99,99)}.G{fill:rgb(255,197,255);white-space:pre}.H{fill:rgb(97,97,97)}.I{fill:rgb(255,193,255);white-space:pre}.J{fill:rgb(94,94,94)}.K{fill:rgb(255,189,255);white-space:pre}.L{fill:rgb(92,92,92)}.M{fill:rgb(255,184,255);white-space:pre}.N{fill:rgb(90,90,90)}.O{fill:rgb(255,180,255);white-space:pre}.P{fill:rgb(88,88,88)}.Q{fill:rgb(255,175,255);white-space:pre}.R{fill:rgb(86,86,86)}.S{fill:rgb(255,171,255);white-space:pre}.T{fill:rgb(83,83,83)}.U{fill:rgb(255,167,255);white-space:pre}.V{fill:rgb(81,81,81)}.W{fill:rgb(255,162,255);white-space:pre}.X{fill:rgb(79,79,79)}.Y{fill:rgb(255,158,255);white-space:pre}.Z{fill:rgb(77,77,77)}.aa{fill:rgb(255,153,255);white-space:pre}.ab{fill:rgb(75,75,75)}.ac{fill:rgb(255,149,255);white-space:pre}.ad{fill:rgb(72,72,72)}.ae{fill:rgb(255,145,255);white-space:pre}.af{fill:rgb(70,70,70)}.ag{fill:rgb(255,140,255);white-space:pre}.ah{fill:rgb(68,68,68)}.ai{fill:rgb(255,136,255);white-space:pre}.aj{fill:rgb(66,66,66)}.ak{fill:rgb(255,131,255);white-space:pre}.al{fill:rgb(64,64,64)}.am{fill:rgb(255,127,255);white-space:pre}.an{fill:rgb(61,61,61)}.ao{fill:rgb(255,123,255);white-space:pre}.ap{fill:rgb(59,59,59)}.aq{fill:rgb(255,118,255);white-space:pre}.ar{fill:rgb(57,57,57)}.as{fill:rgb(255,114,255);white-space:pre}.at{fill:rgb(55,55,55)}.au{fill:rgb(255,109,255);white-space:pre}.av{fill:rgb(52,52,52)}.aw{fill:rgb(255,105,255);white-space:pre}.ax{fill:rgb(50,50,50)}.ay{fill:rgb(255,101,255);white-space:pre}.az{fill:rgb(48,48,48)}.aA{fill:rgb(255,96,255);white-space:pre}.aB{fill:rgb(46,46,46)}.aC{fill:rgb(255,92,255);white-space:pre}.aD{fill:rgb(44,44,44)}.aE{fill:rgb(255,87,255);white-space:pre}.aF{fill:rgb(41,41,41)}.aG{fill:rgb(255,83,255);white-space:pre}.aH{fill:rgb(39,39,39)}.aI{fill:rgb(255,79,255);white-space:pre}.aJ{fill:rgb(37,37,37)}.aK{fill:rgb(255,74,255);white-space:pre}.aL{fill:rgb(255,70,255);white-space:pre}.aM{fill:rgb(33,33,33)}.aN{fill:rgb(255,65,255);white-space:pre}.aO{fill:rgb(30,30,30)}.aP{fill:rgb(255,61,255);white-space:pre}.aQ{fill:rgb(28,28,28)}.aR{fill:rgb(255,57,255);white-space:pre}.aS{fill:rgb(26,26,26)}.aT{fill:rgb(255,52,255);white-space:pre}.aU{fill:rgb(24,24,24)}.aV{fill:rgb(255,48,255);white-space:pre}.aW{fill:rgb(22,22,22)}.aX{fill:rgb(255,43,255);white-space:pre}.aY{fill:rgb(19,19,19)}.aZ{fill:rgb(255,39,255);white-space:pre}.ba{fill:rgb(17,17,17)}.bb{fill:rgb(255,35,255);white-space:pre}.bc{fill:rgb(15,15,15)}.bd{fill:rgb(255,30,255);white-space:pre}.be{fill:rgb(13,13,13)}.bf{fill:rgb(255,26,255);white-space:pre}.bg{fill:rgb(11,11,11)}.bh{fill:rgb(255,21,255);white-space:pre}.bi{fill:rgb(8,8,8)}.bj{fill:rgb(255,17,255);white-space:pre}.bk{fill:rgb(6,6,6)}.bl{fill:rgb(255,13,255);white-space:pre}.bm{fill:rgb(4,4,4)}.bn{fill:rgb(255,8,255);white-space:pre}.bo{fill:rgb(2,2,2)}.bp{fill:rgb(255,4,255);white-space:pre}.bq{fill:rgb(255,0,0)}.br{fill:rgb(0,0,0);white-space:pre}.bs{fill:rgb(3,0,3);white-space:pre}.bt{fill:rgb(7,0,7);white-space:pre}.bu{fill:rgb(11,0,11);white-space:pre}.bv{fill:rgb(15,0,15);white-space:pre}.bw{fill:rgb(18,0,18);white-space:pre}.bx{fill:rgb(22,0,22);white-space:pre}.by{fill:rgb(26,0,26);white-space:pre}.bz{fill:rgb(30,0,30);white-space:pre}.bA{fill:rgb(33,0,33);white-space:pre}.bB{fill:rgb(37,0,37);white-space:pre}.bC{fill:rgb(41,0,41);white-space:pre}.bD{fill:rgb(45,0,45);white-space:pre}.bE{fill:rgb(48,0,48);white-space:pre}.bF{fill:rgb(52,0,52);white-space:pre}.bG{fill:rgb(56,0,56);white-space:pre}.bH{fill:rgb(60,0,60);white-space:pre}.bI{fill:rgb(63,0,63);white-space:pre}.bJ{fill:rgb(67,0,67);white-space:pre}.bK{fill:rgb(71,0,71);white-space:pre}.bL{fill:rgb(75,0,75);white-space:pre}.bM{fill:rgb(78,0,78);white-space:pre}.bN{fill:rgb(82,0,82);white-space:pre}.bO{fill:rgb(86,0,86);white-space:pre}.bP{fill:rgb(90,0,90);white-space:pre}.bQ{fill:rgb(93,0,93);white-space:pre}.bR{fill:rgb(97,0,97);white-space:pre}.bS{fill:rgb(101,0,101);white-space:pre}.bT{fill:rgb(105,0,105);white-space:pre}.bU{fill:rgb(108,0,108);white-space:pre}.bV{fill:rgb(112,0,112);white-space:pre}.bW{fill:rgb(116,0,116);white-space:pre}.bX{fill:rgb(120,0,120);white-space:pre}.bY{fill:rgb(123,0,123);white-space:pre}.bZ{fill:rgb(127,0,127);white-space:pre}.ca{fill:rgb(131,0,131);white-space:pre}.cb{fill:rgb(135,0,135);white-space:pre}.cc{fill:rgb(138,0,138);white-space:pre}.cd{fill:rgb(142,0,142);white-space:pre}.ce{fill:rgb(146,0,146);white-space:pre}.cf{fill:rgb(150,0,150);white-space:pre}.cg{fill:rgb(153,0,153);white-space:pre}.ch{fill:rgb(157,0,157);white-space:pre}.ci{fill:rgb(161,0,161);white-space:pre}.cj{fill:rgb(165,0,165);white-space:pre}.ck{fill:rgb(168,0,168);white-space:pre}.cl{fill:rgb(172,0,172);white-space:pre}.cm{fill:rgb(176,0,176);white-space:pre}.cn{fill:rgb(180,0,180);white-space:pre}.co{fill:rgb(183,0,183);white-space:pre}.cp{fill:rgb(187,0,187);white-space:pre}.cq{fill:rgb(191,0,191);white-space:pre}.cr{fill:rgb(195,0,195);white-space:pre}.cs{fill:rgb(198,0,198);white-space:pre}.ct{fill:rgb(202,0,202);white-space:pre}.cu{fill:rgb(206,0,206);white-space:pre}.cv{fill:rgb(210,0,210);white-space:pre}.cw{fill:rgb(213,0,213);white-space:pre}.cx{fill:rgb(217,0,217);white-space:pre}.cy{fill:rgb(221,0,221);white-space:pre}.cz{fill:rgb(225,0,225);white-space:pre}.cA{fill:rgb(228,0,228);white-space:pre}.cB{fill:rgb(232,0,232);white-space:pre}.cC{fill:rgb(236,0,236);white-space:pre}.cD{fill:rgb(240,0,240);white-space:pre}.cE{fill:rgb(243,0,243);white-space:pre}.cF{fill:rgb(247,0,247);white-space:pre}.cG{fill:rgb(251,0,251);white-space:pre}.cH{fill:rgb(250,0,0)}.cI{fill:rgb(250,255,250);white-space:pre}.cJ{fill:rgb(245,0,0)}.cK{fill:rgb(245,255,245);white-space:pre}.cL{fill:rgb(241,0,0)}.cM{fill:rgb(241,255,241);white-space:pre}.cN{fill:rgb(236,0,0)}.cO{fill:rgb(236,255,236);white-space:pre}.cP{fill:rgb(232,0,0)}.cQ{fill:rgb(232,255,232);white-space:pre}.cR{fill:rgb(227,0,0)}.cS{fill:rgb(227,255,227);white-space:pre}.cT{fill:rgb(223,0,0)}.cU{fill:rgb(223,255,223);white-space:pre}.cV{fill:rgb(218,0,0)}.cW{fill:rgb(218,255,218);white-space:pre}.cX{fill:rgb(214,0,0)}.cY{fill:rgb(214,255,214);white-space:pre}.cZ{fill:rgb(209,0,0)}.da{fill:rgb(209,255,209);white-space:pre}.db{fill:rgb(204,0,0)}.dc{fill:rgb(204,255,204);white-space:pre}.dd{fill:rgb(200,0,0)}.de{fill:rgb(200,255,200);white-space:pre}.df{fill:rgb(195,0,0)}.dg{fill:rgb(195,255,195);white-space:pre}.dh{fill:rgb(191,0,0)}.di{fill:rgb(191,255,191);white-space:pre}.dj{fill:rgb(186,0,0)}.dk{fill:rgb(186,255,186);white-space:pre}.dl{fill:rgb(182,0,0)}.dm{fill:rgb(182,255,182);white-space:pre}.dn{fill:rgb(177,0,0)}.do{fill:rgb(177,255,177);white-space:pre}.dp{fill:rgb(173,0,0)}.dq{fill:rgb(173,255,173);white-space:pre}.dr{fill:rgb(168,0,0)}.ds{fill:rgb(168,255,168);white-space:pre}.dt{fill:rgb(163,0,0)}.du{fill:rgb(163,255,163);white-space:pre}.dv{fill:rgb(159,0,0)}.dw{fill:rgb(159,255,159);white-space:pre}.dx{fill:rgb(154,0,0)}.dy{fill:rgb(154,255,154);white-space:pre}.dz{fill:rgb(150,0,0)}.dA{fill:rgb(150,255,150);white-space:pre}.dB{fill:rgb(145,0,0)}.dC{fill:rgb(145,255,145);white-space:pre}.dD{fill:rgb(141,0,0)}.dE{fill:rgb(141,255,141);white-space:pre}.dF{fill:rgb(136,0,0)}.dG{fill:rgb(136,255,136);white-space:pre}.dH{fill:rgb(132,0,0)}.dI{fill:rgb(132,255,132);white-space:pre}.dJ{fill:rgb(127,0,0)}.dK{fill:rgb(127,255,127);white-space:pre}.dL{fill:rgb(122,0,0)}.dM{fill:rgb(122,255,122);white-space:pre}.dN{fill:rgb(118,0,0)}.dO{fill:rgb(118,255,118);white-space:pre}.dP{fill:rgb(113,0,0)}.dQ{fill:rgb(113,255,113);white-space:pre}.dR{fill:rgb(109,0,0)}.dS{fill:rgb(109,255,109);white-space:pre}.dT{fill:rgb(104,0,0)}.dU{fill:rgb(104,255,104);white-space:pre}.dV{fill:rgb(100,0,0)}.dW{fill:rgb(100,255,100);white-space:pre}.dX{fill:rgb(95,0,0)}.dY{fill:rgb(95,255,95);white-space:pre}.dZ{fill:rgb(91,0,0)}.ea{fill:rgb(91,255,91);white-space:pre}.eb{fill:rgb(86,0,0)}.ec{fill:rgb(86,255,86);white-space:pre}.ed{fill:rgb(81,0,0)}.ee{fill:rgb(81,255,81);white-space:pre}.ef{fill:rgb(77,0,0)}.eg{fill:rgb(77,255,77);white-space:pre}.eh{fill:rgb(72,0,0)}.ei{fill:rgb(72,255,72);white-space:pre}.ej{fill:rgb(68,0,0)}.ek{fill:rgb(68,255,68);font-weight:bold;white-space:pre}.el{fill:rgb(63,0,0)}.em{fill:rgb(63,255,63);font-weight:bold;white-space:pre}.en{fill:rgb(59,0,0)}.eo{fill:rgb(59,255,59);font-weight:bold;white-space:pre}.ep{fill:rgb(54,0,0)}.eq{fill:rgb(54,255,54);font-weight:bold;white-space:pre}.er{fill:rgb(50,0,0)}.es{fill:rgb(50,255,50);white-space:pre}.et{fill:rgb(45,0,0)}.eu{fill:rgb(45,255,45);white-space:pre}.ev{fill:rgb(40,0,0)}.ew{fill:rgb(40,255,40);white-space:pre}.ex{fill:rgb(36,0,0)}.ey{fill:rgb(36,255,36);white-space:pre}.ez{fill:rgb(31,0,0)}.eA{fill:rgb(31,255,31);white-space:pre}.eB{fill:rgb(27,0,0)}.eC{fill:rgb(27,255,27);white-space:pre}.eD{fill:rgb(22,0,0)}.eE{fill:rgb(22,255,22);white-space:pre}.eF{fill:rgb(18,0,0)}.eG{fill:rgb(18,255,18);white-space:pre}.eH{fill:rgb(13,0,0)}.eI{fill:rgb(13,255,13);white-space:pre}.eJ{fill:rgb(9,0,0)}.eK{fill:rgb(9,255,9);white-space:pre}.eL{fill:rgb(4,0,0)}.eM{fill:rgb(4,255,4);white-space:pre}.eN{fill:transparent}.eP{animation-duration:5.303377s;animation-iteration-count:infinite;animation-name:eO;animation-timing-function:steps(1,end)}.eQ{fill:rgb(160,160,160);white-space:pre}@keyframes eO{0%{transform:translateX(-0px)}3.5%{transform:translateX(-80px)}5.7%{transform:translateX(-160px)}5.7%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Thebackgroundandforegroundcolorscanbecustomizedindividually.Stylescanalsobeapplied.Forexample:BoldorItalic.Stylescanalsobeapplied.Forexample:BoldorRestartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/fade-colors/animation.svg b/_examples/coloring/fade-colors/animation.svg
index 71f9962e9..e6a95df2a 100644
--- a/_examples/coloring/fade-colors/animation.svg
+++ b/_examples/coloring/fade-colors/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(0,255,255);white-space:pre}.j{fill:rgb(11,243,255);white-space:pre}.k{fill:rgb(23,231,255);white-space:pre}.l{fill:rgb(34,220,255);white-space:pre}.m{fill:rgb(46,208,255);white-space:pre}.n{fill:rgb(57,197,255);white-space:pre}.o{fill:rgb(69,185,255);white-space:pre}.p{fill:rgb(81,173,255);white-space:pre}.q{fill:rgb(92,162,255);white-space:pre}.r{fill:rgb(104,150,255);white-space:pre}.s{fill:rgb(115,139,255);white-space:pre}.t{fill:rgb(127,127,255);white-space:pre}.u{fill:rgb(139,115,255);white-space:pre}.v{fill:rgb(150,104,255);white-space:pre}.w{fill:rgb(162,92,255);white-space:pre}.x{fill:rgb(173,81,255);white-space:pre}.y{fill:rgb(185,69,255);white-space:pre}.z{fill:rgb(197,57,255);white-space:pre}.A{fill:rgb(208,46,255);white-space:pre}.B{fill:rgb(220,34,255);white-space:pre}.C{fill:rgb(231,23,255);white-space:pre}.D{fill:rgb(243,11,255);white-space:pre}.E{fill:transparent}.G{animation-duration:5.229394s;animation-iteration-count:infinite;animation-name:F;animation-timing-function:steps(1,end)}.H{fill:rgb(160,160,160);white-space:pre}@keyframes F{0%{transform:translateX(-0px)}4%{transform:translateX(-80px)}4.4%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(11,243,255);white-space:pre}.j{fill:rgb(23,231,255);white-space:pre}.k{fill:rgb(34,220,255);white-space:pre}.l{fill:rgb(46,208,255);white-space:pre}.m{fill:rgb(57,197,255);white-space:pre}.n{fill:rgb(69,185,255);white-space:pre}.o{fill:rgb(81,173,255);white-space:pre}.p{fill:rgb(92,162,255);white-space:pre}.q{fill:rgb(104,150,255);white-space:pre}.r{fill:rgb(115,139,255);white-space:pre}.s{fill:rgb(127,127,255);white-space:pre}.t{fill:rgb(139,115,255);white-space:pre}.u{fill:rgb(150,104,255);white-space:pre}.v{fill:rgb(162,92,255);white-space:pre}.w{fill:rgb(173,81,255);white-space:pre}.x{fill:rgb(185,69,255);white-space:pre}.y{fill:rgb(197,57,255);white-space:pre}.z{fill:rgb(208,46,255);white-space:pre}.A{fill:rgb(220,34,255);white-space:pre}.B{fill:rgb(231,23,255);white-space:pre}.C{fill:rgb(243,11,255);white-space:pre}.D{fill:transparent}.F{animation-duration:5.422092s;animation-iteration-count:infinite;animation-name:E;animation-timing-function:steps(1,end)}.G{fill:rgb(0,255,255);white-space:pre}.H{fill:rgb(160,160,160);white-space:pre}@keyframes E{0%{transform:translateX(-0px)}5.7%{transform:translateX(-80px)}7.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/fade-multiple-colors/animation.svg b/_examples/coloring/fade-multiple-colors/animation.svg
index b0369c065..13eb54eb3 100644
--- a/_examples/coloring/fade-multiple-colors/animation.svg
+++ b/_examples/coloring/fade-multiple-colors/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(0,255,255);white-space:pre}.i{fill:rgb(4,250,255);white-space:pre}.j{fill:rgb(8,246,255);white-space:pre}.k{fill:rgb(17,237,255);white-space:pre}.l{fill:rgb(21,233,255);white-space:pre}.m{fill:rgb(26,228,255);white-space:pre}.n{fill:rgb(30,224,255);white-space:pre}.o{fill:rgb(35,219,255);white-space:pre}.p{fill:rgb(39,215,255);white-space:pre}.q{fill:rgb(48,206,255);white-space:pre}.r{fill:rgb(52,202,255);white-space:pre}.s{fill:rgb(57,197,255);white-space:pre}.t{fill:rgb(61,193,255);white-space:pre}.u{fill:rgb(70,184,255);white-space:pre}.v{fill:rgb(74,180,255);white-space:pre}.w{fill:rgb(79,175,255);white-space:pre}.x{fill:rgb(83,171,255);white-space:pre}.y{fill:rgb(92,162,255);white-space:pre}.z{fill:rgb(96,158,255);white-space:pre}.A{fill:rgb(105,149,255);white-space:pre}.B{fill:rgb(109,145,255);white-space:pre}.C{fill:rgb(114,140,255);white-space:pre}.D{fill:rgb(118,136,255);white-space:pre}.E{fill:rgb(123,131,255);white-space:pre}.F{fill:rgb(127,127,255);white-space:pre}.G{fill:rgb(131,123,255);white-space:pre}.H{fill:rgb(136,118,255);white-space:pre}.I{fill:rgb(140,114,255);white-space:pre}.J{fill:rgb(149,105,255);white-space:pre}.K{fill:rgb(153,101,255);white-space:pre}.L{fill:rgb(158,96,255);white-space:pre}.M{fill:rgb(162,92,255);white-space:pre}.N{fill:rgb(167,87,255);white-space:pre}.O{fill:rgb(175,79,255);white-space:pre}.P{fill:rgb(180,74,255);white-space:pre}.Q{fill:rgb(184,70,255);white-space:pre}.R{fill:rgb(189,65,255);white-space:pre}.S{fill:rgb(193,61,255);white-space:pre}.T{fill:rgb(197,57,255);white-space:pre}.U{fill:rgb(202,52,255);white-space:pre}.V{fill:rgb(211,43,255);white-space:pre}.W{fill:rgb(215,39,255);white-space:pre}.X{fill:rgb(219,35,255);white-space:pre}.Y{fill:rgb(224,30,255);white-space:pre}.Z{fill:rgb(228,26,255);white-space:pre}.aa{fill:rgb(233,21,255);white-space:pre}.ab{fill:rgb(237,17,255);white-space:pre}.ac{fill:rgb(241,13,255);white-space:pre}.ad{fill:rgb(246,8,255);white-space:pre}.ae{fill:rgb(250,4,255);white-space:pre}.af{fill:rgb(46,208,255);white-space:pre}.ag{fill:rgb(139,115,255);white-space:pre}.ah{fill:rgb(185,69,255);white-space:pre}.ai{fill:rgb(231,23,255);white-space:pre}.aj{fill:rgb(255,0,231);white-space:pre}.ak{fill:rgb(255,0,185);white-space:pre}.al{fill:rgb(255,0,139);white-space:pre}.am{fill:rgb(255,0,92);white-space:pre}.an{fill:rgb(255,0,46);white-space:pre}.ao{fill:rgb(255,0,0);white-space:pre}.ap{fill:rgb(208,46,0);white-space:pre}.aq{fill:rgb(162,92,0);white-space:pre}.ar{fill:rgb(115,139,0);white-space:pre}.as{fill:rgb(69,185,0);white-space:pre}.at{fill:rgb(23,231,0);white-space:pre}.au{fill:rgb(23,255,23);white-space:pre}.av{fill:rgb(69,255,69);white-space:pre}.aw{fill:rgb(115,255,115);white-space:pre}.ax{fill:rgb(162,255,162);white-space:pre}.ay{fill:rgb(208,255,208);white-space:pre}.az{fill:transparent}.aB{animation-duration:5.337256s;animation-iteration-count:infinite;animation-name:aA;animation-timing-function:steps(1,end)}.aC{fill:rgb(160,160,160);white-space:pre}@keyframes aA{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}6.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(0,255,255);white-space:pre}.i{fill:rgb(4,250,255);white-space:pre}.j{fill:rgb(8,246,255);white-space:pre}.k{fill:rgb(17,237,255);white-space:pre}.l{fill:rgb(21,233,255);white-space:pre}.m{fill:rgb(26,228,255);white-space:pre}.n{fill:rgb(30,224,255);white-space:pre}.o{fill:rgb(35,219,255);white-space:pre}.p{fill:rgb(39,215,255);white-space:pre}.q{fill:rgb(48,206,255);white-space:pre}.r{fill:rgb(52,202,255);white-space:pre}.s{fill:rgb(57,197,255);white-space:pre}.t{fill:rgb(61,193,255);white-space:pre}.u{fill:rgb(70,184,255);white-space:pre}.v{fill:rgb(74,180,255);white-space:pre}.w{fill:rgb(79,175,255);white-space:pre}.x{fill:rgb(83,171,255);white-space:pre}.y{fill:rgb(92,162,255);white-space:pre}.z{fill:rgb(96,158,255);white-space:pre}.A{fill:rgb(105,149,255);white-space:pre}.B{fill:rgb(109,145,255);white-space:pre}.C{fill:rgb(114,140,255);white-space:pre}.D{fill:rgb(118,136,255);white-space:pre}.E{fill:rgb(123,131,255);white-space:pre}.F{fill:rgb(127,127,255);white-space:pre}.G{fill:rgb(131,123,255);white-space:pre}.H{fill:rgb(136,118,255);white-space:pre}.I{fill:rgb(140,114,255);white-space:pre}.J{fill:rgb(149,105,255);white-space:pre}.K{fill:rgb(153,101,255);white-space:pre}.L{fill:rgb(158,96,255);white-space:pre}.M{fill:rgb(162,92,255);white-space:pre}.N{fill:rgb(167,87,255);white-space:pre}.O{fill:rgb(175,79,255);white-space:pre}.P{fill:rgb(180,74,255);white-space:pre}.Q{fill:rgb(184,70,255);white-space:pre}.R{fill:rgb(189,65,255);white-space:pre}.S{fill:rgb(193,61,255);white-space:pre}.T{fill:rgb(197,57,255);white-space:pre}.U{fill:rgb(202,52,255);white-space:pre}.V{fill:rgb(211,43,255);white-space:pre}.W{fill:rgb(215,39,255);white-space:pre}.X{fill:rgb(219,35,255);white-space:pre}.Y{fill:rgb(224,30,255);white-space:pre}.Z{fill:rgb(228,26,255);white-space:pre}.aa{fill:rgb(233,21,255);white-space:pre}.ab{fill:rgb(237,17,255);white-space:pre}.ac{fill:rgb(241,13,255);white-space:pre}.ad{fill:rgb(246,8,255);white-space:pre}.ae{fill:rgb(250,4,255);white-space:pre}.af{fill:rgb(46,208,255);white-space:pre}.ag{fill:rgb(139,115,255);white-space:pre}.ah{fill:rgb(185,69,255);white-space:pre}.ai{fill:rgb(231,23,255);white-space:pre}.aj{fill:rgb(255,0,231);white-space:pre}.ak{fill:rgb(255,0,185);white-space:pre}.al{fill:rgb(255,0,139);white-space:pre}.am{fill:rgb(255,0,92);white-space:pre}.an{fill:rgb(255,0,46);white-space:pre}.ao{fill:rgb(255,0,0);white-space:pre}.ap{fill:rgb(208,46,0);white-space:pre}.aq{fill:rgb(162,92,0);white-space:pre}.ar{fill:rgb(115,139,0);white-space:pre}.as{fill:rgb(69,185,0);white-space:pre}.at{fill:rgb(23,231,0);white-space:pre}.au{fill:rgb(23,255,23);white-space:pre}.av{fill:rgb(69,255,69);white-space:pre}.aw{fill:rgb(115,255,115);white-space:pre}.ax{fill:rgb(162,255,162);white-space:pre}.ay{fill:rgb(208,255,208);white-space:pre}.az{fill:transparent}.aB{animation-duration:5.397719s;animation-iteration-count:infinite;animation-name:aA;animation-timing-function:steps(1,end)}.aC{fill:rgb(160,160,160);white-space:pre}@keyframes aA{0%{transform:translateX(-0px)}6%{transform:translateX(-80px)}7.4%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO RGBcolorsonlyworkinTerminalswhichsupportTrueColor.Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/override-default-printers/animation.svg b/_examples/coloring/override-default-printers/animation.svg
index 1e5e7e523..13cf9dd15 100644
--- a/_examples/coloring/override-default-printers/animation.svg
+++ b/_examples/coloring/override-default-printers/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(232,131,136)}.g{white-space:pre}.h{fill:rgb(243,86,86);white-space:pre}.i{fill:rgb(102,194,205)}.j{fill:rgb(255,0,4);white-space:pre}.k{fill:transparent}.m{animation-duration:5.221198s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}.n{fill:rgb(160,160,160);white-space:pre}@keyframes l{0%{transform:translateX(-0px)}4.2%{transform:translateX(-80px)}100%{transform:translateX(-160px)}} ERROR ThisisthedefaultError OVERRIDE ThisisthedefaultErroraftertheprefixwasoverriddenRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(232,131,136)}.g{white-space:pre}.h{fill:rgb(243,86,86);white-space:pre}.i{fill:rgb(102,194,205)}.j{fill:rgb(255,0,4);white-space:pre}.k{fill:transparent}.m{animation-duration:5.235795s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}.n{fill:rgb(160,160,160);white-space:pre}@keyframes l{0%{transform:translateX(-0px)}4.5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}} ERROR ThisisthedefaultError OVERRIDE ThisisthedefaultErroraftertheprefixwasoverriddenRestartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/print-color-rgb-style/animation.svg b/_examples/coloring/print-color-rgb-style/animation.svg
index 6004ef0d3..db96a2c3d 100644
--- a/_examples/coloring/print-color-rgb-style/animation.svg
+++ b/_examples/coloring/print-color-rgb-style/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,50,123)}.g{fill:rgb(187,80,0);white-space:pre}.h{fill:rgb(187,80,0);font-weight:bold;white-space:pre}.i{fill:transparent}.k{animation-duration:5.392322s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}.l{fill:rgb(160,160,160);white-space:pre}@keyframes j{0%{transform:translateX(-0px)}6.1%{transform:translateX(-80px)}7.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}This text is not styled.This text is bold.This text is italic.Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(0,50,123)}.g{fill:rgb(187,80,0);white-space:pre}.h{fill:rgb(187,80,0);font-weight:bold;white-space:pre}.i{fill:transparent}.k{animation-duration:5.34545s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}.l{fill:rgb(160,160,160);white-space:pre}@keyframes j{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}6.5%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}This text is not styled.This text is bold.This text is italic.Restartinganimation...
\ No newline at end of file
diff --git a/_examples/coloring/print-color-rgb/animation.svg b/_examples/coloring/print-color-rgb/animation.svg
index 191cc09be..cfa26b631 100644
--- a/_examples/coloring/print-color-rgb/animation.svg
+++ b/_examples/coloring/print-color-rgb/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(178,44,199);white-space:pre}.g{fill:rgb(15,199,209);white-space:pre}.h{fill:rgb(201,144,30)}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:5.340066s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}6.4%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}ThistextisprintedwithacustomRGB!ThistextisprintedwithacustomRGB!This text is printed with a custom RGB background!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(178,44,199);white-space:pre}.g{fill:rgb(15,199,209);white-space:pre}.h{fill:rgb(201,144,30)}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:transparent}.l{animation-duration:5.192492s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}2.9%{transform:translateX(-80px)}3.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}ThistextisprintedwithacustomRGB!ThistextisprintedwithacustomRGB!This text is printed with a custom RGB background!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/demo/README.md b/_examples/demo/README.md
index ed9cd4664..07c769ba2 100644
--- a/_examples/demo/README.md
+++ b/_examples/demo/README.md
@@ -140,7 +140,7 @@ func main() {
pterm.DefaultCenter.WithCenterEachLineSeparately().Println(fadeInfo)
})
- showcase("Fully Customizale", 2, func() {
+ showcase("Fully Customizable", 2, func() {
for i := 0; i < 4; i++ {
pterm.Println()
}
diff --git a/_examples/demo/demo/README.md b/_examples/demo/demo/README.md
index 0cc5b3d3f..9b5a26e4d 100644
--- a/_examples/demo/demo/README.md
+++ b/_examples/demo/demo/README.md
@@ -136,7 +136,7 @@ func main() {
pterm.DefaultCenter.WithCenterEachLineSeparately().Println(fadeInfo)
})
- showcase("Fully Customizale", 2, func() {
+ showcase("Fully Customizable", 2, func() {
for i := 0; i < 4; i++ {
pterm.Println()
}
diff --git a/_examples/demo/demo/animation.svg b/_examples/demo/demo/animation.svg
index a3de156d4..919f19fa6 100644
--- a/_examples/demo/demo/animation.svg
+++ b/_examples/demo/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(115,190,243)}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.k{fill:rgb(102,194,205)}.l{white-space:pre}.m{fill:rgb(124,255,0);white-space:pre}.n{fill:rgb(255,255,255);white-space:pre}.o{fill:rgb(104,104,104);white-space:pre}.p{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.q{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.r{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.s{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.t{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.u{fill:rgb(168,204,140)}.v{fill:rgb(0,198,255);white-space:pre}.w{fill:rgb(208,46,0);white-space:pre}.x{fill:rgb(162,92,0);white-space:pre}.y{fill:rgb(115,139,0);white-space:pre}.z{fill:rgb(69,185,0);white-space:pre}.A{fill:rgb(219,171,121)}.B{fill:rgb(255,241,0);white-space:pre}.C{fill:rgb(23,231,0);white-space:pre}.D{fill:rgb(0,255,0);white-space:pre}.E{fill:rgb(0,255,255);white-space:pre}.F{fill:rgb(0,254,255);white-space:pre}.G{fill:rgb(1,253,255);white-space:pre}.H{fill:rgb(2,252,255);white-space:pre}.I{fill:rgb(3,251,255);white-space:pre}.J{fill:rgb(4,250,255);white-space:pre}.K{fill:rgb(5,249,255);white-space:pre}.L{fill:rgb(6,248,255);white-space:pre}.M{fill:rgb(7,247,255);white-space:pre}.N{fill:rgb(8,246,255);white-space:pre}.O{fill:rgb(9,245,255);white-space:pre}.P{fill:rgb(10,244,255);white-space:pre}.Q{fill:rgb(11,243,255);white-space:pre}.R{fill:rgb(12,242,255);white-space:pre}.S{fill:rgb(13,241,255);white-space:pre}.T{fill:rgb(14,240,255);white-space:pre}.U{fill:rgb(15,239,255);white-space:pre}.V{fill:rgb(16,238,255);white-space:pre}.W{fill:rgb(17,237,255);white-space:pre}.X{fill:rgb(18,236,255);white-space:pre}.Y{fill:rgb(19,235,255);white-space:pre}.Z{fill:rgb(20,234,255);white-space:pre}.aa{fill:rgb(21,233,255);white-space:pre}.ab{fill:rgb(22,232,255);white-space:pre}.ac{fill:rgb(23,231,255);white-space:pre}.ad{fill:rgb(24,230,255);white-space:pre}.ae{fill:rgb(25,229,255);white-space:pre}.af{fill:rgb(26,228,255);white-space:pre}.ag{fill:rgb(27,227,255);white-space:pre}.ah{fill:rgb(28,226,255);white-space:pre}.ai{fill:rgb(29,225,255);white-space:pre}.aj{fill:rgb(30,224,255);white-space:pre}.ak{fill:rgb(31,223,255);white-space:pre}.al{fill:rgb(32,222,255);white-space:pre}.am{fill:rgb(34,220,255);white-space:pre}.an{fill:rgb(35,219,255);white-space:pre}.ao{fill:rgb(36,218,255);white-space:pre}.ap{fill:rgb(37,217,255);white-space:pre}.aq{fill:rgb(38,216,255);white-space:pre}.ar{fill:rgb(39,215,255);white-space:pre}.as{fill:rgb(40,214,255);white-space:pre}.at{fill:rgb(41,213,255);white-space:pre}.au{fill:rgb(42,212,255);white-space:pre}.av{fill:rgb(43,211,255);white-space:pre}.aw{fill:rgb(44,210,255);white-space:pre}.ax{fill:rgb(45,209,255);white-space:pre}.ay{fill:rgb(46,208,255);white-space:pre}.az{fill:rgb(47,207,255);white-space:pre}.aA{fill:rgb(48,206,255);white-space:pre}.aB{fill:rgb(49,205,255);white-space:pre}.aC{fill:rgb(50,204,255);white-space:pre}.aD{fill:rgb(51,203,255);white-space:pre}.aE{fill:rgb(52,202,255);white-space:pre}.aF{fill:rgb(53,201,255);white-space:pre}.aG{fill:rgb(54,200,255);white-space:pre}.aH{fill:rgb(55,199,255);white-space:pre}.aI{fill:rgb(56,198,255);white-space:pre}.aJ{fill:rgb(57,197,255);white-space:pre}.aK{fill:rgb(58,196,255);white-space:pre}.aL{fill:rgb(59,195,255);white-space:pre}.aM{fill:rgb(60,194,255);white-space:pre}.aN{fill:rgb(61,193,255);white-space:pre}.aO{fill:rgb(62,192,255);white-space:pre}.aP{fill:rgb(63,191,255);white-space:pre}.aQ{fill:rgb(64,190,255);white-space:pre}.aR{fill:rgb(65,189,255);white-space:pre}.aS{fill:rgb(66,188,255);white-space:pre}.aT{fill:rgb(67,187,255);white-space:pre}.aU{fill:rgb(68,186,255);white-space:pre}.aV{fill:rgb(69,185,255);white-space:pre}.aW{fill:rgb(70,184,255);white-space:pre}.aX{fill:rgb(71,183,255);white-space:pre}.aY{fill:rgb(72,182,255);white-space:pre}.aZ{fill:rgb(73,181,255);white-space:pre}.ba{fill:rgb(74,180,255);white-space:pre}.bb{fill:rgb(75,179,255);white-space:pre}.bc{fill:rgb(76,178,255);white-space:pre}.bd{fill:rgb(77,177,255);white-space:pre}.be{fill:rgb(78,176,255);white-space:pre}.bf{fill:rgb(79,175,255);white-space:pre}.bg{fill:rgb(80,174,255);white-space:pre}.bh{fill:rgb(81,173,255);white-space:pre}.bi{fill:rgb(82,172,255);white-space:pre}.bj{fill:rgb(83,171,255);white-space:pre}.bk{fill:rgb(84,170,255);white-space:pre}.bl{fill:rgb(85,169,255);white-space:pre}.bm{fill:rgb(86,168,255);white-space:pre}.bn{fill:rgb(87,167,255);white-space:pre}.bo{fill:rgb(88,166,255);white-space:pre}.bp{fill:rgb(89,165,255);white-space:pre}.bq{fill:rgb(90,164,255);white-space:pre}.br{fill:rgb(91,163,255);white-space:pre}.bs{fill:rgb(92,162,255);white-space:pre}.bt{fill:rgb(93,161,255);white-space:pre}.bu{fill:rgb(94,160,255);white-space:pre}.bv{fill:rgb(95,159,255);white-space:pre}.bw{fill:rgb(96,158,255);white-space:pre}.bx{fill:rgb(97,157,255);white-space:pre}.by{fill:rgb(98,156,255);white-space:pre}.bz{fill:rgb(99,155,255);white-space:pre}.bA{fill:rgb(100,154,255);white-space:pre}.bB{fill:rgb(101,153,255);white-space:pre}.bC{fill:rgb(102,152,255);white-space:pre}.bD{fill:rgb(103,151,255);white-space:pre}.bE{fill:rgb(104,150,255);white-space:pre}.bF{fill:rgb(105,149,255);white-space:pre}.bG{fill:rgb(106,148,255);white-space:pre}.bH{fill:rgb(107,147,255);white-space:pre}.bI{fill:rgb(108,146,255);white-space:pre}.bJ{fill:rgb(109,145,255);white-space:pre}.bK{fill:rgb(110,144,255);white-space:pre}.bL{fill:rgb(111,143,255);white-space:pre}.bM{fill:rgb(112,142,255);white-space:pre}.bN{fill:rgb(113,141,255);white-space:pre}.bO{fill:rgb(114,140,255);white-space:pre}.bP{fill:rgb(115,139,255);white-space:pre}.bQ{fill:rgb(116,138,255);white-space:pre}.bR{fill:rgb(117,137,255);white-space:pre}.bS{fill:rgb(118,136,255);white-space:pre}.bT{fill:rgb(119,135,255);white-space:pre}.bU{fill:rgb(120,134,255);white-space:pre}.bV{fill:rgb(121,133,255);white-space:pre}.bW{fill:rgb(122,132,255);white-space:pre}.bX{fill:rgb(123,131,255);white-space:pre}.bY{fill:rgb(124,130,255);white-space:pre}.bZ{fill:rgb(125,129,255);white-space:pre}.ca{fill:rgb(126,128,255);white-space:pre}.cb{fill:rgb(127,127,255);white-space:pre}.cc{fill:rgb(128,126,255);white-space:pre}.cd{fill:rgb(129,125,255);white-space:pre}.ce{fill:rgb(130,124,255);white-space:pre}.cf{fill:rgb(131,123,255);white-space:pre}.cg{fill:rgb(132,122,255);white-space:pre}.ch{fill:rgb(133,121,255);white-space:pre}.ci{fill:rgb(134,120,255);white-space:pre}.cj{fill:rgb(135,119,255);white-space:pre}.ck{fill:rgb(136,118,255);white-space:pre}.cl{fill:rgb(137,117,255);white-space:pre}.cm{fill:rgb(138,116,255);white-space:pre}.cn{fill:rgb(139,115,255);white-space:pre}.co{fill:rgb(140,114,255);white-space:pre}.cp{fill:rgb(141,113,255);white-space:pre}.cq{fill:rgb(142,112,255);white-space:pre}.cr{fill:rgb(143,111,255);white-space:pre}.cs{fill:rgb(144,110,255);white-space:pre}.ct{fill:rgb(145,109,255);white-space:pre}.cu{fill:rgb(146,108,255);white-space:pre}.cv{fill:rgb(147,107,255);white-space:pre}.cw{fill:rgb(148,106,255);white-space:pre}.cx{fill:rgb(149,105,255);white-space:pre}.cy{fill:rgb(150,104,255);white-space:pre}.cz{fill:rgb(151,103,255);white-space:pre}.cA{fill:rgb(152,102,255);white-space:pre}.cB{fill:rgb(153,101,255);white-space:pre}.cC{fill:rgb(154,100,255);white-space:pre}.cD{fill:rgb(155,99,255);white-space:pre}.cE{fill:rgb(156,98,255);white-space:pre}.cF{fill:rgb(157,97,255);white-space:pre}.cG{fill:rgb(158,96,255);white-space:pre}.cH{fill:rgb(159,95,255);white-space:pre}.cI{fill:rgb(160,94,255);white-space:pre}.cJ{fill:rgb(161,93,255);white-space:pre}.cK{fill:rgb(162,92,255);white-space:pre}.cL{fill:rgb(163,91,255);white-space:pre}.cM{fill:rgb(164,90,255);white-space:pre}.cN{fill:rgb(165,89,255);white-space:pre}.cO{fill:rgb(166,88,255);white-space:pre}.cP{fill:rgb(167,87,255);white-space:pre}.cQ{fill:rgb(168,86,255);white-space:pre}.cR{fill:rgb(169,85,255);white-space:pre}.cS{fill:rgb(170,84,255);white-space:pre}.cT{fill:rgb(171,83,255);white-space:pre}.cU{fill:rgb(172,82,255);white-space:pre}.cV{fill:rgb(173,81,255);white-space:pre}.cW{fill:rgb(174,80,255);white-space:pre}.cX{fill:rgb(175,79,255);white-space:pre}.cY{fill:rgb(176,78,255);white-space:pre}.cZ{fill:rgb(177,77,255);white-space:pre}.da{fill:rgb(178,76,255);white-space:pre}.db{fill:rgb(179,75,255);white-space:pre}.dc{fill:rgb(180,74,255);white-space:pre}.dd{fill:rgb(181,73,255);white-space:pre}.de{fill:rgb(182,72,255);white-space:pre}.df{fill:rgb(183,71,255);white-space:pre}.dg{fill:rgb(255,0,4);white-space:pre}.dh{fill:rgb(243,86,86);white-space:pre}.di{fill:rgb(232,131,136)}.dj{fill:rgb(111,119,131)}.dk{fill:transparent}.dm{animation-duration:104.288205s;animation-iteration-count:infinite;animation-name:dl;animation-timing-function:steps(1,end)}.dn{fill:rgb(255,0,0);white-space:pre}.do{fill:rgb(231,23,0);white-space:pre}.dp{fill:rgb(185,69,0);white-space:pre}.dq{fill:rgb(139,115,0);white-space:pre}.dr{fill:rgb(92,162,0);white-space:pre}.ds{fill:rgb(46,208,0);white-space:pre}.dt{fill:rgb(184,70,255);white-space:pre}.du{fill:rgb(185,69,255);white-space:pre}.dv{fill:rgb(186,68,255);white-space:pre}.dw{fill:rgb(187,67,255);white-space:pre}.dx{fill:rgb(188,66,255);white-space:pre}.dy{fill:rgb(189,65,255);white-space:pre}.dz{fill:rgb(190,64,255);white-space:pre}.dA{fill:rgb(191,63,255);white-space:pre}.dB{fill:rgb(192,62,255);white-space:pre}.dC{fill:rgb(193,61,255);white-space:pre}.dD{fill:rgb(194,60,255);white-space:pre}.dE{fill:rgb(195,59,255);white-space:pre}.dF{fill:rgb(196,58,255);white-space:pre}.dG{fill:rgb(197,57,255);white-space:pre}.dH{fill:rgb(198,56,255);white-space:pre}.dI{fill:rgb(199,55,255);white-space:pre}.dJ{fill:rgb(200,54,255);white-space:pre}.dK{fill:rgb(201,53,255);white-space:pre}.dL{fill:rgb(202,52,255);white-space:pre}.dM{fill:rgb(203,51,255);white-space:pre}.dN{fill:rgb(204,50,255);white-space:pre}.dO{fill:rgb(205,49,255);white-space:pre}.dP{fill:rgb(206,48,255);white-space:pre}.dQ{fill:rgb(207,47,255);white-space:pre}.dR{fill:rgb(208,46,255);white-space:pre}.dS{fill:rgb(209,45,255);white-space:pre}.dT{fill:rgb(210,44,255);white-space:pre}.dU{fill:rgb(211,43,255);white-space:pre}.dV{fill:rgb(212,42,255);white-space:pre}.dW{fill:rgb(213,41,255);white-space:pre}.dX{fill:rgb(214,40,255);white-space:pre}.dY{fill:rgb(215,39,255);white-space:pre}.dZ{fill:rgb(216,38,255);white-space:pre}.ea{fill:rgb(217,37,255);white-space:pre}.eb{fill:rgb(218,36,255);white-space:pre}.ec{fill:rgb(219,35,255);white-space:pre}.ed{fill:rgb(220,34,255);white-space:pre}.ee{fill:rgb(221,33,255);white-space:pre}.ef{fill:rgb(222,32,255);white-space:pre}.eg{fill:rgb(223,31,255);white-space:pre}.eh{fill:rgb(224,30,255);white-space:pre}.ei{fill:rgb(225,29,255);white-space:pre}.ej{fill:rgb(226,28,255);white-space:pre}.ek{fill:rgb(227,27,255);white-space:pre}.el{fill:rgb(228,26,255);white-space:pre}.em{fill:rgb(229,25,255);white-space:pre}.en{fill:rgb(230,24,255);white-space:pre}.eo{fill:rgb(231,23,255);white-space:pre}.ep{fill:rgb(232,22,255);white-space:pre}.eq{fill:rgb(233,21,255);white-space:pre}.er{fill:rgb(234,20,255);white-space:pre}.es{fill:rgb(235,19,255);white-space:pre}.et{fill:rgb(236,18,255);white-space:pre}.eu{fill:rgb(237,17,255);white-space:pre}.ev{fill:rgb(238,16,255);white-space:pre}.ew{fill:rgb(239,15,255);white-space:pre}.ex{fill:rgb(240,14,255);white-space:pre}.ey{fill:rgb(241,13,255);white-space:pre}.ez{fill:rgb(242,12,255);white-space:pre}.eA{fill:rgb(243,11,255);white-space:pre}.eB{fill:rgb(244,10,255);white-space:pre}.eC{fill:rgb(245,9,255);white-space:pre}.eD{fill:rgb(246,8,255);white-space:pre}.eE{fill:rgb(247,7,255);white-space:pre}.eF{fill:rgb(248,6,255);white-space:pre}.eG{fill:rgb(249,5,255);white-space:pre}.eH{fill:rgb(250,4,255);white-space:pre}.eI{fill:rgb(251,3,255);white-space:pre}.eJ{fill:rgb(252,2,255);white-space:pre}.eK{fill:rgb(253,1,255);white-space:pre}.eL{fill:rgb(254,0,255);white-space:pre}@keyframes dl{0%{transform:translateX(-0px)}0.01%{transform:translateX(-80px)}0.2%{transform:translateX(-160px)}0.39%{transform:translateX(-240px)}0.58%{transform:translateX(-320px)}0.78%{transform:translateX(-400px)}0.97%{transform:translateX(-480px)}0.97%{transform:translateX(-560px)}1.16%{transform:translateX(-640px)}1.35%{transform:translateX(-720px)}1.55%{transform:translateX(-800px)}1.74%{transform:translateX(-880px)}1.93%{transform:translateX(-960px)}1.93%{transform:translateX(-1040px)}2.12%{transform:translateX(-1120px)}2.32%{transform:translateX(-1200px)}2.51%{transform:translateX(-1280px)}2.7%{transform:translateX(-1360px)}2.89%{transform:translateX(-1440px)}2.9%{transform:translateX(-1520px)}3.09%{transform:translateX(-1600px)}3.28%{transform:translateX(-1680px)}3.47%{transform:translateX(-1760px)}3.66%{transform:translateX(-1840px)}3.85%{transform:translateX(-1920px)}3.86%{transform:translateX(-2000px)}4.05%{transform:translateX(-2080px)}4.24%{transform:translateX(-2160px)}4.43%{transform:translateX(-2240px)}4.63%{transform:translateX(-2320px)}4.81%{transform:translateX(-2400px)}4.82%{transform:translateX(-2480px)}5.01%{transform:translateX(-2560px)}5.2%{transform:translateX(-2640px)}5.39%{transform:translateX(-2720px)}5.59%{transform:translateX(-2800px)}5.77%{transform:translateX(-2880px)}5.78%{transform:translateX(-2960px)}5.97%{transform:translateX(-3040px)}6.16%{transform:translateX(-3120px)}6.35%{transform:translateX(-3200px)}6.55%{transform:translateX(-3280px)}6.73%{transform:translateX(-3360px)}6.74%{transform:translateX(-3440px)}6.93%{transform:translateX(-3520px)}7.12%{transform:translateX(-3600px)}7.32%{transform:translateX(-3680px)}7.51%{transform:translateX(-3760px)}7.69%{transform:translateX(-3840px)}7.7%{transform:translateX(-3920px)}7.89%{transform:translateX(-4000px)}8.08%{transform:translateX(-4080px)}8.28%{transform:translateX(-4160px)}8.47%{transform:translateX(-4240px)}8.65%{transform:translateX(-4320px)}8.66%{transform:translateX(-4400px)}8.85%{transform:translateX(-4480px)}9.05%{transform:translateX(-4560px)}9.24%{transform:translateX(-4640px)}9.43%{transform:translateX(-4720px)}9.61%{transform:translateX(-4800px)}9.62%{transform:translateX(-4880px)}9.81%{transform:translateX(-4960px)}10.01%{transform:translateX(-5040px)}10.2%{transform:translateX(-5120px)}10.39%{transform:translateX(-5200px)}10.57%{transform:translateX(-5280px)}10.58%{transform:translateX(-5360px)}10.77%{transform:translateX(-5440px)}10.97%{transform:translateX(-5520px)}11.16%{transform:translateX(-5600px)}11.35%{transform:translateX(-5680px)}11.53%{transform:translateX(-5760px)}11.54%{transform:translateX(-5840px)}11.74%{transform:translateX(-5920px)}11.93%{transform:translateX(-6000px)}12.12%{transform:translateX(-6080px)}12.31%{transform:translateX(-6160px)}12.49%{transform:translateX(-6240px)}12.5%{transform:translateX(-6320px)}12.7%{transform:translateX(-6400px)}12.89%{transform:translateX(-6480px)}13.08%{transform:translateX(-6560px)}13.27%{transform:translateX(-6640px)}13.45%{transform:translateX(-6720px)}13.47%{transform:translateX(-6800px)}13.66%{transform:translateX(-6880px)}13.85%{transform:translateX(-6960px)}14.04%{transform:translateX(-7040px)}14.23%{transform:translateX(-7120px)}14.41%{transform:translateX(-7200px)}14.41%{transform:translateX(-7280px)}14.89%{transform:translateX(-7360px)}17.77%{transform:translateX(-7440px)}20.64%{transform:translateX(-7520px)}23.52%{transform:translateX(-7600px)}26.4%{transform:translateX(-7680px)}29.28%{transform:translateX(-7760px)}34.07%{transform:translateX(-7840px)}34.07%{transform:translateX(-7920px)}34.55%{transform:translateX(-8000px)}34.55%{transform:translateX(-8080px)}35.03%{transform:translateX(-8160px)}35.03%{transform:translateX(-8240px)}35.51%{transform:translateX(-8320px)}35.51%{transform:translateX(-8400px)}35.51%{transform:translateX(-8480px)}35.99%{transform:translateX(-8560px)}36.47%{transform:translateX(-8640px)}36.47%{transform:translateX(-8720px)}36.47%{transform:translateX(-8800px)}36.95%{transform:translateX(-8880px)}36.95%{transform:translateX(-8960px)}37.43%{transform:translateX(-9040px)}37.43%{transform:translateX(-9120px)}37.43%{transform:translateX(-9200px)}37.91%{transform:translateX(-9280px)}38.39%{transform:translateX(-9360px)}38.39%{transform:translateX(-9440px)}38.39%{transform:translateX(-9520px)}38.87%{transform:translateX(-9600px)}38.87%{transform:translateX(-9680px)}39.35%{transform:translateX(-9760px)}39.35%{transform:translateX(-9840px)}39.35%{transform:translateX(-9920px)}39.35%{transform:translateX(-10000px)}39.83%{transform:translateX(-10080px)}41.75%{transform:translateX(-10160px)}41.75%{transform:translateX(-10240px)}42.23%{transform:translateX(-10320px)}42.43%{transform:translateX(-10400px)}42.62%{transform:translateX(-10480px)}42.81%{transform:translateX(-10560px)}43%{transform:translateX(-10640px)}43.19%{transform:translateX(-10720px)}43.19%{transform:translateX(-10800px)}43.39%{transform:translateX(-10880px)}43.58%{transform:translateX(-10960px)}43.77%{transform:translateX(-11040px)}43.96%{transform:translateX(-11120px)}44.15%{transform:translateX(-11200px)}44.16%{transform:translateX(-11280px)}44.35%{transform:translateX(-11360px)}44.54%{transform:translateX(-11440px)}44.73%{transform:translateX(-11520px)}44.92%{transform:translateX(-11600px)}45.11%{transform:translateX(-11680px)}45.12%{transform:translateX(-11760px)}45.31%{transform:translateX(-11840px)}45.5%{transform:translateX(-11920px)}45.69%{transform:translateX(-12000px)}45.88%{transform:translateX(-12080px)}46.07%{transform:translateX(-12160px)}47.99%{transform:translateX(-12240px)}47.99%{transform:translateX(-12320px)}48.47%{transform:translateX(-12400px)}48.47%{transform:translateX(-12480px)}49.43%{transform:translateX(-12560px)}50.39%{transform:translateX(-12640px)}51.35%{transform:translateX(-12720px)}52.31%{transform:translateX(-12800px)}53.27%{transform:translateX(-12880px)}54.23%{transform:translateX(-12960px)}55.19%{transform:translateX(-13040px)}56.15%{transform:translateX(-13120px)}57.11%{transform:translateX(-13200px)}59.99%{transform:translateX(-13280px)}59.99%{transform:translateX(-13360px)}60.47%{transform:translateX(-13440px)}60.47%{transform:translateX(-13520px)}60.47%{transform:translateX(-13600px)}64.31%{transform:translateX(-13680px)}64.31%{transform:translateX(-13760px)}64.79%{transform:translateX(-13840px)}64.79%{transform:translateX(-13920px)}64.79%{transform:translateX(-14000px)}64.79%{transform:translateX(-14080px)}71.51%{transform:translateX(-14160px)}71.51%{transform:translateX(-14240px)}71.99%{transform:translateX(-14320px)}71.99%{transform:translateX(-14400px)}72.95%{transform:translateX(-14480px)}73.27%{transform:translateX(-14560px)}73.59%{transform:translateX(-14640px)}73.91%{transform:translateX(-14720px)}74.23%{transform:translateX(-14800px)}74.55%{transform:translateX(-14880px)}74.87%{transform:translateX(-14960px)}75.19%{transform:translateX(-15040px)}75.51%{transform:translateX(-15120px)}75.83%{transform:translateX(-15200px)}76.15%{transform:translateX(-15280px)}76.34%{transform:translateX(-15360px)}76.53%{transform:translateX(-15440px)}76.72%{transform:translateX(-15520px)}78.64%{transform:translateX(-15600px)}78.64%{transform:translateX(-15680px)}79.12%{transform:translateX(-15760px)}79.6%{transform:translateX(-15840px)}79.84%{transform:translateX(-15920px)}80.08%{transform:translateX(-16000px)}80.32%{transform:translateX(-16080px)}80.56%{transform:translateX(-16160px)}80.8%{transform:translateX(-16240px)}81.04%{transform:translateX(-16320px)}81.28%{transform:translateX(-16400px)}81.52%{transform:translateX(-16480px)}81.76%{transform:translateX(-16560px)}82%{transform:translateX(-16640px)}82.24%{transform:translateX(-16720px)}82.48%{transform:translateX(-16800px)}82.72%{transform:translateX(-16880px)}82.96%{transform:translateX(-16960px)}83.2%{transform:translateX(-17040px)}83.44%{transform:translateX(-17120px)}83.68%{transform:translateX(-17200px)}83.93%{transform:translateX(-17280px)}84.17%{transform:translateX(-17360px)}84.41%{transform:translateX(-17440px)}84.65%{transform:translateX(-17520px)}84.89%{transform:translateX(-17600px)}85.13%{transform:translateX(-17680px)}85.37%{transform:translateX(-17760px)}85.61%{transform:translateX(-17840px)}85.85%{transform:translateX(-17920px)}86.09%{transform:translateX(-18000px)}86.33%{transform:translateX(-18080px)}86.57%{transform:translateX(-18160px)}86.81%{transform:translateX(-18240px)}87.05%{transform:translateX(-18320px)}87.29%{transform:translateX(-18400px)}87.53%{transform:translateX(-18480px)}87.77%{transform:translateX(-18560px)}88.01%{transform:translateX(-18640px)}88.25%{transform:translateX(-18720px)}88.49%{transform:translateX(-18800px)}88.73%{transform:translateX(-18880px)}88.97%{transform:translateX(-18960px)}89.21%{transform:translateX(-19040px)}89.45%{transform:translateX(-19120px)}91.85%{transform:translateX(-19200px)}91.85%{transform:translateX(-19280px)}92.33%{transform:translateX(-19360px)}92.33%{transform:translateX(-19440px)}95.21%{transform:translateX(-19520px)}100%{transform:translateX(-19600px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████ PTDP - PTerm Demo Program INFO ThisanimationwasgeneratedwiththelatestversionofPTerm!PTermworksonnearlyeveryterminalandoperatingsystem.It'ssupereasytouse!Ifyouwant,youcancustomizeeverything:)Youcanseethecodeofthisdemointhe./_examples/demodirectory.Thisdemowasupdatedat:16Dec2023-21:10:06UTC▀Waitingfor15seconds...▀Waitingfor14seconds...▀Waitingfor14seconds...▀Waitingfor13seconds...▄Waitingfor13seconds...▄Waitingfor12seconds...▄Waitingfor12seconds...▄Waitingfor11seconds...▀Waitingfor11seconds...▀Waitingfor10seconds...▀Waitingfor10seconds...▀Waitingfor9seconds....▄Waitingfor9seconds....▄Waitingfor8seconds....▄Waitingfor8seconds....▄Waitingfor7seconds....▀Waitingfor7seconds....▀Waitingfor6seconds....▀Waitingfor6seconds....▀Waitingfor5seconds....▄Waitingfor5seconds....▄Waitingfor4seconds....▄Waitingfor4seconds....▄Waitingfor3seconds....▀Waitingfor3seconds....▀Waitingfor2seconds....▀Waitingfor2seconds....▀Waitingfor1second.....▄Waitingfor1second..... Structured Logging 2023-12-1621:10:22TRACEDoingnotsoimportantstuffpriority:superlow2023-12-1621:10:25DEBUGThismightbeinteresting├whenwerecrayonsinvented:1903├whatisthemeaningoflife:42└isthisinteresting:true2023-12-1621:10:28INFOThatwasactuallyinterestingsuch:wow2023-12-1621:10:31WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2023-12-1621:10:34ERRORDamn,hereitis!error:somethingwentwrong Progress bar SUCCESS Installingpseudo-excel SUCCESS Installingpseudo-photoshopInstallingpseudo-photoshop[02/11]██████████████████████████████████18%|1s SUCCESS Installingpseudo-chrome SUCCESS Installingpseudo-outlookInstallingpseudo-outlook[04/11]████████████████████████████████████36%|2s SUCCESS Installingpseudo-explorer SUCCESS Installingpseudo-gitInstallingpseudo-git[06/11]████████████████████████████████████████55%|3s SUCCESS Installingpseudo-vsc SUCCESS Installingpseudo-intellijInstallingpseudo-intellij[08/11]███████████████████████████████████73%|4s WARNING Couldnotinstallpseudo-minecraftThecompanypolicyforbidsgames. SUCCESS Installingpseudo-scoopInstallingpseudo-scoop[10/11]██████████████████████████████████████91%|5s SUCCESS Installingpseudo-chocolateyInstallingpseudo-chocolatey[11/11]█████████████████████████████████100%|5s Spinner Live Output INFO YoucanuseanAreatodisplaychangingoutput:████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ Tables Library|DescriptionPTerm|MakebeautifulCLIsTestza|ProgrammerfriendlytestframeworkCursor|Movethecursoraroundtheterminal TrueColor Support IfyourterminalhasTrueColorsupport,youcanuseRGBcolors!Youcanevenfadethem:)Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametjustoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlabor Fully Customizale ┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘||||||||║║ Themes INFO YoucanchangethecolorthemeofPTermeasilytofityourneeds!Thisisthedefaultone:DefaultTextPrimaryStyleSecondaryStyleHighlightStyleInfoMessageStyleInfoPrefixStyleSuccessMessageStyleSuccessPrefixStyleWarningMessageStyleWarningPrefixStyleErrorMessageStyleErrorPrefixStyleFatalMessageStyleFatalPrefixStyleDescriptionMessageStyleDescriptionPrefixStyleScopeStyleProgressbarBarStyleProgressbarTitleStyleHeaderTextStyleHeaderBackgroundStyleSpinnerStyleSpinnerTextStyleTimerStyleTableStyleTableHeaderStyleTableSeparatorStyleHeatmapStyleHeatmapHeaderStyleHeatmapSeparatorStyleSectionStyleBulletListTextStyleBulletListBulletStyleTreeStyleTreeTextStyleLetterStyleDebugMessageStyleDebugPrefixStyleBoxStyleBoxTextStyleBarLabelStyle And much more! ||▀Waitingfor15seconds...▄Waitingfor15seconds...▄Waitingfor15seconds...▄Waitingfor14seconds...▄Waitingfor14seconds...▄Waitingfor13seconds...▀Waitingfor13seconds...▀Waitingfor12seconds...▀Waitingfor12seconds...▀Waitingfor11seconds...▄Waitingfor11seconds...▄Waitingfor10seconds...▄Waitingfor10seconds...▄Waitingfor9seconds....▀Waitingfor9seconds....▀Waitingfor8seconds....▀Waitingfor8seconds....▀Waitingfor7seconds....▄Waitingfor7seconds....▄Waitingfor6seconds....▄Waitingfor6seconds....▄Waitingfor5seconds....▀Waitingfor5seconds....▀Waitingfor4seconds....▀Waitingfor4seconds....▀Waitingfor3seconds....▄Waitingfor3seconds....▄Waitingfor2seconds....▄Waitingfor2seconds....▄Waitingfor1second.....▀Waitingfor1second.....2023-12-1621:10:37INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:longInstallingstuff[00/11]████████████████████████████████████████████0%|0sInstallingpseudo-excel[01/11]██████████████████████████████████████9%|0sInstallingpseudo-photoshop[01/11]██████████████████████████████████9%|1sInstallingpseudo-chrome[03/11]█████████████████████████████████████27%|1sInstallingpseudo-explorer[04/11]███████████████████████████████████36%|2sInstallingpseudo-explorer[05/11]███████████████████████████████████45%|2sInstallingpseudo-vsc[07/11]████████████████████████████████████████64%|3sInstallingpseudo-minecraft[08/11]██████████████████████████████████73%|4sInstallingpseudo-minecraft[09/11]██████████████████████████████████82%|4s▀Installingpseudo-intellij(0s)▀Installingpseudo-intellij(0s)▄Installingpseudo-intellij(0s)▄Installingpseudo-intellij(1s)▀Installingpseudo-intellij(1s)▀Installingpseudo-minecraft(1s)▄Installingpseudo-minecraft(1s)▄Installingpseudo-minecraft(1s)▀Installingpseudo-minecraft(2s)▀Installingpseudo-minecraft(2s)▄Installingpseudo-scoop(2s)▄Installingpseudo-scoop(2s)▀Installingpseudo-scoop(2s)▀Installingpseudo-scoop(3s)▄Installingpseudo-scoop(3s)▄Installingpseudo-chocolatey(3s)▀Installingpseudo-chocolatey(3s)▀Installingpseudo-chocolatey(3s)▄Installingpseudo-chocolatey(4s)▄Installingpseudo-chocolatey(4s)█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████┌───────────────────────────────────────────────┐|Library|Description||PTerm|MakebeautifulCLIs||Testza|Programmerfriendlytestframework||Cursor|Movethecursoraroundtheterminal|└───────────────────────────────────────────────┘temponoseatakimatasaneetdoloremagnaaliquyamerat,seetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametjustoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.┌─Sometitle!────────────────────────┐┌────────────Sometitle!─────────────┐┌────────────────────────Sometitle!─┐└────────────────────────Sometitle!─┘└────────────Sometitle!─────────────┘└─Sometitle!────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘╔══════════════════════════════════════╗║Allprintersarefullycustomizable!║╚══════════════════════════════════════╝BarStyle┌───────────────────────────────┐|HavefunexploringPTerm!|└───────────────────────────────┘Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(115,190,243)}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.k{fill:rgb(102,194,205)}.l{white-space:pre}.m{fill:rgb(124,255,0);white-space:pre}.n{fill:rgb(255,255,255);white-space:pre}.o{fill:rgb(104,104,104);white-space:pre}.p{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.q{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.r{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.s{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.t{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.u{fill:rgb(255,0,0);white-space:pre}.v{fill:rgb(168,204,140)}.w{fill:rgb(0,198,255);white-space:pre}.x{fill:rgb(231,23,0);white-space:pre}.y{fill:rgb(208,46,0);white-space:pre}.z{fill:rgb(185,69,0);white-space:pre}.A{fill:rgb(162,92,0);white-space:pre}.B{fill:rgb(139,115,0);white-space:pre}.C{fill:rgb(115,139,0);white-space:pre}.D{fill:rgb(92,162,0);white-space:pre}.E{fill:rgb(69,185,0);white-space:pre}.F{fill:rgb(219,171,121)}.G{fill:rgb(255,241,0);white-space:pre}.H{fill:rgb(46,208,0);white-space:pre}.I{fill:rgb(23,231,0);white-space:pre}.J{fill:rgb(0,255,0);white-space:pre}.K{fill:rgb(0,255,255);white-space:pre}.L{fill:rgb(0,254,255);white-space:pre}.M{fill:rgb(1,253,255);white-space:pre}.N{fill:rgb(2,252,255);white-space:pre}.O{fill:rgb(3,251,255);white-space:pre}.P{fill:rgb(4,250,255);white-space:pre}.Q{fill:rgb(5,249,255);white-space:pre}.R{fill:rgb(6,248,255);white-space:pre}.S{fill:rgb(7,247,255);white-space:pre}.T{fill:rgb(8,246,255);white-space:pre}.U{fill:rgb(9,245,255);white-space:pre}.V{fill:rgb(10,244,255);white-space:pre}.W{fill:rgb(11,243,255);white-space:pre}.X{fill:rgb(12,242,255);white-space:pre}.Y{fill:rgb(13,241,255);white-space:pre}.Z{fill:rgb(14,240,255);white-space:pre}.aa{fill:rgb(15,239,255);white-space:pre}.ab{fill:rgb(16,238,255);white-space:pre}.ac{fill:rgb(17,237,255);white-space:pre}.ad{fill:rgb(18,236,255);white-space:pre}.ae{fill:rgb(19,235,255);white-space:pre}.af{fill:rgb(20,234,255);white-space:pre}.ag{fill:rgb(21,233,255);white-space:pre}.ah{fill:rgb(22,232,255);white-space:pre}.ai{fill:rgb(23,231,255);white-space:pre}.aj{fill:rgb(24,230,255);white-space:pre}.ak{fill:rgb(25,229,255);white-space:pre}.al{fill:rgb(26,228,255);white-space:pre}.am{fill:rgb(27,227,255);white-space:pre}.an{fill:rgb(28,226,255);white-space:pre}.ao{fill:rgb(29,225,255);white-space:pre}.ap{fill:rgb(30,224,255);white-space:pre}.aq{fill:rgb(31,223,255);white-space:pre}.ar{fill:rgb(32,222,255);white-space:pre}.as{fill:rgb(34,220,255);white-space:pre}.at{fill:rgb(35,219,255);white-space:pre}.au{fill:rgb(36,218,255);white-space:pre}.av{fill:rgb(37,217,255);white-space:pre}.aw{fill:rgb(38,216,255);white-space:pre}.ax{fill:rgb(39,215,255);white-space:pre}.ay{fill:rgb(40,214,255);white-space:pre}.az{fill:rgb(41,213,255);white-space:pre}.aA{fill:rgb(42,212,255);white-space:pre}.aB{fill:rgb(43,211,255);white-space:pre}.aC{fill:rgb(44,210,255);white-space:pre}.aD{fill:rgb(45,209,255);white-space:pre}.aE{fill:rgb(46,208,255);white-space:pre}.aF{fill:rgb(47,207,255);white-space:pre}.aG{fill:rgb(48,206,255);white-space:pre}.aH{fill:rgb(49,205,255);white-space:pre}.aI{fill:rgb(50,204,255);white-space:pre}.aJ{fill:rgb(51,203,255);white-space:pre}.aK{fill:rgb(52,202,255);white-space:pre}.aL{fill:rgb(53,201,255);white-space:pre}.aM{fill:rgb(54,200,255);white-space:pre}.aN{fill:rgb(55,199,255);white-space:pre}.aO{fill:rgb(56,198,255);white-space:pre}.aP{fill:rgb(57,197,255);white-space:pre}.aQ{fill:rgb(58,196,255);white-space:pre}.aR{fill:rgb(59,195,255);white-space:pre}.aS{fill:rgb(60,194,255);white-space:pre}.aT{fill:rgb(61,193,255);white-space:pre}.aU{fill:rgb(62,192,255);white-space:pre}.aV{fill:rgb(63,191,255);white-space:pre}.aW{fill:rgb(64,190,255);white-space:pre}.aX{fill:rgb(65,189,255);white-space:pre}.aY{fill:rgb(66,188,255);white-space:pre}.aZ{fill:rgb(67,187,255);white-space:pre}.ba{fill:rgb(68,186,255);white-space:pre}.bb{fill:rgb(69,185,255);white-space:pre}.bc{fill:rgb(70,184,255);white-space:pre}.bd{fill:rgb(71,183,255);white-space:pre}.be{fill:rgb(72,182,255);white-space:pre}.bf{fill:rgb(73,181,255);white-space:pre}.bg{fill:rgb(74,180,255);white-space:pre}.bh{fill:rgb(75,179,255);white-space:pre}.bi{fill:rgb(76,178,255);white-space:pre}.bj{fill:rgb(77,177,255);white-space:pre}.bk{fill:rgb(78,176,255);white-space:pre}.bl{fill:rgb(79,175,255);white-space:pre}.bm{fill:rgb(80,174,255);white-space:pre}.bn{fill:rgb(81,173,255);white-space:pre}.bo{fill:rgb(82,172,255);white-space:pre}.bp{fill:rgb(83,171,255);white-space:pre}.bq{fill:rgb(84,170,255);white-space:pre}.br{fill:rgb(85,169,255);white-space:pre}.bs{fill:rgb(86,168,255);white-space:pre}.bt{fill:rgb(87,167,255);white-space:pre}.bu{fill:rgb(88,166,255);white-space:pre}.bv{fill:rgb(89,165,255);white-space:pre}.bw{fill:rgb(90,164,255);white-space:pre}.bx{fill:rgb(91,163,255);white-space:pre}.by{fill:rgb(92,162,255);white-space:pre}.bz{fill:rgb(93,161,255);white-space:pre}.bA{fill:rgb(94,160,255);white-space:pre}.bB{fill:rgb(95,159,255);white-space:pre}.bC{fill:rgb(96,158,255);white-space:pre}.bD{fill:rgb(97,157,255);white-space:pre}.bE{fill:rgb(98,156,255);white-space:pre}.bF{fill:rgb(99,155,255);white-space:pre}.bG{fill:rgb(100,154,255);white-space:pre}.bH{fill:rgb(101,153,255);white-space:pre}.bI{fill:rgb(102,152,255);white-space:pre}.bJ{fill:rgb(103,151,255);white-space:pre}.bK{fill:rgb(104,150,255);white-space:pre}.bL{fill:rgb(105,149,255);white-space:pre}.bM{fill:rgb(106,148,255);white-space:pre}.bN{fill:rgb(107,147,255);white-space:pre}.bO{fill:rgb(108,146,255);white-space:pre}.bP{fill:rgb(109,145,255);white-space:pre}.bQ{fill:rgb(110,144,255);white-space:pre}.bR{fill:rgb(111,143,255);white-space:pre}.bS{fill:rgb(112,142,255);white-space:pre}.bT{fill:rgb(113,141,255);white-space:pre}.bU{fill:rgb(114,140,255);white-space:pre}.bV{fill:rgb(115,139,255);white-space:pre}.bW{fill:rgb(116,138,255);white-space:pre}.bX{fill:rgb(117,137,255);white-space:pre}.bY{fill:rgb(118,136,255);white-space:pre}.bZ{fill:rgb(119,135,255);white-space:pre}.ca{fill:rgb(120,134,255);white-space:pre}.cb{fill:rgb(121,133,255);white-space:pre}.cc{fill:rgb(122,132,255);white-space:pre}.cd{fill:rgb(123,131,255);white-space:pre}.ce{fill:rgb(124,130,255);white-space:pre}.cf{fill:rgb(125,129,255);white-space:pre}.cg{fill:rgb(126,128,255);white-space:pre}.ch{fill:rgb(127,127,255);white-space:pre}.ci{fill:rgb(128,126,255);white-space:pre}.cj{fill:rgb(129,125,255);white-space:pre}.ck{fill:rgb(130,124,255);white-space:pre}.cl{fill:rgb(131,123,255);white-space:pre}.cm{fill:rgb(132,122,255);white-space:pre}.cn{fill:rgb(133,121,255);white-space:pre}.co{fill:rgb(134,120,255);white-space:pre}.cp{fill:rgb(135,119,255);white-space:pre}.cq{fill:rgb(136,118,255);white-space:pre}.cr{fill:rgb(137,117,255);white-space:pre}.cs{fill:rgb(138,116,255);white-space:pre}.ct{fill:rgb(139,115,255);white-space:pre}.cu{fill:rgb(140,114,255);white-space:pre}.cv{fill:rgb(141,113,255);white-space:pre}.cw{fill:rgb(142,112,255);white-space:pre}.cx{fill:rgb(143,111,255);white-space:pre}.cy{fill:rgb(144,110,255);white-space:pre}.cz{fill:rgb(145,109,255);white-space:pre}.cA{fill:rgb(146,108,255);white-space:pre}.cB{fill:rgb(147,107,255);white-space:pre}.cC{fill:rgb(148,106,255);white-space:pre}.cD{fill:rgb(149,105,255);white-space:pre}.cE{fill:rgb(150,104,255);white-space:pre}.cF{fill:rgb(151,103,255);white-space:pre}.cG{fill:rgb(152,102,255);white-space:pre}.cH{fill:rgb(153,101,255);white-space:pre}.cI{fill:rgb(154,100,255);white-space:pre}.cJ{fill:rgb(155,99,255);white-space:pre}.cK{fill:rgb(156,98,255);white-space:pre}.cL{fill:rgb(157,97,255);white-space:pre}.cM{fill:rgb(158,96,255);white-space:pre}.cN{fill:rgb(159,95,255);white-space:pre}.cO{fill:rgb(160,94,255);white-space:pre}.cP{fill:rgb(161,93,255);white-space:pre}.cQ{fill:rgb(162,92,255);white-space:pre}.cR{fill:rgb(163,91,255);white-space:pre}.cS{fill:rgb(164,90,255);white-space:pre}.cT{fill:rgb(165,89,255);white-space:pre}.cU{fill:rgb(166,88,255);white-space:pre}.cV{fill:rgb(167,87,255);white-space:pre}.cW{fill:rgb(168,86,255);white-space:pre}.cX{fill:rgb(169,85,255);white-space:pre}.cY{fill:rgb(170,84,255);white-space:pre}.cZ{fill:rgb(171,83,255);white-space:pre}.da{fill:rgb(172,82,255);white-space:pre}.db{fill:rgb(173,81,255);white-space:pre}.dc{fill:rgb(174,80,255);white-space:pre}.dd{fill:rgb(175,79,255);white-space:pre}.de{fill:rgb(176,78,255);white-space:pre}.df{fill:rgb(177,77,255);white-space:pre}.dg{fill:rgb(178,76,255);white-space:pre}.dh{fill:rgb(179,75,255);white-space:pre}.di{fill:rgb(180,74,255);white-space:pre}.dj{fill:rgb(181,73,255);white-space:pre}.dk{fill:rgb(182,72,255);white-space:pre}.dl{fill:rgb(183,71,255);white-space:pre}.dm{fill:rgb(184,70,255);white-space:pre}.dn{fill:rgb(185,69,255);white-space:pre}.do{fill:rgb(186,68,255);white-space:pre}.dp{fill:rgb(187,67,255);white-space:pre}.dq{fill:rgb(188,66,255);white-space:pre}.dr{fill:rgb(189,65,255);white-space:pre}.ds{fill:rgb(190,64,255);white-space:pre}.dt{fill:rgb(191,63,255);white-space:pre}.du{fill:rgb(192,62,255);white-space:pre}.dv{fill:rgb(193,61,255);white-space:pre}.dw{fill:rgb(194,60,255);white-space:pre}.dx{fill:rgb(195,59,255);white-space:pre}.dy{fill:rgb(196,58,255);white-space:pre}.dz{fill:rgb(197,57,255);white-space:pre}.dA{fill:rgb(198,56,255);white-space:pre}.dB{fill:rgb(199,55,255);white-space:pre}.dC{fill:rgb(200,54,255);white-space:pre}.dD{fill:rgb(201,53,255);white-space:pre}.dE{fill:rgb(202,52,255);white-space:pre}.dF{fill:rgb(203,51,255);white-space:pre}.dG{fill:rgb(204,50,255);white-space:pre}.dH{fill:rgb(205,49,255);white-space:pre}.dI{fill:rgb(206,48,255);white-space:pre}.dJ{fill:rgb(207,47,255);white-space:pre}.dK{fill:rgb(208,46,255);white-space:pre}.dL{fill:rgb(209,45,255);white-space:pre}.dM{fill:rgb(210,44,255);white-space:pre}.dN{fill:rgb(211,43,255);white-space:pre}.dO{fill:rgb(212,42,255);white-space:pre}.dP{fill:rgb(213,41,255);white-space:pre}.dQ{fill:rgb(255,0,4);white-space:pre}.dR{fill:rgb(243,86,86);white-space:pre}.dS{fill:rgb(232,131,136)}.dT{fill:rgb(111,119,131)}.dU{fill:transparent}.dW{animation-duration:104.306172s;animation-iteration-count:infinite;animation-name:dV;animation-timing-function:steps(1,end)}.dX{fill:rgb(214,40,255);white-space:pre}.dY{fill:rgb(215,39,255);white-space:pre}.dZ{fill:rgb(216,38,255);white-space:pre}.ea{fill:rgb(217,37,255);white-space:pre}.eb{fill:rgb(218,36,255);white-space:pre}.ec{fill:rgb(219,35,255);white-space:pre}.ed{fill:rgb(220,34,255);white-space:pre}.ee{fill:rgb(221,33,255);white-space:pre}.ef{fill:rgb(222,32,255);white-space:pre}.eg{fill:rgb(223,31,255);white-space:pre}.eh{fill:rgb(224,30,255);white-space:pre}.ei{fill:rgb(225,29,255);white-space:pre}.ej{fill:rgb(226,28,255);white-space:pre}.ek{fill:rgb(227,27,255);white-space:pre}.el{fill:rgb(228,26,255);white-space:pre}.em{fill:rgb(229,25,255);white-space:pre}.en{fill:rgb(230,24,255);white-space:pre}.eo{fill:rgb(231,23,255);white-space:pre}.ep{fill:rgb(232,22,255);white-space:pre}.eq{fill:rgb(233,21,255);white-space:pre}.er{fill:rgb(234,20,255);white-space:pre}.es{fill:rgb(235,19,255);white-space:pre}.et{fill:rgb(236,18,255);white-space:pre}.eu{fill:rgb(237,17,255);white-space:pre}.ev{fill:rgb(238,16,255);white-space:pre}.ew{fill:rgb(239,15,255);white-space:pre}.ex{fill:rgb(240,14,255);white-space:pre}.ey{fill:rgb(241,13,255);white-space:pre}.ez{fill:rgb(242,12,255);white-space:pre}.eA{fill:rgb(243,11,255);white-space:pre}.eB{fill:rgb(244,10,255);white-space:pre}.eC{fill:rgb(245,9,255);white-space:pre}.eD{fill:rgb(246,8,255);white-space:pre}.eE{fill:rgb(247,7,255);white-space:pre}.eF{fill:rgb(248,6,255);white-space:pre}.eG{fill:rgb(249,5,255);white-space:pre}.eH{fill:rgb(250,4,255);white-space:pre}.eI{fill:rgb(251,3,255);white-space:pre}.eJ{fill:rgb(252,2,255);white-space:pre}.eK{fill:rgb(253,1,255);white-space:pre}.eL{fill:rgb(254,0,255);white-space:pre}@keyframes dV{0%{transform:translateX(-0px)}0.03%{transform:translateX(-80px)}0.03%{transform:translateX(-160px)}0.22%{transform:translateX(-240px)}0.41%{transform:translateX(-320px)}0.6%{transform:translateX(-400px)}0.8%{transform:translateX(-480px)}0.99%{transform:translateX(-560px)}0.99%{transform:translateX(-640px)}1.18%{transform:translateX(-720px)}1.37%{transform:translateX(-800px)}1.57%{transform:translateX(-880px)}1.76%{transform:translateX(-960px)}1.95%{transform:translateX(-1040px)}1.95%{transform:translateX(-1120px)}2.15%{transform:translateX(-1200px)}2.34%{transform:translateX(-1280px)}2.53%{transform:translateX(-1360px)}2.72%{transform:translateX(-1440px)}2.91%{transform:translateX(-1520px)}2.92%{transform:translateX(-1600px)}3.11%{transform:translateX(-1680px)}3.3%{transform:translateX(-1760px)}3.5%{transform:translateX(-1840px)}3.69%{transform:translateX(-1920px)}3.87%{transform:translateX(-2000px)}3.88%{transform:translateX(-2080px)}4.07%{transform:translateX(-2160px)}4.26%{transform:translateX(-2240px)}4.46%{transform:translateX(-2320px)}4.65%{transform:translateX(-2400px)}4.82%{transform:translateX(-2480px)}4.84%{transform:translateX(-2560px)}5.03%{transform:translateX(-2640px)}5.23%{transform:translateX(-2720px)}5.42%{transform:translateX(-2800px)}5.61%{transform:translateX(-2880px)}5.78%{transform:translateX(-2960px)}5.8%{transform:translateX(-3040px)}5.99%{transform:translateX(-3120px)}6.19%{transform:translateX(-3200px)}6.38%{transform:translateX(-3280px)}6.57%{transform:translateX(-3360px)}6.74%{transform:translateX(-3440px)}6.76%{transform:translateX(-3520px)}6.95%{transform:translateX(-3600px)}7.15%{transform:translateX(-3680px)}7.34%{transform:translateX(-3760px)}7.53%{transform:translateX(-3840px)}7.7%{transform:translateX(-3920px)}7.72%{transform:translateX(-4000px)}7.92%{transform:translateX(-4080px)}8.11%{transform:translateX(-4160px)}8.3%{transform:translateX(-4240px)}8.49%{transform:translateX(-4320px)}8.66%{transform:translateX(-4400px)}8.68%{transform:translateX(-4480px)}8.88%{transform:translateX(-4560px)}9.07%{transform:translateX(-4640px)}9.26%{transform:translateX(-4720px)}9.45%{transform:translateX(-4800px)}9.62%{transform:translateX(-4880px)}9.64%{transform:translateX(-4960px)}9.84%{transform:translateX(-5040px)}10.03%{transform:translateX(-5120px)}10.22%{transform:translateX(-5200px)}10.41%{transform:translateX(-5280px)}10.58%{transform:translateX(-5360px)}10.61%{transform:translateX(-5440px)}10.8%{transform:translateX(-5520px)}10.99%{transform:translateX(-5600px)}11.18%{transform:translateX(-5680px)}11.37%{transform:translateX(-5760px)}11.54%{transform:translateX(-5840px)}11.57%{transform:translateX(-5920px)}11.76%{transform:translateX(-6000px)}11.95%{transform:translateX(-6080px)}12.14%{transform:translateX(-6160px)}12.33%{transform:translateX(-6240px)}12.5%{transform:translateX(-6320px)}12.53%{transform:translateX(-6400px)}12.72%{transform:translateX(-6480px)}12.91%{transform:translateX(-6560px)}13.1%{transform:translateX(-6640px)}13.3%{transform:translateX(-6720px)}13.46%{transform:translateX(-6800px)}13.49%{transform:translateX(-6880px)}13.68%{transform:translateX(-6960px)}13.87%{transform:translateX(-7040px)}14.06%{transform:translateX(-7120px)}14.26%{transform:translateX(-7200px)}14.42%{transform:translateX(-7280px)}14.42%{transform:translateX(-7360px)}14.9%{transform:translateX(-7440px)}17.78%{transform:translateX(-7520px)}20.65%{transform:translateX(-7600px)}23.53%{transform:translateX(-7680px)}26.41%{transform:translateX(-7760px)}29.29%{transform:translateX(-7840px)}34.08%{transform:translateX(-7920px)}34.08%{transform:translateX(-8000px)}34.56%{transform:translateX(-8080px)}34.56%{transform:translateX(-8160px)}35.04%{transform:translateX(-8240px)}35.52%{transform:translateX(-8320px)}35.52%{transform:translateX(-8400px)}35.52%{transform:translateX(-8480px)}36%{transform:translateX(-8560px)}36.48%{transform:translateX(-8640px)}36.48%{transform:translateX(-8720px)}36.48%{transform:translateX(-8800px)}36.96%{transform:translateX(-8880px)}36.96%{transform:translateX(-8960px)}37.44%{transform:translateX(-9040px)}37.44%{transform:translateX(-9120px)}37.44%{transform:translateX(-9200px)}37.92%{transform:translateX(-9280px)}38.4%{transform:translateX(-9360px)}38.4%{transform:translateX(-9440px)}38.4%{transform:translateX(-9520px)}38.4%{transform:translateX(-9600px)}38.88%{transform:translateX(-9680px)}39.36%{transform:translateX(-9760px)}39.36%{transform:translateX(-9840px)}39.37%{transform:translateX(-9920px)}39.85%{transform:translateX(-10000px)}41.76%{transform:translateX(-10080px)}41.76%{transform:translateX(-10160px)}42.24%{transform:translateX(-10240px)}42.44%{transform:translateX(-10320px)}42.63%{transform:translateX(-10400px)}42.82%{transform:translateX(-10480px)}43.01%{transform:translateX(-10560px)}43.2%{transform:translateX(-10640px)}43.2%{transform:translateX(-10720px)}43.4%{transform:translateX(-10800px)}43.59%{transform:translateX(-10880px)}43.78%{transform:translateX(-10960px)}43.97%{transform:translateX(-11040px)}44.16%{transform:translateX(-11120px)}44.17%{transform:translateX(-11200px)}44.36%{transform:translateX(-11280px)}44.55%{transform:translateX(-11360px)}44.74%{transform:translateX(-11440px)}44.93%{transform:translateX(-11520px)}45.12%{transform:translateX(-11600px)}45.13%{transform:translateX(-11680px)}45.32%{transform:translateX(-11760px)}45.51%{transform:translateX(-11840px)}45.7%{transform:translateX(-11920px)}45.89%{transform:translateX(-12000px)}46.08%{transform:translateX(-12080px)}48%{transform:translateX(-12160px)}48%{transform:translateX(-12240px)}48.48%{transform:translateX(-12320px)}48.48%{transform:translateX(-12400px)}49.44%{transform:translateX(-12480px)}50.4%{transform:translateX(-12560px)}51.36%{transform:translateX(-12640px)}52.32%{transform:translateX(-12720px)}53.28%{transform:translateX(-12800px)}54.24%{transform:translateX(-12880px)}55.2%{transform:translateX(-12960px)}56.16%{transform:translateX(-13040px)}57.12%{transform:translateX(-13120px)}60%{transform:translateX(-13200px)}60%{transform:translateX(-13280px)}60.48%{transform:translateX(-13360px)}60.48%{transform:translateX(-13440px)}60.48%{transform:translateX(-13520px)}64.32%{transform:translateX(-13600px)}64.32%{transform:translateX(-13680px)}64.8%{transform:translateX(-13760px)}64.8%{transform:translateX(-13840px)}64.8%{transform:translateX(-13920px)}64.8%{transform:translateX(-14000px)}71.51%{transform:translateX(-14080px)}71.51%{transform:translateX(-14160px)}71.99%{transform:translateX(-14240px)}71.99%{transform:translateX(-14320px)}72.95%{transform:translateX(-14400px)}73.27%{transform:translateX(-14480px)}73.59%{transform:translateX(-14560px)}73.91%{transform:translateX(-14640px)}74.23%{transform:translateX(-14720px)}74.55%{transform:translateX(-14800px)}74.87%{transform:translateX(-14880px)}75.19%{transform:translateX(-14960px)}75.51%{transform:translateX(-15040px)}75.83%{transform:translateX(-15120px)}76.15%{transform:translateX(-15200px)}76.34%{transform:translateX(-15280px)}76.54%{transform:translateX(-15360px)}76.73%{transform:translateX(-15440px)}78.65%{transform:translateX(-15520px)}78.65%{transform:translateX(-15600px)}79.13%{transform:translateX(-15680px)}79.61%{transform:translateX(-15760px)}79.85%{transform:translateX(-15840px)}80.09%{transform:translateX(-15920px)}80.33%{transform:translateX(-16000px)}80.57%{transform:translateX(-16080px)}80.81%{transform:translateX(-16160px)}81.05%{transform:translateX(-16240px)}81.29%{transform:translateX(-16320px)}81.53%{transform:translateX(-16400px)}81.77%{transform:translateX(-16480px)}82.01%{transform:translateX(-16560px)}82.25%{transform:translateX(-16640px)}82.49%{transform:translateX(-16720px)}82.73%{transform:translateX(-16800px)}82.97%{transform:translateX(-16880px)}83.21%{transform:translateX(-16960px)}83.45%{transform:translateX(-17040px)}83.69%{transform:translateX(-17120px)}83.93%{transform:translateX(-17200px)}84.17%{transform:translateX(-17280px)}84.41%{transform:translateX(-17360px)}84.65%{transform:translateX(-17440px)}84.89%{transform:translateX(-17520px)}85.13%{transform:translateX(-17600px)}85.37%{transform:translateX(-17680px)}85.61%{transform:translateX(-17760px)}85.85%{transform:translateX(-17840px)}86.09%{transform:translateX(-17920px)}86.33%{transform:translateX(-18000px)}86.57%{transform:translateX(-18080px)}86.81%{transform:translateX(-18160px)}87.05%{transform:translateX(-18240px)}87.29%{transform:translateX(-18320px)}87.53%{transform:translateX(-18400px)}87.77%{transform:translateX(-18480px)}88.01%{transform:translateX(-18560px)}88.25%{transform:translateX(-18640px)}88.49%{transform:translateX(-18720px)}88.73%{transform:translateX(-18800px)}88.97%{transform:translateX(-18880px)}89.21%{transform:translateX(-18960px)}89.45%{transform:translateX(-19040px)}91.85%{transform:translateX(-19120px)}91.85%{transform:translateX(-19200px)}92.33%{transform:translateX(-19280px)}92.33%{transform:translateX(-19360px)}95.21%{transform:translateX(-19440px)}100%{transform:translateX(-19520px)}}███████████████████████████████████████████████████████████████████████████████████████████████████████████████████ PTDP - PTerm Demo Program INFO ThisanimationwasgeneratedwiththelatestversionofPTerm!PTermworksonnearlyeveryterminalandoperatingsystem.It'ssupereasytouse!Ifyouwant,youcancustomizeeverything:)Youcanseethecodeofthisdemointhe./_examples/demodirectory.Thisdemowasupdatedat:09Feb2024-18:54:11UTC▀Waitingfor15seconds...▀Waitingfor14seconds...▀Waitingfor14seconds...▀Waitingfor13seconds...▄Waitingfor13seconds...▄Waitingfor12seconds...▄Waitingfor12seconds...▄Waitingfor11seconds...▀Waitingfor11seconds...▀Waitingfor10seconds...▀Waitingfor10seconds...▀Waitingfor9seconds....▄Waitingfor9seconds....▄Waitingfor8seconds....▄Waitingfor8seconds....▄Waitingfor7seconds....▀Waitingfor7seconds....▀Waitingfor6seconds....▀Waitingfor6seconds....▀Waitingfor5seconds....▄Waitingfor5seconds....▄Waitingfor4seconds....▄Waitingfor4seconds....▄Waitingfor3seconds....▀Waitingfor3seconds....▀Waitingfor2seconds....▀Waitingfor2seconds....▀Waitingfor1second.....▄Waitingfor1second..... Structured Logging 2024-02-0918:54:26TRACEDoingnotsoimportantstuffpriority:superlow2024-02-0918:54:29DEBUGThismightbeinteresting├whatisthemeaningoflife:42├isthisinteresting:true└whenwerecrayonsinvented:19032024-02-0918:54:32INFOThatwasactuallyinterestingsuch:wow2024-02-0918:54:35WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2024-02-0918:54:38ERRORDamn,hereitis!error:somethingwentwrong Progress bar Installingpseudo-excel[00/11]█████████████████████████████████████0%|0sSUCCESS Installingpseudo-excelInstallingpseudo-photoshop[01/11]██████████████████████████████████9%|1s SUCCESS Installingpseudo-photoshopInstallingpseudo-photoshop[02/11]██████████████████████████████████18%|1sInstallingpseudo-chrome[02/11]█████████████████████████████████████18%|1s SUCCESS Installingpseudo-chromeInstallingpseudo-outlook[03/11]████████████████████████████████████27%|2s SUCCESS Installingpseudo-outlookInstallingpseudo-outlook[04/11]████████████████████████████████████36%|2sInstallingpseudo-explorer[04/11]███████████████████████████████████36%|2s SUCCESS Installingpseudo-explorerInstallingpseudo-git[05/11]████████████████████████████████████████45%|3s SUCCESS Installingpseudo-gitInstallingpseudo-git[06/11]████████████████████████████████████████55%|3sInstallingpseudo-vsc[06/11]████████████████████████████████████████55%|3s SUCCESS Installingpseudo-vscInstallingpseudo-intellij[07/11]███████████████████████████████████64%|4s SUCCESS Installingpseudo-intellijInstallingpseudo-intellij[08/11]███████████████████████████████████73%|4sInstallingpseudo-minecraft[08/11]██████████████████████████████████73%|4s WARNING Couldnotinstallpseudo-minecraftThecompanypolicyforbidsgames.Installingpseudo-scoop[09/11]██████████████████████████████████████82%|5s SUCCESS Installingpseudo-scoopInstallingpseudo-scoop[10/11]██████████████████████████████████████91%|5sInstallingpseudo-chocolatey[10/11]█████████████████████████████████91%|5s SUCCESS Installingpseudo-chocolateyInstallingpseudo-chocolatey[11/11]█████████████████████████████████100%|5s Spinner SUCCESS Installingpseudo-scoop SUCCESS Installingpseudo-chocolatey Live Output INFO YoucanuseanAreatodisplaychangingoutput:████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ Tables Library|DescriptionPTerm|MakebeautifulCLIsTestza|ProgrammerfriendlytestframeworkCursor|Movethecursoraroundtheterminal TrueColor Support IfyourterminalhasTrueColorsupport,youcanuseRGBcolors!Youcanevenfadethem:)Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametjustoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametju Fully Customizable ┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘||||||||║║ Themes INFO YoucanchangethecolorthemeofPTermeasilytofityourneeds!Thisisthedefaultone:DefaultTextPrimaryStyleSecondaryStyleHighlightStyleInfoMessageStyleInfoPrefixStyleSuccessMessageStyleSuccessPrefixStyleWarningMessageStyleWarningPrefixStyleErrorMessageStyleErrorPrefixStyleFatalMessageStyleFatalPrefixStyleDescriptionMessageStyleDescriptionPrefixStyleScopeStyleProgressbarBarStyleProgressbarTitleStyleHeaderTextStyleHeaderBackgroundStyleSpinnerStyleSpinnerTextStyleTimerStyleTableStyleTableHeaderStyleTableSeparatorStyleHeatmapStyleHeatmapHeaderStyleHeatmapSeparatorStyleSectionStyleBulletListTextStyleBulletListBulletStyleTreeStyleTreeTextStyleLetterStyleDebugMessageStyleDebugPrefixStyleBoxStyleBoxTextStyleBarLabelStyle And much more! ||▀Waitingfor15seconds...▄Waitingfor15seconds...▄Waitingfor15seconds...▄Waitingfor14seconds...▄Waitingfor14seconds...▄Waitingfor13seconds...▀Waitingfor13seconds...▀Waitingfor12seconds...▀Waitingfor12seconds...▀Waitingfor11seconds...▄Waitingfor11seconds...▄Waitingfor10seconds...▄Waitingfor10seconds...▄Waitingfor9seconds....▀Waitingfor9seconds....▀Waitingfor8seconds....▀Waitingfor8seconds....▀Waitingfor7seconds....▄Waitingfor7seconds....▄Waitingfor6seconds....▄Waitingfor6seconds....▄Waitingfor5seconds....▀Waitingfor5seconds....▀Waitingfor4seconds....▀Waitingfor4seconds....▀Waitingfor3seconds....▄Waitingfor3seconds....▄Waitingfor2seconds....▄Waitingfor2seconds....▄Waitingfor1second.....▀Waitingfor1second.....2024-02-0918:54:41INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:longInstallingstuff[00/11]████████████████████████████████████████████0%|0sInstallingpseudo-excel[01/11]██████████████████████████████████████9%|0sInstallingpseudo-chrome[03/11]█████████████████████████████████████27%|1sInstallingpseudo-explorer[05/11]███████████████████████████████████45%|2sInstallingpseudo-vsc[07/11]████████████████████████████████████████64%|3sInstallingpseudo-minecraft[09/11]██████████████████████████████████82%|4s▀Installingpseudo-intellij(0s)▀Installingpseudo-intellij(0s)▄Installingpseudo-intellij(0s)▄Installingpseudo-intellij(1s)▀Installingpseudo-intellij(1s)▀Installingpseudo-minecraft(1s)▄Installingpseudo-minecraft(1s)▄Installingpseudo-minecraft(1s)▀Installingpseudo-minecraft(2s)▀Installingpseudo-minecraft(2s)▄Installingpseudo-scoop(2s)▄Installingpseudo-scoop(2s)▀Installingpseudo-scoop(2s)▀Installingpseudo-scoop(3s)▄Installingpseudo-scoop(3s)▄Installingpseudo-chocolatey(3s)▀Installingpseudo-chocolatey(3s)▀Installingpseudo-chocolatey(3s)▄Installingpseudo-chocolatey(4s)▄Installingpseudo-chocolatey(4s)████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████┌───────────────────────────────────────────────┐|Library|Description||PTerm|MakebeautifulCLIs||Testza|Programmerfriendlytestframework||Cursor|Movethecursoraroundtheterminal|└───────────────────────────────────────────────┘temporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptuaet,costoduodoloresetearestoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.┌─Sometitle!────────────────────────┐┌────────────Sometitle!─────────────┐┌────────────────────────Sometitle!─┐└────────────────────────Sometitle!─┘└────────────Sometitle!─────────────┘└─Sometitle!────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘┌──────────────────────────────────────┐|Allprintersarefullycustomizable!|└──────────────────────────────────────┘╔══════════════════════════════════════╗║Allprintersarefullycustomizable!║╚══════════════════════════════════════╝BarStyle┌───────────────────────────────┐|HavefunexploringPTerm!|└───────────────────────────────┘Restartinganimation...
\ No newline at end of file
diff --git a/_examples/demo/demo/main.go b/_examples/demo/demo/main.go
index cb3603ce7..4dc38654c 100644
--- a/_examples/demo/demo/main.go
+++ b/_examples/demo/demo/main.go
@@ -131,7 +131,7 @@ func main() {
pterm.DefaultCenter.WithCenterEachLineSeparately().Println(fadeInfo)
})
- showcase("Fully Customizale", 2, func() {
+ showcase("Fully Customizable", 2, func() {
for i := 0; i < 4; i++ {
pterm.Println()
}
diff --git a/_examples/header/README.md b/_examples/header/README.md
index 2b34a4efd..9f1ac858b 100644
--- a/_examples/header/README.md
+++ b/_examples/header/README.md
@@ -1,6 +1,6 @@
-### header/custom
+### header/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/custom/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
@@ -12,27 +12,25 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Customize the DefaultHeader with a cyan background, black text, and a margin of 15.
- pterm.DefaultHeader.WithMargin(15).WithBackgroundStyle(pterm.NewStyle(pterm.BgCyan)).WithTextStyle(pterm.NewStyle(pterm.FgBlack)).Println("This is a custom header!")
+ // Print a default header.
+ // This uses the default settings of PTerm to print a header.
+ pterm.DefaultHeader.Println("This is the default header!")
- // Define a new HeaderPrinter with a red background, black text, and a margin of 20.
- newHeader := pterm.HeaderPrinter{
- TextStyle: pterm.NewStyle(pterm.FgBlack),
- BackgroundStyle: pterm.NewStyle(pterm.BgRed),
- Margin: 20,
- }
+ // Print a spacer line for better readability.
+ pterm.Println()
- // Print the custom header using the new HeaderPrinter.
- newHeader.Println("This is a custom header!")
+ // Print a full-width header.
+ // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
+ pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
}
```
-### header/demo
+### header/custom
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/header/custom/animation.svg)
@@ -44,16 +42,18 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Print a default header.
- // This uses the default settings of PTerm to print a header.
- pterm.DefaultHeader.Println("This is the default header!")
+ // Customize the DefaultHeader with a cyan background, black text, and a margin of 15.
+ pterm.DefaultHeader.WithMargin(15).WithBackgroundStyle(pterm.NewStyle(pterm.BgCyan)).WithTextStyle(pterm.NewStyle(pterm.FgBlack)).Println("This is a custom header!")
- // Print a spacer line for better readability.
- pterm.Println()
+ // Define a new HeaderPrinter with a red background, black text, and a margin of 20.
+ newHeader := pterm.HeaderPrinter{
+ TextStyle: pterm.NewStyle(pterm.FgBlack),
+ BackgroundStyle: pterm.NewStyle(pterm.BgRed),
+ Margin: 20,
+ }
- // Print a full-width header.
- // This uses the WithFullWidth() option of PTerm to print a header that spans the full width of the terminal.
- pterm.DefaultHeader.WithFullWidth().Println("This is a full-width header.")
+ // Print the custom header using the new HeaderPrinter.
+ newHeader.Println("This is a custom header!")
}
```
diff --git a/_examples/header/custom/animation.svg b/_examples/header/custom/animation.svg
index 5f1325284..252cc95db 100644
--- a/_examples/header/custom/animation.svg
+++ b/_examples/header/custom/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{fill:rgb(160,160,160);white-space:pre}.h{white-space:pre}.i{fill:rgb(232,131,136)}.j{fill:transparent}.l{animation-duration:5.296852s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}4.2%{transform:translateX(-80px)}5.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} This is a custom header! This is a custom header! Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{fill:rgb(160,160,160);white-space:pre}.h{white-space:pre}.i{fill:rgb(232,131,136)}.j{fill:transparent}.l{animation-duration:5.379468s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}5.7%{transform:translateX(-80px)}7.1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} This is a custom header! This is a custom header! Restartinganimation...
\ No newline at end of file
diff --git a/_examples/header/demo/animation.svg b/_examples/header/demo/animation.svg
index 27f9088f5..3578dad6c 100644
--- a/_examples/header/demo/animation.svg
+++ b/_examples/header/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.i{fill:transparent}.k{animation-duration:5.484314s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}7.6%{transform:translateX(-80px)}8.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} This is the default header! This is a full-width header. Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.i{fill:transparent}.k{animation-duration:5.366373s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}6%{transform:translateX(-80px)}6.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} This is the default header! This is a full-width header. Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/README.md b/_examples/heatmap/README.md
index 794063391..eea062709 100644
--- a/_examples/heatmap/README.md
+++ b/_examples/heatmap/README.md
@@ -1,3 +1,43 @@
+### heatmap/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
+ data := [][]float32{
+ {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
+ {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
+ {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
+ {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
+ {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
+ }
+
+ // Define the labels for the X and Y axes of the heatmap.
+ headerData := pterm.HeatmapAxis{
+ XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
+ YAxis: []string{"1", "2", "3", "4", "5"},
+ }
+
+ // Create a heatmap with the defined data and axis labels, and enable RGB colors.
+ // Then render the heatmap.
+ pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
+}
+
+```
+
+
+
### heatmap/custom_colors
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/custom_colors/animation.svg)
@@ -156,46 +196,6 @@ func main() {
-### heatmap/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
-)
-
-func main() {
- // Define the data for the heatmap. Each sub-array represents a row in the heatmap.
- data := [][]float32{
- {0.9, 0.2, -0.7, 0.4, -0.5, 0.6, -0.3, 0.8, -0.1, -1.0, 0.1, -0.8, 0.3},
- {0.2, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.9, -0.9, -0.7, -0.5, -0.3},
- {0.4, 0.4, -0.3, -1.0, 0.3, -0.2, -0.9, 0.5, -0.3, -1.0, 0.6, -0.2, -0.9},
- {0.9, -0.5, -0.1, 0.3, 1, -0.7, -0.3, 0.1, 0.7, -0.9, -0.5, 0.2, 0.6},
- {0.5, 0.6, 0.1, -0.2, -0.7, 0.8, 0.6, 0.1, -0.5, -0.7, 0.7, 0.3, 0.0},
- }
-
- // Define the labels for the X and Y axes of the heatmap.
- headerData := pterm.HeatmapAxis{
- XAxis: []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
- YAxis: []string{"1", "2", "3", "4", "5"},
- }
-
- // Create a heatmap with the defined data and axis labels, and enable RGB colors.
- // Then render the heatmap.
- pterm.DefaultHeatmap.WithAxisData(headerData).WithData(data).WithEnableRGB().Render()
-}
-
-```
-
-
-
### heatmap/no_grid
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/heatmap/no_grid/animation.svg)
diff --git a/_examples/heatmap/custom_colors/animation.svg b/_examples/heatmap/custom_colors/animation.svg
index 601e85553..d6fe624b5 100644
--- a/_examples/heatmap/custom_colors/animation.svg
+++ b/_examples/heatmap/custom_colors/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(219,171,121)}.k{fill:rgb(168,204,140)}.l{fill:rgb(113,190,242)}.m{fill:rgb(232,131,136)}.n{fill:transparent}.p{animation-duration:5.3376660000000005s;animation-iteration-count:infinite;animation-name:o;animation-timing-function:steps(1,end)}@keyframes o{0%{transform:translateX(-0px)}5.1%{transform:translateX(-80px)}6.3%{transform:translateX(-160px)}6.3%{transform:translateX(-240px)}6.3%{transform:translateX(-320px)}100%{transform:translateX(-400px)}} INFO Thefollowingtablehasnorgb(supportedbyeveryterminal),noaxisdataandalegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mLegend│ -1 │ -0.33│ 0.33 │ 1 ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(219,171,121)}.k{fill:rgb(168,204,140)}.l{fill:rgb(113,190,242)}.m{fill:rgb(232,131,136)}.n{fill:transparent}.p{animation-duration:5.298403s;animation-iteration-count:infinite;animation-name:o;animation-timing-function:steps(1,end)}@keyframes o{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}5.3%{transform:translateX(-160px)}5.4%{transform:translateX(-240px)}5.4%{transform:translateX(-320px)}5.4%{transform:translateX(-400px)}5.4%{transform:translateX(-480px)}5.4%{transform:translateX(-560px)}5.4%{transform:translateX(-640px)}5.4%{transform:translateX(-720px)}5.4%{transform:translateX(-800px)}5.4%{transform:translateX(-880px)}5.4%{transform:translateX(-960px)}5.4%{transform:translateX(-1040px)}5.4%{transform:translateX(-1120px)}5.4%{transform:translateX(-1200px)}5.4%{transform:translateX(-1280px)}5.4%{transform:translateX(-1360px)}5.4%{transform:translateX(-1440px)}5.4%{transform:translateX(-1520px)}5.4%{transform:translateX(-1600px)}5.4%{transform:translateX(-1680px)}5.4%{transform:translateX(-1760px)}5.4%{transform:translateX(-1840px)}5.4%{transform:translateX(-1920px)}5.4%{transform:translateX(-2000px)}5.5%{transform:translateX(-2080px)}5.5%{transform:translateX(-2160px)}5.5%{transform:translateX(-2240px)}5.6%{transform:translateX(-2320px)}100%{transform:translateX(-2400px)}} INFO Thefollowingtablehasnorgb(supportedbyeveryterminal),noaxisdataandalegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mLegend│ -1 │ -0.33│ 0.33 │ 1 ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼──Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/custom_legend/animation.svg b/_examples/heatmap/custom_legend/animation.svg
index 71ad5228f..c5ca17050 100644
--- a/_examples/heatmap/custom_legend/animation.svg
+++ b/_examples/heatmap/custom_legend/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(25,246,0)}.k{fill:rgb(0,0,0);white-space:pre}.l{fill:rgb(203,183,0)}.m{fill:rgb(255,49,0)}.n{fill:rgb(153,201,0)}.o{fill:rgb(255,82,0)}.p{fill:rgb(102,219,0)}.q{fill:rgb(255,115,0)}.r{fill:rgb(51,237,0)}.s{fill:rgb(255,148,0)}.t{fill:rgb(255,0,0)}.u{fill:rgb(229,174,0)}.v{fill:rgb(255,32,0)}.w{fill:rgb(178,192,0)}.x{fill:rgb(127,210,0)}.y{fill:rgb(255,16,0)}.z{fill:rgb(255,132,0)}.A{fill:rgb(0,255,0)}.B{fill:rgb(76,228,0)}.C{fill:rgb(255,165,0)}.D{fill:rgb(255,11,0)}.E{fill:rgb(255,22,0)}.F{fill:rgb(255,34,0)}.G{fill:rgb(255,45,0)}.H{fill:rgb(255,56,0)}.I{fill:rgb(255,68,0)}.J{fill:rgb(255,79,0)}.K{fill:rgb(255,91,0)}.L{fill:rgb(255,102,0)}.M{fill:rgb(255,113,0)}.N{fill:rgb(255,125,0)}.O{fill:rgb(255,136,0)}.P{fill:rgb(255,147,0)}.Q{fill:rgb(255,159,0)}.R{fill:rgb(246,168,0)}.S{fill:rgb(228,174,0)}.T{fill:rgb(211,180,0)}.U{fill:rgb(193,186,0)}.V{fill:rgb(175,192,0)}.W{fill:rgb(158,199,0)}.X{fill:rgb(140,205,0)}.Y{fill:rgb(123,211,0)}.Z{fill:rgb(105,217,0)}.aa{fill:rgb(87,223,0)}.ab{fill:rgb(70,230,0)}.ac{fill:rgb(52,236,0)}.ad{fill:rgb(35,242,0)}.ae{fill:rgb(17,248,0)}.af{fill:transparent}.ah{animation-duration:5.303586s;animation-iteration-count:infinite;animation-name:ag;animation-timing-function:steps(1,end)}@keyframes ag{0%{transform:translateX(-0px)}4.6%{transform:translateX(-80px)}5.7%{transform:translateX(-160px)}5.7%{transform:translateX(-240px)}5.7%{transform:translateX(-320px)}5.7%{transform:translateX(-400px)}100%{transform:translateX(-480px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandacustomlegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mcustom│────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───────┼────┼────┼────┼────┼────┼────┼───custom│Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(25,246,0)}.k{fill:rgb(0,0,0);white-space:pre}.l{fill:rgb(203,183,0)}.m{fill:rgb(255,49,0)}.n{fill:rgb(153,201,0)}.o{fill:rgb(255,82,0)}.p{fill:rgb(102,219,0)}.q{fill:rgb(255,115,0)}.r{fill:rgb(51,237,0)}.s{fill:rgb(255,148,0)}.t{fill:rgb(255,0,0)}.u{fill:rgb(229,174,0)}.v{fill:rgb(255,32,0)}.w{fill:rgb(178,192,0)}.x{fill:rgb(127,210,0)}.y{fill:rgb(255,16,0)}.z{fill:rgb(255,132,0)}.A{fill:rgb(0,255,0)}.B{fill:rgb(76,228,0)}.C{fill:rgb(255,165,0)}.D{fill:rgb(255,11,0)}.E{fill:rgb(255,22,0)}.F{fill:rgb(255,34,0)}.G{fill:rgb(255,45,0)}.H{fill:rgb(255,56,0)}.I{fill:rgb(255,68,0)}.J{fill:rgb(255,79,0)}.K{fill:rgb(255,91,0)}.L{fill:rgb(255,102,0)}.M{fill:rgb(255,113,0)}.N{fill:rgb(255,125,0)}.O{fill:rgb(255,136,0)}.P{fill:rgb(255,147,0)}.Q{fill:rgb(255,159,0)}.R{fill:rgb(246,168,0)}.S{fill:rgb(228,174,0)}.T{fill:rgb(211,180,0)}.U{fill:rgb(193,186,0)}.V{fill:rgb(175,192,0)}.W{fill:rgb(158,199,0)}.X{fill:rgb(140,205,0)}.Y{fill:rgb(123,211,0)}.Z{fill:rgb(105,217,0)}.aa{fill:rgb(87,223,0)}.ab{fill:rgb(70,230,0)}.ac{fill:rgb(52,236,0)}.ad{fill:rgb(35,242,0)}.ae{fill:rgb(17,248,0)}.af{fill:transparent}.ah{animation-duration:5.27623s;animation-iteration-count:infinite;animation-name:ag;animation-timing-function:steps(1,end)}@keyframes ag{0%{transform:translateX(-0px)}4.3%{transform:translateX(-80px)}5.2%{transform:translateX(-160px)}5.2%{transform:translateX(-240px)}5.2%{transform:translateX(-320px)}5.2%{transform:translateX(-400px)}100%{transform:translateX(-480px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandacustomlegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mcustom│────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───────┼────┼────┼────┼────┼────┼────┼───custom│Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/custom_rgb/animation.svg b/_examples/heatmap/custom_rgb/animation.svg
index 4bcd91ee4..904c74c90 100644
--- a/_examples/heatmap/custom_rgb/animation.svg
+++ b/_examples/heatmap/custom_rgb/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(216,255,0)}.k{fill:rgb(0,0,0);white-space:pre}.l{fill:rgb(50,204,0)}.m{fill:rgb(114,0,140)}.n{fill:rgb(25,255,0)}.o{fill:rgb(191,0,63)}.p{fill:rgb(101,255,0)}.q{fill:rgb(242,12,0)}.r{fill:rgb(178,255,0)}.s{fill:rgb(165,89,0)}.t{fill:rgb(0,0,255)}.u{fill:rgb(89,165,0)}.v{fill:rgb(76,0,178)}.w{fill:rgb(12,242,0)}.x{fill:rgb(63,255,0)}.y{fill:rgb(38,0,216)}.z{fill:rgb(204,50,0)}.A{fill:rgb(255,255,0)}.B{fill:rgb(140,255,0)}.C{fill:rgb(127,127,0)}.D{fill:rgb(84,0,170)}.E{fill:rgb(169,0,85)}.F{fill:rgb(255,0,0)}.G{fill:rgb(170,84,0)}.H{fill:rgb(84,170,0)}.I{fill:rgb(0,255,0)}.J{fill:rgb(84,255,0)}.K{fill:rgb(170,255,0)}.L{fill:transparent}.N{animation-duration:5.405829s;animation-iteration-count:infinite;animation-name:M;animation-timing-function:steps(1,end)}@keyframes M{0%{transform:translateX(-0px)}5.7%{transform:translateX(-80px)}7.5%{transform:translateX(-160px)}7.5%{transform:translateX(-240px)}7.5%{transform:translateX(-320px)}100%{transform:translateX(-400px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandalegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mLegend│ -1 │ -0.78│ -0.56│ -0.33│ -0.11│ 0.11 │ 0.33 │ 0.56 │ 0.78 │ 1 ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────────┼────┼────┼────┼────┼────┼────┼────Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(216,255,0)}.k{fill:rgb(0,0,0);white-space:pre}.l{fill:rgb(50,204,0)}.m{fill:rgb(114,0,140)}.n{fill:rgb(25,255,0)}.o{fill:rgb(191,0,63)}.p{fill:rgb(101,255,0)}.q{fill:rgb(242,12,0)}.r{fill:rgb(178,255,0)}.s{fill:rgb(165,89,0)}.t{fill:rgb(0,0,255)}.u{fill:rgb(89,165,0)}.v{fill:rgb(76,0,178)}.w{fill:rgb(12,242,0)}.x{fill:rgb(63,255,0)}.y{fill:rgb(38,0,216)}.z{fill:rgb(204,50,0)}.A{fill:rgb(255,255,0)}.B{fill:rgb(140,255,0)}.C{fill:rgb(127,127,0)}.D{fill:rgb(84,0,170)}.E{fill:rgb(169,0,85)}.F{fill:rgb(255,0,0)}.G{fill:rgb(170,84,0)}.H{fill:rgb(84,170,0)}.I{fill:rgb(0,255,0)}.J{fill:rgb(84,255,0)}.K{fill:rgb(170,255,0)}.L{fill:transparent}.N{animation-duration:5.392633s;animation-iteration-count:infinite;animation-name:M;animation-timing-function:steps(1,end)}@keyframes M{0%{transform:translateX(-0px)}5.8%{transform:translateX(-80px)}7.3%{transform:translateX(-160px)}7.3%{transform:translateX(-240px)}7.3%{transform:translateX(-320px)}100%{transform:translateX(-400px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandalegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│mLegend│ -1 │ -0.78│ -0.56│ -0.33│ -0.11│ 0.11 │ 0.33 │ 0.56 │ 0.78 │ 1 ────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────────┼────┼────┼────┼────┼────┼────┼────Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/demo/animation.svg b/_examples/heatmap/demo/animation.svg
index 28e3dcd2d..8cc1fda72 100644
--- a/_examples/heatmap/demo/animation.svg
+++ b/_examples/heatmap/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:rgb(25,246,0)}.i{fill:rgb(0,0,0);white-space:pre}.j{fill:rgb(203,183,0)}.k{fill:rgb(255,49,0)}.l{fill:rgb(153,201,0)}.m{fill:rgb(255,82,0)}.n{fill:rgb(102,219,0)}.o{fill:rgb(255,115,0)}.p{fill:rgb(51,237,0)}.q{fill:rgb(255,148,0)}.r{fill:rgb(255,0,0)}.s{fill:rgb(229,174,0)}.t{fill:rgb(255,32,0)}.u{fill:rgb(178,192,0)}.v{fill:rgb(127,210,0)}.w{fill:rgb(255,16,0)}.x{fill:rgb(255,132,0)}.y{fill:rgb(0,255,0)}.z{fill:rgb(76,228,0)}.A{fill:rgb(255,165,0)}.B{fill:rgb(255,36,0)}.C{fill:rgb(255,73,0)}.D{fill:rgb(255,110,0)}.E{fill:rgb(255,146,0)}.F{fill:rgb(226,175,0)}.G{fill:rgb(170,195,0)}.H{fill:rgb(113,215,0)}.I{fill:rgb(56,235,0)}.J{fill:transparent}.L{animation-duration:5.345634s;animation-iteration-count:infinite;animation-name:K;animation-timing-function:steps(1,end)}@keyframes K{0%{transform:translateX(-0px)}5.4%{transform:translateX(-80px)}6.4%{transform:translateX(-160px)}6.4%{transform:translateX(-240px)}6.4%{transform:translateX(-320px)}6.4%{transform:translateX(-400px)}6.5%{transform:translateX(-480px)}6.5%{transform:translateX(-560px)}6.5%{transform:translateX(-640px)}6.5%{transform:translateX(-720px)}6.5%{transform:translateX(-800px)}6.5%{transform:translateX(-880px)}6.5%{transform:translateX(-960px)}6.5%{transform:translateX(-1040px)}6.5%{transform:translateX(-1120px)}100%{transform:translateX(-1200px)}}┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐│1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3│├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤│2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.3││3│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.9││4│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.6││5│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │││a│b│c│d│e│f│g│h│i│j│k│l│m│└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐│Legend│ -1 │ -0.78│ -0.56│ -0.33│ -0.11│ 0.11 │ 0.33 │ 0.56 │ 0.78 │ 1 │└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘├────┼────┼────┼────┼────┼────┼────┼────┼────┼─├────┼────┼────┼────┼───└────┴───┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬────┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────└──────┴──────┴──────┴──────┴──────┴──────┴──────┴─Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:rgb(25,246,0)}.i{fill:rgb(0,0,0);white-space:pre}.j{fill:rgb(203,183,0)}.k{fill:rgb(255,49,0)}.l{fill:rgb(153,201,0)}.m{fill:rgb(255,82,0)}.n{fill:rgb(102,219,0)}.o{fill:rgb(255,115,0)}.p{fill:rgb(51,237,0)}.q{fill:rgb(255,148,0)}.r{fill:rgb(255,0,0)}.s{fill:rgb(229,174,0)}.t{fill:rgb(255,32,0)}.u{fill:rgb(178,192,0)}.v{fill:rgb(127,210,0)}.w{fill:rgb(255,16,0)}.x{fill:rgb(255,132,0)}.y{fill:rgb(0,255,0)}.z{fill:rgb(76,228,0)}.A{fill:rgb(255,165,0)}.B{fill:rgb(255,36,0)}.C{fill:rgb(255,73,0)}.D{fill:rgb(255,110,0)}.E{fill:rgb(255,146,0)}.F{fill:rgb(226,175,0)}.G{fill:rgb(170,195,0)}.H{fill:rgb(113,215,0)}.I{fill:rgb(56,235,0)}.J{fill:transparent}.L{animation-duration:5.383933s;animation-iteration-count:infinite;animation-name:K;animation-timing-function:steps(1,end)}@keyframes K{0%{transform:translateX(-0px)}5.9%{transform:translateX(-80px)}7.1%{transform:translateX(-160px)}7.1%{transform:translateX(-240px)}7.1%{transform:translateX(-320px)}7.1%{transform:translateX(-400px)}7.1%{transform:translateX(-480px)}7.1%{transform:translateX(-560px)}7.1%{transform:translateX(-640px)}7.1%{transform:translateX(-720px)}7.1%{transform:translateX(-800px)}7.1%{transform:translateX(-880px)}7.1%{transform:translateX(-960px)}7.1%{transform:translateX(-1040px)}7.1%{transform:translateX(-1120px)}100%{transform:translateX(-1200px)}}┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐│1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3│├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤│2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.3││3│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.9││4│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.6││5│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │││a│b│c│d│e│f│g│h│i│j│k│l│m│└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐│Legend│ -1 │ -0.78│ -0.56│ -0.33│ -0.11│ 0.11 │ 0.33 │ 0.56 │ 0.78 │ 1 │└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘├────┼────┼────┼────┼────┼────┼────┼────┼────┼─├────┼────┼────┼────┼───└────┴───┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬────┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────└──────┴──────┴──────┴──────┴──────┴──────┴──────┴─Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/no_grid/animation.svg b/_examples/heatmap/no_grid/animation.svg
index 94c19a708..66fd62a47 100644
--- a/_examples/heatmap/no_grid/animation.svg
+++ b/_examples/heatmap/no_grid/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(25,246,0)}.j{fill:rgb(0,0,0);white-space:pre}.k{fill:rgb(203,183,0)}.l{fill:rgb(255,49,0)}.m{fill:rgb(153,201,0)}.n{fill:rgb(255,82,0)}.o{fill:rgb(102,219,0)}.p{fill:rgb(255,115,0)}.q{fill:rgb(51,237,0)}.r{fill:rgb(255,148,0)}.s{fill:rgb(255,0,0)}.t{fill:rgb(229,174,0)}.u{fill:rgb(255,32,0)}.v{fill:rgb(178,192,0)}.w{fill:rgb(127,210,0)}.x{fill:rgb(255,16,0)}.y{fill:rgb(255,132,0)}.z{fill:rgb(0,255,0)}.A{fill:rgb(76,228,0)}.B{fill:rgb(255,165,0)}.C{fill:rgb(255,36,0)}.D{fill:rgb(255,73,0)}.E{fill:rgb(255,110,0)}.F{fill:rgb(255,146,0)}.G{fill:rgb(226,175,0)}.H{fill:rgb(170,195,0)}.I{fill:rgb(113,215,0)}.J{fill:rgb(56,235,0)}.K{fill:transparent}.M{animation-duration:5.36154s;animation-iteration-count:infinite;animation-name:L;animation-timing-function:steps(1,end)}.N{fill:rgb(160,160,160);white-space:pre}@keyframes L{0%{transform:translateX(-0px)}4.8%{transform:translateX(-80px)}6.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandalegend.1 0.9 0.2-0.7 0.4-0.5 0.6-0.3 0.8-0.1 -1 0.1-0.8 0.32 0.2-0.7-0.5-0.3-0.1 0.1 0.3 0.5 0.9-0.9-0.7-0.5-0.33 0.4 0.4-0.3 -1 0.3-0.2-0.9 0.5-0.3 -1 0.6-0.2-0.94 0.9-0.5-0.1 0.3 1 -0.7-0.3 0.1 0.7-0.9-0.5 0.2 0.65 0.5 0.6 0.1-0.2-0.7 0.8 0.6 0.1-0.5-0.7 0.7 0.3 0 abcdefghijklmLegend -1 -0.78 -0.56 -0.33 -0.11 0.11 0.33 0.56 0.78 1 Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(25,246,0)}.j{fill:rgb(0,0,0);white-space:pre}.k{fill:rgb(203,183,0)}.l{fill:rgb(255,49,0)}.m{fill:rgb(153,201,0)}.n{fill:rgb(255,82,0)}.o{fill:rgb(102,219,0)}.p{fill:rgb(255,115,0)}.q{fill:rgb(51,237,0)}.r{fill:rgb(255,148,0)}.s{fill:rgb(255,0,0)}.t{fill:rgb(229,174,0)}.u{fill:rgb(255,32,0)}.v{fill:rgb(178,192,0)}.w{fill:rgb(127,210,0)}.x{fill:rgb(255,16,0)}.y{fill:rgb(255,132,0)}.z{fill:rgb(0,255,0)}.A{fill:rgb(76,228,0)}.B{fill:rgb(255,165,0)}.C{fill:rgb(255,36,0)}.D{fill:rgb(255,73,0)}.E{fill:rgb(255,110,0)}.F{fill:rgb(255,146,0)}.G{fill:rgb(226,175,0)}.H{fill:rgb(170,195,0)}.I{fill:rgb(113,215,0)}.J{fill:rgb(56,235,0)}.K{fill:transparent}.M{animation-duration:5.361449s;animation-iteration-count:infinite;animation-name:L;animation-timing-function:steps(1,end)}.N{fill:rgb(160,160,160);white-space:pre}@keyframes L{0%{transform:translateX(-0px)}5.9%{transform:translateX(-80px)}6.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} INFO Thefollowingtablehasrgb(notsupportedbyeveryterminal),axisdataandalegend.1 0.9 0.2-0.7 0.4-0.5 0.6-0.3 0.8-0.1 -1 0.1-0.8 0.32 0.2-0.7-0.5-0.3-0.1 0.1 0.3 0.5 0.9-0.9-0.7-0.5-0.33 0.4 0.4-0.3 -1 0.3-0.2-0.9 0.5-0.3 -1 0.6-0.2-0.94 0.9-0.5-0.1 0.3 1 -0.7-0.3 0.1 0.7-0.9-0.5 0.2 0.65 0.5 0.6 0.1-0.2-0.7 0.8 0.6 0.1-0.5-0.7 0.7 0.3 0 abcdefghijklmLegend -1 -0.78 -0.56 -0.33 -0.11 0.11 0.33 0.56 0.78 1 Restartinganimation...
\ No newline at end of file
diff --git a/_examples/heatmap/separated/animation.svg b/_examples/heatmap/separated/animation.svg
index 711c8e696..839d6b9fc 100644
--- a/_examples/heatmap/separated/animation.svg
+++ b/_examples/heatmap/separated/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(168,204,140)}.k{fill:rgb(219,171,121)}.l{fill:rgb(232,131,136)}.m{fill:transparent}.o{animation-duration:5.4153970000000005s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}6.1%{transform:translateX(-80px)}7.7%{transform:translateX(-160px)}7.7%{transform:translateX(-240px)}7.7%{transform:translateX(-320px)}100%{transform:translateX(-400px)}} INFO Thefollowingtablehasnorgb(supportedbyeveryterminal),noaxisdataandnolegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│m────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(168,204,140)}.k{fill:rgb(219,171,121)}.l{fill:rgb(232,131,136)}.m{fill:transparent}.o{animation-duration:5.267543s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}3.6%{transform:translateX(-80px)}5.1%{transform:translateX(-160px)}5.1%{transform:translateX(-240px)}5.1%{transform:translateX(-320px)}100%{transform:translateX(-400px)}} INFO Thefollowingtablehasnorgb(supportedbyeveryterminal),noaxisdataandnolegend.1│ 0.9│ 0.2│-0.7│ 0.4│-0.5│ 0.6│-0.3│ 0.8│-0.1│ -1 │ 0.1│-0.8│ 0.3────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────2│ 0.2│-0.7│-0.5│-0.3│-0.1│ 0.1│ 0.3│ 0.5│ 0.9│-0.9│-0.7│-0.5│-0.33│ 0.4│ 0.4│-0.3│ -1 │ 0.3│-0.2│-0.9│ 0.5│-0.3│ -1 │ 0.6│-0.2│-0.94│ 0.9│-0.5│-0.1│ 0.3│ 1 │-0.7│-0.3│ 0.1│ 0.7│-0.9│-0.5│ 0.2│ 0.65│ 0.5│ 0.6│ 0.1│-0.2│-0.7│ 0.8│ 0.6│ 0.1│-0.5│-0.7│ 0.7│ 0.3│ 0 │a│b│c│d│e│f│g│h│i│j│k│l│m────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_confirm/demo/animation.svg b/_examples/interactive_confirm/demo/animation.svg
index a87a17958..bfbd90b65 100644
--- a/_examples/interactive_confirm/demo/animation.svg
+++ b/_examples/interactive_confirm/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(124,255,0);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:7.2579530000000005s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}3.5%{transform:translateX(-80px)}31.1%{transform:translateX(-160px)}31.1%{transform:translateX(-240px)}31.1%{transform:translateX(-320px)}31.1%{transform:translateX(-400px)}31.1%{transform:translateX(-480px)}31.1%{transform:translateX(-560px)}100%{transform:translateX(-640px)}}Pleaseconfirm[y/N]:Yes INFO Youanswered:YesPleaseconfirm[y/N]:Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(124,255,0);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:7.210325s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}2.9%{transform:translateX(-80px)}30.6%{transform:translateX(-160px)}30.6%{transform:translateX(-240px)}30.6%{transform:translateX(-320px)}30.6%{transform:translateX(-400px)}30.7%{transform:translateX(-480px)}30.7%{transform:translateX(-560px)}100%{transform:translateX(-640px)}}Pleaseconfirm[y/N]:Yes INFO Youanswered:YesPleaseconfirm[y/N]:Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_continue/demo/animation.svg b/_examples/interactive_continue/demo/animation.svg
index ee82f6e45..2475e7ae6 100644
--- a/_examples/interactive_continue/demo/animation.svg
+++ b/_examples/interactive_continue/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(124,255,0);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:7.1339310000000005s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}1.8%{transform:translateX(-80px)}29.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Doyouwanttocontinue[Yes/no/all/cancel]:yes INFO Youanswered:yesDoyouwanttocontinue[Yes/no/all/cancel]:Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(124,255,0);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:7.3452459999999995s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}.o{fill:rgb(160,160,160);white-space:pre}@keyframes m{0%{transform:translateX(-0px)}4.7%{transform:translateX(-80px)}31.9%{transform:translateX(-160px)}31.9%{transform:translateX(-240px)}31.9%{transform:translateX(-320px)}31.9%{transform:translateX(-400px)}100%{transform:translateX(-480px)}}Doyouwanttocontinue[Yes/no/all/cancel]:yes INFO Youanswered:yesDoyouwanttocontinue[Yes/no/all/cancel]:Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_multiselect/README.md b/_examples/interactive_multiselect/README.md
index 8c243b0c7..19c085f60 100644
--- a/_examples/interactive_multiselect/README.md
+++ b/_examples/interactive_multiselect/README.md
@@ -1,6 +1,6 @@
-### interactive_multiselect/custom-checkmarks
+### interactive_multiselect/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
@@ -10,33 +10,29 @@
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options
+ // Initialize an empty slice to hold the options.
var options []string
- // Populate the options slice with 5 options
- for i := 0; i < 5; i++ {
+ // Populate the options slice with 100 options.
+ for i := 0; i < 100; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Create a new interactive multiselect printer with the options
- // Disable the filter, set the keys for confirming and selecting, and define the checkmark symbols
- printer := pterm.DefaultInteractiveMultiselect.
- WithOptions(options).
- WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space).
- WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
+ // Add 5 more options to the slice, indicating the availability of fuzzy searching.
+ for i := 0; i < 5; i++ {
+ options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
+ }
- // Show the interactive multiselect and get the selected options
- selectedOptions, _ := printer.Show()
+ // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
+ // The Show() method displays the options and waits for user input.
+ selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
- // Print the selected options
+ // Print the selected options, highlighted in green.
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
@@ -44,9 +40,9 @@ func main() {
-### interactive_multiselect/custom-keys
+### interactive_multiselect/custom-checkmarks
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-checkmarks/animation.svg)
@@ -56,7 +52,6 @@ func main() {
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
@@ -71,12 +66,11 @@ func main() {
}
// Create a new interactive multiselect printer with the options
- // Disable the filter and set the keys for confirming and selecting options
+ // Disable the filter and define the checkmark symbols
printer := pterm.DefaultInteractiveMultiselect.
WithOptions(options).
WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space)
+ WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
// Show the interactive multiselect and get the selected options
selectedOptions, _ := printer.Show()
@@ -89,9 +83,9 @@ func main() {
-### interactive_multiselect/demo
+### interactive_multiselect/custom-keys
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_multiselect/custom-keys/animation.svg)
@@ -101,29 +95,32 @@ func main() {
package main
import (
+ "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
func main() {
- // Initialize an empty slice to hold the options.
+ // Initialize an empty slice to hold the options
var options []string
- // Populate the options slice with 100 options.
- for i := 0; i < 100; i++ {
+ // Populate the options slice with 5 options
+ for i := 0; i < 5; i++ {
options = append(options, fmt.Sprintf("Option %d", i))
}
- // Add 5 more options to the slice, indicating the availability of fuzzy searching.
- for i := 0; i < 5; i++ {
- options = append(options, fmt.Sprintf("You can use fuzzy searching (%d)", i))
- }
+ // Create a new interactive multiselect printer with the options
+ // Disable the filter and set the keys for confirming and selecting options
+ printer := pterm.DefaultInteractiveMultiselect.
+ WithOptions(options).
+ WithFilter(false).
+ WithKeyConfirm(keys.Enter).
+ WithKeySelect(keys.Space)
- // Use PTerm's interactive multiselect to present the options to the user and capture their selections.
- // The Show() method displays the options and waits for user input.
- selectedOptions, _ := pterm.DefaultInteractiveMultiselect.WithOptions(options).Show()
+ // Show the interactive multiselect and get the selected options
+ selectedOptions, _ := printer.Show()
- // Print the selected options, highlighted in green.
+ // Print the selected options
pterm.Info.Printfln("Selected options: %s", pterm.Green(selectedOptions))
}
diff --git a/_examples/interactive_multiselect/custom-checkmarks/README.md b/_examples/interactive_multiselect/custom-checkmarks/README.md
index 93c204175..50e5050e5 100644
--- a/_examples/interactive_multiselect/custom-checkmarks/README.md
+++ b/_examples/interactive_multiselect/custom-checkmarks/README.md
@@ -6,7 +6,6 @@
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
@@ -21,12 +20,10 @@ func main() {
}
// Create a new interactive multiselect printer with the options
- // Disable the filter, set the keys for confirming and selecting, and define the checkmark symbols
+ // Disable the filter and define the checkmark symbols
printer := pterm.DefaultInteractiveMultiselect.
WithOptions(options).
WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space).
WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
// Show the interactive multiselect and get the selected options
diff --git a/_examples/interactive_multiselect/custom-checkmarks/animation.svg b/_examples/interactive_multiselect/custom-checkmarks/animation.svg
index d76dc7611..98904ea91 100644
--- a/_examples/interactive_multiselect/custom-checkmarks/animation.svg
+++ b/_examples/interactive_multiselect/custom-checkmarks/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(102,194,205)}.l{white-space:pre}.m{fill:rgb(124,255,0);white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:6.318848s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}3.4%{transform:translateX(-80px)}3.8%{transform:translateX(-160px)}19.2%{transform:translateX(-240px)}19.2%{transform:translateX(-320px)}19.2%{transform:translateX(-400px)}19.2%{transform:translateX(-480px)}19.2%{transform:translateX(-560px)}19.2%{transform:translateX(-640px)}19.2%{transform:translateX(-720px)}19.3%{transform:translateX(-800px)}19.3%{transform:translateX(-880px)}20.8%{transform:translateX(-960px)}20.8%{transform:translateX(-1040px)}20.8%{transform:translateX(-1120px)}20.8%{transform:translateX(-1200px)}20.9%{transform:translateX(-1280px)}20.9%{transform:translateX(-1360px)}100%{transform:translateX(-1440px)}}Pleaseselectyouroptions:>[-]Option0[-]Option1[-]Option2[-]Option3[-]Option4space:select|enter:confirm|left:none|right:all[-]Option0>[-]Option1 INFO Selectedoptions:[]Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(102,194,205)}.m{white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:14.830223s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}1.4%{transform:translateX(-80px)}1.7%{transform:translateX(-160px)}8.2%{transform:translateX(-240px)}8.2%{transform:translateX(-320px)}8.2%{transform:translateX(-400px)}8.2%{transform:translateX(-480px)}8.2%{transform:translateX(-560px)}8.2%{transform:translateX(-640px)}8.2%{transform:translateX(-720px)}8.2%{transform:translateX(-800px)}8.2%{transform:translateX(-880px)}8.2%{transform:translateX(-960px)}8.9%{transform:translateX(-1040px)}12.3%{transform:translateX(-1120px)}12.3%{transform:translateX(-1200px)}12.3%{transform:translateX(-1280px)}12.3%{transform:translateX(-1360px)}15.6%{transform:translateX(-1440px)}15.6%{transform:translateX(-1520px)}16.3%{transform:translateX(-1600px)}16.3%{transform:translateX(-1680px)}16.3%{transform:translateX(-1760px)}16.3%{transform:translateX(-1840px)}16.3%{transform:translateX(-1920px)}19.7%{transform:translateX(-2000px)}19.7%{transform:translateX(-2080px)}19.7%{transform:translateX(-2160px)}19.7%{transform:translateX(-2240px)}19.7%{transform:translateX(-2320px)}23%{transform:translateX(-2400px)}23.1%{transform:translateX(-2480px)}23.1%{transform:translateX(-2560px)}23.1%{transform:translateX(-2640px)}23.1%{transform:translateX(-2720px)}23.7%{transform:translateX(-2800px)}23.7%{transform:translateX(-2880px)}23.7%{transform:translateX(-2960px)}23.7%{transform:translateX(-3040px)}23.7%{transform:translateX(-3120px)}27.1%{transform:translateX(-3200px)}27.1%{transform:translateX(-3280px)}27.1%{transform:translateX(-3360px)}27.1%{transform:translateX(-3440px)}27.1%{transform:translateX(-3520px)}30.5%{transform:translateX(-3600px)}30.5%{transform:translateX(-3680px)}30.5%{transform:translateX(-3760px)}30.5%{transform:translateX(-3840px)}30.5%{transform:translateX(-3920px)}30.5%{transform:translateX(-4000px)}30.5%{transform:translateX(-4080px)}31.2%{transform:translateX(-4160px)}31.2%{transform:translateX(-4240px)}31.2%{transform:translateX(-4320px)}34.5%{transform:translateX(-4400px)}34.5%{transform:translateX(-4480px)}34.5%{transform:translateX(-4560px)}34.5%{transform:translateX(-4640px)}34.5%{transform:translateX(-4720px)}34.5%{transform:translateX(-4800px)}34.5%{transform:translateX(-4880px)}34.5%{transform:translateX(-4960px)}37.9%{transform:translateX(-5040px)}38.6%{transform:translateX(-5120px)}38.6%{transform:translateX(-5200px)}38.6%{transform:translateX(-5280px)}38.6%{transform:translateX(-5360px)}38.6%{transform:translateX(-5440px)}38.6%{transform:translateX(-5520px)}42%{transform:translateX(-5600px)}52.1%{transform:translateX(-5680px)}52.1%{transform:translateX(-5760px)}52.1%{transform:translateX(-5840px)}52.1%{transform:translateX(-5920px)}52.1%{transform:translateX(-6000px)}52.1%{transform:translateX(-6080px)}53.1%{transform:translateX(-6160px)}53.1%{transform:translateX(-6240px)}53.1%{transform:translateX(-6320px)}53.1%{transform:translateX(-6400px)}53.1%{transform:translateX(-6480px)}54.1%{transform:translateX(-6560px)}54.1%{transform:translateX(-6640px)}54.1%{transform:translateX(-6720px)}55.1%{transform:translateX(-6800px)}55.1%{transform:translateX(-6880px)}55.1%{transform:translateX(-6960px)}55.1%{transform:translateX(-7040px)}55.1%{transform:translateX(-7120px)}56.2%{transform:translateX(-7200px)}63.9%{transform:translateX(-7280px)}63.9%{transform:translateX(-7360px)}63.9%{transform:translateX(-7440px)}63.9%{transform:translateX(-7520px)}63.9%{transform:translateX(-7600px)}66.3%{transform:translateX(-7680px)}66.3%{transform:translateX(-7760px)}100%{transform:translateX(-7840px)}}Pleaseselectyouroptions:>[-]Option0[-]Option1[-]Option2[-]Option3[-]Option4enter:select|tab:confirm|left:none|right:all[-]Option0>[-]Option1>[+]Option1[+]Option1>[-]Option2>[-]Option3>[+]Option3[+]Option3>[-]Option4>[+]Option0[+]Option0>[+]Option2[+]Option2[+]Option4>Option1>Option3>Option2>Option4 INFO Selectedoptions:[Option1Option3Option2Option4]>[+]Option4Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_multiselect/custom-checkmarks/ci.go b/_examples/interactive_multiselect/custom-checkmarks/ci.go
index f8e4cd084..6e923d919 100644
--- a/_examples/interactive_multiselect/custom-checkmarks/ci.go
+++ b/_examples/interactive_multiselect/custom-checkmarks/ci.go
@@ -31,11 +31,6 @@ func init() {
time.Sleep(time.Second)
- for i := 0; i < 2; i++ {
- keyboard.SimulateKeyPress(keys.Down)
- time.Sleep(time.Millisecond * 300)
- }
-
keyboard.SimulateKeyPress(keys.Enter)
time.Sleep(time.Millisecond * 350)
keyboard.SimulateKeyPress(keys.Tab)
diff --git a/_examples/interactive_multiselect/custom-checkmarks/main.go b/_examples/interactive_multiselect/custom-checkmarks/main.go
index 5157d8778..5127f9649 100644
--- a/_examples/interactive_multiselect/custom-checkmarks/main.go
+++ b/_examples/interactive_multiselect/custom-checkmarks/main.go
@@ -1,7 +1,6 @@
package main
import (
- "atomicgo.dev/keyboard/keys"
"fmt"
"github.com/pterm/pterm"
)
@@ -16,12 +15,10 @@ func main() {
}
// Create a new interactive multiselect printer with the options
- // Disable the filter, set the keys for confirming and selecting, and define the checkmark symbols
+ // Disable the filter and define the checkmark symbols
printer := pterm.DefaultInteractiveMultiselect.
WithOptions(options).
WithFilter(false).
- WithKeyConfirm(keys.Enter).
- WithKeySelect(keys.Space).
WithCheckmark(&pterm.Checkmark{Checked: pterm.Green("+"), Unchecked: pterm.Red("-")})
// Show the interactive multiselect and get the selected options
diff --git a/_examples/interactive_multiselect/custom-keys/animation.svg b/_examples/interactive_multiselect/custom-keys/animation.svg
index 497c3bb2e..f5e42d6fa 100644
--- a/_examples/interactive_multiselect/custom-keys/animation.svg
+++ b/_examples/interactive_multiselect/custom-keys/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(102,194,205)}.m{white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:7.066875s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}3.7%{transform:translateX(-80px)}5.2%{transform:translateX(-160px)}17.9%{transform:translateX(-240px)}17.9%{transform:translateX(-320px)}17.9%{transform:translateX(-400px)}19.3%{transform:translateX(-480px)}19.3%{transform:translateX(-560px)}19.3%{transform:translateX(-640px)}19.3%{transform:translateX(-720px)}23.5%{transform:translateX(-800px)}23.5%{transform:translateX(-880px)}23.5%{transform:translateX(-960px)}23.5%{transform:translateX(-1040px)}23.6%{transform:translateX(-1120px)}25%{transform:translateX(-1200px)}25%{transform:translateX(-1280px)}25%{transform:translateX(-1360px)}25%{transform:translateX(-1440px)}29.2%{transform:translateX(-1520px)}29.2%{transform:translateX(-1600px)}29.2%{transform:translateX(-1680px)}29.2%{transform:translateX(-1760px)}29.2%{transform:translateX(-1840px)}29.2%{transform:translateX(-1920px)}100%{transform:translateX(-2000px)}}Pleaseselectyouroptions:>[✗]Option0[✗]Option1[✗]Option2[✗]Option3[✗]Option4space:select|enter:confirm|left:none|right:all[✗]Option0>[✗]Option1>[✓]Option1[✓]Option1>[✗]Option2>[✓]Option2>Option1>Option2 INFO Selectedoptions:[Option1Option2]Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(255,0,4);white-space:pre}.i{fill:rgb(234,89,246);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(102,194,205)}.m{white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:6.993271s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}2.7%{transform:translateX(-80px)}3.3%{transform:translateX(-160px)}17%{transform:translateX(-240px)}18.4%{transform:translateX(-320px)}18.4%{transform:translateX(-400px)}18.4%{transform:translateX(-480px)}18.5%{transform:translateX(-560px)}22.7%{transform:translateX(-640px)}22.7%{transform:translateX(-720px)}22.7%{transform:translateX(-800px)}22.8%{transform:translateX(-880px)}22.8%{transform:translateX(-960px)}24.2%{transform:translateX(-1040px)}24.2%{transform:translateX(-1120px)}24.2%{transform:translateX(-1200px)}24.2%{transform:translateX(-1280px)}24.2%{transform:translateX(-1360px)}28.5%{transform:translateX(-1440px)}28.5%{transform:translateX(-1520px)}28.5%{transform:translateX(-1600px)}28.5%{transform:translateX(-1680px)}28.5%{transform:translateX(-1760px)}28.5%{transform:translateX(-1840px)}28.5%{transform:translateX(-1920px)}100%{transform:translateX(-2000px)}}Pleaseselectyouroptions:[✗]Option2[✗]Option3[✗]Option4space:select|enter:confirm|left:none|right:all[✗]Option0>[✗]Option1>[✓]Option1[✓]Option1>[✗]Option2>[✓]Option2>Option1>Option2 INFO Selectedoptions:[Option1Option2]>[✗]Option0[✗]Option1Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_multiselect/demo/animation.svg b/_examples/interactive_multiselect/demo/animation.svg
index b4686517c..9ac4c0e45 100644
--- a/_examples/interactive_multiselect/demo/animation.svg
+++ b/_examples/interactive_multiselect/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(102,194,205)}.m{white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:15.456789s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}1.5%{transform:translateX(-80px)}2%{transform:translateX(-160px)}8%{transform:translateX(-240px)}8%{transform:translateX(-320px)}8%{transform:translateX(-400px)}8%{transform:translateX(-480px)}8%{transform:translateX(-560px)}8%{transform:translateX(-640px)}8%{transform:translateX(-720px)}8%{transform:translateX(-800px)}8%{transform:translateX(-880px)}8.6%{transform:translateX(-960px)}8.6%{transform:translateX(-1040px)}8.6%{transform:translateX(-1120px)}8.6%{transform:translateX(-1200px)}8.7%{transform:translateX(-1280px)}8.7%{transform:translateX(-1360px)}11.9%{transform:translateX(-1440px)}11.9%{transform:translateX(-1520px)}11.9%{transform:translateX(-1600px)}11.9%{transform:translateX(-1680px)}11.9%{transform:translateX(-1760px)}11.9%{transform:translateX(-1840px)}11.9%{transform:translateX(-1920px)}11.9%{transform:translateX(-2000px)}11.9%{transform:translateX(-2080px)}15.1%{transform:translateX(-2160px)}15.1%{transform:translateX(-2240px)}15.1%{transform:translateX(-2320px)}15.1%{transform:translateX(-2400px)}15.1%{transform:translateX(-2480px)}15.1%{transform:translateX(-2560px)}15.1%{transform:translateX(-2640px)}15.8%{transform:translateX(-2720px)}15.8%{transform:translateX(-2800px)}15.8%{transform:translateX(-2880px)}15.8%{transform:translateX(-2960px)}15.8%{transform:translateX(-3040px)}15.8%{transform:translateX(-3120px)}15.8%{transform:translateX(-3200px)}19%{transform:translateX(-3280px)}19%{transform:translateX(-3360px)}19%{transform:translateX(-3440px)}19%{transform:translateX(-3520px)}19%{transform:translateX(-3600px)}19%{transform:translateX(-3680px)}19%{transform:translateX(-3760px)}22.2%{transform:translateX(-3840px)}22.2%{transform:translateX(-3920px)}22.3%{transform:translateX(-4000px)}22.3%{transform:translateX(-4080px)}22.3%{transform:translateX(-4160px)}22.3%{transform:translateX(-4240px)}22.3%{transform:translateX(-4320px)}22.9%{transform:translateX(-4400px)}26.1%{transform:translateX(-4480px)}26.1%{transform:translateX(-4560px)}26.1%{transform:translateX(-4640px)}26.1%{transform:translateX(-4720px)}26.1%{transform:translateX(-4800px)}29.4%{transform:translateX(-4880px)}29.4%{transform:translateX(-4960px)}29.4%{transform:translateX(-5040px)}29.4%{transform:translateX(-5120px)}29.4%{transform:translateX(-5200px)}29.4%{transform:translateX(-5280px)}30%{transform:translateX(-5360px)}30%{transform:translateX(-5440px)}33.3%{transform:translateX(-5520px)}33.3%{transform:translateX(-5600px)}33.3%{transform:translateX(-5680px)}33.3%{transform:translateX(-5760px)}33.3%{transform:translateX(-5840px)}33.3%{transform:translateX(-5920px)}33.3%{transform:translateX(-6000px)}33.3%{transform:translateX(-6080px)}36.5%{transform:translateX(-6160px)}36.5%{transform:translateX(-6240px)}36.5%{transform:translateX(-6320px)}36.5%{transform:translateX(-6400px)}36.5%{transform:translateX(-6480px)}36.5%{transform:translateX(-6560px)}36.5%{transform:translateX(-6640px)}37.2%{transform:translateX(-6720px)}37.2%{transform:translateX(-6800px)}37.2%{transform:translateX(-6880px)}37.2%{transform:translateX(-6960px)}37.2%{transform:translateX(-7040px)}37.2%{transform:translateX(-7120px)}40.4%{transform:translateX(-7200px)}40.4%{transform:translateX(-7280px)}40.4%{transform:translateX(-7360px)}40.4%{transform:translateX(-7440px)}40.4%{transform:translateX(-7520px)}40.4%{transform:translateX(-7600px)}50.1%{transform:translateX(-7680px)}50.1%{transform:translateX(-7760px)}51.1%{transform:translateX(-7840px)}51.1%{transform:translateX(-7920px)}51.1%{transform:translateX(-8000px)}51.1%{transform:translateX(-8080px)}51.1%{transform:translateX(-8160px)}51.1%{transform:translateX(-8240px)}52.1%{transform:translateX(-8320px)}52.1%{transform:translateX(-8400px)}52.1%{transform:translateX(-8480px)}52.1%{transform:translateX(-8560px)}52.1%{transform:translateX(-8640px)}53.1%{transform:translateX(-8720px)}53.1%{transform:translateX(-8800px)}53.1%{transform:translateX(-8880px)}53.1%{transform:translateX(-8960px)}53.1%{transform:translateX(-9040px)}53.1%{transform:translateX(-9120px)}54%{transform:translateX(-9200px)}54%{transform:translateX(-9280px)}54.1%{transform:translateX(-9360px)}54.1%{transform:translateX(-9440px)}54.1%{transform:translateX(-9520px)}54.1%{transform:translateX(-9600px)}61.5%{transform:translateX(-9680px)}61.5%{transform:translateX(-9760px)}61.5%{transform:translateX(-9840px)}61.5%{transform:translateX(-9920px)}61.5%{transform:translateX(-10000px)}61.5%{transform:translateX(-10080px)}63.4%{transform:translateX(-10160px)}63.4%{transform:translateX(-10240px)}63.4%{transform:translateX(-10320px)}63.4%{transform:translateX(-10400px)}63.4%{transform:translateX(-10480px)}63.4%{transform:translateX(-10560px)}65.4%{transform:translateX(-10640px)}65.4%{transform:translateX(-10720px)}65.4%{transform:translateX(-10800px)}65.4%{transform:translateX(-10880px)}65.4%{transform:translateX(-10960px)}65.4%{transform:translateX(-11040px)}67.6%{transform:translateX(-11120px)}67.6%{transform:translateX(-11200px)}67.6%{transform:translateX(-11280px)}67.6%{transform:translateX(-11360px)}67.6%{transform:translateX(-11440px)}67.6%{transform:translateX(-11520px)}67.7%{transform:translateX(-11600px)}100%{transform:translateX(-11680px)}}Pleaseselectyouroptions:>[✗]Option0[✗]Option1[✗]Option2[✗]Option3[✗]Option4enter:select|tab:confirm|left:none|right:all|typetofilter[✗]Option0>[✗]Option1>[✓]Option1[✓]Option1>[✗]Option2>[✗]Option3>[✓]Option3[✓]Option3>[✗]Option4>[✗]Option5>[✓]Option5[✓]Option5>[✗]Option6[✗]Option6>[✓]Option7[✓]Option7>[✗]Option8[✗]Option8>[✗]Option9>[✓]Option9Pleaseselectyouroptions:f>[✗]Youcanusefuzzysearching(0)[✗]Youcanusefuzzysearching(1)[✗]Youcanusefuzzysearching(2)[✗]Youcanusefuzzysearching(3)[✗]Youcanusefuzzysearching(4)Pleaseselectyouroptions:fuPleaseselectyouroptions:fuzPleaseselectyouroptions:fuzzPleaseselectyouroptions:fuzzy[✗]Youcanusefuzzysearching(0)>[✗]Youcanusefuzzysearching(1)>[✗]Youcanusefuzzysearching(2)>[✓]Youcanusefuzzysearching(2)>Option1>Option3>Option5>Option7>Option9>Youcanusefuzzysearching(2) INFO Selectedoptions:[Option1Option3Option5Option7Option9Youcanusefuzzysearching(2)]>[✗]Option7[✓]Option9>[✗]Option10Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(234,89,246);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(234,89,246);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(102,194,205)}.m{white-space:pre}.n{fill:transparent}.o{fill:rgb(160,160,160)}.q{animation-duration:15.451838s;animation-iteration-count:infinite;animation-name:p;animation-timing-function:steps(1,end)}@keyframes p{0%{transform:translateX(-0px)}1.5%{transform:translateX(-80px)}2.1%{transform:translateX(-160px)}8%{transform:translateX(-240px)}8%{transform:translateX(-320px)}8%{transform:translateX(-400px)}8%{transform:translateX(-480px)}8%{transform:translateX(-560px)}8%{transform:translateX(-640px)}8%{transform:translateX(-720px)}8%{transform:translateX(-800px)}8%{transform:translateX(-880px)}8%{transform:translateX(-960px)}8.6%{transform:translateX(-1040px)}8.6%{transform:translateX(-1120px)}8.6%{transform:translateX(-1200px)}8.6%{transform:translateX(-1280px)}8.7%{transform:translateX(-1360px)}8.7%{transform:translateX(-1440px)}11.9%{transform:translateX(-1520px)}11.9%{transform:translateX(-1600px)}11.9%{transform:translateX(-1680px)}11.9%{transform:translateX(-1760px)}11.9%{transform:translateX(-1840px)}11.9%{transform:translateX(-1920px)}15.1%{transform:translateX(-2000px)}15.8%{transform:translateX(-2080px)}15.8%{transform:translateX(-2160px)}15.8%{transform:translateX(-2240px)}15.8%{transform:translateX(-2320px)}15.8%{transform:translateX(-2400px)}15.8%{transform:translateX(-2480px)}15.8%{transform:translateX(-2560px)}15.8%{transform:translateX(-2640px)}15.8%{transform:translateX(-2720px)}19%{transform:translateX(-2800px)}19%{transform:translateX(-2880px)}19%{transform:translateX(-2960px)}19%{transform:translateX(-3040px)}19%{transform:translateX(-3120px)}19%{transform:translateX(-3200px)}19%{transform:translateX(-3280px)}22.3%{transform:translateX(-3360px)}22.3%{transform:translateX(-3440px)}22.3%{transform:translateX(-3520px)}22.3%{transform:translateX(-3600px)}22.3%{transform:translateX(-3680px)}22.3%{transform:translateX(-3760px)}22.9%{transform:translateX(-3840px)}22.9%{transform:translateX(-3920px)}22.9%{transform:translateX(-4000px)}22.9%{transform:translateX(-4080px)}22.9%{transform:translateX(-4160px)}22.9%{transform:translateX(-4240px)}26.1%{transform:translateX(-4320px)}26.1%{transform:translateX(-4400px)}26.1%{transform:translateX(-4480px)}26.1%{transform:translateX(-4560px)}26.1%{transform:translateX(-4640px)}26.1%{transform:translateX(-4720px)}26.1%{transform:translateX(-4800px)}26.1%{transform:translateX(-4880px)}29.4%{transform:translateX(-4960px)}29.4%{transform:translateX(-5040px)}29.4%{transform:translateX(-5120px)}29.4%{transform:translateX(-5200px)}29.4%{transform:translateX(-5280px)}29.4%{transform:translateX(-5360px)}29.4%{transform:translateX(-5440px)}30%{transform:translateX(-5520px)}30%{transform:translateX(-5600px)}30%{transform:translateX(-5680px)}30%{transform:translateX(-5760px)}30%{transform:translateX(-5840px)}30%{transform:translateX(-5920px)}33.3%{transform:translateX(-6000px)}33.3%{transform:translateX(-6080px)}33.3%{transform:translateX(-6160px)}33.3%{transform:translateX(-6240px)}33.3%{transform:translateX(-6320px)}33.3%{transform:translateX(-6400px)}36.5%{transform:translateX(-6480px)}36.5%{transform:translateX(-6560px)}36.5%{transform:translateX(-6640px)}36.5%{transform:translateX(-6720px)}36.5%{transform:translateX(-6800px)}36.5%{transform:translateX(-6880px)}36.5%{transform:translateX(-6960px)}37.2%{transform:translateX(-7040px)}40.4%{transform:translateX(-7120px)}40.4%{transform:translateX(-7200px)}40.4%{transform:translateX(-7280px)}40.4%{transform:translateX(-7360px)}40.4%{transform:translateX(-7440px)}40.4%{transform:translateX(-7520px)}50.1%{transform:translateX(-7600px)}51.1%{transform:translateX(-7680px)}51.1%{transform:translateX(-7760px)}51.1%{transform:translateX(-7840px)}51.1%{transform:translateX(-7920px)}51.1%{transform:translateX(-8000px)}51.1%{transform:translateX(-8080px)}52.1%{transform:translateX(-8160px)}52.1%{transform:translateX(-8240px)}52.1%{transform:translateX(-8320px)}52.1%{transform:translateX(-8400px)}52.1%{transform:translateX(-8480px)}52.1%{transform:translateX(-8560px)}52.1%{transform:translateX(-8640px)}53%{transform:translateX(-8720px)}53%{transform:translateX(-8800px)}53%{transform:translateX(-8880px)}53%{transform:translateX(-8960px)}53.1%{transform:translateX(-9040px)}54%{transform:translateX(-9120px)}54%{transform:translateX(-9200px)}54%{transform:translateX(-9280px)}54%{transform:translateX(-9360px)}54%{transform:translateX(-9440px)}54%{transform:translateX(-9520px)}54%{transform:translateX(-9600px)}61.5%{transform:translateX(-9680px)}61.5%{transform:translateX(-9760px)}61.5%{transform:translateX(-9840px)}61.5%{transform:translateX(-9920px)}61.5%{transform:translateX(-10000px)}61.5%{transform:translateX(-10080px)}63.4%{transform:translateX(-10160px)}63.4%{transform:translateX(-10240px)}63.4%{transform:translateX(-10320px)}63.4%{transform:translateX(-10400px)}63.4%{transform:translateX(-10480px)}63.4%{transform:translateX(-10560px)}65.4%{transform:translateX(-10640px)}65.4%{transform:translateX(-10720px)}65.4%{transform:translateX(-10800px)}65.4%{transform:translateX(-10880px)}65.4%{transform:translateX(-10960px)}67.6%{transform:translateX(-11040px)}67.6%{transform:translateX(-11120px)}67.6%{transform:translateX(-11200px)}67.6%{transform:translateX(-11280px)}67.6%{transform:translateX(-11360px)}67.6%{transform:translateX(-11440px)}100%{transform:translateX(-11520px)}}Pleaseselectyouroptions:>[✗]Option0[✗]Option1[✗]Option2[✗]Option3[✗]Option4enter:select|tab:confirm|left:none|right:all|typetofilter[✗]Option0>[✗]Option1>[✓]Option1[✓]Option1>[✗]Option3>[✓]Option3[✓]Option3>[✗]Option4>[✗]Option5>[✓]Option5[✓]Option5>[✗]Option6[✗]Option6>[✗]Option7>[✓]Option7[✓]Option7>[✗]Option8[✗]Option8>[✗]Option9>[✓]Option9[✓]Option9>[✗]Option10Pleaseselectyouroptions:f>[✗]Youcanusefuzzysearching(0)[✗]Youcanusefuzzysearching(1)[✗]Youcanusefuzzysearching(2)[✗]Youcanusefuzzysearching(3)[✗]Youcanusefuzzysearching(4)Pleaseselectyouroptions:fuPleaseselectyouroptions:fuzPleaseselectyouroptions:fuzzPleaseselectyouroptions:fuzzy[✗]Youcanusefuzzysearching(0)>[✗]Youcanusefuzzysearching(1)>[✗]Youcanusefuzzysearching(2)>[✓]Youcanusefuzzysearching(2)>Option1>Option3>Option5>Option7>Option9>Youcanusefuzzysearching(2) INFO Selectedoptions:[Option1Option3Option5Option7Option9Youcanusefuzzysearching(2)]>[✗]Option2Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_select/demo/animation.svg b/_examples/interactive_select/demo/animation.svg
index be65092f3..42a5e5544 100644
--- a/_examples/interactive_select/demo/animation.svg
+++ b/_examples/interactive_select/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:transparent}.m{fill:rgb(160,160,160)}.o{animation-duration:12.075876s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}1.7%{transform:translateX(-80px)}2.2%{transform:translateX(-160px)}10%{transform:translateX(-240px)}10%{transform:translateX(-320px)}10%{transform:translateX(-400px)}10%{transform:translateX(-480px)}10%{transform:translateX(-560px)}10%{transform:translateX(-640px)}10%{transform:translateX(-720px)}10%{transform:translateX(-800px)}10%{transform:translateX(-880px)}10%{transform:translateX(-960px)}12.1%{transform:translateX(-1040px)}14.1%{transform:translateX(-1120px)}14.1%{transform:translateX(-1200px)}14.1%{transform:translateX(-1280px)}14.1%{transform:translateX(-1360px)}14.1%{transform:translateX(-1440px)}14.1%{transform:translateX(-1520px)}16.2%{transform:translateX(-1600px)}16.2%{transform:translateX(-1680px)}16.2%{transform:translateX(-1760px)}16.2%{transform:translateX(-1840px)}16.2%{transform:translateX(-1920px)}16.2%{transform:translateX(-2000px)}18.3%{transform:translateX(-2080px)}18.3%{transform:translateX(-2160px)}18.3%{transform:translateX(-2240px)}18.3%{transform:translateX(-2320px)}18.3%{transform:translateX(-2400px)}18.3%{transform:translateX(-2480px)}18.3%{transform:translateX(-2560px)}20.4%{transform:translateX(-2640px)}20.4%{transform:translateX(-2720px)}20.4%{transform:translateX(-2800px)}20.4%{transform:translateX(-2880px)}20.4%{transform:translateX(-2960px)}20.4%{transform:translateX(-3040px)}22.4%{transform:translateX(-3120px)}22.4%{transform:translateX(-3200px)}22.4%{transform:translateX(-3280px)}22.4%{transform:translateX(-3360px)}22.4%{transform:translateX(-3440px)}22.4%{transform:translateX(-3520px)}22.4%{transform:translateX(-3600px)}22.4%{transform:translateX(-3680px)}24.5%{transform:translateX(-3760px)}24.5%{transform:translateX(-3840px)}24.5%{transform:translateX(-3920px)}24.5%{transform:translateX(-4000px)}24.6%{transform:translateX(-4080px)}24.6%{transform:translateX(-4160px)}24.6%{transform:translateX(-4240px)}26.6%{transform:translateX(-4320px)}26.6%{transform:translateX(-4400px)}28.7%{transform:translateX(-4480px)}28.7%{transform:translateX(-4560px)}28.7%{transform:translateX(-4640px)}28.7%{transform:translateX(-4720px)}28.7%{transform:translateX(-4800px)}28.7%{transform:translateX(-4880px)}39%{transform:translateX(-4960px)}39%{transform:translateX(-5040px)}39%{transform:translateX(-5120px)}39%{transform:translateX(-5200px)}39%{transform:translateX(-5280px)}39%{transform:translateX(-5360px)}40.3%{transform:translateX(-5440px)}40.3%{transform:translateX(-5520px)}40.3%{transform:translateX(-5600px)}40.3%{transform:translateX(-5680px)}40.3%{transform:translateX(-5760px)}40.3%{transform:translateX(-5840px)}41.5%{transform:translateX(-5920px)}41.5%{transform:translateX(-6000px)}41.5%{transform:translateX(-6080px)}41.5%{transform:translateX(-6160px)}41.5%{transform:translateX(-6240px)}42.8%{transform:translateX(-6320px)}42.8%{transform:translateX(-6400px)}42.8%{transform:translateX(-6480px)}42.8%{transform:translateX(-6560px)}42.8%{transform:translateX(-6640px)}42.8%{transform:translateX(-6720px)}44%{transform:translateX(-6800px)}44%{transform:translateX(-6880px)}44%{transform:translateX(-6960px)}44%{transform:translateX(-7040px)}44%{transform:translateX(-7120px)}44%{transform:translateX(-7200px)}53.6%{transform:translateX(-7280px)}53.6%{transform:translateX(-7360px)}53.6%{transform:translateX(-7440px)}53.6%{transform:translateX(-7520px)}53.6%{transform:translateX(-7600px)}53.6%{transform:translateX(-7680px)}56.1%{transform:translateX(-7760px)}56.1%{transform:translateX(-7840px)}56.1%{transform:translateX(-7920px)}56.1%{transform:translateX(-8000px)}56.1%{transform:translateX(-8080px)}56.1%{transform:translateX(-8160px)}56.1%{transform:translateX(-8240px)}58.6%{transform:translateX(-8320px)}58.6%{transform:translateX(-8400px)}58.6%{transform:translateX(-8480px)}58.6%{transform:translateX(-8560px)}100%{transform:translateX(-8640px)}}Pleaseselectanoption[typetosearch]:>Option0Option1Option2Option3Option4Option0>Option2>Option3>Option4>Option5Option5Option6>Option7Option7Option8>Option9Option9>Option10Pleaseselectanoption[typetosearch]:f>Youcanusefuzzysearching(0)Youcanusefuzzysearching(1)Youcanusefuzzysearching(2)Youcanusefuzzysearching(3)Youcanusefuzzysearching(4)Pleaseselectanoption[typetosearch]:fuPleaseselectanoption[typetosearch]:fuzPleaseselectanoption[typetosearch]:fuzzPleaseselectanoption[typetosearch]:fuzzyYoucanusefuzzysearching(0)>Youcanusefuzzysearching(1)>Youcanusefuzzysearching(2)Pleaseselectanoption:fuzzy>Youcanusefuzzysearching(2) INFO Selectedoption:Youcanusefuzzysearching(2)>Option1>Option6>Option8Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:transparent}.m{fill:rgb(160,160,160)}.o{animation-duration:12.218271s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}2.9%{transform:translateX(-80px)}4.1%{transform:translateX(-160px)}11.1%{transform:translateX(-240px)}11.1%{transform:translateX(-320px)}11.1%{transform:translateX(-400px)}11.1%{transform:translateX(-480px)}11.1%{transform:translateX(-560px)}11.1%{transform:translateX(-640px)}13.1%{transform:translateX(-720px)}13.1%{transform:translateX(-800px)}15.2%{transform:translateX(-880px)}17.2%{transform:translateX(-960px)}17.2%{transform:translateX(-1040px)}19.3%{transform:translateX(-1120px)}19.3%{transform:translateX(-1200px)}19.3%{transform:translateX(-1280px)}19.3%{transform:translateX(-1360px)}19.3%{transform:translateX(-1440px)}19.3%{transform:translateX(-1520px)}21.4%{transform:translateX(-1600px)}21.4%{transform:translateX(-1680px)}21.4%{transform:translateX(-1760px)}21.4%{transform:translateX(-1840px)}21.4%{transform:translateX(-1920px)}21.4%{transform:translateX(-2000px)}21.4%{transform:translateX(-2080px)}23.4%{transform:translateX(-2160px)}25.5%{transform:translateX(-2240px)}25.5%{transform:translateX(-2320px)}25.5%{transform:translateX(-2400px)}25.5%{transform:translateX(-2480px)}25.5%{transform:translateX(-2560px)}25.5%{transform:translateX(-2640px)}27.5%{transform:translateX(-2720px)}27.5%{transform:translateX(-2800px)}27.5%{transform:translateX(-2880px)}27.5%{transform:translateX(-2960px)}27.5%{transform:translateX(-3040px)}27.5%{transform:translateX(-3120px)}29.5%{transform:translateX(-3200px)}29.6%{transform:translateX(-3280px)}29.6%{transform:translateX(-3360px)}29.6%{transform:translateX(-3440px)}29.6%{transform:translateX(-3520px)}39.8%{transform:translateX(-3600px)}41%{transform:translateX(-3680px)}41%{transform:translateX(-3760px)}42.3%{transform:translateX(-3840px)}42.3%{transform:translateX(-3920px)}43.5%{transform:translateX(-4000px)}43.5%{transform:translateX(-4080px)}43.5%{transform:translateX(-4160px)}43.5%{transform:translateX(-4240px)}43.5%{transform:translateX(-4320px)}43.5%{transform:translateX(-4400px)}44.7%{transform:translateX(-4480px)}44.7%{transform:translateX(-4560px)}44.7%{transform:translateX(-4640px)}44.7%{transform:translateX(-4720px)}44.7%{transform:translateX(-4800px)}54.1%{transform:translateX(-4880px)}54.1%{transform:translateX(-4960px)}54.1%{transform:translateX(-5040px)}54.1%{transform:translateX(-5120px)}56.6%{transform:translateX(-5200px)}56.6%{transform:translateX(-5280px)}56.6%{transform:translateX(-5360px)}56.6%{transform:translateX(-5440px)}59.1%{transform:translateX(-5520px)}59.1%{transform:translateX(-5600px)}59.1%{transform:translateX(-5680px)}59.1%{transform:translateX(-5760px)}59.1%{transform:translateX(-5840px)}100%{transform:translateX(-5920px)}}Pleaseselectanoption[typetosearch]:>Option0Option1Option2Option3Option4Option0>Option1>Option3>Option4>Option5Option5Option6>Option7Option7Option8>Option9>Youcanusefuzzysearching(0)Youcanusefuzzysearching(1)Youcanusefuzzysearching(2)Youcanusefuzzysearching(3)Youcanusefuzzysearching(4)Pleaseselectanoption[typetosearch]:fuzPleaseselectanoption[typetosearch]:fuzzPleaseselectanoption[typetosearch]:fuzzyYoucanusefuzzysearching(0)>Youcanusefuzzysearching(1)>Youcanusefuzzysearching(2)Pleaseselectanoption:fuzzy>Youcanusefuzzysearching(2) INFO Selectedoption:Youcanusefuzzysearching(2)>Option2>Option6>Option8Option9>Option10Pleaseselectanoption[typetosearch]:fPleaseselectanoption[typetosearch]:fuRestartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_textinput/README.md b/_examples/interactive_textinput/README.md
index d829b0aed..80ad1b74f 100644
--- a/_examples/interactive_textinput/README.md
+++ b/_examples/interactive_textinput/README.md
@@ -14,11 +14,38 @@ import (
)
func main() {
- // Create an interactive text input with single line input mode
- textInput := pterm.DefaultInteractiveTextInput.WithMultiLine(false)
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.Show()
- // Show the text input and get the result
- result, _ := textInput.Show()
+ // Print a blank line for better readability
+ pterm.Println()
+
+ // Print the user's answer with an info prefix
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
+
+
+
+### interactive_textinput/default-value
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/interactive_textinput/default-value/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.WithDefaultValue("Some default value").Show()
// Print a blank line for better readability
pterm.Println()
diff --git a/_examples/interactive_textinput/default-value/README.md b/_examples/interactive_textinput/default-value/README.md
new file mode 100644
index 000000000..967ff12a5
--- /dev/null
+++ b/_examples/interactive_textinput/default-value/README.md
@@ -0,0 +1,23 @@
+# interactive_textinput/default-value
+
+![Animation](animation.svg)
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.WithDefaultValue("Some default value").Show()
+
+ // Print a blank line for better readability
+ pterm.Println()
+
+ // Print the user's answer with an info prefix
+ pterm.Info.Printfln("You answered: %s", result)
+}
+
+```
diff --git a/_examples/interactive_textinput/default-value/animation.svg b/_examples/interactive_textinput/default-value/animation.svg
new file mode 100644
index 000000000..f2e91923b
--- /dev/null
+++ b/_examples/interactive_textinput/default-value/animation.svg
@@ -0,0 +1,10 @@
+Inputtext:SomedefaultvalueInputtext:HInputtext:HelInputtext:HelloInputtext:Hello;Inputtext:Hello;WInputtext:Hello;WorlInputtext:Hello;WorldInputtext:Hello;World!Inputtext:Hello,World! INFO Youanswered:Hello,World!Inputtext:Inputtext:HeInputtext:HellInputtext:Hello;WoInputtext:Hello;WorInputtext:HelloWorld!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_textinput/default-value/ci.go b/_examples/interactive_textinput/default-value/ci.go
new file mode 100644
index 000000000..0622df7af
--- /dev/null
+++ b/_examples/interactive_textinput/default-value/ci.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "os"
+ "time"
+
+ "atomicgo.dev/keyboard"
+ "atomicgo.dev/keyboard/keys"
+)
+
+// ------ Automation for CI ------
+// You can ignore this function, it is used to automatically run the demo and generate the example animation in our CI system.
+func init() {
+ if os.Getenv("CI") == "true" {
+ go func() {
+ time.Sleep(time.Millisecond * 1500)
+ input := "Hello; World!"
+ for _, r := range []rune(input) {
+ keyboard.SimulateKeyPress(r)
+ time.Sleep(time.Millisecond * 250)
+ }
+
+ for i := 0; i < 7; i++ {
+ keyboard.SimulateKeyPress(keys.Left)
+ time.Sleep(time.Millisecond * 150)
+ }
+
+ keyboard.SimulateKeyPress(keys.Backspace)
+ time.Sleep(time.Millisecond * 500)
+ keyboard.SimulateKeyPress(',')
+ time.Sleep(time.Millisecond * 500)
+ keyboard.SimulateKeyPress(keys.Enter)
+ }()
+ }
+}
diff --git a/_examples/interactive_textinput/default-value/main.go b/_examples/interactive_textinput/default-value/main.go
new file mode 100644
index 000000000..2d24bf0d0
--- /dev/null
+++ b/_examples/interactive_textinput/default-value/main.go
@@ -0,0 +1,16 @@
+package main
+
+import (
+ "github.com/pterm/pterm"
+)
+
+func main() {
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.WithDefaultValue("Some default value").Show()
+
+ // Print a blank line for better readability
+ pterm.Println()
+
+ // Print the user's answer with an info prefix
+ pterm.Info.Printfln("You answered: %s", result)
+}
diff --git a/_examples/interactive_textinput/demo/README.md b/_examples/interactive_textinput/demo/README.md
index 0b3d24b36..ad7ccb2d0 100644
--- a/_examples/interactive_textinput/demo/README.md
+++ b/_examples/interactive_textinput/demo/README.md
@@ -10,11 +10,8 @@ import (
)
func main() {
- // Create an interactive text input with single line input mode
- textInput := pterm.DefaultInteractiveTextInput.WithMultiLine(false)
-
- // Show the text input and get the result
- result, _ := textInput.Show()
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.Show()
// Print a blank line for better readability
pterm.Println()
diff --git a/_examples/interactive_textinput/demo/animation.svg b/_examples/interactive_textinput/demo/animation.svg
index 80df65ae7..2c811e15a 100644
--- a/_examples/interactive_textinput/demo/animation.svg
+++ b/_examples/interactive_textinput/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(102,194,205)}.i{white-space:pre}.j{fill:transparent}.k{fill:rgb(160,160,160)}.m{animation-duration:11.379105s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}0.5%{transform:translateX(-80px)}1.2%{transform:translateX(-160px)}9.3%{transform:translateX(-240px)}9.3%{transform:translateX(-320px)}9.3%{transform:translateX(-400px)}9.3%{transform:translateX(-480px)}11.5%{transform:translateX(-560px)}11.5%{transform:translateX(-640px)}13.7%{transform:translateX(-720px)}13.7%{transform:translateX(-800px)}15.9%{transform:translateX(-880px)}15.9%{transform:translateX(-960px)}18.1%{transform:translateX(-1040px)}18.1%{transform:translateX(-1120px)}18.1%{transform:translateX(-1200px)}20.3%{transform:translateX(-1280px)}20.3%{transform:translateX(-1360px)}20.3%{transform:translateX(-1440px)}22.5%{transform:translateX(-1520px)}24.7%{transform:translateX(-1600px)}24.7%{transform:translateX(-1680px)}27%{transform:translateX(-1760px)}27%{transform:translateX(-1840px)}27%{transform:translateX(-1920px)}29.2%{transform:translateX(-2000px)}29.2%{transform:translateX(-2080px)}31.4%{transform:translateX(-2160px)}31.4%{transform:translateX(-2240px)}33.6%{transform:translateX(-2320px)}33.6%{transform:translateX(-2400px)}35.8%{transform:translateX(-2480px)}35.8%{transform:translateX(-2560px)}35.8%{transform:translateX(-2640px)}38%{transform:translateX(-2720px)}38%{transform:translateX(-2800px)}38%{transform:translateX(-2880px)}39.3%{transform:translateX(-2960px)}40.6%{transform:translateX(-3040px)}40.6%{transform:translateX(-3120px)}40.6%{transform:translateX(-3200px)}40.6%{transform:translateX(-3280px)}41.9%{transform:translateX(-3360px)}41.9%{transform:translateX(-3440px)}41.9%{transform:translateX(-3520px)}43.3%{transform:translateX(-3600px)}43.3%{transform:translateX(-3680px)}43.3%{transform:translateX(-3760px)}44.6%{transform:translateX(-3840px)}44.6%{transform:translateX(-3920px)}44.6%{transform:translateX(-4000px)}44.6%{transform:translateX(-4080px)}45.9%{transform:translateX(-4160px)}47.2%{transform:translateX(-4240px)}47.2%{transform:translateX(-4320px)}51.6%{transform:translateX(-4400px)}51.6%{transform:translateX(-4480px)}51.6%{transform:translateX(-4560px)}56.1%{transform:translateX(-4640px)}56.1%{transform:translateX(-4720px)}100%{transform:translateX(-4800px)}}Inputtext:Inputtext:HInputtext:HeInputtext:HelInputtext:HellInputtext:HelloInputtext:Hello;Inputtext:Hello;WInputtext:Hello;WorInputtext:Hello;WorlInputtext:Hello;WorldInputtext:Hello;World!Inputtext:HelloWorld!Inputtext:Hello,World! INFO Youanswered:Hello,World!Inputtext:Hello;WoRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(102,194,205)}.i{white-space:pre}.j{fill:transparent}.k{fill:rgb(160,160,160)}.m{animation-duration:11.542803s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}1.9%{transform:translateX(-80px)}2.8%{transform:translateX(-160px)}10.6%{transform:translateX(-240px)}10.6%{transform:translateX(-320px)}12.8%{transform:translateX(-400px)}12.8%{transform:translateX(-480px)}15%{transform:translateX(-560px)}15%{transform:translateX(-640px)}15%{transform:translateX(-720px)}17.1%{transform:translateX(-800px)}17.1%{transform:translateX(-880px)}19.3%{transform:translateX(-960px)}19.3%{transform:translateX(-1040px)}21.5%{transform:translateX(-1120px)}21.5%{transform:translateX(-1200px)}21.5%{transform:translateX(-1280px)}23.7%{transform:translateX(-1360px)}23.7%{transform:translateX(-1440px)}23.7%{transform:translateX(-1520px)}25.8%{transform:translateX(-1600px)}25.8%{transform:translateX(-1680px)}25.8%{transform:translateX(-1760px)}28%{transform:translateX(-1840px)}28%{transform:translateX(-1920px)}28%{transform:translateX(-2000px)}30.2%{transform:translateX(-2080px)}30.2%{transform:translateX(-2160px)}32.3%{transform:translateX(-2240px)}32.3%{transform:translateX(-2320px)}32.3%{transform:translateX(-2400px)}34.5%{transform:translateX(-2480px)}34.5%{transform:translateX(-2560px)}34.5%{transform:translateX(-2640px)}36.7%{transform:translateX(-2720px)}36.7%{transform:translateX(-2800px)}36.7%{transform:translateX(-2880px)}38.9%{transform:translateX(-2960px)}38.9%{transform:translateX(-3040px)}38.9%{transform:translateX(-3120px)}40.2%{transform:translateX(-3200px)}40.2%{transform:translateX(-3280px)}40.2%{transform:translateX(-3360px)}41.5%{transform:translateX(-3440px)}41.5%{transform:translateX(-3520px)}42.8%{transform:translateX(-3600px)}42.8%{transform:translateX(-3680px)}42.8%{transform:translateX(-3760px)}42.8%{transform:translateX(-3840px)}44.1%{transform:translateX(-3920px)}44.1%{transform:translateX(-4000px)}44.1%{transform:translateX(-4080px)}45.4%{transform:translateX(-4160px)}45.4%{transform:translateX(-4240px)}45.4%{transform:translateX(-4320px)}46.7%{transform:translateX(-4400px)}46.7%{transform:translateX(-4480px)}46.7%{transform:translateX(-4560px)}46.7%{transform:translateX(-4640px)}48%{transform:translateX(-4720px)}48%{transform:translateX(-4800px)}52.3%{transform:translateX(-4880px)}52.3%{transform:translateX(-4960px)}52.3%{transform:translateX(-5040px)}56.7%{transform:translateX(-5120px)}56.7%{transform:translateX(-5200px)}56.7%{transform:translateX(-5280px)}56.7%{transform:translateX(-5360px)}56.7%{transform:translateX(-5440px)}100%{transform:translateX(-5520px)}}Inputtext:Inputtext:HInputtext:HeInputtext:HelInputtext:HelloInputtext:Hello;Inputtext:Hello;WInputtext:Hello;WoInputtext:Hello;WorInputtext:Hello;WorlInputtext:Hello;WorldInputtext:Hello;World!Inputtext:HelloWorld!Inputtext:Hello,World! INFO Youanswered:Hello,World!Inputtext:HellRestartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_textinput/demo/main.go b/_examples/interactive_textinput/demo/main.go
index 1e21363ab..ef1b7c143 100644
--- a/_examples/interactive_textinput/demo/main.go
+++ b/_examples/interactive_textinput/demo/main.go
@@ -5,11 +5,8 @@ import (
)
func main() {
- // Create an interactive text input with single line input mode
- textInput := pterm.DefaultInteractiveTextInput.WithMultiLine(false)
-
- // Show the text input and get the result
- result, _ := textInput.Show()
+ // Create an interactive text input with single line input mode and show it
+ result, _ := pterm.DefaultInteractiveTextInput.Show()
// Print a blank line for better readability
pterm.Println()
diff --git a/_examples/interactive_textinput/multi-line/animation.svg b/_examples/interactive_textinput/multi-line/animation.svg
index 75c0b8260..0f9813902 100644
--- a/_examples/interactive_textinput/multi-line/animation.svg
+++ b/_examples/interactive_textinput/multi-line/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:16.456893s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}@keyframes m{0%{transform:translateX(-0px)}0.7%{transform:translateX(-80px)}1%{transform:translateX(-160px)}6.8%{transform:translateX(-240px)}6.8%{transform:translateX(-320px)}6.8%{transform:translateX(-400px)}6.8%{transform:translateX(-480px)}6.8%{transform:translateX(-560px)}6.8%{transform:translateX(-640px)}6.8%{transform:translateX(-720px)}8.3%{transform:translateX(-800px)}8.4%{transform:translateX(-880px)}8.4%{transform:translateX(-960px)}9.9%{transform:translateX(-1040px)}9.9%{transform:translateX(-1120px)}11.4%{transform:translateX(-1200px)}11.4%{transform:translateX(-1280px)}11.4%{transform:translateX(-1360px)}11.4%{transform:translateX(-1440px)}12.9%{transform:translateX(-1520px)}14.4%{transform:translateX(-1600px)}14.4%{transform:translateX(-1680px)}14.4%{transform:translateX(-1760px)}14.4%{transform:translateX(-1840px)}16%{transform:translateX(-1920px)}16%{transform:translateX(-2000px)}16%{transform:translateX(-2080px)}16%{transform:translateX(-2160px)}17.5%{transform:translateX(-2240px)}17.5%{transform:translateX(-2320px)}17.5%{transform:translateX(-2400px)}19%{transform:translateX(-2480px)}19%{transform:translateX(-2560px)}19%{transform:translateX(-2640px)}20.5%{transform:translateX(-2720px)}20.5%{transform:translateX(-2800px)}20.5%{transform:translateX(-2880px)}20.5%{transform:translateX(-2960px)}22.1%{transform:translateX(-3040px)}22.1%{transform:translateX(-3120px)}22.1%{transform:translateX(-3200px)}23.6%{transform:translateX(-3280px)}23.6%{transform:translateX(-3360px)}23.6%{transform:translateX(-3440px)}23.6%{transform:translateX(-3520px)}25.1%{transform:translateX(-3600px)}25.1%{transform:translateX(-3680px)}25.1%{transform:translateX(-3760px)}25.1%{transform:translateX(-3840px)}26.6%{transform:translateX(-3920px)}26.6%{transform:translateX(-4000px)}26.6%{transform:translateX(-4080px)}26.6%{transform:translateX(-4160px)}28.1%{transform:translateX(-4240px)}28.1%{transform:translateX(-4320px)}28.1%{transform:translateX(-4400px)}29.7%{transform:translateX(-4480px)}29.7%{transform:translateX(-4560px)}30.6%{transform:translateX(-4640px)}30.6%{transform:translateX(-4720px)}30.6%{transform:translateX(-4800px)}30.6%{transform:translateX(-4880px)}30.6%{transform:translateX(-4960px)}31.5%{transform:translateX(-5040px)}31.5%{transform:translateX(-5120px)}31.5%{transform:translateX(-5200px)}31.5%{transform:translateX(-5280px)}32.4%{transform:translateX(-5360px)}32.4%{transform:translateX(-5440px)}32.4%{transform:translateX(-5520px)}32.4%{transform:translateX(-5600px)}33.3%{transform:translateX(-5680px)}33.3%{transform:translateX(-5760px)}33.3%{transform:translateX(-5840px)}33.3%{transform:translateX(-5920px)}34.3%{transform:translateX(-6000px)}34.3%{transform:translateX(-6080px)}34.3%{transform:translateX(-6160px)}34.3%{transform:translateX(-6240px)}35.2%{transform:translateX(-6320px)}36.1%{transform:translateX(-6400px)}36.1%{transform:translateX(-6480px)}39.2%{transform:translateX(-6560px)}39.2%{transform:translateX(-6640px)}39.2%{transform:translateX(-6720px)}42.2%{transform:translateX(-6800px)}42.2%{transform:translateX(-6880px)}42.2%{transform:translateX(-6960px)}43.7%{transform:translateX(-7040px)}43.7%{transform:translateX(-7120px)}43.7%{transform:translateX(-7200px)}45.2%{transform:translateX(-7280px)}45.2%{transform:translateX(-7360px)}45.2%{transform:translateX(-7440px)}45.2%{transform:translateX(-7520px)}46.8%{transform:translateX(-7600px)}46.8%{transform:translateX(-7680px)}46.8%{transform:translateX(-7760px)}48.3%{transform:translateX(-7840px)}48.3%{transform:translateX(-7920px)}48.3%{transform:translateX(-8000px)}48.3%{transform:translateX(-8080px)}49.8%{transform:translateX(-8160px)}49.8%{transform:translateX(-8240px)}49.8%{transform:translateX(-8320px)}49.8%{transform:translateX(-8400px)}51.3%{transform:translateX(-8480px)}51.3%{transform:translateX(-8560px)}51.3%{transform:translateX(-8640px)}52.9%{transform:translateX(-8720px)}52.9%{transform:translateX(-8800px)}52.9%{transform:translateX(-8880px)}54.4%{transform:translateX(-8960px)}55.9%{transform:translateX(-9040px)}55.9%{transform:translateX(-9120px)}55.9%{transform:translateX(-9200px)}55.9%{transform:translateX(-9280px)}57.4%{transform:translateX(-9360px)}57.4%{transform:translateX(-9440px)}57.4%{transform:translateX(-9520px)}57.4%{transform:translateX(-9600px)}58.9%{transform:translateX(-9680px)}58.9%{transform:translateX(-9760px)}58.9%{transform:translateX(-9840px)}58.9%{transform:translateX(-9920px)}60.5%{transform:translateX(-10000px)}60.5%{transform:translateX(-10080px)}60.5%{transform:translateX(-10160px)}60.5%{transform:translateX(-10240px)}60.5%{transform:translateX(-10320px)}62%{transform:translateX(-10400px)}62%{transform:translateX(-10480px)}62%{transform:translateX(-10560px)}62%{transform:translateX(-10640px)}62%{transform:translateX(-10720px)}63.5%{transform:translateX(-10800px)}63.5%{transform:translateX(-10880px)}63.5%{transform:translateX(-10960px)}63.5%{transform:translateX(-11040px)}65%{transform:translateX(-11120px)}65%{transform:translateX(-11200px)}65%{transform:translateX(-11280px)}65%{transform:translateX(-11360px)}65%{transform:translateX(-11440px)}66.6%{transform:translateX(-11520px)}66.6%{transform:translateX(-11600px)}66.6%{transform:translateX(-11680px)}66.6%{transform:translateX(-11760px)}66.6%{transform:translateX(-11840px)}68.1%{transform:translateX(-11920px)}68.1%{transform:translateX(-12000px)}68.1%{transform:translateX(-12080px)}68.1%{transform:translateX(-12160px)}68.1%{transform:translateX(-12240px)}69.6%{transform:translateX(-12320px)}69.6%{transform:translateX(-12400px)}69.6%{transform:translateX(-12480px)}69.6%{transform:translateX(-12560px)}69.6%{transform:translateX(-12640px)}69.6%{transform:translateX(-12720px)}69.6%{transform:translateX(-12800px)}69.6%{transform:translateX(-12880px)}100%{transform:translateX(-12960px)}}Inputtext[Presstabtosubmit]:1111111111111111111111111111222222222222222222222222222211111112222222333333333333333333333333333345555555555555555555555 INFO Youanswered:11111112222222333333334555555533333333555555Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(234,89,246);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:transparent}.l{fill:rgb(160,160,160)}.n{animation-duration:16.560055s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}@keyframes m{0%{transform:translateX(-0px)}1.4%{transform:translateX(-80px)}1.6%{transform:translateX(-160px)}7.5%{transform:translateX(-240px)}7.5%{transform:translateX(-320px)}7.5%{transform:translateX(-400px)}7.5%{transform:translateX(-480px)}7.5%{transform:translateX(-560px)}7.5%{transform:translateX(-640px)}7.5%{transform:translateX(-720px)}9%{transform:translateX(-800px)}10.5%{transform:translateX(-880px)}10.5%{transform:translateX(-960px)}12%{transform:translateX(-1040px)}12%{transform:translateX(-1120px)}12%{transform:translateX(-1200px)}12%{transform:translateX(-1280px)}13.5%{transform:translateX(-1360px)}13.5%{transform:translateX(-1440px)}13.5%{transform:translateX(-1520px)}13.5%{transform:translateX(-1600px)}15%{transform:translateX(-1680px)}15%{transform:translateX(-1760px)}15%{transform:translateX(-1840px)}15%{transform:translateX(-1920px)}16.5%{transform:translateX(-2000px)}18.1%{transform:translateX(-2080px)}18.1%{transform:translateX(-2160px)}18.1%{transform:translateX(-2240px)}19.6%{transform:translateX(-2320px)}19.6%{transform:translateX(-2400px)}19.6%{transform:translateX(-2480px)}21.1%{transform:translateX(-2560px)}21.1%{transform:translateX(-2640px)}21.1%{transform:translateX(-2720px)}22.6%{transform:translateX(-2800px)}22.6%{transform:translateX(-2880px)}22.6%{transform:translateX(-2960px)}24.1%{transform:translateX(-3040px)}24.1%{transform:translateX(-3120px)}24.1%{transform:translateX(-3200px)}25.6%{transform:translateX(-3280px)}27.1%{transform:translateX(-3360px)}27.1%{transform:translateX(-3440px)}27.1%{transform:translateX(-3520px)}27.1%{transform:translateX(-3600px)}28.6%{transform:translateX(-3680px)}28.6%{transform:translateX(-3760px)}28.6%{transform:translateX(-3840px)}28.6%{transform:translateX(-3920px)}30.1%{transform:translateX(-4000px)}30.1%{transform:translateX(-4080px)}30.1%{transform:translateX(-4160px)}30.1%{transform:translateX(-4240px)}31.1%{transform:translateX(-4320px)}32%{transform:translateX(-4400px)}32%{transform:translateX(-4480px)}32%{transform:translateX(-4560px)}32%{transform:translateX(-4640px)}32.9%{transform:translateX(-4720px)}32.9%{transform:translateX(-4800px)}32.9%{transform:translateX(-4880px)}32.9%{transform:translateX(-4960px)}33.8%{transform:translateX(-5040px)}33.8%{transform:translateX(-5120px)}34.7%{transform:translateX(-5200px)}34.7%{transform:translateX(-5280px)}34.7%{transform:translateX(-5360px)}35.6%{transform:translateX(-5440px)}35.6%{transform:translateX(-5520px)}35.6%{transform:translateX(-5600px)}36.5%{transform:translateX(-5680px)}36.5%{transform:translateX(-5760px)}36.5%{transform:translateX(-5840px)}36.5%{transform:translateX(-5920px)}39.5%{transform:translateX(-6000px)}42.6%{transform:translateX(-6080px)}42.6%{transform:translateX(-6160px)}42.6%{transform:translateX(-6240px)}44.1%{transform:translateX(-6320px)}44.1%{transform:translateX(-6400px)}44.1%{transform:translateX(-6480px)}45.6%{transform:translateX(-6560px)}45.6%{transform:translateX(-6640px)}45.6%{transform:translateX(-6720px)}45.6%{transform:translateX(-6800px)}47.1%{transform:translateX(-6880px)}48.6%{transform:translateX(-6960px)}48.6%{transform:translateX(-7040px)}48.6%{transform:translateX(-7120px)}50.1%{transform:translateX(-7200px)}50.1%{transform:translateX(-7280px)}50.1%{transform:translateX(-7360px)}50.1%{transform:translateX(-7440px)}51.6%{transform:translateX(-7520px)}51.6%{transform:translateX(-7600px)}51.6%{transform:translateX(-7680px)}51.6%{transform:translateX(-7760px)}51.6%{transform:translateX(-7840px)}53.2%{transform:translateX(-7920px)}53.2%{transform:translateX(-8000px)}53.2%{transform:translateX(-8080px)}54.7%{transform:translateX(-8160px)}54.7%{transform:translateX(-8240px)}54.7%{transform:translateX(-8320px)}56.2%{transform:translateX(-8400px)}56.2%{transform:translateX(-8480px)}56.2%{transform:translateX(-8560px)}57.7%{transform:translateX(-8640px)}57.7%{transform:translateX(-8720px)}57.7%{transform:translateX(-8800px)}57.7%{transform:translateX(-8880px)}59.2%{transform:translateX(-8960px)}59.2%{transform:translateX(-9040px)}59.2%{transform:translateX(-9120px)}59.2%{transform:translateX(-9200px)}60.7%{transform:translateX(-9280px)}60.7%{transform:translateX(-9360px)}60.7%{transform:translateX(-9440px)}60.7%{transform:translateX(-9520px)}62.2%{transform:translateX(-9600px)}62.2%{transform:translateX(-9680px)}62.2%{transform:translateX(-9760px)}62.2%{transform:translateX(-9840px)}63.7%{transform:translateX(-9920px)}63.7%{transform:translateX(-10000px)}63.7%{transform:translateX(-10080px)}63.8%{transform:translateX(-10160px)}65.3%{transform:translateX(-10240px)}65.3%{transform:translateX(-10320px)}65.3%{transform:translateX(-10400px)}65.3%{transform:translateX(-10480px)}65.3%{transform:translateX(-10560px)}66.8%{transform:translateX(-10640px)}68.3%{transform:translateX(-10720px)}68.3%{transform:translateX(-10800px)}68.3%{transform:translateX(-10880px)}68.3%{transform:translateX(-10960px)}69.8%{transform:translateX(-11040px)}69.8%{transform:translateX(-11120px)}69.8%{transform:translateX(-11200px)}69.8%{transform:translateX(-11280px)}69.8%{transform:translateX(-11360px)}69.8%{transform:translateX(-11440px)}69.8%{transform:translateX(-11520px)}100%{transform:translateX(-11600px)}}Inputtext[Presstabtosubmit]:111111111111111111112222222222222222222222221111111222222233333333333333333333333333333345555555555555555555555555555 INFO Youanswered:111111122222223333333345555555111111112222333333Restartinganimation...
\ No newline at end of file
diff --git a/_examples/interactive_textinput/password/animation.svg b/_examples/interactive_textinput/password/animation.svg
index 923f2ffd8..42d4df55b 100644
--- a/_examples/interactive_textinput/password/animation.svg
+++ b/_examples/interactive_textinput/password/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.j{fill:transparent}.k{fill:rgb(160,160,160)}.m{animation-duration:9.498512s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}2.5%{transform:translateX(-80px)}3.1%{transform:translateX(-160px)}13%{transform:translateX(-240px)}13%{transform:translateX(-320px)}13%{transform:translateX(-400px)}13.1%{transform:translateX(-480px)}15.7%{transform:translateX(-560px)}15.7%{transform:translateX(-640px)}15.7%{transform:translateX(-720px)}18.3%{transform:translateX(-800px)}18.3%{transform:translateX(-880px)}18.3%{transform:translateX(-960px)}18.3%{transform:translateX(-1040px)}21%{transform:translateX(-1120px)}21%{transform:translateX(-1200px)}21%{transform:translateX(-1280px)}21%{transform:translateX(-1360px)}23.6%{transform:translateX(-1440px)}23.6%{transform:translateX(-1520px)}23.6%{transform:translateX(-1600px)}23.6%{transform:translateX(-1680px)}26.2%{transform:translateX(-1760px)}28.9%{transform:translateX(-1840px)}28.9%{transform:translateX(-1920px)}28.9%{transform:translateX(-2000px)}28.9%{transform:translateX(-2080px)}28.9%{transform:translateX(-2160px)}31.5%{transform:translateX(-2240px)}31.5%{transform:translateX(-2320px)}31.5%{transform:translateX(-2400px)}31.5%{transform:translateX(-2480px)}31.5%{transform:translateX(-2560px)}34.1%{transform:translateX(-2640px)}34.1%{transform:translateX(-2720px)}36.8%{transform:translateX(-2800px)}36.8%{transform:translateX(-2880px)}36.8%{transform:translateX(-2960px)}36.8%{transform:translateX(-3040px)}39.4%{transform:translateX(-3120px)}39.4%{transform:translateX(-3200px)}42.1%{transform:translateX(-3280px)}42.1%{transform:translateX(-3360px)}42.1%{transform:translateX(-3440px)}44.7%{transform:translateX(-3520px)}44.7%{transform:translateX(-3600px)}44.7%{transform:translateX(-3680px)}44.7%{transform:translateX(-3760px)}44.7%{transform:translateX(-3840px)}47.3%{transform:translateX(-3920px)}47.3%{transform:translateX(-4000px)}47.3%{transform:translateX(-4080px)}47.3%{transform:translateX(-4160px)}47.4%{transform:translateX(-4240px)}47.4%{transform:translateX(-4320px)}47.4%{transform:translateX(-4400px)}47.4%{transform:translateX(-4480px)}100%{transform:translateX(-4560px)}}Enteryourpassword:Enteryourpassword:*Enteryourpassword:**Enteryourpassword:***Enteryourpassword:****Enteryourpassword:*****Enteryourpassword:******Enteryourpassword:*******Enteryourpassword:********Enteryourpassword:*********Enteryourpassword:**********Enteryourpassword:***********Enteryourpassword:************Enteryourpassword:*************2023-12-1621:09:05INFOPasswordreceivedpassword:Hello,World!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.j{fill:transparent}.k{fill:rgb(160,160,160)}.m{animation-duration:9.555293s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}3.1%{transform:translateX(-80px)}3.8%{transform:translateX(-160px)}13.5%{transform:translateX(-240px)}13.5%{transform:translateX(-320px)}13.5%{transform:translateX(-400px)}13.5%{transform:translateX(-480px)}13.5%{transform:translateX(-560px)}16.2%{transform:translateX(-640px)}16.2%{transform:translateX(-720px)}16.2%{transform:translateX(-800px)}18.8%{transform:translateX(-880px)}18.8%{transform:translateX(-960px)}21.4%{transform:translateX(-1040px)}21.4%{transform:translateX(-1120px)}21.4%{transform:translateX(-1200px)}21.4%{transform:translateX(-1280px)}24.1%{transform:translateX(-1360px)}24.1%{transform:translateX(-1440px)}26.7%{transform:translateX(-1520px)}26.7%{transform:translateX(-1600px)}26.7%{transform:translateX(-1680px)}26.7%{transform:translateX(-1760px)}29.3%{transform:translateX(-1840px)}29.3%{transform:translateX(-1920px)}31.9%{transform:translateX(-2000px)}31.9%{transform:translateX(-2080px)}31.9%{transform:translateX(-2160px)}31.9%{transform:translateX(-2240px)}34.5%{transform:translateX(-2320px)}34.5%{transform:translateX(-2400px)}34.5%{transform:translateX(-2480px)}34.5%{transform:translateX(-2560px)}37.2%{transform:translateX(-2640px)}37.2%{transform:translateX(-2720px)}39.8%{transform:translateX(-2800px)}39.8%{transform:translateX(-2880px)}42.4%{transform:translateX(-2960px)}42.4%{transform:translateX(-3040px)}42.4%{transform:translateX(-3120px)}42.4%{transform:translateX(-3200px)}42.4%{transform:translateX(-3280px)}45%{transform:translateX(-3360px)}45.1%{transform:translateX(-3440px)}45.1%{transform:translateX(-3520px)}47.7%{transform:translateX(-3600px)}47.7%{transform:translateX(-3680px)}47.7%{transform:translateX(-3760px)}100%{transform:translateX(-3840px)}}Enteryourpassword:Enteryourpassword:*Enteryourpassword:***Enteryourpassword:****Enteryourpassword:*****Enteryourpassword:******Enteryourpassword:*******Enteryourpassword:********Enteryourpassword:*********Enteryourpassword:**********Enteryourpassword:***********Enteryourpassword:************Enteryourpassword:*************2024-02-0918:53:11INFOPasswordreceivedpassword:Hello,World!Enteryourpassword:**Restartinganimation...
\ No newline at end of file
diff --git a/_examples/logger/README.md b/_examples/logger/README.md
index 38aa18a1c..f1242fc75 100644
--- a/_examples/logger/README.md
+++ b/_examples/logger/README.md
@@ -1,3 +1,79 @@
+### logger/demo
+
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
+
+
+
+SHOW SOURCE
+
+```go
+package main
+
+import (
+ "github.com/pterm/pterm"
+ "time"
+)
+
+func main() {
+ // Create a logger with trace level
+ logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
+
+ // Log a trace level message
+ logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Define a map with interesting stuff
+ interstingStuff := map[string]any{
+ "when were crayons invented": "1903",
+ "what is the meaning of life": 42,
+ "is this interesting": true,
+ }
+
+ // Log a debug level message with arguments from the map
+ logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Log an info level message
+ logger.Info("That was actually interesting", logger.Args("such", "wow"))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Log a warning level message
+ logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Log an error level message
+ logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Log an info level message with a long text that will be automatically wrapped
+ logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
+
+ // Pause for 3 seconds
+ sleep()
+
+ // Log a fatal level message
+ logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
+}
+
+// Function to pause the execution for 3 seconds
+func sleep() {
+ time.Sleep(time.Second * 3)
+}
+
+```
+
+
+
### logger/custom-key-styles
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/custom-key-styles/animation.svg)
@@ -96,82 +172,6 @@ func main() {
-### logger/demo
-
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/demo/animation.svg)
-
-
-
-SHOW SOURCE
-
-```go
-package main
-
-import (
- "github.com/pterm/pterm"
- "time"
-)
-
-func main() {
- // Create a logger with trace level
- logger := pterm.DefaultLogger.WithLevel(pterm.LogLevelTrace)
-
- // Log a trace level message
- logger.Trace("Doing not so important stuff", logger.Args("priority", "super low"))
-
- // Pause for 3 seconds
- sleep()
-
- // Define a map with interesting stuff
- interstingStuff := map[string]any{
- "when were crayons invented": "1903",
- "what is the meaning of life": 42,
- "is this interesting": true,
- }
-
- // Log a debug level message with arguments from the map
- logger.Debug("This might be interesting", logger.ArgsFromMap(interstingStuff))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message
- logger.Info("That was actually interesting", logger.Args("such", "wow"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a warning level message
- logger.Warn("Oh no, I see an error coming to us!", logger.Args("speed", 88, "measures", "mph"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an error level message
- logger.Error("Damn, here it is!", logger.Args("error", "something went wrong"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log an info level message with a long text that will be automatically wrapped
- logger.Info("But what's really cool is, that you can print very long logs, and PTerm will automatically wrap them for you! Say goodbye to text, that has weird line breaks!", logger.Args("very", "long"))
-
- // Pause for 3 seconds
- sleep()
-
- // Log a fatal level message
- logger.Fatal("Oh no, this process is getting killed!", logger.Args("fatal", true))
-}
-
-// Function to pause the execution for 3 seconds
-func sleep() {
- time.Sleep(time.Second * 3)
-}
-
-```
-
-
-
### logger/json
![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/logger/json/animation.svg)
diff --git a/_examples/logger/custom-key-styles/animation.svg b/_examples/logger/custom-key-styles/animation.svg
index d8ed4f326..784b25620 100644
--- a/_examples/logger/custom-key-styles/animation.svg
+++ b/_examples/logger/custom-key-styles/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(0,71,255);white-space:pre}.k{fill:transparent}.m{animation-duration:5.3295770000000005s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}4.3%{transform:translateX(-80px)}6.2%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}2023-12-1621:09:01INFOTheprioritykeyshouldnowbered├priority:low└foo:bar2023-12-1621:09:01INFOThefookeyshouldnowbebluepriority:lowfoo:barRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:rgb(0,71,255);white-space:pre}.k{fill:transparent}.m{animation-duration:5.370237s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}5.5%{transform:translateX(-80px)}6.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}2024-02-0918:53:08INFOTheprioritykeyshouldnowbered├priority:low└foo:bar2024-02-0918:53:08INFOThefookeyshouldnowbebluepriority:lowfoo:barRestartinganimation...
\ No newline at end of file
diff --git a/_examples/logger/default/animation.svg b/_examples/logger/default/animation.svg
index 9994411fa..1e215907b 100644
--- a/_examples/logger/default/animation.svg
+++ b/_examples/logger/default/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.j{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.m{fill:transparent}.o{animation-duration:7.426473s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}4.3%{transform:translateX(-80px)}5.6%{transform:translateX(-160px)}5.7%{transform:translateX(-240px)}5.7%{transform:translateX(-320px)}5.7%{transform:translateX(-400px)}5.7%{transform:translateX(-480px)}5.7%{transform:translateX(-560px)}5.7%{transform:translateX(-640px)}5.7%{transform:translateX(-720px)}5.7%{transform:translateX(-800px)}32.7%{transform:translateX(-880px)}100%{transform:translateX(-960px)}}2023-12-1621:09:01TRACEDoingnotsoimportantstuffpriority:superlow2023-12-1621:09:01DEBUGThismightbeinteresting├whenwerecrayonsinvented:1903├whatisthemeaningoflife:42└isthisinteresting:true2023-12-1621:09:01INFOThatwasactuallyinterestingsuch:wow2023-12-1621:09:01WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2023-12-1621:09:01ERRORDamn,hereitis!error:somethingwentwrong2023-12-1621:09:01INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:long2023-12-1621:09:03FATALOhno,thisprocessisgettingkilled!fatal:trueRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.j{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.m{fill:transparent}.o{animation-duration:7.315917s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}4.2%{transform:translateX(-80px)}5.8%{transform:translateX(-160px)}31.7%{transform:translateX(-240px)}31.7%{transform:translateX(-320px)}100%{transform:translateX(-400px)}}2024-02-0918:53:10TRACEDoingnotsoimportantstuffpriority:superlow2024-02-0918:53:10DEBUGThismightbeinteresting├whenwerecrayonsinvented:1903├whatisthemeaningoflife:42└isthisinteresting:true2024-02-0918:53:10INFOThatwasactuallyinterestingsuch:wow2024-02-0918:53:10WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2024-02-0918:53:10ERRORDamn,hereitis!error:somethingwentwrong2024-02-0918:53:10INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:long2024-02-0918:53:12FATALOhno,thisprocessisgettingkilled!fatal:trueRestartinganimation...
\ No newline at end of file
diff --git a/_examples/logger/demo/animation.svg b/_examples/logger/demo/animation.svg
index 95e39495d..07fbd8bf7 100644
--- a/_examples/logger/demo/animation.svg
+++ b/_examples/logger/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.j{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.m{fill:transparent}.o{animation-duration:23.223937s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}0.91%{transform:translateX(-80px)}1.24%{transform:translateX(-160px)}13.84%{transform:translateX(-240px)}26.77%{transform:translateX(-320px)}26.77%{transform:translateX(-400px)}39.69%{transform:translateX(-480px)}39.69%{transform:translateX(-560px)}39.7%{transform:translateX(-640px)}39.7%{transform:translateX(-720px)}39.7%{transform:translateX(-800px)}52.62%{transform:translateX(-880px)}65.55%{transform:translateX(-960px)}78.47%{transform:translateX(-1040px)}78.47%{transform:translateX(-1120px)}100%{transform:translateX(-1200px)}}2023-12-1621:09:02TRACEDoingnotsoimportantstuffpriority:superlow2023-12-1621:09:05DEBUGThismightbeinteresting├whatisthemeaningoflife:42├isthisinteresting:true└whenwerecrayonsinvented:19032023-12-1621:09:08INFOThatwasactuallyinterestingsuch:wow2023-12-1621:09:11WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2023-12-1621:09:14ERRORDamn,hereitis!error:somethingwentwrong2023-12-1621:09:17INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:long2023-12-1621:09:20FATALOhno,thisprocessisgettingkilled!fatal:trueRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.j{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.m{fill:transparent}.o{animation-duration:23.364343s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}@keyframes n{0%{transform:translateX(-0px)}1.38%{transform:translateX(-80px)}1.63%{transform:translateX(-160px)}14.34%{transform:translateX(-240px)}27.21%{transform:translateX(-320px)}40.05%{transform:translateX(-400px)}52.9%{transform:translateX(-480px)}65.75%{transform:translateX(-560px)}78.6%{transform:translateX(-640px)}100%{transform:translateX(-720px)}}2024-02-0918:53:07TRACEDoingnotsoimportantstuffpriority:superlow2024-02-0918:53:10DEBUGThismightbeinteresting├whenwerecrayonsinvented:1903├whatisthemeaningoflife:42└isthisinteresting:true2024-02-0918:53:13INFOThatwasactuallyinterestingsuch:wow2024-02-0918:53:16WARNOhno,Iseeanerrorcomingtous!├speed:88└measures:mph2024-02-0918:53:19ERRORDamn,hereitis!error:somethingwentwrong2024-02-0918:53:22INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!└very:long2024-02-0918:53:25FATALOhno,thisprocessisgettingkilled!fatal:trueRestartinganimation...
\ No newline at end of file
diff --git a/_examples/logger/json/animation.svg b/_examples/logger/json/animation.svg
index 5eafd4a79..68daa9494 100644
--- a/_examples/logger/json/animation.svg
+++ b/_examples/logger/json/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.306364s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}4.2%{transform:translateX(-80px)}5.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}{"level":"TRACE","msg":"Doingnotsoimportantstuff","priority":"superlow","timestamp":"2023-12-1621:09:02"}{"isthisinteresting":true,"level":"DEBUG","msg":"Thismightbeinteresting","timestamp":"2023-12-1621:09:02","whatisthemeaningoflife":42,"whenwerecrayonsinvented":"1903"}{"level":"INFO","msg":"Thatwasactuallyinteresting","such":"wow","timestamp":"2023-12-1621:09:02"}{"level":"WARN","measures":"mph","msg":"Ohno,Iseeanerrorcomingtous!","speed":88,"timestamp":"2023-12-1621:09:02"}{"error":"somethingwentwrong","level":"ERROR","msg":"Damn,hereitis!","timestamp":"2023-12-1621:09:02"}{"level":"INFO","msg":"Butwhat'sreallycoolis,thatyoucanprintverylonglogs,andPTermwillautomaticallywrapthemforyou!Saygoodbyetotext,thathasweirdlinebreaks!","timestamp":"2023-12-1621:09:02","very":"long"}{"fatal":true,"level":"FATAL","msg":"Ohno,thisprocessisgettingkilled!","tiRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.454527s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}6.7%{transform:translateX(-80px)}8.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}{"level":"TRACE","msg":"Doingnotsoimportantstuff","priority":"superlow","timestamp":"2024-02-0918:53:08"}{"isthisinteresting":true,"level":"DEBUG","msg":"Thismightbeinteresting","timestamp":"2024-02-0918:53:08","whatisthemeaningoflife":42,"whenwerecrayonsinvented":"1903"}{"level":"INFO","msg":"Thatwasactuallyinteresting","such":"wow","timestamp":"2024-02-0918:53:08"}{"level":"WARN","measures":"mph","msg":"Ohno,Iseeanerrorcomingtous!","speed":88,"timestamp":"2024-02-0918:53:08"}{"error":"somethingwentwrong","level":"ERROR","msg":"Damn,hereitis!","timestamp":"2024-02-0918:53:08"}{"level":"INFO","msg":"Butwhat'sreallycoolis,thatyoucanprintverylonglogs,andPTermwillautomaticallywrapthemforyou!Saygoodbyetotext,thathasweirdlinebreaks!","timestamp":"2024-02-0918:53:08","very":"long"}{"fatal":true,"level":"FATAL","msg":"Ohno,thisprocessisgettingkilled!","tiRestartinganimation...
\ No newline at end of file
diff --git a/_examples/logger/with-caller/animation.svg b/_examples/logger/with-caller/animation.svg
index 618e151e3..8fab3be86 100644
--- a/_examples/logger/with-caller/animation.svg
+++ b/_examples/logger/with-caller/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.h{fill:rgb(104,104,104);font-weight:bold;white-space:pre}.i{fill:rgb(104,104,104);white-space:pre}.j{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.m{fill:transparent}.o{animation-duration:5.413344s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)}.p{fill:rgb(0,198,255);font-weight:bold;white-space:pre}@keyframes n{0%{transform:translateX(-0px)}6.1%{transform:translateX(-80px)}7.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}├whatisthemeaningoflife:42├isthisinteresting:true└caller:/_examples/logger/with-caller/main.go:202023-12-1621:09:00INFOThatwasactuallyinteresting├such:wow└caller:/_examples/logger/with-caller/main.go:232023-12-1621:09:00WARNOhno,Iseeanerrorcomingtous!├speed:88├measures:mph└caller:/_examples/logger/with-caller/main.go:262023-12-1621:09:00ERRORDamn,hereitis!├error:somethingwentwrong└caller:/_examples/logger/with-caller/main.go:292023-12-1621:09:00INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!├very:long└caller:/_examples/logger/with-caller/main.go:322023-12-1621:09:00FATALOhno,thisprocessisgettingkilled!├fatal:true└caller:/_examples/logger/with-caller/main.go:352023-12-1621:09:00TRACEDoingnotsoimportantstuff├priority:superlow└caller:/_examples/logger/with-caller/main.go:102023-12-1621:09:00DEBUGThismightbeinteresting├whenwerecrayonsinvented:1903Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,198,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(104,104,104);font-weight:bold;white-space:pre}.j{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.k{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.l{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.m{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.n{fill:transparent}.p{animation-duration:5.21484s;animation-iteration-count:infinite;animation-name:o;animation-timing-function:steps(1,end)}@keyframes o{0%{transform:translateX(-0px)}3.3%{transform:translateX(-80px)}4.1%{transform:translateX(-160px)}4.1%{transform:translateX(-240px)}4.1%{transform:translateX(-320px)}4.1%{transform:translateX(-400px)}4.1%{transform:translateX(-480px)}4.1%{transform:translateX(-560px)}100%{transform:translateX(-640px)}}2024-02-0918:53:09TRACEDoingnotsoimportantstuff├priority:superlow└caller:/_examples/logger/with-caller/main.go:102024-02-0918:53:09DEBUGThismightbeinteresting├isthisinteresting:true├whenwerecrayonsinvented:1903├whatisthemeaningoflife:42└caller:/_examples/logger/with-caller/main.go:202024-02-0918:53:09INFOThatwasactuallyinteresting├such:wow└caller:/_examples/logger/with-caller/main.go:232024-02-0918:53:09WARNOhno,Iseeanerrorcomingtous!├speed:88├measures:mph└caller:/_examples/logger/with-caller/main.go:262024-02-0918:53:09ERRORDamn,hereitis!├error:somethingwentwrong└caller:/_examples/logger/with-caller/main.go:292024-02-0918:53:09INFOButwhat'sreallycoolis,thatyoucanprintvery│longlogs,andPTermwillautomaticallywrapthemfor│you!Saygoodbyetotext,thathasweirdlinebreaks!├very:long└caller:/_examples/logger/with-caller/main.go:322024-02-0918:53:09FATALOhno,thisprocessisgettingkilled!├fatal:true└caller:/_examples/logger/with-caller/main.go:35Restartinganimation...
\ No newline at end of file
diff --git a/_examples/multiple-live-printers/demo/animation.svg b/_examples/multiple-live-printers/demo/animation.svg
index 7b797b0b8..c600b75bc 100644
--- a/_examples/multiple-live-printers/demo/animation.svg
+++ b/_examples/multiple-live-printers/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(244,10,0);white-space:pre}.k{fill:rgb(160,160,160);white-space:pre}.l{fill:rgb(239,15,0);white-space:pre}.m{fill:rgb(255,0,0);white-space:pre}.n{fill:rgb(252,2,0);white-space:pre}.o{fill:rgb(234,20,0);white-space:pre}.p{fill:rgb(224,30,0);white-space:pre}.q{fill:rgb(249,5,0);white-space:pre}.r{fill:rgb(209,45,0);white-space:pre}.s{fill:rgb(214,40,0);white-space:pre}.t{fill:rgb(193,61,0);white-space:pre}.u{fill:rgb(247,7,0);white-space:pre}.v{fill:rgb(242,12,0);white-space:pre}.w{fill:rgb(204,51,0);white-space:pre}.x{fill:rgb(178,76,0);white-space:pre}.y{fill:rgb(163,91,0);white-space:pre}.z{fill:rgb(183,71,0);white-space:pre}.A{fill:rgb(147,107,0);white-space:pre}.B{fill:rgb(173,81,0);white-space:pre}.C{fill:rgb(132,122,0);white-space:pre}.D{fill:rgb(229,25,0);white-space:pre}.E{fill:rgb(117,137,0);white-space:pre}.F{fill:rgb(237,17,0);white-space:pre}.G{fill:rgb(153,102,0);white-space:pre}.H{fill:rgb(102,153,0);white-space:pre}.I{fill:rgb(221,33,0);white-space:pre}.J{fill:rgb(142,112,0);white-space:pre}.K{fill:rgb(86,168,0);white-space:pre}.L{fill:rgb(168,204,140)}.M{white-space:pre}.N{fill:rgb(124,255,0);white-space:pre}.O{fill:rgb(122,132,0);white-space:pre}.P{fill:rgb(56,198,0);white-space:pre}.Q{fill:rgb(211,43,0);white-space:pre}.R{fill:rgb(112,142,0);white-space:pre}.S{fill:rgb(40,214,0);white-space:pre}.T{fill:rgb(226,28,0);white-space:pre}.U{fill:rgb(232,131,136)}.V{fill:rgb(243,86,86);white-space:pre}.W{fill:rgb(25,229,0);white-space:pre}.X{fill:rgb(91,163,0);white-space:pre}.Y{fill:rgb(10,244,0);white-space:pre}.Z{fill:rgb(201,53,0);white-space:pre}.aa{fill:rgb(81,173,0);white-space:pre}.ab{fill:rgb(0,255,0);white-space:pre}.ac{fill:rgb(198,56,0);white-space:pre}.ad{fill:rgb(71,183,0);white-space:pre}.ae{fill:rgb(219,35,0);white-space:pre}.af{fill:rgb(61,193,0);white-space:pre}.ag{fill:rgb(216,38,0);white-space:pre}.ah{fill:rgb(191,63,0);white-space:pre}.ai{fill:rgb(51,204,0);white-space:pre}.aj{fill:rgb(188,66,0);white-space:pre}.ak{fill:rgb(30,224,0);white-space:pre}.al{fill:rgb(181,73,0);white-space:pre}.am{fill:rgb(22,232,0);white-space:pre}.an{fill:rgb(232,22,0);white-space:pre}.ao{fill:rgb(12,242,0);white-space:pre}.ap{fill:rgb(206,48,0);white-space:pre}.aq{fill:rgb(175,79,0);white-space:pre}.ar{fill:rgb(2,252,0);white-space:pre}.as{fill:rgb(170,84,0);white-space:pre}.at{fill:transparent}.av{animation-duration:10.270836s;animation-iteration-count:infinite;animation-name:au;animation-timing-function:steps(1,end)}@keyframes au{0%{transform:translateX(-0px)}1.8%{transform:translateX(-80px)}2.3%{transform:translateX(-160px)}3.8%{transform:translateX(-240px)}3.8%{transform:translateX(-320px)}3.8%{transform:translateX(-400px)}3.8%{transform:translateX(-480px)}3.8%{transform:translateX(-560px)}3.8%{transform:translateX(-640px)}3.8%{transform:translateX(-720px)}3.8%{transform:translateX(-800px)}3.8%{transform:translateX(-880px)}3.8%{transform:translateX(-960px)}3.8%{transform:translateX(-1040px)}3.8%{transform:translateX(-1120px)}3.8%{transform:translateX(-1200px)}3.8%{transform:translateX(-1280px)}3.8%{transform:translateX(-1360px)}3.8%{transform:translateX(-1440px)}3.8%{transform:translateX(-1520px)}5.7%{transform:translateX(-1600px)}5.7%{transform:translateX(-1680px)}5.7%{transform:translateX(-1760px)}5.7%{transform:translateX(-1840px)}5.7%{transform:translateX(-1920px)}5.7%{transform:translateX(-2000px)}5.7%{transform:translateX(-2080px)}7.7%{transform:translateX(-2160px)}7.7%{transform:translateX(-2240px)}7.7%{transform:translateX(-2320px)}7.7%{transform:translateX(-2400px)}7.7%{transform:translateX(-2480px)}9.6%{transform:translateX(-2560px)}9.6%{transform:translateX(-2640px)}9.6%{transform:translateX(-2720px)}9.6%{transform:translateX(-2800px)}9.6%{transform:translateX(-2880px)}9.6%{transform:translateX(-2960px)}11.6%{transform:translateX(-3040px)}11.6%{transform:translateX(-3120px)}11.6%{transform:translateX(-3200px)}11.6%{transform:translateX(-3280px)}11.6%{transform:translateX(-3360px)}13.5%{transform:translateX(-3440px)}15.5%{transform:translateX(-3520px)}15.5%{transform:translateX(-3600px)}15.5%{transform:translateX(-3680px)}15.5%{transform:translateX(-3760px)}15.5%{transform:translateX(-3840px)}15.5%{transform:translateX(-3920px)}17.4%{transform:translateX(-4000px)}19.4%{transform:translateX(-4080px)}19.4%{transform:translateX(-4160px)}19.4%{transform:translateX(-4240px)}19.4%{transform:translateX(-4320px)}19.4%{transform:translateX(-4400px)}21.3%{transform:translateX(-4480px)}21.3%{transform:translateX(-4560px)}21.3%{transform:translateX(-4640px)}21.3%{transform:translateX(-4720px)}21.3%{transform:translateX(-4800px)}21.3%{transform:translateX(-4880px)}21.3%{transform:translateX(-4960px)}21.3%{transform:translateX(-5040px)}21.3%{transform:translateX(-5120px)}21.3%{transform:translateX(-5200px)}21.3%{transform:translateX(-5280px)}23.2%{transform:translateX(-5360px)}23.3%{transform:translateX(-5440px)}23.3%{transform:translateX(-5520px)}23.3%{transform:translateX(-5600px)}25.5%{transform:translateX(-5680px)}25.5%{transform:translateX(-5760px)}27.1%{transform:translateX(-5840px)}27.1%{transform:translateX(-5920px)}27.1%{transform:translateX(-6000px)}29.1%{transform:translateX(-6080px)}29.1%{transform:translateX(-6160px)}29.1%{transform:translateX(-6240px)}29.1%{transform:translateX(-6320px)}29.1%{transform:translateX(-6400px)}31%{transform:translateX(-6480px)}31%{transform:translateX(-6560px)}31%{transform:translateX(-6640px)}31%{transform:translateX(-6720px)}31%{transform:translateX(-6800px)}33%{transform:translateX(-6880px)}33%{transform:translateX(-6960px)}33%{transform:translateX(-7040px)}33%{transform:translateX(-7120px)}34.8%{transform:translateX(-7200px)}34.9%{transform:translateX(-7280px)}34.9%{transform:translateX(-7360px)}34.9%{transform:translateX(-7440px)}34.9%{transform:translateX(-7520px)}34.9%{transform:translateX(-7600px)}34.9%{transform:translateX(-7680px)}34.9%{transform:translateX(-7760px)}35.8%{transform:translateX(-7840px)}36.8%{transform:translateX(-7920px)}36.9%{transform:translateX(-8000px)}36.9%{transform:translateX(-8080px)}36.9%{transform:translateX(-8160px)}36.9%{transform:translateX(-8240px)}37.7%{transform:translateX(-8320px)}38.7%{transform:translateX(-8400px)}38.8%{transform:translateX(-8480px)}38.8%{transform:translateX(-8560px)}38.8%{transform:translateX(-8640px)}38.8%{transform:translateX(-8720px)}38.8%{transform:translateX(-8800px)}39.7%{transform:translateX(-8880px)}40.7%{transform:translateX(-8960px)}40.8%{transform:translateX(-9040px)}40.8%{transform:translateX(-9120px)}40.8%{transform:translateX(-9200px)}40.8%{transform:translateX(-9280px)}40.8%{transform:translateX(-9360px)}41.7%{transform:translateX(-9440px)}42.7%{transform:translateX(-9520px)}42.7%{transform:translateX(-9600px)}42.7%{transform:translateX(-9680px)}43.7%{transform:translateX(-9760px)}44.6%{transform:translateX(-9840px)}44.7%{transform:translateX(-9920px)}44.7%{transform:translateX(-10000px)}44.7%{transform:translateX(-10080px)}44.7%{transform:translateX(-10160px)}44.7%{transform:translateX(-10240px)}45.6%{transform:translateX(-10320px)}46.6%{transform:translateX(-10400px)}46.6%{transform:translateX(-10480px)}47.6%{transform:translateX(-10560px)}48.6%{transform:translateX(-10640px)}48.6%{transform:translateX(-10720px)}48.6%{transform:translateX(-10800px)}48.6%{transform:translateX(-10880px)}48.6%{transform:translateX(-10960px)}48.6%{transform:translateX(-11040px)}48.6%{transform:translateX(-11120px)}48.6%{transform:translateX(-11200px)}49.6%{transform:translateX(-11280px)}50.5%{transform:translateX(-11360px)}50.5%{transform:translateX(-11440px)}50.5%{transform:translateX(-11520px)}50.6%{transform:translateX(-11600px)}50.6%{transform:translateX(-11680px)}51.3%{transform:translateX(-11760px)}51.3%{transform:translateX(-11840px)}51.3%{transform:translateX(-11920px)}51.3%{transform:translateX(-12000px)}51.3%{transform:translateX(-12080px)}100%{transform:translateX(-12160px)}}▀Spinner1(0s)▀Spinner2(0s)Progressbar1[004/100]██████████████████████████████████████████████4%|0sProgressbar2[006/100]██████████████████████████████████████████████6%|0sProgressbar3[000/100]█████████████████████████████████████████████0%|0sProgressbar4[000/100]█████████████████████████████████████████████0%|0sProgressbar5[001/100]█████████████████████████████████████████████1%|0s▄Spinner1(0s)Progressbar1[008/100]██████████████████████████████████████████████8%|0sProgressbar2[012/100]██████████████████████████████████████████████12%|0sProgressbar3[001/100]█████████████████████████████████████████████1%|0sProgressbar5[002/100]█████████████████████████████████████████████2%|0s▄Spinner2(0s)Progressbar1[012/100]██████████████████████████████████████████████12%|1sProgressbar2[018/100]██████████████████████████████████████████████18%|1sProgressbar3[002/100]█████████████████████████████████████████████2%|0sProgressbar4[001/100]█████████████████████████████████████████████1%|0s▄Spinner1(1s)▄Spinner2(1s)Progressbar1[016/100]██████████████████████████████████████████████16%|1sProgressbar2[024/100]██████████████████████████████████████████████24%|1sProgressbar3[003/100]██████████████████████████████████████████████3%|1sProgressbar5[005/100]██████████████████████████████████████████████5%|1s▀Spinner1(1s)▀Spinner2(1s)Progressbar1[020/100]██████████████████████████████████████████████20%|1sProgressbar2[030/100]██████████████████████████████████████████████30%|1sProgressbar3[004/100]██████████████████████████████████████████████4%|1sProgressbar4[002/100]█████████████████████████████████████████████2%|1s▀Spinner1(1s)▀Spinner2(1s)Progressbar1[024/100]██████████████████████████████████████████████24%|1sProgressbar2[036/100]██████████████████████████████████████████████36%|1s▄Spinner1(1s)▄Spinner2(1s)Progressbar1[028/100]██████████████████████████████████████████████28%|1sProgressbar2[042/100]██████████████████████████████████████████████42%|1sProgressbar3[005/100]██████████████████████████████████████████████5%|1sProgressbar1[032/100]██████████████████████████████████████████████32%|2sProgressbar2[048/100]██████████████████████████████████████████████48%|2sProgressbar3[006/100]██████████████████████████████████████████████6%|1sProgressbar4[003/100]██████████████████████████████████████████████3%|1sProgressbar5[010/100]██████████████████████████████████████████████10%|1s▀Spinner1(2s)▀Spinner2(2s)Progressbar1[036/100]██████████████████████████████████████████████36%|2sProgressbar2[054/100]██████████████████████████████████████████████54%|2sProgressbar3[007/100]██████████████████████████████████████████████7%|2sProgressbar5[012/100]██████████████████████████████████████████████12%|2s▀Spinner1(2s)▀Spinner2(2s)Progressbar1[040/100]██████████████████████████████████████████████40%|2sProgressbar2[060/100]██████████████████████████████████████████████60%|2sProgressbar3[008/100]██████████████████████████████████████████████8%|2sProgressbar4[004/100]██████████████████████████████████████████████4%|2sProgressbar5[013/100]██████████████████████████████████████████████13%|2s▄Spinner1(2s)▄Spinner2(2s)Progressbar1[044/100]██████████████████████████████████████████████44%|2sProgressbar2[066/100]██████████████████████████████████████████████66%|2s▄Spinner1(2s)▄Spinner2(2s) SUCCESS Spinner1isdone!Progressbar1[052/100]██████████████████████████████████████████████52%|3sProgressbar2[078/100]██████████████████████████████████████████████78%|3sProgressbar3[010/100]██████████████████████████████████████████████10%|2sProgressbar4[005/100]██████████████████████████████████████████████5%|2sProgressbar5[017/100]██████████████████████████████████████████████17%|3s▀Spinner2(3s)Progressbar1[056/100]██████████████████████████████████████████████56%|3sProgressbar2[084/100]██████████████████████████████████████████████84%|3sProgressbar3[011/100]██████████████████████████████████████████████11%|3sProgressbar5[018/100]██████████████████████████████████████████████18%|3s ERROR Spinner2failed!Progressbar1[060/100]██████████████████████████████████████████████60%|3sProgressbar2[090/100]██████████████████████████████████████████████90%|3sProgressbar3[012/100]██████████████████████████████████████████████12%|3sProgressbar4[006/100]██████████████████████████████████████████████6%|3sProgressbar5[020/100]██████████████████████████████████████████████20%|3sProgressbar1[064/100]██████████████████████████████████████████████64%|3sProgressbar2[096/100]██████████████████████████████████████████████96%|3sProgressbar5[021/100]██████████████████████████████████████████████21%|3sProgressbar1[068/100]██████████████████████████████████████████████68%|3sProgressbar2[102/102]██████████████████████████████████████████████100%|3sProgressbar3[013/100]██████████████████████████████████████████████13%|3sProgressbar5[022/100]██████████████████████████████████████████████22%|3sProgressbar1[072/100]██████████████████████████████████████████████72%|4sProgressbar3[014/100]██████████████████████████████████████████████14%|3sProgressbar4[007/100]██████████████████████████████████████████████7%|3sProgressbar5[024/100]██████████████████████████████████████████████24%|4sProgressbar1[076/100]██████████████████████████████████████████████76%|4sProgressbar3[015/100]██████████████████████████████████████████████15%|4sProgressbar5[025/100]██████████████████████████████████████████████25%|4sProgressbar1[080/100]██████████████████████████████████████████████80%|4sProgressbar3[016/100]██████████████████████████████████████████████16%|4sProgressbar4[008/100]██████████████████████████████████████████████8%|4sProgressbar5[026/100]██████████████████████████████████████████████26%|4sProgressbar1[084/100]██████████████████████████████████████████████84%|4sProgressbar5[028/100]██████████████████████████████████████████████28%|4sProgressbar1[088/100]██████████████████████████████████████████████88%|4sProgressbar3[017/100]██████████████████████████████████████████████17%|4sProgressbar5[029/100]██████████████████████████████████████████████29%|4sProgressbar1[091/100]██████████████████████████████████████████████91%|5sProgressbar3[018/100]██████████████████████████████████████████████18%|4sProgressbar4[009/100]██████████████████████████████████████████████9%|4sProgressbar5[030/100]██████████████████████████████████████████████30%|4sProgressbar1[095/100]██████████████████████████████████████████████95%|5sProgressbar3[019/100]██████████████████████████████████████████████19%|5sProgressbar5[031/100]██████████████████████████████████████████████31%|5sProgressbar1[099/100]██████████████████████████████████████████████99%|5sProgressbar5[033/100]██████████████████████████████████████████████33%|5sProgressbar1[100/100]██████████████████████████████████████████████100%|5sProgressbar3[020/100]██████████████████████████████████████████████20%|5sProgressbar4[010/100]██████████████████████████████████████████████10%|5sProgressbar3[000/100]████████████████████████████████████████Progressbar5[004/100]██████████████████████████████████████████████4%|1sProgressbar5[006/100]██████████████████████████████████████████████6%|1sProgressbar5[008/100]██████████████████████████████████████████████8%|1sProgressbar5[009/100]██████████████████████████████████████████████9%|1sProgressbar5[014/100]██████████████████████████████████████████████14%|2sProgressbar1[048/100]██████████████████████████████████████████████48%|2sProgressbar2[072/100]██████████████████████████████████████████████72%|2sProgressbar3[009/100]██████████████████████████████████████████████9%|2sProgressbar5[016/100]██████████████████████████████████████████████16%|2sProgressbar5[033/100]█Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(244,10,0);white-space:pre}.k{fill:rgb(160,160,160);white-space:pre}.l{fill:rgb(239,15,0);white-space:pre}.m{fill:rgb(255,0,0);white-space:pre}.n{fill:rgb(252,2,0);white-space:pre}.o{fill:rgb(234,20,0);white-space:pre}.p{fill:rgb(224,30,0);white-space:pre}.q{fill:rgb(249,5,0);white-space:pre}.r{fill:rgb(209,45,0);white-space:pre}.s{fill:rgb(214,40,0);white-space:pre}.t{fill:rgb(193,61,0);white-space:pre}.u{fill:rgb(247,7,0);white-space:pre}.v{fill:rgb(242,12,0);white-space:pre}.w{fill:rgb(204,51,0);white-space:pre}.x{fill:rgb(178,76,0);white-space:pre}.y{fill:rgb(163,91,0);white-space:pre}.z{fill:rgb(183,71,0);white-space:pre}.A{fill:rgb(147,107,0);white-space:pre}.B{fill:rgb(232,22,0);white-space:pre}.C{fill:rgb(173,81,0);white-space:pre}.D{fill:rgb(132,122,0);white-space:pre}.E{fill:rgb(229,25,0);white-space:pre}.F{fill:rgb(117,137,0);white-space:pre}.G{fill:rgb(237,17,0);white-space:pre}.H{fill:rgb(153,102,0);white-space:pre}.I{fill:rgb(102,153,0);white-space:pre}.J{fill:rgb(142,112,0);white-space:pre}.K{fill:rgb(86,168,0);white-space:pre}.L{fill:rgb(219,35,0);white-space:pre}.M{fill:rgb(71,183,0);white-space:pre}.N{fill:rgb(168,204,140)}.O{white-space:pre}.P{fill:rgb(124,255,0);white-space:pre}.Q{fill:rgb(122,132,0);white-space:pre}.R{fill:rgb(56,198,0);white-space:pre}.S{fill:rgb(211,43,0);white-space:pre}.T{fill:rgb(119,135,0);white-space:pre}.U{fill:rgb(232,131,136)}.V{fill:rgb(243,86,86);white-space:pre}.W{fill:rgb(99,155,0);white-space:pre}.X{fill:rgb(25,229,0);white-space:pre}.Y{fill:rgb(91,163,0);white-space:pre}.Z{fill:rgb(10,244,0);white-space:pre}.aa{fill:rgb(201,53,0);white-space:pre}.ab{fill:rgb(81,173,0);white-space:pre}.ac{fill:rgb(0,255,0);white-space:pre}.ad{fill:rgb(221,33,0);white-space:pre}.ae{fill:rgb(198,56,0);white-space:pre}.af{fill:rgb(61,193,0);white-space:pre}.ag{fill:rgb(216,38,0);white-space:pre}.ah{fill:rgb(191,63,0);white-space:pre}.ai{fill:rgb(51,204,0);white-space:pre}.aj{fill:rgb(188,66,0);white-space:pre}.ak{fill:rgb(40,214,0);white-space:pre}.al{fill:rgb(30,224,0);white-space:pre}.am{fill:rgb(181,73,0);white-space:pre}.an{fill:rgb(20,234,0);white-space:pre}.ao{fill:rgb(206,48,0);white-space:pre}.ap{fill:rgb(170,84,0);white-space:pre}.aq{fill:transparent}.as{animation-duration:10.595092s;animation-iteration-count:infinite;animation-name:ar;animation-timing-function:steps(1,end)}.at{fill:rgb(109,145,0);white-space:pre}.au{fill:rgb(226,28,0);white-space:pre}@keyframes ar{0%{transform:translateX(-0px)}3.2%{transform:translateX(-80px)}3.7%{transform:translateX(-160px)}5.1%{transform:translateX(-240px)}5.1%{transform:translateX(-320px)}5.1%{transform:translateX(-400px)}5.1%{transform:translateX(-480px)}5.1%{transform:translateX(-560px)}5.1%{transform:translateX(-640px)}5.1%{transform:translateX(-720px)}5.1%{transform:translateX(-800px)}5.1%{transform:translateX(-880px)}5.1%{transform:translateX(-960px)}5.1%{transform:translateX(-1040px)}5.1%{transform:translateX(-1120px)}5.1%{transform:translateX(-1200px)}5.1%{transform:translateX(-1280px)}5.1%{transform:translateX(-1360px)}5.1%{transform:translateX(-1440px)}5.1%{transform:translateX(-1520px)}7%{transform:translateX(-1600px)}7%{transform:translateX(-1680px)}7%{transform:translateX(-1760px)}7%{transform:translateX(-1840px)}7%{transform:translateX(-1920px)}8.8%{transform:translateX(-2000px)}8.8%{transform:translateX(-2080px)}8.9%{transform:translateX(-2160px)}8.9%{transform:translateX(-2240px)}8.9%{transform:translateX(-2320px)}10.7%{transform:translateX(-2400px)}10.7%{transform:translateX(-2480px)}10.7%{transform:translateX(-2560px)}10.7%{transform:translateX(-2640px)}10.7%{transform:translateX(-2720px)}10.7%{transform:translateX(-2800px)}10.7%{transform:translateX(-2880px)}12.6%{transform:translateX(-2960px)}12.6%{transform:translateX(-3040px)}12.6%{transform:translateX(-3120px)}12.6%{transform:translateX(-3200px)}14.5%{transform:translateX(-3280px)}14.5%{transform:translateX(-3360px)}14.5%{transform:translateX(-3440px)}14.5%{transform:translateX(-3520px)}14.5%{transform:translateX(-3600px)}16.4%{transform:translateX(-3680px)}16.4%{transform:translateX(-3760px)}16.4%{transform:translateX(-3840px)}16.4%{transform:translateX(-3920px)}18.3%{transform:translateX(-4000px)}18.3%{transform:translateX(-4080px)}18.3%{transform:translateX(-4160px)}18.3%{transform:translateX(-4240px)}20.2%{transform:translateX(-4320px)}20.2%{transform:translateX(-4400px)}20.2%{transform:translateX(-4480px)}20.2%{transform:translateX(-4560px)}22.1%{transform:translateX(-4640px)}22.1%{transform:translateX(-4720px)}22.1%{transform:translateX(-4800px)}22.1%{transform:translateX(-4880px)}23.9%{transform:translateX(-4960px)}25.8%{transform:translateX(-5040px)}25.8%{transform:translateX(-5120px)}25.8%{transform:translateX(-5200px)}25.8%{transform:translateX(-5280px)}25.9%{transform:translateX(-5360px)}27.7%{transform:translateX(-5440px)}27.7%{transform:translateX(-5520px)}27.7%{transform:translateX(-5600px)}27.7%{transform:translateX(-5680px)}27.7%{transform:translateX(-5760px)}27.7%{transform:translateX(-5840px)}27.7%{transform:translateX(-5920px)}27.7%{transform:translateX(-6000px)}29.6%{transform:translateX(-6080px)}29.6%{transform:translateX(-6160px)}29.6%{transform:translateX(-6240px)}29.6%{transform:translateX(-6320px)}29.6%{transform:translateX(-6400px)}31.5%{transform:translateX(-6480px)}33.4%{transform:translateX(-6560px)}33.4%{transform:translateX(-6640px)}35.3%{transform:translateX(-6720px)}35.3%{transform:translateX(-6800px)}35.3%{transform:translateX(-6880px)}35.3%{transform:translateX(-6960px)}35.3%{transform:translateX(-7040px)}36.8%{transform:translateX(-7120px)}37.2%{transform:translateX(-7200px)}37.2%{transform:translateX(-7280px)}37.2%{transform:translateX(-7360px)}37.2%{transform:translateX(-7440px)}37.2%{transform:translateX(-7520px)}37.9%{transform:translateX(-7600px)}38.8%{transform:translateX(-7680px)}39%{transform:translateX(-7760px)}39%{transform:translateX(-7840px)}39.1%{transform:translateX(-7920px)}39.1%{transform:translateX(-8000px)}39.8%{transform:translateX(-8080px)}40.7%{transform:translateX(-8160px)}40.9%{transform:translateX(-8240px)}41.7%{transform:translateX(-8320px)}42.6%{transform:translateX(-8400px)}42.8%{transform:translateX(-8480px)}42.8%{transform:translateX(-8560px)}42.8%{transform:translateX(-8640px)}42.8%{transform:translateX(-8720px)}42.8%{transform:translateX(-8800px)}43.6%{transform:translateX(-8880px)}44.5%{transform:translateX(-8960px)}44.7%{transform:translateX(-9040px)}44.7%{transform:translateX(-9120px)}44.7%{transform:translateX(-9200px)}44.7%{transform:translateX(-9280px)}44.7%{transform:translateX(-9360px)}44.7%{transform:translateX(-9440px)}45.5%{transform:translateX(-9520px)}46.4%{transform:translateX(-9600px)}46.7%{transform:translateX(-9680px)}47.4%{transform:translateX(-9760px)}48.3%{transform:translateX(-9840px)}48.5%{transform:translateX(-9920px)}48.5%{transform:translateX(-10000px)}48.5%{transform:translateX(-10080px)}48.5%{transform:translateX(-10160px)}48.5%{transform:translateX(-10240px)}48.5%{transform:translateX(-10320px)}48.5%{transform:translateX(-10400px)}49.3%{transform:translateX(-10480px)}50.2%{transform:translateX(-10560px)}50.4%{transform:translateX(-10640px)}50.4%{transform:translateX(-10720px)}50.4%{transform:translateX(-10800px)}50.4%{transform:translateX(-10880px)}50.4%{transform:translateX(-10960px)}50.4%{transform:translateX(-11040px)}50.4%{transform:translateX(-11120px)}50.4%{transform:translateX(-11200px)}50.4%{transform:translateX(-11280px)}50.4%{transform:translateX(-11360px)}50.4%{transform:translateX(-11440px)}51.2%{transform:translateX(-11520px)}52.1%{transform:translateX(-11600px)}52.1%{transform:translateX(-11680px)}52.3%{transform:translateX(-11760px)}52.3%{transform:translateX(-11840px)}52.3%{transform:translateX(-11920px)}52.8%{transform:translateX(-12000px)}52.8%{transform:translateX(-12080px)}52.8%{transform:translateX(-12160px)}52.8%{transform:translateX(-12240px)}52.8%{transform:translateX(-12320px)}52.8%{transform:translateX(-12400px)}52.8%{transform:translateX(-12480px)}52.8%{transform:translateX(-12560px)}100%{transform:translateX(-12640px)}}▀Spinner1(0s)▀Spinner2(0s)Progressbar1[004/100]██████████████████████████████████████████████4%|0sProgressbar2[006/100]██████████████████████████████████████████████6%|0sProgressbar3[000/100]█████████████████████████████████████████████0%|0sProgressbar4[000/100]█████████████████████████████████████████████0%|0sProgressbar5[001/100]█████████████████████████████████████████████1%|0s▀Spinner1(0s)Progressbar1[008/100]██████████████████████████████████████████████8%|0sProgressbar2[012/100]██████████████████████████████████████████████12%|0sProgressbar3[001/100]█████████████████████████████████████████████1%|0sProgressbar5[002/100]█████████████████████████████████████████████2%|0s▄Spinner1(0s)▄Spinner2(0s)Progressbar1[012/100]██████████████████████████████████████████████12%|1sProgressbar2[018/100]██████████████████████████████████████████████18%|1sProgressbar3[002/100]█████████████████████████████████████████████2%|0sProgressbar4[001/100]█████████████████████████████████████████████1%|0s▄Spinner1(1s)▄Spinner2(1s)Progressbar1[016/100]██████████████████████████████████████████████16%|1sProgressbar2[024/100]██████████████████████████████████████████████24%|1sProgressbar3[003/100]██████████████████████████████████████████████3%|1sProgressbar5[005/100]██████████████████████████████████████████████5%|1s▀Spinner1(1s)▀Spinner2(1s)Progressbar1[020/100]██████████████████████████████████████████████20%|1sProgressbar2[030/100]██████████████████████████████████████████████30%|1sProgressbar3[004/100]██████████████████████████████████████████████4%|1sProgressbar4[002/100]█████████████████████████████████████████████2%|1sProgressbar5[006/100]██████████████████████████████████████████████6%|1s▀Spinner1(1s)▀Spinner2(1s)Progressbar1[024/100]██████████████████████████████████████████████24%|1sProgressbar2[036/100]██████████████████████████████████████████████36%|1sProgressbar5[008/100]██████████████████████████████████████████████8%|1s▄Spinner1(1s)▄Spinner2(1s)Progressbar1[028/100]██████████████████████████████████████████████28%|1sProgressbar2[042/100]██████████████████████████████████████████████42%|1sProgressbar3[005/100]██████████████████████████████████████████████5%|1sProgressbar5[009/100]██████████████████████████████████████████████9%|1sProgressbar1[032/100]██████████████████████████████████████████████32%|2sProgressbar2[048/100]██████████████████████████████████████████████48%|2sProgressbar3[006/100]██████████████████████████████████████████████6%|1sProgressbar4[003/100]██████████████████████████████████████████████3%|1sProgressbar5[010/100]██████████████████████████████████████████████10%|1s▀Spinner1(2s)▀Spinner2(2s)Progressbar1[036/100]██████████████████████████████████████████████36%|2sProgressbar2[054/100]██████████████████████████████████████████████54%|2sProgressbar3[007/100]██████████████████████████████████████████████7%|2sProgressbar5[012/100]██████████████████████████████████████████████12%|2s▀Spinner1(2s)▀Spinner2(2s)Progressbar1[040/100]██████████████████████████████████████████████40%|2sProgressbar2[060/100]██████████████████████████████████████████████60%|2sProgressbar3[008/100]██████████████████████████████████████████████8%|2sProgressbar4[004/100]██████████████████████████████████████████████4%|2s▄Spinner1(2s)▄Spinner2(2s)Progressbar1[044/100]██████████████████████████████████████████████44%|2sProgressbar2[066/100]██████████████████████████████████████████████66%|2sProgressbar5[014/100]██████████████████████████████████████████████14%|2s▄Spinner1(2s)▄Spinner2(2s)Progressbar1[048/100]██████████████████████████████████████████████48%|2sProgressbar2[072/100]██████████████████████████████████████████████72%|2sProgressbar3[009/100]██████████████████████████████████████████████9%|2sProgressbar5[016/100]██████████████████████████████████████████████16%|2s SUCCESS Spinner1isdone!Progressbar1[052/100]██████████████████████████████████████████████52%|3sProgressbar2[078/100]██████████████████████████████████████████████78%|3sProgressbar3[010/100]██████████████████████████████████████████████10%|2sProgressbar4[005/100]██████████████████████████████████████████████5%|2sProgressbar5[017/100]██████████████████████████████████████████████17%|3s▀Spinner2(3s)Progressbar1[053/100]██████████████████████████████████████████████53%|3s ERROR Spinner2failed!Progressbar1[061/100]██████████████████████████████████████████████61%|3sProgressbar2[090/100]██████████████████████████████████████████████90%|3sProgressbar3[012/100]██████████████████████████████████████████████12%|3sProgressbar4[006/100]██████████████████████████████████████████████6%|3sProgressbar5[020/100]██████████████████████████████████████████████20%|3sProgressbar1[064/100]██████████████████████████████████████████████64%|3sProgressbar2[096/100]██████████████████████████████████████████████96%|3sProgressbar5[021/100]██████████████████████████████████████████████21%|3sProgressbar1[068/100]██████████████████████████████████████████████68%|4sProgressbar2[102/102]██████████████████████████████████████████████100%|4sProgressbar3[013/100]██████████████████████████████████████████████13%|4sProgressbar4[006/100]██████████████████████████████████████████████6%|4sProgressbar5[022/100]██████████████████████████████████████████████22%|4sProgressbar1[072/100]██████████████████████████████████████████████72%|4sProgressbar3[014/100]██████████████████████████████████████████████14%|4sProgressbar4[007/100]██████████████████████████████████████████████7%|4sProgressbar5[024/100]██████████████████████████████████████████████24%|4sProgressbar1[076/100]██████████████████████████████████████████████76%|4sProgressbar3[015/100]██████████████████████████████████████████████15%|4sProgressbar5[025/100]██████████████████████████████████████████████25%|4sProgressbar1[080/100]██████████████████████████████████████████████80%|4sProgressbar3[016/100]██████████████████████████████████████████████16%|4sProgressbar4[008/100]██████████████████████████████████████████████8%|4sProgressbar5[026/100]██████████████████████████████████████████████26%|4sProgressbar1[084/100]██████████████████████████████████████████████84%|4sProgressbar5[028/100]██████████████████████████████████████████████28%|4sProgressbar1[088/100]██████████████████████████████████████████████88%|5sProgressbar3[017/100]██████████████████████████████████████████████17%|4sProgressbar5[029/100]██████████████████████████████████████████████29%|5sProgressbar1[092/100]██████████████████████████████████████████████92%|5sProgressbar3[018/100]██████████████████████████████████████████████18%|5sProgressbar4[009/100]██████████████████████████████████████████████9%|5sProgressbar5[030/100]██████████████████████████████████████████████30%|5sProgressbar1[096/100]██████████████████████████████████████████████96%|5sProgressbar3[019/100]██████████████████████████████████████████████19%|5sProgressbar5[032/100]██████████████████████████████████████████████32%|5sProgressbar1[100/100]██████████████████████████████████████████████100%|5sProgressbar3[020/100]██████████████████████████████████████████████20%|5sProgressbar4[010/100]██████████████████████████████████████████████10%|5sProgressbar5[033/100]██████████████████████████████████████████████33%|5sProgressbar3[000/100]████████████████████████████████████████Progressbar5[004/100]██████████████████████████████████████████████4%|1sProgressbar5[013/100]██████████████████████████████████████████████13%|2sProgressbar4[005/100]█████████████████████████████▄Spinner2(3s)Progressbar1[057/100]██████████████████████████████████████████████57%|3sProgressbar2[084/100]██████████████████████████████████████████████84%|3sProgressbar3[011/100]██████████████████████████████████████████████11%|3sProgressbar4[005/100]██████████████████████████████████████████████5%|3sProgressbar5[019/100]██████████████████████████████████████████████19%|3sProgressbar5[030/100Restartinganimation...
\ No newline at end of file
diff --git a/_examples/panel/demo/animation.svg b/_examples/panel/demo/animation.svg
index f8f2561d3..b74ebdbe6 100644
--- a/_examples/panel/demo/animation.svg
+++ b/_examples/panel/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(111,119,131)}.h{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:transparent}.l{animation-duration:5.212337s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}3.9%{transform:translateX(-80px)}4.1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}ThisisthefirstpanelThis Hello, World! panelcontainsmultiplelinesThisisanotherThisisthesecondpanelpanellinewithanewlineRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(111,119,131)}.h{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.i{fill:rgb(255,0,4);white-space:pre}.j{fill:transparent}.l{animation-duration:5.275475s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}@keyframes k{0%{transform:translateX(-0px)}5.2%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}ThisisthefirstpanelThis Hello, World! panelcontainsmultiplelinesThisisanotherThisisthesecondpanelpanellinewithanewlineRestartinganimation...
\ No newline at end of file
diff --git a/_examples/paragraph/README.md b/_examples/paragraph/README.md
index c4c4ec2af..14885180d 100644
--- a/_examples/paragraph/README.md
+++ b/_examples/paragraph/README.md
@@ -1,6 +1,6 @@
-### paragraph/customized
+### paragraph/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
@@ -12,32 +12,29 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define a long text to be printed as a paragraph.
- longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
+ // Using the default paragraph printer to print a long text.
+ // The text is split at the spaces, which is useful for continuous text of all kinds.
+ // The line width can be manually adjusted if needed.
+ pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text as a paragraph with a custom maximal width of 60 characters.
- pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
- // Print a line space to separate the paragraph from the following text.
+ // Printing a line space for separation.
pterm.Println()
- // Define another long text to be printed without a paragraph printer.
- longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
-
- // Print the long text without using a paragraph printer.
- pterm.Println(longTextWithoutParagraph)
+ // Printing a long text without using the paragraph printer.
+ // The default Println() function is used here, which does not provide intelligent splitting.
+ pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
}
```
-### paragraph/demo
+### paragraph/customized
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/paragraph/customized/animation.svg)
@@ -49,20 +46,23 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Using the default paragraph printer to print a long text.
- // The text is split at the spaces, which is useful for continuous text of all kinds.
- // The line width can be manually adjusted if needed.
- pterm.DefaultParagraph.Println("This is the default paragraph printer. As you can see, no words are separated, " +
+ // Define a long text to be printed as a paragraph.
+ longText := "This is a custom paragraph printer. As you can see, no words are separated, " +
"but the text is split at the spaces. This is useful for continuous text of all kinds. You can manually change the line width if you want to." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
- // Printing a line space for separation.
+ // Print the long text as a paragraph with a custom maximal width of 60 characters.
+ pterm.DefaultParagraph.WithMaxWidth(60).Println(longText)
+
+ // Print a line space to separate the paragraph from the following text.
pterm.Println()
- // Printing a long text without using the paragraph printer.
- // The default Println() function is used here, which does not provide intelligent splitting.
- pterm.Println("This text is written with the default Println() function. No intelligent splitting here." +
- "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam")
+ // Define another long text to be printed without a paragraph printer.
+ longTextWithoutParagraph := "This text is written with the default Println() function. No intelligent splitting here." +
+ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam"
+
+ // Print the long text without using a paragraph printer.
+ pterm.Println(longTextWithoutParagraph)
}
```
diff --git a/_examples/paragraph/customized/animation.svg b/_examples/paragraph/customized/animation.svg
index 3875c8265..d94687b7d 100644
--- a/_examples/paragraph/customized/animation.svg
+++ b/_examples/paragraph/customized/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.261162s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}5%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Thisisacustomparagraphprinter.Asyoucansee,nowordsareseparated,butthetextissplitatthespaces.Thisisusefulforcontinuoustextofallkinds.Youcanmanuallychangethelinewidthifyouwantto.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamThistextiswrittenwiththedefaultPrintln()function.Nointelligentsplittinghere.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.354681s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}4.3%{transform:translateX(-80px)}6.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Thisisacustomparagraphprinter.Asyoucansee,nowordsareseparated,butthetextissplitatthespaces.Thisisusefulforcontinuoustextofallkinds.Youcanmanuallychangethelinewidthifyouwantto.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamThistextiswrittenwiththedefaultPrintln()function.Nointelligentsplittinghere.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamRestartinganimation...
\ No newline at end of file
diff --git a/_examples/paragraph/demo/animation.svg b/_examples/paragraph/demo/animation.svg
index aaeb9a994..7a3796aaa 100644
--- a/_examples/paragraph/demo/animation.svg
+++ b/_examples/paragraph/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.285263s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}5.4%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Thisisthedefaultparagraphprinter.Asyoucansee,nowordsareseparated,butthetextissplitatthespaces.Thisisusefulforcontinuoustextofallkinds.Youcanmanuallychangethelinewidthifyouwantto.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamThistextiswrittenwiththedefaultPrintln()function.Nointelligentsplittinghere.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:transparent}.i{animation-duration:5.305698s;animation-iteration-count:infinite;animation-name:h;animation-timing-function:steps(1,end)}@keyframes h{0%{transform:translateX(-0px)}4.5%{transform:translateX(-80px)}5.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Thisisthedefaultparagraphprinter.Asyoucansee,nowordsareseparated,butthetextissplitatthespaces.Thisisusefulforcontinuoustextofallkinds.Youcanmanuallychangethelinewidthifyouwantto.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamThistextiswrittenwiththedefaultPrintln()function.Nointelligentsplittinghere.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamRestartinganimation...
\ No newline at end of file
diff --git a/_examples/prefix/demo/animation.svg b/_examples/prefix/demo/animation.svg
index 04e7315a8..aee9a1962 100644
--- a/_examples/prefix/demo/animation.svg
+++ b/_examples/prefix/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(102,194,205)}.j{fill:rgb(126,231,233);white-space:pre}.k{fill:rgb(168,204,140)}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(219,171,121)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:transparent}.s{animation-duration:5.248848s;animation-iteration-count:infinite;animation-name:r;animation-timing-function:steps(1,end)}.t{fill:rgb(160,160,160);white-space:pre}@keyframes r{0%{transform:translateX(-0px)}4%{transform:translateX(-80px)}4.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} DEBUG Hello,World! INFO Hello,World! SUCCESS Hello,World! WARNING Hello,World! ERROR Errorsshowthefilenameandlinenumberinsidetheterminal! INFO OtherPrefixPrinterscandothattoo!└(/github/workspace/_examples/prefix/demo/main.go:26) FATAL Hello,World!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(102,194,205)}.j{fill:rgb(126,231,233);white-space:pre}.k{fill:rgb(168,204,140)}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(219,171,121)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:transparent}.s{animation-duration:5.430303s;animation-iteration-count:infinite;animation-name:r;animation-timing-function:steps(1,end)}.t{fill:rgb(160,160,160);white-space:pre}@keyframes r{0%{transform:translateX(-0px)}6.5%{transform:translateX(-80px)}7.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}} DEBUG Hello,World! INFO Hello,World! SUCCESS Hello,World! WARNING Hello,World! ERROR Errorsshowthefilenameandlinenumberinsidetheterminal! INFO OtherPrefixPrinterscandothattoo!└(/github/workspace/_examples/prefix/demo/main.go:26) FATAL Hello,World!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/progressbar/demo/animation.svg b/_examples/progressbar/demo/animation.svg
index 650894bb5..14b3d4dc3 100644
--- a/_examples/progressbar/demo/animation.svg
+++ b/_examples/progressbar/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(168,204,140)}.g{white-space:pre}.h{fill:rgb(124,255,0);white-space:pre}.i{fill:rgb(126,231,233);white-space:pre}.j{fill:rgb(104,104,104);white-space:pre}.k{fill:rgb(255,255,255);white-space:pre}.l{fill:rgb(0,198,255);white-space:pre}.m{fill:rgb(212,42,0);white-space:pre}.n{fill:rgb(160,160,160);white-space:pre}.o{fill:rgb(191,63,0);white-space:pre}.p{fill:rgb(148,106,0);white-space:pre}.q{fill:rgb(127,127,0);white-space:pre}.r{fill:rgb(106,148,0);white-space:pre}.s{fill:rgb(85,170,0);white-space:pre}.t{fill:rgb(63,191,0);white-space:pre}.u{fill:rgb(21,233,0);white-space:pre}.v{fill:rgb(0,255,0);white-space:pre}.w{fill:transparent}.y{animation-duration:12.082648s;animation-iteration-count:infinite;animation-name:x;animation-timing-function:steps(1,end)}.z{fill:rgb(233,21,0);white-space:pre}.A{fill:rgb(170,85,0);white-space:pre}.B{fill:rgb(42,212,0);white-space:pre}@keyframes x{0%{transform:translateX(-0px)}1.8%{transform:translateX(-80px)}2.5%{transform:translateX(-160px)}4.7%{transform:translateX(-240px)}4.7%{transform:translateX(-320px)}4.7%{transform:translateX(-400px)}7.6%{transform:translateX(-480px)}7.6%{transform:translateX(-560px)}7.6%{transform:translateX(-640px)}10.1%{transform:translateX(-720px)}10.5%{transform:translateX(-800px)}10.5%{transform:translateX(-880px)}10.5%{transform:translateX(-960px)}10.5%{transform:translateX(-1040px)}13.4%{transform:translateX(-1120px)}13.4%{transform:translateX(-1200px)}13.4%{transform:translateX(-1280px)}16.3%{transform:translateX(-1360px)}16.3%{transform:translateX(-1440px)}16.3%{transform:translateX(-1520px)}18.3%{transform:translateX(-1600px)}26.6%{transform:translateX(-1680px)}34.9%{transform:translateX(-1760px)}43.2%{transform:translateX(-1840px)}44.1%{transform:translateX(-1920px)}44.1%{transform:translateX(-2000px)}44.1%{transform:translateX(-2080px)}47%{transform:translateX(-2160px)}47%{transform:translateX(-2240px)}47%{transform:translateX(-2320px)}47%{transform:translateX(-2400px)}49.9%{transform:translateX(-2480px)}49.9%{transform:translateX(-2560px)}49.9%{transform:translateX(-2640px)}49.9%{transform:translateX(-2720px)}51.4%{transform:translateX(-2800px)}52.8%{transform:translateX(-2880px)}52.8%{transform:translateX(-2960px)}52.8%{transform:translateX(-3040px)}52.8%{transform:translateX(-3120px)}55.7%{transform:translateX(-3200px)}55.7%{transform:translateX(-3280px)}58.6%{transform:translateX(-3360px)}58.6%{transform:translateX(-3440px)}58.6%{transform:translateX(-3520px)}58.6%{transform:translateX(-3600px)}58.6%{transform:translateX(-3680px)}58.6%{transform:translateX(-3760px)}100%{transform:translateX(-3840px)}} SUCCESS Downloadingpseudo-excel SUCCESS Downloadingpseudo-photoshopDownloadingpseudo-chrome[02/12]████████████████████████████████████17%|1s SUCCESS Downloadingpseudo-chromeDownloadingpseudo-chrome[03/12]████████████████████████████████████25%|1sDownloadingpseudo-outlook[03/12]███████████████████████████████████25%|1s SUCCESS Downloadingpseudo-outlook SUCCESS Downloadingpseudo-explorerDownloadingpseudo-dops[05/12]██████████████████████████████████████42%|2s SUCCESS Downloadingpseudo-dopsDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|2s SUCCESS Downloadingpseudo-gitDownloadingpseudo-vsc[07/12]███████████████████████████████████████58%|5s SUCCESS Downloadingpseudo-vscDownloadingpseudo-intellij[08/12]██████████████████████████████████67%|6s SUCCESS Downloadingpseudo-intellijDownloadingpseudo-intellij[09/12]██████████████████████████████████75%|6sDownloadingpseudo-minecraft[09/12]█████████████████████████████████75%|6s SUCCESS Downloadingpseudo-minecraft SUCCESS Downloadingpseudo-scoopDownloadingpseudo-chocolatey[11/12]████████████████████████████████92%|7s SUCCESS Downloadingpseudo-chocolateyDownloadingpseudo-chocolatey[12/12]████████████████████████████████100%|7sDownloadingpseudo-excel[01/12]█████████████████████████████████████8%|0sDownloadingpseudo-photoshop[01/12]█████████████████████████████████8%|0sDownloadingpseudo-photoshop[02/12]█████████████████████████████████17%|0sDownloadingpseudo-outlook[04/12]███████████████████████████████████33%|1sDownloadingpseudo-explorer[04/12]██████████████████████████████████33%|1sDownloadingpseudo-explorer[05/12]██████████████████████████████████42%|1sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|3sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|4sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|5sDownloadingpseudo-git[06/12]███████████████████████████████████████50%|5sDownloadingpseudo-git[07/12]███████████████████████████████████████58%|5sDownloadingpseudo-vsc[08/12]███████████████████████████████████████67%|5sDownloadingpseudo-minecraft[10/12]█████████████████████████████████83%|6sDownloadingpseudo-scoop[10/12]█████████████████████████████████████83%|7sDownloadingpseudo-scoop[11/12]█████████████████████████████████████92%|7sRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(255,255,255);white-space:pre}.i{fill:rgb(255,0,0);white-space:pre}.j{fill:rgb(160,160,160);white-space:pre}.k{fill:rgb(168,204,140)}.l{white-space:pre}.m{fill:rgb(124,255,0);white-space:pre}.n{fill:rgb(0,198,255);white-space:pre}.o{fill:rgb(233,21,0);white-space:pre}.p{fill:rgb(212,42,0);white-space:pre}.q{fill:rgb(191,63,0);white-space:pre}.r{fill:rgb(170,85,0);white-space:pre}.s{fill:rgb(148,106,0);white-space:pre}.t{fill:rgb(127,127,0);white-space:pre}.u{fill:rgb(106,148,0);white-space:pre}.v{fill:rgb(85,170,0);white-space:pre}.w{fill:rgb(63,191,0);white-space:pre}.x{fill:rgb(42,212,0);white-space:pre}.y{fill:rgb(21,233,0);white-space:pre}.z{fill:rgb(0,255,0);white-space:pre}.A{fill:transparent}.C{animation-duration:12.230546s;animation-iteration-count:infinite;animation-name:B;animation-timing-function:steps(1,end)}@keyframes B{0%{transform:translateX(-0px)}3%{transform:translateX(-80px)}3.9%{transform:translateX(-160px)}5.8%{transform:translateX(-240px)}5.8%{transform:translateX(-320px)}8.7%{transform:translateX(-400px)}8.7%{transform:translateX(-480px)}11.2%{transform:translateX(-560px)}11.6%{transform:translateX(-640px)}11.6%{transform:translateX(-720px)}11.6%{transform:translateX(-800px)}14.5%{transform:translateX(-880px)}14.5%{transform:translateX(-960px)}14.5%{transform:translateX(-1040px)}14.5%{transform:translateX(-1120px)}17.3%{transform:translateX(-1200px)}17.3%{transform:translateX(-1280px)}19.3%{transform:translateX(-1360px)}27.5%{transform:translateX(-1440px)}35.7%{transform:translateX(-1520px)}43.9%{transform:translateX(-1600px)}44.7%{transform:translateX(-1680px)}47.6%{transform:translateX(-1760px)}50.5%{transform:translateX(-1840px)}50.5%{transform:translateX(-1920px)}50.5%{transform:translateX(-2000px)}52%{transform:translateX(-2080px)}53.4%{transform:translateX(-2160px)}56.2%{transform:translateX(-2240px)}56.2%{transform:translateX(-2320px)}56.2%{transform:translateX(-2400px)}56.2%{transform:translateX(-2480px)}59.1%{transform:translateX(-2560px)}59.1%{transform:translateX(-2640px)}59.1%{transform:translateX(-2720px)}59.1%{transform:translateX(-2800px)}59.1%{transform:translateX(-2880px)}59.1%{transform:translateX(-2960px)}100%{transform:translateX(-3040px)}}Downloadingpseudo-excel[00/12]████████████████████████████████████0%|0sSUCCESS Downloadingpseudo-excelDownloadingpseudo-photoshop[01/12]█████████████████████████████████8%|0s SUCCESS Downloadingpseudo-photoshopDownloadingpseudo-chrome[02/12]████████████████████████████████████17%|1s SUCCESS Downloadingpseudo-chromeDownloadingpseudo-chrome[03/12]████████████████████████████████████25%|1sDownloadingpseudo-outlook[03/12]███████████████████████████████████25%|1s SUCCESS Downloadingpseudo-outlookDownloadingpseudo-explorer[04/12]██████████████████████████████████33%|1s SUCCESS Downloadingpseudo-explorerDownloadingpseudo-dops[05/12]██████████████████████████████████████42%|2s SUCCESS Downloadingpseudo-dopsDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|2sDownloadingpseudo-git[06/12]███████████████████████████████████████50%|5s SUCCESS Downloadingpseudo-gitDownloadingpseudo-vsc[07/12]███████████████████████████████████████58%|5s SUCCESS Downloadingpseudo-vscDownloadingpseudo-intellij[08/12]██████████████████████████████████67%|6s SUCCESS Downloadingpseudo-intellijDownloadingpseudo-intellij[09/12]██████████████████████████████████75%|6sDownloadingpseudo-minecraft[09/12]█████████████████████████████████75%|6s SUCCESS Downloadingpseudo-minecraftDownloadingpseudo-scoop[10/12]█████████████████████████████████████83%|7s SUCCESS Downloadingpseudo-scoopDownloadingpseudo-chocolatey[11/12]████████████████████████████████92%|7s SUCCESS Downloadingpseudo-chocolateyDownloadingpseudo-chocolatey[12/12]████████████████████████████████100%|7sDownloadingpseudo-excel[01/12]█████████████████████████████████████8%|0sDownloadingpseudo-photoshop[02/12]█████████████████████████████████17%|0sDownloadingpseudo-outlook[04/12]███████████████████████████████████33%|1sDownloadingpseudo-explorer[05/12]██████████████████████████████████42%|1sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|3sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|4sDownloadingpseudo-dops[06/12]██████████████████████████████████████50%|5sDownloadingpseudo-git[07/12]███████████████████████████████████████58%|5sDownloadingpseudo-vsc[08/12]███████████████████████████████████████67%|5sDownloadingpseudo-minecraft[10/12]█████████████████████████████████83%|6sDownloadingpseudo-scoop[11/12]█████████████████████████████████████92%|7sRestartinganimation...
\ No newline at end of file
diff --git a/_examples/progressbar/multiple/animation.svg b/_examples/progressbar/multiple/animation.svg
index 55f88801a..cf229a401 100644
--- a/_examples/progressbar/multiple/animation.svg
+++ b/_examples/progressbar/multiple/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(255,255,255);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(244,10,0);white-space:pre}.k{fill:rgb(160,160,160);white-space:pre}.l{fill:rgb(239,15,0);white-space:pre}.m{fill:rgb(255,0,0);white-space:pre}.n{fill:rgb(252,2,0);white-space:pre}.o{fill:rgb(224,30,0);white-space:pre}.p{fill:rgb(209,45,0);white-space:pre}.q{fill:rgb(249,5,0);white-space:pre}.r{fill:rgb(214,40,0);white-space:pre}.s{fill:rgb(193,61,0);white-space:pre}.t{fill:rgb(247,7,0);white-space:pre}.u{fill:rgb(242,12,0);white-space:pre}.v{fill:rgb(204,51,0);white-space:pre}.w{fill:rgb(178,76,0);white-space:pre}.x{fill:rgb(163,91,0);white-space:pre}.y{fill:rgb(183,71,0);white-space:pre}.z{fill:rgb(147,107,0);white-space:pre}.A{fill:rgb(232,22,0);white-space:pre}.B{fill:rgb(173,81,0);white-space:pre}.C{fill:rgb(132,122,0);white-space:pre}.D{fill:rgb(229,25,0);white-space:pre}.E{fill:rgb(117,137,0);white-space:pre}.F{fill:rgb(237,17,0);white-space:pre}.G{fill:rgb(153,102,0);white-space:pre}.H{fill:rgb(102,153,0);white-space:pre}.I{fill:rgb(234,20,0);white-space:pre}.J{fill:rgb(221,33,0);white-space:pre}.K{fill:rgb(142,112,0);white-space:pre}.L{fill:rgb(86,168,0);white-space:pre}.M{fill:rgb(71,183,0);white-space:pre}.N{fill:rgb(122,132,0);white-space:pre}.O{fill:rgb(56,198,0);white-space:pre}.P{fill:rgb(211,43,0);white-space:pre}.Q{fill:rgb(114,140,0);white-space:pre}.R{fill:rgb(48,206,0);white-space:pre}.S{fill:rgb(226,28,0);white-space:pre}.T{fill:rgb(104,150,0);white-space:pre}.U{fill:rgb(33,221,0);white-space:pre}.V{fill:rgb(206,48,0);white-space:pre}.W{fill:rgb(94,160,0);white-space:pre}.X{fill:rgb(17,237,0);white-space:pre}.Y{fill:rgb(201,53,0);white-space:pre}.Z{fill:rgb(84,170,0);white-space:pre}.aa{fill:rgb(2,252,0);white-space:pre}.ab{fill:rgb(198,56,0);white-space:pre}.ac{fill:rgb(73,181,0);white-space:pre}.ad{fill:rgb(0,255,0);white-space:pre}.ae{fill:rgb(219,35,0);white-space:pre}.af{fill:rgb(196,58,0);white-space:pre}.ag{fill:rgb(63,191,0);white-space:pre}.ah{fill:rgb(216,38,0);white-space:pre}.ai{fill:rgb(191,63,0);white-space:pre}.aj{fill:rgb(53,201,0);white-space:pre}.ak{fill:rgb(188,66,0);white-space:pre}.al{fill:rgb(43,211,0);white-space:pre}.am{fill:rgb(186,68,0);white-space:pre}.an{fill:rgb(181,73,0);white-space:pre}.ao{fill:rgb(22,232,0);white-space:pre}.ap{fill:rgb(12,242,0);white-space:pre}.aq{fill:rgb(175,79,0);white-space:pre}.ar{fill:rgb(170,84,0);white-space:pre}.as{fill:transparent}.au{animation-duration:10.289957s;animation-iteration-count:infinite;animation-name:at;animation-timing-function:steps(1,end)}@keyframes at{0%{transform:translateX(-0px)}1.6%{transform:translateX(-80px)}2.4%{transform:translateX(-160px)}3.8%{transform:translateX(-240px)}5.7%{transform:translateX(-320px)}5.7%{transform:translateX(-400px)}5.7%{transform:translateX(-480px)}5.7%{transform:translateX(-560px)}5.7%{transform:translateX(-640px)}7.7%{transform:translateX(-720px)}9.6%{transform:translateX(-800px)}9.6%{transform:translateX(-880px)}9.6%{transform:translateX(-960px)}9.6%{transform:translateX(-1040px)}9.6%{transform:translateX(-1120px)}11.6%{transform:translateX(-1200px)}11.6%{transform:translateX(-1280px)}11.6%{transform:translateX(-1360px)}11.6%{transform:translateX(-1440px)}13.5%{transform:translateX(-1520px)}15.4%{transform:translateX(-1600px)}15.4%{transform:translateX(-1680px)}15.4%{transform:translateX(-1760px)}15.4%{transform:translateX(-1840px)}15.4%{transform:translateX(-1920px)}17.4%{transform:translateX(-2000px)}17.4%{transform:translateX(-2080px)}17.4%{transform:translateX(-2160px)}17.4%{transform:translateX(-2240px)}19.3%{transform:translateX(-2320px)}19.3%{transform:translateX(-2400px)}19.3%{transform:translateX(-2480px)}19.3%{transform:translateX(-2560px)}21.3%{transform:translateX(-2640px)}21.3%{transform:translateX(-2720px)}21.3%{transform:translateX(-2800px)}21.3%{transform:translateX(-2880px)}23.2%{transform:translateX(-2960px)}23.2%{transform:translateX(-3040px)}23.2%{transform:translateX(-3120px)}23.2%{transform:translateX(-3200px)}25.2%{transform:translateX(-3280px)}25.2%{transform:translateX(-3360px)}25.2%{transform:translateX(-3440px)}25.2%{transform:translateX(-3520px)}25.2%{transform:translateX(-3600px)}25.2%{transform:translateX(-3680px)}27.7%{transform:translateX(-3760px)}29%{transform:translateX(-3840px)}29%{transform:translateX(-3920px)}29%{transform:translateX(-4000px)}29%{transform:translateX(-4080px)}31%{transform:translateX(-4160px)}31%{transform:translateX(-4240px)}31%{transform:translateX(-4320px)}31%{transform:translateX(-4400px)}32.9%{transform:translateX(-4480px)}32.9%{transform:translateX(-4560px)}32.9%{transform:translateX(-4640px)}32.9%{transform:translateX(-4720px)}32.9%{transform:translateX(-4800px)}34.9%{transform:translateX(-4880px)}34.9%{transform:translateX(-4960px)}34.9%{transform:translateX(-5040px)}34.9%{transform:translateX(-5120px)}35%{transform:translateX(-5200px)}36%{transform:translateX(-5280px)}36.8%{transform:translateX(-5360px)}37%{transform:translateX(-5440px)}38%{transform:translateX(-5520px)}38.8%{transform:translateX(-5600px)}38.8%{transform:translateX(-5680px)}38.8%{transform:translateX(-5760px)}38.8%{transform:translateX(-5840px)}38.8%{transform:translateX(-5920px)}39%{transform:translateX(-6000px)}39.9%{transform:translateX(-6080px)}40.7%{transform:translateX(-6160px)}40.7%{transform:translateX(-6240px)}40.7%{transform:translateX(-6320px)}40.7%{transform:translateX(-6400px)}40.7%{transform:translateX(-6480px)}40.9%{transform:translateX(-6560px)}41.9%{transform:translateX(-6640px)}42.6%{transform:translateX(-6720px)}42.7%{transform:translateX(-6800px)}42.7%{transform:translateX(-6880px)}42.7%{transform:translateX(-6960px)}42.7%{transform:translateX(-7040px)}42.9%{transform:translateX(-7120px)}43.9%{transform:translateX(-7200px)}44.6%{transform:translateX(-7280px)}44.6%{transform:translateX(-7360px)}44.6%{transform:translateX(-7440px)}44.6%{transform:translateX(-7520px)}44.8%{transform:translateX(-7600px)}45.8%{transform:translateX(-7680px)}46.5%{transform:translateX(-7760px)}46.5%{transform:translateX(-7840px)}46.5%{transform:translateX(-7920px)}46.5%{transform:translateX(-8000px)}46.8%{transform:translateX(-8080px)}47.8%{transform:translateX(-8160px)}48.5%{transform:translateX(-8240px)}48.5%{transform:translateX(-8320px)}48.5%{transform:translateX(-8400px)}48.5%{transform:translateX(-8480px)}48.5%{transform:translateX(-8560px)}48.5%{transform:translateX(-8640px)}48.5%{transform:translateX(-8720px)}48.5%{transform:translateX(-8800px)}48.8%{transform:translateX(-8880px)}49.7%{transform:translateX(-8960px)}50.4%{transform:translateX(-9040px)}50.4%{transform:translateX(-9120px)}50.7%{transform:translateX(-9200px)}50.7%{transform:translateX(-9280px)}51.4%{transform:translateX(-9360px)}51.4%{transform:translateX(-9440px)}51.4%{transform:translateX(-9520px)}51.4%{transform:translateX(-9600px)}51.4%{transform:translateX(-9680px)}51.4%{transform:translateX(-9760px)}51.4%{transform:translateX(-9840px)}100%{transform:translateX(-9920px)}}Progressbar1[004/100]██████████████████████████████████████████████4%|0sProgressbar2[006/100]██████████████████████████████████████████████6%|0sProgressbar3[000/100]█████████████████████████████████████████████0%|0sProgressbar4[000/100]█████████████████████████████████████████████0%|0sProgressbar5[001/100]█████████████████████████████████████████████1%|0sProgressbar1[012/100]██████████████████████████████████████████████12%|1sProgressbar2[018/100]██████████████████████████████████████████████18%|1sProgressbar3[002/100]█████████████████████████████████████████████2%|0sProgressbar4[001/100]█████████████████████████████████████████████1%|0sProgressbar5[004/100]██████████████████████████████████████████████4%|1sProgressbar1[016/100]██████████████████████████████████████████████16%|1sProgressbar2[024/100]██████████████████████████████████████████████24%|1sProgressbar3[003/100]██████████████████████████████████████████████3%|1sProgressbar5[005/100]██████████████████████████████████████████████5%|1sProgressbar1[020/100]██████████████████████████████████████████████20%|1sProgressbar2[030/100]██████████████████████████████████████████████30%|1sProgressbar3[004/100]██████████████████████████████████████████████4%|1sProgressbar4[002/100]█████████████████████████████████████████████2%|1sProgressbar1[024/100]██████████████████████████████████████████████24%|1sProgressbar2[036/100]██████████████████████████████████████████████36%|1sProgressbar1[028/100]██████████████████████████████████████████████28%|1sProgressbar2[042/100]██████████████████████████████████████████████42%|1sProgressbar3[005/100]██████████████████████████████████████████████5%|1sProgressbar5[009/100]██████████████████████████████████████████████9%|1sProgressbar1[032/100]██████████████████████████████████████████████32%|2sProgressbar2[048/100]██████████████████████████████████████████████48%|2sProgressbar3[006/100]██████████████████████████████████████████████6%|1sProgressbar4[003/100]██████████████████████████████████████████████3%|1sProgressbar5[010/100]██████████████████████████████████████████████10%|1sProgressbar1[036/100]██████████████████████████████████████████████36%|2sProgressbar2[054/100]██████████████████████████████████████████████54%|2sProgressbar3[007/100]██████████████████████████████████████████████7%|2sProgressbar5[012/100]██████████████████████████████████████████████12%|2sProgressbar1[040/100]██████████████████████████████████████████████40%|2sProgressbar2[060/100]██████████████████████████████████████████████60%|2sProgressbar3[008/100]██████████████████████████████████████████████8%|2sProgressbar4[004/100]██████████████████████████████████████████████4%|2sProgressbar5[013/100]██████████████████████████████████████████████13%|2sProgressbar1[044/100]██████████████████████████████████████████████44%|2sProgressbar2[066/100]██████████████████████████████████████████████66%|2sProgressbar1[048/100]██████████████████████████████████████████████48%|2sProgressbar2[072/100]██████████████████████████████████████████████72%|2sProgressbar3[009/100]██████████████████████████████████████████████9%|2sProgressbar5[016/100]██████████████████████████████████████████████16%|2sProgressbar1[052/100]██████████████████████████████████████████████52%|3sProgressbar2[078/100]██████████████████████████████████████████████78%|3sProgressbar3[010/100]██████████████████████████████████████████████10%|2sProgressbar4[005/100]██████████████████████████████████████████████5%|2sProgressbar5[017/100]██████████████████████████████████████████████17%|3sProgressbar1[055/100]██████████████████████████████████████████████55%|3sProgressbar2[081/100]██████████████████████████████████████████████81%|3sProgressbar3[011/100]██████████████████████████████████████████████11%|3sProgressbar5[018/100]██████████████████████████████████████████████18%|3sProgressbar1[059/100]██████████████████████████████████████████████59%|3sProgressbar2[087/100]██████████████████████████████████████████████87%|3sProgressbar5[019/100]██████████████████████████████████████████████19%|3sProgressbar1[063/100]██████████████████████████████████████████████63%|3sProgressbar2[093/100]██████████████████████████████████████████████93%|3sProgressbar3[012/100]██████████████████████████████████████████████12%|3sProgressbar4[006/100]██████████████████████████████████████████████6%|3sProgressbar5[021/100]██████████████████████████████████████████████21%|3sProgressbar1[067/100]██████████████████████████████████████████████67%|3sProgressbar2[099/100]██████████████████████████████████████████████99%|3sProgressbar3[013/100]██████████████████████████████████████████████13%|3sProgressbar5[022/100]██████████████████████████████████████████████22%|3sProgressbar1[071/100]██████████████████████████████████████████████71%|4sProgressbar2[102/102]██████████████████████████████████████████████100%|3sProgressbar3[014/100]██████████████████████████████████████████████14%|4sProgressbar4[007/100]██████████████████████████████████████████████7%|4sProgressbar5[023/100]██████████████████████████████████████████████23%|3sProgressbar1[075/100]██████████████████████████████████████████████75%|4sProgressbar3[015/100]██████████████████████████████████████████████15%|4sProgressbar5[025/100]██████████████████████████████████████████████25%|4sProgressbar1[079/100]██████████████████████████████████████████████79%|4sProgressbar5[026/100]██████████████████████████████████████████████26%|4sProgressbar1[083/100]██████████████████████████████████████████████83%|4sProgressbar3[016/100]██████████████████████████████████████████████16%|4sProgressbar4[008/100]██████████████████████████████████████████████8%|4sProgressbar5[027/100]██████████████████████████████████████████████27%|4sProgressbar1[087/100]██████████████████████████████████████████████87%|4sProgressbar3[017/100]██████████████████████████████████████████████17%|4sProgressbar5[029/100]██████████████████████████████████████████████29%|4sProgressbar1[091/100]██████████████████████████████████████████████91%|5sProgressbar3[018/100]██████████████████████████████████████████████18%|5sProgressbar4[009/100]██████████████████████████████████████████████9%|5sProgressbar5[030/100]██████████████████████████████████████████████30%|5sProgressbar1[095/100]██████████████████████████████████████████████95%|5sProgressbar3[019/100]██████████████████████████████████████████████19%|5sProgressbar5[031/100]██████████████████████████████████████████████31%|5sProgressbar1[099/100]██████████████████████████████████████████████99%|5sProgressbar5[033/100]██████████████████████████████████████████████33%|5sProgressbar1[100/100]██████████████████████████████████████████████100%|5sProgressbar3[020/100]██████████████████████████████████████████████20%|5sProgressbar4[010/100]██████████████████████████████████████████████10%|5sProgressbar1[008/100]██████████████████████████████████████████████8%|0sProgressbar2[012/100]██████████████████████████████████████████████12%|0sProgressbar3[001/100]█████████████████████████████████████████████1%|0sProgressbar5[002/100]█████████████████████████████████████████████2%|0sProgressbar5[006/100]██████████████████████████████████████████████6%|1sProgressbar5[008/100]██████████████████████████████████████████████8%|1sProgressbar4[002/100]█████████████████Progressbar5[014/100]██████████████████████████████████████████████14%|2sProgressbar4[004/100]████████████████████████████████████Progressbar5[033/100]████████████████████████Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(255,255,255);white-space:pre}.i{fill:rgb(0,198,255);white-space:pre}.j{fill:rgb(244,10,0);white-space:pre}.k{fill:rgb(160,160,160);white-space:pre}.l{fill:rgb(239,15,0);white-space:pre}.m{fill:rgb(255,0,0);white-space:pre}.n{fill:rgb(252,2,0);white-space:pre}.o{fill:rgb(234,20,0);white-space:pre}.p{fill:rgb(224,30,0);white-space:pre}.q{fill:rgb(249,5,0);white-space:pre}.r{fill:rgb(209,45,0);white-space:pre}.s{fill:rgb(214,40,0);white-space:pre}.t{fill:rgb(193,61,0);white-space:pre}.u{fill:rgb(247,7,0);white-space:pre}.v{fill:rgb(242,12,0);white-space:pre}.w{fill:rgb(204,51,0);white-space:pre}.x{fill:rgb(163,91,0);white-space:pre}.y{fill:rgb(183,71,0);white-space:pre}.z{fill:rgb(147,107,0);white-space:pre}.A{fill:rgb(232,22,0);white-space:pre}.B{fill:rgb(173,81,0);white-space:pre}.C{fill:rgb(132,122,0);white-space:pre}.D{fill:rgb(117,137,0);white-space:pre}.E{fill:rgb(237,17,0);white-space:pre}.F{fill:rgb(153,102,0);white-space:pre}.G{fill:rgb(102,153,0);white-space:pre}.H{fill:rgb(221,33,0);white-space:pre}.I{fill:rgb(142,112,0);white-space:pre}.J{fill:rgb(86,168,0);white-space:pre}.K{fill:rgb(219,35,0);white-space:pre}.L{fill:rgb(71,183,0);white-space:pre}.M{fill:rgb(122,132,0);white-space:pre}.N{fill:rgb(56,198,0);white-space:pre}.O{fill:rgb(229,25,0);white-space:pre}.P{fill:rgb(211,43,0);white-space:pre}.Q{fill:rgb(25,229,0);white-space:pre}.R{fill:rgb(91,163,0);white-space:pre}.S{fill:rgb(10,244,0);white-space:pre}.T{fill:rgb(201,53,0);white-space:pre}.U{fill:rgb(81,173,0);white-space:pre}.V{fill:rgb(0,255,0);white-space:pre}.W{fill:rgb(198,56,0);white-space:pre}.X{fill:rgb(61,193,0);white-space:pre}.Y{fill:rgb(216,38,0);white-space:pre}.Z{fill:rgb(191,63,0);white-space:pre}.aa{fill:rgb(51,204,0);white-space:pre}.ab{fill:rgb(188,66,0);white-space:pre}.ac{fill:rgb(40,214,0);white-space:pre}.ad{fill:rgb(33,221,0);white-space:pre}.ae{fill:rgb(181,73,0);white-space:pre}.af{fill:rgb(22,232,0);white-space:pre}.ag{fill:rgb(178,76,0);white-space:pre}.ah{fill:rgb(12,242,0);white-space:pre}.ai{fill:rgb(206,48,0);white-space:pre}.aj{fill:rgb(175,79,0);white-space:pre}.ak{fill:rgb(2,252,0);white-space:pre}.al{fill:rgb(170,84,0);white-space:pre}.am{fill:transparent}.ao{animation-duration:10.341736s;animation-iteration-count:infinite;animation-name:an;animation-timing-function:steps(1,end)}.ap{fill:rgb(112,142,0);white-space:pre}.aq{fill:rgb(226,28,0);white-space:pre}@keyframes an{0%{transform:translateX(-0px)}2.5%{transform:translateX(-80px)}3.1%{transform:translateX(-160px)}4.4%{transform:translateX(-240px)}4.5%{transform:translateX(-320px)}4.5%{transform:translateX(-400px)}4.5%{transform:translateX(-480px)}4.5%{transform:translateX(-560px)}4.5%{transform:translateX(-640px)}4.5%{transform:translateX(-720px)}4.5%{transform:translateX(-800px)}4.5%{transform:translateX(-880px)}4.5%{transform:translateX(-960px)}4.5%{transform:translateX(-1040px)}4.5%{transform:translateX(-1120px)}4.5%{transform:translateX(-1200px)}6.4%{transform:translateX(-1280px)}6.4%{transform:translateX(-1360px)}6.4%{transform:translateX(-1440px)}6.4%{transform:translateX(-1520px)}8.3%{transform:translateX(-1600px)}8.3%{transform:translateX(-1680px)}8.3%{transform:translateX(-1760px)}8.3%{transform:translateX(-1840px)}10.3%{transform:translateX(-1920px)}10.3%{transform:translateX(-2000px)}10.3%{transform:translateX(-2080px)}10.3%{transform:translateX(-2160px)}10.3%{transform:translateX(-2240px)}10.3%{transform:translateX(-2320px)}12.2%{transform:translateX(-2400px)}12.2%{transform:translateX(-2480px)}12.2%{transform:translateX(-2560px)}12.2%{transform:translateX(-2640px)}14.1%{transform:translateX(-2720px)}14.1%{transform:translateX(-2800px)}16.1%{transform:translateX(-2880px)}16.1%{transform:translateX(-2960px)}16.1%{transform:translateX(-3040px)}16.1%{transform:translateX(-3120px)}18%{transform:translateX(-3200px)}18%{transform:translateX(-3280px)}18%{transform:translateX(-3360px)}18%{transform:translateX(-3440px)}19.9%{transform:translateX(-3520px)}21.9%{transform:translateX(-3600px)}21.9%{transform:translateX(-3680px)}21.9%{transform:translateX(-3760px)}21.9%{transform:translateX(-3840px)}21.9%{transform:translateX(-3920px)}21.9%{transform:translateX(-4000px)}21.9%{transform:translateX(-4080px)}21.9%{transform:translateX(-4160px)}21.9%{transform:translateX(-4240px)}23.8%{transform:translateX(-4320px)}23.8%{transform:translateX(-4400px)}23.8%{transform:translateX(-4480px)}23.8%{transform:translateX(-4560px)}23.8%{transform:translateX(-4640px)}23.8%{transform:translateX(-4720px)}23.8%{transform:translateX(-4800px)}25.7%{transform:translateX(-4880px)}25.7%{transform:translateX(-4960px)}25.7%{transform:translateX(-5040px)}25.7%{transform:translateX(-5120px)}27.7%{transform:translateX(-5200px)}27.7%{transform:translateX(-5280px)}27.7%{transform:translateX(-5360px)}27.7%{transform:translateX(-5440px)}27.7%{transform:translateX(-5520px)}29.6%{transform:translateX(-5600px)}29.6%{transform:translateX(-5680px)}29.6%{transform:translateX(-5760px)}31.5%{transform:translateX(-5840px)}33.5%{transform:translateX(-5920px)}33.5%{transform:translateX(-6000px)}33.5%{transform:translateX(-6080px)}33.5%{transform:translateX(-6160px)}33.5%{transform:translateX(-6240px)}33.5%{transform:translateX(-6320px)}35.3%{transform:translateX(-6400px)}35.4%{transform:translateX(-6480px)}35.4%{transform:translateX(-6560px)}35.4%{transform:translateX(-6640px)}36.3%{transform:translateX(-6720px)}37.3%{transform:translateX(-6800px)}37.3%{transform:translateX(-6880px)}37.3%{transform:translateX(-6960px)}37.3%{transform:translateX(-7040px)}38.2%{transform:translateX(-7120px)}39.2%{transform:translateX(-7200px)}39.3%{transform:translateX(-7280px)}39.3%{transform:translateX(-7360px)}39.3%{transform:translateX(-7440px)}40.2%{transform:translateX(-7520px)}41.2%{transform:translateX(-7600px)}41.2%{transform:translateX(-7680px)}41.2%{transform:translateX(-7760px)}41.2%{transform:translateX(-7840px)}41.2%{transform:translateX(-7920px)}42.1%{transform:translateX(-8000px)}43.1%{transform:translateX(-8080px)}43.1%{transform:translateX(-8160px)}43.1%{transform:translateX(-8240px)}43.1%{transform:translateX(-8320px)}43.1%{transform:translateX(-8400px)}43.1%{transform:translateX(-8480px)}43.1%{transform:translateX(-8560px)}44.1%{transform:translateX(-8640px)}45.1%{transform:translateX(-8720px)}45.1%{transform:translateX(-8800px)}45.1%{transform:translateX(-8880px)}45.1%{transform:translateX(-8960px)}46.1%{transform:translateX(-9040px)}47%{transform:translateX(-9120px)}47%{transform:translateX(-9200px)}47%{transform:translateX(-9280px)}47%{transform:translateX(-9360px)}47%{transform:translateX(-9440px)}47%{transform:translateX(-9520px)}48%{transform:translateX(-9600px)}48.9%{transform:translateX(-9680px)}48.9%{transform:translateX(-9760px)}48.9%{transform:translateX(-9840px)}48.9%{transform:translateX(-9920px)}49%{transform:translateX(-10000px)}50%{transform:translateX(-10080px)}50.9%{transform:translateX(-10160px)}50.9%{transform:translateX(-10240px)}50.9%{transform:translateX(-10320px)}50.9%{transform:translateX(-10400px)}51%{transform:translateX(-10480px)}51%{transform:translateX(-10560px)}51.7%{transform:translateX(-10640px)}100%{transform:translateX(-10720px)}}Progressbar1[004/100]██████████████████████████████████████████████4%|0sProgressbar2[006/100]██████████████████████████████████████████████6%|0sProgressbar3[000/100]█████████████████████████████████████████████0%|0sProgressbar4[000/100]█████████████████████████████████████████████0%|0sProgressbar5[001/100]█████████████████████████████████████████████1%|0sProgressbar1[008/100]██████████████████████████████████████████████8%|0sProgressbar2[012/100]██████████████████████████████████████████████12%|0sProgressbar3[001/100]█████████████████████████████████████████████1%|0sProgressbar5[002/100]█████████████████████████████████████████████2%|0sProgressbar1[012/100]██████████████████████████████████████████████12%|1sProgressbar2[018/100]██████████████████████████████████████████████18%|1sProgressbar3[002/100]█████████████████████████████████████████████2%|0sProgressbar4[001/100]█████████████████████████████████████████████1%|0sProgressbar5[004/100]██████████████████████████████████████████████4%|1sProgressbar1[016/100]██████████████████████████████████████████████16%|1sProgressbar2[024/100]██████████████████████████████████████████████24%|1sProgressbar3[003/100]██████████████████████████████████████████████3%|1sProgressbar5[005/100]██████████████████████████████████████████████5%|1sProgressbar1[020/100]██████████████████████████████████████████████20%|1sProgressbar3[004/100]██████████████████████████████████████████████4%|1sProgressbar4[002/100]█████████████████████████████████████████████2%|1sProgressbar1[024/100]██████████████████████████████████████████████24%|1sProgressbar2[036/100]██████████████████████████████████████████████36%|1sProgressbar5[008/100]██████████████████████████████████████████████8%|1sProgressbar1[028/100]██████████████████████████████████████████████28%|1sProgressbar2[042/100]██████████████████████████████████████████████42%|1sProgressbar3[005/100]██████████████████████████████████████████████5%|1sProgressbar5[009/100]██████████████████████████████████████████████9%|1sProgressbar1[032/100]██████████████████████████████████████████████32%|2sProgressbar2[048/100]██████████████████████████████████████████████48%|2sProgressbar3[006/100]██████████████████████████████████████████████6%|1sProgressbar4[003/100]██████████████████████████████████████████████3%|1sProgressbar1[036/100]██████████████████████████████████████████████36%|2sProgressbar2[054/100]██████████████████████████████████████████████54%|2sProgressbar3[007/100]██████████████████████████████████████████████7%|2sProgressbar5[012/100]██████████████████████████████████████████████12%|2sProgressbar1[040/100]██████████████████████████████████████████████40%|2sProgressbar2[060/100]██████████████████████████████████████████████60%|2sProgressbar3[008/100]██████████████████████████████████████████████8%|2sProgressbar4[004/100]██████████████████████████████████████████████4%|2sProgressbar5[013/100]██████████████████████████████████████████████13%|2sProgressbar1[044/100]██████████████████████████████████████████████44%|2sProgressbar2[066/100]██████████████████████████████████████████████66%|2sProgressbar5[014/100]██████████████████████████████████████████████14%|2sProgressbar1[048/100]██████████████████████████████████████████████48%|2sProgressbar2[072/100]██████████████████████████████████████████████72%|2sProgressbar3[009/100]██████████████████████████████████████████████9%|2sProgressbar5[016/100]██████████████████████████████████████████████16%|2sProgressbar1[052/100]██████████████████████████████████████████████52%|3sProgressbar2[078/100]██████████████████████████████████████████████78%|3sProgressbar3[010/100]██████████████████████████████████████████████10%|2sProgressbar4[005/100]██████████████████████████████████████████████5%|2sProgressbar5[017/100]██████████████████████████████████████████████17%|3sProgressbar1[060/100]██████████████████████████████████████████████60%|3sProgressbar2[090/100]██████████████████████████████████████████████90%|3sProgressbar3[012/100]██████████████████████████████████████████████12%|3sProgressbar4[006/100]██████████████████████████████████████████████6%|3sProgressbar5[020/100]██████████████████████████████████████████████20%|3sProgressbar1[064/100]██████████████████████████████████████████████64%|3sProgressbar2[096/100]██████████████████████████████████████████████96%|3sProgressbar5[021/100]██████████████████████████████████████████████21%|3sProgressbar1[068/100]██████████████████████████████████████████████68%|3sProgressbar2[102/102]██████████████████████████████████████████████100%|3sProgressbar3[013/100]██████████████████████████████████████████████13%|3sProgressbar5[022/100]██████████████████████████████████████████████22%|3sProgressbar1[072/100]██████████████████████████████████████████████72%|4sProgressbar3[014/100]██████████████████████████████████████████████14%|3sProgressbar4[007/100]██████████████████████████████████████████████7%|3sProgressbar5[024/100]██████████████████████████████████████████████24%|4sProgressbar1[076/100]██████████████████████████████████████████████76%|4sProgressbar3[015/100]██████████████████████████████████████████████15%|4sProgressbar5[025/100]██████████████████████████████████████████████25%|4sProgressbar1[080/100]██████████████████████████████████████████████80%|4sProgressbar3[016/100]██████████████████████████████████████████████16%|4sProgressbar4[008/100]██████████████████████████████████████████████8%|4sProgressbar5[026/100]██████████████████████████████████████████████26%|4sProgressbar1[084/100]██████████████████████████████████████████████84%|4sProgressbar5[028/100]██████████████████████████████████████████████28%|4sProgressbar1[087/100]██████████████████████████████████████████████87%|4sProgressbar3[017/100]██████████████████████████████████████████████17%|4sProgressbar5[029/100]██████████████████████████████████████████████29%|4sProgressbar1[091/100]██████████████████████████████████████████████91%|5sProgressbar3[018/100]██████████████████████████████████████████████18%|5sProgressbar4[009/100]██████████████████████████████████████████████9%|5sProgressbar5[030/100]██████████████████████████████████████████████30%|5sProgressbar1[095/100]██████████████████████████████████████████████95%|5sProgressbar3[019/100]██████████████████████████████████████████████19%|5sProgressbar5[031/100]██████████████████████████████████████████████31%|5sProgressbar1[099/100]██████████████████████████████████████████████99%|5sProgressbar5[033/100]██████████████████████████████████████████████33%|5sProgressbar1[100/100]██████████████████████████████████████████████100%|5sProgressbar3[020/100]██████████████████████████████████████████████20%|5sProgressbar4[010/100]██████████████████████████████████████████████10%|5sProgressbar4[000/Progressbar2[030/100]██████████████████████████████████████████████30%|1sProgressbar5[006/100]██████████████████████████████████████████████6%|1sProgressbar5[010/100]██████████████████████████████████████████████10%|1sProgressbar4[005/100]█████████████████████████████████████████Progressbar1[056/100]██████████████████████████████████████████████56%|3sProgressbar2[084/100]██████████████████████████████████████████████84%|3sProgressbar3[011/100]██████████████████████████████████████████████11%|3sProgressbar5[018/100]██████████████████████████████████████████████18%|3sRestartinganimation...
\ No newline at end of file
diff --git a/_examples/section/demo/animation.svg b/_examples/section/demo/animation.svg
index f913c5bd0..37359ab6a 100644
--- a/_examples/section/demo/animation.svg
+++ b/_examples/section/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.h{fill:rgb(102,194,205)}.i{white-space:pre}.j{fill:rgb(126,231,233);white-space:pre}.k{fill:transparent}.m{animation-duration:5.191815s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}2.6%{transform:translateX(-80px)}3.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}#Thisisasection! INFO Andhereissometext.Thistextcouldbeanything.Basicallyit'sjustaplaceholder##Thisisanothersection! INFO AndthisismoreplaceholdertextRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.h{fill:rgb(102,194,205)}.i{white-space:pre}.j{fill:rgb(126,231,233);white-space:pre}.k{fill:transparent}.m{animation-duration:5.485298s;animation-iteration-count:infinite;animation-name:l;animation-timing-function:steps(1,end)}@keyframes l{0%{transform:translateX(-0px)}7.8%{transform:translateX(-80px)}8.8%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}#Thisisasection! INFO Andhereissometext.Thistextcouldbeanything.Basicallyit'sjustaplaceholder##Thisisanothersection! INFO AndthisismoreplaceholdertextRestartinganimation...
\ No newline at end of file
diff --git a/_examples/slog/demo/animation.svg b/_examples/slog/demo/animation.svg
index 5a20f1032..b9b257d26 100644
--- a/_examples/slog/demo/animation.svg
+++ b/_examples/slog/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.j{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.l{fill:transparent}.n{animation-duration:5.319948s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}@keyframes m{0%{transform:translateX(-0px)}4.6%{transform:translateX(-80px)}6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}2023-12-1621:09:02DEBUGThisisadebugmessagechangedLevel:true2023-12-1621:09:02INFOThisisaninfomessage2023-12-1621:09:02WARNThisisawarningmessage2023-12-1621:09:02ERRORThisisanerrormessageRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(0,71,255);font-weight:bold;white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:rgb(124,255,0);font-weight:bold;white-space:pre}.j{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.k{fill:rgb(255,0,4);font-weight:bold;white-space:pre}.l{fill:transparent}.n{animation-duration:5.276473s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)}@keyframes m{0%{transform:translateX(-0px)}4.3%{transform:translateX(-80px)}5.2%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}2024-02-0918:53:09DEBUGThisisadebugmessagechangedLevel:true2024-02-0918:53:09INFOThisisaninfomessage2024-02-0918:53:09WARNThisisawarningmessage2024-02-0918:53:09ERRORThisisanerrormessageRestartinganimation...
\ No newline at end of file
diff --git a/_examples/spinner/demo/animation.svg b/_examples/spinner/demo/animation.svg
index 3ab4496c9..81caead22 100644
--- a/_examples/spinner/demo/animation.svg
+++ b/_examples/spinner/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:rgb(168,204,140)}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(219,171,121)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:rgb(115,190,243)}.r{fill:rgb(152,161,254);white-space:pre}.s{fill:transparent}.u{animation-duration:18.200577s;animation-iteration-count:infinite;animation-name:t;animation-timing-function:steps(1,end)}.v{fill:rgb(160,160,160);white-space:pre}@keyframes t{0%{transform:translateX(-0px)}1.06%{transform:translateX(-80px)}2.16%{transform:translateX(-160px)}3.26%{transform:translateX(-240px)}4.36%{transform:translateX(-320px)}5.46%{transform:translateX(-400px)}6.57%{transform:translateX(-480px)}7.69%{transform:translateX(-560px)}8.77%{transform:translateX(-640px)}9.87%{transform:translateX(-720px)}10.98%{transform:translateX(-800px)}12.05%{transform:translateX(-880px)}12.05%{transform:translateX(-960px)}13.16%{transform:translateX(-1040px)}14.26%{transform:translateX(-1120px)}15.36%{transform:translateX(-1200px)}16.47%{transform:translateX(-1280px)}17.56%{transform:translateX(-1360px)}18.66%{transform:translateX(-1440px)}19.77%{transform:translateX(-1520px)}20.87%{transform:translateX(-1600px)}21.97%{transform:translateX(-1680px)}23.04%{transform:translateX(-1760px)}23.04%{transform:translateX(-1840px)}24.15%{transform:translateX(-1920px)}25.26%{transform:translateX(-2000px)}26.36%{transform:translateX(-2080px)}27.46%{transform:translateX(-2160px)}28.57%{transform:translateX(-2240px)}29.67%{transform:translateX(-2320px)}30.78%{transform:translateX(-2400px)}31.88%{transform:translateX(-2480px)}32.98%{transform:translateX(-2560px)}34.04%{transform:translateX(-2640px)}34.04%{transform:translateX(-2720px)}35.14%{transform:translateX(-2800px)}36.25%{transform:translateX(-2880px)}37.35%{transform:translateX(-2960px)}38.45%{transform:translateX(-3040px)}39.55%{transform:translateX(-3120px)}40.66%{transform:translateX(-3200px)}41.76%{transform:translateX(-3280px)}42.87%{transform:translateX(-3360px)}43.97%{transform:translateX(-3440px)}45.03%{transform:translateX(-3520px)}45.03%{transform:translateX(-3600px)}46.14%{transform:translateX(-3680px)}47.24%{transform:translateX(-3760px)}48.34%{transform:translateX(-3840px)}49.44%{transform:translateX(-3920px)}50.55%{transform:translateX(-4000px)}51.65%{transform:translateX(-4080px)}52.75%{transform:translateX(-4160px)}53.85%{transform:translateX(-4240px)}54.96%{transform:translateX(-4320px)}56.02%{transform:translateX(-4400px)}56.03%{transform:translateX(-4480px)}57.13%{transform:translateX(-4560px)}58.26%{transform:translateX(-4640px)}59.37%{transform:translateX(-4720px)}60.47%{transform:translateX(-4800px)}61.52%{transform:translateX(-4880px)}61.57%{transform:translateX(-4960px)}62.67%{transform:translateX(-5040px)}63.77%{transform:translateX(-5120px)}64.87%{transform:translateX(-5200px)}65.98%{transform:translateX(-5280px)}67.02%{transform:translateX(-5360px)}67.12%{transform:translateX(-5440px)}68.22%{transform:translateX(-5520px)}69.32%{transform:translateX(-5600px)}70.42%{transform:translateX(-5680px)}71.52%{transform:translateX(-5760px)}72.52%{transform:translateX(-5840px)}72.53%{transform:translateX(-5920px)}100%{transform:translateX(-6000px)}}▄Someinformationalaction...(1s) INFO Someinformationalaction...▄Doingsomethingimportant...(willsucceed)(1s) SUCCESS Doingsomethingimportant...(willsucceed)▄Doingsomethingimportant...(willwarn)(1s) WARNING Doingsomethingimportant...(willwarn)▄Doingsomethingimportant...(willfail)(1s) ERROR Doingsomethingimportant...(willfail)▄Checkingsomethingimportant...(willresultinnochange)(1s) NOCHG Nochangewererequired SUCCESS Finally!▀Someinformationalaction...(0s)▀Someinformationalaction...(0s)▄Someinformationalaction...(0s)▀Someinformationalaction...(1s)▀Someinformationalaction...(1s)▄Someinformationalaction...(1s)▀Someinformationalaction...(2s)▀Someinformationalaction...(2s)▀Doingsomethingimportant...(willsucceed)(0s)▀Doingsomethingimportant...(willsucceed)(0s)▄Doingsomethingimportant...(willsucceed)(0s)▀Doingsomethingimportant...(willsucceed)(1s)▀Doingsomethingimportant...(willsucceed)(1s)▄Doingsomethingimportant...(willsucceed)(1s)▀Doingsomethingimportant...(willsucceed)(2s)▀Doingsomethingimportant...(willsucceed)(2s)▀Doingsomethingimportant...(willwarn)(0s)▀Doingsomethingimportant...(willwarn)(0s)▄Doingsomethingimportant...(willwarn)(0s)▀Doingsomethingimportant...(willwarn)(1s)▀Doingsomethingimportant...(willwarn)(1s)▄Doingsomethingimportant...(willwarn)(1s)▀Doingsomethingimportant...(willwarn)(2s)▀Doingsomethingimportant...(willwarn)(2s)▀Doingsomethingimportant...(willfail)(0s)▀Doingsomethingimportant...(willfail)(0s)▄Doingsomethingimportant...(willfail)(0s)▀Doingsomethingimportant...(willfail)(1s)▀Doingsomethingimportant...(willfail)(1s)▄Doingsomethingimportant...(willfail)(1s)▀Doingsomethingimportant...(willfail)(2s)▀Doingsomethingimportant...(willfail)(2s)▀Checkingsomethingimportant...(willresultinnochange)(0s)▀Checkingsomethingimportant...(willresultinnochange)(0s)▄Checkingsomethingimportant...(willresultinnochange)(0s)▀Checkingsomethingimportant...(willresultinnochange)(1s)▀Checkingsomethingimportant...(willresultinnochange)(1s)▄Checkingsomethingimportant...(willresultinnochange)(1s)▀Checkingsomethingimportant...(willresultinnochange)(2s)▀Checkingsomethingimportant...(willresultinnochange)(2s)▀Doingalotofstuff...(0s)▀Doingalotofstuff...(0s)▄Doingalotofstuff...(0s)▄Doingalotofstuff...(1s)▀Doingalotofstuff...(1s)▀It'sreallymuchtuff...(1s)▀It'sreallymuch(1s)..(1s)▄It'sreallymuch(1s)..(1s)▄It'sreallymuch(1s)..(1s)▀It'sreallymuch(2s)..(1s)▀It'sreallymuch(2s)..(1s)▀We'renearlydone!2s)..(1s)▄We'renearlydone!(2s)(1s)▄We'renearlydone!(2s)(1s)▀We'renearlydone!(2s)(1s)▀We'renearlydone!(3s)(1s)▄We'renearlydone!(3s)(1s)Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(102,194,205)}.j{white-space:pre}.k{fill:rgb(168,204,140)}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(219,171,121)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(232,131,136)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:rgb(115,190,243)}.r{fill:rgb(152,161,254);white-space:pre}.s{fill:transparent}.u{animation-duration:18.273853s;animation-iteration-count:infinite;animation-name:t;animation-timing-function:steps(1,end)}.v{fill:rgb(160,160,160);white-space:pre}@keyframes t{0%{transform:translateX(-0px)}1.48%{transform:translateX(-80px)}2.58%{transform:translateX(-160px)}3.67%{transform:translateX(-240px)}4.77%{transform:translateX(-320px)}5.87%{transform:translateX(-400px)}6.96%{transform:translateX(-480px)}8.06%{transform:translateX(-560px)}9.16%{transform:translateX(-640px)}10.26%{transform:translateX(-720px)}11.35%{transform:translateX(-800px)}12.42%{transform:translateX(-880px)}12.42%{transform:translateX(-960px)}13.52%{transform:translateX(-1040px)}14.62%{transform:translateX(-1120px)}15.72%{transform:translateX(-1200px)}16.82%{transform:translateX(-1280px)}17.91%{transform:translateX(-1360px)}19.01%{transform:translateX(-1440px)}20.11%{transform:translateX(-1520px)}21.2%{transform:translateX(-1600px)}22.3%{transform:translateX(-1680px)}23.37%{transform:translateX(-1760px)}24.47%{transform:translateX(-1840px)}25.57%{transform:translateX(-1920px)}26.66%{transform:translateX(-2000px)}27.76%{transform:translateX(-2080px)}28.86%{transform:translateX(-2160px)}29.96%{transform:translateX(-2240px)}31.05%{transform:translateX(-2320px)}32.15%{transform:translateX(-2400px)}33.25%{transform:translateX(-2480px)}34.32%{transform:translateX(-2560px)}35.42%{transform:translateX(-2640px)}36.51%{transform:translateX(-2720px)}37.61%{transform:translateX(-2800px)}38.71%{transform:translateX(-2880px)}39.8%{transform:translateX(-2960px)}40.9%{transform:translateX(-3040px)}42.01%{transform:translateX(-3120px)}43.1%{transform:translateX(-3200px)}44.2%{transform:translateX(-3280px)}45.26%{transform:translateX(-3360px)}46.38%{transform:translateX(-3440px)}47.49%{transform:translateX(-3520px)}48.59%{transform:translateX(-3600px)}49.68%{transform:translateX(-3680px)}50.78%{transform:translateX(-3760px)}51.88%{transform:translateX(-3840px)}52.98%{transform:translateX(-3920px)}54.07%{transform:translateX(-4000px)}55.18%{transform:translateX(-4080px)}56.21%{transform:translateX(-4160px)}57.33%{transform:translateX(-4240px)}58.43%{transform:translateX(-4320px)}59.53%{transform:translateX(-4400px)}60.62%{transform:translateX(-4480px)}61.69%{transform:translateX(-4560px)}61.73%{transform:translateX(-4640px)}62.82%{transform:translateX(-4720px)}63.92%{transform:translateX(-4800px)}65.02%{transform:translateX(-4880px)}66.12%{transform:translateX(-4960px)}67.16%{transform:translateX(-5040px)}67.21%{transform:translateX(-5120px)}68.31%{transform:translateX(-5200px)}69.41%{transform:translateX(-5280px)}70.51%{transform:translateX(-5360px)}71.61%{transform:translateX(-5440px)}72.64%{transform:translateX(-5520px)}100%{transform:translateX(-5600px)}}▄Someinformationalaction...(1s) INFO Someinformationalaction...▄Doingsomethingimportant...(willsucceed)(1s) SUCCESS Doingsomethingimportant...(willsucceed)▄Doingsomethingimportant...(willwarn)(1s) WARNING Doingsomethingimportant...(willwarn)▄Doingsomethingimportant...(willfail)(1s) ERROR Doingsomethingimportant...(willfail)▄Checkingsomethingimportant...(willresultinnochange)(1s) NOCHG Nochangewererequired SUCCESS Finally!▀Someinformationalaction...(0s)▀Someinformationalaction...(0s)▄Someinformationalaction...(0s)▀Someinformationalaction...(1s)▀Someinformationalaction...(1s)▄Someinformationalaction...(1s)▀Someinformationalaction...(2s)▀Someinformationalaction...(2s)▀Doingsomethingimportant...(willsucceed)(0s)▀Doingsomethingimportant...(willsucceed)(0s)▄Doingsomethingimportant...(willsucceed)(0s)▀Doingsomethingimportant...(willsucceed)(1s)▀Doingsomethingimportant...(willsucceed)(1s)▄Doingsomethingimportant...(willsucceed)(1s)▀Doingsomethingimportant...(willsucceed)(2s)▀Doingsomethingimportant...(willsucceed)(2s)▀Doingsomethingimportant...(willwarn)(0s)▀Doingsomethingimportant...(willwarn)(0s)▄Doingsomethingimportant...(willwarn)(0s)▀Doingsomethingimportant...(willwarn)(1s)▀Doingsomethingimportant...(willwarn)(1s)▄Doingsomethingimportant...(willwarn)(1s)▀Doingsomethingimportant...(willwarn)(2s)▀Doingsomethingimportant...(willwarn)(2s)▀Doingsomethingimportant...(willfail)(0s)▀Doingsomethingimportant...(willfail)(0s)▄Doingsomethingimportant...(willfail)(0s)▀Doingsomethingimportant...(willfail)(1s)▀Doingsomethingimportant...(willfail)(1s)▄Doingsomethingimportant...(willfail)(1s)▀Doingsomethingimportant...(willfail)(2s)▀Doingsomethingimportant...(willfail)(2s)▀Checkingsomethingimportant...(willresultinnochange)(0s)▀Checkingsomethingimportant...(willresultinnochange)(0s)▄Checkingsomethingimportant...(willresultinnochange)(0s)▀Checkingsomethingimportant...(willresultinnochange)(1s)▀Checkingsomethingimportant...(willresultinnochange)(1s)▄Checkingsomethingimportant...(willresultinnochange)(1s)▀Checkingsomethingimportant...(willresultinnochange)(2s)▀Checkingsomethingimportant...(willresultinnochange)(2s)▀Doingalotofstuff...(0s)▀Doingalotofstuff...(0s)▄Doingalotofstuff...(0s)▄Doingalotofstuff...(1s)▀Doingalotofstuff...(1s)▀It'sreallymuchtuff...(1s)▀It'sreallymuch(1s)..(1s)▄It'sreallymuch(1s)..(1s)▄It'sreallymuch(1s)..(1s)▀It'sreallymuch(2s)..(1s)▀It'sreallymuch(2s)..(1s)▀We'renearlydone!2s)..(1s)▄We'renearlydone!(2s)(1s)▄We'renearlydone!(2s)(1s)▀We'renearlydone!(2s)(1s)▀We'renearlydone!(3s)(1s)▄We'renearlydone!(3s)(1s)Restartinganimation...
\ No newline at end of file
diff --git a/_examples/spinner/multiple/animation.svg b/_examples/spinner/multiple/animation.svg
index 9ef5b507f..9e890cc8e 100644
--- a/_examples/spinner/multiple/animation.svg
+++ b/_examples/spinner/multiple/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(168,204,140)}.j{white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(232,131,136)}.m{fill:rgb(243,86,86);white-space:pre}.n{fill:rgb(219,171,121)}.o{fill:rgb(255,241,0);white-space:pre}.p{fill:transparent}.r{animation-duration:7.439653s;animation-iteration-count:infinite;animation-name:q;animation-timing-function:steps(1,end)}.s{fill:rgb(160,160,160);white-space:pre}@keyframes q{0%{transform:translateX(-0px)}4.9%{transform:translateX(-80px)}5.9%{transform:translateX(-160px)}7.6%{transform:translateX(-240px)}7.6%{transform:translateX(-320px)}7.6%{transform:translateX(-400px)}10.3%{transform:translateX(-480px)}10.3%{transform:translateX(-560px)}13%{transform:translateX(-640px)}13%{transform:translateX(-720px)}15.7%{transform:translateX(-800px)}15.7%{transform:translateX(-880px)}15.7%{transform:translateX(-960px)}18.4%{transform:translateX(-1040px)}18.4%{transform:translateX(-1120px)}18.4%{transform:translateX(-1200px)}21.1%{transform:translateX(-1280px)}21.1%{transform:translateX(-1360px)}23.8%{transform:translateX(-1440px)}26.5%{transform:translateX(-1520px)}26.5%{transform:translateX(-1600px)}29.1%{transform:translateX(-1680px)}29.2%{transform:translateX(-1760px)}29.2%{transform:translateX(-1840px)}31.8%{transform:translateX(-1920px)}31.8%{transform:translateX(-2000px)}31.8%{transform:translateX(-2080px)}32.8%{transform:translateX(-2160px)}32.8%{transform:translateX(-2240px)}32.8%{transform:translateX(-2320px)}32.8%{transform:translateX(-2400px)}100%{transform:translateX(-2480px)}}▀Spinner1(0s)▀Spinner2(0s)▀Spinner3(0s)▀Spinner1(0s)▀Spinner2(0s)▄Spinner1(0s)▄Spinner2(0s)▄Spinner3(0s)▄Spinner1(1s)▄Spinner2(1s)▄Spinner3(1s) SUCCESS Spinner1isdone!▀Spinner2(1s)▀Spinner3(1s)▀Spinner2(1s)▀Spinner3(1s) ERROR Spinner2failed!▀Spinner3(2s)▀Spinner3(2s)▄Spinner3(2s) WARNING Spinner3hasawarning!▄Spinner2(1s)▄Spinner3(1s)Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(255,255,255);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:rgb(168,204,140)}.j{white-space:pre}.k{fill:rgb(124,255,0);white-space:pre}.l{fill:rgb(232,131,136)}.m{fill:rgb(243,86,86);white-space:pre}.n{fill:rgb(219,171,121)}.o{fill:rgb(255,241,0);white-space:pre}.p{fill:transparent}.r{animation-duration:7.588405s;animation-iteration-count:infinite;animation-name:q;animation-timing-function:steps(1,end)}.s{fill:rgb(160,160,160);white-space:pre}@keyframes q{0%{transform:translateX(-0px)}6.8%{transform:translateX(-80px)}7.9%{transform:translateX(-160px)}9.4%{transform:translateX(-240px)}9.4%{transform:translateX(-320px)}12.1%{transform:translateX(-400px)}12.1%{transform:translateX(-480px)}12.1%{transform:translateX(-560px)}14.7%{transform:translateX(-640px)}14.7%{transform:translateX(-720px)}14.7%{transform:translateX(-800px)}17.3%{transform:translateX(-880px)}17.3%{transform:translateX(-960px)}17.3%{transform:translateX(-1040px)}20%{transform:translateX(-1120px)}20%{transform:translateX(-1200px)}20%{transform:translateX(-1280px)}22.6%{transform:translateX(-1360px)}22.6%{transform:translateX(-1440px)}22.6%{transform:translateX(-1520px)}25.2%{transform:translateX(-1600px)}25.2%{transform:translateX(-1680px)}25.2%{transform:translateX(-1760px)}27.9%{transform:translateX(-1840px)}27.9%{transform:translateX(-1920px)}27.9%{transform:translateX(-2000px)}30.5%{transform:translateX(-2080px)}30.5%{transform:translateX(-2160px)}30.5%{transform:translateX(-2240px)}33.1%{transform:translateX(-2320px)}33.1%{transform:translateX(-2400px)}33.1%{transform:translateX(-2480px)}34.1%{transform:translateX(-2560px)}34.1%{transform:translateX(-2640px)}34.1%{transform:translateX(-2720px)}34.1%{transform:translateX(-2800px)}34.1%{transform:translateX(-2880px)}100%{transform:translateX(-2960px)}}▀Spinner1(0s)▀Spinner2(0s)▀Spinner3(0s)▀Spinner1(0s)▀Spinner2(0s)▄Spinner1(0s)▄Spinner2(0s)▄Spinner3(1s)▄Spinner1(1s)▄Spinner2(1s)▀Spinner3(1s) SUCCESS Spinner1isdone!▀Spinner2(1s)▀Spinner2(1s)▀Spinner3(1s)▄Spinner2(1s)▄Spinner3(1s) ERROR Spinner2failed!▀Spinner3(2s)▀Spinner3(2s)▄Spinner3(2s) WARNING Spinner3hasawarning!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/style/demo/animation.svg b/_examples/style/demo/animation.svg
index 24ff5a3ec..d4316732d 100644
--- a/_examples/style/demo/animation.svg
+++ b/_examples/style/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{fill:rgb(126,231,233);font-weight:bold;white-space:pre}.h{fill:rgb(185,191,202)}.i{fill:rgb(127,253,127);white-space:pre}.j{fill:transparent}.l{animation-duration:5.32222s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}.m{fill:rgb(160,160,160);white-space:pre}@keyframes k{0%{transform:translateX(-0px)}5.3%{transform:translateX(-80px)}6.1%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Hello, World!Hello, World!Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(111,119,131)}.g{fill:rgb(126,231,233);font-weight:bold;white-space:pre}.h{fill:rgb(185,191,202)}.i{fill:rgb(127,253,127);white-space:pre}.j{fill:transparent}.l{animation-duration:5.33303s;animation-iteration-count:infinite;animation-name:k;animation-timing-function:steps(1,end)}.m{fill:rgb(160,160,160);white-space:pre}@keyframes k{0%{transform:translateX(-0px)}4.6%{transform:translateX(-80px)}6.2%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Hello, World!Hello, World!Restartinganimation...
\ No newline at end of file
diff --git a/_examples/table/README.md b/_examples/table/README.md
index 3174507e0..32f321316 100644
--- a/_examples/table/README.md
+++ b/_examples/table/README.md
@@ -1,6 +1,6 @@
-### table/boxed
+### table/demo
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
@@ -12,10 +12,8 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the table.
- // Each inner slice represents a row in the table.
- // The first row is considered as the header of the table.
- tableData := pterm.TableData{
+ // Define the data for the first table
+ tableData1 := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -23,19 +21,31 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with the defined data.
- // The table has a header and is boxed.
- // Finally, render the table to print it.
- pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
+ // Create a table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
+
+ pterm.Println() // Blank line
+
+ // Define the data for the second table
+ tableData2 := pterm.TableData{
+ {"Firstname", "Lastname", "Email"},
+ {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
+ {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
+ {"Libby", "Camacho", "lobortis@semper.com"},
+ {"张", "小宝", "zhang@example.com"},
+ }
+
+ // Create another table with a header and the defined data, then render it
+ pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
}
```
-### table/demo
+### table/boxed
-![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/demo/animation.svg)
+![Animation](https://raw.githubusercontent.com/pterm/pterm/master/_examples/table/boxed/animation.svg)
@@ -47,8 +57,10 @@ package main
import "github.com/pterm/pterm"
func main() {
- // Define the data for the first table
- tableData1 := pterm.TableData{
+ // Define the data for the table.
+ // Each inner slice represents a row in the table.
+ // The first row is considered as the header of the table.
+ tableData := pterm.TableData{
{"Firstname", "Lastname", "Email", "Note"},
{"Paul", "Dean", "augue@velitAliquam.co.uk", ""},
{"Callie", "Mckay", "nunc.sed@est.com", "这是一个测试, haha!"},
@@ -56,22 +68,10 @@ func main() {
{"张", "小宝", "zhang@example.com", ""},
}
- // Create a table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData1).Render()
-
- pterm.Println() // Blank line
-
- // Define the data for the second table
- tableData2 := pterm.TableData{
- {"Firstname", "Lastname", "Email"},
- {"Paul\n\nNewline", "Dean", "augue@velitAliquam.co.uk"},
- {"Callie", "Mckay", "nunc.sed@est.com\nNewline"},
- {"Libby", "Camacho", "lobortis@semper.com"},
- {"张", "小宝", "zhang@example.com"},
- }
-
- // Create another table with a header and the defined data, then render it
- pterm.DefaultTable.WithHasHeader().WithData(tableData2).Render()
+ // Create a table with the defined data.
+ // The table has a header and is boxed.
+ // Finally, render the table to print it.
+ pterm.DefaultTable.WithHasHeader().WithBoxed().WithData(tableData).Render()
}
```
diff --git a/_examples/table/boxed/animation.svg b/_examples/table/boxed/animation.svg
index cf63ba597..6afaf95d3 100644
--- a/_examples/table/boxed/animation.svg
+++ b/_examples/table/boxed/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:transparent}.k{animation-duration:5.200852s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}2.8%{transform:translateX(-80px)}3.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}┌───────────────────────────────────────────────────────────────────────┐|Firstname|Lastname|Email|Note||Paul|Dean|augue@velitAliquam.co.uk|||Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!||Libby|Camacho|lobortis@semper.com|justatest,hey!||张|小宝|zhang@example.com||└───────────────────────────────────────────────────────────────────────┘Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(126,231,233);white-space:pre}.h{fill:rgb(104,104,104);white-space:pre}.i{fill:transparent}.k{animation-duration:5.359253s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}4.7%{transform:translateX(-80px)}6.7%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}┌───────────────────────────────────────────────────────────────────────┐|Firstname|Lastname|Email|Note||Paul|Dean|augue@velitAliquam.co.uk|||Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!||Libby|Camacho|lobortis@semper.com|justatest,hey!||张|小宝|zhang@example.com||└───────────────────────────────────────────────────────────────────────┘Restartinganimation...
\ No newline at end of file
diff --git a/_examples/table/demo/animation.svg b/_examples/table/demo/animation.svg
index 1ae0f01b5..708108766 100644
--- a/_examples/table/demo/animation.svg
+++ b/_examples/table/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.2603670000000005s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}4.4%{transform:translateX(-80px)}4.9%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Firstname|Lastname|Email|NotePaul|Dean|augue@velitAliquam.co.uk|Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!Libby|Camacho|lobortis@semper.com|justatest,hey!张|小宝|zhang@example.com|Firstname|Lastname|EmailPaul|Dean|augue@velitAliquam.co.uk||Newline||Callie|Mckay|nunc.sed@est.com||NewlineLibby|Camacho|lobortis@semper.com张|小宝|zhang@example.comRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.464183s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}6.7%{transform:translateX(-80px)}8.5%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Firstname|Lastname|Email|NotePaul|Dean|augue@velitAliquam.co.uk|Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!Libby|Camacho|lobortis@semper.com|justatest,hey!张|小宝|zhang@example.com|Firstname|Lastname|EmailPaul|Dean|augue@velitAliquam.co.uk||Newline||Callie|Mckay|nunc.sed@est.com||NewlineLibby|Camacho|lobortis@semper.com张|小宝|zhang@example.comRestartinganimation...
\ No newline at end of file
diff --git a/_examples/table/multiple-lines/animation.svg b/_examples/table/multiple-lines/animation.svg
index 66ba7916e..e3304999f 100644
--- a/_examples/table/multiple-lines/animation.svg
+++ b/_examples/table/multiple-lines/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.233305s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}3.4%{transform:translateX(-80px)}4.5%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Firstname|Lastname|Email-----------------------------------------------Paul|Dean|augue@velitAliquam.co.uk||Newline||Callie|Mckay|nunc.sed@est.com||NewlineLibby|Camacho|lobortis@semper.com张|小宝|zhang@example.com---------------------------------------------Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.3232479999999995s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}5.1%{transform:translateX(-80px)}6.1%{transform:translateX(-160px)}6.1%{transform:translateX(-240px)}100%{transform:translateX(-320px)}}Firstname|Lastname|Email-----------------------------------------------Paul|Dean|augue@velitAliquam.co.uk||Newline||Callie|Mckay|nunc.sed@est.com||NewlineLibby|Camacho|lobortis@semper.com张|小宝|zhang@example.com张|小宝|zhang@Restartinganimation...
\ No newline at end of file
diff --git a/_examples/table/right-alignment/animation.svg b/_examples/table/right-alignment/animation.svg
index 2e665cfe6..76e01fa81 100644
--- a/_examples/table/right-alignment/animation.svg
+++ b/_examples/table/right-alignment/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.185716s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}3.6%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Firstname|Lastname|Email|NotePaul|Dean|augue@velitAliquam.co.uk|Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!Libby|Camacho|lobortis@semper.com|justatest,hey!张|小宝|zhang@example.com|Restartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(126,231,233);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:rgb(160,160,160);white-space:pre}.i{fill:transparent}.k{animation-duration:5.203463s;animation-iteration-count:infinite;animation-name:j;animation-timing-function:steps(1,end)}@keyframes j{0%{transform:translateX(-0px)}3.9%{transform:translateX(-80px)}100%{transform:translateX(-160px)}}Firstname|Lastname|Email|NotePaul|Dean|augue@velitAliquam.co.uk|Callie|Mckay|nunc.sed@est.com|这是一个测试,haha!Libby|Camacho|lobortis@semper.com|justatest,hey!张|小宝|zhang@example.com|Restartinganimation...
\ No newline at end of file
diff --git a/_examples/theme/demo/animation.svg b/_examples/theme/demo/animation.svg
index 46f90c849..fd76d8d04 100644
--- a/_examples/theme/demo/animation.svg
+++ b/_examples/theme/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(234,89,246);white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(168,204,140)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(219,171,121)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:rgb(232,131,136)}.r{fill:rgb(111,119,131)}.s{fill:rgb(255,255,255);white-space:pre}.t{fill:rgb(104,104,104);white-space:pre}.u{fill:rgb(0,198,255);white-space:pre}.v{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.w{fill:transparent}.y{animation-duration:15.613214s;animation-iteration-count:infinite;animation-name:x;animation-timing-function:steps(1,end)}@keyframes x{0%{transform:translateX(-0px)}2%{transform:translateX(-80px)}2.2%{transform:translateX(-160px)}3.7%{transform:translateX(-240px)}3.7%{transform:translateX(-320px)}5.3%{transform:translateX(-400px)}5.3%{transform:translateX(-480px)}6.9%{transform:translateX(-560px)}6.9%{transform:translateX(-640px)}8.5%{transform:translateX(-720px)}8.5%{transform:translateX(-800px)}10.1%{transform:translateX(-880px)}11.7%{transform:translateX(-960px)}11.7%{transform:translateX(-1040px)}13.3%{transform:translateX(-1120px)}14.9%{transform:translateX(-1200px)}16.6%{transform:translateX(-1280px)}16.6%{transform:translateX(-1360px)}18.2%{transform:translateX(-1440px)}19.8%{transform:translateX(-1520px)}21.4%{transform:translateX(-1600px)}21.4%{transform:translateX(-1680px)}23%{transform:translateX(-1760px)}23%{transform:translateX(-1840px)}24.6%{transform:translateX(-1920px)}24.6%{transform:translateX(-2000px)}26.2%{transform:translateX(-2080px)}26.2%{transform:translateX(-2160px)}27.8%{transform:translateX(-2240px)}27.8%{transform:translateX(-2320px)}29.4%{transform:translateX(-2400px)}29.4%{transform:translateX(-2480px)}31%{transform:translateX(-2560px)}32.6%{transform:translateX(-2640px)}32.6%{transform:translateX(-2720px)}34.2%{transform:translateX(-2800px)}34.2%{transform:translateX(-2880px)}35.8%{transform:translateX(-2960px)}35.8%{transform:translateX(-3040px)}37.4%{transform:translateX(-3120px)}39%{transform:translateX(-3200px)}40.6%{transform:translateX(-3280px)}40.6%{transform:translateX(-3360px)}42.2%{transform:translateX(-3440px)}42.2%{transform:translateX(-3520px)}43.8%{transform:translateX(-3600px)}43.8%{transform:translateX(-3680px)}45.5%{transform:translateX(-3760px)}47.1%{transform:translateX(-3840px)}48.7%{transform:translateX(-3920px)}48.7%{transform:translateX(-4000px)}50.3%{transform:translateX(-4080px)}51.9%{transform:translateX(-4160px)}51.9%{transform:translateX(-4240px)}53.5%{transform:translateX(-4320px)}53.5%{transform:translateX(-4400px)}55.1%{transform:translateX(-4480px)}55.1%{transform:translateX(-4560px)}56.7%{transform:translateX(-4640px)}56.7%{transform:translateX(-4720px)}58.3%{transform:translateX(-4800px)}59.9%{transform:translateX(-4880px)}59.9%{transform:translateX(-4960px)}61.6%{transform:translateX(-5040px)}61.6%{transform:translateX(-5120px)}63.2%{transform:translateX(-5200px)}64.8%{transform:translateX(-5280px)}64.8%{transform:translateX(-5360px)}66.4%{transform:translateX(-5440px)}66.4%{transform:translateX(-5520px)}68%{transform:translateX(-5600px)}68%{transform:translateX(-5680px)}100%{transform:translateX(-5760px)}} INFO Thesearethedefaultthemestyles.Youcanmodifythemeasilytoyourpersonalpreference,orcreatenewthemesfromscratch:)DefaultTextPrimaryStyleSecondaryStyleHighlightStyleInfoMessageStyleInfoPrefixStyleSuccessMessageStyleSuccessPrefixStyleWarningMessageStyleWarningPrefixStyleErrorMessageStyleErrorPrefixStyleFatalMessageStyleFatalPrefixStyleDescriptionMessageStyleDescriptionPrefixStyleScopeStyleProgressbarBarStyleProgressbarTitleStyleHeaderTextStyleHeaderBackgroundStyleSpinnerStyleSpinnerTextStyleTimerStyleTableStyleTableHeaderStyleTableSeparatorStyleHeatmapStyleHeatmapHeaderStyleHeatmapSeparatorStyleSectionStyleBulletListTextStyleBulletListBulletStyleTreeStyleTreeTextStyleLetterStyleDebugMessageStyleDebugPrefixStyleBoxStyleBoxTextStyleBarLabelStyleBarStyleRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(102,194,205)}.g{white-space:pre}.h{fill:rgb(126,231,233);white-space:pre}.i{fill:rgb(160,160,160);white-space:pre}.j{fill:rgb(234,89,246);white-space:pre}.k{fill:rgb(255,241,0);font-weight:bold;white-space:pre}.l{fill:rgb(124,255,0);white-space:pre}.m{fill:rgb(168,204,140)}.n{fill:rgb(255,241,0);white-space:pre}.o{fill:rgb(219,171,121)}.p{fill:rgb(243,86,86);white-space:pre}.q{fill:rgb(232,131,136)}.r{fill:rgb(111,119,131)}.s{fill:rgb(255,255,255);white-space:pre}.t{fill:rgb(104,104,104);white-space:pre}.u{fill:rgb(0,198,255);white-space:pre}.v{fill:rgb(255,255,255);font-weight:bold;white-space:pre}.w{fill:transparent}.y{animation-duration:15.509911s;animation-iteration-count:infinite;animation-name:x;animation-timing-function:steps(1,end)}@keyframes x{0%{transform:translateX(-0px)}1.5%{transform:translateX(-80px)}1.7%{transform:translateX(-160px)}3.1%{transform:translateX(-240px)}3.1%{transform:translateX(-320px)}4.7%{transform:translateX(-400px)}6.3%{transform:translateX(-480px)}8%{transform:translateX(-560px)}9.6%{transform:translateX(-640px)}11.2%{transform:translateX(-720px)}12.8%{transform:translateX(-800px)}12.8%{transform:translateX(-880px)}14.4%{transform:translateX(-960px)}14.4%{transform:translateX(-1040px)}16.1%{transform:translateX(-1120px)}17.7%{transform:translateX(-1200px)}19.3%{transform:translateX(-1280px)}20.9%{transform:translateX(-1360px)}22.5%{transform:translateX(-1440px)}24.1%{transform:translateX(-1520px)}25.7%{transform:translateX(-1600px)}27.3%{transform:translateX(-1680px)}29%{transform:translateX(-1760px)}30.6%{transform:translateX(-1840px)}32.2%{transform:translateX(-1920px)}32.2%{transform:translateX(-2000px)}33.8%{transform:translateX(-2080px)}33.8%{transform:translateX(-2160px)}35.4%{transform:translateX(-2240px)}35.4%{transform:translateX(-2320px)}37.1%{transform:translateX(-2400px)}38.7%{transform:translateX(-2480px)}40.3%{transform:translateX(-2560px)}41.9%{transform:translateX(-2640px)}43.5%{transform:translateX(-2720px)}43.5%{transform:translateX(-2800px)}45.1%{transform:translateX(-2880px)}46.7%{transform:translateX(-2960px)}48.4%{transform:translateX(-3040px)}50%{transform:translateX(-3120px)}51.6%{transform:translateX(-3200px)}53.2%{transform:translateX(-3280px)}53.2%{transform:translateX(-3360px)}54.8%{transform:translateX(-3440px)}56.4%{transform:translateX(-3520px)}58%{transform:translateX(-3600px)}58%{transform:translateX(-3680px)}59.7%{transform:translateX(-3760px)}59.7%{transform:translateX(-3840px)}61.3%{transform:translateX(-3920px)}61.3%{transform:translateX(-4000px)}62.9%{transform:translateX(-4080px)}62.9%{transform:translateX(-4160px)}64.5%{transform:translateX(-4240px)}64.5%{transform:translateX(-4320px)}66.1%{transform:translateX(-4400px)}66.1%{transform:translateX(-4480px)}67.8%{transform:translateX(-4560px)}67.8%{transform:translateX(-4640px)}100%{transform:translateX(-4720px)}} INFO Thesearethedefaultthemestyles.Youcanmodifythemeasilytoyourpersonalpreference,orcreatenewthemesfromscratch:)DefaultTextPrimaryStyleSecondaryStyleHighlightStyleInfoMessageStyleInfoPrefixStyleSuccessMessageStyleSuccessPrefixStyleWarningMessageStyleWarningPrefixStyleErrorMessageStyleErrorPrefixStyleFatalMessageStyleFatalPrefixStyleDescriptionMessageStyleDescriptionPrefixStyleScopeStyleProgressbarBarStyleProgressbarTitleStyleHeaderTextStyleHeaderBackgroundStyleSpinnerStyleSpinnerTextStyleTimerStyleTableStyleTableHeaderStyleTableSeparatorStyleHeatmapStyleHeatmapHeaderStyleHeatmapSeparatorStyleSectionStyleBulletListTextStyleBulletListBulletStyleTreeStyleTreeTextStyleLetterStyleDebugMessageStyleDebugPrefixStyleBoxStyleBoxTextStyleBarLabelStyleBarStyleRestartinganimation...
\ No newline at end of file
diff --git a/_examples/tree/demo/animation.svg b/_examples/tree/demo/animation.svg
index 27ac619c2..617356606 100644
--- a/_examples/tree/demo/animation.svg
+++ b/_examples/tree/demo/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:transparent}.j{animation-duration:5.188905s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}3.6%{transform:translateX(-80px)}3.6%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Topnode└─┬Childnode├──Grandchildnode└──GrandchildnodeRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(160,160,160);white-space:pre}.g{fill:rgb(104,104,104);white-space:pre}.h{fill:transparent}.j{animation-duration:5.333634s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}4.5%{transform:translateX(-80px)}6.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}Topnode└─┬Childnode├──Grandchildnode└──GrandchildnodeRestartinganimation...
\ No newline at end of file
diff --git a/_examples/tree/from-leveled-list/animation.svg b/_examples/tree/from-leveled-list/animation.svg
index 1f635cfc7..1a430244e 100644
--- a/_examples/tree/from-leveled-list/animation.svg
+++ b/_examples/tree/from-leveled-list/animation.svg
@@ -7,4 +7,4 @@
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji' !important;
-}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:transparent}.j{animation-duration:5.01305s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}0.2%{transform:translateX(-80px)}0.3%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}├─┬C:│├──Users│├──Windows│├──Programs│├──Programs(x86)│└──dev├──D:├─┬E:│├──Movies│├─┬Music││└──LinkinPark│└─┬Games│└─┬Shooter│├──CallOfDuty│├──CS:GO│└─┬Battlefield│├──Battlefield1│└──Battlefield2└─┬F:└─┬dev├──dops└──PTermComputerRestartinganimation...
\ No newline at end of file
+}.a{fill:rgb(35,35,35)}.b{fill:#ff5f58}.c{fill:#ffbd2e}.d{fill:#18c132}.e{font-family:'Courier New',Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace}.f{fill:rgb(104,104,104);white-space:pre}.g{fill:rgb(160,160,160);white-space:pre}.h{fill:transparent}.j{animation-duration:5.009026s;animation-iteration-count:infinite;animation-name:i;animation-timing-function:steps(1,end)}@keyframes i{0%{transform:translateX(-0px)}0.1%{transform:translateX(-80px)}0.2%{transform:translateX(-160px)}100%{transform:translateX(-240px)}}│├──Windows│├──Programs│├──Programs(x86)│└──dev├──D:├─┬E:│├──Movies│├─┬Music││└──LinkinPark│└─┬Games│└─┬Shooter│├──CallOfDuty│├──CS:GO│└─┬Battlefield│├──Battlefield1│└──Battlefield2└─┬F:└─┬dev├──dops└──PTermComputer├─┬C:│├──UsersRestartinganimation...
\ No newline at end of file
diff --git a/ci/main.go b/ci/main.go
index 2e8bba01c..80ceedee6 100644
--- a/ci/main.go
+++ b/ci/main.go
@@ -285,7 +285,15 @@ func generateSectionContent(section os.DirEntry) string {
return true
})
- sort.Strings(keys)
+ sort.Slice(keys, func(i, j int) bool {
+ if keys[i] == "demo" {
+ return true
+ }
+ if keys[j] == "demo" {
+ return false
+ }
+ return keys[i] < keys[j]
+ })
for _, key := range keys {
value, _ := exampleMap.Load(key)
@@ -296,7 +304,6 @@ func generateSectionContent(section os.DirEntry) string {
return sectionExamples
}
-
func generateExampleContent(dir string, section os.DirEntry, example os.DirEntry) string {
var content string
diff --git a/errors.go b/errors.go
index a7d6fcc70..9260ab641 100644
--- a/errors.go
+++ b/errors.go
@@ -8,4 +8,7 @@ var (
// ErrHexCodeIsInvalid - the given HEX code is invalid.
ErrHexCodeIsInvalid = errors.New("hex code is not valid")
+
+ // ErrKeyWithoutValue - an odd number of arguments was passed to a pterm Logger's Args method.
+ ErrKeyWithoutValue = "ERROR: key_without_value"
)
diff --git a/go.mod b/go.mod
index 4dd07d5be..5faaebcbb 100644
--- a/go.mod
+++ b/go.mod
@@ -10,7 +10,7 @@ require (
github.com/gookit/color v1.5.4
github.com/lithammer/fuzzysearch v1.1.8
github.com/mattn/go-runewidth v0.0.15
- golang.org/x/term v0.15.0
+ golang.org/x/term v0.16.0
golang.org/x/text v0.14.0
)
@@ -22,5 +22,5 @@ require (
github.com/rivo/uniseg v0.4.4 // indirect
github.com/sergi/go-diff v1.2.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
- golang.org/x/sys v0.15.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
)
diff --git a/go.sum b/go.sum
index 103410aec..4c46b2a1f 100644
--- a/go.sum
+++ b/go.sum
@@ -86,15 +86,15 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
-golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
-golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
+golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
+golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
diff --git a/interactive_multiselect_printer.go b/interactive_multiselect_printer.go
index 754ba98a2..9dce03fb3 100644
--- a/interactive_multiselect_printer.go
+++ b/interactive_multiselect_printer.go
@@ -206,7 +206,7 @@ func (p *InteractiveMultiselectPrinter) Show(text ...string) ([]string, error) {
}
case keys.Backspace:
// Remove last character from fuzzy search string
- if len(p.fuzzySearchString) > 0 {
+ if p.fuzzySearchString != "" {
// Handle UTF-8 characters
p.fuzzySearchString = string([]rune(p.fuzzySearchString)[:len([]rune(p.fuzzySearchString))-1])
}
diff --git a/interactive_select_printer.go b/interactive_select_printer.go
index 0c4bc9958..d62f5dad0 100644
--- a/interactive_select_printer.go
+++ b/interactive_select_printer.go
@@ -173,7 +173,7 @@ func (p *InteractiveSelectPrinter) Show(text ...string) (string, error) {
area.Update(p.renderSelectMenu())
case keys.Backspace:
// Remove last character from fuzzy search string
- if len(p.fuzzySearchString) > 0 {
+ if p.fuzzySearchString != "" {
// Handle UTF-8 characters
p.fuzzySearchString = string([]rune(p.fuzzySearchString)[:len([]rune(p.fuzzySearchString))-1])
}
diff --git a/interactive_textinput_printer.go b/interactive_textinput_printer.go
index 88535c514..6926a4be4 100644
--- a/interactive_textinput_printer.go
+++ b/interactive_textinput_printer.go
@@ -6,6 +6,7 @@ import (
"atomicgo.dev/cursor"
"atomicgo.dev/keyboard"
"atomicgo.dev/keyboard/keys"
+ "github.com/mattn/go-runewidth"
"github.com/pterm/pterm/internal"
)
@@ -28,10 +29,12 @@ type InteractiveTextInputPrinter struct {
Mask string
OnInterruptFunc func()
- input []string
- cursorXPos int
- cursorYPos int
- text string
+ input []string
+ cursorXPos int
+ cursorYPos int
+ text string
+ startedTyping bool
+ valueStyle *Style
}
// WithDefaultText sets the default text.
@@ -85,7 +88,7 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
var areaText string
- if len(text) == 0 || Sprint(text[0]) == "" {
+ if len(text) == 0 || text[0] == "" {
text = []string{p.DefaultText}
}
@@ -101,11 +104,11 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
area.StartOfLine()
if !p.MultiLine {
- cursor.Right(len(RemoveColorFromString(areaText)))
+ cursor.Right(runewidth.StringWidth(RemoveColorFromString(areaText)))
}
if p.DefaultValue != "" {
- p.input = append(p.input, p.DefaultValue)
+ p.input = append(p.input, Gray(p.DefaultValue))
p.updateArea(&area)
}
@@ -124,6 +127,17 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
return true, nil
}
case keys.Enter:
+ if p.DefaultValue != "" && !p.startedTyping {
+ for i := range p.input {
+ p.input[i] = RemoveColorFromString(p.input[i])
+ }
+
+ if p.MultiLine {
+ area.Bottom()
+ }
+ return true, nil
+ }
+
if p.MultiLine {
if key.AltPressed {
p.cursorXPos = 0
@@ -140,10 +154,22 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
return true, nil
}
case keys.RuneKey:
+ if !p.startedTyping {
+ p.input = []string{""}
+ p.startedTyping = true
+ }
p.input[p.cursorYPos] = string(append([]rune(p.input[p.cursorYPos])[:len([]rune(p.input[p.cursorYPos]))+p.cursorXPos], append([]rune(key.String()), []rune(p.input[p.cursorYPos])[len([]rune(p.input[p.cursorYPos]))+p.cursorXPos:]...)...))
case keys.Space:
+ if !p.startedTyping {
+ p.input = []string{" "}
+ p.startedTyping = true
+ }
p.input[p.cursorYPos] = string(append([]rune(p.input[p.cursorYPos])[:len([]rune(p.input[p.cursorYPos]))+p.cursorXPos], append([]rune(" "), []rune(p.input[p.cursorYPos])[len([]rune(p.input[p.cursorYPos]))+p.cursorXPos:]...)...))
case keys.Backspace:
+ if !p.startedTyping {
+ p.input = []string{""}
+ p.startedTyping = true
+ }
if len([]rune(p.input[p.cursorYPos]))+p.cursorXPos > 0 {
p.input[p.cursorYPos] = string(append([]rune(p.input[p.cursorYPos])[:len([]rune(p.input[p.cursorYPos]))-1+p.cursorXPos], []rune(p.input[p.cursorYPos])[len([]rune(p.input[p.cursorYPos]))+p.cursorXPos:]...))
} else if p.cursorYPos > 0 {
@@ -154,6 +180,11 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
p.cursorYPos--
}
case keys.Delete:
+ if !p.startedTyping {
+ p.input = []string{""}
+ p.startedTyping = true
+ return false, nil
+ }
if len([]rune(p.input[p.cursorYPos]))+p.cursorXPos < len([]rune(p.input[p.cursorYPos])) {
p.input[p.cursorYPos] = string(append([]rune(p.input[p.cursorYPos])[:len([]rune(p.input[p.cursorYPos]))+p.cursorXPos], []rune(p.input[p.cursorYPos])[len([]rune(p.input[p.cursorYPos]))+p.cursorXPos+1:]...))
p.cursorXPos++
@@ -167,6 +198,10 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
cancel()
return true, nil
case keys.Down:
+ if !p.startedTyping {
+ p.input = []string{""}
+ p.startedTyping = true
+ }
if p.cursorYPos+1 < len(p.input) {
p.cursorXPos = (internal.GetStringMaxWidth(p.input[p.cursorYPos]) + p.cursorXPos) - internal.GetStringMaxWidth(p.input[p.cursorYPos+1])
if p.cursorXPos > 0 {
@@ -175,6 +210,10 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
p.cursorYPos++
}
case keys.Up:
+ if !p.startedTyping {
+ p.input = []string{""}
+ p.startedTyping = true
+ }
if p.cursorYPos > 0 {
p.cursorXPos = (internal.GetStringMaxWidth(p.input[p.cursorYPos]) + p.cursorXPos) - internal.GetStringMaxWidth(p.input[p.cursorYPos-1])
if p.cursorXPos > 0 {
@@ -222,6 +261,10 @@ func (p InteractiveTextInputPrinter) Show(text ...string) (string, error) {
}
}
+ if !p.startedTyping {
+ return p.DefaultValue, nil
+ }
+
return strings.ReplaceAll(areaText, p.text, ""), nil
}
diff --git a/interactive_textinput_printer_test.go b/interactive_textinput_printer_test.go
index 87a3d3107..803fd72ce 100644
--- a/interactive_textinput_printer_test.go
+++ b/interactive_textinput_printer_test.go
@@ -98,6 +98,7 @@ func TestInteractiveTextInputPrinter_WithMultiLineOnTab(t *testing.T) {
func TestInteractiveTextInputPrinter_WithMultiLineOnUp(t *testing.T) {
go func() {
time.Sleep(1 * time.Millisecond)
+ keyboard.SimulateKeyPress(keys.Backspace)
keyboard.SimulateKeyPress(keys.Enter)
keyboard.SimulateKeyPress("second line")
keyboard.SimulateKeyPress(keys.Up)
@@ -129,6 +130,7 @@ func TestInteractiveTextInputPrinter_WithMultiLineOnDown(t *testing.T) {
func TestInteractiveTextInputPrinter_WithMultiLineOnLeft(t *testing.T) {
go func() {
time.Sleep(1 * time.Millisecond)
+ keyboard.SimulateKeyPress(keys.Backspace)
keyboard.SimulateKeyPress(keys.Enter)
keyboard.SimulateKeyPress("a")
keyboard.SimulateKeyPress(keys.Left)
@@ -157,28 +159,6 @@ func TestInteractiveTextInputPrinter_WithMultiLineOnRight(t *testing.T) {
testza.AssertEqual(t, "a\nb", result)
}
-func TestInteractiveTextInputPrinter_OnSpace(t *testing.T) {
- go func() {
- keyboard.SimulateKeyPress(keys.Space)
- keyboard.SimulateKeyPress(keys.Tab)
- }()
- result, _ := pterm.DefaultInteractiveTextInput.
- WithMultiLine(true).
- WithDefaultValue("default").Show()
- testza.AssertEqual(t, "default ", result)
-}
-
-func TestInteractiveTextInputPrinter_OnDelete(t *testing.T) {
- go func() {
- keyboard.SimulateKeyPress(keys.Left)
- keyboard.SimulateKeyPress(keys.Delete)
- keyboard.SimulateKeyPress(keys.Enter)
- }()
- result, _ := pterm.DefaultInteractiveTextInput.
- WithDefaultValue("a").Show()
- testza.AssertEqual(t, "", result)
-}
-
func TestInteractiveTextInputPrinter_OnBackspace(t *testing.T) {
go func() {
keyboard.SimulateKeyPress(keys.Backspace)
@@ -191,6 +171,7 @@ func TestInteractiveTextInputPrinter_OnBackspace(t *testing.T) {
func TestInteractiveTextInputPrinter_WithMultiLineOnDelete(t *testing.T) {
go func() {
+ keyboard.SimulateKeyPress(keys.Backspace)
keyboard.SimulateKeyPress(keys.Enter)
keyboard.SimulateKeyPress('a')
keyboard.SimulateKeyPress(keys.Up)
@@ -200,11 +181,12 @@ func TestInteractiveTextInputPrinter_WithMultiLineOnDelete(t *testing.T) {
result, _ := pterm.DefaultInteractiveTextInput.
WithMultiLine(true).
WithDefaultValue("a").Show()
- testza.AssertEqual(t, "aa", result)
+ testza.AssertEqual(t, "a", result)
}
func TestInteractiveTextInputPrinter_WithMultiLineOnBackspace(t *testing.T) {
go func() {
+ keyboard.SimulateKeyPress(keys.Backspace)
keyboard.SimulateKeyPress(keys.Enter)
keyboard.SimulateKeyPress(keys.Backspace)
keyboard.SimulateKeyPress(keys.Tab)
@@ -212,31 +194,7 @@ func TestInteractiveTextInputPrinter_WithMultiLineOnBackspace(t *testing.T) {
result, _ := pterm.DefaultInteractiveTextInput.
WithMultiLine(true).
WithDefaultValue("a").Show()
- testza.AssertEqual(t, "a", result)
-}
-
-func TestInteractiveTextInputPrinter_WithMultiLineAltPressed(t *testing.T) {
- go func() {
- keyboard.SimulateKeyPress(keys.Key{AltPressed: true, Code: keys.Enter})
- keyboard.SimulateKeyPress(keys.Tab)
- }()
- result, _ := pterm.DefaultInteractiveTextInput.
- WithMultiLine(true).
- WithDefaultValue("a").Show()
- testza.AssertEqual(t, "a\n", result)
-}
-
-func TestInteractiveTextInputPrinter_OnLeftRight(t *testing.T) {
- go func() {
- keyboard.SimulateKeyPress(keys.Left)
- keyboard.SimulateKeyPress("left")
- keyboard.SimulateKeyPress(keys.Right)
- keyboard.SimulateKeyPress("right")
- keyboard.SimulateKeyPress(keys.Enter)
- }()
- result, _ := pterm.DefaultInteractiveTextInput.
- WithDefaultValue("default").Show()
- testza.AssertEqual(t, "defaullefttright", result)
+ testza.AssertEqual(t, "", result)
}
func TestInteractiveTextInputPrinter_WithMultiLineOnLeftRight(t *testing.T) {
diff --git a/logger.go b/logger.go
index 4fed92834..407f4d50a 100644
--- a/logger.go
+++ b/logger.go
@@ -200,6 +200,9 @@ func (l Logger) AppendKeyStyle(key string, style Style) *Logger {
// CanPrint checks if the logger can print a specific log level.
func (l Logger) CanPrint(level LogLevel) bool {
+ if l.Level == LogLevelDisabled {
+ return false
+ }
return l.Level <= level
}
@@ -208,6 +211,8 @@ func (l Logger) Args(args ...any) []LoggerArgument {
var loggerArgs []LoggerArgument
// args are in the format of: key, value, key, value, key, value, ...
+ args = l.sanitizeArgs(args)
+
for i := 0; i < len(args); i += 2 {
key := Sprint(args[i])
value := args[i+1]
@@ -235,6 +240,20 @@ func (l Logger) ArgsFromMap(m map[string]any) []LoggerArgument {
return loggerArgs
}
+// sanitizeArgs inserts an error message into an args slice if an odd number of arguments is provided.
+func (l Logger) sanitizeArgs(args []any) []any {
+ numArgs := len(args)
+ if numArgs > 0 && numArgs%2 != 0 {
+ if numArgs > 1 {
+ lastArg := args[numArgs-1]
+ args = append(args[:numArgs-1], []any{ErrKeyWithoutValue, lastArg}...)
+ } else {
+ args = []any{ErrKeyWithoutValue, args[0]}
+ }
+ }
+ return args
+}
+
func (l Logger) getCallerInfo() (path string, line int) {
if !l.ShowCaller {
return
@@ -261,7 +280,7 @@ func (l Logger) combineArgs(args ...[]LoggerArgument) []LoggerArgument {
}
func (l Logger) print(level LogLevel, msg string, args []LoggerArgument) {
- if l.Level > level {
+ if !l.CanPrint(level) {
return
}
@@ -277,7 +296,7 @@ func (l Logger) print(level LogLevel, msg string, args []LoggerArgument) {
loggerMutex.Lock()
defer loggerMutex.Unlock()
- _, _ = l.Writer.Write([]byte(line + "\n"))
+ Fprintln(l.Writer, line)
}
func (l Logger) renderColorful(level LogLevel, msg string, args []LoggerArgument) (result string) {
diff --git a/logger_test.go b/logger_test.go
new file mode 100644
index 000000000..89376b703
--- /dev/null
+++ b/logger_test.go
@@ -0,0 +1,41 @@
+package pterm
+
+import (
+ "reflect"
+ "testing"
+)
+
+func Test_sanitizeArgs(t *testing.T) {
+ tests := []struct {
+ name string
+ args []any
+ expected []any
+ }{
+ {
+ name: "pass_zero_args",
+ args: []any{},
+ expected: []any{},
+ },
+ {
+ name: "pass_one_arg",
+ args: []any{"foo"},
+ expected: []any{ErrKeyWithoutValue, "foo"},
+ },
+ {
+ name: "pass_two_args",
+ args: []any{"foo", "bar"},
+ expected: []any{"foo", "bar"},
+ },
+ {
+ name: "pass_three_args",
+ args: []any{"foo", "bar", "baz"},
+ expected: []any{"foo", "bar", ErrKeyWithoutValue, "baz"},
+ },
+ }
+ l := Logger{}
+ for _, tt := range tests {
+ if got := l.sanitizeArgs(tt.args); !reflect.DeepEqual(got, tt.expected) {
+ t.Errorf("sanitizeArgs: got: %v, expected: %v", got, tt.expected)
+ }
+ }
+}
diff --git a/panel_printer.go b/panel_printer.go
index 709f7c807..090498e75 100644
--- a/panel_printer.go
+++ b/panel_printer.go
@@ -183,7 +183,7 @@ func (p PanelPrinter) Srender() (string, error) {
// Render prints the Template to the terminal.
func (p PanelPrinter) Render() error {
s, _ := p.Srender()
- Println(s)
+ Fprintln(p.Writer, s)
return nil
}
diff --git a/print.go b/print.go
index a58e5fa6a..67b49c027 100644
--- a/print.go
+++ b/print.go
@@ -3,13 +3,17 @@ package pterm
import (
"fmt"
"io"
+ "os"
"strings"
"github.com/gookit/color"
)
+var defaultWriter io.Writer = os.Stdout
+
// SetDefaultOutput sets the default output of pterm.
func SetDefaultOutput(w io.Writer) {
+ defaultWriter = w
color.SetOutput(w)
}
@@ -45,7 +49,7 @@ func Sprinto(a ...interface{}) string {
// Spaces are added between operands when neither is a string.
// It returns the number of bytes written and any write error encountered.
func Print(a ...interface{}) {
- Fprint(nil, a...)
+ Fprint(defaultWriter, a...)
}
// Println formats using the default formats for its operands and writes to standard output.
diff --git a/progressbar_printer.go b/progressbar_printer.go
index 1cf4a0c2a..d2bb35c1c 100644
--- a/progressbar_printer.go
+++ b/progressbar_printer.go
@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"math"
+ "os"
"strings"
"time"
@@ -32,6 +33,7 @@ var DefaultProgressbar = ProgressbarPrinter{
ShowElapsedTime: true,
BarFiller: Gray("█"),
MaxWidth: 80,
+ Writer: os.Stdout,
}
// ProgressbarPrinter shows a progress animation in the terminal.
diff --git a/rgb.go b/rgb.go
index a35dd1a07..7c00835a4 100644
--- a/rgb.go
+++ b/rgb.go
@@ -136,13 +136,13 @@ func (p RGBStyle) Sprintln(a ...interface{}) string {
// Sprintf formats according to a format specifier and returns the resulting string.
func (p RGBStyle) Sprintf(format string, a ...interface{}) string {
- return fmt.Sprintf(format, p.Sprint(a...))
+ return p.Sprint(Sprintf(format, a...))
}
// Sprintfln formats according to a format specifier and returns the resulting string.
// Spaces are always added between operands and a newline is appended.
func (p RGBStyle) Sprintfln(format string, a ...interface{}) string {
- return fmt.Sprintf(format, p.Sprint(a...)) + "\n"
+ return p.Sprintf(format, a...) + "\n"
}
// GetValues returns the RGB values separately.
diff --git a/slog_handler.go b/slog_handler.go
index d0854d049..a2b2acfe0 100644
--- a/slog_handler.go
+++ b/slog_handler.go
@@ -48,17 +48,24 @@ func (s *SlogHandler) Handle(ctx context.Context, record slog.Record) error {
// Wrapping args inside another slice to match [][]LoggerArgument
argsWrapped := [][]LoggerArgument{args}
+ logger := s.logger
+
+ // Must be done here, see https://github.com/pterm/pterm/issues/608#issuecomment-1876001650
+ if logger.CallerOffset == 0 {
+ logger = logger.WithCallerOffset(3)
+ }
+
switch level {
case slog.LevelDebug:
- s.logger.Debug(message, argsWrapped...)
+ logger.Debug(message, argsWrapped...)
case slog.LevelInfo:
- s.logger.Info(message, argsWrapped...)
+ logger.Info(message, argsWrapped...)
case slog.LevelWarn:
- s.logger.Warn(message, argsWrapped...)
+ logger.Warn(message, argsWrapped...)
case slog.LevelError:
- s.logger.Error(message, argsWrapped...)
+ logger.Error(message, argsWrapped...)
default:
- s.logger.Print(message, argsWrapped...)
+ logger.Print(message, argsWrapped...)
}
return nil
diff --git a/utils_test.go b/utils_test.go
index 521df4522..eb0580613 100644
--- a/utils_test.go
+++ b/utils_test.go
@@ -25,6 +25,8 @@ func TestMain(m *testing.M) {
// testPrintContains can be used to test Print methods.
func testPrintContains(t *testing.T, logic func(w io.Writer, a interface{})) {
+ t.Helper()
+
for _, printable := range printables {
t.Run(fmt.Sprint(printable), func(t *testing.T) {
s := captureStdout(func(w io.Writer) {