Path: blob/master/src/packages/frontend/editors/slate/elements/break/editable.tsx
1698 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 { useCollapsed, useFocused, useSelected } from "../hooks";78register({9slateType: "softbreak",1011// A softbreak creates a new line without creating12// a new paragraph.13Element: ({ attributes, children }) => {14const focused = useFocused();15const selected = useSelected();16const collapsed = useCollapsed();17const reveal = focused && selected && collapsed;18return (19<span {...attributes}>20<span21style={{22whiteSpace: "normal",23borderRight: reveal ? "1px solid #333" : undefined,24color: reveal ? "lightgrey" : undefined,25}}26contentEditable={false}27>28{reveal ? "↵\n" : " "}29</span>30{children}31</span>32);33},3435fromSlate: ({ children }) => {36// Just in case somehow the children were edited37// (it doesn't seem they can be), we still won't38// loose information:39return children + "\n";40},41});4243register({44slateType: "hardbreak",4546fromSlate: ({ children }) => {47return children + " \n";48},4950Element: ({ attributes, children }) => {51const focused = useFocused();52const selected = useSelected();53const collapsed = useCollapsed();54const reveal = focused && selected && collapsed;55return (56<span {...attributes}>57<span58style={{59whiteSpace: "pre",60borderRight: reveal ? "1px solid #333" : undefined,61color: reveal ? "lightgrey" : undefined,62}}63contentEditable={false}64>65{reveal ? "↵\n" : "\n"}66</span>67{children}68</span>69);70},71});727374