mirror of
https://github.com/linsa-io/linsa.git
synced 2026-01-12 12:20:23 +01:00
* wip * wip page * chore: style * wip pages * wip pages * chore: toggle * chore: link * feat: topic search * chore: page section * refactor: apply tailwind class ordering * fix: handle loggedIn user for guest route * feat: folder & image schema * chore: move utils to shared * refactor: tailwind class ordering * feat: img ext for editor * refactor: remove qa * fix: tanstack start * fix: wrong import * chore: use toast * chore: schema
27 lines
642 B
TypeScript
27 lines
642 B
TypeScript
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
|