4.7 KiB
4.7 KiB
Canvas Crate Migration Documentation
Files Moved from Client to Canvas
Core Canvas Files
| Canvas Location | Original Client Location | Purpose |
|---|---|---|
canvas/src/state.rs |
client/src/state/pages/canvas_state.rs |
Core CanvasState trait |
canvas/src/actions/edit.rs |
client/src/functions/modes/edit/form_e.rs |
Generic edit actions |
canvas/src/renderer.rs |
client/src/components/handlers/canvas.rs |
Canvas rendering logic |
canvas/src/modes/highlight.rs |
client/src/state/app/highlight.rs |
Highlight state types |
canvas/src/modes/manager.rs |
client/src/modes/handlers/mode_manager.rs |
Mode management |
Import Replacements Needed in Client
1. CanvasState Trait Usage
Replace these imports:
// OLD
use crate::state::pages::canvas_state::CanvasState;
// NEW
use canvas::CanvasState;
Files that need updating:
src/modes/canvas/edit.rs- Line 9src/modes/canvas/read_only.rs- Line 5src/ui/handlers/render.rs- Line 17src/state/pages/auth.rs- All CanvasState implssrc/state/pages/form.rs- CanvasState implsrc/state/pages/add_table.rs- CanvasState implsrc/state/pages/add_logic.rs- CanvasState impl
2. Edit Actions Usage
Replace these imports:
// OLD
use crate::functions::modes::edit::form_e::{execute_edit_action, execute_common_action};
// NEW
use canvas::{execute_edit_action, execute_common_action};
Files that need updating:
src/modes/canvas/edit.rs- Lines 3-5src/functions/modes/edit/auth_e.rssrc/functions/modes/edit/add_table_e.rssrc/functions/modes/edit/add_logic_e.rs
3. Canvas Rendering Usage
Replace these imports:
// OLD
use crate::components::handlers::canvas::render_canvas;
// NEW
use canvas::render_canvas;
Files that need updating:
- Any component that renders forms (login, register, add_table, add_logic, forms)
4. Mode System Usage
Replace these imports:
// OLD
use crate::modes::handlers::mode_manager::{AppMode, ModeManager};
use crate::state::app::highlight::HighlightState;
// NEW
use canvas::{AppMode, ModeManager, HighlightState};
Files that need updating:
src/modes/handlers/event.rs- Line 14src/ui/handlers/ui.rs- Mode derivation calls- All mode handling files
Theme Integration Required
The canvas crate expects a CanvasTheme trait. You need to implement this for your existing theme:
// In client/src/config/colors/themes.rs
use canvas::CanvasTheme;
use ratatui::style::Color;
impl CanvasTheme for Theme {
fn primary_fg(&self) -> Color { self.fg }
fn primary_bg(&self) -> Color { self.bg }
fn accent(&self) -> Color { self.accent }
fn warning(&self) -> Color { self.warning }
fn secondary(&self) -> Color { self.secondary }
fn highlight(&self) -> Color { self.highlight }
fn highlight_bg(&self) -> Color { self.highlight_bg }
}
Systematic Replacement Strategy
Phase 1: Fix Compilation (Do This First)
- Update
client/Cargo.tomlto depend on canvas - Add theme implementation
- Replace imports in core files
Phase 2: Replace Feature-Specific Usage
- Update auth components
- Update form components
- Update admin components
- Update mode handlers
Phase 3: Remove Old Files (After Everything Works)
- Delete
src/state/pages/canvas_state.rs - Delete
src/functions/modes/edit/form_e.rs - Delete
src/components/handlers/canvas.rs - Delete
src/state/app/highlight.rs - Delete
src/modes/handlers/mode_manager.rs
Files Safe to Delete After Migration
These can be removed once imports are updated:
client/src/state/pages/canvas_state.rsclient/src/functions/modes/edit/form_e.rsclient/src/components/handlers/canvas.rsclient/src/state/app/highlight.rsclient/src/modes/handlers/mode_manager.rs
Quick Start Commands
# 1. Add canvas dependency to client
cd client
echo 'canvas = { path = "../canvas" }' >> Cargo.toml
# 2. Test compilation
cargo check
# 3. Fix imports one file at a time
# Start with: src/config/colors/themes.rs (add CanvasTheme impl)
# Then: src/modes/canvas/edit.rs (replace form_e imports)
# Then: src/modes/canvas/read_only.rs (replace canvas_state import)
# 4. After all imports fixed, delete old files
rm src/state/pages/canvas_state.rs
rm src/functions/modes/edit/form_e.rs
rm src/components/handlers/canvas.rs
rm src/state/app/highlight.rs
rm src/modes/handlers/mode_manager.rs
Expected Compilation Errors
You'll get errors like:
cannot find type 'CanvasState' in this scopecannot find function 'execute_edit_action' in this scopecannot find type 'AppMode' in this scope
Fix these by replacing the imports as documented above.