Files
upstream-tiptap/packages/extension-drag-handle/src/helpers/getOuterNode.ts
upstream-mirror 083a46e93b
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
snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:11:02 +05:00

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
}