@val external window: {..} = "window" let use = (courseId: string) => { let (state, setState) = React.useState(() => AnnotationTypes.initialState) let selectLesson = (lesson: AnnotationTypes.lesson) => { let savedNote = AnnotationStorage.loadNote(courseId, lesson.id) let notes = Dict.make() switch savedNote { | Some(note) => Dict.set(notes, lesson.id, note) | None => () } setState(_ => { selectedLesson: Some(lesson), isPenOpen: true, notes, }) } let updateNote = (lessonId: string, note: string) => { AnnotationStorage.saveNote(courseId, lessonId, note) setState(prev => { let notes = Dict.make() Dict.set(notes, lessonId, note) {...prev, notes} }) } let closePen = () => { setState(prev => {...prev, isPenOpen: false, selectedLesson: None}) } let getNote = (lessonId: string) => { Dict.get(state.notes, lessonId) } (state, selectLesson, updateNote, closePen, getNote) }