From 64593eb0ca43116a2037d51cf2088ac3d408aa51 Mon Sep 17 00:00:00 2001 From: Hassan Abouelela <47495861+HassanAbouelela@users.noreply.github.com> Date: Tue, 2 Mar 2021 20:20:10 +0300 Subject: Adds Basic Prism Stuff Signed-off-by: Hassan Abouelela <47495861+HassanAbouelela@users.noreply.github.com> --- src/components/InputTypes/Code.tsx | 11 -- src/components/InputTypes/code/Code.tsx | 74 ++++++++++ src/components/InputTypes/code/prism_css.tsx | 194 +++++++++++++++++++++++++++ src/components/InputTypes/index.tsx | 8 +- 4 files changed, 274 insertions(+), 13 deletions(-) delete mode 100644 src/components/InputTypes/Code.tsx create mode 100644 src/components/InputTypes/code/Code.tsx create mode 100644 src/components/InputTypes/code/prism_css.tsx (limited to 'src') diff --git a/src/components/InputTypes/Code.tsx b/src/components/InputTypes/Code.tsx deleted file mode 100644 index 51ca98d..0000000 --- a/src/components/InputTypes/Code.tsx +++ /dev/null @@ -1,11 +0,0 @@ -/** @jsx jsx */ -import { jsx } from "@emotion/react"; -import React, { ChangeEvent } from "react"; - -interface CodeProps { - handler: (event: ChangeEvent) => void -} - -export default function Code(props: CodeProps): JSX.Element { - return ; -} diff --git a/src/components/InputTypes/code/Code.tsx b/src/components/InputTypes/code/Code.tsx new file mode 100644 index 0000000..31b82f0 --- /dev/null +++ b/src/components/InputTypes/code/Code.tsx @@ -0,0 +1,74 @@ +/** @jsx jsx */ +import { jsx, css } from "@emotion/react"; +import React, { ChangeEvent } from "react"; + +import prismStyles from "./prism_css"; +import Prism from 'prismjs'; + +/** + * For supported languages, and language codes, see: + * https://prismjs.com/#supported-languages + */ +interface CodeProps { + handler: (event: ChangeEvent) => void, + language: string, +} + +const blockStyles = css` + pre[class*="language-"] { + min-height: 20rem; + height: 100%; + width: 100%; + box-sizing: border-box; + + resize: vertical; + padding: 1rem; + background: whitesmoke; + + color: black; + font-family: Hind, Helvetica, Arial, sans-serif; + + margin: auto; + + border: 0.1rem solid black; + border-radius: 8px; + font-size: 1rem; + } +`; + +const textareaStyles = css` + position: absolute; + top: 0; + width: 100%; + height: 100%; + opacity: 0; + resize: none; + + font-family: Hind, Helvetica, Arial, sans-serif; + padding: 1rem; + box-sizing: border-box; + font-size: 1rem; + border: 0.1rem solid transparent; + border-radius: 8px; +`; + +export default class Code extends React.Component { + constructor(props: CodeProps) { + super(props); + } + + render() { + const ref: React.RefObject = React.createRef(); + const placeholder = "print(\"hello world\")" + + return
+
+                {placeholder}
+            
+