78 lines
2.3 KiB
Rust
78 lines
2.3 KiB
Rust
// src/lib.rs
|
|
|
|
pub mod canvas;
|
|
pub mod editor;
|
|
pub mod data_provider;
|
|
|
|
#[cfg(feature = "suggestions")]
|
|
pub mod suggestions;
|
|
|
|
#[cfg(feature = "validation")]
|
|
pub mod validation;
|
|
|
|
#[cfg(feature = "textarea")]
|
|
pub mod textarea;
|
|
|
|
#[cfg(feature = "computed")]
|
|
pub mod computed;
|
|
|
|
#[cfg(feature = "keymap")]
|
|
pub mod keymap;
|
|
|
|
#[cfg(feature = "cursor-style")]
|
|
pub use canvas::CursorManager;
|
|
|
|
// ===================================================================
|
|
// NEW API: Library-owned state pattern
|
|
// ===================================================================
|
|
|
|
// Main API exports
|
|
pub use editor::FormEditor;
|
|
pub use data_provider::DataProvider;
|
|
#[cfg(feature = "suggestions")]
|
|
pub use data_provider::{SuggestionsProvider, SuggestionItem};
|
|
|
|
// UI state (read-only access for users)
|
|
pub use canvas::state::EditorState;
|
|
pub use canvas::modes::AppMode;
|
|
|
|
// Actions and results (for users who want to handle actions manually)
|
|
pub use canvas::actions::{CanvasAction, ActionResult};
|
|
|
|
// Validation exports (only when validation feature is enabled)
|
|
#[cfg(feature = "validation")]
|
|
pub use validation::{
|
|
ValidationConfig, ValidationResult, ValidationError,
|
|
CharacterLimits, ValidationConfigBuilder, ValidationState,
|
|
ValidationSummary, PatternFilters, PositionFilter, PositionRange, CharacterFilter,
|
|
DisplayMask, // Simple display mask instead of complex ReservedCharacters
|
|
// Feature 4: custom formatting exports
|
|
CustomFormatter, FormattingResult, PositionMapper, DefaultPositionMapper,
|
|
};
|
|
|
|
// Computed exports (only when computed feature is enabled)
|
|
#[cfg(feature = "computed")]
|
|
pub use computed::{ComputedProvider, ComputedContext, ComputedState};
|
|
|
|
// Theming and GUI
|
|
#[cfg(feature = "gui")]
|
|
pub use canvas::theme::{CanvasTheme, DefaultCanvasTheme};
|
|
|
|
#[cfg(feature = "gui")]
|
|
pub use canvas::gui::{render_canvas, render_canvas_default};
|
|
|
|
#[cfg(feature = "gui")]
|
|
pub use canvas::gui::render_canvas_with_options;
|
|
|
|
#[cfg(feature = "gui")]
|
|
pub use canvas::gui::{CanvasDisplayOptions, OverflowMode};
|
|
|
|
#[cfg(all(feature = "gui", feature = "suggestions"))]
|
|
pub use suggestions::gui::render_suggestions_dropdown;
|
|
|
|
#[cfg(feature = "keymap")]
|
|
pub use keymap::{CanvasKeyMap, KeyEventOutcome};
|
|
|
|
#[cfg(feature = "textarea")]
|
|
pub use textarea::{TextArea, TextAreaProvider, TextAreaState, TextAreaEditor};
|