From 0e683791114b0af1fb9aded2ae8bc7767c892be6 Mon Sep 17 00:00:00 2001
From: Saksham chandel <94097778+yung-coder@users.noreply.github.com>
Date: Sat, 6 Aug 2022 00:42:26 +0530
Subject: [PATCH 01/24] package update
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index aff0a593b..abda69227 100644
--- a/package.json
+++ b/package.json
@@ -33,8 +33,8 @@
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.0",
"react-shimmer-effect": "^1.0.9",
- "react-twitter-widgets": "^1.11.0",
"react-simple-maps": "^2.3.0",
+ "react-twitter-widgets": "^1.11.0",
"redux": "^4.2.0",
"redux-persist": "^6.0.0",
"reselect": "^4.1.5",
From 16c29b80703ce958296a5c8e42c13a5e78a7ff32 Mon Sep 17 00:00:00 2001
From: Saksham chandel <94097778+yung-coder@users.noreply.github.com>
Date: Sun, 7 Aug 2022 13:55:11 +0530
Subject: [PATCH 02/24] some new packages
---
package.json | 6 ++++++
src/plays/code-editor/CodeEditor.js | 31 +++++++++++++++++++++++++++++
src/plays/code-editor/Readme.md | 27 +++++++++++++++++++++++++
src/plays/code-editor/styles.css | 1 +
4 files changed, 65 insertions(+)
create mode 100644 src/plays/code-editor/CodeEditor.js
create mode 100644 src/plays/code-editor/Readme.md
create mode 100644 src/plays/code-editor/styles.css
diff --git a/package.json b/package.json
index 26aca71ae..d70640486 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,9 @@
"dependencies": {
"@emotion/react": "^11.9.3",
"@emotion/styled": "^11.9.3",
+ "@fortawesome/fontawesome-svg-core": "^6.1.2",
+ "@fortawesome/free-solid-svg-icons": "^6.1.2",
+ "@fortawesome/react-fontawesome": "^0.2.0",
"@giscus/react": "^2.0.3",
"@mui/material": "^5.9.1",
"@nhost/react": "^0.9.0",
@@ -13,6 +16,8 @@
"@types/react-dom": "^18.0.2",
"add": "^2.0.6",
"axios": "^0.27.2",
+ "codemirror": "^6.0.1",
+ "create-react-play": "^0.0.10",
"date-fns": "^2.28.0",
"downloadjs": "^1.4.7",
"firebase": "^9.8.2",
@@ -23,6 +28,7 @@
"lodash": "^4.17.21",
"node-sass": "^7.0.1",
"react": "^18.0.0",
+ "react-codemirror2": "^7.2.1",
"react-dom": "^18.0.0",
"react-helmet": "^6.1.0",
"react-icons": "^4.3.1",
diff --git a/src/plays/code-editor/CodeEditor.js b/src/plays/code-editor/CodeEditor.js
new file mode 100644
index 000000000..5f181276a
--- /dev/null
+++ b/src/plays/code-editor/CodeEditor.js
@@ -0,0 +1,31 @@
+import PlayHeader from 'common/playlists/PlayHeader';
+import './styles.css';
+
+// WARNING: Do not change the entry componenet name
+function CodeEditor(props) {
+
+ // Your Code Start below.
+
+ return (
+ <>
+
+
+
+ {/* Your Code Starts Here */}
+
+
Play Details - Code Editor
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ Pellentesque euismod, urna eu tincidunt consectetur,
+ nisi nunc ultricies nisi, eget consectetur nunc nisi
+ euismod nunc.
+
+
+ {/* Your Code Ends Here */}
+
+
+ >
+ );
+}
+
+export default CodeEditor;
\ No newline at end of file
diff --git a/src/plays/code-editor/Readme.md b/src/plays/code-editor/Readme.md
new file mode 100644
index 000000000..d2f2d6d20
--- /dev/null
+++ b/src/plays/code-editor/Readme.md
@@ -0,0 +1,27 @@
+# Code editor
+
+It is a code editor for html css and javascript it is like a clone of codepen !
+
+## Play Demographic
+
+- Language: js
+- Level: Intermediate
+
+## Creator Information
+
+- User: yung-coder
+- Gihub Link: https://github.com/yung-coder
+- Blog:
+- Video:
+
+## Implementation Details
+
+Update your implementation idea and details here
+
+## Consideration
+
+Update all considerations(if any)
+
+## Resources
+
+Update external resources(if any)
diff --git a/src/plays/code-editor/styles.css b/src/plays/code-editor/styles.css
new file mode 100644
index 000000000..5fd508fa9
--- /dev/null
+++ b/src/plays/code-editor/styles.css
@@ -0,0 +1 @@
+/* enter stlyes here */
From 552f1a4680e9d0938dbebc9b63afcf8e53f4a367 Mon Sep 17 00:00:00 2001
From: Saksham chandel <94097778+yung-coder@users.noreply.github.com>
Date: Sun, 7 Aug 2022 15:45:37 +0530
Subject: [PATCH 03/24] initial
---
package.json | 2 +-
src/plays/code-editor/CodeEditor.js | 70 ++++++++++++++++++++----
src/plays/code-editor/Editor.jsx | 50 +++++++++++++++++
src/plays/code-editor/styles.css | 66 ++++++++++++++++++++++
src/plays/code-editor/useLocalstorage.js | 24 ++++++++
5 files changed, 200 insertions(+), 12 deletions(-)
create mode 100644 src/plays/code-editor/Editor.jsx
create mode 100644 src/plays/code-editor/useLocalstorage.js
diff --git a/package.json b/package.json
index d70640486..b78c2fb75 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"@types/react-dom": "^18.0.2",
"add": "^2.0.6",
"axios": "^0.27.2",
- "codemirror": "^6.0.1",
+ "codemirror": "^5.65.7",
"create-react-play": "^0.0.10",
"date-fns": "^2.28.0",
"downloadjs": "^1.4.7",
diff --git a/src/plays/code-editor/CodeEditor.js b/src/plays/code-editor/CodeEditor.js
index 5f181276a..01fc053ac 100644
--- a/src/plays/code-editor/CodeEditor.js
+++ b/src/plays/code-editor/CodeEditor.js
@@ -1,18 +1,66 @@
-import PlayHeader from 'common/playlists/PlayHeader';
-import './styles.css';
-
+import PlayHeader from "common/playlists/PlayHeader";
+import "./styles.css";
+import React, { useState, useEffect } from 'react';
+import Editor from './Editor'
+// import useLocalStorage from './useLocalstorage'
// WARNING: Do not change the entry componenet name
function CodeEditor(props) {
-
// Your Code Start below.
+ const [html, setHtml] = useState('')
+ const [css, setCss] = useState('')
+ const [js, setJs] = useState('')
+ const [srcDoc, setSrcDoc] = useState('')
+
+ useEffect(() => {
+ const timeout = setTimeout(() => {
+ setSrcDoc(`
+
+ ${html}
+
+
+
+ `)
+ },250)
+ return () => clearTimeout(timeout)
+ }, [html, css, js])
return (
- <>
-
+ <>
+
- {/* Your Code Starts Here */}
-
+ {/* Your Code Starts Here */}
+
+
+
+
+
+
+
+
+ {/*
Play Details - Code Editor
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
@@ -20,12 +68,12 @@ function CodeEditor(props) {
nisi nunc ultricies nisi, eget consectetur nunc nisi
euismod nunc.
-
- {/* Your Code Ends Here */}
+
*/}
+ {/* Your Code Ends Here */}
>
);
}
-export default CodeEditor;
\ No newline at end of file
+export default CodeEditor;
diff --git a/src/plays/code-editor/Editor.jsx b/src/plays/code-editor/Editor.jsx
new file mode 100644
index 000000000..a471c9b3d
--- /dev/null
+++ b/src/plays/code-editor/Editor.jsx
@@ -0,0 +1,50 @@
+import React, { useState } from 'react'
+import 'codemirror/lib/codemirror.css'
+import 'codemirror/theme/seti.css'
+import 'codemirror/mode/xml/xml'
+import 'codemirror/mode/javascript/javascript'
+import 'codemirror/mode/css/css'
+import { Controlled as ControlledEditor } from 'react-codemirror2'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faCompressAlt, faExpandAlt } from '@fortawesome/free-solid-svg-icons'
+
+export default function Editor(props) {
+ const {
+ language,
+ displayName,
+ value,
+ onChange
+ } = props
+ const [open, setOpen] = useState(true)
+
+ function handleChange(editor, data, value) {
+ onChange(value)
+ }
+
+ return (
+
+
+ {displayName}
+ setOpen(prevOpen => !prevOpen)}
+ >
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/plays/code-editor/styles.css b/src/plays/code-editor/styles.css
index 5fd508fa9..6136d7eff 100644
--- a/src/plays/code-editor/styles.css
+++ b/src/plays/code-editor/styles.css
@@ -1 +1,67 @@
/* enter stlyes here */
+.top-pane {
+ background-color: hsl(225, 6%, 25%);;
+ }
+
+ .pane {
+ height: 50vh;
+ display: flex;
+ }
+
+ .editor-container {
+ flex-grow: 1;
+ flex-basis: 0;
+ display: flex;
+ flex-direction: column;
+ padding: .5rem;
+ background-color: hsl(225, 6%, 25%);
+ }
+
+ .editor-container.collapsed {
+ flex-grow: 0;
+ }
+
+ .editor-container.collapsed .CodeMirror-scroll {
+ position: absolute;
+ overflow: hidden !important;
+ }
+
+ .expand-collapse-btn {
+ margin-left: .5rem;
+ background: none;
+ border: none;
+ color: white;
+ cursor: pointer;
+ }
+
+ .editor-title {
+ display: flex;
+ justify-content: space-between;
+ background-color: hsl(225, 87%, 44%);
+ color: white;
+ padding: .5rem .5rem .5rem 1rem;
+ border-top-right-radius: .5rem;
+ border-top-left-radius: .5rem;
+ }
+
+ .CodeMirror {
+ height: 100% !important;
+ }
+
+ .code-mirror-wrapper {
+ flex-grow: 1;
+ border-bottom-right-radius: .5rem;
+ border-bottom-left-radius: .5rem;
+ overflow: hidden;
+
+ }
+ @media (max-width:764px) {
+ .top-pane{
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ }
+ .pane{
+ height: 100vh;
+ }
+ }
\ No newline at end of file
diff --git a/src/plays/code-editor/useLocalstorage.js b/src/plays/code-editor/useLocalstorage.js
new file mode 100644
index 000000000..82f3bfb2e
--- /dev/null
+++ b/src/plays/code-editor/useLocalstorage.js
@@ -0,0 +1,24 @@
+import { useEffect, useState } from 'react'
+
+const PREFIX = 'codepen-editor'
+
+export default function useLocalStorage(key, initialValue) {
+ const prefixedKey = PREFIX + key
+
+ const [value, setValue] = useState(() => {
+ const jsonValue = localStorage.getItem(prefixedKey)
+ if (jsonValue != null) return JSON.parse(jsonValue)
+
+ if (typeof initialValue === 'function') {
+ return initialValue()
+ } else {
+ return initialValue
+ }
+ })
+
+ useEffect(() => {
+ localStorage.setItem(prefixedKey, JSON.stringify(value))
+ }, [prefixedKey, value])
+
+ return [value, setValue]
+}
From 42dd2374b2c36d83db985da21f26ef0fa622185c Mon Sep 17 00:00:00 2001
From: Saksham chandel <94097778+yung-coder@users.noreply.github.com>
Date: Wed, 10 Aug 2022 16:19:47 +0530
Subject: [PATCH 04/24] modification
---
package.json | 4 +-
src/plays/code-editor/Button.jsx | 23 +++++
src/plays/code-editor/CodeEditor.js | 124 ++++++++++++++++----------
src/plays/code-editor/Editor.jsx | 99 +++++++++++++--------
src/plays/code-editor/styles.css | 132 +++++++++++++++-------------
5 files changed, 233 insertions(+), 149 deletions(-)
create mode 100644 src/plays/code-editor/Button.jsx
diff --git a/package.json b/package.json
index b78c2fb75..616c7cf11 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"@types/react-dom": "^18.0.2",
"add": "^2.0.6",
"axios": "^0.27.2",
- "codemirror": "^5.65.7",
+ "codemirror": "^5.59.1",
"create-react-play": "^0.0.10",
"date-fns": "^2.28.0",
"downloadjs": "^1.4.7",
@@ -28,7 +28,7 @@
"lodash": "^4.17.21",
"node-sass": "^7.0.1",
"react": "^18.0.0",
- "react-codemirror2": "^7.2.1",
+ "react-codemirror2": "^7.1.0",
"react-dom": "^18.0.0",
"react-helmet": "^6.1.0",
"react-icons": "^4.3.1",
diff --git a/src/plays/code-editor/Button.jsx b/src/plays/code-editor/Button.jsx
new file mode 100644
index 000000000..88839a4ef
--- /dev/null
+++ b/src/plays/code-editor/Button.jsx
@@ -0,0 +1,23 @@
+import React from "react";
+
+const Button = ({ title, backgroundColor, border, onClick }) => {
+ return (
+
+
+ {title}
+
+
+ );
+};
+
+export default Button;
diff --git a/src/plays/code-editor/CodeEditor.js b/src/plays/code-editor/CodeEditor.js
index 01fc053ac..ca113b0a8 100644
--- a/src/plays/code-editor/CodeEditor.js
+++ b/src/plays/code-editor/CodeEditor.js
@@ -1,74 +1,104 @@
import PlayHeader from "common/playlists/PlayHeader";
import "./styles.css";
-import React, { useState, useEffect } from 'react';
-import Editor from './Editor'
-// import useLocalStorage from './useLocalstorage'
+import React, { useState, useEffect } from "react";
+import Editor from "./Editor";
+import Button from './Button'
+// import useLocalStorage from "./useLocalstorage";
// WARNING: Do not change the entry componenet name
function CodeEditor(props) {
// Your Code Start below.
- const [html, setHtml] = useState('')
- const [css, setCss] = useState('')
- const [js, setJs] = useState('')
- const [srcDoc, setSrcDoc] = useState('')
+ const [openedEditor, setOpenedEditor] = useState("html");
+ const [activeButton, setActiveButton] = useState("html");
+
+ const [html, setHtml] = useState("");
+ const [css, setCss] = useState("");
+ const [js, setJs] = useState("");
+ const [srcDoc, setSrcDoc] = useState(``);
+
+ const onTabClick = (editorName) => {
+ setOpenedEditor(editorName);
+ setActiveButton(editorName);
+ };
useEffect(() => {
- const timeout = setTimeout(() => {
- setSrcDoc(`
-
- ${html}
-
-
-
- `)
- },250)
+ const timeOut = setTimeout(() => {
+ setSrcDoc(
+ `
+
+ ${html}
+
+
+
+ `
+ );
+ }, 250);
- return () => clearTimeout(timeout)
- }, [html, css, js])
+ return () => clearTimeout(timeOut);
+ }, [html, css, js]);
return (
- <>
-
+ <>
+
{/* Your Code Starts Here */}
-
-
+ {
+ onTabClick("html");
+ }}
/>
- {
+ onTabClick("css");
+ }}
/>
- {
+ onTabClick("js");
+ }}
/>
-
+
+ {openedEditor === "html" ? (
+
+ ) : openedEditor === "css" ? (
+
+ ) : (
+
+ )}
+
+
- {/*
-
Play Details - Code Editor
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Pellentesque euismod, urna eu tincidunt consectetur,
- nisi nunc ultricies nisi, eget consectetur nunc nisi
- euismod nunc.
-
-
*/}
{/* Your Code Ends Here */}
diff --git a/src/plays/code-editor/Editor.jsx b/src/plays/code-editor/Editor.jsx
index a471c9b3d..55719c268 100644
--- a/src/plays/code-editor/Editor.jsx
+++ b/src/plays/code-editor/Editor.jsx
@@ -1,50 +1,71 @@
-import React, { useState } from 'react'
-import 'codemirror/lib/codemirror.css'
-import 'codemirror/theme/seti.css'
-import 'codemirror/mode/xml/xml'
-import 'codemirror/mode/javascript/javascript'
-import 'codemirror/mode/css/css'
-import { Controlled as ControlledEditor } from 'react-codemirror2'
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
-import { faCompressAlt, faExpandAlt } from '@fortawesome/free-solid-svg-icons'
-
-export default function Editor(props) {
- const {
- language,
- displayName,
- value,
- onChange
- } = props
- const [open, setOpen] = useState(true)
-
- function handleChange(editor, data, value) {
- onChange(value)
- }
+import React, { useState,useEffect } from 'react';
+import 'codemirror/lib/codemirror.css';
+import 'codemirror/theme/dracula.css';
+import 'codemirror/theme/material.css';
+
+import 'codemirror/theme/mdn-like.css';
+import 'codemirror/theme/the-matrix.css';
+import 'codemirror/theme/night.css';
+
+import 'codemirror/mode/xml/xml';
+import 'codemirror/mode/javascript/javascript';
+import 'codemirror/mode/css/css';
+
+import 'codemirror/addon/edit/closebrackets';
+import 'codemirror/addon/edit/closetag';
+
+import { Controlled as ControlledEditorComponent } from 'react-codemirror2';
+
+
+const Editor = ({ language, value, setEditorState }) => {
+
+ const [theme, setTheme] = useState("dracula")
+ const handleChange = (editor, data, value) => {
+ setEditorState(value);
+ }
+
+ const themeArray = ['dracula', 'material', 'mdn-like', 'the-matrix', 'night']
+
+ // const remover=function(){
+ // const editors = document.getElementsByClassName('CodeMirror');
+ // for(let i=1;i
{
+ // remover;
+ // },[])
return (
-
-
- {displayName}
-
setOpen(prevOpen => !prevOpen)}
- >
-
-
+
+
+ Choose a theme:
+ {
+ setTheme(el.target.value)
+ }}>
+ {
+ themeArray.map( theme => (
+ {theme}
+ ))
+ }
+
-
-
+
)
-}
\ No newline at end of file
+}
+
+export default Editor
\ No newline at end of file
diff --git a/src/plays/code-editor/styles.css b/src/plays/code-editor/styles.css
index 6136d7eff..51804080e 100644
--- a/src/plays/code-editor/styles.css
+++ b/src/plays/code-editor/styles.css
@@ -1,67 +1,77 @@
/* enter stlyes here */
-.top-pane {
- background-color: hsl(225, 6%, 25%);;
- }
-
- .pane {
- height: 50vh;
- display: flex;
- }
+body {
+ margin: 0;
+}
+
+/* .top-pane {
+ background-color: hsl(225, 6%, 25%);;
+}
+
+.pane {
+ height: 50vh;
+ display: flex;
+}
+
+.editor-container {
+ flex-grow: 1;
+ flex-basis: 0;
+ display: flex;
+ flex-direction: column;
+ padding: .5rem;
+ background-color: hsl(225, 6%, 25%);
+}
+
+.editor-container.collapsed {
+ flex-grow: 0;
+}
+
+.editor-container.collapsed .CodeMirror-scroll {
+ position: absolute;
+ overflow: hidden !important;
+}
+
+.expand-collapse-btn {
+ margin-left: .5rem;
+ background: none;
+ border: none;
+ color: white;
+ cursor: pointer;
+}
+
+.editor-title {
+ display: flex;
+ justify-content: space-between;
+ background-color: hsl(225, 87%, 44%);
+ color: white;
+ padding: .5rem .5rem .5rem 1rem;
+ border-top-right-radius: .5rem;
+ border-top-left-radius: .5rem;
+}
+
+.CodeMirror {
+ height: 100% !important;
+}
+
+.code-mirror-wrapper {
+ flex-grow: 1;
+ border-bottom-right-radius: .5rem;
+ border-bottom-left-radius: .5rem;
+ overflow: hidden;
- .editor-container {
- flex-grow: 1;
- flex-basis: 0;
+}
+@media (max-width:764px) {
+ .top-pane{
display: flex;
flex-direction: column;
- padding: .5rem;
- background-color: hsl(225, 6%, 25%);
- }
-
- .editor-container.collapsed {
- flex-grow: 0;
- }
-
- .editor-container.collapsed .CodeMirror-scroll {
- position: absolute;
- overflow: hidden !important;
+ height: 100%;
}
-
- .expand-collapse-btn {
- margin-left: .5rem;
- background: none;
- border: none;
- color: white;
- cursor: pointer;
- }
-
- .editor-title {
- display: flex;
- justify-content: space-between;
- background-color: hsl(225, 87%, 44%);
- color: white;
- padding: .5rem .5rem .5rem 1rem;
- border-top-right-radius: .5rem;
- border-top-left-radius: .5rem;
- }
-
- .CodeMirror {
- height: 100% !important;
- }
-
- .code-mirror-wrapper {
- flex-grow: 1;
- border-bottom-right-radius: .5rem;
- border-bottom-left-radius: .5rem;
- overflow: hidden;
-
+ .pane{
+ height: 100vh;
}
- @media (max-width:764px) {
- .top-pane{
- display: flex;
- flex-direction: column;
- height: 100%;
- }
- .pane{
- height: 100vh;
- }
- }
\ No newline at end of file
+} */
+.ab-button-container{
+ display: flex;
+}
+.editor-container{
+ padding-top: 0.5%;
+}
\ No newline at end of file
From 93b8496a0e1b5ffd7e4b8c7f699a210a8e1e0722 Mon Sep 17 00:00:00 2001
From: Saksham chandel <94097778+yung-coder@users.noreply.github.com>
Date: Wed, 10 Aug 2022 20:02:56 +0530
Subject: [PATCH 05/24] init
---
package.json | 4 +-
src/plays/code-editor/Button.jsx | 5 +-
src/plays/code-editor/CodeEditor.js | 4 +-
src/plays/code-editor/Editor.jsx | 6 +-
src/plays/code-editor/styles.css | 111 +++++++++++++---------------
5 files changed, 59 insertions(+), 71 deletions(-)
diff --git a/package.json b/package.json
index 616c7cf11..b78c2fb75 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"@types/react-dom": "^18.0.2",
"add": "^2.0.6",
"axios": "^0.27.2",
- "codemirror": "^5.59.1",
+ "codemirror": "^5.65.7",
"create-react-play": "^0.0.10",
"date-fns": "^2.28.0",
"downloadjs": "^1.4.7",
@@ -28,7 +28,7 @@
"lodash": "^4.17.21",
"node-sass": "^7.0.1",
"react": "^18.0.0",
- "react-codemirror2": "^7.1.0",
+ "react-codemirror2": "^7.2.1",
"react-dom": "^18.0.0",
"react-helmet": "^6.1.0",
"react-icons": "^4.3.1",
diff --git a/src/plays/code-editor/Button.jsx b/src/plays/code-editor/Button.jsx
index 88839a4ef..41f04b961 100644
--- a/src/plays/code-editor/Button.jsx
+++ b/src/plays/code-editor/Button.jsx
@@ -4,11 +4,8 @@ const Button = ({ title, backgroundColor, border, onClick }) => {
return (
)}
-
-
+
+