diff --git a/.cspell.json b/.cspell.json
index 792ec239195d..f5785db90c2d 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -29,6 +29,7 @@
"website/src/data/users.tsx",
"website/src/data/tweets.tsx",
"website/docusaurus.config.localized.json",
+ "website/_dogfooding/_pages tests/diagrams.mdx",
"*.xyz",
"*.docx",
"*.gitignore",
diff --git a/packages/docusaurus-theme-common/src/index.ts b/packages/docusaurus-theme-common/src/index.ts
index ad0a184fec55..9dfbf59bc81c 100644
--- a/packages/docusaurus-theme-common/src/index.ts
+++ b/packages/docusaurus-theme-common/src/index.ts
@@ -107,5 +107,6 @@ export {
export {
ErrorBoundaryTryAgainButton,
ErrorBoundaryError,
+ ErrorBoundaryErrorMessageFallback,
ErrorCauseBoundary,
} from './utils/errorBoundaryUtils';
diff --git a/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.module.css b/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.module.css
index 6b6ecfa607d1..aa3104434ac2 100644
--- a/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.module.css
+++ b/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.module.css
@@ -9,3 +9,8 @@
white-space: pre-wrap;
color: red;
}
+
+.errorBoundaryFallback {
+ color: red;
+ padding: 0.55rem;
+}
diff --git a/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.tsx b/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.tsx
index 051dbe86eb35..a841e258a360 100644
--- a/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.tsx
+++ b/packages/docusaurus-theme-common/src/utils/errorBoundaryUtils.tsx
@@ -8,6 +8,7 @@
import React, {type ComponentProps} from 'react';
import Translate from '@docusaurus/Translate';
import {getErrorCausalChain} from '@docusaurus/utils-common';
+import type {Props as ErrorProps} from '@theme/Error';
import styles from './errorBoundaryUtils.module.css';
export function ErrorBoundaryTryAgainButton(
@@ -23,6 +24,20 @@ export function ErrorBoundaryTryAgainButton(
);
}
+
+// A very simple reusable ErrorBoundary fallback component
+export function ErrorBoundaryErrorMessageFallback({
+ error,
+ tryAgain,
+}: ErrorProps): JSX.Element {
+ return (
+
+ );
+}
+
export function ErrorBoundaryError({error}: {error: Error}): JSX.Element {
const causalChain = getErrorCausalChain(error);
const fullMessage = causalChain.map((e) => e.message).join('\n\nCause:\n');
diff --git a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx
index a331aa70394a..8122a5aad10b 100644
--- a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx
+++ b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.tsx
@@ -13,13 +13,12 @@ import Translate from '@docusaurus/Translate';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import BrowserOnly from '@docusaurus/BrowserOnly';
import {
- ErrorBoundaryTryAgainButton,
+ ErrorBoundaryErrorMessageFallback,
usePrismTheme,
} from '@docusaurus/theme-common';
import ErrorBoundary from '@docusaurus/ErrorBoundary';
import type {Props} from '@theme/Playground';
-import type {Props as ErrorProps} from '@theme/Error';
import type {ThemeConfig} from '@docusaurus/theme-live-codeblock';
import styles from './styles.module.css';
@@ -34,15 +33,6 @@ function LivePreviewLoader() {
return Loading...
;
}
-function ErrorFallback({error, tryAgain}: ErrorProps): JSX.Element {
- return (
-
- );
-}
-
function Preview() {
// No SSR for the live preview
// See https://github.com/facebook/docusaurus/issues/5747
@@ -50,7 +40,10 @@ function Preview() {
}>
{() => (
<>
- }>
+ (
+
+ )}>
diff --git a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/styles.module.css b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/styles.module.css
index a823576a0d3c..f3298c779eb0 100644
--- a/packages/docusaurus-theme-live-codeblock/src/theme/Playground/styles.module.css
+++ b/packages/docusaurus-theme-live-codeblock/src/theme/Playground/styles.module.css
@@ -38,7 +38,3 @@
padding: 1rem;
background-color: var(--ifm-pre-background);
}
-
-.errorFallback {
- padding: 0.55rem;
-}
diff --git a/packages/docusaurus-theme-mermaid/package.json b/packages/docusaurus-theme-mermaid/package.json
index 8af858dc7762..455e21aac102 100644
--- a/packages/docusaurus-theme-mermaid/package.json
+++ b/packages/docusaurus-theme-mermaid/package.json
@@ -38,7 +38,7 @@
"@docusaurus/theme-common": "3.0.0-alpha.0",
"@docusaurus/types": "3.0.0-alpha.0",
"@docusaurus/utils-validation": "3.0.0-alpha.0",
- "mermaid": "^9.4.3",
+ "mermaid": "^10.4.0",
"tslib": "^2.6.0"
},
"devDependencies": {
diff --git a/packages/docusaurus-theme-mermaid/src/client/index.ts b/packages/docusaurus-theme-mermaid/src/client/index.ts
index f8302085c441..2750d5447568 100644
--- a/packages/docusaurus-theme-mermaid/src/client/index.ts
+++ b/packages/docusaurus-theme-mermaid/src/client/index.ts
@@ -5,9 +5,10 @@
* LICENSE file in the root directory of this source tree.
*/
-import {useMemo} from 'react';
+import {useState, useEffect, useMemo, useRef} from 'react';
import {useColorMode, useThemeConfig} from '@docusaurus/theme-common';
-import mermaid, {type MermaidConfig} from 'mermaid';
+import mermaid from 'mermaid';
+import type {RenderResult, MermaidConfig} from 'mermaid';
import type {ThemeConfig} from '@docusaurus/theme-mermaid';
// Stable className to allow users to easily target with CSS
@@ -30,48 +31,84 @@ export function useMermaidConfig(): MermaidConfig {
);
}
-export function useMermaidSvg(
- txt: string,
- mermaidConfigParam?: MermaidConfig,
-): string {
+function useMermaidId(): string {
+ /*
+ Random client-only id, we don't care much but mermaid want an id so...
+ Note: Mermaid doesn't like values provided by Rect.useId() and throws
+ */
+ // return useId(); // tried that, doesn't work ('#d:re:' is not a valid selector.)
+ return useRef(`mermaid-svg-${Math.round(Math.random() * 10000000)}`).current!;
+}
+
+async function renderMermaid({
+ id,
+ text,
+ config,
+}: {
+ id: string;
+ text: string;
+ config: MermaidConfig;
+}): Promise {
+ /*
+ Mermaid API is really weird :s
+ It is a big mutable singleton with multiple config levels
+ Note: most recent API type definitions are missing
+
+ There are 2 kind of configs:
+
+ - siteConfig: some kind of global/protected shared config
+ you can only set with "initialize"
+
+ - config/currentConfig
+ the config the renderer will use
+ it is reset to siteConfig before each render
+ but it can be altered by the mermaid txt content itself through directives
+
+ To use a new mermaid config (on colorMode change for example) we should
+ update siteConfig, and it can only be done with initialize()
+ */
+ mermaid.mermaidAPI.initialize(config);
+
+ try {
+ return await mermaid.render(id, text);
+ } catch (e) {
+ // Because Mermaid add a weird SVG/Message to the DOM on error
+ // https://github.com/mermaid-js/mermaid/issues/3205#issuecomment-1719620183
+ document.querySelector(`#d${id}`)?.remove();
+ throw e;
+ }
+}
+
+export function useMermaidRenderResult({
+ text,
+ config: providedConfig,
+}: {
+ text: string;
+ config?: MermaidConfig;
+}): RenderResult | null {
+ const [result, setResult] = useState(null);
+ const id = useMermaidId();
+
/*
For flexibility, we allow the hook to receive a custom Mermaid config
The user could inject a modified version of the default config for example
*/
const defaultMermaidConfig = useMermaidConfig();
- const mermaidConfig = mermaidConfigParam ?? defaultMermaidConfig;
-
- return useMemo(() => {
- /*
- Mermaid API is really weird :s
- It is a big mutable singleton with multiple config levels
- Note: most recent API type definitions are missing
-
- There are 2 kind of configs:
-
- - siteConfig: some kind of global/protected shared config
- you can only set with "initialize"
-
- - config/currentConfig
- the config the renderer will use
- it is reset to siteConfig before each render
- but it can be altered by the mermaid txt content itself through directives
-
- To use a new mermaid config (on colorMode change for example) we should
- update siteConfig, and it can only be done with initialize()
- */
- mermaid.mermaidAPI.initialize(mermaidConfig);
-
- /*
- Random client-only id, we don't care much about it
- But mermaid want an id so...
- */
- const mermaidId = `mermaid-svg-${Math.round(Math.random() * 10000000)}`;
-
- /*
- Not even documented: mermaid.render returns the svg string
- Using the documented form is un-necessary
- */
- return mermaid.render(mermaidId, txt);
- }, [txt, mermaidConfig]);
+ const config = providedConfig ?? defaultMermaidConfig;
+
+ useEffect(() => {
+ renderMermaid({id, text, config})
+ // TODO maybe try to use Suspense here and throw the promise?
+ // See also https://github.com/pmndrs/suspend-react
+ .then(setResult)
+ .catch((e) => {
+ // Funky way to trigger parent React error boundary
+ // See https://twitter.com/sebastienlorber/status/1628340871899893768
+ setResult(() => {
+ throw e;
+ });
+ });
+ }, [id, text, config]);
+
+ return result;
}
diff --git a/packages/docusaurus-theme-mermaid/src/theme/Mermaid/index.tsx b/packages/docusaurus-theme-mermaid/src/theme/Mermaid/index.tsx
index 26a882e6ddaf..30ffe9784e4f 100644
--- a/packages/docusaurus-theme-mermaid/src/theme/Mermaid/index.tsx
+++ b/packages/docusaurus-theme-mermaid/src/theme/Mermaid/index.tsx
@@ -5,28 +5,54 @@
* LICENSE file in the root directory of this source tree.
*/
-import React from 'react';
-import BrowserOnly from '@docusaurus/BrowserOnly';
+import React, {useEffect, useRef} from 'react';
+import type {ReactNode} from 'react';
+import ErrorBoundary from '@docusaurus/ErrorBoundary';
+import {ErrorBoundaryErrorMessageFallback} from '@docusaurus/theme-common';
import {
MermaidContainerClassName,
- useMermaidSvg,
+ useMermaidRenderResult,
} from '@docusaurus/theme-mermaid/client';
-
import type {Props} from '@theme/Mermaid';
+import type {RenderResult} from 'mermaid';
import styles from './styles.module.css';
-function MermaidDiagram({value}: Props): JSX.Element {
- const svg = useMermaidSvg(value);
+function MermaidRenderResult({
+ renderResult,
+}: {
+ renderResult: RenderResult;
+}): JSX.Element {
+ const ref = useRef(null);
+
+ useEffect(() => {
+ const div = ref.current!;
+ renderResult.bindFunctions?.(div);
+ }, [renderResult]);
+
return (
);
}
+function MermaidRenderer({value}: Props): ReactNode {
+ const renderResult = useMermaidRenderResult({text: value});
+ if (renderResult === null) {
+ return null;
+ }
+ return ;
+}
+
export default function Mermaid(props: Props): JSX.Element {
- return {() => };
+ return (
+ }>
+
+
+ );
}
diff --git a/website/_dogfooding/_pages tests/diagrams.mdx b/website/_dogfooding/_pages tests/diagrams.mdx
index c759be77a886..67d75f133cda 100644
--- a/website/_dogfooding/_pages tests/diagrams.mdx
+++ b/website/_dogfooding/_pages tests/diagrams.mdx
@@ -1,5 +1,25 @@
# Diagram Examples
+## Invalid Diagrams
+
+Those errors should not crash the whole page
+
+### Invalid type
+
+```mermaid
+badType
+ participant Alice
+ participant Bob
+```
+
+### Invalid content
+
+```mermaid
+sequenceDiagram
+ badInstruction Alice
+ participant Bob
+```
+
## Sequence Diagram
```mermaid
@@ -66,6 +86,17 @@ flowchart TD
B ---->|No| E[End]
```
+### With Markdown:
+
+```mermaid
+flowchart LR
+ markdown["`This **is** _Markdown_`"]
+ newLines["`Line1
+ Line 2
+ Line 3`"]
+ markdown --> newLines
+```
+
## Class Diagram
```mermaid
@@ -314,3 +345,86 @@ graph LR
````
+
+## Mindmap
+
+```mermaid
+mindmap
+ root((conda-forge))
+ (Repos)
+ (Package building)
+ [*-feedstock]
+ [staged-recipes]
+ [cdt-builds]
+ [msys2-recipes]
+ (Maintenance)
+ [admin-requests]
+ [repodata-patches]
+ (Configuration)
+ [.github]
+ [.cirun]
+ [conda-forge-pinning]
+ [conda-forge-ci-setup]
+ [docker-images]
+ [conda-smithy]
+ (Automations)
+ [admin-migrations]
+ [artifact-validation]
+ [regro/cf-scripts]
+ [conda-forge-webservices]
+ [regro/cf-graph-countyfair]
+ [regro/libcfgraph + regro/libcflib]
+ [feedstock-outputs]
+ (Communications)
+ [conda-forge.github.io]
+ [blog]
+ [status]
+ [by-the-numbers]
+ [conda-forge-status-monitor]
+ [feedstocks]
+ (Bots & apps)
+ [conda-forge-admin]
+ [conda-forge-bot]
+ [conda-forge-coordinator]
+ [conda-forge-daemon]
+ [conda-forge-linter]
+ [conda-forge-manager]
+ [conda-forge-status]
+ [regro-cf-autotick-bot]
+ [conda-forge-curator]
+ [conda-forge-webservices]
+ (Delivery)
+ [anaconda.org]
+ [ghcr.io]
+ [quay.io]
+ (Installers)
+ Miniforge
+ Mambaforge
+ (CI for builds)
+ Azure Pipelines
+ Travis CI
+ cirun.io
+ (Infra)
+ Heroku
+ Github Actions
+ Circle CI
+```
+
+## Quadrant Chart
+
+```mermaid
+quadrantChart
+ title Reach and engagement of campaigns
+ x-axis Low Reach --> High Reach
+ y-axis Low Engagement --> High Engagement
+ quadrant-1 We should expand
+ quadrant-2 Need to promote
+ quadrant-3 Re-evaluate
+ quadrant-4 May be improved
+ Campaign A: [0.3, 0.6]
+ Campaign B: [0.45, 0.23]
+ Campaign C: [0.57, 0.69]
+ Campaign D: [0.78, 0.34]
+ Campaign E: [0.40, 0.34]
+ Campaign F: [0.35, 0.78]
+```
diff --git a/yarn.lock b/yarn.lock
index ca116f613614..60f73f64034d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1292,10 +1292,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@braintree/sanitize-url@^6.0.0":
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f"
- integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==
+"@braintree/sanitize-url@^6.0.1":
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783"
+ integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==
"@colors/colors@1.5.0":
version "1.5.0"
@@ -3161,6 +3161,23 @@
dependencies:
"@types/node" "*"
+"@types/d3-scale-chromatic@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#103124777e8cdec85b20b51fd3397c682ee1e954"
+ integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==
+
+"@types/d3-scale@^4.0.3":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.4.tgz#3c5e2263eea5a3670cd91043b9f4d150a94c43f1"
+ integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==
+ dependencies:
+ "@types/d3-time" "*"
+
+"@types/d3-time@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819"
+ integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==
+
"@types/debug@^4.0.0":
version "4.1.8"
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317"
@@ -6256,6 +6273,13 @@ cytoscape@^3.23.0:
heap "^0.2.6"
lodash "^4.17.21"
+"d3-array@1 - 2":
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81"
+ integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==
+ dependencies:
+ internmap "^1.0.0"
+
"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
version "3.2.4"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5"
@@ -6372,6 +6396,11 @@ d3-hierarchy@3:
dependencies:
d3-color "1 - 3"
+d3-path@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf"
+ integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==
+
"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526"
@@ -6392,6 +6421,14 @@ d3-random@3:
resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4"
integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
+d3-sankey@^0.12.3:
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d"
+ integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==
+ dependencies:
+ d3-array "1 - 2"
+ d3-shape "^1.2.0"
+
d3-scale-chromatic@3:
version "3.0.0"
resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a"
@@ -6423,6 +6460,13 @@ d3-shape@3:
dependencies:
d3-path "^3.1.0"
+d3-shape@^1.2.0:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7"
+ integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
+ dependencies:
+ d3-path "1"
+
"d3-time-format@2 - 4", d3-time-format@4:
version "4.1.0"
resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a"
@@ -6500,10 +6544,10 @@ d3@^7.4.0, d3@^7.8.2:
d3-transition "3"
d3-zoom "3"
-dagre-d3-es@7.0.9:
- version "7.0.9"
- resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz#aca12fccd9d09955a4430029ba72ee6934542a8d"
- integrity sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==
+dagre-d3-es@7.0.10:
+ version "7.0.10"
+ resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc"
+ integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==
dependencies:
d3 "^7.8.2"
lodash-es "^4.17.21"
@@ -6846,10 +6890,10 @@ domhandler@^5.0.2, domhandler@^5.0.3:
dependencies:
domelementtype "^2.3.0"
-dompurify@2.4.3:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.3.tgz#f4133af0e6a50297fc8874e2eaedc13a3c308c03"
- integrity sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==
+dompurify@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.5.tgz#eb3d9cfa10037b6e73f32c586682c4b2ab01fbed"
+ integrity sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==
domutils@^2.5.2, domutils@^2.8.0:
version "2.8.0"
@@ -9225,6 +9269,11 @@ internal-slot@^1.0.3, internal-slot@^1.0.5:
resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009"
integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==
+internmap@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95"
+ integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==
+
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
@@ -11296,24 +11345,28 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-mermaid@^9.4.3:
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-9.4.3.tgz#62cf210c246b74972ea98c19837519b6f03427f2"
- integrity sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==
+mermaid@^10.4.0:
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.4.0.tgz#f89bf0ada161cbbe4dba2776e805119f7245a102"
+ integrity sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw==
dependencies:
- "@braintree/sanitize-url" "^6.0.0"
+ "@braintree/sanitize-url" "^6.0.1"
+ "@types/d3-scale" "^4.0.3"
+ "@types/d3-scale-chromatic" "^3.0.0"
cytoscape "^3.23.0"
cytoscape-cose-bilkent "^4.1.0"
cytoscape-fcose "^2.1.0"
d3 "^7.4.0"
- dagre-d3-es "7.0.9"
+ d3-sankey "^0.12.3"
+ dagre-d3-es "7.0.10"
dayjs "^1.11.7"
- dompurify "2.4.3"
+ dompurify "^3.0.5"
elkjs "^0.8.2"
khroma "^2.0.0"
lodash-es "^4.17.21"
+ mdast-util-from-markdown "^1.3.0"
non-layered-tidy-tree-layout "^2.0.2"
- stylis "^4.1.2"
+ stylis "^4.1.3"
ts-dedent "^2.2.0"
uuid "^9.0.0"
web-worker "^1.2.0"
@@ -15712,7 +15765,7 @@ stylelint@^14.16.1:
v8-compile-cache "^2.3.0"
write-file-atomic "^4.0.2"
-stylis@^4.1.2:
+stylis@^4.1.3:
version "4.3.0"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c"
integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==