Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped
35 lines
677 B
TypeScript
35 lines
677 B
TypeScript
import type { Node as PMNode } from '@tiptap/pm/model'
|
|
|
|
export const getOuterNodePos = (doc: PMNode, pos: number): number => {
|
|
const resolvedPos = doc.resolve(pos)
|
|
const { depth } = resolvedPos
|
|
|
|
if (depth === 0) {
|
|
return pos
|
|
}
|
|
|
|
const a = resolvedPos.pos - resolvedPos.parentOffset
|
|
|
|
return a - 1
|
|
}
|
|
|
|
export const getOuterNode = (doc: PMNode, pos: number): PMNode | null => {
|
|
const node = doc.nodeAt(pos)
|
|
const resolvedPos = doc.resolve(pos)
|
|
|
|
let { depth } = resolvedPos
|
|
let parent = node
|
|
|
|
while (depth > 0) {
|
|
const currentNode = resolvedPos.node(depth)
|
|
|
|
depth -= 1
|
|
|
|
if (depth === 0) {
|
|
parent = currentNode
|
|
}
|
|
}
|
|
|
|
return parent
|
|
}
|