MCPcopy
hub / github.com/basecamp/trix / pressCommandBackspace

Function pressCommandBackspace

src/test/system/html_replacement_test.js:82–116  ·  view source on GitHub ↗
({ replaceText, replaceElementWithText })

Source from the content-addressed store, hash-verified

80)
81
82const 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
118const getElementWithText = function (text) {
119 for (const element of Array.from(document.activeElement.querySelectorAll("*"))) {

Callers 1

Calls 5

triggerEventFunction · 0.90
nextFrameFunction · 0.90
getElementWithTextFunction · 0.85
getNodesMethod · 0.45
createElementMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…