Skip to main content

canvas_core/
lib.rs

1//! # Saorsa Canvas Core
2//!
3//! Core canvas logic for universal AI visual output.
4//! Compiles to WASM for true cross-platform portability.
5//!
6//! ## Architecture
7//!
8//! ```text
9//! ┌─────────────────────────────────────────────┐
10//! │              canvas-core.wasm               │
11//! ├─────────────────────────────────────────────┤
12//! │  Scene Graph     │  Input Handler           │
13//! │  - Elements      │  - Touch events          │
14//! │  - Transforms    │  - Gesture recognition   │
15//! │  - Hierarchy     │  - Voice command bridge  │
16//! ├─────────────────────────────────────────────┤
17//! │  State Machine   │  Layout Engine           │
18//! │  - Offline mode  │  - Responsive sizing     │
19//! │  - Sync queue    │  - Constraint solving    │
20//! └─────────────────────────────────────────────┘
21//! ```
22
23#![forbid(unsafe_code)]
24#![deny(missing_docs)]
25#![deny(clippy::all)]
26#![deny(clippy::pedantic)]
27#![allow(clippy::module_name_repetitions)]
28
29pub mod a2ui;
30pub mod element;
31pub mod error;
32pub mod event;
33pub mod fusion;
34pub mod offline;
35pub mod scene;
36pub mod schema;
37pub mod state;
38pub mod store;
39
40#[cfg(feature = "wasm")]
41pub mod wasm;
42
43pub use a2ui::{A2UINode, A2UIStyle, A2UITree, ConversionResult, Layout};
44pub use element::{
45    CropRect, Element, ElementId, ElementKind, ImageFormat, MediaConfig, MediaStats, QualityPreset,
46    Resolution, Transform,
47};
48pub use error::{CanvasError, CanvasResult};
49pub use event::{InputEvent, TouchEvent, TouchPhase, TouchPoint, VoiceEvent};
50pub use fusion::{FusedIntent, FusionConfig, FusionResult, InputFusion, VoiceOnlyIntent};
51pub use offline::{ConflictResolution, ConflictStrategy, OfflineQueue, Operation, SyncResult};
52pub use scene::Scene;
53pub use schema::{ElementDocument, SceneDocument, ViewportDocument};
54pub use state::{CanvasState, ConnectionStatus};
55pub use store::{SceneStore, StoreError};
56
57/// Canvas core version
58pub const VERSION: &str = env!("CARGO_PKG_VERSION");