| @@ -1,17 +1,11 @@ | ||
| 1 | -// Lets non-React callers (hover-bar's click rule, Agent's chat submit) | |
| 2 | -// trigger the QE canvas's save. Without this, every implicit-close gesture | |
| 3 | -// — cross-block click, click-outside, Ask AI pill, agent chat submit — | |
| 4 | -// silently discards the user's in-flight edits. | |
| 1 | +// Lets hover-bar's click rule (plain DOM, not React) trigger the QE canvas's | |
| 2 | +// save, so a click outside an open canvas doesn't silently discard the user's | |
| 3 | +// in-flight edits. | |
| 5 | 4 | // |
| 6 | 5 | // BlockTextEditor registers its `handleSave` on mount. The bridge stays a |
| 7 | 6 | // no-op when nothing is registered (no QE canvas open) so callers can |
| 8 | 7 | // fire-and-forget. |
| 9 | -// | |
| 10 | -// Cross-block click passes `alsoClear: false` so handleSave skips its | |
| 11 | -// final `clearSelected()` — the new click is already calling | |
| 12 | -// `setSelected(B)` synchronously after, and we don't want the async save | |
| 13 | -// completion to overwrite B with null. | |
| 14 | 8 | |
| 15 | 9 | let saver = null; |
| 16 | 10 | |
| 17 | 11 | export const registerSaver = (fn) => { |
| @@ -23,16 +17,8 @@ | ||
| 23 | 17 | }; |
| 24 | 18 | |
| 25 | 19 | export const hasSaver = () => !!saver; |
| 26 | 20 | |
| 27 | -export const saveSelected = (options = {}) => { | |
| 21 | +export const saveSelected = () => { | |
| 28 | 22 | if (!saver) return Promise.resolve(); |
| 29 | - return Promise.resolve(saver(options)); | |
| 23 | + return Promise.resolve(saver()); | |
| 30 | 24 | }; |
| 31 | - | |
| 32 | -export const AGENT_SUBMIT_EVENT = 'extendify-quick-edit:agent-submit'; | |
| 33 | - | |
| 34 | -if (typeof window !== 'undefined') { | |
| 35 | - window.addEventListener(AGENT_SUBMIT_EVENT, () => { | |
| 36 | - if (saver) saver({ alsoClear: true }); | |
| 37 | - }); | |
| 38 | -} | |