add useEditor
This commit is contained in:
31
packages/react/src/useEditor.ts
Normal file
31
packages/react/src/useEditor.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { useState, useEffect } from 'react'
|
||||
import { Editor } from './Editor'
|
||||
|
||||
function useForceUpdate() {
|
||||
const [_, setValue] = useState(0)
|
||||
|
||||
return () => setValue(value => value + 1)
|
||||
}
|
||||
|
||||
export const useEditor = (options = {}) => {
|
||||
const [editor, setEditor] = useState(null)
|
||||
const forceUpdate = useForceUpdate()
|
||||
|
||||
useEffect(() => {
|
||||
const instance = new Editor(options)
|
||||
|
||||
setEditor(instance)
|
||||
|
||||
instance.on('transaction', () => {
|
||||
forceUpdate()
|
||||
})
|
||||
|
||||
return () => {
|
||||
instance.destroy()
|
||||
}
|
||||
}, [])
|
||||
|
||||
return editor
|
||||
}
|
||||
Reference in New Issue
Block a user