import React, { useEffect, useState, useRef } from 'react'; import { Text, Code } from '../components/Inputs' import OptionsContainer from '../components/Options' import Error from '../components/Err' import PasteModal from '../components/modals/PasteModal' import styled from 'styled-components' import CodeRenderer from '../components/renderers/Code' import Latex from '../components/renderers/Latex' import Markdown from '../components/renderers/Markdown' import {Button, SubmitButton} from "../components/Common/Button"; import {newPaste} from "../http/shared"; import {Watermark} from "../components/Watermark"; import {Labelled} from "../components/decorators/Labelled"; const Container = styled.form` width: 100%; ` const Flex = styled.div` display: flex; flex-direction: row; ` const FlexLeft = styled.div` flex: 0 0 calc(50% - 1em - 2px); ` const FlexRight = styled.div` flex: 0 0 50%; max-width: calc(50% - 1em + 2px); margin-left: 2em; ` const PreviewWrapper = styled.div` margin: 2em; ` const NewPaste = () => { const [title, setTitle] = useState(''); const [content, setContent] = useState(''); const [pass, setPass] = useState(''); const [language, setLanguage] = useState('detect'); const [expiry, setExpiry] = useState(''); const [hash, setHash] = useState(''); const [isPreview, setIsPreview] = useState(false); const ErrorLabel = useRef(null); useEffect(() => { document.title = title === "" ? `ctrl-v` : `ctrl-v | ${title}`; }, [title]) function handleSubmit(e) { e.preventDefault(); // prevent resubmission if (!hash) { newPaste({title, content, language, pass, expiry}) .then(resp => {setHash(resp.data.hash)}) .catch((error) => { const resp = error.response // some weird err (e.g. network) if (!resp) { ErrorLabel.current.showMessage(error) return } // some weird err const errTxt = `${resp.status}: ${resp.data}` ErrorLabel.current.showMessage(errTxt) }); } } function renderPreview() { const pasteInput = if (isPreview) { var preview switch (language) { case 'latex': preview = break case 'markdown': preview = break default: preview = } return ( {pasteInput} {preview} ); } else { return ( {pasteInput} ); } } return ( {setTitle(e.target.value)}} value={title} autoFocus maxLength="100" id="titleInput" /> {renderPreview()} { setPass(e.target.value) }} onLangChange={(e) => { setLanguage(e.target.value) }} onExpiryChange={(e) => { setExpiry(e.target.value) }} />
{language !== 'detect' && }

); } export default NewPaste