]> BookStack Code Mirror - bookstack/blobdiff - resources/js/services/dom.ts
Comments: Started logic for content references
[bookstack] / resources / js / services / dom.ts
index c88827bac40a1788b89295152799b62e9871425f..779b4854773ba2bc1b47be2bca6bec658c2a05e1 100644 (file)
@@ -178,3 +178,24 @@ export function htmlToDom(html: string): HTMLElement {
 
     return firstChild;
 }
+
+export function normalizeNodeTextOffsetToParent(node: Node, offset: number, parentElement: HTMLElement): number {
+    if (!parentElement.contains(node)) {
+        throw new Error('ParentElement must be a prent of element');
+    }
+
+    let normalizedOffset = offset;
+    let currentNode: Node|null = node.nodeType === Node.TEXT_NODE ?
+        node : node.childNodes[offset];
+
+    while (currentNode !== parentElement && currentNode) {
+        if (currentNode.previousSibling) {
+            currentNode = currentNode.previousSibling;
+            normalizedOffset += (currentNode.textContent?.length || 0);
+        } else {
+            currentNode = currentNode.parentNode;
+        }
+    }
+
+    return normalizedOffset;
+}