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