mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
398 lines
11 KiB
HTML
398 lines
11 KiB
HTML
<html>
|
|
<head>
|
|
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" />
|
|
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" />
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
|
|
/>
|
|
<link
|
|
href="https://cdn.jsdelivr.net/npm/@mdi/font@6.9.96/css/materialdesignicons.min.css"
|
|
rel="stylesheet"
|
|
/>
|
|
<link
|
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Rubik+Mono+One&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
|
|
<style>
|
|
body {
|
|
/* background: rgb(221, 208, 208); */
|
|
/* background: #333; */
|
|
font-family: 'Arial';
|
|
/* font-size: 18px !important; */
|
|
}
|
|
|
|
h1 {
|
|
color: grey;
|
|
}
|
|
|
|
.mermaid2 {
|
|
display: none;
|
|
}
|
|
|
|
.mermaid svg {
|
|
/* font-size: 18px !important; */
|
|
|
|
/* background-color: #efefef;
|
|
background-image: radial-gradient(#fff 51%, transparent 91%),
|
|
radial-gradient(#fff 51%, transparent 91%);
|
|
background-size: 20px 20px;
|
|
background-position:
|
|
0 0,
|
|
10px 10px;
|
|
background-repeat: repeat; */
|
|
}
|
|
|
|
.malware {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 150px;
|
|
background: red;
|
|
color: black;
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-family: monospace;
|
|
font-size: 72px;
|
|
}
|
|
pre {
|
|
width: 100%;
|
|
}
|
|
/* tspan {
|
|
font-size: 6px !important;
|
|
} */
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="flex">
|
|
<pre id="diagram" class="mermaid">
|
|
---
|
|
title: hello2
|
|
config:
|
|
look: handDrawn
|
|
layout: elk
|
|
elk:
|
|
<!-- nodePlacementStrategy: INTERACTIVE -->
|
|
<!-- mergeEdges: true -->
|
|
---
|
|
stateDiagram-v2
|
|
direction LR
|
|
accTitle: An idealized Open Source supply-chain graph
|
|
|
|
%%
|
|
state "🟦 Importer" as author_importer
|
|
state "🟥 Supplier, Owner" as author_owner
|
|
state "🟨🟥 Maintainer, Author\n🟨 Custodian" as author
|
|
state "🟩 Distributor" as repository_distributor
|
|
state "🟦 Importer" as language_importer
|
|
state "🟦🟨 Packager" as language_packager
|
|
state "🟦🟨 OSS Steward" as language_steward
|
|
state "🟨 Curator" as language_curator
|
|
state "🟩 Distributor" as language_distributor
|
|
state "🟦 Contributor" as contributor
|
|
state "🟦 Importer" as package_importer
|
|
state "🟨 Patcher" as package_patcher
|
|
state "🟨🟦 Builder\n🟨🟦 Packager\n🟨🟦 Containerizer" as package_packager
|
|
state "🟨 Curator" as package_curator
|
|
state "🟩 Distributor" as package_distributor
|
|
state "🟦 Importer" as integrator_importer
|
|
state "🟥 Supplier, Manufacturer, Owner" as integrator_owner
|
|
state "🟦🟨🟥 Integrator, Developer" as integrator_developer
|
|
state "🟩🟨 SBOM Redactor\n🟩 Publisher" as integrator_publisher
|
|
state "🟦🟨 Builder" as integrator_builder
|
|
state "🟨 Deployer" as deployer
|
|
state "🟦 Vuln. Checker" as integrator_checker
|
|
state "🟩🟨 SBOM Redactor" as redactor
|
|
state "🟦 Consumer\n🟦 User" as consumer
|
|
state "🟦 Auditor" as auditor_internal
|
|
state "🟦 Auditor" as auditor_external
|
|
|
|
%%
|
|
classDef createsSBOM stroke:red,stroke-width:3px;
|
|
classDef updatesSBOM stroke:yellow,stroke-width:3px;
|
|
classDef assemblesSBOM stroke:yellow,stroke-width:3px;
|
|
classDef distributesSBOM stroke:green,stroke-width:3px;
|
|
classDef verifiesSBOM stroke:#07f,stroke-width:3px;
|
|
|
|
%%
|
|
class author_importer verifiesSBOM
|
|
class author_owner createsSBOM
|
|
class manufacturer_owner createsSBOM
|
|
class author assemblesSBOM
|
|
class package_importer verifiesSBOM
|
|
class package_patcher updatesSBOM
|
|
class package_packager assemblesSBOM
|
|
class package_curator distributesSBOM
|
|
class package_distributor distributesSBOM
|
|
class language_importer verifiesSBOM
|
|
class language_packager assemblesSBOM
|
|
class language_steward updatesSBOM
|
|
class language_curator distributesSBOM
|
|
class language_distributor distributesSBOM
|
|
class repository_distributor distributesSBOM
|
|
class integrator_importer verifiesSBOM
|
|
class integrator_owner createsSBOM
|
|
class integrator_developer assemblesSBOM
|
|
class integrator_publisher distributesSBOM
|
|
class integrator_builder assemblesSBOM
|
|
class integrator_checker verifiesSBOM
|
|
class deployer assemblesSBOM
|
|
class redactor distributesSBOM
|
|
class auditor_internal verifiesSBOM
|
|
class auditor_external verifiesSBOM
|
|
|
|
state "Maintainer Environment" as environment_maintainer {
|
|
[*] --> author_importer
|
|
[*] --> author
|
|
author_importer --> author
|
|
author_owner --> author
|
|
author --> language_packager
|
|
}
|
|
|
|
[*] --> environment_maintainer
|
|
|
|
state "Language Ecosystem" as ecosystem_lang {
|
|
[*] --> language_importer
|
|
[*] --> language_steward
|
|
[*] --> language_curator
|
|
[*] --> language_distributor
|
|
language_importer --> language_distributor
|
|
language_importer --> language_curator
|
|
language_steward --> language_curator
|
|
language_curator --> language_distributor
|
|
}
|
|
|
|
language_packager --> ecosystem_lang
|
|
ecosystem_lang --> ecosystem_lang
|
|
|
|
state "Public Collaboration Ecosystem" as ecosystem_repo {
|
|
[*] --> repository_distributor
|
|
}
|
|
|
|
author --> ecosystem_repo
|
|
ecosystem_repo --> author
|
|
|
|
repository_distributor --> contributor
|
|
contributor --> repository_distributor
|
|
|
|
state "Package Ecosystem" as ecosystem_package {
|
|
[*] --> package_importer
|
|
[*] --> package_packager
|
|
[*] --> package_patcher
|
|
package_importer --> package_patcher
|
|
package_importer --> package_packager
|
|
package_patcher --> package_packager
|
|
package_packager --> package_curator
|
|
package_packager --> package_distributor
|
|
package_curator --> package_distributor
|
|
}
|
|
|
|
repository_distributor --> ecosystem_package
|
|
language_distributor --> ecosystem_package
|
|
ecosystem_package --> ecosystem_package
|
|
|
|
state "Integrator Environment" as environment_integrator {
|
|
[*] --> integrator_developer
|
|
[*] --> integrator_importer
|
|
integrator_importer --> integrator_developer
|
|
integrator_owner --> integrator_developer
|
|
integrator_builder --> integrator_publisher
|
|
integrator_developer --> integrator_checker
|
|
integrator_checker --> integrator_developer
|
|
auditor_internal --> integrator_developer
|
|
integrator_developer --> integrator_builder
|
|
integrator_developer --> auditor_internal
|
|
}
|
|
|
|
repository_distributor --> environment_integrator
|
|
language_distributor --> environment_integrator
|
|
package_distributor --> environment_integrator
|
|
|
|
state "Production Environment" as environment_prod {
|
|
[*] --> deployer
|
|
deployer --> redactor
|
|
}
|
|
|
|
integrator_publisher --> [*]
|
|
integrator_developer --> environment_prod
|
|
integrator_builder --> environment_prod
|
|
integrator_publisher --> environment_prod
|
|
|
|
deployer --> auditor_external
|
|
deployer --> consumer
|
|
redactor --> consumer
|
|
|
|
|
|
|
|
</pre>
|
|
<pre id="diagram" class="mermaid2">
|
|
---
|
|
title: hello2
|
|
config:
|
|
look: handDrawn
|
|
layout: dagre
|
|
elk:
|
|
nodePlacementStrategy: BRANDES_KOEPF
|
|
---
|
|
stateDiagram-v2
|
|
A --> A
|
|
state A {
|
|
B --> D
|
|
state B {
|
|
C
|
|
}
|
|
state D {
|
|
E
|
|
}
|
|
}
|
|
|
|
|
|
</pre
|
|
>
|
|
<pre id="diagram" class="mermaid2">
|
|
---
|
|
title: hello2
|
|
config:
|
|
look: handDrawn
|
|
layout: dagre
|
|
elk:
|
|
nodePlacementStrategy: BRANDES_KOEPF
|
|
---
|
|
flowchart
|
|
A --> A
|
|
subgraph A
|
|
B --> B
|
|
subgraph B
|
|
C
|
|
end
|
|
end
|
|
|
|
|
|
</pre
|
|
>
|
|
<pre id="diagram" class="mermaid2">
|
|
---
|
|
config:
|
|
look: handdrawn
|
|
flowchart:
|
|
htmlLabels: true
|
|
---
|
|
flowchart
|
|
A[I am a long text, where do I go??? handdrawn - true]
|
|
</pre
|
|
>
|
|
</div>
|
|
<div class="flex">
|
|
<pre id="diagram" class="mermaid2">
|
|
---
|
|
config:
|
|
flowchart:
|
|
htmlLabels: false
|
|
---
|
|
flowchart
|
|
A[I am a long text, where do I go??? classic - false]
|
|
</pre
|
|
>
|
|
<pre id="diagram" class="mermaid2">
|
|
---
|
|
config:
|
|
flowchart:
|
|
htmlLabels: true
|
|
---
|
|
flowchart
|
|
A[I am a long text, where do I go??? classic - true]
|
|
</pre
|
|
>
|
|
</div>
|
|
<pre id="diagram2" class="mermaid2">
|
|
flowchart LR
|
|
id1(Start)-->id2(Stop)
|
|
style id1 fill:#f9f,stroke:#333,stroke-width:4px
|
|
style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
|
|
|
|
|
|
</pre>
|
|
|
|
<pre id="diagram3" class="mermaid2">
|
|
flowchart LR
|
|
A:::foo & B:::bar --> C:::foobar
|
|
classDef foo stroke:#f00
|
|
classDef bar stroke:#0f0
|
|
classDef ash color:red
|
|
class C ash
|
|
style C stroke:#00f, fill:black
|
|
|
|
</pre>
|
|
|
|
<pre id="diagram4" class="mermaid2">
|
|
stateDiagram
|
|
A:::foo
|
|
B:::bar --> C:::foobar
|
|
classDef foo stroke:#f00
|
|
classDef bar stroke:#0f0
|
|
style C stroke:#00f, fill:black, color:white
|
|
|
|
</pre>
|
|
|
|
<script type="module">
|
|
import mermaid from './mermaid.esm.mjs';
|
|
import layouts from './mermaid-layout-elk.esm.mjs';
|
|
mermaid.registerLayoutLoaders(layouts);
|
|
mermaid.parseError = function (err, hash) {
|
|
console.error('Mermaid error: ', err);
|
|
};
|
|
window.callback = function () {
|
|
alert('A callback was triggered');
|
|
};
|
|
mermaid.initialize({
|
|
// theme: 'base',
|
|
// handDrawnSeed: 12,
|
|
// look: 'handDrawn',
|
|
// 'elk.nodePlacement.strategy': 'NETWORK_SIMPLEX',
|
|
// layout: 'dagre',
|
|
// layout: 'elk',
|
|
// layout: 'fixed',
|
|
// htmlLabels: false,
|
|
flowchart: { titleTopMargin: 10 },
|
|
// fontFamily: 'Caveat',
|
|
// fontFamily: 'Kalam',
|
|
// fontFamily: 'courier',
|
|
sequence: {
|
|
actorFontFamily: 'courier',
|
|
noteFontFamily: 'courier',
|
|
messageFontFamily: 'courier',
|
|
},
|
|
fontSize: 12,
|
|
logLevel: 3,
|
|
securityLevel: 'loose',
|
|
});
|
|
function callback() {
|
|
alert('It worked');
|
|
}
|
|
mermaid.parseError = function (err, hash) {
|
|
console.error('In parse error:');
|
|
console.error(err);
|
|
};
|
|
</script>
|
|
</body>
|
|
</html>
|