TelegramPWA/src/util/deleteLastCharacterOutsideSelection.ts
Alexander Zinchuk 3afcde3217 Initial commit
2021-04-09 14:11:51 +03:00

35 lines
1.0 KiB
TypeScript

export default function deleteLastCharacterOutsideSelection(html: string) {
const tempInput = document.createElement('div');
tempInput.contentEditable = 'true';
tempInput.style.position = 'absolute';
tempInput.style.left = '-10000px';
tempInput.style.top = '-10000px';
tempInput.innerHTML = html;
document.body.appendChild(tempInput);
let element = tempInput.lastChild!;
if (element.lastChild) {
// Selects the last and the deepest child of the element.
while (element.lastChild) {
element = element.lastChild;
}
}
// Gets length of the element's content.
const textLength = element.textContent!.length;
const range = document.createRange();
const selection = window.getSelection()!;
// Sets selection position to the end of the element.
range.setStart(element, textLength);
range.setEnd(element, textLength);
selection.removeAllRanges();
selection.addRange(range);
document.execCommand('delete', false);
const result = tempInput.innerHTML;
document.body.removeChild(tempInput);
return result;
}