get feature highlighting working both ways

From the editor to the viewer and from the viewer to the editor
This commit is contained in:
Kurt Hutten IrevDev
2022-11-26 05:13:07 +11:00
parent e7e0f2a4fd
commit ca020e14eb
7 changed files with 194 additions and 46 deletions

32
src/useStore.ts Normal file
View File

@ -0,0 +1,32 @@
import create from 'zustand'
import {addLineHighlight, EditorView} from './editor/highlightextension'
export type Range = [number, number]
interface StoreState {
editorView: EditorView | null,
setEditorView: (editorView: EditorView) => void,
highlightRange: [number, number],
setHighlightRange: (range: Range) => void,
selectionRange: [number, number],
setSelectionRange: (range: Range) => void,
}
export const useStore = create<StoreState>()((set, get) => ({
editorView: null,
setEditorView: (editorView) => {
set({editorView})
},
highlightRange: [0, 0],
setHighlightRange: (highlightRange) => {
set({ highlightRange })
const editorView = get().editorView
if (editorView) {
editorView.dispatch({ effects: addLineHighlight.of(highlightRange) });
}
},
selectionRange: [0, 0],
setSelectionRange: (selectionRange) => {
set({ selectionRange })
},
}))