perf: markdown redraw

This commit is contained in:
archer
2023-06-19 16:50:14 +08:00
parent 3b515c3c2d
commit 1d236f87ae
11 changed files with 271 additions and 458 deletions

View File

@@ -35,7 +35,7 @@
"jsonwebtoken": "^9.0.0",
"lodash": "^4.17.21",
"mammoth": "^1.5.1",
"mermaid": "^8.13.5",
"mermaid": "^10.2.3",
"mongoose": "^6.10.0",
"nanoid": "^4.0.1",
"next": "13.1.6",
@@ -49,9 +49,10 @@
"react-day-picker": "^8.7.1",
"react-dom": "18.2.0",
"react-hook-form": "^7.43.1",
"react-markdown": "^8.0.5",
"react-markdown": "^8.0.7",
"react-syntax-highlighter": "^15.5.0",
"rehype-katex": "^6.0.2",
"remark-breaks": "^3.0.3",
"remark-gfm": "^3.0.1",
"remark-math": "^5.1.1",
"request-ip": "^3.3.0",

513
client/pnpm-lock.yaml generated
View File

@@ -84,8 +84,8 @@ dependencies:
specifier: ^1.5.1
version: registry.npmmirror.com/mammoth@1.5.1
mermaid:
specifier: ^8.13.5
version: registry.npmmirror.com/mermaid@8.13.5
specifier: ^10.2.3
version: registry.npmmirror.com/mermaid@10.2.3
mongoose:
specifier: ^6.10.0
version: registry.npmmirror.com/mongoose@6.10.0
@@ -126,14 +126,17 @@ dependencies:
specifier: ^7.43.1
version: registry.npmmirror.com/react-hook-form@7.43.1(react@18.2.0)
react-markdown:
specifier: ^8.0.5
version: registry.npmmirror.com/react-markdown@8.0.5(@types/react@18.0.28)(react@18.2.0)
specifier: ^8.0.7
version: registry.npmmirror.com/react-markdown@8.0.7(@types/react@18.0.28)(react@18.2.0)
react-syntax-highlighter:
specifier: ^15.5.0
version: registry.npmmirror.com/react-syntax-highlighter@15.5.0(react@18.2.0)
rehype-katex:
specifier: ^6.0.2
version: registry.npmmirror.com/rehype-katex@6.0.2
remark-breaks:
specifier: ^3.0.3
version: registry.npmmirror.com/remark-breaks@3.0.3
remark-gfm:
specifier: ^3.0.1
version: registry.npmmirror.com/remark-gfm@3.0.1
@@ -2923,11 +2926,10 @@ packages:
'@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.5
to-fast-properties: registry.npmmirror.com/to-fast-properties@2.0.0
registry.npmmirror.com/@braintree/sanitize-url@3.1.0:
resolution: {integrity: sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz}
registry.npmmirror.com/@braintree/sanitize-url@6.0.2:
resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz}
name: '@braintree/sanitize-url'
version: 3.1.0
deprecated: Potential XSS vulnerability patched in v6.0.0.
version: 6.0.2
dev: false
registry.npmmirror.com/@chakra-ui/accordion@2.2.0(@chakra-ui/system@2.5.8)(framer-motion@9.0.6)(react@18.2.0):
@@ -6109,12 +6111,6 @@ packages:
version: 2.0.3
dev: false
registry.npmmirror.com/commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz}
name: commander
version: 2.20.3
dev: false
registry.npmmirror.com/commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz}
name: commander
@@ -6197,6 +6193,22 @@ packages:
vary: registry.npmmirror.com/vary@1.1.2
dev: false
registry.npmmirror.com/cose-base@1.0.3:
resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cose-base/-/cose-base-1.0.3.tgz}
name: cose-base
version: 1.0.3
dependencies:
layout-base: registry.npmmirror.com/layout-base@1.0.2
dev: false
registry.npmmirror.com/cose-base@2.2.0:
resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cose-base/-/cose-base-2.2.0.tgz}
name: cose-base
version: 2.2.0
dependencies:
layout-base: registry.npmmirror.com/layout-base@2.0.1
dev: false
registry.npmmirror.com/cosmiconfig@7.1.0:
resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz}
name: cosmiconfig
@@ -6278,10 +6290,38 @@ packages:
name: csstype
version: 3.1.2
registry.npmmirror.com/d3-array@1.2.4:
resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-array/-/d3-array-1.2.4.tgz}
name: d3-array
version: 1.2.4
registry.npmmirror.com/cytoscape-cose-bilkent@4.1.0(cytoscape@3.25.0):
resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz}
id: registry.npmmirror.com/cytoscape-cose-bilkent/4.1.0
name: cytoscape-cose-bilkent
version: 4.1.0
peerDependencies:
cytoscape: ^3.2.0
dependencies:
cose-base: registry.npmmirror.com/cose-base@1.0.3
cytoscape: registry.npmmirror.com/cytoscape@3.25.0
dev: false
registry.npmmirror.com/cytoscape-fcose@2.2.0(cytoscape@3.25.0):
resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz}
id: registry.npmmirror.com/cytoscape-fcose/2.2.0
name: cytoscape-fcose
version: 2.2.0
peerDependencies:
cytoscape: ^3.2.0
dependencies:
cose-base: registry.npmmirror.com/cose-base@2.2.0
cytoscape: registry.npmmirror.com/cytoscape@3.25.0
dev: false
registry.npmmirror.com/cytoscape@3.25.0:
resolution: {integrity: sha512-7MW3Iz57mCUo6JQCho6CmPBCbTlJr7LzyEtIkutG255HLVd4XuBg2I9BkTZLI/e4HoaOB/BiAzXuQybQ95+r9Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cytoscape/-/cytoscape-3.25.0.tgz}
name: cytoscape
version: 3.25.0
engines: {node: '>=0.10'}
dependencies:
heap: registry.npmmirror.com/heap@0.2.7
lodash: registry.npmmirror.com/lodash@4.17.21
dev: false
registry.npmmirror.com/d3-array@3.2.4:
@@ -6293,12 +6333,6 @@ packages:
internmap: registry.npmmirror.com/internmap@2.0.3
dev: false
registry.npmmirror.com/d3-axis@1.0.12:
resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-axis/-/d3-axis-1.0.12.tgz}
name: d3-axis
version: 1.0.12
dev: false
registry.npmmirror.com/d3-axis@3.0.0:
resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-axis/-/d3-axis-3.0.0.tgz}
name: d3-axis
@@ -6306,18 +6340,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-brush@1.1.6:
resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-brush/-/d3-brush-1.1.6.tgz}
name: d3-brush
version: 1.1.6
dependencies:
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-drag: registry.npmmirror.com/d3-drag@1.2.5
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
d3-selection: registry.npmmirror.com/d3-selection@1.4.2
d3-transition: registry.npmmirror.com/d3-transition@1.3.2
dev: false
registry.npmmirror.com/d3-brush@3.0.0:
resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-brush/-/d3-brush-3.0.0.tgz}
name: d3-brush
@@ -6331,15 +6353,6 @@ packages:
d3-transition: registry.npmmirror.com/d3-transition@3.0.1(d3-selection@3.0.0)
dev: false
registry.npmmirror.com/d3-chord@1.0.6:
resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-chord/-/d3-chord-1.0.6.tgz}
name: d3-chord
version: 1.0.6
dependencies:
d3-array: registry.npmmirror.com/d3-array@1.2.4
d3-path: registry.npmmirror.com/d3-path@1.0.9
dev: false
registry.npmmirror.com/d3-chord@3.0.1:
resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-chord/-/d3-chord-3.0.1.tgz}
name: d3-chord
@@ -6349,18 +6362,6 @@ packages:
d3-path: registry.npmmirror.com/d3-path@3.1.0
dev: false
registry.npmmirror.com/d3-collection@1.0.7:
resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-collection/-/d3-collection-1.0.7.tgz}
name: d3-collection
version: 1.0.7
dev: false
registry.npmmirror.com/d3-color@1.4.1:
resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-color/-/d3-color-1.4.1.tgz}
name: d3-color
version: 1.4.1
dev: false
registry.npmmirror.com/d3-color@3.1.0:
resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz}
name: d3-color
@@ -6368,14 +6369,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-contour@1.3.2:
resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-contour/-/d3-contour-1.3.2.tgz}
name: d3-contour
version: 1.3.2
dependencies:
d3-array: registry.npmmirror.com/d3-array@1.2.4
dev: false
registry.npmmirror.com/d3-contour@4.0.2:
resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-contour/-/d3-contour-4.0.2.tgz}
name: d3-contour
@@ -6394,12 +6387,6 @@ packages:
delaunator: registry.npmmirror.com/delaunator@5.0.0
dev: false
registry.npmmirror.com/d3-dispatch@1.0.6:
resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz}
name: d3-dispatch
version: 1.0.6
dev: false
registry.npmmirror.com/d3-dispatch@3.0.1:
resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz}
name: d3-dispatch
@@ -6407,15 +6394,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-drag@1.2.5:
resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-drag/-/d3-drag-1.2.5.tgz}
name: d3-drag
version: 1.2.5
dependencies:
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-selection: registry.npmmirror.com/d3-selection@1.4.2
dev: false
registry.npmmirror.com/d3-drag@3.0.0:
resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz}
name: d3-drag
@@ -6426,17 +6404,6 @@ packages:
d3-selection: registry.npmmirror.com/d3-selection@3.0.0
dev: false
registry.npmmirror.com/d3-dsv@1.2.0:
resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-dsv/-/d3-dsv-1.2.0.tgz}
name: d3-dsv
version: 1.2.0
hasBin: true
dependencies:
commander: registry.npmmirror.com/commander@2.20.3
iconv-lite: registry.npmmirror.com/iconv-lite@0.4.24
rw: registry.npmmirror.com/rw@1.3.3
dev: false
registry.npmmirror.com/d3-dsv@3.0.1:
resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz}
name: d3-dsv
@@ -6449,12 +6416,6 @@ packages:
rw: registry.npmmirror.com/rw@1.3.3
dev: false
registry.npmmirror.com/d3-ease@1.0.7:
resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-ease/-/d3-ease-1.0.7.tgz}
name: d3-ease
version: 1.0.7
dev: false
registry.npmmirror.com/d3-ease@3.0.1:
resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz}
name: d3-ease
@@ -6462,14 +6423,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-fetch@1.2.0:
resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-fetch/-/d3-fetch-1.2.0.tgz}
name: d3-fetch
version: 1.2.0
dependencies:
d3-dsv: registry.npmmirror.com/d3-dsv@1.2.0
dev: false
registry.npmmirror.com/d3-fetch@3.0.1:
resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-fetch/-/d3-fetch-3.0.1.tgz}
name: d3-fetch
@@ -6479,17 +6432,6 @@ packages:
d3-dsv: registry.npmmirror.com/d3-dsv@3.0.1
dev: false
registry.npmmirror.com/d3-force@1.2.1:
resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-force/-/d3-force-1.2.1.tgz}
name: d3-force
version: 1.2.1
dependencies:
d3-collection: registry.npmmirror.com/d3-collection@1.0.7
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-quadtree: registry.npmmirror.com/d3-quadtree@1.0.7
d3-timer: registry.npmmirror.com/d3-timer@1.0.10
dev: false
registry.npmmirror.com/d3-force@3.0.0:
resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz}
name: d3-force
@@ -6501,12 +6443,6 @@ packages:
d3-timer: registry.npmmirror.com/d3-timer@3.0.1
dev: false
registry.npmmirror.com/d3-format@1.4.5:
resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-format/-/d3-format-1.4.5.tgz}
name: d3-format
version: 1.4.5
dev: false
registry.npmmirror.com/d3-format@3.1.0:
resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz}
name: d3-format
@@ -6514,14 +6450,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-geo@1.12.1:
resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-geo/-/d3-geo-1.12.1.tgz}
name: d3-geo
version: 1.12.1
dependencies:
d3-array: registry.npmmirror.com/d3-array@1.2.4
dev: false
registry.npmmirror.com/d3-geo@3.1.0:
resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.0.tgz}
name: d3-geo
@@ -6531,12 +6459,6 @@ packages:
d3-array: registry.npmmirror.com/d3-array@3.2.4
dev: false
registry.npmmirror.com/d3-hierarchy@1.1.9:
resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz}
name: d3-hierarchy
version: 1.1.9
dev: false
registry.npmmirror.com/d3-hierarchy@3.1.2:
resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz}
name: d3-hierarchy
@@ -6544,14 +6466,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-interpolate@1.4.0:
resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz}
name: d3-interpolate
version: 1.4.0
dependencies:
d3-color: registry.npmmirror.com/d3-color@1.4.1
dev: false
registry.npmmirror.com/d3-interpolate@3.0.1:
resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz}
name: d3-interpolate
@@ -6561,12 +6475,6 @@ packages:
d3-color: registry.npmmirror.com/d3-color@3.1.0
dev: false
registry.npmmirror.com/d3-path@1.0.9:
resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-path/-/d3-path-1.0.9.tgz}
name: d3-path
version: 1.0.9
dev: false
registry.npmmirror.com/d3-path@3.1.0:
resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz}
name: d3-path
@@ -6574,12 +6482,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-polygon@1.0.6:
resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-polygon/-/d3-polygon-1.0.6.tgz}
name: d3-polygon
version: 1.0.6
dev: false
registry.npmmirror.com/d3-polygon@3.0.1:
resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-polygon/-/d3-polygon-3.0.1.tgz}
name: d3-polygon
@@ -6587,12 +6489,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-quadtree@1.0.7:
resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz}
name: d3-quadtree
version: 1.0.7
dev: false
registry.npmmirror.com/d3-quadtree@3.0.1:
resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz}
name: d3-quadtree
@@ -6600,12 +6496,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-random@1.1.2:
resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-random/-/d3-random-1.1.2.tgz}
name: d3-random
version: 1.1.2
dev: false
registry.npmmirror.com/d3-random@3.0.1:
resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-random/-/d3-random-3.0.1.tgz}
name: d3-random
@@ -6613,15 +6503,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-scale-chromatic@1.5.0:
resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz}
name: d3-scale-chromatic
version: 1.5.0
dependencies:
d3-color: registry.npmmirror.com/d3-color@1.4.1
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
dev: false
registry.npmmirror.com/d3-scale-chromatic@3.0.0:
resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz}
name: d3-scale-chromatic
@@ -6632,19 +6513,6 @@ packages:
d3-interpolate: registry.npmmirror.com/d3-interpolate@3.0.1
dev: false
registry.npmmirror.com/d3-scale@2.2.2:
resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-scale/-/d3-scale-2.2.2.tgz}
name: d3-scale
version: 2.2.2
dependencies:
d3-array: registry.npmmirror.com/d3-array@1.2.4
d3-collection: registry.npmmirror.com/d3-collection@1.0.7
d3-format: registry.npmmirror.com/d3-format@1.4.5
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
d3-time: registry.npmmirror.com/d3-time@1.1.0
d3-time-format: registry.npmmirror.com/d3-time-format@2.3.0
dev: false
registry.npmmirror.com/d3-scale@4.0.2:
resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz}
name: d3-scale
@@ -6658,12 +6526,6 @@ packages:
d3-time-format: registry.npmmirror.com/d3-time-format@4.1.0
dev: false
registry.npmmirror.com/d3-selection@1.4.2:
resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-selection/-/d3-selection-1.4.2.tgz}
name: d3-selection
version: 1.4.2
dev: false
registry.npmmirror.com/d3-selection@3.0.0:
resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz}
name: d3-selection
@@ -6671,14 +6533,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-shape@1.3.7:
resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-shape/-/d3-shape-1.3.7.tgz}
name: d3-shape
version: 1.3.7
dependencies:
d3-path: registry.npmmirror.com/d3-path@1.0.9
dev: false
registry.npmmirror.com/d3-shape@3.2.0:
resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz}
name: d3-shape
@@ -6688,14 +6542,6 @@ packages:
d3-path: registry.npmmirror.com/d3-path@3.1.0
dev: false
registry.npmmirror.com/d3-time-format@2.3.0:
resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-time-format/-/d3-time-format-2.3.0.tgz}
name: d3-time-format
version: 2.3.0
dependencies:
d3-time: registry.npmmirror.com/d3-time@1.1.0
dev: false
registry.npmmirror.com/d3-time-format@4.1.0:
resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz}
name: d3-time-format
@@ -6705,12 +6551,6 @@ packages:
d3-time: registry.npmmirror.com/d3-time@3.1.0
dev: false
registry.npmmirror.com/d3-time@1.1.0:
resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-time/-/d3-time-1.1.0.tgz}
name: d3-time
version: 1.1.0
dev: false
registry.npmmirror.com/d3-time@3.1.0:
resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz}
name: d3-time
@@ -6720,12 +6560,6 @@ packages:
d3-array: registry.npmmirror.com/d3-array@3.2.4
dev: false
registry.npmmirror.com/d3-timer@1.0.10:
resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-timer/-/d3-timer-1.0.10.tgz}
name: d3-timer
version: 1.0.10
dev: false
registry.npmmirror.com/d3-timer@3.0.1:
resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz}
name: d3-timer
@@ -6733,19 +6567,6 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/d3-transition@1.3.2:
resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-transition/-/d3-transition-1.3.2.tgz}
name: d3-transition
version: 1.3.2
dependencies:
d3-color: registry.npmmirror.com/d3-color@1.4.1
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-ease: registry.npmmirror.com/d3-ease@1.0.7
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
d3-selection: registry.npmmirror.com/d3-selection@1.4.2
d3-timer: registry.npmmirror.com/d3-timer@1.0.10
dev: false
registry.npmmirror.com/d3-transition@3.0.1(d3-selection@3.0.0):
resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-transition/-/d3-transition-3.0.1.tgz}
id: registry.npmmirror.com/d3-transition/3.0.1
@@ -6763,24 +6584,6 @@ packages:
d3-timer: registry.npmmirror.com/d3-timer@3.0.1
dev: false
registry.npmmirror.com/d3-voronoi@1.1.4:
resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz}
name: d3-voronoi
version: 1.1.4
dev: false
registry.npmmirror.com/d3-zoom@1.8.3:
resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-zoom/-/d3-zoom-1.8.3.tgz}
name: d3-zoom
version: 1.8.3
dependencies:
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-drag: registry.npmmirror.com/d3-drag@1.2.5
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
d3-selection: registry.npmmirror.com/d3-selection@1.4.2
d3-transition: registry.npmmirror.com/d3-transition@1.3.2
dev: false
registry.npmmirror.com/d3-zoom@3.0.0:
resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3-zoom/-/d3-zoom-3.0.0.tgz}
name: d3-zoom
@@ -6794,44 +6597,6 @@ packages:
d3-transition: registry.npmmirror.com/d3-transition@3.0.1(d3-selection@3.0.0)
dev: false
registry.npmmirror.com/d3@5.16.0:
resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3/-/d3-5.16.0.tgz}
name: d3
version: 5.16.0
dependencies:
d3-array: registry.npmmirror.com/d3-array@1.2.4
d3-axis: registry.npmmirror.com/d3-axis@1.0.12
d3-brush: registry.npmmirror.com/d3-brush@1.1.6
d3-chord: registry.npmmirror.com/d3-chord@1.0.6
d3-collection: registry.npmmirror.com/d3-collection@1.0.7
d3-color: registry.npmmirror.com/d3-color@1.4.1
d3-contour: registry.npmmirror.com/d3-contour@1.3.2
d3-dispatch: registry.npmmirror.com/d3-dispatch@1.0.6
d3-drag: registry.npmmirror.com/d3-drag@1.2.5
d3-dsv: registry.npmmirror.com/d3-dsv@1.2.0
d3-ease: registry.npmmirror.com/d3-ease@1.0.7
d3-fetch: registry.npmmirror.com/d3-fetch@1.2.0
d3-force: registry.npmmirror.com/d3-force@1.2.1
d3-format: registry.npmmirror.com/d3-format@1.4.5
d3-geo: registry.npmmirror.com/d3-geo@1.12.1
d3-hierarchy: registry.npmmirror.com/d3-hierarchy@1.1.9
d3-interpolate: registry.npmmirror.com/d3-interpolate@1.4.0
d3-path: registry.npmmirror.com/d3-path@1.0.9
d3-polygon: registry.npmmirror.com/d3-polygon@1.0.6
d3-quadtree: registry.npmmirror.com/d3-quadtree@1.0.7
d3-random: registry.npmmirror.com/d3-random@1.1.2
d3-scale: registry.npmmirror.com/d3-scale@2.2.2
d3-scale-chromatic: registry.npmmirror.com/d3-scale-chromatic@1.5.0
d3-selection: registry.npmmirror.com/d3-selection@1.4.2
d3-shape: registry.npmmirror.com/d3-shape@1.3.7
d3-time: registry.npmmirror.com/d3-time@1.1.0
d3-time-format: registry.npmmirror.com/d3-time-format@2.3.0
d3-timer: registry.npmmirror.com/d3-timer@1.0.10
d3-transition: registry.npmmirror.com/d3-transition@1.3.2
d3-voronoi: registry.npmmirror.com/d3-voronoi@1.1.4
d3-zoom: registry.npmmirror.com/d3-zoom@1.8.3
dev: false
registry.npmmirror.com/d3@7.8.5:
resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/d3/-/d3-7.8.5.tgz}
name: d3
@@ -6870,24 +6635,13 @@ packages:
d3-zoom: registry.npmmirror.com/d3-zoom@3.0.0
dev: false
registry.npmmirror.com/dagre-d3@0.6.4:
resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dagre-d3/-/dagre-d3-0.6.4.tgz}
name: dagre-d3
version: 0.6.4
registry.npmmirror.com/dagre-d3-es@7.0.10:
resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz}
name: dagre-d3-es
version: 7.0.10
dependencies:
d3: registry.npmmirror.com/d3@5.16.0
dagre: registry.npmmirror.com/dagre@0.8.5
graphlib: registry.npmmirror.com/graphlib@2.1.8
lodash: registry.npmmirror.com/lodash@4.17.21
dev: false
registry.npmmirror.com/dagre@0.8.5:
resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz}
name: dagre
version: 0.8.5
dependencies:
graphlib: registry.npmmirror.com/graphlib@2.1.8
lodash: registry.npmmirror.com/lodash@4.17.21
d3: registry.npmmirror.com/d3@7.8.5
lodash-es: registry.npmmirror.com/lodash-es@4.17.21
dev: false
registry.npmmirror.com/damerau-levenshtein@1.0.8:
@@ -7185,10 +6939,10 @@ packages:
domelementtype: registry.npmmirror.com/domelementtype@2.3.0
dev: true
registry.npmmirror.com/dompurify@2.3.3:
resolution: {integrity: sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dompurify/-/dompurify-2.3.3.tgz}
registry.npmmirror.com/dompurify@3.0.3:
resolution: {integrity: sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dompurify/-/dompurify-3.0.3.tgz}
name: dompurify
version: 2.3.3
version: 3.0.3
dev: false
registry.npmmirror.com/domutils@2.8.0:
@@ -7228,6 +6982,12 @@ packages:
name: electron-to-chromium
version: 1.4.425
registry.npmmirror.com/elkjs@0.8.2:
resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/elkjs/-/elkjs-0.8.2.tgz}
name: elkjs
version: 0.8.2
dev: false
registry.npmmirror.com/emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz}
name: emoji-regex
@@ -8259,14 +8019,6 @@ packages:
version: 1.4.0
dev: false
registry.npmmirror.com/graphlib@2.1.8:
resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz}
name: graphlib
version: 2.1.8
dependencies:
lodash: registry.npmmirror.com/lodash@4.17.21
dev: false
registry.npmmirror.com/has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz}
name: has-bigints
@@ -8401,6 +8153,12 @@ packages:
space-separated-tokens: registry.npmmirror.com/space-separated-tokens@2.0.2
dev: false
registry.npmmirror.com/heap@0.2.7:
resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/heap/-/heap-0.2.7.tgz}
name: heap
version: 0.2.7
dev: false
registry.npmmirror.com/hexoid@1.0.0:
resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hexoid/-/hexoid-1.0.0.tgz}
name: hexoid
@@ -9122,10 +8880,10 @@ packages:
commander: registry.npmmirror.com/commander@8.3.0
dev: false
registry.npmmirror.com/khroma@1.4.1:
resolution: {integrity: sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/khroma/-/khroma-1.4.1.tgz}
registry.npmmirror.com/khroma@2.0.0:
resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/khroma/-/khroma-2.0.0.tgz}
name: khroma
version: 1.4.1
version: 2.0.0
dev: false
registry.npmmirror.com/kitx@2.1.0:
@@ -9157,6 +8915,18 @@ packages:
language-subtag-registry: registry.npmmirror.com/language-subtag-registry@0.3.22
dev: true
registry.npmmirror.com/layout-base@1.0.2:
resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/layout-base/-/layout-base-1.0.2.tgz}
name: layout-base
version: 1.0.2
dev: false
registry.npmmirror.com/layout-base@2.0.1:
resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/layout-base/-/layout-base-2.0.1.tgz}
name: layout-base
version: 2.0.1
dev: false
registry.npmmirror.com/levn@0.3.0:
resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz}
name: levn
@@ -9199,6 +8969,12 @@ packages:
p-locate: registry.npmmirror.com/p-locate@5.0.0
dev: true
registry.npmmirror.com/lodash-es@4.17.21:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz}
name: lodash-es
version: 4.17.21
dev: false
registry.npmmirror.com/lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz}
name: lodash.debounce
@@ -9414,6 +9190,15 @@ packages:
mdast-util-to-markdown: registry.npmmirror.com/mdast-util-to-markdown@1.5.0
dev: false
registry.npmmirror.com/mdast-util-newline-to-break@1.0.0:
resolution: {integrity: sha512-491LcYv3gbGhhCrLoeALncQmega2xPh+m3gbsIhVsOX4sw85+ShLFPvPyibxc1Swx/6GtzxgVodq+cGa/47ULg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mdast-util-newline-to-break/-/mdast-util-newline-to-break-1.0.0.tgz}
name: mdast-util-newline-to-break
version: 1.0.0
dependencies:
'@types/mdast': registry.npmmirror.com/@types/mdast@3.0.11
mdast-util-find-and-replace: registry.npmmirror.com/mdast-util-find-and-replace@2.2.2
dev: false
registry.npmmirror.com/mdast-util-phrasing@3.0.1:
resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz}
name: mdast-util-phrasing
@@ -9487,20 +9272,30 @@ packages:
engines: {node: '>= 8'}
dev: true
registry.npmmirror.com/mermaid@8.13.5:
resolution: {integrity: sha512-xLINkCQqZZfqDaLpQVy9BOsws8jT6sLBE2ympDEg4G2uvUu1n61j/h3OFDaA2N4dpZyN7q2pAYkDQ4yywruivA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mermaid/-/mermaid-8.13.5.tgz}
registry.npmmirror.com/mermaid@10.2.3:
resolution: {integrity: sha512-cMVE5s9PlQvOwfORkyVpr5beMsLdInrycAosdr+tpZ0WFjG4RJ/bUHST7aTgHNJbujHkdBRAm+N50P3puQOfPw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mermaid/-/mermaid-10.2.3.tgz}
name: mermaid
version: 8.13.5
version: 10.2.3
dependencies:
'@braintree/sanitize-url': registry.npmmirror.com/@braintree/sanitize-url@3.1.0
'@braintree/sanitize-url': registry.npmmirror.com/@braintree/sanitize-url@6.0.2
cytoscape: registry.npmmirror.com/cytoscape@3.25.0
cytoscape-cose-bilkent: registry.npmmirror.com/cytoscape-cose-bilkent@4.1.0(cytoscape@3.25.0)
cytoscape-fcose: registry.npmmirror.com/cytoscape-fcose@2.2.0(cytoscape@3.25.0)
d3: registry.npmmirror.com/d3@7.8.5
dagre: registry.npmmirror.com/dagre@0.8.5
dagre-d3: registry.npmmirror.com/dagre-d3@0.6.4
dompurify: registry.npmmirror.com/dompurify@2.3.3
graphlib: registry.npmmirror.com/graphlib@2.1.8
khroma: registry.npmmirror.com/khroma@1.4.1
moment-mini: registry.npmmirror.com/moment-mini@2.29.4
dagre-d3-es: registry.npmmirror.com/dagre-d3-es@7.0.10
dayjs: registry.npmmirror.com/dayjs@1.11.7
dompurify: registry.npmmirror.com/dompurify@3.0.3
elkjs: registry.npmmirror.com/elkjs@0.8.2
khroma: registry.npmmirror.com/khroma@2.0.0
lodash-es: registry.npmmirror.com/lodash-es@4.17.21
mdast-util-from-markdown: registry.npmmirror.com/mdast-util-from-markdown@1.3.1
non-layered-tidy-tree-layout: registry.npmmirror.com/non-layered-tidy-tree-layout@2.0.2
stylis: registry.npmmirror.com/stylis@4.2.0
ts-dedent: registry.npmmirror.com/ts-dedent@2.2.0
uuid: registry.npmmirror.com/uuid@9.0.0
web-worker: registry.npmmirror.com/web-worker@1.2.0
transitivePeerDependencies:
- supports-color
dev: false
registry.npmmirror.com/micromark-core-commonmark@1.1.0:
@@ -9890,12 +9685,6 @@ packages:
minimist: registry.npmmirror.com/minimist@1.2.8
dev: false
registry.npmmirror.com/moment-mini@2.29.4:
resolution: {integrity: sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/moment-mini/-/moment-mini-2.29.4.tgz}
name: moment-mini
version: 2.29.4
dev: false
registry.npmmirror.com/mongodb-connection-string-url@2.6.0:
resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz}
name: mongodb-connection-string-url
@@ -10091,6 +9880,12 @@ packages:
engines: {node: '>=6.0.0'}
dev: false
registry.npmmirror.com/non-layered-tidy-tree-layout@2.0.2:
resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz}
name: non-layered-tidy-tree-layout
version: 2.0.2
dev: false
registry.npmmirror.com/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz}
name: normalize-path
@@ -10808,11 +10603,11 @@ packages:
version: 18.2.0
dev: false
registry.npmmirror.com/react-markdown@8.0.5(@types/react@18.0.28)(react@18.2.0):
resolution: {integrity: sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-markdown/-/react-markdown-8.0.5.tgz}
id: registry.npmmirror.com/react-markdown/8.0.5
registry.npmmirror.com/react-markdown@8.0.7(@types/react@18.0.28)(react@18.2.0):
resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-markdown/-/react-markdown-8.0.7.tgz}
id: registry.npmmirror.com/react-markdown/8.0.7
name: react-markdown
version: 8.0.5
version: 8.0.7
peerDependencies:
'@types/react': '>=16'
react: '>=16'
@@ -11069,6 +10864,16 @@ packages:
unified: registry.npmmirror.com/unified@10.1.2
dev: false
registry.npmmirror.com/remark-breaks@3.0.3:
resolution: {integrity: sha512-C7VkvcUp1TPUc2eAYzsPdaUh8Xj4FSbQnYA5A9f80diApLZscTDeG7efiWP65W8hV2sEy3JuGVU0i6qr5D8Hug==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/remark-breaks/-/remark-breaks-3.0.3.tgz}
name: remark-breaks
version: 3.0.3
dependencies:
'@types/mdast': registry.npmmirror.com/@types/mdast@3.0.11
mdast-util-newline-to-break: registry.npmmirror.com/mdast-util-newline-to-break@1.0.0
unified: registry.npmmirror.com/unified@10.1.2
dev: false
registry.npmmirror.com/remark-gfm@3.0.1:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz}
name: remark-gfm
@@ -11777,6 +11582,13 @@ packages:
version: 2.1.0
dev: false
registry.npmmirror.com/ts-dedent@2.2.0:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz}
name: ts-dedent
version: 2.2.0
engines: {node: '>=6.10'}
dev: false
registry.npmmirror.com/tsconfig-paths@3.14.2:
resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz}
name: tsconfig-paths
@@ -12156,6 +11968,13 @@ packages:
dev: false
optional: true
registry.npmmirror.com/uuid@9.0.0:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz}
name: uuid
version: 9.0.0
hasBin: true
dev: false
registry.npmmirror.com/uvu@0.5.6:
resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz}
name: uvu
@@ -12222,6 +12041,12 @@ packages:
version: 2.0.1
dev: false
registry.npmmirror.com/web-worker@1.2.0:
resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz}
name: web-worker
version: 1.2.0
dev: false
registry.npmmirror.com/webidl-conversions@7.0.0:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz}
name: webidl-conversions

