diff --git a/frontend/src/Components/MarkdownEditor.svelte b/frontend/src/Components/MarkdownEditor.svelte index 53eea6c5..c54e8e1c 100644 --- a/frontend/src/Components/MarkdownEditor.svelte +++ b/frontend/src/Components/MarkdownEditor.svelte @@ -6,9 +6,9 @@ let { editable = true, onclick = evt => {}, - onRender = src => {}, onSet = newVal => {return true;}, simple = false, + store_id = null, type = 'div', value = $bindable({source:null,rendered:null}) } = $props(); @@ -16,6 +16,7 @@ let editing = $state(false); let editValue = $state({source:value.source,rendered:value.rendered}); let start = 0; + let stored_source = $state(store_id ? localStorage.getItem(store_id) : null); let timer = null; async function applyEdit(){ @@ -28,6 +29,7 @@ } function doSave(){ + if (store_id) localStorage.removeItem(store_id); if (simple){ onSet(editValue.source); } else applyEdit(); @@ -51,7 +53,7 @@ body : editValue.source }); editValue.rendered = await resp.text(); - onRender(editValue.source); + if (store_id) localStorage.setItem(store_id,editValue.source); } function typed(ev){ @@ -102,13 +104,37 @@ measured(evt, evt.timeStamp - start); } + function restore(ev){ + editValue.source = stored_source; + stored_source = null; + render(); + } + activeField.subscribe((val) => resetEdit()); if (simple) startEdit(); + +