import React, { FC, memo, useCallback, useState, } from '../../../lib/teact/teact'; import buildClassName from '../../../util/buildClassName'; import useAsync from '../../../hooks/useAsync'; import PreBlock from './PreBlock'; import CodeOverlay from './CodeOverlay'; import './CodeBlock.scss'; export type OwnProps = { text: string; language?: string; noCopy?: boolean; }; const CodeBlock: FC = ({ text, language, noCopy }) => { const [isWordWrap, setWordWrap] = useState(true); const { result: highlighted } = useAsync(() => { if (!language) return Promise.resolve(); return import('../../../util/highlightCode') .then((lib) => lib.default(text, language)); }, [language, text]); const handleWordWrapToggle = useCallback((wrap) => { setWordWrap(wrap); }, []); if (!highlighted) { return ; } const blockClass = buildClassName('code-block', !isWordWrap && 'no-word-wrap'); return (
      {highlighted}
      
    
); }; export default memo(CodeBlock);