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
38 lines
933 B
TypeScript
38 lines
933 B
TypeScript
import { HorizontalRule } from "../../extensions/horizontal-rule"
|
|
import { Link } from "../../extensions/link"
|
|
import { Editor } from "@tiptap/react"
|
|
|
|
export const isTableGripSelected = (node: HTMLElement) => {
|
|
let container = node
|
|
|
|
while (container && !["TD", "TH"].includes(container.tagName)) {
|
|
container = container.parentElement!
|
|
}
|
|
|
|
const gripColumn =
|
|
container &&
|
|
container.querySelector &&
|
|
container.querySelector("a.grip-column.selected")
|
|
const gripRow =
|
|
container &&
|
|
container.querySelector &&
|
|
container.querySelector("a.grip-row.selected")
|
|
|
|
if (gripColumn || gripRow) {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
export const isCustomNodeSelected = (editor: Editor, node: HTMLElement) => {
|
|
const customNodes = [HorizontalRule.name, Link.name]
|
|
|
|
return (
|
|
customNodes.some((type) => editor.isActive(type)) ||
|
|
isTableGripSelected(node)
|
|
)
|
|
}
|
|
|
|
export default isCustomNodeSelected
|