shrimp/src/editor/persistence.ts
2026-01-05 11:30:32 -08:00

30 lines
708 B
TypeScript

import { ViewPlugin, ViewUpdate } from '@codemirror/view'
export const persistence = ViewPlugin.fromClass(
class {
saveTimeout?: ReturnType<typeof setTimeout>
update(update: ViewUpdate) {
if (update.docChanged) {
if (this.saveTimeout) clearTimeout(this.saveTimeout)
this.saveTimeout = setTimeout(() => {
setContent(update.state.doc.toString())
}, 500)
}
}
destroy() {
if (this.saveTimeout) clearTimeout(this.saveTimeout)
}
}
)
export const getContent = () => {
return localStorage.getItem('shrimp-editor-content') || ''
}
export const setContent = (data: string) => {
localStorage.setItem('shrimp-editor-content', data)
}