mirror of
https://github.com/excalidraw/excalidraw.git
synced 2026-10-19 16:15:56 +00:00
* fix(editor): handle the save-as shortcut while editing text Cmd/Ctrl+Shift+S did nothing while a text editor was open — the editor stayed open and no save happened. Plain Cmd/Ctrl+S worked. The wysiwyg keydown handler only branches on `actionSaveToActiveFile`, whose keyTest requires `!event.shiftKey`, so the shift variant matched nothing and was swallowed. This adds the sibling branch for `actionSaveFileToDisk`, mirroring what the plain shortcut already does: commit the text, then run the action. Complements #9281, which fixed the plain shortcut in the same handler. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(editor): assert the save-as shortcut actually dispatches the save Review feedback: the regression test only asserted that editing ended, which `handleSubmit()` satisfies on its own — the test still passed with the `executeAction(actionSaveFileToDisk)` call deleted, so half the fix was unpinned. Now spies on `saveAsJSON`, which is what the action ultimately reaches, and captures `editingTextElement` at the moment it runs so the ordering (commit, then save) is pinned too. Verified: removing the dispatch now fails with `expected "saveAsJSON" to be called 1 times, but got 0 times`. Also adds a negative case — closing the editor with Escape must not save — so the spy proves the save is tied to the shortcut rather than to teardown. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(editor): dispatch text-editor save shortcuts as keyboard actions, trim tests - pass the "keyboard" source for both save shortcuts in the wysiwyg keydown (was the default "api", which skipped the interaction gate and mistracked) - drop the explanatory comment on the save-as branch - fold the three save tests into one it.each in the existing container-unbound suite, covering both Cmd/Ctrl+S and Cmd/Ctrl+Shift+S and pinning that the text is committed before saveAsJSON runs Claude Opus 5.5 (1M context), xhigh --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>