Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/frontend/editors/slate/keyboard/toggle-collapse-sections.ts
1697 views
1
/*
2
* This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.
3
* License: MS-RSL – see LICENSE.md for details
4
*/
5
6
import { register } from "./register";
7
import { isElementOfType } from "../elements";
8
import { Editor } from "slate";
9
import { ReactEditor } from "../slate-react";
10
11
function toggleCollapsedSections(editor): void {
12
let changed: boolean = false;
13
for (const [element] of Editor.nodes(editor, {
14
match: (element) => isElementOfType(element, "heading"),
15
})) {
16
editor.collapsedSections.set(
17
element,
18
!editor.collapsedSections.get(element)
19
);
20
changed = true;
21
}
22
if (changed) {
23
editor.updateHiddenChildren();
24
// Cause the editor to update so that the useSlate context hook updates.
25
// (Only needed because editor.collapsedSection is a normal Set.)
26
ReactEditor.forceUpdate(editor);
27
}
28
}
29
30
register({ key: "q", ctrl: true }, ({ editor }) => {
31
toggleCollapsedSections(editor);
32
return true;
33
});
34
35