Files
modeling-app/src/useStore.ts

33 lines
907 B
TypeScript
Raw Normal View History

import create from 'zustand'
2022-11-26 08:34:23 +11:00
import { addLineHighlight, EditorView } from './editor/highlightextension'
export type Range = [number, number]
interface StoreState {
2022-11-26 08:34:23 +11:00
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) => ({
2022-11-26 08:34:23 +11:00
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 })
},
}))