30 lines
708 B
TypeScript
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)
|
|
}
|