Fix firefox compability
This commit is contained in:
@@ -71,7 +71,7 @@
|
||||
<div
|
||||
class="w-full h-full bg-transparent focus-within:outline-none resize-none absolute top-0 left-0 z-10 overflow-y-auto px-4 py-2 break-words whitespace-pre-wrap"
|
||||
contenteditable="true"
|
||||
bind:innerText={value}
|
||||
bind:textContent={value}
|
||||
on:keydown={(e) => {
|
||||
handleKeyDown(e)
|
||||
onInput()
|
||||
@@ -83,7 +83,7 @@
|
||||
e.preventDefault()
|
||||
const text = e.clipboardData.getData('text/plain')
|
||||
if(text){
|
||||
insertContent(text, 'paste')
|
||||
insertTextAtSelection(text)
|
||||
}
|
||||
}}
|
||||
bind:this={inputDom}
|
||||
@@ -93,7 +93,7 @@
|
||||
<div
|
||||
class="w-full h-full bg-transparent focus-within:outline-none resize-none absolute top-0 left-0 z-10 overflow-y-auto px-4 py-2 break-words whitespace-pre-wrap"
|
||||
contenteditable="plaintext-only"
|
||||
bind:innerText={value}
|
||||
bind:textContent={value}
|
||||
on:keydown={(e) => {
|
||||
handleKeyDown(e)
|
||||
onInput()
|
||||
@@ -265,10 +265,30 @@
|
||||
if(e.key === 'Enter' && isFirefox){
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
insertContent('\n')
|
||||
insertTextAtSelection('\n')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function insertTextAtSelection(txt:string) {
|
||||
let div = inputDom;
|
||||
let sel = window.getSelection();
|
||||
let text = div.textContent;
|
||||
let before = Math.min(sel.focusOffset, sel.anchorOffset);
|
||||
let after = Math.max(sel.focusOffset, sel.anchorOffset);
|
||||
let afterStr = text.substring(after);
|
||||
if (afterStr == "") afterStr = "\n";
|
||||
div.textContent = text.substring(0, before) + txt + afterStr;
|
||||
sel.removeAllRanges();
|
||||
let range = document.createRange();
|
||||
range.setStart(div.childNodes[0], before + txt.length);
|
||||
range.setEnd(div.childNodes[0], before + txt.length);
|
||||
sel.addRange(range);
|
||||
try {
|
||||
inputDom.dispatchEvent(new Event('input'))
|
||||
inputDom.dispatchEvent(new Event('change'))
|
||||
} catch (error) {}
|
||||
}
|
||||
|
||||
$: optiValue = value
|
||||
$: highlightChange(value, highlightId)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user