HEX
Server: LiteSpeed
System: Linux ragasnapis.serveriai.lt 5.14.0-687.26.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jul 14 16:32:02 EDT 2026 x86_64
User: odxqitalt (1170)
PHP: 8.3.19
Disabled: link, symlink, exec, passthru, proc_close, proc_get_status, proc_open, shell_exec, system, popen, pclose, dl, show_source, highlight_file, pcntl_exec, ini_restore, ini_alter, chgrp
Upload Files
File: /home/odxqitalt/public_html/wp-content/plugins/extendify/src/QuickEdit/lib/save-bridge.js
// Lets non-React callers (hover-bar's click rule, Agent's chat submit)
// trigger the QE canvas's save. Without this, every implicit-close gesture
// — cross-block click, click-outside, Ask AI pill, agent chat submit —
// silently discards the user's in-flight edits.
//
// BlockTextEditor registers its `handleSave` on mount. The bridge stays a
// no-op when nothing is registered (no QE canvas open) so callers can
// fire-and-forget.
//
// Cross-block click passes `alsoClear: false` so handleSave skips its
// final `clearSelected()` — the new click is already calling
// `setSelected(B)` synchronously after, and we don't want the async save
// completion to overwrite B with null.

let saver = null;

export const registerSaver = (fn) => {
	saver = fn;
};

export const unregisterSaver = (fn) => {
	if (saver === fn) saver = null;
};

export const hasSaver = () => !!saver;

export const saveSelected = (options = {}) => {
	if (!saver) return Promise.resolve();
	return Promise.resolve(saver(options));
};

export const AGENT_SUBMIT_EVENT = 'extendify-quick-edit:agent-submit';

if (typeof window !== 'undefined') {
	window.addEventListener(AGENT_SUBMIT_EVENT, () => {
		if (saver) saver({ alsoClear: true });
	});
}