View File

@@ -287,8 +287,7 @@ const CodeLight = ({
children,
className,
inline,
match,
...props
match
}: {
children: React.ReactNode & React.ReactNode[];
className?: string;
@@ -315,18 +314,14 @@ const CodeLight = ({
<Box ml={1}></Box>
</Flex>
</Flex>
<SyntaxHighlighter style={codeLight as any} language={match?.[1]} PreTag="pre" {...props}>
<SyntaxHighlighter style={codeLight as any} language={match?.[1]} PreTag="pre">
{String(children)}
</SyntaxHighlighter>
</Box>
);
}
return (
<code className={className} {...props}>
{children}
</code>
);
return <code className={className}>{children}</code>;
};
export default React.memo(CodeLight);

View File

@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { Image, Skeleton } from '@chakra-ui/react';
const MdImage = ({ src }: { src: string }) => {
const MdImage = ({ src }: { src?: string }) => {
const [isLoading, setIsLoading] = useState(true);
const [succeed, setSucceed] = useState(false);
return (

View File

@@ -0,0 +1,17 @@
import React from 'react';
import { Box } from '@chakra-ui/react';
const regex = /((http|https|ftp):\/\/[^\s\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef]+)/gi;
const Link = ({ href }: { href?: string }) => {
const decText = decodeURIComponent(href || '');
const replaceText = decText.replace(regex, (match, p1) => {
const isInternal = /^\/#/i.test(p1);
const target = isInternal ? '_self' : '_blank';
return `<a href="${p1}" target=${target}>${p1}</a>`;
});
return <Box as={'span'} dangerouslySetInnerHTML={{ __html: replaceText }} />;
};
export default React.memo(Link);

View File

@@ -1,4 +1,4 @@
import React, { useEffect, useRef, memo, useCallback, useState } from 'react';
import React, { useEffect, useRef, memo, useCallback, useState, useMemo } from 'react';
import { Box } from '@chakra-ui/react';
// @ts-ignore
import mermaid from 'mermaid';
@@ -8,8 +8,11 @@ import styles from './index.module.scss';
const mermaidAPI = mermaid.mermaidAPI;
mermaidAPI.initialize({
startOnLoad: false,
startOnLoad: true,
theme: 'base',
flowchart: {
useMaxWidth: false
},
themeVariables: {
fontSize: '14px',
primaryColor: '#d6e8ff',
@@ -21,52 +24,53 @@ mermaidAPI.initialize({
}
});
const punctuationMap: Record<string, string> = {
'': ',',
'': ';',
'。': '.',
'': ':',
'': '!',
'': '?',
'“': '"',
'”': '"',
'': "'",
'': "'",
'【': '[',
'】': ']',
'': '(',
'': ')',
'《': '<',
'》': '>',
'、': ','
};
const MermaidBlock = ({ code }: { code: string }) => {
const dom = useRef<HTMLDivElement>(null);
const ref = useRef<HTMLDivElement>(null);
const [svg, setSvg] = useState('');
const [errorSvgCode, setErrorSvgCode] = useState('');
useEffect(() => {
(async () => {
const punctuationMap: Record<string, string> = {
'': ',',
'': ';',
'。': '.',
'': ':',
'': '!',
'': '?',
'“': '"',
'”': '"',
'': "'",
'': "'",
'【': '[',
'】': ']',
'': '(',
'': ')',
'《': '<',
'》': '>',
'、': ','
};
const formatCode = code.replace(
/([,;。:!?“”‘’【】()《》、])/g,
(match) => punctuationMap[match]
);
if (!code || !ref.current) return;
try {
const svgCode = await mermaidAPI.render(`mermaid-${Date.now()}`, formatCode);
setSvg(svgCode);
} catch (error) {
setErrorSvgCode(formatCode);
console.log(error);
const formatCode = code.replace(
new RegExp(`[${Object.keys(punctuationMap).join('')}]`, 'g'),
(match) => punctuationMap[match]
);
const { svg } = await mermaidAPI.render(`mermaid-${Date.now()}`, formatCode);
setSvg(svg);
} catch (e: any) {
console.log('[Mermaid] ', e?.message);
}
})();
}, [code]);
const onclickExport = useCallback(() => {
const svg = dom.current?.children[0];
const svg = ref.current?.children[0];
if (!svg) return;
const w = svg.clientWidth * 4;
const h = svg.clientHeight * 4;
const rate = svg.clientHeight / svg.clientWidth;
const w = 3000;
const h = rate * w;
const canvas = document.createElement('canvas');
canvas.width = w;
@@ -78,7 +82,7 @@ const MermaidBlock = ({ code }: { code: string }) => {
ctx.fillRect(0, 0, w, h);
const img = new Image();
img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(dom.current.innerHTML)}`;
img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(ref.current.innerHTML)}`;
img.onload = () => {
ctx.drawImage(img, 0, 0, w, h);
@@ -99,14 +103,14 @@ const MermaidBlock = ({ code }: { code: string }) => {
return (
<Box position={'relative'}>
<Box
ref={dom}
as={'p'}
ref={ref}
className={styles.mermaid}
minW={'100px'}
minH={'50px'}
py={4}
dangerouslySetInnerHTML={{ __html: svg }}
/>
<MyIcon
name={'export'}
w={'20px'}

View File

@@ -319,7 +319,6 @@
border: medium none;
margin: 0;
padding: 0;
white-space: pre;
}
.markdown .highlight pre,
.markdown pre {
@@ -345,10 +344,6 @@
word-break: break-all;
}
p {
white-space: pre-line;
}
pre {
display: block;
width: 100%;
@@ -419,9 +414,4 @@
.mermaid {
overflow-x: auto;
svg {
height: auto !important;
width: auto;
}
}

View File

@@ -1,65 +1,54 @@
import React, { memo, useMemo } from 'react';
import React from 'react';
import ReactMarkdown from 'react-markdown';
import { formatLinkText } from '@/utils/tools';
import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';
import RemarkGfm from 'remark-gfm';
import RemarkMath from 'remark-math';
import RehypeKatex from 'rehype-katex';
import RemarkBreaks from 'remark-breaks';
import 'katex/dist/katex.min.css';
import styles from './index.module.scss';
import CodeLight from './codeLight';
import Loading from './Loading';
import Link from './Link';
import CodeLight from './CodeLight';
import MermaidCodeBlock from './MermaidCodeBlock';
import MdImage from './Image';
const Markdown = ({
source,
isChatting = false,
formatLink
}: {
source: string;
formatLink?: boolean;
isChatting?: boolean;
}) => {
const formatSource = useMemo(() => {
return formatLink ? formatLinkText(source) : source;
}, [source, formatLink]);
function Code({ inline, className, children }: any) {
const match = /language-(\w+)/.exec(className || '');
if (match?.[1] === 'mermaid') {
return <MermaidCodeBlock code={String(children)} />;
}
return (
<CodeLight className={className} inline={inline} match={match}>
{children}
</CodeLight>
);
}
function Image({ src }: { src?: string }) {
return <MdImage src={src} />;
}
const Markdown = ({ source, isChatting = false }: { source: string; isChatting?: boolean }) => {
return (
<ReactMarkdown
className={`markdown ${styles.markdown}
${isChatting ? (source === '' ? styles.waitingAnimation : styles.animation) : ''}
`}
remarkPlugins={[remarkGfm, remarkMath]}
rehypePlugins={[rehypeKatex]}
${isChatting ? (source === '' ? styles.waitingAnimation : styles.animation) : ''}
`}
remarkPlugins={[RemarkGfm, RemarkMath, RemarkBreaks]}
rehypePlugins={[RehypeKatex]}
components={{
a: Link,
img: Image,
pre: 'div',
img({ src = '' }) {
return isChatting ? <Loading text="图片加载中..." /> : <MdImage src={src} />;
},
code({ node, inline, className, children, ...props }) {
const match = /language-(\w+)/.exec(className || '');
if (match?.[1] === 'mermaid') {
return isChatting ? (
<Loading text="导图加载中..." />
) : (
<MermaidCodeBlock code={String(children)} />
);
}
return (
<CodeLight className={className} inline={inline} match={match} {...props}>
{children}
</CodeLight>
);
}
code: Code
}}
linkTarget="_blank"
>
{formatSource}
{source}
</ReactMarkdown>
);
};
export default memo(Markdown);
export default Markdown;

View File

@@ -43,13 +43,13 @@ import { fileDownload } from '@/utils/file';
import { htmlTemplate } from '@/constants/common';
import { useUserStore } from '@/store/user';
import Loading from '@/components/Loading';
import Markdown from '@/components/Markdown';
import SideBar from '@/components/SideBar';
import Avatar from '@/components/Avatar';
import Empty from './components/Empty';
import QuoteModal from './components/QuoteModal';
import { HUMAN_ICON } from '@/constants/chat';
const Markdown = dynamic(async () => await import('@/components/Markdown'));
const PhoneSliderBar = dynamic(() => import('./components/PhoneSliderBar'), {
ssr: false
});
@@ -736,7 +736,6 @@ const Chat = ({ modelId, chatId }: { modelId: string; chatId: string }) => {
<Markdown
source={item.value}
isChatting={isChatting && index === chatData.history.length - 1}
formatLink
/>
<Flex>
{!!item.systemPrompt && (

View File

@@ -659,7 +659,6 @@ const Chat = ({ shareId, historyId }: { shareId: string; historyId: string }) =>
<Markdown
source={item.value}
isChatting={isChatting && index === shareChatData.history.length - 1}
formatLink
/>
</Card>
</Box>

View File

@@ -115,12 +115,6 @@ export const voiceBroadcast = ({ text }: { text: string }) => {
};
};
export const formatLinkText = (text: string) => {
const httpReg =
/(http|https|ftp):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/gi;
return text.replace(httpReg, ` $& `);
};
export const getErrText = (err: any, def = '') => {
const msg = typeof err === 'string' ? err : err?.message || def || '';
msg && console.log('error =>', msg);