summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/utils/dom.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-12 07:26:43 -0500
committerGitHub <[email protected]>2026-03-12 12:26:43 +0000
commitd4107d51f163b74c96895b50d653828c698d937e (patch)
tree070ae9ad38ebd230d75517d485fc0c86f2263c6b /packages/app/src/utils/dom.ts
parentd8fbe0af0151c662008d8a2dbbb7c76ff5db88d4 (diff)
downloadopencode-d4107d51f163b74c96895b50d653828c698d937e.tar.gz
opencode-d4107d51f163b74c96895b50d653828c698d937e.zip
chore: cleanup (#17115)
Diffstat (limited to 'packages/app/src/utils/dom.ts')
-rw-r--r--packages/app/src/utils/dom.ts51
1 files changed, 0 insertions, 51 deletions
diff --git a/packages/app/src/utils/dom.ts b/packages/app/src/utils/dom.ts
deleted file mode 100644
index 4f3724c7c..000000000
--- a/packages/app/src/utils/dom.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-export function getCharacterOffsetInLine(lineElement: Element, targetNode: Node, offset: number): number {
- const r = document.createRange()
- r.selectNodeContents(lineElement)
- r.setEnd(targetNode, offset)
- return r.toString().length
-}
-
-export function getNodeOffsetInLine(lineElement: Element, charIndex: number): { node: Node; offset: number } | null {
- const walker = document.createTreeWalker(lineElement, NodeFilter.SHOW_TEXT, null)
- let remaining = Math.max(0, charIndex)
- let lastText: Node | null = null
- let lastLen = 0
- let node: Node | null
- while ((node = walker.nextNode())) {
- const len = node.textContent?.length || 0
- lastText = node
- lastLen = len
- if (remaining <= len) return { node, offset: remaining }
- remaining -= len
- }
- if (lastText) return { node: lastText, offset: lastLen }
- if (lineElement.firstChild) return { node: lineElement.firstChild, offset: 0 }
- return null
-}
-
-export function getSelectionInContainer(
- container: HTMLElement,
-): { sl: number; sch: number; el: number; ech: number } | null {
- const s = window.getSelection()
- if (!s || s.rangeCount === 0) return null
- const r = s.getRangeAt(0)
- const sc = r.startContainer
- const ec = r.endContainer
- const getLineElement = (n: Node) =>
- (n.nodeType === Node.TEXT_NODE ? (n.parentElement as Element) : (n as Element))?.closest(".line")
- const sle = getLineElement(sc)
- const ele = getLineElement(ec)
- if (!sle || !ele) return null
- if (!container.contains(sle as Node) || !container.contains(ele as Node)) return null
- const cc = container.querySelector("code") as HTMLElement | null
- if (!cc) return null
- const lines = Array.from(cc.querySelectorAll(".line"))
- const sli = lines.indexOf(sle as Element)
- const eli = lines.indexOf(ele as Element)
- if (sli === -1 || eli === -1) return null
- const sl = sli + 1
- const el = eli + 1
- const sch = getCharacterOffsetInLine(sle as Element, sc, r.startOffset)
- const ech = getCharacterOffsetInLine(ele as Element, ec, r.endOffset)
- return { sl, sch, el, ech }
-}