({ replaceText, replaceElementWithText })
| 80 | ) |
| 81 | |
| 82 | const pressCommandBackspace = async ({ replaceText, replaceElementWithText }) => { |
| 83 | let previousSibling |
| 84 | triggerEvent(document.activeElement, "keydown", { charCode: 0, keyCode: 8, which: 8, metaKey: true }) |
| 85 | const range = rangy.getSelection().getRangeAt(0) |
| 86 | |
| 87 | if (replaceElementWithText) { |
| 88 | const element = getElementWithText(replaceElementWithText) |
| 89 | previousSibling = element.previousSibling |
| 90 | element.parentNode.removeChild(element) |
| 91 | range.collapseAfter(previousSibling) |
| 92 | } else { |
| 93 | range.findText(replaceText, { direction: "backward" }) |
| 94 | range.splitBoundaries() |
| 95 | |
| 96 | const node = range.getNodes()[0] |
| 97 | previousSibling = node.previousSibling |
| 98 | const { nextSibling, parentNode } = node |
| 99 | |
| 100 | if (previousSibling?.nodeType === Node.COMMENT_NODE) { |
| 101 | parentNode.removeChild(previousSibling) |
| 102 | } |
| 103 | |
| 104 | node.data = "" |
| 105 | parentNode.removeChild(node) |
| 106 | |
| 107 | if (!parentNode.hasChildNodes()) { |
| 108 | parentNode.appendChild(document.createElement("br")) |
| 109 | } |
| 110 | |
| 111 | range.collapseBefore(nextSibling ? nextSibling : parentNode.firstChild) |
| 112 | } |
| 113 | |
| 114 | range.select() |
| 115 | await nextFrame() |
| 116 | } |
| 117 | |
| 118 | const getElementWithText = function (text) { |
| 119 | for (const element of Array.from(document.activeElement.querySelectorAll("*"))) { |
no test coverage detected
searching dependent graphs…