108 | );
109 | };
110 |
--------------------------------------------------------------------------------
/src/components/rule/rule-type-froms/rule-script-form-worker.ts:
--------------------------------------------------------------------------------
1 | import * as monaco from 'monaco-editor';
2 | import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
3 | import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
4 |
5 | // @ts-ignore
6 | self.MonacoEnvironment = {
7 | getWorker(_: unknown, label: string) {
8 | if (label === 'typescript' || label === 'javascript') {
9 | return new tsWorker();
10 | }
11 | return new editorWorker();
12 | },
13 | };
14 |
15 | monaco.languages.typescript.javascriptDefaults.addExtraLib(
16 | `
17 | var args: { fileInfo: { name: string; ext: string; fullName: string; }, index: number };
18 | `,
19 | );
20 | monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);
21 |
--------------------------------------------------------------------------------
/src/components/rule/rule-type-froms/rule-script-form.module.css:
--------------------------------------------------------------------------------
1 | .editor {
2 | width: 100%;
3 | height: 100%;
4 |
5 | &> div {
6 | outline: none !important;
7 | }
8 | }
--------------------------------------------------------------------------------
/src/components/rule/rule-type-froms/rule-script-form.tsx:
--------------------------------------------------------------------------------
1 | import type { RULE_SCRIPT_TYPE, Rule, RuleScriptInfo } from '@/lib/rule';
2 | import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
3 | import { useEffect, useRef, type FC } from 'react';
4 | import { useFormContext } from 'react-hook-form';
5 | import './rule-script-form-worker';
6 | import classes from './rule-script-form.module.css';
7 |
8 | const RuleScriptForm: FC = () => {
9 | const form = useFormContext