Пробовал так:
const getSelectedText = () => {
const { getSelectedBlock, getSelectionStart, getSelectionEnd } = select('core/block-editor');
const block = getSelectedBlock();
if (!block || block.name !== 'core/paragraph') return '';
const content = block.attributes.content;
const start = getSelectionStart()?.offset || 0;
const end = getSelectionEnd()?.offset || content.length;
return content.slice(start, end);
};
Но, если есть HTML тэги в выделенном тексте, или до него, то работает не правильно, не тот кусок текста возвращает.