feat: script action
This commit is contained in:
63
src/components/molecules/action-settings/script.tsx
Normal file
63
src/components/molecules/action-settings/script.tsx
Normal file
@@ -0,0 +1,63 @@
|
||||
import React, { forwardRef, useImperativeHandle } from 'react';
|
||||
import Editor from 'react-simple-code-editor';
|
||||
// @ts-ignore
|
||||
import { highlight, languages } from 'prismjs/components/prism-core';
|
||||
import 'prismjs/components/prism-clike';
|
||||
import 'prismjs/components/prism-javascript';
|
||||
import 'prismjs/themes/prism.css';
|
||||
import styled from "styled-components";
|
||||
import InfoIcon from '@mui/icons-material/Info';
|
||||
import { WarningText } from "../../atoms/texts";
|
||||
|
||||
export const ScriptSettings = forwardRef((props, ref) => {
|
||||
const [code, setCode] = React.useState('');
|
||||
|
||||
useImperativeHandle(ref, () => ({
|
||||
getSettings() {
|
||||
return code;
|
||||
}
|
||||
}));
|
||||
|
||||
return (
|
||||
<EditorWrapper>
|
||||
<WarningText>
|
||||
<InfoIcon color='warning'/>
|
||||
Allows to run an arbitrary asynchronous function evaluated at the server
|
||||
side accepting the current page instance argument.
|
||||
</WarningText>
|
||||
<StyledEditor
|
||||
placeholder="Type some code…"
|
||||
value={code}
|
||||
onValueChange={code => setCode(code)}
|
||||
highlight={code => highlight(code, languages.js)}
|
||||
padding={10}
|
||||
style={{
|
||||
fontFamily: '"Fira code", "Fira Mono", monospace',
|
||||
fontSize: 12,
|
||||
background: '#f0f0f0',
|
||||
}}
|
||||
/>
|
||||
</EditorWrapper>
|
||||
);
|
||||
});
|
||||
|
||||
const EditorWrapper = styled.div`
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
/** hard-coded height */
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
`;
|
||||
|
||||
const StyledEditor = styled(Editor)`
|
||||
white-space: pre;
|
||||
caret-color: #fff;
|
||||
min-width: 100%;
|
||||
min-height: 100%;
|
||||
float: left;
|
||||
& > textarea,
|
||||
& > pre {
|
||||
outline: none;
|
||||
white-space: pre !important;
|
||||
}
|
||||
`;
|
||||
Reference in New Issue
Block a user