* refactor: move the text editor surface into beui as TextArea editors/text_block was a whole text editor: document layout, painting, input handling, find and replace, and a block-aware toolbar. Everything but the block-specific parts now lives in beui. unstyled::TextArea owns a text-editor-core Core through TextAreaState, which the caller holds and hands to the component, so a toolbar beside it runs commands on the same document without going through the view. It lays the document out with a gutter, wrapping, collapsible sections, markdown checkboxes and syntax highlighting, answers the keyboard, the pointer and touch selection handles, and paints through the new beui::Page display list. Callers name inline and block TextWidgets that reserve room in the text, put their own canvas items over the laid-out rects, and take a press on a block widget with on_widget_press. styled::TextArea adds the theme colours, the copy/cut/select-all menu and the find and replace bar. text_block keeps what is about blocks: the BlockDocument, embed resolution and the embedded child editors, the toolbar, presence, image paste and drop, and the hex view. Block widget rectangles now follow the layout rather than being fixed at the position they were first built at. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SYkjhk42auY2d9om5N7spV * demo: show the multiline editor in the beui catalog An Editor card puts a styled::TextArea beside two buttons that run markdown commands on the TextAreaState the card holds, which is how a toolbar drives the document it sits next to. It shares the main panel's flexible height with the rows card rather than taking a fixed slice out of it, so the panel still fits a short window, and sits above the cards whose content is taller than the window it is scrolled in. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SYkjhk42auY2d9om5N7spV --------- Co-authored-by: Claude <noreply@anthropic.com>
31 files changedLine totals unavailable