diff options
Diffstat (limited to 'apps/web/app/(editor)/lib/debouncedsave.ts')
| -rw-r--r-- | apps/web/app/(editor)/lib/debouncedsave.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/apps/web/app/(editor)/lib/debouncedsave.ts b/apps/web/app/(editor)/lib/debouncedsave.ts new file mode 100644 index 00000000..6490c6c4 --- /dev/null +++ b/apps/web/app/(editor)/lib/debouncedsave.ts @@ -0,0 +1,20 @@ +import hljs from 'highlight.js' +import { debounce } from 'tldraw'; +import { useDebouncedCallback } from "use-debounce"; + +export const Updates = debounce(({editor, setCharsCount, setSaveStatus})=> { + const json = editor.getJSON(); + setCharsCount(editor.storage.characterCount.words()); + window.localStorage.setItem("html-content", highlightCodeblocks(editor.getHTML())); + window.localStorage.setItem("novel-content", JSON.stringify(json)); + window.localStorage.setItem("markdown", editor.storage.markdown.getMarkdown()); + setSaveStatus("Saved"); +}, 500) + +export const highlightCodeblocks = (content: string) => { + const doc = new DOMParser().parseFromString(content, 'text/html'); + doc.querySelectorAll('pre code').forEach((el) => { + hljs.highlightElement(el); + }); + return new XMLSerializer().serializeToString(doc); +};
\ No newline at end of file |