import { $isAtNodeEnd } from '@lexical/selection' import type { ElementNode, RangeSelection, TextNode } from 'lexical' export function getSelectedNode( selection: RangeSelection, ): TextNode | ElementNode { const anchor = selection.anchor const focus = selection.focus const anchorNode = selection.anchor.getNode() const focusNode = selection.focus.getNode() if (anchorNode === focusNode) return anchorNode const isBackward = selection.isBackward() if (isBackward) return $isAtNodeEnd(focus) ? anchorNode : focusNode else return $isAtNodeEnd(anchor) ? anchorNode : focusNode } export const urlRegExp = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)/