
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
react-simple-code-editor
Advanced tools
react-simple-code-editor is a lightweight code editor component for React applications. It provides a simple and customizable way to integrate a code editor into your React projects, supporting syntax highlighting and other basic code editing functionalities.
Basic Code Editing
This feature allows you to create a basic code editor with syntax highlighting for JavaScript. The code sample demonstrates how to set up the editor, handle code changes, and apply syntax highlighting using Prism.js.
import React, { useState } from 'react';
import Editor from 'react-simple-code-editor';
import { highlight, languages } from 'prismjs/components/prism-core';
import 'prismjs/components/prism-clike';
import 'prismjs/components/prism-javascript';
const CodeEditor = () => {
const [code, setCode] = useState('// Write your code here');
return (
<Editor
value={code}
onValueChange={code => setCode(code)}
highlight={code => highlight(code, languages.js)}
padding={10}
style={{
fontFamily: 'monospace',
fontSize: 12,
}}
/>
);
};
export default CodeEditor;
Custom Styling
This feature demonstrates how to apply custom styling to the code editor. The code sample shows how to change the font size, background color, border, and padding to create a more customized appearance.
import React, { useState } from 'react';
import Editor from 'react-simple-code-editor';
import { highlight, languages } from 'prismjs/components/prism-core';
import 'prismjs/components/prism-clike';
import 'prismjs/components/prism-javascript';
const CustomStyledEditor = () => {
const [code, setCode] = useState('// Write your code here');
return (
<Editor
value={code}
onValueChange={code => setCode(code)}
highlight={code => highlight(code, languages.js)}
padding={10}
style={{
fontFamily: 'monospace',
fontSize: 14,
backgroundColor: '#f5f5f5',
border: '1px solid #ddd',
borderRadius: '4px',
padding: '10px'
}}
/>
);
};
export default CustomStyledEditor;
react-ace is a React component for the Ace code editor. It provides a more feature-rich and customizable code editing experience compared to react-simple-code-editor, including support for multiple themes, keybindings, and language modes.
react-codemirror2 is a React wrapper for the CodeMirror code editor. It offers extensive customization options, a wide range of language modes, and various add-ons for enhanced functionality. It is more feature-complete than react-simple-code-editor but also more complex to set up.
react-monaco-editor is a React component for the Monaco Editor, which powers Visual Studio Code. It provides a highly advanced code editing experience with features like IntelliSense, multiple cursors, and rich language support. It is more powerful and feature-rich compared to react-simple-code-editor.
Simple no-frills code editor with syntax highlighting.
Several browser based code editors such as Ace, CodeMirror, Monaco etc. provide the ability to embed a full-featured code editor in your web page. However, if you just need a simple editor with syntax highlighting without any of the extra features, they can be overkill as they don't usually have a small bundle size footprint. This library aims to provide a simple code editor with syntax highlighting support without any of the extra features, perfect for simple embeds and forms where users can submit code.
npm install react-simple-code-editor
or
yarn add react-simple-code-editor
You need to use the editor with a third party library which provides syntax highlighting. For example, it'll look like following with prismjs
:
import React from 'react';
import Editor from 'react-simple-code-editor';
import { highlight, languages } from 'prismjs/components/prism-core';
import 'prismjs/components/prism-clike';
import 'prismjs/components/prism-javascript';
const code = `function add(a, b) {
return a + b;
}
`;
class App extends React.Component {
state = { code };
render() {
return (
<Editor
value={this.state.code}
onValueChange={code => this.setState({ code })}
highlight={code => highlight(code, languages.jsx)}
padding={10}
style={{
fontFamily: '"Fira code", "Fira Mono", monospace',
fontSize: 12,
}}
/>
);
}
}
value
(string
): Current value of the editor. Pass the code to display as a prop.onValueChange
(string => mixed
): Callback which is called when the value of the editor changes. You'll need to update the value prop when this is called.highlight
(string => string
): Callback which will receive text to highlight. You'll need to return HTML with syntax highlighting using a library such as prismjs
.tabSize
(number
): Optional prop to control the tab size. For example, for 4 space indentation, tabSize
will be 4
and insertSpaces
will be true
. Default: 2
.insertSpaces
(boolean
): Optional prop to control whether to use spaces for indentation. Default: true
.padding
(number
): Optional padding for code. Default: 0
.satya164.github.io/react-simple-code-editor
It works by overlaying a syntax highlighted <pre>
block over a <textarea>
. When you type, select, copy text etc., you interact with the underlying <textarea>
, so the experience feels native. This is a very simple approach compared to other editors which re-implement the behaviour.
The syntax highlighting can be done by any third party library as long as it returns HTML and is fully controllable by the user.
The vanilla <textarea>
doesn't support inserting tab characters for indentation, so we re-implement it by listening to keydown
events and programmatically updating the text. One caveat with programmatically updating the text is that we lose the undo stack, so we need to maintain our own undo stack. As a result, we can also implement improved undo behaviour such as undoing whole words similar to editors like VSCode.
Using the undo/redo option from browser's context menu can mess things up.
While developing, you can run the example app to test your changes:
yarn example
Make sure your code passes Flow and ESLint. Run the following to verify:
yarn flow
yarn lint
To fix formatting errors, run the following:
yarn lint -- --fix
FAQs
Simple no-frills code editor with syntax highlighting
The npm package react-simple-code-editor receives a total of 249,336 weekly downloads. As such, react-simple-code-editor popularity was classified as popular.
We found that react-simple-code-editor demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.