( view: EditorView | null, extensionCreator: () => Extension, deps: any[], )
| 3 | import { useMemo, useEffect } from 'react' |
| 4 | |
| 5 | export function useExtension( |
| 6 | view: EditorView | null, |
| 7 | extensionCreator: () => Extension, |
| 8 | deps: any[], |
| 9 | ) { |
| 10 | const compartment = useMemo(() => new Compartment(), []) |
| 11 | const extension = useMemo(extensionCreator, deps) |
| 12 | |
| 13 | useEffect(() => { |
| 14 | if (!view) return |
| 15 | if (!compartment.get(view.state)) { |
| 16 | view.dispatch({ effects: StateEffect.appendConfig.of(compartment.of(extension)) }) |
| 17 | } else { |
| 18 | view.dispatch({ effects: compartment.reconfigure(extension) }) |
| 19 | } |
| 20 | }, [view, extension]) |
| 21 | } |
no test coverage detected
searching dependent graphs…