import { isTextSelection } from "@tiptap/core"
import { Editor } from "@tiptap/react"

export const isTextSelected = ({ editor }: { editor: Editor }) => {
	const {
		state: {
			doc,
			selection,
			selection: { empty, from, to }
		}
	} = editor

	// Sometime check for `empty` is not enough.
	// Doubleclick an empty paragraph returns a node size of 2.
	// So we check also for an empty text size.
	const isEmptyTextBlock = !doc.textBetween(from, to).length && isTextSelection(selection)

	if (empty || isEmptyTextBlock || !editor.isEditable) {
		return false
	}

	return true
}

export default isTextSelected
