diff --git a/src/lib/UI/GUI/TextAreaInput.svelte b/src/lib/UI/GUI/TextAreaInput.svelte
index 646dc77c..4cffedf3 100644
--- a/src/lib/UI/GUI/TextAreaInput.svelte
+++ b/src/lib/UI/GUI/TextAreaInput.svelte
@@ -38,7 +38,7 @@
hideAutoComplete()
}}
>
- {#if !highlight || !CSS.highlights || isFirefox}
+ {#if !highlight}
+ {:else if isFirefox}
+
{
+ handleKeyDown(e)
+ onInput()
+ }}
+ on:input={(e) => {
+ autoComplete()
+ }}
+ on:paste={(e) => {
+ e.preventDefault()
+ const text = e.clipboardData.getData('text/plain')
+ if(text){
+ insertContent(text, 'paste')
+ }
+ }}
+ bind:this={inputDom}
+ translate="no"
+ >{value ?? ''}
{:else}
{
autoComplete()
}}
+ bind:this={inputDom}
translate="no"
>{value ?? ''}
{/if}
{#each autocompleteContents as content, i}
{/each}
@@ -116,6 +139,7 @@
let optiValue = value
let autoCompleteDom: HTMLDivElement
let autocompleteContents:string[] = []
+ let inputDom: HTMLDivElement
const autoComplete = () => {
if(isMobile){
@@ -160,27 +184,38 @@
autoCompleteDom.style.display = 'flex'
}
- const insertAutoComplete = (insertContent:string) => {
+ const insertContent = (insertContent:string, type:'autoComplete'|'paste' = 'autoComplete') => {
const sel = window.getSelection()
if(sel){
const range = sel.getRangeAt(0)
let content = (range.startContainer).textContent
let contentStart = content.substring(0, range.startOffset)
let contentEnd = content.substring(range.startOffset)
- contentStart = contentStart.substring(0, contentStart.lastIndexOf('{{'))
-
- if(insertContent.endsWith(':')){
- insertContent = `{{${insertContent}:`
- }
- else{
- insertContent = `{{${insertContent}}}`
+ if(type === 'autoComplete'){
+ contentStart = contentStart.substring(0, contentStart.lastIndexOf('{{'))
+ if(insertContent.endsWith(':')){
+ insertContent = `{{${insertContent}:`
+ }
+ else if(insertContent.startsWith('#')){
+ insertContent = `{{${insertContent} `
+ }
+ else{
+ insertContent = `{{${insertContent}}}`
+ }
}
const cons = contentStart + insertContent + contentEnd
range.startContainer.textContent = cons
-
- sel.collapse(range.startContainer, contentStart.length + insertContent.length)
hideAutoComplete()
+
+ try {
+ sel.collapse(range.startContainer, contentStart.length + insertContent.length)
+ } catch (error) {
+ inputDom.dispatchEvent(new Event('input'))
+ inputDom.dispatchEvent(new Event('change'))
+ }
+ //invoke onInput
+
}
}
@@ -218,7 +253,7 @@
case 'Tab':
e.preventDefault()
if(selectingAutoComplete !== -1){
- insertAutoComplete(autocompleteContents[selectingAutoComplete])
+ insertContent(autocompleteContents[selectingAutoComplete])
}
break
case 'Escape':