2016-10-09 17:46:53 +00:00
|
|
|
[package]
|
2023-03-17 16:03:49 +00:00
|
|
|
name = "ratatui"
|
2024-08-25 09:23:26 +00:00
|
|
|
version = "0.28.1" # crate version
|
2023-07-17 10:41:45 +00:00
|
|
|
authors = ["Florian Dehau <work@fdehau.com>", "The Ratatui Developers"]
|
2023-08-27 20:58:54 +00:00
|
|
|
description = "A library that's all about cooking up terminal user interfaces"
|
2023-03-17 16:03:49 +00:00
|
|
|
documentation = "https://docs.rs/ratatui/latest/ratatui/"
|
2024-08-21 18:35:08 +00:00
|
|
|
repository = "https://github.com/ratatui/ratatui"
|
2024-05-02 09:47:10 +00:00
|
|
|
homepage = "https://ratatui.rs"
|
2016-11-28 08:52:51 +00:00
|
|
|
keywords = ["tui", "terminal", "dashboard"]
|
2024-04-19 19:55:12 +00:00
|
|
|
categories = ["command-line-interface"]
|
2021-01-01 13:35:07 +00:00
|
|
|
readme = "README.md"
|
2016-11-08 09:29:42 +00:00
|
|
|
license = "MIT"
|
2023-06-11 20:27:35 +00:00
|
|
|
exclude = [
|
|
|
|
"assets/*",
|
|
|
|
".github",
|
|
|
|
"Makefile.toml",
|
|
|
|
"CONTRIBUTING.md",
|
|
|
|
"*.log",
|
|
|
|
"tags",
|
|
|
|
]
|
2022-01-22 12:07:35 +00:00
|
|
|
edition = "2021"
|
2024-03-02 12:13:17 +00:00
|
|
|
rust-version = "1.74.0"
|
2016-10-09 17:46:53 +00:00
|
|
|
|
|
|
|
[dependencies]
|
2023-06-01 13:37:59 +00:00
|
|
|
bitflags = "2.3"
|
2018-09-04 20:00:45 +00:00
|
|
|
cassowary = "0.3"
|
2024-07-15 21:02:44 +00:00
|
|
|
compact_str = "0.8.0"
|
2024-08-06 21:09:38 +00:00
|
|
|
crossterm = { version = "0.28.1", optional = true }
|
2024-05-12 02:28:38 +00:00
|
|
|
document-features = { version = "0.2.7", optional = true }
|
2024-10-06 00:35:43 +00:00
|
|
|
indoc = "2"
|
2024-06-27 15:44:52 +00:00
|
|
|
instability = "0.3.1"
|
chore(deps): update itertools requirement from 0.12 to 0.13 (#1120)
Updates the requirements on
[itertools](https://github.com/rust-itertools/itertools) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's
changelog</a>.</em></p>
<blockquote>
<h2>0.13.0</h2>
<h3>Breaking</h3>
<ul>
<li>Removed implementation of <code>DoubleEndedIterator</code> for
<code>ConsTuples</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/853">#853</a>)</li>
<li>Made <code>MultiProduct</code> fused and fixed on an empty iterator
(<a
href="https://redirect.github.com/rust-itertools/itertools/issues/835">#835</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/834">#834</a>)</li>
<li>Changed <code>iproduct!</code> to return tuples for maxi one
iterator too (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/870">#870</a>)</li>
<li>Changed <code>PutBack::put_back</code> to return the old value (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/880">#880</a>)</li>
<li>Removed deprecated <code>repeat_call, Itertools::{foreach, step,
map_results, fold_results}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/878">#878</a>)</li>
<li>Removed <code>TakeWhileInclusive::new</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/912">#912</a>)</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added <code>Itertools::{smallest_by, smallest_by_key, largest,
largest_by, largest_by_key}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/654">#654</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/885">#885</a>)</li>
<li>Added <code>Itertools::tail</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/899">#899</a>)</li>
<li>Implemented <code>DoubleEndedIterator</code> for
<code>ProcessResults</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/910">#910</a>)</li>
<li>Implemented <code>Debug</code> for <code>FormatWith</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/931">#931</a>)</li>
<li>Added <code>Itertools::get</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/891">#891</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Deprecated <code>Itertools::group_by</code> (renamed
<code>chunk_by</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/866">#866</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/879">#879</a>)</li>
<li>Deprecated <code>unfold</code> (use <code>std::iter::from_fn</code>
instead) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/871">#871</a>)</li>
<li>Optimized <code>GroupingMapBy</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/873">#873</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/876">#876</a>)</li>
<li>Relaxed <code>Fn</code> bounds to <code>FnMut</code> in
<code>diff_with, Itertools::into_group_map_by</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/886">#886</a>)</li>
<li>Relaxed <code>Debug/Clone</code> bounds for <code>MapInto</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/889">#889</a>)</li>
<li>Documented the <code>use_alloc</code> feature (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/887">#887</a>)</li>
<li>Optimized <code>Itertools::set_from</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/888">#888</a>)</li>
<li>Removed badges in <code>README.md</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/890">#890</a>)</li>
<li>Added "no-std" categories in <code>Cargo.toml</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/894">#894</a>)</li>
<li>Fixed <code>Itertools::k_smallest</code> on short unfused iterators
(<a
href="https://redirect.github.com/rust-itertools/itertools/issues/900">#900</a>)</li>
<li>Deprecated <code>Itertools::tree_fold1</code> (renamed
<code>tree_reduce</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/895">#895</a>)</li>
<li>Deprecated <code>GroupingMap::fold_first</code> (renamed
<code>reduce</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/902">#902</a>)</li>
<li>Fixed <code>Itertools::k_smallest(0)</code> to consume the iterator,
optimized <code>Itertools::k_smallest(1)</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/909">#909</a>)</li>
<li>Specialized <code>Combinations::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/914">#914</a>)</li>
<li>Specialized <code>MergeBy::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/920">#920</a>)</li>
<li>Specialized <code>CombinationsWithReplacement::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/923">#923</a>)</li>
<li>Specialized <code>FlattenOk::{fold, rfold}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/927">#927</a>)</li>
<li>Specialized <code>Powerset::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/924">#924</a>)</li>
<li>Documentation fixes (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/882">#882</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/936">#936</a>)</li>
<li>Fixed <code>assert_equal</code> for iterators longer than
<code>i32::MAX</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/932">#932</a>)</li>
<li>Updated the <code>must_use</code> message of non-lazy
<code>KMergeBy</code> and <code>TupleCombinations</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/939">#939</a>)</li>
</ul>
<h3>Notable Internal Changes</h3>
<ul>
<li>Tested iterator laziness (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/792">#792</a>)</li>
<li>Created <code>CONTRIBUTING.md</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/767">#767</a>)</li>
</ul>
<h2>0.12.1</h2>
<h3>Added</h3>
<ul>
<li>Documented iteration order guarantee for
<code>Itertools::[tuple_]combinations</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/822">#822</a>)</li>
<li>Documented possible panic in <code>iterate</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/842">#842</a>)</li>
<li>Implemented <code>Clone</code> and <code>Debug</code> for
<code>Diff</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/845">#845</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-itertools/itertools/commit/d5084d15e959b85d89a49e5cd33ad6267bc541a3"><code>d5084d1</code></a>
Prepare v0.13.0 release (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/937">#937</a>)</li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/d7c99d55daeaa76f482444e95beb99f5744ced4e"><code>d7c99d5</code></a>
<code>TupleCombinations</code> is not lazy but must be used
nonetheless</li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/074c7fcc07c2bfd60f238585c05134ea3eb43f77"><code>074c7fc</code></a>
<code>KMergeBy</code> is not lazy but must be used nonetheless</li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/2ad9e07ae860bb891e48b35edfea5b3286dcb4ab"><code>2ad9e07</code></a>
<code>assert_equal</code>: fix
<code>clippy::default_numeric_fallback</code></li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/0d4efc84323399b47b09ae9da1ff3fdfc2cf95e1"><code>0d4efc8</code></a>
Remove free function <code>get</code></li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/05cc0ee256e84d665e34209053ebc62ef7e4463d"><code>05cc0ee</code></a>
<code>get(s..=usize::MAX)</code> should be fine when <code>s !=
0</code></li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/3c16f14baa5515376adcd8c530f6d3d275b14f44"><code>3c16f14</code></a>
<code>get</code>: when is it ESI and/or DEI</li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/4dd6ba0e7c44bb287dff1098d8fb6ab77c32bf87"><code>4dd6ba0</code></a>
<code>get</code>: panics if the range includes
<code>usize::MAX</code></li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/7a9ce56fc59489668178d696db76afb3580a359c"><code>7a9ce56</code></a>
<code>get(r: Range)</code> as <code>Skip\<Take></code></li>
<li><a
href="https://github.com/rust-itertools/itertools/commit/f676f2f96451220c827c62f714d79ce6454d0184"><code>f676f2f</code></a>
Remove the unspecified check about
<code>.get(exhausted_range_inclusive)</code></li>
<li>Additional commits viewable in <a
href="https://github.com/rust-itertools/itertools/compare/v0.12.0...v0.13.0">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
Dependabot will merge this PR once CI passes on it, as requested by
@joshka.
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-06-03 01:18:36 +00:00
|
|
|
itertools = "0.13"
|
2024-05-12 02:28:38 +00:00
|
|
|
lru = "0.12.0"
|
2023-07-26 07:05:12 +00:00
|
|
|
paste = "1.0.2"
|
2024-06-08 05:31:46 +00:00
|
|
|
palette = { version = "0.7.6", optional = true }
|
2024-05-12 02:28:38 +00:00
|
|
|
serde = { version = "1", optional = true, features = ["derive"] }
|
2024-09-09 01:54:33 +00:00
|
|
|
strum = { version = "0.26.3", features = ["derive"] }
|
2024-05-12 02:28:38 +00:00
|
|
|
termwiz = { version = "0.22.0", optional = true }
|
2024-05-14 01:13:46 +00:00
|
|
|
time = { version = "0.3.11", optional = true, features = ["local-offset"] }
|
2023-06-02 14:03:34 +00:00
|
|
|
unicode-segmentation = "1.10"
|
2024-05-12 02:28:38 +00:00
|
|
|
unicode-truncate = "1"
|
2024-09-21 09:58:29 +00:00
|
|
|
unicode-width = "=0.1.13"
|
2019-05-15 17:33:11 +00:00
|
|
|
|
2024-08-13 17:09:46 +00:00
|
|
|
[target.'cfg(not(windows))'.dependencies]
|
|
|
|
# termion is not supported on Windows
|
|
|
|
termion = { version = "4.0.0", optional = true }
|
|
|
|
|
2016-10-12 17:43:39 +00:00
|
|
|
[dev-dependencies]
|
2023-09-21 08:47:23 +00:00
|
|
|
argh = "0.1.12"
|
2023-12-17 09:34:59 +00:00
|
|
|
color-eyre = "0.6.2"
|
2023-09-21 08:47:23 +00:00
|
|
|
criterion = { version = "0.5.1", features = ["html_reports"] }
|
2024-08-06 21:09:38 +00:00
|
|
|
crossterm = { version = "0.28.1", features = ["event-stream"] }
|
2023-06-16 13:09:41 +00:00
|
|
|
fakeit = "1.1"
|
2024-01-13 23:13:50 +00:00
|
|
|
font8x8 = "0.3.1"
|
2024-08-05 05:26:56 +00:00
|
|
|
futures = "0.3.30"
|
2024-05-14 01:13:46 +00:00
|
|
|
indoc = "2"
|
2024-10-05 20:47:42 +00:00
|
|
|
octocrab = "0.41.0"
|
2023-08-17 07:44:33 +00:00
|
|
|
pretty_assertions = "1.4.0"
|
2023-12-17 09:34:59 +00:00
|
|
|
rand = "0.8.5"
|
2024-01-13 23:13:50 +00:00
|
|
|
rand_chacha = "0.3.1"
|
2024-10-05 20:49:25 +00:00
|
|
|
rstest = "0.23.0"
|
feat(serde): support TableState, ListState, and ScrollbarState (#723)
TableState, ListState, and ScrollbarState can now be serialized and deserialized
using serde.
```rust
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
struct AppState {
list_state: ListState,
table_state: TableState,
scrollbar_state: ScrollbarState,
}
let app_state = AppState::default();
let serialized = serde_json::to_string(app_state);
let app_state = serde_json::from_str(serialized);
```
2024-01-13 00:13:35 +00:00
|
|
|
serde_json = "1.0.109"
|
2024-08-05 05:26:56 +00:00
|
|
|
tokio = { version = "1.39.2", features = [
|
|
|
|
"rt",
|
|
|
|
"macros",
|
|
|
|
"time",
|
|
|
|
"rt-multi-thread",
|
|
|
|
] }
|
2024-06-20 00:29:19 +00:00
|
|
|
tracing = "0.1.40"
|
|
|
|
tracing-appender = "0.2.3"
|
|
|
|
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
2023-06-16 13:09:41 +00:00
|
|
|
|
2024-02-27 11:12:33 +00:00
|
|
|
[lints.rust]
|
|
|
|
unsafe_code = "forbid"
|
2024-04-21 16:43:46 +00:00
|
|
|
|
2024-02-27 11:12:33 +00:00
|
|
|
[lints.clippy]
|
2024-04-21 16:43:46 +00:00
|
|
|
cargo = { level = "warn", priority = -1 }
|
2024-03-02 12:24:35 +00:00
|
|
|
pedantic = { level = "warn", priority = -1 }
|
|
|
|
cast_possible_truncation = "allow"
|
|
|
|
cast_possible_wrap = "allow"
|
|
|
|
cast_precision_loss = "allow"
|
|
|
|
cast_sign_loss = "allow"
|
|
|
|
missing_errors_doc = "allow"
|
|
|
|
missing_panics_doc = "allow"
|
|
|
|
module_name_repetitions = "allow"
|
|
|
|
must_use_candidate = "allow"
|
|
|
|
|
2024-07-18 22:59:35 +00:00
|
|
|
# we often split up a module into multiple files with the main type in a file named after the
|
|
|
|
# module, so we want to allow this pattern
|
|
|
|
module_inception = "allow"
|
|
|
|
|
2024-03-02 12:24:35 +00:00
|
|
|
# nursery or restricted
|
2024-03-03 13:35:55 +00:00
|
|
|
as_underscore = "warn"
|
2024-02-27 13:08:06 +00:00
|
|
|
deref_by_slicing = "warn"
|
2024-03-03 12:35:16 +00:00
|
|
|
else_if_without_else = "warn"
|
2024-02-28 14:51:53 +00:00
|
|
|
empty_line_after_doc_comments = "warn"
|
2024-02-27 12:41:34 +00:00
|
|
|
equatable_if_let = "warn"
|
2024-03-03 13:35:55 +00:00
|
|
|
fn_to_numeric_cast_any = "warn"
|
|
|
|
format_push_string = "warn"
|
2024-03-03 12:46:25 +00:00
|
|
|
map_err_ignore = "warn"
|
2024-02-27 11:32:07 +00:00
|
|
|
missing_const_for_fn = "warn"
|
2024-03-03 13:35:55 +00:00
|
|
|
mixed_read_write_in_expression = "warn"
|
|
|
|
mod_module_files = "warn"
|
2024-05-25 01:32:22 +00:00
|
|
|
needless_pass_by_ref_mut = "warn"
|
2024-03-03 13:35:55 +00:00
|
|
|
needless_raw_strings = "warn"
|
2024-05-25 01:33:19 +00:00
|
|
|
or_fun_call = "warn"
|
2024-03-03 12:25:48 +00:00
|
|
|
redundant_type_annotations = "warn"
|
2024-03-03 13:35:55 +00:00
|
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
|
|
string_lit_chars_any = "warn"
|
2024-05-25 13:15:08 +00:00
|
|
|
string_slice = "warn"
|
2024-03-03 13:35:55 +00:00
|
|
|
string_to_string = "warn"
|
2024-05-29 11:42:29 +00:00
|
|
|
unnecessary_self_imports = "warn"
|
2024-02-27 11:54:00 +00:00
|
|
|
use_self = "warn"
|
2024-02-27 11:12:33 +00:00
|
|
|
|
2023-08-27 09:00:35 +00:00
|
|
|
[features]
|
2023-10-18 20:52:43 +00:00
|
|
|
#! The crate provides a set of optional features that can be enabled in your `cargo.toml` file.
|
|
|
|
#!
|
|
|
|
## By default, we enable the crossterm backend as this is a reasonable choice for most applications
|
|
|
|
## as it is supported on Linux/Mac/Windows systems. We also enable the `underline-color` feature
|
|
|
|
## which allows you to set the underline color of text.
|
|
|
|
default = ["crossterm", "underline-color"]
|
|
|
|
#! Generally an application will only use one backend, so you should only enable one of the following features:
|
2024-05-25 17:38:33 +00:00
|
|
|
## enables the [`CrosstermBackend`](backend::CrosstermBackend) backend and adds a dependency on [`crossterm`].
|
2023-10-18 20:52:43 +00:00
|
|
|
crossterm = ["dep:crossterm"]
|
2024-05-25 17:38:33 +00:00
|
|
|
## enables the [`TermionBackend`](backend::TermionBackend) backend and adds a dependency on [`termion`].
|
2023-10-18 20:52:43 +00:00
|
|
|
termion = ["dep:termion"]
|
2024-05-25 17:38:33 +00:00
|
|
|
## enables the [`TermwizBackend`](backend::TermwizBackend) backend and adds a dependency on [`termwiz`].
|
2023-10-18 20:52:43 +00:00
|
|
|
termwiz = ["dep:termwiz"]
|
|
|
|
|
2023-08-27 09:00:35 +00:00
|
|
|
#! The following optional features are available for all backends:
|
2024-05-25 17:38:33 +00:00
|
|
|
## enables serialization and deserialization of style and color types using the [`serde`] crate.
|
2023-08-27 09:00:35 +00:00
|
|
|
## This is useful if you want to save themes to a file.
|
2024-01-19 12:50:42 +00:00
|
|
|
serde = ["dep:serde", "bitflags/serde", "compact_str/serde"]
|
2023-08-27 09:00:35 +00:00
|
|
|
|
|
|
|
## enables the [`border!`] macro.
|
|
|
|
macros = []
|
|
|
|
|
2024-06-08 05:31:46 +00:00
|
|
|
## enables conversions from colors in the [`palette`] crate to [`Color`](crate::style::Color).
|
|
|
|
palette = ["dep:palette"]
|
|
|
|
|
2023-08-27 09:00:35 +00:00
|
|
|
## enables all widgets.
|
|
|
|
all-widgets = ["widget-calendar"]
|
|
|
|
|
|
|
|
#! Widgets that add dependencies are gated behind feature flags to prevent unused transitive
|
|
|
|
#! dependencies. The available features are:
|
2024-05-25 17:38:33 +00:00
|
|
|
## enables the [`calendar`](widgets::calendar) widget module and adds a dependency on [`time`].
|
2023-08-27 09:00:35 +00:00
|
|
|
widget-calendar = ["dep:time"]
|
|
|
|
|
2024-05-25 17:38:33 +00:00
|
|
|
#! The following optional features are only available for some backends:
|
|
|
|
|
2023-10-18 20:52:43 +00:00
|
|
|
## enables the backend code that sets the underline color.
|
2024-05-25 17:38:33 +00:00
|
|
|
## Underline color is only supported by the [`CrosstermBackend`](backend::CrosstermBackend) backend,
|
|
|
|
## and is not supported on Windows 7.
|
2023-10-18 20:52:43 +00:00
|
|
|
underline-color = ["dep:crossterm"]
|
|
|
|
|
2023-12-02 20:21:13 +00:00
|
|
|
#! The following features are unstable and may change in the future:
|
|
|
|
|
|
|
|
## Enable all unstable features.
|
2024-09-06 22:33:14 +00:00
|
|
|
unstable = [
|
|
|
|
"unstable-rendered-line-info",
|
|
|
|
"unstable-widget-ref",
|
|
|
|
"unstable-backend-writer",
|
|
|
|
]
|
2023-12-02 20:21:13 +00:00
|
|
|
|
2024-05-25 17:38:33 +00:00
|
|
|
## Enables the [`Paragraph::line_count`](widgets::Paragraph::line_count)
|
|
|
|
## [`Paragraph::line_width`](widgets::Paragraph::line_width) methods
|
2023-12-07 17:14:56 +00:00
|
|
|
## which are experimental and may change in the future.
|
2024-08-21 18:35:08 +00:00
|
|
|
## See [Issue 293](https://github.com/ratatui/ratatui/issues/293) for more details.
|
2023-12-07 17:14:56 +00:00
|
|
|
unstable-rendered-line-info = []
|
|
|
|
|
2024-05-25 17:38:33 +00:00
|
|
|
## Enables the [`WidgetRef`](widgets::WidgetRef) and [`StatefulWidgetRef`](widgets::StatefulWidgetRef) traits which are experimental and may change in
|
2024-02-02 08:02:16 +00:00
|
|
|
## the future.
|
|
|
|
unstable-widget-ref = []
|
2024-09-06 22:33:14 +00:00
|
|
|
|
|
|
|
## Enables getting access to backends' writers.
|
|
|
|
unstable-backend-writer = []
|
2024-02-02 08:02:16 +00:00
|
|
|
|
2023-08-27 09:00:35 +00:00
|
|
|
[package.metadata.docs.rs]
|
|
|
|
all-features = true
|
|
|
|
# see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html
|
|
|
|
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
|
|
|
rustdoc-args = ["--cfg", "docsrs"]
|
|
|
|
|
2024-05-22 06:12:31 +00:00
|
|
|
# Improve benchmark consistency
|
|
|
|
[profile.bench]
|
|
|
|
codegen-units = 1
|
|
|
|
lto = true
|
|
|
|
|
2023-11-21 22:23:21 +00:00
|
|
|
[lib]
|
|
|
|
bench = false
|
|
|
|
|
2023-08-05 14:47:06 +00:00
|
|
|
[[bench]]
|
2024-08-06 12:31:13 +00:00
|
|
|
name = "main"
|
2023-08-11 02:11:41 +00:00
|
|
|
harness = false
|
|
|
|
|
2024-08-05 05:26:56 +00:00
|
|
|
[[example]]
|
|
|
|
name = "async"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
2023-08-05 14:47:06 +00:00
|
|
|
|
2017-05-25 13:17:08 +00:00
|
|
|
[[example]]
|
2021-11-11 14:56:37 +00:00
|
|
|
name = "barchart"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2024-08-06 08:10:58 +00:00
|
|
|
[[example]]
|
|
|
|
name = "barchart-grouped"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "block"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "calendar"
|
|
|
|
required-features = ["crossterm", "widget-calendar"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2023-04-26 21:02:35 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "canvas"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2023-04-26 21:02:35 +00:00
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "chart"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2023-08-11 01:36:12 +00:00
|
|
|
[[example]]
|
|
|
|
name = "colors"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
# this example is a bit verbose, so we don't want to include it in the docs
|
|
|
|
doc-scrape-examples = false
|
|
|
|
|
2023-09-10 00:30:41 +00:00
|
|
|
[[example]]
|
|
|
|
name = "colors_rgb"
|
2024-07-16 11:35:54 +00:00
|
|
|
required-features = ["crossterm", "palette"]
|
2023-09-10 00:30:41 +00:00
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2024-05-25 21:03:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "constraint-explorer"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
|
|
|
[[example]]
|
|
|
|
name = "constraints"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = false
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "custom_widget"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
|
|
|
|
|
|
|
[[example]]
|
|
|
|
name = "demo"
|
|
|
|
# this runs for all of the terminal backends, so it can't be built using --all-features or scraped
|
|
|
|
doc-scrape-examples = false
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2023-09-21 08:47:23 +00:00
|
|
|
[[example]]
|
|
|
|
name = "demo2"
|
2024-07-16 11:35:54 +00:00
|
|
|
required-features = ["crossterm", "palette", "widget-calendar"]
|
2023-09-21 08:47:23 +00:00
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2023-09-28 02:57:04 +00:00
|
|
|
[[example]]
|
|
|
|
name = "docsrs"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = false
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "flex"
|
2021-11-11 14:56:37 +00:00
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2024-05-24 18:42:52 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "gauge"
|
2024-05-24 18:42:52 +00:00
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2023-06-01 13:22:18 +00:00
|
|
|
[[example]]
|
|
|
|
name = "hello_world"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "inline"
|
2021-11-11 14:56:37 +00:00
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2024-01-13 02:11:15 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "layout"
|
2024-01-13 09:51:41 +00:00
|
|
|
required-features = ["crossterm"]
|
2024-01-14 15:49:45 +00:00
|
|
|
doc-scrape-examples = true
|
2024-01-13 09:51:41 +00:00
|
|
|
|
2024-01-31 05:12:29 +00:00
|
|
|
[[example]]
|
2024-05-25 21:03:37 +00:00
|
|
|
name = "line_gauge"
|
2024-01-31 05:12:29 +00:00
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2024-06-17 22:11:02 +00:00
|
|
|
[[example]]
|
|
|
|
name = "hyperlink"
|
feat(terminal): Add ratatui::init() and restore() methods (#1289)
These are simple opinionated methods for creating a terminal that is
useful to use in most apps. The new init method creates a crossterm
backend writing to stdout, enables raw mode, enters the alternate
screen, and sets a panic handler that restores the terminal on panic.
A minimal hello world now looks a bit like:
```rust
use ratatui::{
crossterm::event::{self, Event},
text::Text,
Frame,
};
fn main() {
let mut terminal = ratatui::init();
loop {
terminal
.draw(|frame: &mut Frame| frame.render_widget(Text::raw("Hello World!"), frame.area()))
.expect("Failed to draw");
if matches!(event::read().expect("failed to read event"), Event::Key(_)) {
break;
}
}
ratatui::restore();
}
```
A type alias `DefaultTerminal` is added to represent this terminal
type and to simplify any cases where applications need to pass this
terminal around. It is equivalent to:
`Terminal<CrosstermBackend<Stdout>>`
We also added `ratatui::try_init()` and `try_restore()`, for situations
where you might want to handle initialization errors yourself instead
of letting the panic handler fire and cleanup. Simple Apps should
prefer the `init` and `restore` functions over these functions.
Corresponding functions to allow passing a `TerminalOptions` with
a `Viewport` (e.g. inline, fixed) are also available
(`init_with_options`,
and `try_init_with_options`).
The existing code to create a backend and terminal will remain and
is not deprecated by this approach. This just provides a simple one
line initialization using the common options.
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-08-22 12:16:35 +00:00
|
|
|
required-features = ["crossterm"]
|
2024-06-17 22:11:02 +00:00
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "list"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2024-05-19 23:18:45 +00:00
|
|
|
[[example]]
|
|
|
|
name = "minimal"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
# prefer to show the more featureful examples in the docs
|
|
|
|
doc-scrape-examples = false
|
|
|
|
|
2023-08-11 01:36:12 +00:00
|
|
|
[[example]]
|
|
|
|
name = "modifiers"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
# this example is a bit verbose, so we don't want to include it in the docs
|
|
|
|
doc-scrape-examples = false
|
|
|
|
|
2022-04-24 14:49:57 +00:00
|
|
|
[[example]]
|
|
|
|
name = "panic"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2022-04-24 14:49:57 +00:00
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "paragraph"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
|
|
|
[[example]]
|
|
|
|
name = "popup"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2023-12-14 02:25:21 +00:00
|
|
|
[[example]]
|
|
|
|
name = "ratatui-logo"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2023-06-17 19:25:43 +00:00
|
|
|
[[example]]
|
|
|
|
name = "scrollbar"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "sparkline"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
|
|
|
[[example]]
|
|
|
|
name = "table"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
|
|
|
[[example]]
|
|
|
|
name = "tabs"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2021-11-11 14:56:37 +00:00
|
|
|
|
2024-06-20 00:29:19 +00:00
|
|
|
[[example]]
|
|
|
|
name = "tracing"
|
|
|
|
required-features = ["crossterm"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
2021-11-11 14:56:37 +00:00
|
|
|
[[example]]
|
|
|
|
name = "user_input"
|
|
|
|
required-features = ["crossterm"]
|
2023-05-24 19:58:04 +00:00
|
|
|
doc-scrape-examples = true
|
2023-04-17 12:23:50 +00:00
|
|
|
|
2024-08-23 21:30:23 +00:00
|
|
|
[[example]]
|
|
|
|
name = "widget_impl"
|
|
|
|
required-features = ["crossterm", "unstable-widget-ref"]
|
|
|
|
doc-scrape-examples = true
|
|
|
|
|
feat(serde): support TableState, ListState, and ScrollbarState (#723)
TableState, ListState, and ScrollbarState can now be serialized and deserialized
using serde.
```rust
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
struct AppState {
list_state: ListState,
table_state: TableState,
scrollbar_state: ScrollbarState,
}
let app_state = AppState::default();
let serialized = serde_json::to_string(app_state);
let app_state = serde_json::from_str(serialized);
```
2024-01-13 00:13:35 +00:00
|
|
|
[[test]]
|
|
|
|
name = "state_serde"
|
|
|
|
required-features = ["serde"]
|