mirror of
https://github.com/jhbruhn/respira.git
synced 2026-01-27 10:23:41 +00:00
Unified three separate layer implementations into single PatternLayer component: **PatternLayer.tsx (156 lines)** - Handles both interactive (original) and locked (uploaded) pattern rendering - Props-driven configuration for dragging, rotation, transformer - Includes CurrentPosition indicator for uploaded patterns - Memoized stitches and center calculations for performance - Single source of truth for pattern rendering logic **Benefits:** - Eliminated ~140 lines of duplicated layer code - Reduced PatternCanvas from 388 to 271 lines (-117 lines, -30%) - Consistent rendering behavior across pattern states - Easier to maintain and test pattern rendering - Cleaner component composition in PatternCanvas **Removed from PatternCanvas:** - Original pattern layer implementation (74 lines) - Uploaded pattern layer implementation (33 lines) - Current position layer implementation (26 lines) - Duplicate Group, Transformer, Stitches setup - Redundant center calculations and stitch conversions **Complete refactoring impact (All Phases):** - Original: 786 lines in single monolithic file - After Phase 4: 271 lines main + hooks + components - **Total reduction: -515 lines (-65%)** File structure now: - PatternCanvas.tsx: 271 lines (orchestration) - PatternLayer.tsx: 156 lines (rendering) - useCanvasViewport.ts: 166 lines (viewport) - usePatternTransform.ts: 179 lines (transform) - 3 display components + 3 utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| PatternCanvas | ||
| ui | ||
| AppHeader.tsx | ||
| BluetoothDevicePicker.tsx | ||
| ConfirmDialog.tsx | ||
| ConnectionPrompt.tsx | ||
| ErrorPopover.tsx | ||
| FileUpload.tsx | ||
| KonvaComponents.tsx | ||
| LeftSidebar.tsx | ||
| PatternCanvas.tsx | ||
| PatternCanvasPlaceholder.tsx | ||
| PatternInfo.tsx | ||
| PatternSummaryCard.tsx | ||
| ProgressMonitor.tsx | ||
| SkeletonLoader.tsx | ||
| WorkflowStepper.tsx | ||