mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 12:28:42 +00:00
feat(editor): replace flat layout cache with tree in turbo renderer (#11319)
### TL;DR Refactored the BlockSuite turbo renderer to use a hierarchical tree structure for layouts instead of a flat list, improving rendering accuracy and performance. ### What changed? - Redesigned the layout system to use a tree structure (`ViewportLayoutTree`) that better represents the document hierarchy - Added `blockId` to all layout objects for better tracking and debugging - Updated the layout query mechanism to work with models directly instead of components - Enhanced error handling with more descriptive warnings and error messages - Improved the painting process to traverse the layout tree recursively - Fixed viewport coordinate calculations for more accurate rendering - Updated the worker communication to support the new tree-based layout structure ### Why make this change? The previous flat layout structure didn't properly represent the hierarchical nature of documents, leading to rendering issues with nested blocks. This tree-based approach: 1. Better represents the actual document structure 2. Improves rendering accuracy for nested elements 3. Makes debugging easier with more consistent block identification 4. Provides a more robust foundation for future rendering optimizations 5. Reduces the likelihood of rendering artifacts when scrolling or zooming
This commit is contained in:
@@ -7,7 +7,7 @@ import {
|
||||
} from '@blocksuite/affine/gfx/turbo-renderer';
|
||||
|
||||
function createPainterWorker() {
|
||||
const worker = new Worker(getWorkerUrl('turbo-painter-entry.worker.js'));
|
||||
const worker = new Worker(getWorkerUrl('turbo-painter.worker.js'));
|
||||
return worker;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user