From 71d23129eff75fb89e95e7a33b3683c2017ce72c Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 14 十月 2024 11:21:49 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/JsonShow.jsx |   80 ++++++++++++++++++++++++++--------------
 1 files changed, 52 insertions(+), 28 deletions(-)

diff --git a/zy-acs-flow/src/map/JsonShow.jsx b/zy-acs-flow/src/map/JsonShow.jsx
index f2df704..977fed5 100644
--- a/zy-acs-flow/src/map/JsonShow.jsx
+++ b/zy-acs-flow/src/map/JsonShow.jsx
@@ -1,5 +1,10 @@
 import React, { useState, useRef, useEffect } from 'react';
 import { Box, Typography, Paper, useTheme } from '@mui/material';
+import { Light as SyntaxHighlighter } from 'react-syntax-highlighter';
+import jsonLang from 'react-syntax-highlighter/dist/esm/languages/hljs/json';
+import { xcode, atomOneDark, a11yLight } from 'react-syntax-highlighter/dist/esm/styles/hljs';
+
+// https://react-syntax-highlighter.github.io/react-syntax-highlighter/demo/
 
 const parseJson = (jsonStr) => {
     let json = '';
@@ -10,6 +15,53 @@
         json = 'Invalid JSON';
     }
     return json;
+}
+
+SyntaxHighlighter.registerLanguage('json', jsonLang);
+
+const JsonShow = ({ data, height = 500 }) => {
+    const theme = useTheme();
+    const themeMode = theme.palette.mode;
+
+    let json = parseJson(data);
+
+    return (
+        <Paper
+            elevation={3}
+            sx={{
+                padding: 2,
+                maxHeight: height,
+                overflow: 'auto',
+                backgroundColor: theme.palette.background.paper,
+                borderRadius: 2,
+            }}
+        >
+            <pre style={{ margin: 0, fontFamily: 'monospace', whiteSpace: 'pre-wrap' }}>
+                {json === 'Invalid JSON' ? (
+                    <Typography color="error">Invalid JSON</Typography>
+                ) : (
+
+                    <SyntaxHighlighter
+                        language="json"
+                        style={themeMode === 'dark' ? atomOneDark : xcode}
+                        customStyle={{
+                            backgroundColor: 'transparent',
+                            padding: 0,
+                            fontSize: '0.875rem', // 14px
+                            fontFamily: 'monospace',
+                            whiteSpace: 'pre-wrap',
+                            wordBreak: 'break-word',
+                            // fontWeight: 'bold',
+                        }}
+                        showLineNumbers
+                    >
+                        {json}
+                    </SyntaxHighlighter>
+                    // renderFormattedJson(json)
+                )}
+            </pre>
+        </Paper>
+    );
 }
 
 const renderFormattedJson = (json) => {
@@ -43,33 +95,5 @@
 
 };
 
-const JsonShow = ({ data, height = 500 }) => {
-    const theme = useTheme();
-    const themeMode = theme.palette.mode;
-
-    let json = parseJson(data);
-
-    return (
-        <Paper
-            elevation={3}
-            sx={{
-                padding: 2,
-                maxHeight: height,
-                overflow: 'auto',
-                backgroundColor: theme.palette.background.paper,
-                borderRadius: 2,
-            }}
-        >
-            <pre style={{ margin: 0, fontFamily: 'monospace', whiteSpace: 'pre-wrap' }}>
-                {json === 'Invalid JSON' ? (
-                    <Typography color="error">Invalid JSON</Typography>
-                ) : (
-                    renderFormattedJson(json)
-                )}
-            </pre>
-        </Paper>
-    );
-
-}
 
 export default JsonShow;
\ No newline at end of file

--
Gitblit v1.9.1