Skip to content

Commit

Permalink
Code: soft wrap. Closes enricoros#517
Browse files Browse the repository at this point in the history
  • Loading branch information
enricoros authored and pAkalpa committed Jun 4, 2024
1 parent 911b457 commit c023fd9
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/modules/blocks/code/RenderCode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import FitScreenIcon from '@mui/icons-material/FitScreen';
import HtmlIcon from '@mui/icons-material/Html';
import SchemaIcon from '@mui/icons-material/Schema';
import ShapeLineOutlinedIcon from '@mui/icons-material/ShapeLineOutlined';
import WrapTextIcon from '@mui/icons-material/WrapText';

import { copyToClipboard } from '~/common/util/clipboardUtils';
import { frontendSideFetch } from '~/common/util/clientFetchers';
Expand Down Expand Up @@ -106,6 +107,7 @@ function RenderCodeImpl(props: RenderCodeImplProps) {
const [showMermaid, setShowMermaid] = React.useState(true);
const [showPlantUML, setShowPlantUML] = React.useState(true);
const [showSVG, setShowSVG] = React.useState(true);
const [softWrap, setSoftWrap] = React.useState(false);

// derived props
const {
Expand Down Expand Up @@ -171,7 +173,7 @@ function RenderCodeImpl(props: RenderCodeImplProps) {
component='code'
className={`language-${inferredCodeLanguage || 'unknown'}`}
sx={{
whiteSpace: 'pre', // was 'break-spaces' before we implemented per-block scrolling
whiteSpace: softWrap ? 'break-spaces' : 'pre', // was 'break-spaces' before we implemented per-block scrolling
mx: 0, p: 1.5, // this block gets a thicker border
display: 'flex',
flexDirection: 'column',
Expand Down Expand Up @@ -265,6 +267,15 @@ function RenderCodeImpl(props: RenderCodeImplProps) {
</ButtonGroup>
)}

{/* Soft Wrap toggle */}
{(!renderHTML && !renderMermaid && !renderPlantUML && !renderSVG) && (
<Tooltip title='Toggle Soft Wrap'>
<OverlayButton variant={softWrap ? 'solid' : 'outlined'} onClick={() => setSoftWrap(on => !on)}>
<WrapTextIcon />
</OverlayButton>
</Tooltip>
)}

{/* Copy */}
{props.noCopyButton !== true && (
<Tooltip title={optimizeLightweight ? null : 'Copy Code'}>
Expand Down

0 comments on commit c023fd9

Please sign in to comment.