atproto blogging
1//! Markdown editor component with Obsidian-style formatting visibility.
2//!
3//! This module implements a WYSIWYG-like markdown editor where formatting
4//! characters are hidden contextually based on cursor position, while still
5//! editing plain markdown text under the hood.
6
7mod actions;
8mod collab;
9mod component;
10mod document;
11mod dom_sync;
12mod image_upload;
13mod log_buffer;
14mod publish;
15mod remote_cursors;
16mod report;
17mod storage;
18mod sync;
19mod toolbar;
20
21#[cfg(test)]
22mod tests;
23
24// Main component
25pub use component::MarkdownEditor;
26
27// Document types
28#[allow(unused_imports)]
29pub use document::{
30 Affinity, CompositionState, CursorState, LoadedDocState, Selection, SignalEditorDocument,
31};
32
33// Formatting - re-export from core
34#[allow(unused_imports)]
35pub use weaver_editor_core::{FormatAction, apply_formatting};
36
37// Rendering - re-export core types
38#[allow(unused_imports)]
39pub use weaver_editor_core::{
40 EditorImageResolver, EditorRope, EditorWriter, EmbedContentProvider, ImageResolver,
41 OffsetMapping, ParagraphRender, RenderCache, RenderResult, SegmentedWriter, SyntaxSpanInfo,
42 SyntaxType, TextBuffer, WriterResult, find_mapping_for_byte, render_paragraphs_incremental,
43};
44
45// Storage
46#[allow(unused_imports)]
47pub use storage::{
48 DRAFT_KEY_PREFIX, EditorSnapshot, clear_all_drafts, delete_draft, delete_draft_from_pds,
49 list_drafts, load_from_storage, load_snapshot_from_storage, save_to_storage,
50};
51
52// Sync
53#[allow(unused_imports)]
54pub use sync::{
55 PdsEditState, RemoteDraft, SyncState, SyncStatus, list_drafts_from_pds,
56 load_and_merge_document, load_edit_state_from_pds, sync_to_pds,
57};
58
59// UI components
60pub use image_upload::{ImageUploadButton, UploadedImage};
61pub use publish::PublishButton;
62pub use report::ReportButton;
63#[allow(unused_imports)]
64pub use toolbar::EditorToolbar;
65
66// Visibility
67#[allow(unused_imports)]
68pub use weaver_editor_core::VisibilityState;
69
70// Logging
71#[allow(unused_imports)]
72pub use log_buffer::LogCaptureLayer;
73
74// Worker types from weaver-editor-crdt
75#[cfg(all(target_family = "wasm", target_os = "unknown"))]
76pub use weaver_editor_crdt::{EditorReactor, WorkerInput, WorkerOutput};
77// Embed worker from weaver-embed-worker
78#[cfg(all(target_family = "wasm", target_os = "unknown"))]
79pub use weaver_embed_worker::{EmbedWorker, EmbedWorkerInput, EmbedWorkerOutput};
80
81// Collab coordinator
82#[cfg(all(target_arch = "wasm32", target_os = "unknown"))]
83pub use collab::CollabCoordinator;