Skip to content

Commit 941a49f

Browse files
authored
Merge pull request #47 from Aviral09/dev
Updated File Editing
2 parents 1a46bdb + 5e1e0d3 commit 941a49f

2 files changed

Lines changed: 55 additions & 33 deletions

File tree

src/component/modals/FileEdit.jsx

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ import { highlight, languages } from 'prismjs/components/prism-core';
44
import { saveAs } from 'file-saver';
55
import Modal from './ParentModal';
66
import './file-edit.css';
7+
import 'prismjs/components/prism-bash';
78
import 'prismjs/components/prism-clike';
9+
import 'prismjs/components/prism-c';
10+
import 'prismjs/components/prism-cpp';
11+
import 'prismjs/components/prism-matlab';
12+
import 'prismjs/components/prism-verilog';
13+
import 'prismjs/components/prism-python';
814
import 'prismjs/components/prism-javascript';
915
import 'prismjs/themes/prism.css';
1016
import { actionType as T } from '../../reducer';
@@ -20,8 +26,12 @@ const FileEditModal = ({ superState, dispatcher }) => {
2026
}
2127
}, []);
2228

23-
const close = () => dispatcher({ type: T.EDIT_TEXTFILE, payload: { show: false } });
24-
// TODO - Save file
29+
const close = () => {
30+
dispatcher({ type: T.EDIT_TEXTFILE, payload: { show: false } });
31+
setCodeStuff('');
32+
setFileName('');
33+
};
34+
2535
async function submit() {
2636
if (superState.fileHandle) {
2737
const stream = await superState.fileHandle.createWritable();
@@ -62,14 +72,33 @@ const FileEditModal = ({ superState, dispatcher }) => {
6272
}
6373
}, [superState.fileObj]);
6474

75+
function highlightSyntax(code) {
76+
const extensions = ['v', 'c', 'h', 'hpp', 'cpp', 'py', 'm', 'sh'];
77+
const fileEx = fileName.split('.').pop();
78+
if (extensions.includes(fileEx)) {
79+
switch (fileEx) {
80+
case 'v': return highlight(code, languages.verilog, 'verilog');
81+
case 'c': return highlight(code, languages.c, 'c');
82+
case 'h': return highlight(code, languages.c, 'c');
83+
case 'hpp': return highlight(code, languages.c, 'c');
84+
case 'cpp': return highlight(code, languages.cpp, 'cpp');
85+
case 'py': return highlight(code, languages.python, 'python');
86+
case 'm': return highlight(code, languages.matlab, 'matlab');
87+
case 'sh': return highlight(code, languages.bash, 'bash');
88+
default: return highlight(code, languages.plaintext);
89+
}
90+
}
91+
return highlight(code, languages.plaintext);
92+
}
93+
6594
return (
6695
<Modal
6796
ModelOpen={superState.textFileModal}
6897
closeModal={close}
6998
title={fileName}
7099
>
71-
<div className="File Edit Container">
72-
<div className="footer">
100+
<div>
101+
<div className="save-bar">
73102
{fileName
74103
&& (
75104
<button type="submit" className="btn btn-primary" onClick={submit}>Save</button>
@@ -81,27 +110,32 @@ const FileEditModal = ({ superState, dispatcher }) => {
81110
<button type="submit" className="btn btn-primary" onClick={saveSubmit}>Save As</button>
82111
)}
83112
</div>
84-
<div
85-
style={{
86-
minHeight: '400px',
87-
}}
88-
>
113+
<div className="setting-container">
89114
<Editor
90115
value={codeStuff}
91116
onValueChange={(e) => setCodeStuff(e)}
92-
highlight={(code) => highlight(code, languages.js)}
117+
highlight={(code) => highlightSyntax(code)}
93118
padding={10}
94119
style={{
95120
fontFamily: '"Arial"',
96121
fontSize: 16,
97122
minHeight: '100vh',
98-
minWidth: '80vw',
123+
minWidth: '90vw',
99124
border: '1px solid black',
100125
}}
101126
/>
102127
</div>
103-
<div className="footer">
104-
<button type="submit" className="btn btn-primary" onClick={submit}>Save</button>
128+
<div className="save-bar">
129+
{fileName
130+
&& (
131+
<button type="submit" className="btn btn-primary" onClick={submit}>Save</button>
132+
)}
133+
{dirButton && (
134+
<button type="submit" className="btn btn-primary" onClick={saveAsSubmit}>Save As</button>
135+
)}
136+
{!dirButton && (
137+
<button type="submit" className="btn btn-primary" onClick={saveSubmit}>Save As</button>
138+
)}
105139
</div>
106140
</div>
107141
</Modal>

src/component/modals/file-edit.css

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,26 @@
11
.setting-container{
22
display: grid;
33
grid-template-columns: auto auto;
4-
grid-gap: 20px;
5-
margin: 20px;
4+
grid-gap: 0px;
5+
margin: 0px;
66
width: 90vw;
7+
min-height: '400px',
78
}
89

9-
.setting-container .footer{
10+
.save-bar{
1011
display: flex;
1112
flex-wrap: wrap;
12-
align-items: center;
1313
justify-content: flex-end;
14-
padding: .75rem;
15-
border-top: 1px solid #dee2e6;
16-
border-bottom-right-radius: calc(.3rem - 1px);
17-
border-bottom-left-radius: calc(.3rem - 1px);
18-
grid-column: 1/3;
14+
margin-bottom: 5px;
15+
margin-top: 5px;
1916
}
2017

21-
.setting-container .footer>* {
22-
margin: .25rem;
23-
}
24-
25-
.setting-container .error{
26-
color: #ff0000;
27-
text-align: center;
28-
grid-column: 1/3;
18+
.save-bar .btn {
19+
margin-right: 5px;
2920
}
3021

3122
@media screen and (max-width: 890px) {
3223
.setting-container{
3324
grid-template-columns: auto;
3425
}
35-
.setting-container .footer{
36-
grid-column: 1/2;
37-
}
3826
}

0 commit comments

Comments
 (0)