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/global-escape.js
import { useEditModeStore } from '../state/edit-mode';
import { useQuickEditStore } from '../state/store';
import { decideEscapeAction } from './escape-rule';

const CANCEL_EVENT = 'extendify-agent:cancel-workflow';

const onKey = (e) => {
	if (e.key !== 'Escape') return;
	const editModeOn = useEditModeStore.getState().on;
	if (!editModeOn) return;

	const {
		agentBlock,
		selected,
		committedSelection,
		setAgentBlock,
		clearSelected,
		setCommittedSelection,
	} = useQuickEditStore.getState();
	const sameBlock =
		selected?.blockId != null &&
		agentBlock?.id != null &&
		String(selected.blockId) === String(agentBlock.id);
	const { action } = decideEscapeAction({
		editModeOn: true,
		hasAgentBlock: !!agentBlock,
		hasQuickEditSelection: !!selected,
		hasCommittedSelection: !!committedSelection,
		sameBlock,
	});

	if (action === 'clear-selection-and-agent-block') {
		window.dispatchEvent(new CustomEvent(CANCEL_EVENT));
		setAgentBlock(null);
		clearSelected();
		e.preventDefault();
		e.stopPropagation();
		return;
	}
	if (action === 'clear-agent-block') {
		window.dispatchEvent(new CustomEvent(CANCEL_EVENT));
		setAgentBlock(null);
		e.preventDefault();
		e.stopPropagation();
		return;
	}
	if (action === 'clear-selection') {
		clearSelected();
		e.preventDefault();
		e.stopPropagation();
		return;
	}
	if (action === 'clear-committed-selection') {
		setCommittedSelection(null);
		e.preventDefault();
		e.stopPropagation();
		return;
	}
	// noop: stop propagation so the old window-level fallback (which
	// would have toggled edit mode off) stays quiet. preventDefault is
	// intentionally not called — there's nothing to suppress.
	e.stopPropagation();
};

export const wireGlobalEscape = () => {
	document.addEventListener('keydown', onKey);
	return () => document.removeEventListener('keydown', onKey);
};