Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/text-editor/src/helpers/ |
Upload File : |
import { $getSelection, $getNodeByKey, $isNodeSelection, $createNodeSelection, $setSelection, type NodeKey, type NodeSelection, } from 'ui.lexical.core'; import { type TextEditor } from '../text-editor'; function isNodeSelected(editor: TextEditor, key: NodeKey): boolean { return editor.getEditorState().read(() => { const node = $getNodeByKey(key); if (node === null) { return false; } return node.isSelected(); }); } export function createNodeSelection(editor: TextEditor, key: NodeKey) { let isSelected = false; const subscribers = new Set(); const onSelect = (fn: Function) => { subscribers.add(fn); }; const unregisterListener = editor.registerUpdateListener(() => { isSelected = isNodeSelected(editor, key); for (const subscribeFunc of subscribers) { subscribeFunc(isSelected); } }); const setSelected = (selected: boolean) => { editor.update(() => { let selection: NodeSelection = $getSelection(); if (!$isNodeSelection(selection)) { selection = $createNodeSelection(); $setSelection(selection); } if (selected) { selection.add(key); } else { selection.delete(key); } }); }; const clearSelection = () => { editor.update(() => { const selection: NodeSelection = $getSelection(); if ($isNodeSelection(selection)) { selection.clear(); } }); }; return { isSelected: () => { return isSelected; }, dispose: () => { unregisterListener(); }, onSelect, setSelected, clearSelection, }; }