diff options
| author | jackyzha0 <[email protected]> | 2020-05-17 09:55:35 -0700 |
|---|---|---|
| committer | jackyzha0 <[email protected]> | 2020-05-17 09:55:35 -0700 |
| commit | 9941d9b18217e05f69547985a170234ee84c39f5 (patch) | |
| tree | fe1dd7ed3141ac536d899b9c85401834d14490be /frontend/src/components | |
| parent | remove lang input (diff) | |
| download | ctrl-v-9941d9b18217e05f69547985a170234ee84c39f5.tar.xz ctrl-v-9941d9b18217e05f69547985a170234ee84c39f5.zip | |
save comp
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/PasteInfo.js | 73 | ||||
| -rw-r--r-- | frontend/src/components/ViewPaste.js | 3 | ||||
| -rw-r--r-- | frontend/src/components/renderers/Code.js | 6 |
3 files changed, 55 insertions, 27 deletions
diff --git a/frontend/src/components/PasteInfo.js b/frontend/src/components/PasteInfo.js index ea4981c..b63eedb 100644 --- a/frontend/src/components/PasteInfo.js +++ b/frontend/src/components/PasteInfo.js @@ -2,6 +2,7 @@ import React from 'react'; import styled from 'styled-components' import { useHistory } from 'react-router-dom'; import { ThemeInput } from './Inputs' +import { exportComponentAsJPEG } from "react-component-export-image"; const Bold = styled.span` font-weight: 700 @@ -9,14 +10,13 @@ const Bold = styled.span` const StyledDiv = styled.div` display: inline-block; + margin: 2em 0; ` const Button = styled.button` - margin-left: 0 !important; -` - -const ButtonRow = styled.div` - display: inline; + margin-right: 0 !important; + margin-left: 2em !important; + height: calc(16px + 1.6em + 2px); ` const SpacedText = styled.span` @@ -32,38 +32,63 @@ const Flex = styled.div` const PasteInfo = (props) => { const history = useHistory(); - const redir = () => { + const redirRaw = () => { const redirUrl = `/raw/${props.hash}` history.push(redirUrl); } + const redirRender = () => { + const redirUrl = `/render/${props.hash}` + history.push(redirUrl); + } + + const renderable = () => { + if (props.lang === 'latex') { + return ( + <Button + className="lt-shadow lt-hover" + type="button" + onClick={redirRender} + > + render + </Button> + ); + } + } + return ( <div> <Flex> + <Button + className="lt-shadow lt-hover" + type="button" + onClick={redirRaw} + > + view raw + </Button> + <Button + className="lt-shadow lt-hover" + type="button" + onClick={() => exportComponentAsJPEG(props.compref, `paste-${props.hash}.png`)} + > + save + </Button> + {renderable()} <ThemeInput value={props.theme} onChange={props.onChange} id="themeInput" /> </Flex> <StyledDiv> - <ButtonRow> - <Button - className="lt-shadow lt-hover" - type="button" - onClick={redir} - > - view raw - </Button> - <SpacedText> - <Bold>language: </Bold>{props.lang} - </SpacedText> - <SpacedText> - <Bold>expires: </Bold>{props.expiry} - </SpacedText> - <SpacedText> - {props.err} - </SpacedText> - </ButtonRow> + <SpacedText> + <Bold>language: </Bold>{props.lang} + </SpacedText> + <SpacedText> + <Bold>expires: </Bold>{props.expiry} + </SpacedText> + <SpacedText> + {props.err} + </SpacedText> </StyledDiv> </div> ); diff --git a/frontend/src/components/ViewPaste.js b/frontend/src/components/ViewPaste.js index 81d78f3..914f94c 100644 --- a/frontend/src/components/ViewPaste.js +++ b/frontend/src/components/ViewPaste.js @@ -29,6 +29,7 @@ class ViewPaste extends React.Component { this.validatePass = this.validatePass.bind(this); this.ErrorLabel = React.createRef(); this.PasswordModal = React.createRef(); + this.componentRef = React.createRef(); } handleChange(event) { @@ -89,12 +90,14 @@ class ViewPaste extends React.Component { content={this.state.content} lang={this.state.language} theme={this.state.theme} + ref={this.componentRef} id="pasteInput" /> <PasteInfo hash={this.props.hash} lang={this.state.language} theme={this.state.theme} onChange={this.handleChange} + compref={this.componentRef} err={<Error ref={this.ErrorLabel} />} expiry={this.state.expiry} /> </div> diff --git a/frontend/src/components/renderers/Code.js b/frontend/src/components/renderers/Code.js index a024bb7..cfb43ab 100644 --- a/frontend/src/components/renderers/Code.js +++ b/frontend/src/components/renderers/Code.js @@ -39,9 +39,9 @@ const RelPositioning = styled.div` position: relative; ` -const CodeRenderer = (props) => { +const CodeRenderer = React.forwardRef((props, ref) => { return ( - <RelPositioning> + <RelPositioning ref={ref}> <SyntaxHighlighter className="codeBlock lt-shadow" language={props.lang} @@ -51,6 +51,6 @@ const CodeRenderer = (props) => { </SyntaxHighlighter> </RelPositioning> ); -}; +}); export default CodeRenderer
\ No newline at end of file |