diff --git a/docs/user-guide/markdown.md b/docs/user-guide/markdown.md
index ac9ff8f..67a7b01 100644
--- a/docs/user-guide/markdown.md
+++ b/docs/user-guide/markdown.md
@@ -3,209 +3,452 @@ title: Markdown 语法
description: Halo 编辑器中所支持的 Markdown 语法说明
---
+## 写在前面
+
+从 1.5.0 版本开始,Halo 默认保存编辑器渲染的 html 文档。使用的 Markdown 渲染库为 [markdown-it](https://github.com/markdown-it/markdown-it),我们也对此进行了封装:[@halo-dev/markdown-renderer](https://github.com/halo-dev/js-sdk/tree/master/packages/markdown-renderer)。后续我们会在任何需要渲染 Markdown 的地方都使用此库,保证 Markdown 渲染结果一致。
+
## 基础语法
-Halo 使用的 `Markdown` 解析器为 [flexmark-java](https://github.com/vsch/flexmark-java),基于 [CommonMark (spec 0.28)](https://spec.commonmark.org/0.28/) 标准开发,语法参考:[https://spec.commonmark.org/0.28/](https://spec.commonmark.org/0.28/)。
+markdown-it 使用了 [CommonMark spec](https://spec.commonmark.org) 规范,基础语法请参考 [CommonMark spec](https://spec.commonmark.org)。
-## 代码块
+## 自动链接(Auto Link)
-````markdown
+支持自动将一个链接格式的文本转换为 a 标签链接。
+
+语法规则:
+
+```plain
+https://halo.run
+```
+
+渲染结果:
+
+```html
+https://halo.run
+```
+
+预览:
+
+
+
+## 代码块(Code Block)
+
+语法规则:
+
+````markdown {1}
```language
-代码块
+内容
```
````
-其中,language 为必填,如果不填写,很可能主题的代码高亮插件无法识别代码的语言,导致样式异常。举几个例子:
+示例:
-````markdown
+````markdown {1}
```java
public static void main(String[] args){
- System.out.println("Hello World!");
+ System.out.println("Hello World!");
}
```
````
-````markdown
+````markdown {1}
```javascript
console.log("Hello World!")
```
````
-## TOC
+:::info
+注意:代码高亮需要主题添加插件支持,不同的主题可能有实现差异。
+:::
+
+## 缩写(abbr)
+
+语法规则:
+
+```markdown
+*[HTML]: Hyper Text Markup Language
+*[W3C]: World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+
+渲染结果:
-在文章的最前面加上 `[TOC]` 即可。
+```html
+
+ The
+
+ HTML
+
+ specification
+
+ is maintained by the
+
+ W3C
+
+ .
+
+```
-## 自动链接
+## Attrs
-支持自动将一个链接解析为可点击的格式,如下:
+此语法支持将 `id` `class` `target` 添加到渲染后的 HTML 标签上。
+
+示例:
```markdown
-https://halo.run
+# Halo {#halo}
+```
+
+```markdown
+> Hello Halo {.info}
+```
+
+```markdown
+[https://halo.run](https://halo.run) {target="_blank"}
```
-将被解析为:
+渲染结果:
```html
-https://halo.run
+Halo
+```
+
+```html
+ Hello Halo
+```
+
+```html
+https://halo.run
```
## Emoji
-支持将 Emoji 的文字形式转化为图片形式,如下:
+支持将 Emoji 的文字形式转化为图片形式。
+
+示例:
```markdown
:100:
```
-将被解析为:
+渲染结果:
```html
💯
```
-更多 Emoji 表情可访问:[https://emoji.svend.cc](https://emoji.svend.cc)
-
-## 数学公式
+## 脚注(Footnote)
-行内公式:
+语法规则:
```markdown
-$a \ne 0$
+[^脚注名]
+[^脚注名]: 脚注内容
```
-段落公式:
+示例:
-```markdown
-$$
-x = {-b \pm \sqrt{b^2-4ac} \over 2a}.
-$$
+```html
+驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
```
-> 需要注意的是,并不是每一款主题都支持显示数学公式,你可以先到你使用的主题设置中查看是否支持,如不支持,请看下面的解决方案。
-
-首先,登陆到后台,进入 `系统 -> 博客设置 -> 其他设置`。将下面的代码复制到 `自定义内容页面 head`。
+渲染结果:
```html
-
-
-```
-
-## 图表
-
-饼图:
-
-````markdown
-```mermaid
-pie title NETFLIX
- "Time spent looking for movie" : 90
- "Time spent watching it" : 10
+
+ 驿外
+
+ 断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+
+
+
```
-````
-更多用法查看:[https://mermaidjs.github.io/#/](https://mermaidjs.github.io/#/)
+## 下划线(ins)
+
+示例:
-> 需要注意的是,并不是每一款主题都支持显示图表,你可以先到你使用的主题设置中查看是否支持,如不支持,请看下面的解决方案。
+```markdown
+++inserted++
+```
-首先,登陆到后台,进入 `系统 -> 博客设置 -> 其他设置`。将下面的代码复制到 `自定义内容页面 head`。
+渲染结果:
```html
-
+inserted
```
-## 短连接
+预览:
-:::tip
-这属于实验性特性,也许我们将在未来的版本移除这个特性。
-:::
+inserted
+
+## 标记(mark)
+
+示例:
+
+```markdown
+==marked==
+```
+
+渲染结果:
-Halo 内置一些短连接以更好地支持一些 HTML 语法,但是编辑器目前并不能解析,只能发布之后才可以看到效果,如下:
+```html
+marked
+```
+
+预览:
-### 网易云音乐
+marked
-#### 语法
+## 下标(sub)
+
+示例:
```markdown
-[music:id]
+H~2~0
```
-#### 示例
+渲染结果:
+
+```html
+H20
+```
+
+预览:
+
+H20
+
+## 上标(sup)
+
+示例:
```markdown
-[music:32507038]
+29^th^
```
-#### 解析结果
+渲染结果:
```html
-
+29th
```
-### 哔哩哔哩动画
+预览:
+
+29th
+
+## 目录(TOC)
-#### 语法
+此语法支持根据标题生成文档目录。
+
+示例:
```markdown
-[bilibili:aid,width,height]
+[toc]
+
+# Heading
+
+## Sub heading 1
+Some nice text
+
+## Sub heading 2
+Some even nicer text
+```
+
+渲染结果:
+
+```html
+
+
+
+
+ Heading
+
+
+ Sub heading 1
+
+
+ Some nice text
+
+
+ Sub heading 2
+
+
+ Some even nicer text
+
```
-#### 示例
+## 任务列表(Task Lists)
+
+示例:
```markdown
-[bilibili:65898131,256,256]
+- [x] Apple
+- [ ] Banana
```
-#### 解析结果
+渲染结果:
```html
-
+
```
-## 脚注
+预览:
+
+- [x] Apple
+- [ ] Banana
-语法:
+## 数学公式(Katex)
+
+我们使用了 Katex 作为数学公式渲染的插件,因为从 1.5.0 开始,我们将直接保存编辑器渲染的内容,在保存的时候就已经保存了渲染好的 Katex 结构。所以在前台无需引入 Katex 插件来进行渲染,但目前仍需要引入 Katex 的样式文件,如果主题没有支持,可以在系统设置的 `自定义内容页 head:` 中加入以下代码:
+
+```html
+
+```
+
+### 行内公式
+
+示例:
```markdown
-[^脚注名]
-[^脚注名]: 脚注内容
+$\sqrt{3x-1}+(1+x)^2$
```
+预览:
+
+Example:$\sqrt{3x-1}+(1+x)^2$
+
+### 块级公式
+
示例:
```markdown
-驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
-[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
+$$\begin{array}{c}
+
+\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
+= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
+
+\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
+
+\nabla \cdot \vec{\mathbf{B}} & = 0
+
+\end{array}$$
```
-解析结果:
+预览:
-```html
-驿外断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
-
-
+$$\begin{array}{c}
+
+\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
+= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
+
+\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
+
+\nabla \cdot \vec{\mathbf{B}} & = 0
+
+\end{array}$$
+
+## 图表(Mermaid)
+
+从 Halo 1.5.0 开始,编辑器支持渲染 Mermaid 图表为 svg 内容,并直接保存渲染后的内容,所以无需在前台引入 Mermaid 插件进行渲染。
+
+示例:
+
+````markdown
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+````
+
+````markdown
+```mermaid
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
```
+````
+
+预览:
+
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+
+```mermaid
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
+```
+
+## 短连接
+
+参考 [1.4.17/Markdown 语法](../../versioned_docs/version-1.4.17/user-guide/markdown.md#短连接)。目前已经在 1.5.x 移除,建议直接使用官方提供的嵌入代码。
diff --git a/docusaurus.config.js b/docusaurus.config.js
index a13c6fd..d6dd226 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -1,4 +1,7 @@
const darkCodeTheme = require("prism-react-renderer/themes/palenight");
+const math = require("remark-math");
+const katex = require("rehype-katex");
+const mermaid = require("mdx-mermaid");
// With JSDoc @type annotations, IDEs can provide config autocompletion
/** @type {import('@docusaurus/types').DocusaurusConfig} */
@@ -30,6 +33,8 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
routeBasePath: "/",
showLastUpdateTime: true,
showLastUpdateAuthor: true,
+ remarkPlugins: [math, mermaid],
+ rehypePlugins: [katex],
},
blog: false,
theme: {
@@ -68,13 +73,13 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
label: "论坛",
},
{
- type: 'docsVersionDropdown',
- position: 'right',
+ type: "docsVersionDropdown",
+ position: "right",
dropdownActiveClassDisabled: true,
dropdownItemsAfter: [
{
- to: '/versions',
- label: 'All versions',
+ to: "/versions",
+ label: "All versions",
},
],
},
@@ -235,7 +240,7 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
{
to: "/contribution/pr",
from: ["/zh/contribution/pr"],
- }
+ },
],
},
],
@@ -248,5 +253,11 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
"data-website-id": "7e8d48ad-973d-4b44-b36d-ea1f1df25baa",
},
],
+ stylesheets: [
+ {
+ href: "https://unpkg.com/katex@0.12.0/dist/katex.min.css",
+ type: "text/css",
+ },
+ ],
}
);
diff --git a/package.json b/package.json
index 5afafb6..5a535bf 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,14 @@
"@svgr/webpack": "^5.5.0",
"clsx": "^1.1.1",
"file-loader": "^6.2.0",
+ "hast-util-is-element": "1.1.0",
+ "mdx-mermaid": "^1.2.2",
+ "mermaid": "^9.0.0",
"prism-react-renderer": "^1.3.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
+ "rehype-katex": "5",
+ "remark-math": "3",
"url-loader": "^4.1.1"
},
"browserslist": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 935cef7..22413b1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,12 +10,17 @@ specifiers:
'@svgr/webpack': ^5.5.0
clsx: ^1.1.1
file-loader: ^6.2.0
+ hast-util-is-element: 1.1.0
husky: ^7.0.4
markdownlint: ^0.25.1
markdownlint-cli2: ^0.4.0
+ mdx-mermaid: ^1.2.2
+ mermaid: ^9.0.0
prism-react-renderer: ^1.3.1
react: ^17.0.2
react-dom: ^17.0.2
+ rehype-katex: '5'
+ remark-math: '3'
url-loader: ^4.1.1
dependencies:
@@ -28,9 +33,14 @@ dependencies:
'@svgr/webpack': 5.5.0
clsx: 1.1.1
file-loader: 6.2.0
+ hast-util-is-element: 1.1.0
+ mdx-mermaid: 1.2.2_mermaid@9.0.0+react@17.0.2
+ mermaid: 9.0.0
prism-react-renderer: 1.3.1_react@17.0.2
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
+ rehype-katex: 5.0.0
+ remark-math: 3.0.1
url-loader: 4.1.1_file-loader@6.2.0
devDependencies:
@@ -1496,6 +1506,10 @@ packages:
to-fast-properties: 2.0.0
dev: false
+ /@braintree/sanitize-url/6.0.0:
+ resolution: {integrity: sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==}
+ dev: false
+
/@docsearch/css/3.0.0:
resolution: {integrity: sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==}
dev: false
@@ -2666,6 +2680,10 @@ packages:
resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==}
dev: false
+ /@types/katex/0.11.1:
+ resolution: {integrity: sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==}
+ dev: false
+
/@types/mdast/3.0.10:
resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
dependencies:
@@ -3010,12 +3028,24 @@ packages:
string-width: 4.2.3
dev: false
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: false
+
/ansi-html-community/0.0.8:
resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
engines: {'0': node >= 0.8.0}
hasBin: true
dev: false
+ /ansi-regex/2.1.1:
+ resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/ansi-regex/5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -3026,6 +3056,11 @@ packages:
engines: {node: '>=12'}
dev: false
+ /ansi-styles/2.2.1:
+ resolution: {integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/ansi-styles/3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
@@ -3053,6 +3088,13 @@ packages:
picomatch: 2.3.1
dev: false
+ /app-path/3.3.0:
+ resolution: {integrity: sha512-EAgEXkdcxH1cgEePOSsmUtw9ItPl0KTxnh/pj9ZbhvbKbij9x0oX6PWpGnorDr0DS5AosLgoa5n3T/hZmKQpYA==}
+ engines: {node: '>=8'}
+ dependencies:
+ execa: 1.0.0
+ dev: false
+
/arg/5.0.1:
resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==}
dev: false
@@ -3213,6 +3255,10 @@ packages:
resolution: {integrity: sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=}
dev: false
+ /base64-js/1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ dev: false
+
/batch/0.6.1:
resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=}
dev: false
@@ -3391,6 +3437,17 @@ packages:
resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
dev: false
+ /chalk/1.1.3:
+ resolution: {integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-styles: 2.2.1
+ escape-string-regexp: 1.0.5
+ has-ansi: 2.0.0
+ strip-ansi: 3.0.1
+ supports-color: 2.0.0
+ dev: false
+
/chalk/2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -3769,6 +3826,17 @@ packages:
- encoding
dev: false
+ /cross-spawn/6.0.5:
+ resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
+ engines: {node: '>=4.8'}
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.1
+ shebang-command: 1.2.0
+ which: 1.3.1
+ dev: false
+
/cross-spawn/7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -3992,6 +4060,503 @@ packages:
resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==}
dev: false
+ /cypress-image-snapshot/4.0.1:
+ resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==}
+ engines: {node: '>=8'}
+ peerDependencies:
+ cypress: ^4.5.0
+ dependencies:
+ chalk: 2.4.2
+ fs-extra: 7.0.1
+ glob: 7.2.0
+ jest-image-snapshot: 4.2.0
+ pkg-dir: 3.0.0
+ term-img: 4.1.0
+ transitivePeerDependencies:
+ - jest
+ dev: false
+
+ /d3-array/1.2.4:
+ resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
+ dev: false
+
+ /d3-array/3.1.6:
+ resolution: {integrity: sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==}
+ engines: {node: '>=12'}
+ dependencies:
+ internmap: 2.0.3
+ dev: false
+
+ /d3-axis/1.0.12:
+ resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==}
+ dev: false
+
+ /d3-axis/3.0.0:
+ resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-brush/1.1.6:
+ resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-transition: 1.3.2
+ dev: false
+
+ /d3-brush/3.0.0:
+ resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ dev: false
+
+ /d3-chord/1.0.6:
+ resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-path: 1.0.9
+ dev: false
+
+ /d3-chord/3.0.1:
+ resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-path: 3.0.1
+ dev: false
+
+ /d3-collection/1.0.7:
+ resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==}
+ dev: false
+
+ /d3-color/1.4.1:
+ resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==}
+ dev: false
+
+ /d3-color/3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-contour/1.3.2:
+ resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==}
+ dependencies:
+ d3-array: 1.2.4
+ dev: false
+
+ /d3-contour/3.0.1:
+ resolution: {integrity: sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.1.6
+ dev: false
+
+ /d3-delaunay/6.0.2:
+ resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ delaunator: 5.0.0
+ dev: false
+
+ /d3-dispatch/1.0.6:
+ resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==}
+ dev: false
+
+ /d3-dispatch/3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-drag/1.2.5:
+ resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-selection: 1.4.2
+ dev: false
+
+ /d3-drag/3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
+ dev: false
+
+ /d3-dsv/1.2.0:
+ resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==}
+ hasBin: true
+ dependencies:
+ commander: 2.20.3
+ iconv-lite: 0.4.24
+ rw: 1.3.3
+ dev: false
+
+ /d3-dsv/3.0.1:
+ resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dependencies:
+ commander: 7.2.0
+ iconv-lite: 0.6.3
+ rw: 1.3.3
+ dev: false
+
+ /d3-ease/1.0.7:
+ resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==}
+ dev: false
+
+ /d3-ease/3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-fetch/1.2.0:
+ resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==}
+ dependencies:
+ d3-dsv: 1.2.0
+ dev: false
+
+ /d3-fetch/3.0.1:
+ resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dsv: 3.0.1
+ dev: false
+
+ /d3-force/1.2.1:
+ resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==}
+ dependencies:
+ d3-collection: 1.0.7
+ d3-dispatch: 1.0.6
+ d3-quadtree: 1.0.7
+ d3-timer: 1.0.10
+ dev: false
+
+ /d3-force/3.0.0:
+ resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-timer: 3.0.1
+ dev: false
+
+ /d3-format/1.4.5:
+ resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==}
+ dev: false
+
+ /d3-format/3.1.0:
+ resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-geo/1.12.1:
+ resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==}
+ dependencies:
+ d3-array: 1.2.4
+ dev: false
+
+ /d3-geo/3.0.1:
+ resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.1.6
+ dev: false
+
+ /d3-hierarchy/1.1.9:
+ resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==}
+ dev: false
+
+ /d3-hierarchy/3.1.2:
+ resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-interpolate/1.4.0:
+ resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==}
+ dependencies:
+ d3-color: 1.4.1
+ dev: false
+
+ /d3-interpolate/3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-color: 3.1.0
+ dev: false
+
+ /d3-path/1.0.9:
+ resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
+ dev: false
+
+ /d3-path/3.0.1:
+ resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-polygon/1.0.6:
+ resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==}
+ dev: false
+
+ /d3-polygon/3.0.1:
+ resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-quadtree/1.0.7:
+ resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==}
+ dev: false
+
+ /d3-quadtree/3.0.1:
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-random/1.1.2:
+ resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==}
+ dev: false
+
+ /d3-random/3.0.1:
+ resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-scale-chromatic/1.5.0:
+ resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==}
+ dependencies:
+ d3-color: 1.4.1
+ d3-interpolate: 1.4.0
+ dev: false
+
+ /d3-scale-chromatic/3.0.0:
+ resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-color: 3.1.0
+ d3-interpolate: 3.0.1
+ dev: false
+
+ /d3-scale/2.2.2:
+ resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-collection: 1.0.7
+ d3-format: 1.4.5
+ d3-interpolate: 1.4.0
+ d3-time: 1.1.0
+ d3-time-format: 2.3.0
+ dev: false
+
+ /d3-scale/4.0.2:
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.1.6
+ d3-format: 3.1.0
+ d3-interpolate: 3.0.1
+ d3-time: 3.0.0
+ d3-time-format: 4.1.0
+ dev: false
+
+ /d3-selection/1.4.2:
+ resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==}
+ dev: false
+
+ /d3-selection/3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-shape/1.3.7:
+ resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+ dependencies:
+ d3-path: 1.0.9
+ dev: false
+
+ /d3-shape/3.1.0:
+ resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-path: 3.0.1
+ dev: false
+
+ /d3-time-format/2.3.0:
+ resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==}
+ dependencies:
+ d3-time: 1.1.0
+ dev: false
+
+ /d3-time-format/4.1.0:
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-time: 3.0.0
+ dev: false
+
+ /d3-time/1.1.0:
+ resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==}
+ dev: false
+
+ /d3-time/3.0.0:
+ resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.1.6
+ dev: false
+
+ /d3-timer/1.0.10:
+ resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==}
+ dev: false
+
+ /d3-timer/3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-transition/1.3.2:
+ resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==}
+ dependencies:
+ d3-color: 1.4.1
+ d3-dispatch: 1.0.6
+ d3-ease: 1.0.7
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-timer: 1.0.10
+ dev: false
+
+ /d3-transition/3.0.1_d3-selection@3.0.0:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ d3-selection: 2 - 3
+ dependencies:
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
+ dev: false
+
+ /d3-voronoi/1.1.4:
+ resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==}
+ dev: false
+
+ /d3-zoom/1.8.3:
+ resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-transition: 1.3.2
+ dev: false
+
+ /d3-zoom/3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ dev: false
+
+ /d3/5.16.0:
+ resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-axis: 1.0.12
+ d3-brush: 1.1.6
+ d3-chord: 1.0.6
+ d3-collection: 1.0.7
+ d3-color: 1.4.1
+ d3-contour: 1.3.2
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-dsv: 1.2.0
+ d3-ease: 1.0.7
+ d3-fetch: 1.2.0
+ d3-force: 1.2.1
+ d3-format: 1.4.5
+ d3-geo: 1.12.1
+ d3-hierarchy: 1.1.9
+ d3-interpolate: 1.4.0
+ d3-path: 1.0.9
+ d3-polygon: 1.0.6
+ d3-quadtree: 1.0.7
+ d3-random: 1.1.2
+ d3-scale: 2.2.2
+ d3-scale-chromatic: 1.5.0
+ d3-selection: 1.4.2
+ d3-shape: 1.3.7
+ d3-time: 1.1.0
+ d3-time-format: 2.3.0
+ d3-timer: 1.0.10
+ d3-transition: 1.3.2
+ d3-voronoi: 1.1.4
+ d3-zoom: 1.8.3
+ dev: false
+
+ /d3/7.4.4:
+ resolution: {integrity: sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.1.6
+ d3-axis: 3.0.0
+ d3-brush: 3.0.0
+ d3-chord: 3.0.1
+ d3-color: 3.1.0
+ d3-contour: 3.0.1
+ d3-delaunay: 6.0.2
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-dsv: 3.0.1
+ d3-ease: 3.0.1
+ d3-fetch: 3.0.1
+ d3-force: 3.0.0
+ d3-format: 3.1.0
+ d3-geo: 3.0.1
+ d3-hierarchy: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-path: 3.0.1
+ d3-polygon: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-random: 3.0.1
+ d3-scale: 4.0.2
+ d3-scale-chromatic: 3.0.0
+ d3-selection: 3.0.0
+ d3-shape: 3.1.0
+ d3-time: 3.0.0
+ d3-time-format: 4.1.0
+ d3-timer: 3.0.1
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ d3-zoom: 3.0.0
+ dev: false
+
+ /dagre-d3/0.6.4:
+ resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==}
+ dependencies:
+ d3: 5.16.0
+ dagre: 0.8.5
+ graphlib: 2.1.8
+ lodash: 4.17.21
+ dev: false
+
+ /dagre/0.8.5:
+ resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==}
+ dependencies:
+ graphlib: 2.1.8
+ lodash: 4.17.21
+ dev: false
+
/debug/2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
dependencies:
@@ -4081,6 +4646,12 @@ packages:
slash: 3.0.0
dev: false
+ /delaunator/5.0.0:
+ resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==}
+ dependencies:
+ robust-predicates: 3.0.1
+ dev: false
+
/depd/1.1.2:
resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=}
engines: {node: '>= 0.6'}
@@ -4190,6 +4761,10 @@ packages:
domelementtype: 2.2.0
dev: false
+ /dompurify/2.3.6:
+ resolution: {integrity: sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg==}
+ dev: false
+
/domutils/1.5.1:
resolution: {integrity: sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=}
dependencies:
@@ -4430,6 +5005,19 @@ packages:
engines: {node: '>=0.8.x'}
dev: false
+ /execa/1.0.0:
+ resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
+ engines: {node: '>=6'}
+ dependencies:
+ cross-spawn: 6.0.5
+ get-stream: 4.1.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+ dev: false
+
/execa/5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
@@ -4713,6 +5301,15 @@ packages:
universalify: 2.0.0
dev: false
+ /fs-extra/7.0.1:
+ resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.9
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: false
+
/fs-extra/9.1.0:
resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
engines: {node: '>=10'}
@@ -4760,6 +5357,11 @@ packages:
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
dev: false
+ /get-stdin/5.0.1:
+ resolution: {integrity: sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=}
+ engines: {node: '>=0.12.0'}
+ dev: false
+
/get-stream/4.1.0:
resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
engines: {node: '>=6'}
@@ -4883,6 +5485,10 @@ packages:
slash: 4.0.0
dev: false
+ /glur/1.1.2:
+ resolution: {integrity: sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok=}
+ dev: false
+
/got/9.6.0:
resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==}
engines: {node: '>=8.6'}
@@ -4904,6 +5510,12 @@ packages:
resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
dev: false
+ /graphlib/2.1.8:
+ resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
/gray-matter/4.0.3:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
@@ -4925,6 +5537,13 @@ packages:
resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
dev: false
+ /has-ansi/2.0.0:
+ resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: false
+
/has-bigints/1.0.1:
resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==}
dev: false
@@ -4996,6 +5615,10 @@ packages:
web-namespaces: 1.1.4
dev: false
+ /hast-util-is-element/1.1.0:
+ resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==}
+ dev: false
+
/hast-util-parse-selector/2.2.5:
resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
dev: false
@@ -5025,6 +5648,14 @@ packages:
zwitch: 1.0.5
dev: false
+ /hast-util-to-text/2.0.1:
+ resolution: {integrity: sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==}
+ dependencies:
+ hast-util-is-element: 1.1.0
+ repeat-string: 1.6.1
+ unist-util-find-after: 3.0.0
+ dev: false
+
/hastscript/5.1.2:
resolution: {integrity: sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==}
dependencies:
@@ -5217,6 +5848,13 @@ packages:
safer-buffer: 2.1.2
dev: false
+ /iconv-lite/0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: false
+
/icss-utils/5.1.0_postcss@8.4.7:
resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
engines: {node: ^10 || ^12 || >= 14}
@@ -5307,6 +5945,11 @@ packages:
side-channel: 1.0.4
dev: false
+ /internmap/2.0.3:
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+ engines: {node: '>=12'}
+ dev: false
+
/interpret/1.4.0:
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
engines: {node: '>= 0.10'}
@@ -5528,6 +6171,11 @@ packages:
resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==}
dev: false
+ /is-stream/1.1.0:
+ resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/is-stream/2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
@@ -5593,6 +6241,31 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /iterm2-version/4.2.0:
+ resolution: {integrity: sha512-IoiNVk4SMPu6uTcK+1nA5QaHNok2BMDLjSl5UomrOixe5g4GkylhPwuiGdw00ysSCrXAKNMfFTu+u/Lk5f6OLQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ app-path: 3.3.0
+ plist: 3.0.5
+ dev: false
+
+ /jest-image-snapshot/4.2.0:
+ resolution: {integrity: sha512-6aAqv2wtfOgxiJeBayBCqHo1zX+A12SUNNzo7rIxiXh6W6xYVu8QyHWkada8HeRi+QUTHddp0O0Xa6kmQr+xbQ==}
+ engines: {node: '>= 10.14.2'}
+ peerDependencies:
+ jest: '>=20 <=26'
+ dependencies:
+ chalk: 1.1.3
+ get-stdin: 5.0.1
+ glur: 1.1.2
+ lodash: 4.17.21
+ mkdirp: 0.5.5
+ pixelmatch: 5.2.1
+ pngjs: 3.4.0
+ rimraf: 2.7.1
+ ssim.js: 3.5.0
+ dev: false
+
/jest-worker/27.5.1:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
@@ -5677,6 +6350,12 @@ packages:
minimist: 1.2.5
dev: false
+ /jsonfile/4.0.0:
+ resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=}
+ optionalDependencies:
+ graceful-fs: 4.2.9
+ dev: false
+
/jsonfile/6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
@@ -5685,12 +6364,23 @@ packages:
graceful-fs: 4.2.9
dev: false
+ /katex/0.13.24:
+ resolution: {integrity: sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==}
+ hasBin: true
+ dependencies:
+ commander: 8.3.0
+ dev: false
+
/keyv/3.1.0:
resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==}
dependencies:
json-buffer: 3.0.0
dev: false
+ /khroma/1.4.1:
+ resolution: {integrity: sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==}
+ dev: false
+
/kind-of/6.0.3:
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
engines: {node: '>=0.10.0'}
@@ -5980,6 +6670,17 @@ packages:
/mdurl/1.0.1:
resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=}
+ /mdx-mermaid/1.2.2_mermaid@9.0.0+react@17.0.2:
+ resolution: {integrity: sha512-izl9Vaus0fJHJb6IGgcGZ79LpfFACfn28ExPXKL815RTMT9bgDRIAubufZUCgoCAAv/2S1VTxJLWTwbck4TpLA==}
+ peerDependencies:
+ mermaid: '>= 8.11.0 < 8.12.0'
+ react: ^16.8.4 || ^17.0.0
+ unist-util-visit: ^2.0.0
+ dependencies:
+ mermaid: 9.0.0
+ react: 17.0.2
+ dev: false
+
/media-typer/0.3.0:
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
engines: {node: '>= 0.6'}
@@ -6004,6 +6705,24 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ /mermaid/9.0.0:
+ resolution: {integrity: sha512-HN0gHZ1+2RnyCR/7pS3ceRMGlt/2PpWAM5dUAzTEQ4nmMOM2Ix7XodcPkQbA7BradLQ5LwFhlH5jcMu1LARl1Q==}
+ dependencies:
+ '@braintree/sanitize-url': 6.0.0
+ cypress-image-snapshot: 4.0.1
+ d3: 7.4.4
+ dagre: 0.8.5
+ dagre-d3: 0.6.4
+ dompurify: 2.3.6
+ graphlib: 2.1.8
+ khroma: 1.4.1
+ moment-mini: 2.24.0
+ stylis: 4.1.0
+ transitivePeerDependencies:
+ - cypress
+ - jest
+ dev: false
+
/methods/1.1.2:
resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=}
engines: {node: '>= 0.6'}
@@ -6110,6 +6829,10 @@ packages:
minimist: 1.2.5
dev: false
+ /moment-mini/2.24.0:
+ resolution: {integrity: sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==}
+ dev: false
+
/mrmime/1.0.0:
resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==}
engines: {node: '>=10'}
@@ -6154,6 +6877,10 @@ packages:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: false
+ /nice-try/1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+ dev: false
+
/no-case/3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
@@ -6208,6 +6935,13 @@ packages:
engines: {node: '>=10'}
dev: false
+ /npm-run-path/2.0.2:
+ resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=}
+ engines: {node: '>=4'}
+ dependencies:
+ path-key: 2.0.1
+ dev: false
+
/npm-run-path/4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -6329,6 +7063,11 @@ packages:
engines: {node: '>=6'}
dev: false
+ /p-finally/1.0.0:
+ resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=}
+ engines: {node: '>=4'}
+ dev: false
+
/p-limit/2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -6478,6 +7217,11 @@ packages:
resolution: {integrity: sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=}
dev: false
+ /path-key/2.0.1:
+ resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=}
+ engines: {node: '>=4'}
+ dev: false
+
/path-key/3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -6513,6 +7257,20 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ /pixelmatch/5.2.1:
+ resolution: {integrity: sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==}
+ hasBin: true
+ dependencies:
+ pngjs: 4.0.1
+ dev: false
+
+ /pkg-dir/3.0.0:
+ resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+ engines: {node: '>=6'}
+ dependencies:
+ find-up: 3.0.0
+ dev: false
+
/pkg-dir/4.2.0:
resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
engines: {node: '>=8'}
@@ -6527,6 +7285,24 @@ packages:
find-up: 3.0.0
dev: false
+ /plist/3.0.5:
+ resolution: {integrity: sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==}
+ engines: {node: '>=6'}
+ dependencies:
+ base64-js: 1.5.1
+ xmlbuilder: 9.0.7
+ dev: false
+
+ /pngjs/3.4.0:
+ resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
+ engines: {node: '>=4.0.0'}
+ dev: false
+
+ /pngjs/4.0.1:
+ resolution: {integrity: sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==}
+ engines: {node: '>=8.0.0'}
+ dev: false
+
/portfinder/1.0.28:
resolution: {integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==}
engines: {node: '>= 0.12.0'}
@@ -7404,6 +8180,17 @@ packages:
jsesc: 0.5.0
dev: false
+ /rehype-katex/5.0.0:
+ resolution: {integrity: sha512-ksSuEKCql/IiIadOHiKRMjypva9BLhuwQNascMqaoGLDVd0k2NlE2wMvgZ3rpItzRKCd6vs8s7MFbb8pcR0AEg==}
+ dependencies:
+ '@types/katex': 0.11.1
+ hast-util-to-text: 2.0.1
+ katex: 0.13.24
+ rehype-parse: 7.0.1
+ unified: 9.2.0
+ unist-util-visit: 2.0.3
+ dev: false
+
/rehype-parse/6.0.2:
resolution: {integrity: sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==}
dependencies:
@@ -7412,6 +8199,13 @@ packages:
xtend: 4.0.2
dev: false
+ /rehype-parse/7.0.1:
+ resolution: {integrity: sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==}
+ dependencies:
+ hast-util-from-parse5: 6.0.1
+ parse5: 6.0.1
+ dev: false
+
/relateurl/0.2.7:
resolution: {integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=}
engines: {node: '>= 0.10'}
@@ -7437,6 +8231,10 @@ packages:
resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==}
dev: false
+ /remark-math/3.0.1:
+ resolution: {integrity: sha512-epT77R/HK0x7NqrWHdSV75uNLwn8g9qTyMqCRCDujL0vj/6T6+yhdrR7mjELWtkse+Fw02kijAaBuVcHBor1+Q==}
+ dev: false
+
/remark-mdx/1.6.22:
resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==}
dependencies:
@@ -7540,6 +8338,13 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ /rimraf/2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.0
+ dev: false
+
/rimraf/3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
@@ -7547,6 +8352,10 @@ packages:
glob: 7.2.0
dev: false
+ /robust-predicates/3.0.1:
+ resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==}
+ dev: false
+
/rtl-detect/1.0.4:
resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==}
dev: false
@@ -7566,6 +8375,10 @@ packages:
dependencies:
queue-microtask: 1.2.3
+ /rw/1.3.3:
+ resolution: {integrity: sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=}
+ dev: false
+
/rxjs/7.5.4:
resolution: {integrity: sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==}
dependencies:
@@ -7765,6 +8578,13 @@ packages:
resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
dev: false
+ /shebang-command/1.2.0:
+ resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ shebang-regex: 1.0.0
+ dev: false
+
/shebang-command/2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -7772,6 +8592,11 @@ packages:
shebang-regex: 3.0.0
dev: false
+ /shebang-regex/1.0.0:
+ resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/shebang-regex/3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
@@ -7914,6 +8739,10 @@ packages:
resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
dev: false
+ /ssim.js/3.5.0:
+ resolution: {integrity: sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==}
+ dev: false
+
/stable/0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
dev: false
@@ -7984,6 +8813,13 @@ packages:
is-regexp: 1.0.0
dev: false
+ /strip-ansi/3.0.1:
+ resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: false
+
/strip-ansi/6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -8003,6 +8839,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /strip-eof/1.0.0:
+ resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/strip-final-newline/2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
@@ -8040,6 +8881,15 @@ packages:
postcss-selector-parser: 6.0.9
dev: false
+ /stylis/4.1.0:
+ resolution: {integrity: sha512-SrSDzNasOCBTo7C2N9geFwydg/2bmdkWXd4gJirtq82m5JBYtR2+Ialck8czmfBLIdPxCOotlgJESPa8C1RqvA==}
+ dev: false
+
+ /supports-color/2.0.0:
+ resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=}
+ engines: {node: '>=0.8.0'}
+ dev: false
+
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -8115,6 +8965,14 @@ packages:
engines: {node: '>=6'}
dev: false
+ /term-img/4.1.0:
+ resolution: {integrity: sha512-DFpBhaF5j+2f7kheKFc1ajsAUUDGOaNPpKPtiIMxlbfud6mvfFZuWGnTRpaujUa5J7yl6cIw/h6nyr4mSsENPg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ iterm2-version: 4.2.0
+ dev: false
+
/terser-webpack-plugin/5.3.1_webpack@5.69.1:
resolution: {integrity: sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==}
engines: {node: '>= 10.13.0'}
@@ -8221,6 +9079,11 @@ packages:
engines: {node: '>=10'}
dev: false
+ /type-fest/0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: false
+
/type-fest/2.12.0:
resolution: {integrity: sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==}
engines: {node: '>=12.20'}
@@ -8319,6 +9182,12 @@ packages:
resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==}
dev: false
+ /unist-util-find-after/3.0.0:
+ resolution: {integrity: sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==}
+ dependencies:
+ unist-util-is: 4.1.0
+ dev: false
+
/unist-util-generated/1.1.6:
resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==}
dev: false
@@ -8364,6 +9233,11 @@ packages:
unist-util-visit-parents: 3.1.1
dev: false
+ /universalify/0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: false
+
/universalify/2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
@@ -8869,6 +9743,11 @@ packages:
sax: 1.2.4
dev: false
+ /xmlbuilder/9.0.7:
+ resolution: {integrity: sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=}
+ engines: {node: '>=4.0'}
+ dev: false
+
/xtend/4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
diff --git a/versioned_docs/version-1.5.2/user-guide/markdown.md b/versioned_docs/version-1.5.2/user-guide/markdown.md
index ac9ff8f..67a7b01 100644
--- a/versioned_docs/version-1.5.2/user-guide/markdown.md
+++ b/versioned_docs/version-1.5.2/user-guide/markdown.md
@@ -3,209 +3,452 @@ title: Markdown 语法
description: Halo 编辑器中所支持的 Markdown 语法说明
---
+## 写在前面
+
+从 1.5.0 版本开始,Halo 默认保存编辑器渲染的 html 文档。使用的 Markdown 渲染库为 [markdown-it](https://github.com/markdown-it/markdown-it),我们也对此进行了封装:[@halo-dev/markdown-renderer](https://github.com/halo-dev/js-sdk/tree/master/packages/markdown-renderer)。后续我们会在任何需要渲染 Markdown 的地方都使用此库,保证 Markdown 渲染结果一致。
+
## 基础语法
-Halo 使用的 `Markdown` 解析器为 [flexmark-java](https://github.com/vsch/flexmark-java),基于 [CommonMark (spec 0.28)](https://spec.commonmark.org/0.28/) 标准开发,语法参考:[https://spec.commonmark.org/0.28/](https://spec.commonmark.org/0.28/)。
+markdown-it 使用了 [CommonMark spec](https://spec.commonmark.org) 规范,基础语法请参考 [CommonMark spec](https://spec.commonmark.org)。
-## 代码块
+## 自动链接(Auto Link)
-````markdown
+支持自动将一个链接格式的文本转换为 a 标签链接。
+
+语法规则:
+
+```plain
+https://halo.run
+```
+
+渲染结果:
+
+```html
+https://halo.run
+```
+
+预览:
+
+
+
+## 代码块(Code Block)
+
+语法规则:
+
+````markdown {1}
```language
-代码块
+内容
```
````
-其中,language 为必填,如果不填写,很可能主题的代码高亮插件无法识别代码的语言,导致样式异常。举几个例子:
+示例:
-````markdown
+````markdown {1}
```java
public static void main(String[] args){
- System.out.println("Hello World!");
+ System.out.println("Hello World!");
}
```
````
-````markdown
+````markdown {1}
```javascript
console.log("Hello World!")
```
````
-## TOC
+:::info
+注意:代码高亮需要主题添加插件支持,不同的主题可能有实现差异。
+:::
+
+## 缩写(abbr)
+
+语法规则:
+
+```markdown
+*[HTML]: Hyper Text Markup Language
+*[W3C]: World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+
+渲染结果:
-在文章的最前面加上 `[TOC]` 即可。
+```html
+
+ The
+
+ HTML
+
+ specification
+
+ is maintained by the
+
+ W3C
+
+ .
+
+```
-## 自动链接
+## Attrs
-支持自动将一个链接解析为可点击的格式,如下:
+此语法支持将 `id` `class` `target` 添加到渲染后的 HTML 标签上。
+
+示例:
```markdown
-https://halo.run
+# Halo {#halo}
+```
+
+```markdown
+> Hello Halo {.info}
+```
+
+```markdown
+[https://halo.run](https://halo.run) {target="_blank"}
```
-将被解析为:
+渲染结果:
```html
-https://halo.run
+Halo
+```
+
+```html
+ Hello Halo
+```
+
+```html
+https://halo.run
```
## Emoji
-支持将 Emoji 的文字形式转化为图片形式,如下:
+支持将 Emoji 的文字形式转化为图片形式。
+
+示例:
```markdown
:100:
```
-将被解析为:
+渲染结果:
```html
💯
```
-更多 Emoji 表情可访问:[https://emoji.svend.cc](https://emoji.svend.cc)
-
-## 数学公式
+## 脚注(Footnote)
-行内公式:
+语法规则:
```markdown
-$a \ne 0$
+[^脚注名]
+[^脚注名]: 脚注内容
```
-段落公式:
+示例:
-```markdown
-$$
-x = {-b \pm \sqrt{b^2-4ac} \over 2a}.
-$$
+```html
+驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
```
-> 需要注意的是,并不是每一款主题都支持显示数学公式,你可以先到你使用的主题设置中查看是否支持,如不支持,请看下面的解决方案。
-
-首先,登陆到后台,进入 `系统 -> 博客设置 -> 其他设置`。将下面的代码复制到 `自定义内容页面 head`。
+渲染结果:
```html
-
-
-```
-
-## 图表
-
-饼图:
-
-````markdown
-```mermaid
-pie title NETFLIX
- "Time spent looking for movie" : 90
- "Time spent watching it" : 10
+
+ 驿外
+
+ 断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+
+
+
```
-````
-更多用法查看:[https://mermaidjs.github.io/#/](https://mermaidjs.github.io/#/)
+## 下划线(ins)
+
+示例:
-> 需要注意的是,并不是每一款主题都支持显示图表,你可以先到你使用的主题设置中查看是否支持,如不支持,请看下面的解决方案。
+```markdown
+++inserted++
+```
-首先,登陆到后台,进入 `系统 -> 博客设置 -> 其他设置`。将下面的代码复制到 `自定义内容页面 head`。
+渲染结果:
```html
-
+inserted
```
-## 短连接
+预览:
-:::tip
-这属于实验性特性,也许我们将在未来的版本移除这个特性。
-:::
+inserted
+
+## 标记(mark)
+
+示例:
+
+```markdown
+==marked==
+```
+
+渲染结果:
-Halo 内置一些短连接以更好地支持一些 HTML 语法,但是编辑器目前并不能解析,只能发布之后才可以看到效果,如下:
+```html
+marked
+```
+
+预览:
-### 网易云音乐
+marked
-#### 语法
+## 下标(sub)
+
+示例:
```markdown
-[music:id]
+H~2~0
```
-#### 示例
+渲染结果:
+
+```html
+H20
+```
+
+预览:
+
+H20
+
+## 上标(sup)
+
+示例:
```markdown
-[music:32507038]
+29^th^
```
-#### 解析结果
+渲染结果:
```html
-
+29th
```
-### 哔哩哔哩动画
+预览:
+
+29th
+
+## 目录(TOC)
-#### 语法
+此语法支持根据标题生成文档目录。
+
+示例:
```markdown
-[bilibili:aid,width,height]
+[toc]
+
+# Heading
+
+## Sub heading 1
+Some nice text
+
+## Sub heading 2
+Some even nicer text
+```
+
+渲染结果:
+
+```html
+
+
+
+
+ Heading
+
+
+ Sub heading 1
+
+
+ Some nice text
+
+
+ Sub heading 2
+
+
+ Some even nicer text
+
```
-#### 示例
+## 任务列表(Task Lists)
+
+示例:
```markdown
-[bilibili:65898131,256,256]
+- [x] Apple
+- [ ] Banana
```
-#### 解析结果
+渲染结果:
```html
-
+
```
-## 脚注
+预览:
+
+- [x] Apple
+- [ ] Banana
-语法:
+## 数学公式(Katex)
+
+我们使用了 Katex 作为数学公式渲染的插件,因为从 1.5.0 开始,我们将直接保存编辑器渲染的内容,在保存的时候就已经保存了渲染好的 Katex 结构。所以在前台无需引入 Katex 插件来进行渲染,但目前仍需要引入 Katex 的样式文件,如果主题没有支持,可以在系统设置的 `自定义内容页 head:` 中加入以下代码:
+
+```html
+
+```
+
+### 行内公式
+
+示例:
```markdown
-[^脚注名]
-[^脚注名]: 脚注内容
+$\sqrt{3x-1}+(1+x)^2$
```
+预览:
+
+Example:$\sqrt{3x-1}+(1+x)^2$
+
+### 块级公式
+
示例:
```markdown
-驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
-[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
+$$\begin{array}{c}
+
+\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
+= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
+
+\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
+
+\nabla \cdot \vec{\mathbf{B}} & = 0
+
+\end{array}$$
```
-解析结果:
+预览:
-```html
-驿外断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
-
-
+$$\begin{array}{c}
+
+\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
+= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
+
+\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
+
+\nabla \cdot \vec{\mathbf{B}} & = 0
+
+\end{array}$$
+
+## 图表(Mermaid)
+
+从 Halo 1.5.0 开始,编辑器支持渲染 Mermaid 图表为 svg 内容,并直接保存渲染后的内容,所以无需在前台引入 Mermaid 插件进行渲染。
+
+示例:
+
+````markdown
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+````
+
+````markdown
+```mermaid
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
```
+````
+
+预览:
+
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+
+```mermaid
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
+```
+
+## 短连接
+
+参考 [1.4.17/Markdown 语法](../../versioned_docs/version-1.4.17/user-guide/markdown.md#短连接)。目前已经在 1.5.x 移除,建议直接使用官方提供的嵌入代码。