File: //home/ksonpoau/www/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);
};