Add Google Docs clone, Bear app, and golden test infrastructure#1
Add Google Docs clone, Bear app, and golden test infrastructure#1daverad wants to merge 588 commits into
Conversation
… markdown parsing (Resolves Flutter-Bounty-Hunters#2074) (Flutter-Bounty-Hunters#2078)
…pt and subscript, and paragraph indentation (Resolves Flutter-Bounty-Hunters#2107) (Flutter-Bounty-Hunters#2111)
…l Deltas into a MutableDocument (Resolves Flutter-Bounty-Hunters#2105) (Flutter-Bounty-Hunters#2108)
… what they clear (Resolves Flutter-Bounty-Hunters#2094) (Flutter-Bounty-Hunters#2125)
…er from Editor for convenience. (Resolves Flutter-Bounty-Hunters#2157) (Flutter-Bounty-Hunters#2161)
…ly so other projects can use it. (Flutter-Bounty-Hunters#2208)
…ste even when binary data is on the clipboard (Flutter-Bounty-Hunters#2903)
…mplement Android native paste in the example app (Resolves Flutter-Bounty-Hunters#2905) (Flutter-Bounty-Hunters#2906)
…e triggers at one time (Resolves Flutter-Bounty-Hunters#2911) (Flutter-Bounty-Hunters#2912)
…tter-Bounty-Hunters#2926)(Resolves Flutter-Bounty-Hunters#2927)(Resolves Flutter-Bounty-Hunters#2928)(Resolves Flutter-Bounty-Hunters#2929) (Flutter-Bounty-Hunters#2930) - Let apps override paste behavior on a per format basis (Resolves Flutter-Bounty-Hunters#2927) - Ignore <style> and <script> tags when parsing pasted HTML (Resolves Flutter-Bounty-Hunters#2928) - Use standard Super Editor paste parsing for plain text clipboard pasting (Resolves Flutter-Bounty-Hunters#2929) - Handle URL clipboard data type (Resolves Flutter-Bounty-Hunters#2926)
…rEditorIosControlsControllerWithNativePaste (Flutter-Bounty-Hunters#2933)
…SuperEditor is replaced by another SuperEditor for the same role (Resolves Flutter-Bounty-Hunters#2962) (Flutter-Bounty-Hunters#2963)
…ne SuperEditor instance to a replacement SuperEditor instance (Resolve Flutter-Bounty-Hunters#2965) (Flutter-Bounty-Hunters#2967)
… at start of text, cause is not clearing composing region (Resolves Flutter-Bounty-Hunters#2970) (Flutter-Bounty-Hunters#2971)
…perEditor (Resolves Flutter-Bounty-Hunters#2969) (Flutter-Bounty-Hunters#2973) Co-authored-by: Piotr Moskała <moskala.p@gmail.com>
…ft SwiftKey keyboard (Resolves Flutter-Bounty-Hunters#2975) (Flutter-Bounty-Hunters#2976)
… sends deltas after newline key, fix GBoard removes trailing space in empty paragraph when inserting newline (Resolves Flutter-Bounty-Hunters#2979)(Resolves Flutter-Bounty-Hunters#2981) (Flutter-Bounty-Hunters#2982) * Also introduces `SuperEditorLog` to explicitly report important errors and exceptions.
…efore existing text (Resolves Flutter-Bounty-Hunters#2984) (Flutter-Bounty-Hunters#2985)
…rable for when to continue existing list (Resolves Flutter-Bounty-Hunters#2987) (Flutter-Bounty-Hunters#2988)
…er non-software keyboard situations (Resolves Flutter-Bounty-Hunters#2994) (Flutter-Bounty-Hunters#2996)
Track scribble state via insertTextPlaceholder/removeTextPlaceholder, report character selection rects to IME for handwriting targeting, disable scrolling during scribble to prevent gesture theft, and reject editor pan gestures during active scribble sessions. Ported from daverad@6191fcd
When the user holds the iOS spacebar to drag the caret (floating cursor), the per-frame _reportSelectionRectsToIme() call from the Scribble/S-Pen support pushes a fresh set of character bounding rects to iOS through setSelectionRects on every frame. That interferes with iOS's floating cursor rendering: the caret still lands at the correct final position but is invisible during the drag. Skipping the per-frame push while floatingCursorController.isActive is true keeps the rects stable for the duration of the drag, so iOS can render the floating cursor normally. Scribble is never active simultaneously with the floating cursor, so stylus targeting is unaffected.
|
Important Review skippedToo many files! This PR contains 226 files, which is 76 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (74)
📒 Files selected for processing (226)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
This PR adds three new Flutter example applications and introduces a golden test runner infrastructure. The main focus is on expanding the super_editor examples with fully-featured document editing applications.
Key Changes
New Example Applications
Google Docs Clone (
super_clones/google_docs/): A comprehensive document editor example featuring:Bear App Clone (
super_clones/bear/): A note-taking application example with:iOS Messenger Clone (
super_clones/ios_messenger/): A messaging application example with:Golden Test Infrastructure
Core Library Updates
AttributedTextconstructor supporting positional placeholderstoPlainText()method for text extractionDocumentation
CI/CD Updates
build_clones.yamlworkflow for building example applicationspr_validation.yamlto include golden test execution.dockerignorefor Docker-based testingConfiguration
.gitignoreto exclude.vscodedirectoryhttps://claude.ai/code/session_012fZZWg49y9oFwqk1NEe5MC