Skip to main content

clankerdiff_ratatui/
lib.rs

1//! An embeddable, repository-agnostic Ratatui diff review widget.
2//! Hosts provide [`clankerdiff_core::DiffDocument`] snapshots and route emitted
3//! [`clankerdiff_core::DiffReviewEvent`] values. This crate never executes Git.
4
5mod annotation;
6mod annotation_layout;
7mod color;
8mod commands;
9#[cfg(feature = "crossterm-backend")]
10mod crossterm_adapter;
11pub mod diff;
12mod diff_commands;
13mod diff_preview;
14mod drawer;
15mod input;
16mod interaction;
17mod keybindings;
18pub mod markdown;
19mod markdown_layout;
20mod markdown_review;
21mod options;
22mod patch_layout;
23mod render;
24mod state;
25mod style;
26pub mod syntax;
27#[cfg(feature = "test-support")]
28pub mod testing;
29mod text;
30pub mod theme;
31mod theme_picker;
32pub mod ui;
33mod widgets;
34
35pub use clankerdiff_core::ReviewCapabilities;
36pub use clankerdiff_markdown::{MarkdownDocument, MarkdownReviewError};
37pub use clankerdiff_theme::ReviewTheme;
38pub use color::{composite_color, layered_style, page_color};
39pub use commands::{DiffReviewCommand, MarkdownReviewCommand, ReviewCommand};
40pub use diff_preview::{
41    DiffPreviewOptions, DiffPreviewState, DiffPreviewStats, render_diff_preview,
42};
43#[cfg(feature = "crossterm-backend")]
44pub use input::handle_crossterm_event;
45pub use interaction::{
46    InputOutcome, InteractionPhase, KeyCode, KeyCode as Key, KeyEvent, KeyModifiers, MouseButton,
47    MouseEvent, MouseEventKind, ReviewInput,
48};
49pub use keybindings::{
50    BindingScope, KeyBinding, default_diff_keybindings, default_markdown_keybindings,
51};
52pub use markdown::{
53    MarkdownCommitError, MarkdownRenderStats, MarkdownRenderer, MarkdownStreamError,
54    StreamingMarkdownPolicy, StreamingMarkdownState,
55};
56pub use markdown_layout::{
57    MarkdownLayout, MarkdownLayoutOptions, MarkdownPresentation, MarkdownRow, MarkdownRowUpdate,
58    MarkdownRows,
59};
60#[cfg(feature = "crossterm-backend")]
61pub use markdown_review::handle_crossterm_event as handle_markdown_crossterm_event;
62pub use markdown_review::{
63    MarkdownFocusPane, MarkdownReview, MarkdownReviewBuilder, MarkdownReviewEvent,
64    MarkdownReviewState, MarkdownReviewWidget,
65};
66pub use options::{NavigationPane, ReviewOptions};
67pub use render::DiffReviewWidget;
68pub use state::{DiffReviewState, DiffReviewStatus, FocusPane, RepositoryOperationStatus};
69pub use style::{RatatuiTheme, RatatuiUiTheme};
70pub use syntax::highlighted_line;
71pub use theme_picker::ThemeChoice;
72
73/// Review event emitted to the embedding host.
74pub type DiffReviewEvent = clankerdiff_core::DiffReviewEvent;