gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/dialogs/settings/node-config-editor.tsx · v0.4.1
Source
1 ff900b8 Mrdn 2y ago
2 ff900b8 Mrdn 2y ago import Editor from '@monaco-editor/react';
3 ff900b8 Mrdn 2y ago import { useTheme } from "@marzneshin/features/theme-switch";
4 ff900b8 Mrdn 2y ago import { useNodesSettings } from "./use-nodes-settings";
5 ff900b8 Mrdn 2y ago import { Button } from '@marzneshin/components';
6 ff900b8 Mrdn 2y ago import { useTranslation } from 'react-i18next';
7 ff900b8 Mrdn 2y ago import { NodeType } from '../..';
8 ff900b8 Mrdn 2y ago
9 ff900b8 Mrdn 2y ago export const NodeConfigEditor = ({ entity }: { entity: NodeType }) => {
10 ff900b8 Mrdn 2y ago const { t } = useTranslation()
11 ff900b8 Mrdn 2y ago const { theme } = useTheme()
12 ff900b8 Mrdn 2y ago const {
13 ff900b8 Mrdn 2y ago payloadValidity,
14 ff900b8 Mrdn 2y ago data,
15 ff900b8 Mrdn 2y ago handleConfigSave,
16 ff900b8 Mrdn 2y ago handleConfigChange,
17 ff900b8 Mrdn 2y ago handleEditorValidation
18 ff900b8 Mrdn 2y ago } = useNodesSettings(entity)
19 ff900b8 Mrdn 2y ago
20 ff900b8 Mrdn 2y ago return (<>
21 ff900b8 Mrdn 2y ago <Editor
22 ff900b8 Mrdn 2y ago height="50vh"
23 ff900b8 Mrdn 2y ago className="rounded-sm border"
24 ff900b8 Mrdn 2y ago defaultLanguage="json"
25 ff900b8 Mrdn 2y ago theme={theme === "dark" ? "vs-dark" : "github"}
26 ff900b8 Mrdn 2y ago defaultValue={JSON.stringify(data, null, '\t')}
27 ff900b8 Mrdn 2y ago onChange={handleConfigChange}
28 ff900b8 Mrdn 2y ago onValidate={handleEditorValidation}
29 ff900b8 Mrdn 2y ago
30 ff900b8 Mrdn 2y ago />
31 ff900b8 Mrdn 2y ago <Button
32 ff900b8 Mrdn 2y ago className="w-full"
33 ff900b8 Mrdn 2y ago variant={!payloadValidity ? "destructive" : "default"}
34 ff900b8 Mrdn 2y ago onClick={handleConfigSave}
35 ff900b8 Mrdn 2y ago disabled={!payloadValidity}
36 ff900b8 Mrdn 2y ago >
37 ff900b8 Mrdn 2y ago {t('save')}
38 ff900b8 Mrdn 2y ago </Button>
39 ff900b8 Mrdn 2y ago </>
40 ff900b8 Mrdn 2y ago )
41 ff900b8 Mrdn 2y ago }