at main 83 lines 2.5 kB view raw
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;