refactor(wysiwyg): Clean up code and ensure drag-drop works with programmatic rendering
- Update drag handler to work without requestUpdate calls - Remove duplicate modal methods (using WysiwygModalManager) - Clean up unused imports and methods - Ensure all DOM updates are programmatic - Add comprehensive test files for all features - Follow separation of concerns principles
This commit is contained in:
@@ -466,4 +466,51 @@ Fixed persistent focus loss issue by implementing fully programmatic rendering:
|
||||
}
|
||||
```
|
||||
|
||||
This approach completely eliminates focus loss by taking full control of the DOM and preventing any framework-induced re-renders during editing.
|
||||
This approach completely eliminates focus loss by taking full control of the DOM and preventing any framework-induced re-renders during editing.
|
||||
|
||||
### Code Refactoring and Cleanup (2025-06-24 - Part 11)
|
||||
|
||||
Completed comprehensive refactoring to ensure clean, maintainable code with separated concerns:
|
||||
|
||||
#### Refactoring Changes:
|
||||
|
||||
1. **Drag and Drop Handler Cleanup**:
|
||||
- Removed all `requestUpdate()` calls from drag handler
|
||||
- Handler now only updates internal state
|
||||
- Parent component handles DOM updates programmatically
|
||||
- Simplified drag state management
|
||||
|
||||
2. **Unused Code Removal**:
|
||||
- Removed duplicate `showBlockSettingsModal` method (using WysiwygModalManager)
|
||||
- Removed duplicate `showLanguageSelectionModal` method
|
||||
- Removed unused `renderBlock` method
|
||||
- Cleaned up unused imports (WysiwygBlocks, ISlashMenuItem)
|
||||
|
||||
3. **Import Cleanup**:
|
||||
- Removed unused type imports
|
||||
- Organized imports logically
|
||||
- Kept only necessary dependencies
|
||||
|
||||
4. **Separated Concerns**:
|
||||
- Modal management in WysiwygModalManager
|
||||
- Block operations in WysiwygBlockOperations
|
||||
- Input handling in WysiwygInputHandler
|
||||
- Keyboard handling in WysiwygKeyboardHandler
|
||||
- Drag/drop in WysiwygDragDropHandler
|
||||
- Each class has a single responsibility
|
||||
|
||||
5. **Programmatic DOM Management**:
|
||||
- All DOM updates happen through explicit methods
|
||||
- No reactive re-renders during user interaction
|
||||
- Manual class management for drag states
|
||||
- Direct DOM manipulation for performance
|
||||
|
||||
6. **Test Files Created**:
|
||||
- `test-focus-fix.html` - Verifies focus management
|
||||
- `test-drag-drop.html` - Tests drag and drop functionality
|
||||
- `test-comprehensive.html` - Tests all features together
|
||||
|
||||
The refactoring follows the principles in instructions.md:
|
||||
- Uses static templates with manual DOM operations
|
||||
- Maintains separated concerns in different classes
|
||||
- Results in clean, concise, and manageable code
|
Reference in New Issue
Block a user