(cm, node, offset)
| 1892 | function badPos(pos, bad) { if (bad) pos.bad = true; return pos; } |
| 1893 | |
| 1894 | function domToPos(cm, node, offset) { |
| 1895 | var lineNode; |
| 1896 | if (node == cm.display.lineDiv) { |
| 1897 | lineNode = cm.display.lineDiv.childNodes[offset]; |
| 1898 | if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); |
| 1899 | node = null; offset = 0; |
| 1900 | } else { |
| 1901 | for (lineNode = node;; lineNode = lineNode.parentNode) { |
| 1902 | if (!lineNode || lineNode == cm.display.lineDiv) return null; |
| 1903 | if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break; |
| 1904 | } |
| 1905 | } |
| 1906 | for (var i = 0; i < cm.display.view.length; i++) { |
| 1907 | var lineView = cm.display.view[i]; |
| 1908 | if (lineView.node == lineNode) |
| 1909 | return locateNodeInLineView(lineView, node, offset); |
| 1910 | } |
| 1911 | } |
| 1912 | |
| 1913 | function locateNodeInLineView(lineView, node, offset) { |
| 1914 | var wrapper = lineView.text.firstChild, bad = false; |
no test coverage detected