441b41c713
## Changes 1. **Fix early return bypassing cleanup** - Remove early return when beforeinput is canceled - Use shouldInsert flag to skip mutation but continue cleanup - Ensures waitFor and blurLastClickedElement always run 2. **Fix duplicate input events** - Contenteditable path now dispatches its own input events with inputType - Skip shared input dispatch for contenteditable - Prevents double-triggering framework listeners 3. **Fix event order (mutation before events)** - Clear content now dispatches beforeinput(inputType:deleteContent) first - Then performs the clear mutation - Then dispatches input event for the deletion - Proper event-mutation ordering 4. **Single-character keyboard events remain** - PR description clarified this is intentional - Multi-character input uses bulk insertion (not per-character typing) - Maintains semantic consistency 5. **Fix duplicate focusout event** - blur() already triggers native focusout - Removed manual focusout dispatch - Prevents double validation handlers All changes follow Copilot's suggested fixes.