aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components
diff options
context:
space:
mode:
authorjackyzha0 <[email protected]>2020-05-17 09:55:35 -0700
committerjackyzha0 <[email protected]>2020-05-17 09:55:35 -0700
commit9941d9b18217e05f69547985a170234ee84c39f5 (patch)
treefe1dd7ed3141ac536d899b9c85401834d14490be /frontend/src/components
parentremove lang input (diff)
downloadctrl-v-9941d9b18217e05f69547985a170234ee84c39f5.tar.xz
ctrl-v-9941d9b18217e05f69547985a170234ee84c39f5.zip
save comp
Diffstat (limited to 'frontend/src/components')
-rw-r--r--frontend/src/components/PasteInfo.js73
-rw-r--r--frontend/src/components/ViewPaste.js3
-rw-r--r--frontend/src/components/renderers/Code.js6
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:&nbsp;</Bold>{props.lang}
- </SpacedText>
- <SpacedText>
- <Bold>expires:&nbsp;</Bold>{props.expiry}
- </SpacedText>
- <SpacedText>
- {props.err}
- </SpacedText>
- </ButtonRow>
+ <SpacedText>
+ <Bold>language:&nbsp;</Bold>{props.lang}
+ </SpacedText>
+ <SpacedText>
+ <Bold>expires:&nbsp;</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