7
.github/workflows/build.yml
vendored
|
@ -36,6 +36,13 @@ jobs:
|
||||||
push_options: "--dry-run"
|
push_options: "--dry-run"
|
||||||
file_pattern: "assets/lib/katex/*"
|
file_pattern: "assets/lib/katex/*"
|
||||||
commit_message: "📦 Update packaged KaTeX"
|
commit_message: "📦 Update packaged KaTeX"
|
||||||
|
- name: Commit Mermaid changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
branch: "${{ github.head_ref }}"
|
||||||
|
push_options: "--dry-run"
|
||||||
|
file_pattern: "assets/lib/mermaid/*"
|
||||||
|
commit_message: "📦 Update packaged Mermaid"
|
||||||
- run: npm run build
|
- run: npm run build
|
||||||
- name: Commit CSS changes
|
- name: Commit CSS changes
|
||||||
uses: stefanzweifel/git-auto-commit-action@v5
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
|
2
.gitignore
vendored
|
@ -30,3 +30,5 @@ node_modules
|
||||||
.Spotlight-V100
|
.Spotlight-V100
|
||||||
.Trashes
|
.Trashes
|
||||||
.idea
|
.idea
|
||||||
|
.Ulysses-Group.plist
|
||||||
|
.Ulysses-Settings.plist
|
18
README.md
|
@ -1,8 +1,4 @@
|
||||||
# Blowfish
|
# Blowfish
|
||||||
|
|
||||||
<a href="https://www.buymeacoffee.com/nunocoracao" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
|
|
||||||
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
|
||||||
|
|
||||||
[![Deploy Production to Firebase](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
[![Deploy Production to Firebase](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
||||||
[![Deploy Production to GitHub pages](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
[![Deploy Production to GitHub pages](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||||
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||||
|
@ -10,7 +6,10 @@
|
||||||
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)
|
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)
|
||||||
![code-size](https://img.shields.io/github/languages/code-size/nunocoracao/blowfish)
|
![code-size](https://img.shields.io/github/languages/code-size/nunocoracao/blowfish)
|
||||||
|
|
||||||
Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohugo.io). It's built using Tailwind CSS with a clean and minimalist design that prioritises to your content. The theme is a fork of [Congo](https://github.com/jpanther/congo).
|
Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohugo.io). It's built using Tailwind CSS with a clean and minimalist design that prioritises to your content.
|
||||||
|
|
||||||
|
![blowfish screenshot](https://github.com/nunocoracao/blowfish/blob/main/images/screenshot.png?raw=true)
|
||||||
|
|
||||||
|
|
||||||
🌏 [Demo site](https://blowfish.page/)
|
🌏 [Demo site](https://blowfish.page/)
|
||||||
📑 [Theme documentation](https://blowfish.page/docs/)
|
📑 [Theme documentation](https://blowfish.page/docs/)
|
||||||
|
@ -18,7 +17,11 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
||||||
🐛 [Bug reports & issues](https://github.com/nunocoracao/blowfish/issues)
|
🐛 [Bug reports & issues](https://github.com/nunocoracao/blowfish/issues)
|
||||||
💡 [Questions & feature requests](https://github.com/nunocoracao/blowfish/discussions)
|
💡 [Questions & feature requests](https://github.com/nunocoracao/blowfish/discussions)
|
||||||
|
|
||||||
![blowfish logo](https://github.com/nunocoracao/blowfish/blob/main/logo.png?raw=true)
|
|
||||||
|
|
||||||
|
<a href="https://www.buymeacoffee.com/nunocoracao" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
|
||||||
|
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
@ -45,6 +48,7 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
||||||
- Diagrams and visualisations using Mermaid
|
- Diagrams and visualisations using Mermaid
|
||||||
- Charts using Chart.js
|
- Charts using Chart.js
|
||||||
- TypeIt integration
|
- TypeIt integration
|
||||||
|
- Youtube embeds with performance improvements
|
||||||
- Mathematical notation using KaTeX
|
- Mathematical notation using KaTeX
|
||||||
- SVG icons from FontAwesome 6
|
- SVG icons from FontAwesome 6
|
||||||
- Automatic image resizing using Hugo Pipes
|
- Automatic image resizing using Hugo Pipes
|
||||||
|
@ -59,6 +63,8 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
![blowfish logo](https://github.com/nunocoracao/blowfish/blob/main/logo.png?raw=true)
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Blowfish has [extensive documentation](https://blowfish.page/docs/) that covers all aspects of the theme. Be sure to [read the docs](https://blowfish.page/docs/) to learn more about how to use the theme and its features.
|
Blowfish has [extensive documentation](https://blowfish.page/docs/) that covers all aspects of the theme. Be sure to [read the docs](https://blowfish.page/docs/) to learn more about how to use the theme and its features.
|
||||||
|
|
|
@ -1960,6 +1960,10 @@ input[type="range"]:active::-webkit-slider-thumb {
|
||||||
min-height:0px
|
min-height:0px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.min-h-\[130px\] {
|
||||||
|
min-height:130px
|
||||||
|
}
|
||||||
|
|
||||||
.min-h-\[148px\] {
|
.min-h-\[148px\] {
|
||||||
min-height:148px
|
min-height:148px
|
||||||
}
|
}
|
||||||
|
@ -2552,6 +2556,10 @@ input[type="range"]:active::-webkit-slider-thumb {
|
||||||
--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)
|
--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.from-60\% {
|
||||||
|
--tw-gradient-from-position:60%
|
||||||
|
}
|
||||||
|
|
||||||
.to-neutral {
|
.to-neutral {
|
||||||
--tw-gradient-to:rgba(var(--color-neutral), 1) var(--tw-gradient-to-position)
|
--tw-gradient-to:rgba(var(--color-neutral), 1) var(--tw-gradient-to-position)
|
||||||
}
|
}
|
||||||
|
@ -2650,11 +2658,6 @@ input[type="range"]:active::-webkit-slider-thumb {
|
||||||
padding-right:1.5rem
|
padding-right:1.5rem
|
||||||
}
|
}
|
||||||
|
|
||||||
.px-8 {
|
|
||||||
padding-left:2rem;
|
|
||||||
padding-right:2rem
|
|
||||||
}
|
|
||||||
|
|
||||||
.px-\[0\.4rem\] {
|
.px-\[0\.4rem\] {
|
||||||
padding-left:0.4rem;
|
padding-left:0.4rem;
|
||||||
padding-right:0.4rem
|
padding-right:0.4rem
|
||||||
|
@ -3066,6 +3069,10 @@ input[type="range"]:active::-webkit-slider-thumb {
|
||||||
opacity:0.6
|
opacity:0.6
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.opacity-65 {
|
||||||
|
opacity:0.65
|
||||||
|
}
|
||||||
|
|
||||||
.mix-blend-normal {
|
.mix-blend-normal {
|
||||||
mix-blend-mode:normal
|
mix-blend-mode:normal
|
||||||
}
|
}
|
||||||
|
|
2
assets/icons/language.svg
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
||||||
|
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg>
|
After Width: | Height: | Size: 968 B |
2
assets/icons/threads.svg
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
||||||
|
<path fill="currentColor" d="M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
574
assets/img/background.svg
Normal file
|
@ -0,0 +1,574 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
style="margin:auto;background:rgba(NaN, NaN, NaN, 0);display:block;z-index:1;position:relative"
|
||||||
|
width="1084" height="322" preserveAspectRatio="xMidYMid" viewBox="0 0 1084 322">
|
||||||
|
<defs>
|
||||||
|
<pattern id="pid-0.7735807359934106" x="0" y="0" width="345.6" height="345.6"
|
||||||
|
patternUnits="userSpaceOnUse">
|
||||||
|
<g transform="scale(1.35)">
|
||||||
|
<g>
|
||||||
|
<line x1="237.6288884328494" x2="201.39714008747956" y1="119.05338354492488"
|
||||||
|
y2="155.28513189029474" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="237.6288884328494" x2="201.39714008747956" y1="-392.9466164550751"
|
||||||
|
y2="-356.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="493.6288884328494" x2="457.39714008747956" y1="-392.9466164550751"
|
||||||
|
y2="-356.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="749.6288884328494" x2="713.3971400874796" y1="-392.9466164550751"
|
||||||
|
y2="-356.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="237.6288884328494" x2="201.39714008747956" y1="-136.94661645507512"
|
||||||
|
y2="-100.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="493.6288884328494" x2="457.39714008747956" y1="-136.94661645507512"
|
||||||
|
y2="-100.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="749.6288884328494" x2="713.3971400874796" y1="-136.94661645507512"
|
||||||
|
y2="-100.71486810970526" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="237.6288884328494" x2="201.39714008747956" y1="119.05338354492488"
|
||||||
|
y2="155.28513189029474" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="493.6288884328494" x2="457.39714008747956" y1="119.05338354492488"
|
||||||
|
y2="155.28513189029474" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="749.6288884328494" x2="713.3971400874796" y1="119.05338354492488"
|
||||||
|
y2="155.28513189029474" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="244.43797352167968" x2="179.25167385613412" y1="196.21419032492787"
|
||||||
|
y2="261.40048999047343" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="244.43797352167968" x2="179.25167385613412" y1="-315.78580967507213"
|
||||||
|
y2="-250.59951000952657" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="500.4379735216797" x2="435.2516738561341" y1="-315.78580967507213"
|
||||||
|
y2="-250.59951000952657" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="756.4379735216796" x2="691.2516738561342" y1="-315.78580967507213"
|
||||||
|
y2="-250.59951000952657" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="244.43797352167968" x2="179.25167385613412" y1="-59.78580967507213"
|
||||||
|
y2="5.400489990473432" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="500.4379735216797" x2="435.2516738561341" y1="-59.78580967507213"
|
||||||
|
y2="5.400489990473432" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="756.4379735216796" x2="691.2516738561342" y1="-59.78580967507213"
|
||||||
|
y2="5.400489990473432" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="244.43797352167968" x2="179.25167385613412" y1="196.21419032492787"
|
||||||
|
y2="261.40048999047343" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="500.4379735216797" x2="435.2516738561341" y1="196.21419032492787"
|
||||||
|
y2="261.40048999047343" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="756.4379735216796" x2="691.2516738561342" y1="196.21419032492787"
|
||||||
|
y2="261.40048999047343" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="219.6724359102308" x2="209.2181431749452" y1="92.85808081141191"
|
||||||
|
y2="103.31237354669749" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="219.6724359102308" x2="209.2181431749452" y1="-419.1419191885881"
|
||||||
|
y2="-408.6876264533025" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="475.6724359102308" x2="465.2181431749452" y1="-419.1419191885881"
|
||||||
|
y2="-408.6876264533025" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="731.6724359102308" x2="721.2181431749452" y1="-419.1419191885881"
|
||||||
|
y2="-408.6876264533025" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="219.6724359102308" x2="209.2181431749452" y1="-163.14191918858808"
|
||||||
|
y2="-152.68762645330253" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="475.6724359102308" x2="465.2181431749452" y1="-163.14191918858808"
|
||||||
|
y2="-152.68762645330253" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="731.6724359102308" x2="721.2181431749452" y1="-163.14191918858808"
|
||||||
|
y2="-152.68762645330253" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="219.6724359102308" x2="209.2181431749452" y1="92.85808081141191"
|
||||||
|
y2="103.31237354669749" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="475.6724359102308" x2="465.2181431749452" y1="92.85808081141191"
|
||||||
|
y2="103.31237354669749" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="731.6724359102308" x2="721.2181431749452" y1="92.85808081141191"
|
||||||
|
y2="103.31237354669749" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="112.00565118011832" x2="71.15817744773324" y1="56.63419812919665"
|
||||||
|
y2="97.48167186158173" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="112.00565118011832" x2="71.15817744773324" y1="-455.36580187080335"
|
||||||
|
y2="-414.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="368.0056511801183" x2="327.15817744773324" y1="-455.36580187080335"
|
||||||
|
y2="-414.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="624.0056511801183" x2="583.1581774477332" y1="-455.36580187080335"
|
||||||
|
y2="-414.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="112.00565118011832" x2="71.15817744773324" y1="-199.36580187080335"
|
||||||
|
y2="-158.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="368.0056511801183" x2="327.15817744773324" y1="-199.36580187080335"
|
||||||
|
y2="-158.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="624.0056511801183" x2="583.1581774477332" y1="-199.36580187080335"
|
||||||
|
y2="-158.51832813841827" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="112.00565118011832" x2="71.15817744773324" y1="56.63419812919665"
|
||||||
|
y2="97.48167186158173" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="368.0056511801183" x2="327.15817744773324" y1="56.63419812919665"
|
||||||
|
y2="97.48167186158173" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="624.0056511801183" x2="583.1581774477332" y1="56.63419812919665"
|
||||||
|
y2="97.48167186158173" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="60.932966336476014" x2="49.388821076756514" y1="125.65681060957188"
|
||||||
|
y2="137.20095586929136" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="60.932966336476014" x2="49.388821076756514" y1="-386.3431893904281"
|
||||||
|
y2="-374.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="316.932966336476" x2="305.3888210767565" y1="-386.3431893904281"
|
||||||
|
y2="-374.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="572.932966336476" x2="561.3888210767565" y1="-386.3431893904281"
|
||||||
|
y2="-374.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="60.932966336476014" x2="49.388821076756514" y1="-130.3431893904281"
|
||||||
|
y2="-118.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="316.932966336476" x2="305.3888210767565" y1="-130.3431893904281"
|
||||||
|
y2="-118.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="572.932966336476" x2="561.3888210767565" y1="-130.3431893904281"
|
||||||
|
y2="-118.79904413070864" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="60.932966336476014" x2="49.388821076756514" y1="125.65681060957188"
|
||||||
|
y2="137.20095586929136" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="316.932966336476" x2="305.3888210767565" y1="125.65681060957188"
|
||||||
|
y2="137.20095586929136" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="572.932966336476" x2="561.3888210767565" y1="125.65681060957188"
|
||||||
|
y2="137.20095586929136" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="103.78310212459807" x2="35.08486945593138" y1="-2.328164446496814"
|
||||||
|
y2="66.37006822216988" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="103.78310212459807" x2="35.08486945593138" y1="-514.3281644464968"
|
||||||
|
y2="-445.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="359.7831021245981" x2="291.08486945593137" y1="-514.3281644464968"
|
||||||
|
y2="-445.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="615.783102124598" x2="547.0848694559314" y1="-514.3281644464968"
|
||||||
|
y2="-445.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="103.78310212459807" x2="35.08486945593138" y1="-258.3281644464968"
|
||||||
|
y2="-189.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="359.7831021245981" x2="291.08486945593137" y1="-258.3281644464968"
|
||||||
|
y2="-189.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="615.783102124598" x2="547.0848694559314" y1="-258.3281644464968"
|
||||||
|
y2="-189.6299317778301" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="103.78310212459807" x2="35.08486945593138" y1="-2.328164446496814"
|
||||||
|
y2="66.37006822216988" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="359.7831021245981" x2="291.08486945593137" y1="-2.328164446496814"
|
||||||
|
y2="66.37006822216988" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="615.783102124598" x2="547.0848694559314" y1="-2.328164446496814"
|
||||||
|
y2="66.37006822216988" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="103.78310212459807" x2="35.08486945593138" y1="253.67183555350317"
|
||||||
|
y2="322.3700682221699" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="211.69894364075495" x2="194.13528259328754" y1="166.21741462144607"
|
||||||
|
y2="183.78107566891347" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="211.69894364075495" x2="194.13528259328754" y1="-345.7825853785539"
|
||||||
|
y2="-328.21892433108655" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="467.6989436407549" x2="450.13528259328757" y1="-345.7825853785539"
|
||||||
|
y2="-328.21892433108655" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="723.6989436407549" x2="706.1352825932876" y1="-345.7825853785539"
|
||||||
|
y2="-328.21892433108655" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="211.69894364075495" x2="194.13528259328754" y1="-89.78258537855393"
|
||||||
|
y2="-72.21892433108653" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="467.6989436407549" x2="450.13528259328757" y1="-89.78258537855393"
|
||||||
|
y2="-72.21892433108653" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="723.6989436407549" x2="706.1352825932876" y1="-89.78258537855393"
|
||||||
|
y2="-72.21892433108653" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="211.69894364075495" x2="194.13528259328754" y1="166.21741462144607"
|
||||||
|
y2="183.78107566891347" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="467.6989436407549" x2="450.13528259328757" y1="166.21741462144607"
|
||||||
|
y2="183.78107566891347" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="723.6989436407549" x2="706.1352825932876" y1="166.21741462144607"
|
||||||
|
y2="183.78107566891347" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="44.012515207413756" x2="6.2920050630466875" y1="153.79537767995515"
|
||||||
|
y2="191.5158878243222" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="44.012515207413756" x2="6.2920050630466875" y1="-358.20462232004485"
|
||||||
|
y2="-320.4841121756778" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="300.01251520741374" x2="262.2920050630467" y1="-358.20462232004485"
|
||||||
|
y2="-320.4841121756778" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="556.0125152074138" x2="518.2920050630466" y1="-358.20462232004485"
|
||||||
|
y2="-320.4841121756778" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="44.012515207413756" x2="6.2920050630466875" y1="-102.20462232004485"
|
||||||
|
y2="-64.48411217567781" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="300.01251520741374" x2="262.2920050630467" y1="-102.20462232004485"
|
||||||
|
y2="-64.48411217567781" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="556.0125152074138" x2="518.2920050630466" y1="-102.20462232004485"
|
||||||
|
y2="-64.48411217567781" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="44.012515207413756" x2="6.2920050630466875" y1="153.79537767995515"
|
||||||
|
y2="191.5158878243222" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="300.01251520741374" x2="262.2920050630467" y1="153.79537767995515"
|
||||||
|
y2="191.5158878243222" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="556.0125152074138" x2="518.2920050630466" y1="153.79537767995515"
|
||||||
|
y2="191.5158878243222" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="105.49237048043514" x2="31.549625942354083" y1="123.41684480916788"
|
||||||
|
y2="197.35958934724894" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="105.49237048043514" x2="31.549625942354083" y1="-388.58315519083214"
|
||||||
|
y2="-314.64041065275103" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="361.49237048043517" x2="287.54962594235406" y1="-388.58315519083214"
|
||||||
|
y2="-314.64041065275103" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="617.4923704804352" x2="543.549625942354" y1="-388.58315519083214"
|
||||||
|
y2="-314.64041065275103" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="105.49237048043514" x2="31.549625942354083" y1="-132.58315519083212"
|
||||||
|
y2="-58.64041065275106" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="361.49237048043517" x2="287.54962594235406" y1="-132.58315519083212"
|
||||||
|
y2="-58.64041065275106" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="617.4923704804352" x2="543.549625942354" y1="-132.58315519083212"
|
||||||
|
y2="-58.64041065275106" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="105.49237048043514" x2="31.549625942354083" y1="123.41684480916788"
|
||||||
|
y2="197.35958934724894" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="361.49237048043517" x2="287.54962594235406" y1="123.41684480916788"
|
||||||
|
y2="197.35958934724894" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="617.4923704804352" x2="543.549625942354" y1="123.41684480916788"
|
||||||
|
y2="197.35958934724894" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256"
|
||||||
|
keyTimes="0;1" repeatCount="indefinite" dur="10s"></animateTransform>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line x1="95.73622575770466" x2="50.085335235319484" y1="20.45659654328417"
|
||||||
|
y2="66.10748706566935" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="95.73622575770466" x2="50.085335235319484" y1="-491.54340345671585"
|
||||||
|
y2="-445.8925129343306" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="351.7362257577047" x2="306.08533523531946" y1="-491.54340345671585"
|
||||||
|
y2="-445.8925129343306" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="607.7362257577047" x2="562.0853352353195" y1="-491.54340345671585"
|
||||||
|
y2="-445.8925129343306" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="95.73622575770466" x2="50.085335235319484" y1="-235.54340345671582"
|
||||||
|
y2="-189.89251293433065" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="351.7362257577047" x2="306.08533523531946" y1="-235.54340345671582"
|
||||||
|
y2="-189.89251293433065" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="607.7362257577047" x2="562.0853352353195" y1="-235.54340345671582"
|
||||||
|
y2="-189.89251293433065" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="95.73622575770466" x2="50.085335235319484" y1="20.45659654328417"
|
||||||
|
y2="66.10748706566935" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="351.7362257577047" x2="306.08533523531946" y1="20.45659654328417"
|
||||||
|
y2="66.10748706566935" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="607.7362257577047" x2="562.0853352353195" y1="20.45659654328417"
|
||||||
|
y2="66.10748706566935" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="263.34308373797757" x2="226.59561736370148" y1="112.42933995479353"
|
||||||
|
y2="149.17680632906962" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="263.34308373797757" x2="226.59561736370148" y1="-399.57066004520647"
|
||||||
|
y2="-362.8231936709304" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="519.3430837379776" x2="482.5956173637015" y1="-399.57066004520647"
|
||||||
|
y2="-362.8231936709304" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="775.3430837379776" x2="738.5956173637014" y1="-399.57066004520647"
|
||||||
|
y2="-362.8231936709304" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="263.34308373797757" x2="226.59561736370148" y1="-143.57066004520647"
|
||||||
|
y2="-106.82319367093038" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="519.3430837379776" x2="482.5956173637015" y1="-143.57066004520647"
|
||||||
|
y2="-106.82319367093038" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="775.3430837379776" x2="738.5956173637014" y1="-143.57066004520647"
|
||||||
|
y2="-106.82319367093038" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="263.34308373797757" x2="226.59561736370148" y1="112.42933995479353"
|
||||||
|
y2="149.17680632906962" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="519.3430837379776" x2="482.5956173637015" y1="112.42933995479353"
|
||||||
|
y2="149.17680632906962" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="775.3430837379776" x2="738.5956173637014" y1="112.42933995479353"
|
||||||
|
y2="149.17680632906962" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="7.343083737977565" x2="-29.40438263629852" y1="112.42933995479353"
|
||||||
|
y2="149.17680632906962" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="29.5343611349199" x2="-26.261040392985034" y1="205.16777076655512"
|
||||||
|
y2="260.96317229446004" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="29.5343611349199" x2="-26.261040392985034" y1="-306.8322292334449"
|
||||||
|
y2="-251.03682770553996" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="285.5343611349199" x2="229.73895960701498" y1="-306.8322292334449"
|
||||||
|
y2="-251.03682770553996" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="541.5343611349199" x2="485.738959607015" y1="-306.8322292334449"
|
||||||
|
y2="-251.03682770553996" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="29.5343611349199" x2="-26.261040392985034" y1="-50.83222923344488"
|
||||||
|
y2="4.963172294460037" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="285.5343611349199" x2="229.73895960701498" y1="-50.83222923344488"
|
||||||
|
y2="4.963172294460037" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="541.5343611349199" x2="485.738959607015" y1="-50.83222923344488"
|
||||||
|
y2="4.963172294460037" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="29.5343611349199" x2="-26.261040392985034" y1="205.16777076655512"
|
||||||
|
y2="260.96317229446004" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="285.5343611349199" x2="229.73895960701498" y1="205.16777076655512"
|
||||||
|
y2="260.96317229446004" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="541.5343611349199" x2="485.738959607015" y1="205.16777076655512"
|
||||||
|
y2="260.96317229446004" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="235.025028503587" x2="173.48946106938683" y1="23.306929884424335"
|
||||||
|
y2="84.84249731862451" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="235.025028503587" x2="173.48946106938683" y1="-488.69307011557567"
|
||||||
|
y2="-427.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="491.025028503587" x2="429.48946106938683" y1="-488.69307011557567"
|
||||||
|
y2="-427.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="747.025028503587" x2="685.4894610693868" y1="-488.69307011557567"
|
||||||
|
y2="-427.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="235.025028503587" x2="173.48946106938683" y1="-232.69307011557567"
|
||||||
|
y2="-171.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="491.025028503587" x2="429.48946106938683" y1="-232.69307011557567"
|
||||||
|
y2="-171.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="747.025028503587" x2="685.4894610693868" y1="-232.69307011557567"
|
||||||
|
y2="-171.1575026813755" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="235.025028503587" x2="173.48946106938683" y1="23.306929884424335"
|
||||||
|
y2="84.84249731862451" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="491.025028503587" x2="429.48946106938683" y1="23.306929884424335"
|
||||||
|
y2="84.84249731862451" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="747.025028503587" x2="685.4894610693868" y1="23.306929884424335"
|
||||||
|
y2="84.84249731862451" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.00990918130768" x2="200.62370409686488" y1="210.1052181599721"
|
||||||
|
y2="234.4914232444149" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.00990918130768" x2="200.62370409686488" y1="-301.8947818400279"
|
||||||
|
y2="-277.50857675558507" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.00990918130765" x2="456.6237040968649" y1="-301.8947818400279"
|
||||||
|
y2="-277.50857675558507" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.0099091813076" x2="712.6237040968649" y1="-301.8947818400279"
|
||||||
|
y2="-277.50857675558507" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.00990918130768" x2="200.62370409686488" y1="-45.89478184002789"
|
||||||
|
y2="-21.508576755585096" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.00990918130765" x2="456.6237040968649" y1="-45.89478184002789"
|
||||||
|
y2="-21.508576755585096" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.0099091813076" x2="712.6237040968649" y1="-45.89478184002789"
|
||||||
|
y2="-21.508576755585096" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.00990918130768" x2="200.62370409686488" y1="210.1052181599721"
|
||||||
|
y2="234.4914232444149" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.00990918130765" x2="456.6237040968649" y1="210.1052181599721"
|
||||||
|
y2="234.4914232444149" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.0099091813076" x2="712.6237040968649" y1="210.1052181599721"
|
||||||
|
y2="234.4914232444149" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="171.55017713954658" x2="102.05334080042758" y1="78.55895711807653"
|
||||||
|
y2="148.05579345719553" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="171.55017713954658" x2="102.05334080042758" y1="-433.44104288192347"
|
||||||
|
y2="-363.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="427.5501771395466" x2="358.0533408004276" y1="-433.44104288192347"
|
||||||
|
y2="-363.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="683.5501771395466" x2="614.0533408004276" y1="-433.44104288192347"
|
||||||
|
y2="-363.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="171.55017713954658" x2="102.05334080042758" y1="-177.44104288192347"
|
||||||
|
y2="-107.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="427.5501771395466" x2="358.0533408004276" y1="-177.44104288192347"
|
||||||
|
y2="-107.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="683.5501771395466" x2="614.0533408004276" y1="-177.44104288192347"
|
||||||
|
y2="-107.94420654280447" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="171.55017713954658" x2="102.05334080042758" y1="78.55895711807653"
|
||||||
|
y2="148.05579345719553" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="427.5501771395466" x2="358.0533408004276" y1="78.55895711807653"
|
||||||
|
y2="148.05579345719553" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="683.5501771395466" x2="614.0533408004276" y1="78.55895711807653"
|
||||||
|
y2="148.05579345719553" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="258.4358284744095" x2="228.09906783279462" y1="10.646186924515469"
|
||||||
|
y2="40.98294756613034" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="258.4358284744095" x2="228.09906783279462" y1="-501.35381307548454"
|
||||||
|
y2="-471.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="514.4358284744095" x2="484.0990678327946" y1="-501.35381307548454"
|
||||||
|
y2="-471.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="770.4358284744095" x2="740.0990678327946" y1="-501.35381307548454"
|
||||||
|
y2="-471.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="258.4358284744095" x2="228.09906783279462" y1="-245.35381307548454"
|
||||||
|
y2="-215.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="514.4358284744095" x2="484.0990678327946" y1="-245.35381307548454"
|
||||||
|
y2="-215.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="770.4358284744095" x2="740.0990678327946" y1="-245.35381307548454"
|
||||||
|
y2="-215.01705243386965" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="258.4358284744095" x2="228.09906783279462" y1="10.646186924515469"
|
||||||
|
y2="40.98294756613034" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="514.4358284744095" x2="484.0990678327946" y1="10.646186924515469"
|
||||||
|
y2="40.98294756613034" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="770.4358284744095" x2="740.0990678327946" y1="10.646186924515469"
|
||||||
|
y2="40.98294756613034" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="2.4358284744095045" x2="-27.900932167205383" y1="10.646186924515469"
|
||||||
|
y2="40.98294756613034" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="35.41624886616098" x2="-5.966808810922494" y1="10.151780697595989"
|
||||||
|
y2="51.53483837467946" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="35.41624886616098" x2="-5.966808810922494" y1="-501.848219302404"
|
||||||
|
y2="-460.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="291.41624886616097" x2="250.0331911890775" y1="-501.848219302404"
|
||||||
|
y2="-460.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="547.416248866161" x2="506.0331911890775" y1="-501.848219302404"
|
||||||
|
y2="-460.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="35.41624886616098" x2="-5.966808810922494" y1="-245.848219302404"
|
||||||
|
y2="-204.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="291.41624886616097" x2="250.0331911890775" y1="-245.848219302404"
|
||||||
|
y2="-204.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="547.416248866161" x2="506.0331911890775" y1="-245.848219302404"
|
||||||
|
y2="-204.46516162532055" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="35.41624886616098" x2="-5.966808810922494" y1="10.151780697595989"
|
||||||
|
y2="51.53483837467946" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="291.41624886616097" x2="250.0331911890775" y1="10.151780697595989"
|
||||||
|
y2="51.53483837467946" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="547.416248866161" x2="506.0331911890775" y1="10.151780697595989"
|
||||||
|
y2="51.53483837467946" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="90.76285286976488" x2="72.92514980496989" y1="79.79001478147771"
|
||||||
|
y2="97.6277178462727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="90.76285286976488" x2="72.92514980496989" y1="-432.2099852185223"
|
||||||
|
y2="-414.37228215372727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="346.76285286976486" x2="328.9251498049699" y1="-432.2099852185223"
|
||||||
|
y2="-414.37228215372727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="602.7628528697649" x2="584.9251498049699" y1="-432.2099852185223"
|
||||||
|
y2="-414.37228215372727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="90.76285286976488" x2="72.92514980496989" y1="-176.2099852185223"
|
||||||
|
y2="-158.3722821537273" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="346.76285286976486" x2="328.9251498049699" y1="-176.2099852185223"
|
||||||
|
y2="-158.3722821537273" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="602.7628528697649" x2="584.9251498049699" y1="-176.2099852185223"
|
||||||
|
y2="-158.3722821537273" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="90.76285286976488" x2="72.92514980496989" y1="79.79001478147771"
|
||||||
|
y2="97.6277178462727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="346.76285286976486" x2="328.9251498049699" y1="79.79001478147771"
|
||||||
|
y2="97.6277178462727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="602.7628528697649" x2="584.9251498049699" y1="79.79001478147771"
|
||||||
|
y2="97.6277178462727" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256"
|
||||||
|
keyTimes="0;1" repeatCount="indefinite" dur="5s"></animateTransform>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line x1="93.6896305353637" x2="75.71575147590588" y1="83.83758835275793"
|
||||||
|
y2="101.81146741221576" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="93.6896305353637" x2="75.71575147590588" y1="-428.16241164724204"
|
||||||
|
y2="-410.18853258778427" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="349.6896305353637" x2="331.7157514759059" y1="-428.16241164724204"
|
||||||
|
y2="-410.18853258778427" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="605.6896305353637" x2="587.7157514759059" y1="-428.16241164724204"
|
||||||
|
y2="-410.18853258778427" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="93.6896305353637" x2="75.71575147590588" y1="-172.16241164724207"
|
||||||
|
y2="-154.18853258778424" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="349.6896305353637" x2="331.7157514759059" y1="-172.16241164724207"
|
||||||
|
y2="-154.18853258778424" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="605.6896305353637" x2="587.7157514759059" y1="-172.16241164724207"
|
||||||
|
y2="-154.18853258778424" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="93.6896305353637" x2="75.71575147590588" y1="83.83758835275793"
|
||||||
|
y2="101.81146741221576" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="349.6896305353637" x2="331.7157514759059" y1="83.83758835275793"
|
||||||
|
y2="101.81146741221576" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="605.6896305353637" x2="587.7157514759059" y1="83.83758835275793"
|
||||||
|
y2="101.81146741221576" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="207.24941141296466" x2="167.48134532138562" y1="234.55973050121918"
|
||||||
|
y2="274.3277965927982" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="207.24941141296466" x2="167.48134532138562" y1="-277.4402694987808"
|
||||||
|
y2="-237.67220340720178" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="463.24941141296466" x2="423.4813453213856" y1="-277.4402694987808"
|
||||||
|
y2="-237.67220340720178" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="719.2494114129647" x2="679.4813453213856" y1="-277.4402694987808"
|
||||||
|
y2="-237.67220340720178" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="207.24941141296466" x2="167.48134532138562" y1="-21.440269498780822"
|
||||||
|
y2="18.327796592798222" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="463.24941141296466" x2="423.4813453213856" y1="-21.440269498780822"
|
||||||
|
y2="18.327796592798222" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="719.2494114129647" x2="679.4813453213856" y1="-21.440269498780822"
|
||||||
|
y2="18.327796592798222" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="207.24941141296466" x2="167.48134532138562" y1="234.55973050121918"
|
||||||
|
y2="274.3277965927982" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="463.24941141296466" x2="423.4813453213856" y1="234.55973050121918"
|
||||||
|
y2="274.3277965927982" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="719.2494114129647" x2="679.4813453213856" y1="234.55973050121918"
|
||||||
|
y2="274.3277965927982" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="69.19671201083756" x2="20.15599089926107" y1="61.52941038272999"
|
||||||
|
y2="110.57013149430648" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="69.19671201083756" x2="20.15599089926107" y1="-450.47058961727"
|
||||||
|
y2="-401.42986850569355" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="325.1967120108376" x2="276.15599089926104" y1="-450.47058961727"
|
||||||
|
y2="-401.42986850569355" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="581.1967120108376" x2="532.155990899261" y1="-450.47058961727"
|
||||||
|
y2="-401.42986850569355" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="69.19671201083756" x2="20.15599089926107" y1="-194.47058961727"
|
||||||
|
y2="-145.42986850569352" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="325.1967120108376" x2="276.15599089926104" y1="-194.47058961727"
|
||||||
|
y2="-145.42986850569352" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="581.1967120108376" x2="532.155990899261" y1="-194.47058961727"
|
||||||
|
y2="-145.42986850569352" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="69.19671201083756" x2="20.15599089926107" y1="61.52941038272999"
|
||||||
|
y2="110.57013149430648" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="325.1967120108376" x2="276.15599089926104" y1="61.52941038272999"
|
||||||
|
y2="110.57013149430648" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="581.1967120108376" x2="532.155990899261" y1="61.52941038272999"
|
||||||
|
y2="110.57013149430648" stroke-width="15" stroke="#93dbe9" stroke-linecap="round"></line>
|
||||||
|
<line x1="153.36870174443493" x2="103.52218176454608" y1="129.93915864820679"
|
||||||
|
y2="179.78567862809564" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="153.36870174443493" x2="103.52218176454608" y1="-382.0608413517932"
|
||||||
|
y2="-332.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="409.36870174443493" x2="359.5221817645461" y1="-382.0608413517932"
|
||||||
|
y2="-332.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="665.3687017444349" x2="615.5221817645461" y1="-382.0608413517932"
|
||||||
|
y2="-332.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="153.36870174443493" x2="103.52218176454608" y1="-126.06084135179321"
|
||||||
|
y2="-76.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="409.36870174443493" x2="359.5221817645461" y1="-126.06084135179321"
|
||||||
|
y2="-76.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="665.3687017444349" x2="615.5221817645461" y1="-126.06084135179321"
|
||||||
|
y2="-76.21432137190436" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="153.36870174443493" x2="103.52218176454608" y1="129.93915864820679"
|
||||||
|
y2="179.78567862809564" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="409.36870174443493" x2="359.5221817645461" y1="129.93915864820679"
|
||||||
|
y2="179.78567862809564" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="665.3687017444349" x2="615.5221817645461" y1="129.93915864820679"
|
||||||
|
y2="179.78567862809564" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="49.20494471467643" x2="2.7142059537850685" y1="141.75997600855746"
|
||||||
|
y2="188.25071476944882" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="49.20494471467643" x2="2.7142059537850685" y1="-370.2400239914425"
|
||||||
|
y2="-323.7492852305512" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="305.20494471467646" x2="258.71420595378504" y1="-370.2400239914425"
|
||||||
|
y2="-323.7492852305512" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="561.2049447146765" x2="514.714205953785" y1="-370.2400239914425"
|
||||||
|
y2="-323.7492852305512" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="49.20494471467643" x2="2.7142059537850685" y1="-114.24002399144254"
|
||||||
|
y2="-67.74928523055118" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="305.20494471467646" x2="258.71420595378504" y1="-114.24002399144254"
|
||||||
|
y2="-67.74928523055118" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="561.2049447146765" x2="514.714205953785" y1="-114.24002399144254"
|
||||||
|
y2="-67.74928523055118" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="49.20494471467643" x2="2.7142059537850685" y1="141.75997600855746"
|
||||||
|
y2="188.25071476944882" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="305.20494471467646" x2="258.71420595378504" y1="141.75997600855746"
|
||||||
|
y2="188.25071476944882" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="561.2049447146765" x2="514.714205953785" y1="141.75997600855746"
|
||||||
|
y2="188.25071476944882" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="84.6808460539986" x2="32.68305955000314" y1="-7.711036017440037"
|
||||||
|
y2="44.28675048655542" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="84.6808460539986" x2="32.68305955000314" y1="-519.71103601744"
|
||||||
|
y2="-467.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="340.6808460539986" x2="288.6830595500031" y1="-519.71103601744"
|
||||||
|
y2="-467.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="596.6808460539986" x2="544.6830595500031" y1="-519.71103601744"
|
||||||
|
y2="-467.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="84.6808460539986" x2="32.68305955000314" y1="-263.71103601744005"
|
||||||
|
y2="-211.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="340.6808460539986" x2="288.6830595500031" y1="-263.71103601744005"
|
||||||
|
y2="-211.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="596.6808460539986" x2="544.6830595500031" y1="-263.71103601744005"
|
||||||
|
y2="-211.71324951344457" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="84.6808460539986" x2="32.68305955000314" y1="-7.711036017440037"
|
||||||
|
y2="44.28675048655542" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="340.6808460539986" x2="288.6830595500031" y1="-7.711036017440037"
|
||||||
|
y2="44.28675048655542" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="596.6808460539986" x2="544.6830595500031" y1="-7.711036017440037"
|
||||||
|
y2="44.28675048655542" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="84.6808460539986" x2="32.68305955000314" y1="248.28896398255995"
|
||||||
|
y2="300.28675048655543" stroke-width="15" stroke="#689cc5" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.38342310559023" x2="185.66602314192056" y1="109.68961591653738"
|
||||||
|
y2="149.40701588020704" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.38342310559023" x2="185.66602314192056" y1="-402.3103840834626"
|
||||||
|
y2="-362.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.3834231055902" x2="441.66602314192056" y1="-402.3103840834626"
|
||||||
|
y2="-362.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.3834231055903" x2="697.6660231419205" y1="-402.3103840834626"
|
||||||
|
y2="-362.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.38342310559023" x2="185.66602314192056" y1="-146.31038408346262"
|
||||||
|
y2="-106.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.3834231055902" x2="441.66602314192056" y1="-146.31038408346262"
|
||||||
|
y2="-106.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.3834231055903" x2="697.6660231419205" y1="-146.31038408346262"
|
||||||
|
y2="-106.59298411979296" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="225.38342310559023" x2="185.66602314192056" y1="109.68961591653738"
|
||||||
|
y2="149.40701588020704" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="481.3834231055902" x2="441.66602314192056" y1="109.68961591653738"
|
||||||
|
y2="149.40701588020704" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="737.3834231055903" x2="697.6660231419205" y1="109.68961591653738"
|
||||||
|
y2="149.40701588020704" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="172.83662370669697" x2="103.52581079778793" y1="164.45975635392284"
|
||||||
|
y2="233.77056926283188" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="172.83662370669697" x2="103.52581079778793" y1="-347.54024364607716"
|
||||||
|
y2="-278.2294307371681" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="428.83662370669697" x2="359.5258107977879" y1="-347.54024364607716"
|
||||||
|
y2="-278.2294307371681" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="684.836623706697" x2="615.5258107977879" y1="-347.54024364607716"
|
||||||
|
y2="-278.2294307371681" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="172.83662370669697" x2="103.52581079778793" y1="-91.54024364607716"
|
||||||
|
y2="-22.229430737168116" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="428.83662370669697" x2="359.5258107977879" y1="-91.54024364607716"
|
||||||
|
y2="-22.229430737168116" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="684.836623706697" x2="615.5258107977879" y1="-91.54024364607716"
|
||||||
|
y2="-22.229430737168116" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="172.83662370669697" x2="103.52581079778793" y1="164.45975635392284"
|
||||||
|
y2="233.77056926283188" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="428.83662370669697" x2="359.5258107977879" y1="164.45975635392284"
|
||||||
|
y2="233.77056926283188" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="684.836623706697" x2="615.5258107977879" y1="164.45975635392284"
|
||||||
|
y2="233.77056926283188" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="254.85435949520382" x2="240.10841684705935" y1="-1.209429949430282"
|
||||||
|
y2="13.536512698714214" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="254.85435949520382" x2="240.10841684705935" y1="-513.2094299494303"
|
||||||
|
y2="-498.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="510.8543594952038" x2="496.10841684705935" y1="-513.2094299494303"
|
||||||
|
y2="-498.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="766.8543594952039" x2="752.1084168470593" y1="-513.2094299494303"
|
||||||
|
y2="-498.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="254.85435949520382" x2="240.10841684705935" y1="-257.2094299494303"
|
||||||
|
y2="-242.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="510.8543594952038" x2="496.10841684705935" y1="-257.2094299494303"
|
||||||
|
y2="-242.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="766.8543594952039" x2="752.1084168470593" y1="-257.2094299494303"
|
||||||
|
y2="-242.4634873012858" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="254.85435949520382" x2="240.10841684705935" y1="-1.209429949430282"
|
||||||
|
y2="13.536512698714214" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="510.8543594952038" x2="496.10841684705935" y1="-1.209429949430282"
|
||||||
|
y2="13.536512698714214" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="766.8543594952039" x2="752.1084168470593" y1="-1.209429949430282"
|
||||||
|
y2="13.536512698714214" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<line x1="254.85435949520382" x2="240.10841684705935" y1="254.79057005056973"
|
||||||
|
y2="269.5365126987142" stroke-width="15" stroke="#5e6fa3" stroke-linecap="round"></line>
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256"
|
||||||
|
keyTimes="0;1" repeatCount="indefinite" dur="10.3333333333333335s"></animateTransform>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</pattern>
|
||||||
|
</defs>
|
||||||
|
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.7735807359934106)"></rect>
|
||||||
|
</svg>
|
10
assets/img/featured.svg
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:rgba(NaN, NaN, NaN, 0);display:block;z-index:1;position:relative" width="1084" height="322" preserveAspectRatio="xMidYMid" viewBox="0 0 1084 322">
|
||||||
|
<defs>
|
||||||
|
<pattern id="pid-0.932876709489723" x="0" y="0" width="307.20000000000005" height="307.20000000000005" patternUnits="userSpaceOnUse">
|
||||||
|
<g transform="scale(1.2000000000000002)"><defs><g id="pat-0.13086180692764704"><polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#93dbe9" stroke-width="10" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" -3,-2 16.5,15.5 31.5,0.5 63.5,32.5 48.5,47.5 31.5,32.5 -0.5,64.5 16.5,79.5 31.5,64.5 47.5,79.5 95.5,32.5 80.5,15.5 95.5,0.5 127.5,32.5 48.5,111.5 31.5,96.5 -0.5,128.5 16.5,143.5 31.5,127.5 63.5,160.5 80.5,143.5 63.5,128.5 159.5,32.5 144.5,15.5 159.5,0.5 175.5,16.5 192,0 208,16 224,0 256,32 240,48 224,32 207.501,48.501 223.5,64.5 207.5,80.5 176.5,47.5 144.5,80.5 159.5,96.5 175.5,80.5 191.5,96.5 159.5,128.5 127.5,96.5 95.5,127.5 111.5,143.5 127.5,127.5 175.5,176.5 159.5,192.5 127.5,160.5 111.5,176.5 95.5,160.5 63.5,192.5 31.5,160.5 16.5,175.5 31.999,191.483 0,224 16,240 32,225 64,256 80,240 64,224 79.667,208.333 95.5,192.5 111.5,207.5 95.5,224.5 111.5,239.5 127.5,256.5 143.5,240.5 127.5,224.5 143.5,208.5 175.5,240.5 191.5,224.5 175.5,208.5 207.5,176.5 224,160 208,144 191.998,160.998 175.5,144.5 207.5,112.5 240,80 256,96 223.5,128.5 256,160 239.5,176.5 256,192 240,208 224,192 207.5,208.5 223.5,224.5 207.5,240.5 223.5,256.5 240,240 259,259" stroke-dasharray="169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875 169.36095947265625 20.93225341796875">
|
||||||
|
<animate attributeName="stroke-dashoffset" keyTimes="0;1" values="0;190.293212890625" repeatCount="indefinite" dur="7.142857142857142s"></animate>
|
||||||
|
</polyline></g></defs><use xlink:href="#pat-0.13086180692764704" x="0" y="0"></use><use xlink:href="#pat-0.13086180692764704" x="-256" y="0"></use><use xlink:href="#pat-0.13086180692764704" x="256" y="0"></use><use xlink:href="#pat-0.13086180692764704" x="0" y="-256"></use><use xlink:href="#pat-0.13086180692764704" x="0" y="256"></use></g>
|
||||||
|
</pattern>
|
||||||
|
</defs>
|
||||||
|
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.932876709489723)"></rect>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
2312
assets/img/fireflies.svg
Normal file
After Width: | Height: | Size: 198 KiB |
24
assets/img/lavalamp.svg
Normal file
After Width: | Height: | Size: 27 KiB |
17
assets/img/rain.svg
Normal file
After Width: | Height: | Size: 85 KiB |
257
assets/img/ripples.svg
Normal file
|
@ -0,0 +1,257 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:rgba(NaN, NaN, NaN, 0);display:block;z-index:1;position:relative" width="1084" height="322" preserveAspectRatio="xMidYMid" viewBox="0 0 1084 322">
|
||||||
|
<defs>
|
||||||
|
<pattern id="pid-0.2950529742247572" x="0" y="0" width="711.6800000000001" height="711.6800000000001" patternUnits="userSpaceOnUse">
|
||||||
|
<g transform="scale(2.7800000000000002)"><circle cx="180.39755796770348" cy="144.2104368598822" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;17.85434406280291" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-44.622752456562516s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-44.622752456562516s"></animate>
|
||||||
|
</circle><circle cx="16.825168708189995" cy="32.834595161139454" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.39487920677064" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
</circle><circle cx="272.82516870819" cy="32.834595161139454" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.39487920677064" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
</circle><circle cx="16.825168708189995" cy="288.8345951611395" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.39487920677064" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
</circle><circle cx="272.82516870819" cy="288.8345951611395" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.39487920677064" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.52246651250024s"></animate>
|
||||||
|
</circle><circle cx="133.7281341523537" cy="37.557212373233874" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;24.44944303845901" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-33.76558939460953s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-33.76558939460953s"></animate>
|
||||||
|
</circle><circle cx="9.311746119524932" cy="139.87259197506899" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;42.09217911991696" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.268240533907207s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.268240533907207s"></animate>
|
||||||
|
</circle><circle cx="265.3117461195249" cy="139.87259197506899" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;42.09217911991696" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.268240533907207s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.268240533907207s"></animate>
|
||||||
|
</circle><circle cx="228.8288862878399" cy="50.59785782429598" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;19.868262625397918" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-23.68489264848651s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-23.68489264848651s"></animate>
|
||||||
|
</circle><circle cx="77.20196271561525" cy="31.611804700405518" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;45.28258812229561" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.661787725688292s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.661787725688292s"></animate>
|
||||||
|
</circle><circle cx="77.20196271561525" cy="287.6118047004055" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;45.28258812229561" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.661787725688292s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.661787725688292s"></animate>
|
||||||
|
</circle><circle cx="153.86297348533364" cy="53.13721410068965" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.59657006893606" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-26.846959941207736s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-26.846959941207736s"></animate>
|
||||||
|
</circle><circle cx="153.86297348533364" cy="309.1372141006897" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.59657006893606" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-26.846959941207736s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-26.846959941207736s"></animate>
|
||||||
|
</circle><circle cx="238.25141956589107" cy="242.3948925366868" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;7.110432319564012" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.8377648779141s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.8377648779141s"></animate>
|
||||||
|
</circle><circle cx="171.29587360943597" cy="93.62941553592991" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;64.80517552507085" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-41.081630071778505s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-41.081630071778505s"></animate>
|
||||||
|
</circle><circle cx="33.7803997203791" cy="200.65918731382288" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;23.874060138252702" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.74940953893833s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.74940953893833s"></animate>
|
||||||
|
</circle><circle cx="171.68455092137125" cy="208.29640936292603" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;10.804694032911527" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-46.827942545330814s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-46.827942545330814s"></animate>
|
||||||
|
</circle><circle cx="79.4759072969399" cy="14.760241106300118" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;63.07191175406126" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-38.31065839827809s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-38.31065839827809s"></animate>
|
||||||
|
</circle><circle cx="79.4759072969399" cy="270.7602411063001" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;63.07191175406126" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-38.31065839827809s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-38.31065839827809s"></animate>
|
||||||
|
</circle><circle cx="34.30718832814177" cy="60.207260607353895" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;36.85782580252244" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-33.9202714458405s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-33.9202714458405s"></animate>
|
||||||
|
</circle><circle cx="290.30718832814176" cy="60.207260607353895" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;36.85782580252244" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-33.9202714458405s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-33.9202714458405s"></animate>
|
||||||
|
</circle><circle cx="141.57461629003254" cy="187.07605677907222" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;51.82556427519147" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-39.3497070269789s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-39.3497070269789s"></animate>
|
||||||
|
</circle><circle cx="89.86556463252813" cy="191.98681310799674" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;42.52162149867297" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.730611990382005s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.730611990382005s"></animate>
|
||||||
|
</circle><circle cx="135.68751640285163" cy="79.13898775934953" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;13.167119065627332" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-5.604152896601732s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-5.604152896601732s"></animate>
|
||||||
|
</circle><circle cx="222.37419164851048" cy="172.5138843825768" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;30.712438068878654" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-11.730564332626214s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-11.730564332626214s"></animate>
|
||||||
|
</circle><circle cx="65.37962957434202" cy="71.08214856672792" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;51.390991126295845" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.53817444257383s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.53817444257383s"></animate>
|
||||||
|
</circle><circle cx="146.90696443169887" cy="160.58661584710634" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;30.874027084269912" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-48.61529961868726s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-48.61529961868726s"></animate>
|
||||||
|
</circle><circle cx="20.6640150520578" cy="116.652000839832" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;20.32462575632799" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-16.94818532763218s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-16.94818532763218s"></animate>
|
||||||
|
</circle><circle cx="14.794147949099273" cy="178.87974595952937" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;62.66357119046049" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.398483724039195s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.398483724039195s"></animate>
|
||||||
|
</circle><circle cx="270.7941479490993" cy="178.87974595952937" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;62.66357119046049" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.398483724039195s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-22.398483724039195s"></animate>
|
||||||
|
</circle><circle cx="31.287373376921607" cy="70.1833739363135" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;15.295461964288506" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-13.161686681828998s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-13.161686681828998s"></animate>
|
||||||
|
</circle><circle cx="178.84317419706238" cy="167.34091291757605" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;62.162205555011425" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-23.327170625044392s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-23.327170625044392s"></animate>
|
||||||
|
</circle><circle cx="154.05316621664582" cy="55.033341833431564" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;39.67588542484934" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-15.452897657374963s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-15.452897657374963s"></animate>
|
||||||
|
</circle><circle cx="72.19223514179198" cy="135.19246311905093" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;20.804220090813203" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-45.51768235650617s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-45.51768235650617s"></animate>
|
||||||
|
</circle><circle cx="150.9364802116815" cy="160.51205929354626" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;36.57407641397833" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.280565367328037s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-28.280565367328037s"></animate>
|
||||||
|
</circle><circle cx="200.40953970115999" cy="54.21097279269783" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;18.303774190487488" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.214535605827784s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-16.214535605827784s"></animate>
|
||||||
|
</circle><circle cx="180.31885618742604" cy="242.78087924898603" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;11.71365962730546" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-33.612535536027956s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-33.612535536027956s"></animate>
|
||||||
|
</circle><circle cx="203.8062010106876" cy="232.68973192108191" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;5.455675580739268" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-11.86697370110249s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-11.86697370110249s"></animate>
|
||||||
|
</circle><circle cx="171.6066941076269" cy="48.04474014530398" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;38.59286259496349" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-29.250466319872224s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-29.250466319872224s"></animate>
|
||||||
|
</circle><circle cx="125.11525876384411" cy="149.77467373569812" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;46.62256816012656" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-10.699532836506153s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-10.699532836506153s"></animate>
|
||||||
|
</circle><circle cx="89.16772547042389" cy="100.43557995027065" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.90728701564909" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-20.057887262682318s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-20.057887262682318s"></animate>
|
||||||
|
</circle><circle cx="163.0802387343303" cy="125.70388388233474" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;60.89399699890593" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-29.04746538184899s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-29.04746538184899s"></animate>
|
||||||
|
</circle><circle cx="147.29969577601045" cy="40.152117547871356" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.17094951058618" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-8.699383046276775s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-8.699383046276775s"></animate>
|
||||||
|
</circle><circle cx="147.29969577601045" cy="296.15211754787134" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.17094951058618" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-8.699383046276775s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-8.699383046276775s"></animate>
|
||||||
|
</circle><circle cx="50.39439200506233" cy="147.3941729324677" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.69970142939741" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.544702694456348s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.544702694456348s"></animate>
|
||||||
|
</circle><circle cx="306.39439200506234" cy="147.3941729324677" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.69970142939741" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.544702694456348s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.544702694456348s"></animate>
|
||||||
|
</circle><circle cx="188.7139101584322" cy="210.7115210762685" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;29.504019948829963" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-32.532647237390165s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-32.532647237390165s"></animate>
|
||||||
|
</circle><circle cx="114.22207446357659" cy="124.76935492926279" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;11.986008541965333" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.917226446523447s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.917226446523447s"></animate>
|
||||||
|
</circle><circle cx="194.31954289149434" cy="166.65089356408262" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;20.194181381536055" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-30.020995894146097s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-30.020995894146097s"></animate>
|
||||||
|
</circle><circle cx="184.86541783077774" cy="44.886087590301756" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.99589341531981" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-36.60809296354671s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-36.60809296354671s"></animate>
|
||||||
|
</circle><circle cx="184.86541783077774" cy="300.88608759030177" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.99589341531981" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-36.60809296354671s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-36.60809296354671s"></animate>
|
||||||
|
</circle><circle cx="128.6294815429427" cy="20.412863761372066" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;58.14291539416182" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.6283523615141s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.6283523615141s"></animate>
|
||||||
|
</circle><circle cx="128.6294815429427" cy="276.4128637613721" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;58.14291539416182" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.6283523615141s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-38.6283523615141s"></animate>
|
||||||
|
</circle><circle cx="94.65360523910455" cy="237.65373752048882" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;10.872426017373087" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.286612875431295s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-17.286612875431295s"></animate>
|
||||||
|
</circle><circle cx="186.84577473379255" cy="4.291441103039755" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.03848537207753" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-30.97916037182813s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-30.97916037182813s"></animate>
|
||||||
|
</circle><circle cx="186.84577473379255" cy="260.29144110303974" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;50.03848537207753" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-30.97916037182813s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-30.97916037182813s"></animate>
|
||||||
|
</circle><circle cx="3.1171684515748126" cy="10.536170179400985" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;31.72037969636405" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
</circle><circle cx="259.1171684515748" cy="10.536170179400985" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;31.72037969636405" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
</circle><circle cx="3.1171684515748126" cy="266.536170179401" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;31.72037969636405" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
</circle><circle cx="259.1171684515748" cy="266.536170179401" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;31.72037969636405" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-29.18270767825585s"></animate>
|
||||||
|
</circle><circle cx="188.74527992387326" cy="21.78088381944502" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;24.62604013195285" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-15.60412108402891s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-15.60412108402891s"></animate>
|
||||||
|
</circle><circle cx="188.74527992387326" cy="277.780883819445" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;24.62604013195285" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-15.60412108402891s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-15.60412108402891s"></animate>
|
||||||
|
</circle><circle cx="25.856888539646313" cy="42.26884688505775" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.95560071224433" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
</circle><circle cx="281.8568885396463" cy="42.26884688505775" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.95560071224433" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
</circle><circle cx="25.856888539646313" cy="298.26884688505777" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.95560071224433" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
</circle><circle cx="281.8568885396463" cy="298.26884688505777" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.95560071224433" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-16.780876976602578s"></animate>
|
||||||
|
</circle><circle cx="80.07378641634132" cy="99.95189316646443" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;31.25308753538168" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-44.38933261009856s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-44.38933261009856s"></animate>
|
||||||
|
</circle><circle cx="115.28452115370486" cy="183.50469529806404" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;43.47190520350591" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.01262905715093s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-35.01262905715093s"></animate>
|
||||||
|
</circle><circle cx="178.06444021126137" cy="196.65069638203684" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;55.28300103432255" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-31.907669721653242s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-31.907669721653242s"></animate>
|
||||||
|
</circle><circle cx="44.16845143857357" cy="102.58764890706274" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.592641937222965" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-21.452416790316818s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-21.452416790316818s"></animate>
|
||||||
|
</circle><circle cx="300.1684514385736" cy="102.58764890706274" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;56.592641937222965" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-21.452416790316818s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-21.452416790316818s"></animate>
|
||||||
|
</circle><circle cx="79.90917564776078" cy="58.24933597303385" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;17.76697933939279" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-6.018058267098058s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-6.018058267098058s"></animate>
|
||||||
|
</circle><circle cx="99.51047224071066" cy="68.21685313096823" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;32.538025421938485" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-24.711449309412114s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-24.711449309412114s"></animate>
|
||||||
|
</circle><circle cx="170.23837150372032" cy="80.50555967618685" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;49.47798543600463" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-27.302250080429058s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-27.302250080429058s"></animate>
|
||||||
|
</circle><circle cx="146.82045516936643" cy="81.4540879579799" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;17.51784178229697" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-14.316475870551947s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-14.316475870551947s"></animate>
|
||||||
|
</circle><circle cx="85.89692843138472" cy="166.66227056758296" r="0" fill="none" stroke="#5e6fa3" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;43.09830041436764" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-25.33233432848061s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-25.33233432848061s"></animate>
|
||||||
|
</circle><circle cx="177.2226960369944" cy="175.07899171519415" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;43.73555785023012" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-25.121497689569683s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-25.121497689569683s"></animate>
|
||||||
|
</circle><circle cx="216.86808064093213" cy="27.577527215605766" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;4.737877261879547" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-15.904900634836528s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-15.904900634836528s"></animate>
|
||||||
|
</circle><circle cx="110.04710192749121" cy="180.18493319620214" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;44.77556931875715" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-1.5780314591062772s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="25s" begin="-1.5780314591062772s"></animate>
|
||||||
|
</circle><circle cx="64.71846547185336" cy="75.44443893159085" r="0" fill="none" stroke="#93dbe9" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;9.889551183237941" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-36.2183301855013s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-36.2183301855013s"></animate>
|
||||||
|
</circle><circle cx="40.659167565439354" cy="80.92354614012416" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.03611543920749" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-40.52530054760075s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-40.52530054760075s"></animate>
|
||||||
|
</circle><circle cx="296.65916756543936" cy="80.92354614012416" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;47.03611543920749" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-40.52530054760075s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="16.666666666666668s" begin="-40.52530054760075s"></animate>
|
||||||
|
</circle><circle cx="158.9398261520183" cy="96.5683673937937" r="0" fill="none" stroke="#689cc5" stroke-width="8">
|
||||||
|
<animate attributeName="r" values="0;9.89977495248037" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-2.5412705195820062s"></animate>
|
||||||
|
<animate attributeName="opacity" values="1;0" keyTimes="0;1" calcMode="spline" repeatCount="indefinite" keySplines="0 0.5 0.5 1" dur="12.5s" begin="-2.5412705195820062s"></animate>
|
||||||
|
</circle></g>
|
||||||
|
</pattern>
|
||||||
|
</defs>
|
||||||
|
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.2950529742247572)"></rect>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 42 KiB |
18
assets/img/traffic.svg
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:rgba(NaN, NaN, NaN, 0);display:block;z-index:1;position:relative" width="1084" height="322" preserveAspectRatio="xMidYMid" viewBox="0 0 1084 322">
|
||||||
|
<defs>
|
||||||
|
<pattern id="pid-0.32277503320149736" x="0" y="0" width="322.56" height="322.56" patternUnits="userSpaceOnUse">
|
||||||
|
<g transform="scale(1.26)"><g> <line x1="12.8" y1="-268.8" x2="12.8" y2="-217.6" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="-12.8" x2="12.8" y2="38.400000000000006" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="243.2" x2="12.8" y2="294.4" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="-192" x2="12.8" y2="-140.8" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="64" x2="12.8" y2="115.2" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="320" x2="12.8" y2="371.2" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="-115.19999999999999" x2="12.8" y2="-64" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="140.8" x2="12.8" y2="192" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="396.8" x2="12.8" y2="448" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="-38.39999999999998" x2="12.8" y2="38.400000000000034" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="217.60000000000002" x2="12.8" y2="294.40000000000003" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="12.8" y1="473.6" x2="12.8" y2="550.4000000000001" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="50s" keyTimes="0;1" values="0 0;0 256"></animateTransform>
|
||||||
|
</g> <g> <line x1="38.400000000000006" y1="-243.2" x2="38.400000000000006" y2="-192" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="12.8" x2="38.400000000000006" y2="64" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="268.8" x2="38.400000000000006" y2="320" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="-166.39999999999998" x2="38.400000000000006" y2="-115.19999999999999" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="89.60000000000001" x2="38.400000000000006" y2="140.8" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="345.6" x2="38.400000000000006" y2="396.8" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="-89.59999999999997" x2="38.400000000000006" y2="-12.799999999999955" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="166.40000000000003" x2="38.400000000000006" y2="243.20000000000005" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="38.400000000000006" y1="422.40000000000003" x2="38.400000000000006" y2="499.20000000000005" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="16.666666666666668s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g> <g> <line x1="64" y1="-243.2" x2="64" y2="-192" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="12.8" x2="64" y2="64" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="268.8" x2="64" y2="320" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="-166.39999999999998" x2="64" y2="-115.19999999999999" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="89.60000000000001" x2="64" y2="140.8" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="345.6" x2="64" y2="396.8" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="-89.59999999999997" x2="64" y2="-12.799999999999955" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="166.40000000000003" x2="64" y2="243.20000000000005" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="64" y1="422.40000000000003" x2="64" y2="499.20000000000005" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="25s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g> <g> <line x1="89.60000000000001" y1="-243.2" x2="89.60000000000001" y2="-166.39999999999998" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="12.8" x2="89.60000000000001" y2="89.60000000000001" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="268.8" x2="89.60000000000001" y2="345.6" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="-140.8" x2="89.60000000000001" y2="-89.6" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="115.2" x2="89.60000000000001" y2="166.4" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="371.2" x2="89.60000000000001" y2="422.4" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="-63.99999999999997" x2="89.60000000000001" y2="-12.799999999999955" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="192.00000000000003" x2="89.60000000000001" y2="243.20000000000005" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="89.60000000000001" y1="448" x2="89.60000000000001" y2="499.20000000000005" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="16.666666666666668s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g> <g> <line x1="115.2" y1="-243.2" x2="115.2" y2="-217.6" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="12.8" x2="115.2" y2="38.400000000000006" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="268.8" x2="115.2" y2="294.4" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="-192" x2="115.2" y2="-140.8" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="64" x2="115.2" y2="115.2" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="320" x2="115.2" y2="371.2" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="-115.19999999999999" x2="115.2" y2="-64" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="140.8" x2="115.2" y2="192" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="396.8" x2="115.2" y2="448" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="-38.39999999999998" x2="115.2" y2="-12.799999999999983" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="217.60000000000002" x2="115.2" y2="243.20000000000002" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <line x1="115.2" y1="473.6" x2="115.2" y2="499.20000000000005" stroke="#b3b7e2" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="25s" keyTimes="0;1" values="0 0;0 256"></animateTransform>
|
||||||
|
</g> <g> <line x1="140.8" y1="-243.2" x2="140.8" y2="-166.39999999999998" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="12.8" x2="140.8" y2="89.60000000000001" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="268.8" x2="140.8" y2="345.6" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="-140.8" x2="140.8" y2="-115.19999999999999" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="115.2" x2="140.8" y2="140.8" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="371.2" x2="140.8" y2="396.8" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="-89.59999999999997" x2="140.8" y2="-63.99999999999997" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="166.40000000000003" x2="140.8" y2="192.00000000000003" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="422.40000000000003" x2="140.8" y2="448" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="-38.39999999999998" x2="140.8" y2="-12.799999999999983" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="217.60000000000002" x2="140.8" y2="243.20000000000002" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="140.8" y1="473.6" x2="140.8" y2="499.20000000000005" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="50s" keyTimes="0;1" values="0 0;0 256"></animateTransform>
|
||||||
|
</g> <g> <line x1="166.40000000000003" y1="-268.8" x2="166.40000000000003" y2="-192" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="-12.8" x2="166.40000000000003" y2="64.00000000000001" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="243.2" x2="166.40000000000003" y2="320" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="-166.39999999999998" x2="166.40000000000003" y2="-89.59999999999997" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="89.60000000000001" x2="166.40000000000003" y2="166.40000000000003" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="345.6" x2="166.40000000000003" y2="422.40000000000003" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="-63.99999999999997" x2="166.40000000000003" y2="64" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="192.00000000000003" x2="166.40000000000003" y2="320" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="166.40000000000003" y1="448" x2="166.40000000000003" y2="576" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="50s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g> <g> <line x1="192.00000000000003" y1="-243.2" x2="192.00000000000003" y2="-166.39999999999998" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="12.8" x2="192.00000000000003" y2="89.60000000000001" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="268.8" x2="192.00000000000003" y2="345.6" stroke="#3b4368" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="-140.8" x2="192.00000000000003" y2="-64" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="115.2" x2="192.00000000000003" y2="192" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="371.2" x2="192.00000000000003" y2="448" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="-38.39999999999998" x2="192.00000000000003" y2="-12.799999999999983" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="217.60000000000002" x2="192.00000000000003" y2="243.20000000000002" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="192.00000000000003" y1="473.6" x2="192.00000000000003" y2="499.20000000000005" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="16.666666666666668s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g> <g> <line x1="217.60000000000002" y1="-243.2" x2="217.60000000000002" y2="-217.6" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="12.8" x2="217.60000000000002" y2="38.400000000000006" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="268.8" x2="217.60000000000002" y2="294.4" stroke="#689cc5" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="-192" x2="217.60000000000002" y2="-140.8" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="64" x2="217.60000000000002" y2="115.2" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="320" x2="217.60000000000002" y2="371.2" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="-115.19999999999999" x2="217.60000000000002" y2="-64" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="140.8" x2="217.60000000000002" y2="192" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="396.8" x2="217.60000000000002" y2="448" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="-38.39999999999998" x2="217.60000000000002" y2="-12.799999999999983" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="217.60000000000002" x2="217.60000000000002" y2="243.20000000000002" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <line x1="217.60000000000002" y1="473.6" x2="217.60000000000002" y2="499.20000000000005" stroke="#5e6fa3" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="50s" keyTimes="0;1" values="0 0;0 256"></animateTransform>
|
||||||
|
</g> <g> <line x1="243.20000000000002" y1="-243.2" x2="243.20000000000002" y2="-166.39999999999998" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="12.8" x2="243.20000000000002" y2="89.60000000000001" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="268.8" x2="243.20000000000002" y2="345.6" stroke="#191d3a" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="-140.8" x2="243.20000000000002" y2="-64" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="115.2" x2="243.20000000000002" y2="192" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="371.2" x2="243.20000000000002" y2="448" stroke="#93dbe9" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="-38.39999999999998" x2="243.20000000000002" y2="-12.799999999999983" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="217.60000000000002" x2="243.20000000000002" y2="243.20000000000002" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <line x1="243.20000000000002" y1="473.6" x2="243.20000000000002" y2="499.20000000000005" stroke="#d9dbee" stroke-width="21.6" stroke-linecap="round"></line> <animateTransform attributeName="transform" type="translate" repeatCount="indefinite" dur="25s" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||||
|
</g></g>
|
||||||
|
</pattern>
|
||||||
|
</defs>
|
||||||
|
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.32277503320149736)"></rect>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 16 KiB |
24
assets/img/waves.svg
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:rgba(NaN, NaN, NaN, 0);display:block;z-index:1;position:relative" width="1084" height="322" preserveAspectRatio="xMidYMid" viewBox="0 0 1084 322">
|
||||||
|
<defs>
|
||||||
|
<pattern id="pid-0.1520523902861448" x="0" y="0" width="665.6" height="665.6" patternUnits="userSpaceOnUse">
|
||||||
|
<g transform="scale(2.6)"><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#93dbe9" stroke-width="10" transform="translate(0 -36.57142857142857)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="256 -36.57142857142857;0 -36.57142857142857;256 -36.57142857142857" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="0s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#689cc5" stroke-width="10" transform="translate(0 0)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 0;256 0;0 0" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-1.4285714285714284s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#5e6fa3" stroke-width="10" transform="translate(0 36.57142857142857)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="256 36.57142857142857;0 36.57142857142857;256 36.57142857142857" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-2.8571428571428568s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#3b4368" stroke-width="10" transform="translate(0 73.14285714285714)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 73.14285714285714;256 73.14285714285714;0 73.14285714285714" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-4.285714285714286s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#191d3a" stroke-width="10" transform="translate(0 109.71428571428571)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="256 109.71428571428571;0 109.71428571428571;256 109.71428571428571" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-5.7142857142857135s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#d9dbee" stroke-width="10" transform="translate(0 146.28571428571428)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 146.28571428571428;256 146.28571428571428;0 146.28571428571428" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-7.142857142857142s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#b3b7e2" stroke-width="10" transform="translate(0 182.85714285714286)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="256 182.85714285714286;0 182.85714285714286;256 182.85714285714286" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="-8.571428571428571s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path><path d="M -256 9.314285714285713 C -192 9.314285714285713 -192 2 -128 2 C -64 2 -64 9.314285714285713 2 9.314285714285713 C 64 9.314285714285713 64 2 128 2 C 192 2 192 9.314285714285713 256 9.314285714285713 L 384 384 L -384 384 L -384 9.314285714285713 Z" fill="none" stroke="#93dbe9" stroke-width="10" transform="translate(0 219.42857142857142)">
|
||||||
|
<animateTransform attributeName="transform" type="translate" values="0 219.42857142857142;256 219.42857142857142;0 219.42857142857142" keyTimes="0;0.5;1" dur="20s" repeatCount="indefinite" calcMode="spline" begin="0s" keySplines="0.5 0 0.5 1;0.5 0 0.5 1"></animateTransform>
|
||||||
|
</path></g>
|
||||||
|
</pattern>
|
||||||
|
</defs>
|
||||||
|
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.1520523902861448)"></rect>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.6 KiB |
20
assets/js/mermaid.js
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
function css(name) {
|
||||||
|
return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
mermaid.initialize({
|
||||||
|
theme: "base",
|
||||||
|
themeVariables: {
|
||||||
|
background: css("--color-neutral"),
|
||||||
|
primaryColor: css("--color-primary-200"),
|
||||||
|
secondaryColor: css("--color-secondary-200"),
|
||||||
|
tertiaryColor: css("--color-neutral-100"),
|
||||||
|
primaryBorderColor: css("--color-primary-400"),
|
||||||
|
secondaryBorderColor: css("--color-secondary-400"),
|
||||||
|
tertiaryBorderColor: css("--color-neutral-400"),
|
||||||
|
lineColor: css("--color-neutral-600"),
|
||||||
|
fontFamily:
|
||||||
|
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
|
||||||
|
fontSize: "16px",
|
||||||
|
},
|
||||||
|
});
|
|
@ -149,12 +149,17 @@ function executeQuery(term) {
|
||||||
|
|
||||||
if (results.length > 0) {
|
if (results.length > 0) {
|
||||||
results.forEach(function (value, key) {
|
results.forEach(function (value, key) {
|
||||||
|
var title = value.item.externalUrl? value.item.title + '<span class="text-xs ml-2 align-center cursor-default text-neutral-400 dark:text-neutral-500">'+value.item.externalUrl+'</span>' : value.item.title;
|
||||||
|
var linkconfig = value.item.externalUrl? 'target="_blank" rel="noopener" href="'+value.item.externalUrl+'"' : 'href="'+value.item.permalink+'"';
|
||||||
resultsHTML =
|
resultsHTML =
|
||||||
resultsHTML +
|
resultsHTML +
|
||||||
`<li class="mb-2">
|
`<li class="mb-2">
|
||||||
<a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2" href="${value.item.permalink}" tabindex="0">
|
<a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2"
|
||||||
|
${linkconfig} tabindex="0">
|
||||||
<div class="grow">
|
<div class="grow">
|
||||||
<div class="-mb-1 text-lg font-bold">${value.item.title}</div>
|
<div class="-mb-1 text-lg font-bold">
|
||||||
|
${title}
|
||||||
|
</div>
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">${value.item.section}<span class="px-2 text-primary-500">·</span>${value.item.date}</span></div>
|
<div class="text-sm text-neutral-500 dark:text-neutral-400">${value.item.section}<span class="px-2 text-primary-500">·</span>${value.item.date}</span></div>
|
||||||
<div class="text-sm italic">${value.item.summary}</div>
|
<div class="text-sm italic">${value.item.summary}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
95
assets/lib/lite-youtube-embed/lite-yt-embed.css
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
lite-youtube {
|
||||||
|
background-color: #000;
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
contain: content;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: cover;
|
||||||
|
cursor: pointer;
|
||||||
|
max-width: 720px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* gradient */
|
||||||
|
lite-youtube::before {
|
||||||
|
content: attr(data-title);
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
/* Pixel-perfect port of YT's gradient PNG, using https://github.com/bluesmoon/pngtocss plus optimizations */
|
||||||
|
background-image: linear-gradient(180deg, rgb(0 0 0 / 67%) 0%, rgb(0 0 0 / 54%) 14%, rgb(0 0 0 / 15%) 54%, rgb(0 0 0 / 5%) 72%, rgb(0 0 0 / 0%) 94%);
|
||||||
|
height: 99px;
|
||||||
|
width: 100%;
|
||||||
|
font-family: "YouTube Noto",Roboto,Arial,Helvetica,sans-serif;
|
||||||
|
color: hsl(0deg 0% 93.33%);
|
||||||
|
text-shadow: 0 0 2px rgba(0,0,0,.5);
|
||||||
|
font-size: 18px;
|
||||||
|
padding: 25px 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
lite-youtube:hover::before {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* responsive iframe with a 16:9 aspect ratio
|
||||||
|
thanks https://css-tricks.com/responsive-iframes/
|
||||||
|
*/
|
||||||
|
lite-youtube::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
padding-bottom: calc(100% / (16 / 9));
|
||||||
|
}
|
||||||
|
lite-youtube > iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* play button */
|
||||||
|
lite-youtube > .lty-playbtn {
|
||||||
|
display: block;
|
||||||
|
/* Make the button element cover the whole area for a large hover/click target… */
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
/* …but visually it's still the same size */
|
||||||
|
background: no-repeat center/68px 48px;
|
||||||
|
/* YT's actual play button svg */
|
||||||
|
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 1;
|
||||||
|
filter: grayscale(100%);
|
||||||
|
transition: filter .1s cubic-bezier(0, 0, 0.2, 1);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lite-youtube:hover > .lty-playbtn,
|
||||||
|
lite-youtube .lty-playbtn:focus {
|
||||||
|
filter: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Post-click styles */
|
||||||
|
lite-youtube.lyt-activated {
|
||||||
|
cursor: unset;
|
||||||
|
}
|
||||||
|
lite-youtube.lyt-activated::before,
|
||||||
|
lite-youtube.lyt-activated > .lty-playbtn {
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lyt-visually-hidden {
|
||||||
|
clip: rect(0 0 0 0);
|
||||||
|
clip-path: inset(50%);
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 1px;
|
||||||
|
}
|
225
assets/lib/lite-youtube-embed/lite-yt-embed.js
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
/**
|
||||||
|
* A lightweight youtube embed. Still should feel the same to the user, just MUCH faster to initialize and paint.
|
||||||
|
*
|
||||||
|
* Thx to these as the inspiration
|
||||||
|
* https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html
|
||||||
|
* https://autoplay-youtube-player.glitch.me/
|
||||||
|
*
|
||||||
|
* Once built it, I also found these:
|
||||||
|
* https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube (👍👍)
|
||||||
|
* https://github.com/Daugilas/lazyYT
|
||||||
|
* https://github.com/vb/lazyframe
|
||||||
|
*/
|
||||||
|
class LiteYTEmbed extends HTMLElement {
|
||||||
|
connectedCallback() {
|
||||||
|
this.videoId = this.getAttribute('videoid');
|
||||||
|
|
||||||
|
let playBtnEl = this.querySelector('.lty-playbtn');
|
||||||
|
// A label for the button takes priority over a [playlabel] attribute on the custom-element
|
||||||
|
this.playLabel = (playBtnEl && playBtnEl.textContent.trim()) || this.getAttribute('playlabel') || 'Play';
|
||||||
|
|
||||||
|
this.dataset.title = this.getAttribute('title') || "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lo, the youtube poster image! (aka the thumbnail, image placeholder, etc)
|
||||||
|
*
|
||||||
|
* See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md
|
||||||
|
*/
|
||||||
|
if (!this.style.backgroundImage) {
|
||||||
|
this.style.backgroundImage = `url("https://i.ytimg.com/vi/${this.videoId}/hqdefault.jpg")`;
|
||||||
|
this.upgradePosterImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up play button, and its visually hidden label
|
||||||
|
if (!playBtnEl) {
|
||||||
|
playBtnEl = document.createElement('button');
|
||||||
|
playBtnEl.type = 'button';
|
||||||
|
playBtnEl.classList.add('lty-playbtn');
|
||||||
|
this.append(playBtnEl);
|
||||||
|
}
|
||||||
|
if (!playBtnEl.textContent) {
|
||||||
|
const playBtnLabelEl = document.createElement('span');
|
||||||
|
playBtnLabelEl.className = 'lyt-visually-hidden';
|
||||||
|
playBtnLabelEl.textContent = this.playLabel;
|
||||||
|
playBtnEl.append(playBtnLabelEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addNoscriptIframe();
|
||||||
|
|
||||||
|
playBtnEl.removeAttribute('href');
|
||||||
|
|
||||||
|
// On hover (or tap), warm up the TCP connections we're (likely) about to use.
|
||||||
|
this.addEventListener('pointerover', LiteYTEmbed.warmConnections, {once: true});
|
||||||
|
|
||||||
|
// Once the user clicks, add the real iframe and drop our play button
|
||||||
|
// TODO: In the future we could be like amp-youtube and silently swap in the iframe during idle time
|
||||||
|
// We'd want to only do this for in-viewport or near-viewport ones: https://github.com/ampproject/amphtml/pull/5003
|
||||||
|
this.addEventListener('click', this.activate);
|
||||||
|
|
||||||
|
// Chrome & Edge desktop have no problem with the basic YouTube Embed with ?autoplay=1
|
||||||
|
// However Safari desktop and most/all mobile browsers do not successfully track the user gesture of clicking through the creation/loading of the iframe,
|
||||||
|
// so they don't autoplay automatically. Instead we must load an additional 2 sequential JS files (1KB + 165KB) (un-br) for the YT Player API
|
||||||
|
// TODO: Try loading the the YT API in parallel with our iframe and then attaching/playing it. #82
|
||||||
|
this.needsYTApi = this.hasAttribute("js-api") || navigator.vendor.includes('Apple') || navigator.userAgent.includes('Mobi');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a <link rel={preload | preconnect} ...> to the head
|
||||||
|
*/
|
||||||
|
static addPrefetch(kind, url, as) {
|
||||||
|
const linkEl = document.createElement('link');
|
||||||
|
linkEl.rel = kind;
|
||||||
|
linkEl.href = url;
|
||||||
|
if (as) {
|
||||||
|
linkEl.as = as;
|
||||||
|
}
|
||||||
|
document.head.append(linkEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Begin pre-connecting to warm up the iframe load
|
||||||
|
* Since the embed's network requests load within its iframe,
|
||||||
|
* preload/prefetch'ing them outside the iframe will only cause double-downloads.
|
||||||
|
* So, the best we can do is warm up a few connections to origins that are in the critical path.
|
||||||
|
*
|
||||||
|
* Maybe `<link rel=preload as=document>` would work, but it's unsupported: http://crbug.com/593267
|
||||||
|
* But TBH, I don't think it'll happen soon with Site Isolation and split caches adding serious complexity.
|
||||||
|
*/
|
||||||
|
static warmConnections() {
|
||||||
|
if (LiteYTEmbed.preconnected) return;
|
||||||
|
|
||||||
|
// The iframe document and most of its subresources come right off youtube.com
|
||||||
|
LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube-nocookie.com');
|
||||||
|
// The botguard script is fetched off from google.com
|
||||||
|
LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');
|
||||||
|
|
||||||
|
// Not certain if these ad related domains are in the critical path. Could verify with domain-specific throttling.
|
||||||
|
LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');
|
||||||
|
LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');
|
||||||
|
|
||||||
|
LiteYTEmbed.preconnected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchYTPlayerApi() {
|
||||||
|
if (window.YT || (window.YT && window.YT.Player)) return;
|
||||||
|
|
||||||
|
this.ytApiPromise = new Promise((res, rej) => {
|
||||||
|
var el = document.createElement('script');
|
||||||
|
el.src = 'https://www.youtube.com/iframe_api';
|
||||||
|
el.async = true;
|
||||||
|
el.onload = _ => {
|
||||||
|
YT.ready(res);
|
||||||
|
};
|
||||||
|
el.onerror = rej;
|
||||||
|
this.append(el);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return the YT Player API instance. (Public L-YT-E API) */
|
||||||
|
async getYTPlayer() {
|
||||||
|
if(!this.playerPromise) {
|
||||||
|
await this.activate();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.playerPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
async addYTPlayerIframe() {
|
||||||
|
this.fetchYTPlayerApi();
|
||||||
|
await this.ytApiPromise;
|
||||||
|
|
||||||
|
const videoPlaceholderEl = document.createElement('div')
|
||||||
|
this.append(videoPlaceholderEl);
|
||||||
|
|
||||||
|
const paramsObj = Object.fromEntries(this.getParams().entries());
|
||||||
|
|
||||||
|
this.playerPromise = new Promise(resolve => {
|
||||||
|
let player = new YT.Player(videoPlaceholderEl, {
|
||||||
|
width: '100%',
|
||||||
|
videoId: this.videoId,
|
||||||
|
playerVars: paramsObj,
|
||||||
|
events: {
|
||||||
|
'onReady': event => {
|
||||||
|
event.target.playVideo();
|
||||||
|
resolve(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the iframe within <noscript> for indexability discoverability. See https://github.com/paulirish/lite-youtube-embed/issues/105
|
||||||
|
addNoscriptIframe() {
|
||||||
|
const iframeEl = this.createBasicIframe();
|
||||||
|
const noscriptEl = document.createElement('noscript');
|
||||||
|
// Appending into noscript isn't equivalant for mysterious reasons: https://html.spec.whatwg.org/multipage/scripting.html#the-noscript-element
|
||||||
|
noscriptEl.innerHTML = iframeEl.outerHTML;
|
||||||
|
this.append(noscriptEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
getParams() {
|
||||||
|
const params = new URLSearchParams(this.getAttribute('params') || []);
|
||||||
|
params.append('autoplay', '1');
|
||||||
|
params.append('playsinline', '1');
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
async activate(){
|
||||||
|
if (this.classList.contains('lyt-activated')) return;
|
||||||
|
this.classList.add('lyt-activated');
|
||||||
|
|
||||||
|
if (this.needsYTApi) {
|
||||||
|
return this.addYTPlayerIframe(this.getParams());
|
||||||
|
}
|
||||||
|
|
||||||
|
const iframeEl = this.createBasicIframe();
|
||||||
|
this.append(iframeEl);
|
||||||
|
|
||||||
|
// Set focus for a11y
|
||||||
|
iframeEl.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
createBasicIframe(){
|
||||||
|
const iframeEl = document.createElement('iframe');
|
||||||
|
iframeEl.width = 560;
|
||||||
|
iframeEl.height = 315;
|
||||||
|
// No encoding necessary as [title] is safe. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html#:~:text=Safe%20HTML%20Attributes%20include
|
||||||
|
iframeEl.title = this.playLabel;
|
||||||
|
iframeEl.allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture';
|
||||||
|
iframeEl.allowFullscreen = true;
|
||||||
|
// AFAIK, the encoding here isn't necessary for XSS, but we'll do it only because this is a URL
|
||||||
|
// https://stackoverflow.com/q/64959723/89484
|
||||||
|
iframeEl.src = `https://www.youtube-nocookie.com/embed/${encodeURIComponent(this.videoId)}?${this.getParams().toString()}`;
|
||||||
|
return iframeEl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In the spirit of the `lowsrc` attribute and progressive JPEGs, we'll upgrade the reliable
|
||||||
|
* poster image to a higher resolution one, if it's available.
|
||||||
|
* Interestingly this sddefault webp is often smaller in filesize, but we will still attempt it second
|
||||||
|
* because getting _an_ image in front of the user if our first priority.
|
||||||
|
*
|
||||||
|
* See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md for more details
|
||||||
|
*/
|
||||||
|
upgradePosterImage() {
|
||||||
|
// Defer to reduce network contention.
|
||||||
|
setTimeout(() => {
|
||||||
|
const webpUrl = `https://i.ytimg.com/vi_webp/${this.videoId}/sddefault.webp`;
|
||||||
|
const img = new Image();
|
||||||
|
img.fetchPriority = 'low'; // low priority to reduce network contention
|
||||||
|
img.referrerpolicy = 'origin'; // Not 100% sure it's needed, but https://github.com/ampproject/amphtml/pull/3940
|
||||||
|
img.src = webpUrl;
|
||||||
|
img.onload = e => {
|
||||||
|
// A pretty ugly hack since onerror won't fire on YouTube image 404. This is (probably) due to
|
||||||
|
// Youtube's style of returning data even with a 404 status. That data is a 120x90 placeholder image.
|
||||||
|
// … per "annoying yt 404 behavior" in the .md
|
||||||
|
const noAvailablePoster = e.target.naturalHeight == 90 && e.target.naturalWidth == 120;
|
||||||
|
if (noAvailablePoster) return;
|
||||||
|
|
||||||
|
this.style.backgroundImage = `url("${webpUrl}")`;
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Register custom element
|
||||||
|
customElements.define('lite-youtube', LiteYTEmbed);
|
33
assets/lib/mermaid/Diagram.d.ts
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import type { DetailedError } from './utils.js';
|
||||||
|
import type { DiagramDefinition, DiagramMetadata } from './diagram-api/types.js';
|
||||||
|
export type ParseErrorFunction = (err: string | DetailedError | unknown, hash?: any) => void;
|
||||||
|
/**
|
||||||
|
* An object representing a parsed mermaid diagram definition.
|
||||||
|
* @privateRemarks This is exported as part of the public mermaidAPI.
|
||||||
|
*/
|
||||||
|
export declare class Diagram {
|
||||||
|
text: string;
|
||||||
|
metadata: Pick<DiagramMetadata, 'title'>;
|
||||||
|
type: string;
|
||||||
|
parser: DiagramDefinition['parser'];
|
||||||
|
renderer: DiagramDefinition['renderer'];
|
||||||
|
db: DiagramDefinition['db'];
|
||||||
|
private init?;
|
||||||
|
private detectError?;
|
||||||
|
constructor(text: string, metadata?: Pick<DiagramMetadata, 'title'>);
|
||||||
|
parse(): void;
|
||||||
|
render(id: string, version: string): Promise<void>;
|
||||||
|
getParser(): import("./diagram-api/types.js").ParserDefinition;
|
||||||
|
getType(): string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Parse the text asynchronously and generate a Diagram object asynchronously.
|
||||||
|
* **Warning:** This function may be changed in the future.
|
||||||
|
* @alpha
|
||||||
|
* @param text - The mermaid diagram definition.
|
||||||
|
* @param metadata - Diagram metadata, defined in YAML.
|
||||||
|
* @returns A the Promise of a Diagram object.
|
||||||
|
* @throws {@link UnknownDiagramError} if the diagram type can not be found.
|
||||||
|
* @privateRemarks This is exported as part of the public mermaidAPI.
|
||||||
|
*/
|
||||||
|
export declare const getDiagramFromText: (text: string, metadata?: Pick<DiagramMetadata, 'title'>) => Promise<Diagram>;
|
10
assets/lib/mermaid/Tableau10-31042135.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
function colors(specifier) {
|
||||||
|
var n = specifier.length / 6 | 0, colors2 = new Array(n), i = 0;
|
||||||
|
while (i < n)
|
||||||
|
colors2[i] = "#" + specifier.slice(i * 6, ++i * 6);
|
||||||
|
return colors2;
|
||||||
|
}
|
||||||
|
const d3schemeTableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");
|
||||||
|
export {
|
||||||
|
d3schemeTableau10 as d
|
||||||
|
};
|
9
assets/lib/mermaid/Tableau10-558cc280.js
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
function o(e) {
|
||||||
|
for (var c = e.length / 6 | 0, n = new Array(c), a = 0; a < c; )
|
||||||
|
n[a] = "#" + e.slice(a * 6, ++a * 6);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
const r = o("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");
|
||||||
|
export {
|
||||||
|
r as d
|
||||||
|
};
|
13
assets/lib/mermaid/__mocks__/mermaidAPI.d.ts
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
export declare const mermaidAPI: {
|
||||||
|
render: import("@vitest/spy").Mock<any, any>;
|
||||||
|
parse: (text: string, parseOptions?: import("../mermaidAPI.js").ParseOptions | undefined) => Promise<boolean>;
|
||||||
|
initialize: import("@vitest/spy").Mock<any, any>;
|
||||||
|
getConfig: () => import("../config.type.js").MermaidConfig;
|
||||||
|
setConfig: (conf: import("../config.type.js").MermaidConfig) => import("../config.type.js").MermaidConfig;
|
||||||
|
getSiteConfig: () => import("../config.type.js").MermaidConfig;
|
||||||
|
updateSiteConfig: (conf: import("../config.type.js").MermaidConfig) => import("../config.type.js").MermaidConfig;
|
||||||
|
reset: () => void;
|
||||||
|
globalReset: () => void;
|
||||||
|
defaultConfig: import("../config.type.js").MermaidConfig;
|
||||||
|
};
|
||||||
|
export default mermaidAPI;
|
27
assets/lib/mermaid/accessibility.d.ts
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/**
|
||||||
|
* Accessibility (a11y) functions, types, helpers.
|
||||||
|
*
|
||||||
|
* @see https://www.w3.org/WAI/
|
||||||
|
* @see https://www.w3.org/TR/wai-aria-1.1/
|
||||||
|
* @see https://www.w3.org/TR/svg-aam-1.0/
|
||||||
|
*/
|
||||||
|
import type { D3Element } from './mermaidAPI.js';
|
||||||
|
/**
|
||||||
|
* Add role and aria-roledescription to the svg element.
|
||||||
|
*
|
||||||
|
* @param svg - d3 object that contains the SVG HTML element
|
||||||
|
* @param diagramType - diagram name for to the aria-roledescription
|
||||||
|
*/
|
||||||
|
export declare function setA11yDiagramInfo(svg: D3Element, diagramType: string): void;
|
||||||
|
/**
|
||||||
|
* Add an accessible title and/or description element to a chart.
|
||||||
|
* The title is usually not displayed and the description is never displayed.
|
||||||
|
*
|
||||||
|
* The following charts display their title as a visual and accessibility element: gantt.
|
||||||
|
*
|
||||||
|
* @param svg - d3 node to insert the a11y title and desc info
|
||||||
|
* @param a11yTitle - a11y title. undefined or empty strings mean to skip them
|
||||||
|
* @param a11yDesc - a11y description. undefined or empty strings mean to skip them
|
||||||
|
* @param baseId - id used to construct the a11y title and description id
|
||||||
|
*/
|
||||||
|
export declare function addSVGa11yTitleDescription(svg: D3Element, a11yTitle: string | undefined, a11yDesc: string | undefined, baseId: string): void;
|
1
assets/lib/mermaid/accessibility.spec.d.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export {};
|
1705
assets/lib/mermaid/add-html-label-3fd8c466.js
Normal file
1
assets/lib/mermaid/add-html-label-3fd8c466.js.map
Normal file
1145
assets/lib/mermaid/add-html-label-6e56ed67.js
Normal file
1
assets/lib/mermaid/add-html-label-6e56ed67.js.map
Normal file
1145
assets/lib/mermaid/add-html-label-ce7f9292.js
Normal file
1
assets/lib/mermaid/add-html-label-ce7f9292.js.map
Normal file
1705
assets/lib/mermaid/add-html-label-f3a0bd34.js
Normal file
1
assets/lib/mermaid/add-html-label-f3a0bd34.js.map
Normal file
85
assets/lib/mermaid/arc-1bd4335b.js
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
import { c as Q, p as sn } from "./constant-2fe7eae5.js";
|
||||||
|
import { J as en, K as X, N as I, O as rn, P as y, I as ln, Q as z, R as b, T as un, V as t, W as an, X as on, Y as tn } from "./utils-aa888deb.js";
|
||||||
|
function fn(l) {
|
||||||
|
return l.innerRadius;
|
||||||
|
}
|
||||||
|
function cn(l) {
|
||||||
|
return l.outerRadius;
|
||||||
|
}
|
||||||
|
function yn(l) {
|
||||||
|
return l.startAngle;
|
||||||
|
}
|
||||||
|
function gn(l) {
|
||||||
|
return l.endAngle;
|
||||||
|
}
|
||||||
|
function mn(l) {
|
||||||
|
return l && l.padAngle;
|
||||||
|
}
|
||||||
|
function pn(l, x, w, O, h, v, S, r) {
|
||||||
|
var s = w - l, n = O - x, m = S - h, i = r - v, u = i * s - m * n;
|
||||||
|
if (!(u * u < y))
|
||||||
|
return u = (m * (x - v) - i * (l - h)) / u, [l + u * s, x + u * n];
|
||||||
|
}
|
||||||
|
function H(l, x, w, O, h, v, S) {
|
||||||
|
var r = l - w, s = x - O, n = (S ? v : -v) / z(r * r + s * s), m = n * s, i = -n * r, u = l + m, f = x + i, c = w + m, D = O + i, o = (u + c) / 2, E = (f + D) / 2, p = c - u, g = D - f, R = p * p + g * g, J = h - v, P = u * D - c * f, K = (g < 0 ? -1 : 1) * z(tn(0, J * J * R - P * P)), N = (P * g - p * K) / R, d = (-P * p - g * K) / R, A = (P * g + p * K) / R, T = (-P * p + g * K) / R, e = N - o, a = d - E, V = A - o, W = T - E;
|
||||||
|
return e * e + a * a > V * V + W * W && (N = A, d = T), {
|
||||||
|
cx: N,
|
||||||
|
cy: d,
|
||||||
|
x01: -m,
|
||||||
|
y01: -i,
|
||||||
|
x11: N * (h / J - 1),
|
||||||
|
y11: d * (h / J - 1)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function hn() {
|
||||||
|
var l = fn, x = cn, w = Q(0), O = null, h = yn, v = gn, S = mn, r = null;
|
||||||
|
function s() {
|
||||||
|
var n, m, i = +l.apply(this, arguments), u = +x.apply(this, arguments), f = h.apply(this, arguments) - rn, c = v.apply(this, arguments) - rn, D = un(c - f), o = c > f;
|
||||||
|
if (r || (r = n = sn()), u < i && (m = u, u = i, i = m), !(u > y))
|
||||||
|
r.moveTo(0, 0);
|
||||||
|
else if (D > ln - y)
|
||||||
|
r.moveTo(u * X(f), u * I(f)), r.arc(0, 0, u, f, c, !o), i > y && (r.moveTo(i * X(c), i * I(c)), r.arc(0, 0, i, c, f, o));
|
||||||
|
else {
|
||||||
|
var E = f, p = c, g = f, R = c, J = D, P = D, K = S.apply(this, arguments) / 2, N = K > y && (O ? +O.apply(this, arguments) : z(i * i + u * u)), d = b(un(u - i) / 2, +w.apply(this, arguments)), A = d, T = d, e, a;
|
||||||
|
if (N > y) {
|
||||||
|
var V = an(N / i * I(K)), W = an(N / u * I(K));
|
||||||
|
(J -= V * 2) > y ? (V *= o ? 1 : -1, g += V, R -= V) : (J = 0, g = R = (f + c) / 2), (P -= W * 2) > y ? (W *= o ? 1 : -1, E += W, p -= W) : (P = 0, E = p = (f + c) / 2);
|
||||||
|
}
|
||||||
|
var Y = u * X(E), j = u * I(E), B = i * X(R), C = i * I(R);
|
||||||
|
if (d > y) {
|
||||||
|
var F = u * X(p), G = u * I(p), L = i * X(g), M = i * I(g), q;
|
||||||
|
if (D < en && (q = pn(Y, j, L, M, F, G, B, C))) {
|
||||||
|
var U = Y - q[0], Z = j - q[1], $ = F - q[0], k = G - q[1], _ = 1 / I(on((U * $ + Z * k) / (z(U * U + Z * Z) * z($ * $ + k * k))) / 2), nn = z(q[0] * q[0] + q[1] * q[1]);
|
||||||
|
A = b(d, (i - nn) / (_ - 1)), T = b(d, (u - nn) / (_ + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
P > y ? T > y ? (e = H(L, M, Y, j, u, T, o), a = H(F, G, B, C, u, T, o), r.moveTo(e.cx + e.x01, e.cy + e.y01), T < d ? r.arc(e.cx, e.cy, T, t(e.y01, e.x01), t(a.y01, a.x01), !o) : (r.arc(e.cx, e.cy, T, t(e.y01, e.x01), t(e.y11, e.x11), !o), r.arc(0, 0, u, t(e.cy + e.y11, e.cx + e.x11), t(a.cy + a.y11, a.cx + a.x11), !o), r.arc(a.cx, a.cy, T, t(a.y11, a.x11), t(a.y01, a.x01), !o))) : (r.moveTo(Y, j), r.arc(0, 0, u, E, p, !o)) : r.moveTo(Y, j), !(i > y) || !(J > y) ? r.lineTo(B, C) : A > y ? (e = H(B, C, F, G, i, -A, o), a = H(Y, j, L, M, i, -A, o), r.lineTo(e.cx + e.x01, e.cy + e.y01), A < d ? r.arc(e.cx, e.cy, A, t(e.y01, e.x01), t(a.y01, a.x01), !o) : (r.arc(e.cx, e.cy, A, t(e.y01, e.x01), t(e.y11, e.x11), !o), r.arc(0, 0, i, t(e.cy + e.y11, e.cx + e.x11), t(a.cy + a.y11, a.cx + a.x11), o), r.arc(a.cx, a.cy, A, t(a.y11, a.x11), t(a.y01, a.x01), !o))) : r.arc(0, 0, i, R, g, o);
|
||||||
|
}
|
||||||
|
if (r.closePath(), n)
|
||||||
|
return r = null, n + "" || null;
|
||||||
|
}
|
||||||
|
return s.centroid = function() {
|
||||||
|
var n = (+l.apply(this, arguments) + +x.apply(this, arguments)) / 2, m = (+h.apply(this, arguments) + +v.apply(this, arguments)) / 2 - en / 2;
|
||||||
|
return [X(m) * n, I(m) * n];
|
||||||
|
}, s.innerRadius = function(n) {
|
||||||
|
return arguments.length ? (l = typeof n == "function" ? n : Q(+n), s) : l;
|
||||||
|
}, s.outerRadius = function(n) {
|
||||||
|
return arguments.length ? (x = typeof n == "function" ? n : Q(+n), s) : x;
|
||||||
|
}, s.cornerRadius = function(n) {
|
||||||
|
return arguments.length ? (w = typeof n == "function" ? n : Q(+n), s) : w;
|
||||||
|
}, s.padRadius = function(n) {
|
||||||
|
return arguments.length ? (O = n == null ? null : typeof n == "function" ? n : Q(+n), s) : O;
|
||||||
|
}, s.startAngle = function(n) {
|
||||||
|
return arguments.length ? (h = typeof n == "function" ? n : Q(+n), s) : h;
|
||||||
|
}, s.endAngle = function(n) {
|
||||||
|
return arguments.length ? (v = typeof n == "function" ? n : Q(+n), s) : v;
|
||||||
|
}, s.padAngle = function(n) {
|
||||||
|
return arguments.length ? (S = typeof n == "function" ? n : Q(+n), s) : S;
|
||||||
|
}, s.context = function(n) {
|
||||||
|
return arguments.length ? (r = n ?? null, s) : r;
|
||||||
|
}, s;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
hn as d
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=arc-1bd4335b.js.map
|
1
assets/lib/mermaid/arc-1bd4335b.js.map
Normal file
86
assets/lib/mermaid/arc-5a3dc2ef.js
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
import { w as ln, c as H } from "./path-428ebac9.js";
|
||||||
|
import { aw as an, ax as V, ay as D, az as rn, aA as y, V as on, aB as K, aC as _, aD as un, aE as t, aF as sn, aG as tn, aH as fn } from "./mermaid-00886c59.js";
|
||||||
|
function cn(l) {
|
||||||
|
return l.innerRadius;
|
||||||
|
}
|
||||||
|
function yn(l) {
|
||||||
|
return l.outerRadius;
|
||||||
|
}
|
||||||
|
function gn(l) {
|
||||||
|
return l.startAngle;
|
||||||
|
}
|
||||||
|
function mn(l) {
|
||||||
|
return l.endAngle;
|
||||||
|
}
|
||||||
|
function pn(l) {
|
||||||
|
return l && l.padAngle;
|
||||||
|
}
|
||||||
|
function dn(l, h, z, E, v, A, I, a) {
|
||||||
|
var B = z - l, i = E - h, n = I - v, m = a - A, r = m * B - n * i;
|
||||||
|
if (!(r * r < y))
|
||||||
|
return r = (n * (h - A) - m * (l - v)) / r, [l + r * B, h + r * i];
|
||||||
|
}
|
||||||
|
function W(l, h, z, E, v, A, I) {
|
||||||
|
var a = l - z, B = h - E, i = (I ? A : -A) / K(a * a + B * B), n = i * B, m = -i * a, r = l + n, s = h + m, f = z + n, c = E + m, O = (r + f) / 2, o = (s + c) / 2, p = f - r, g = c - s, R = p * p + g * g, T = v - A, w = r * c - f * s, C = (g < 0 ? -1 : 1) * K(fn(0, T * T * R - w * w)), F = (w * g - p * C) / R, G = (-w * p - g * C) / R, P = (w * g + p * C) / R, d = (-w * p + g * C) / R, x = F - O, e = G - o, u = P - O, S = d - o;
|
||||||
|
return x * x + e * e > u * u + S * S && (F = P, G = d), {
|
||||||
|
cx: F,
|
||||||
|
cy: G,
|
||||||
|
x01: -n,
|
||||||
|
y01: -m,
|
||||||
|
x11: F * (v / T - 1),
|
||||||
|
y11: G * (v / T - 1)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function vn() {
|
||||||
|
var l = cn, h = yn, z = H(0), E = null, v = gn, A = mn, I = pn, a = null, B = ln(i);
|
||||||
|
function i() {
|
||||||
|
var n, m, r = +l.apply(this, arguments), s = +h.apply(this, arguments), f = v.apply(this, arguments) - rn, c = A.apply(this, arguments) - rn, O = un(c - f), o = c > f;
|
||||||
|
if (a || (a = n = B()), s < r && (m = s, s = r, r = m), !(s > y))
|
||||||
|
a.moveTo(0, 0);
|
||||||
|
else if (O > on - y)
|
||||||
|
a.moveTo(s * V(f), s * D(f)), a.arc(0, 0, s, f, c, !o), r > y && (a.moveTo(r * V(c), r * D(c)), a.arc(0, 0, r, c, f, o));
|
||||||
|
else {
|
||||||
|
var p = f, g = c, R = f, T = c, w = O, C = O, F = I.apply(this, arguments) / 2, G = F > y && (E ? +E.apply(this, arguments) : K(r * r + s * s)), P = _(un(s - r) / 2, +z.apply(this, arguments)), d = P, x = P, e, u;
|
||||||
|
if (G > y) {
|
||||||
|
var S = sn(G / r * D(F)), L = sn(G / s * D(F));
|
||||||
|
(w -= S * 2) > y ? (S *= o ? 1 : -1, R += S, T -= S) : (w = 0, R = T = (f + c) / 2), (C -= L * 2) > y ? (L *= o ? 1 : -1, p += L, g -= L) : (C = 0, p = g = (f + c) / 2);
|
||||||
|
}
|
||||||
|
var j = s * V(p), J = s * D(p), M = r * V(T), N = r * D(T);
|
||||||
|
if (P > y) {
|
||||||
|
var Q = s * V(g), U = s * D(g), X = r * V(R), Y = r * D(R), q;
|
||||||
|
if (O < an)
|
||||||
|
if (q = dn(j, J, X, Y, Q, U, M, N)) {
|
||||||
|
var Z = j - q[0], $ = J - q[1], k = Q - q[0], b = U - q[1], nn = 1 / D(tn((Z * k + $ * b) / (K(Z * Z + $ * $) * K(k * k + b * b))) / 2), en = K(q[0] * q[0] + q[1] * q[1]);
|
||||||
|
d = _(P, (r - en) / (nn - 1)), x = _(P, (s - en) / (nn + 1));
|
||||||
|
} else
|
||||||
|
d = x = 0;
|
||||||
|
}
|
||||||
|
C > y ? x > y ? (e = W(X, Y, j, J, s, x, o), u = W(Q, U, M, N, s, x, o), a.moveTo(e.cx + e.x01, e.cy + e.y01), x < P ? a.arc(e.cx, e.cy, x, t(e.y01, e.x01), t(u.y01, u.x01), !o) : (a.arc(e.cx, e.cy, x, t(e.y01, e.x01), t(e.y11, e.x11), !o), a.arc(0, 0, s, t(e.cy + e.y11, e.cx + e.x11), t(u.cy + u.y11, u.cx + u.x11), !o), a.arc(u.cx, u.cy, x, t(u.y11, u.x11), t(u.y01, u.x01), !o))) : (a.moveTo(j, J), a.arc(0, 0, s, p, g, !o)) : a.moveTo(j, J), !(r > y) || !(w > y) ? a.lineTo(M, N) : d > y ? (e = W(M, N, Q, U, r, -d, o), u = W(j, J, X, Y, r, -d, o), a.lineTo(e.cx + e.x01, e.cy + e.y01), d < P ? a.arc(e.cx, e.cy, d, t(e.y01, e.x01), t(u.y01, u.x01), !o) : (a.arc(e.cx, e.cy, d, t(e.y01, e.x01), t(e.y11, e.x11), !o), a.arc(0, 0, r, t(e.cy + e.y11, e.cx + e.x11), t(u.cy + u.y11, u.cx + u.x11), o), a.arc(u.cx, u.cy, d, t(u.y11, u.x11), t(u.y01, u.x01), !o))) : a.arc(0, 0, r, T, R, o);
|
||||||
|
}
|
||||||
|
if (a.closePath(), n)
|
||||||
|
return a = null, n + "" || null;
|
||||||
|
}
|
||||||
|
return i.centroid = function() {
|
||||||
|
var n = (+l.apply(this, arguments) + +h.apply(this, arguments)) / 2, m = (+v.apply(this, arguments) + +A.apply(this, arguments)) / 2 - an / 2;
|
||||||
|
return [V(m) * n, D(m) * n];
|
||||||
|
}, i.innerRadius = function(n) {
|
||||||
|
return arguments.length ? (l = typeof n == "function" ? n : H(+n), i) : l;
|
||||||
|
}, i.outerRadius = function(n) {
|
||||||
|
return arguments.length ? (h = typeof n == "function" ? n : H(+n), i) : h;
|
||||||
|
}, i.cornerRadius = function(n) {
|
||||||
|
return arguments.length ? (z = typeof n == "function" ? n : H(+n), i) : z;
|
||||||
|
}, i.padRadius = function(n) {
|
||||||
|
return arguments.length ? (E = n == null ? null : typeof n == "function" ? n : H(+n), i) : E;
|
||||||
|
}, i.startAngle = function(n) {
|
||||||
|
return arguments.length ? (v = typeof n == "function" ? n : H(+n), i) : v;
|
||||||
|
}, i.endAngle = function(n) {
|
||||||
|
return arguments.length ? (A = typeof n == "function" ? n : H(+n), i) : A;
|
||||||
|
}, i.padAngle = function(n) {
|
||||||
|
return arguments.length ? (I = typeof n == "function" ? n : H(+n), i) : I;
|
||||||
|
}, i.context = function(n) {
|
||||||
|
return arguments.length ? (a = n ?? null, i) : a;
|
||||||
|
}, i;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
vn as d
|
||||||
|
};
|
148
assets/lib/mermaid/arc-5aa99581.js
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
import { w as withPath, c as constant } from "./path-39bad7e2.js";
|
||||||
|
import { aw as pi, ax as cos, ay as sin, az as halfPi, aA as epsilon, V as tau, aB as sqrt, aC as min, aD as abs, aE as atan2, aF as asin, aG as acos, aH as max } from "./mermaid-c5809711.js";
|
||||||
|
function arcInnerRadius(d) {
|
||||||
|
return d.innerRadius;
|
||||||
|
}
|
||||||
|
function arcOuterRadius(d) {
|
||||||
|
return d.outerRadius;
|
||||||
|
}
|
||||||
|
function arcStartAngle(d) {
|
||||||
|
return d.startAngle;
|
||||||
|
}
|
||||||
|
function arcEndAngle(d) {
|
||||||
|
return d.endAngle;
|
||||||
|
}
|
||||||
|
function arcPadAngle(d) {
|
||||||
|
return d && d.padAngle;
|
||||||
|
}
|
||||||
|
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
||||||
|
var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10;
|
||||||
|
if (t * t < epsilon)
|
||||||
|
return;
|
||||||
|
t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;
|
||||||
|
return [x0 + t * x10, y0 + t * y10];
|
||||||
|
}
|
||||||
|
function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
|
||||||
|
var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00;
|
||||||
|
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1)
|
||||||
|
cx0 = cx1, cy0 = cy1;
|
||||||
|
return {
|
||||||
|
cx: cx0,
|
||||||
|
cy: cy0,
|
||||||
|
x01: -ox,
|
||||||
|
y01: -oy,
|
||||||
|
x11: cx0 * (r1 / r - 1),
|
||||||
|
y11: cy0 * (r1 / r - 1)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function d3arc() {
|
||||||
|
var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null, path = withPath(arc);
|
||||||
|
function arc() {
|
||||||
|
var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs(a1 - a0), cw = a1 > a0;
|
||||||
|
if (!context)
|
||||||
|
context = buffer = path();
|
||||||
|
if (r1 < r0)
|
||||||
|
r = r1, r1 = r0, r0 = r;
|
||||||
|
if (!(r1 > epsilon))
|
||||||
|
context.moveTo(0, 0);
|
||||||
|
else if (da > tau - epsilon) {
|
||||||
|
context.moveTo(r1 * cos(a0), r1 * sin(a0));
|
||||||
|
context.arc(0, 0, r1, a0, a1, !cw);
|
||||||
|
if (r0 > epsilon) {
|
||||||
|
context.moveTo(r0 * cos(a1), r0 * sin(a1));
|
||||||
|
context.arc(0, 0, r0, a1, a0, cw);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1;
|
||||||
|
if (rp > epsilon) {
|
||||||
|
var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap));
|
||||||
|
if ((da0 -= p0 * 2) > epsilon)
|
||||||
|
p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;
|
||||||
|
else
|
||||||
|
da0 = 0, a00 = a10 = (a0 + a1) / 2;
|
||||||
|
if ((da1 -= p1 * 2) > epsilon)
|
||||||
|
p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;
|
||||||
|
else
|
||||||
|
da1 = 0, a01 = a11 = (a0 + a1) / 2;
|
||||||
|
}
|
||||||
|
var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10);
|
||||||
|
if (rc > epsilon) {
|
||||||
|
var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc;
|
||||||
|
if (da < pi) {
|
||||||
|
if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {
|
||||||
|
var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
|
||||||
|
rc0 = min(rc, (r0 - lc) / (kc - 1));
|
||||||
|
rc1 = min(rc, (r1 - lc) / (kc + 1));
|
||||||
|
} else {
|
||||||
|
rc0 = rc1 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!(da1 > epsilon))
|
||||||
|
context.moveTo(x01, y01);
|
||||||
|
else if (rc1 > epsilon) {
|
||||||
|
t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
|
||||||
|
t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);
|
||||||
|
context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
||||||
|
if (rc1 < rc)
|
||||||
|
context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
else {
|
||||||
|
context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
||||||
|
context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
|
||||||
|
context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);
|
||||||
|
if (!(r0 > epsilon) || !(da0 > epsilon))
|
||||||
|
context.lineTo(x10, y10);
|
||||||
|
else if (rc0 > epsilon) {
|
||||||
|
t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
|
||||||
|
t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);
|
||||||
|
context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
||||||
|
if (rc0 < rc)
|
||||||
|
context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
else {
|
||||||
|
context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
||||||
|
context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);
|
||||||
|
context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
context.arc(0, 0, r0, a10, a00, cw);
|
||||||
|
}
|
||||||
|
context.closePath();
|
||||||
|
if (buffer)
|
||||||
|
return context = null, buffer + "" || null;
|
||||||
|
}
|
||||||
|
arc.centroid = function() {
|
||||||
|
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;
|
||||||
|
return [cos(a) * r, sin(a) * r];
|
||||||
|
};
|
||||||
|
arc.innerRadius = function(_) {
|
||||||
|
return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant(+_), arc) : innerRadius;
|
||||||
|
};
|
||||||
|
arc.outerRadius = function(_) {
|
||||||
|
return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant(+_), arc) : outerRadius;
|
||||||
|
};
|
||||||
|
arc.cornerRadius = function(_) {
|
||||||
|
return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant(+_), arc) : cornerRadius;
|
||||||
|
};
|
||||||
|
arc.padRadius = function(_) {
|
||||||
|
return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant(+_), arc) : padRadius;
|
||||||
|
};
|
||||||
|
arc.startAngle = function(_) {
|
||||||
|
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), arc) : startAngle;
|
||||||
|
};
|
||||||
|
arc.endAngle = function(_) {
|
||||||
|
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), arc) : endAngle;
|
||||||
|
};
|
||||||
|
arc.padAngle = function(_) {
|
||||||
|
return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), arc) : padAngle;
|
||||||
|
};
|
||||||
|
arc.context = function(_) {
|
||||||
|
return arguments.length ? (context = _ == null ? null : _, arc) : context;
|
||||||
|
};
|
||||||
|
return arc;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
d3arc as d
|
||||||
|
};
|
145
assets/lib/mermaid/arc-7c943a40.js
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
import { c as constant, p as path } from "./constant-b644328d.js";
|
||||||
|
import { J as pi, K as cos, N as sin, O as halfPi, P as epsilon, I as tau, Q as sqrt, R as min, T as abs, V as atan2, W as asin, X as acos, Y as max } from "./utils-872dfc50.js";
|
||||||
|
function arcInnerRadius(d) {
|
||||||
|
return d.innerRadius;
|
||||||
|
}
|
||||||
|
function arcOuterRadius(d) {
|
||||||
|
return d.outerRadius;
|
||||||
|
}
|
||||||
|
function arcStartAngle(d) {
|
||||||
|
return d.startAngle;
|
||||||
|
}
|
||||||
|
function arcEndAngle(d) {
|
||||||
|
return d.endAngle;
|
||||||
|
}
|
||||||
|
function arcPadAngle(d) {
|
||||||
|
return d && d.padAngle;
|
||||||
|
}
|
||||||
|
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
||||||
|
var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10;
|
||||||
|
if (t * t < epsilon)
|
||||||
|
return;
|
||||||
|
t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;
|
||||||
|
return [x0 + t * x10, y0 + t * y10];
|
||||||
|
}
|
||||||
|
function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
|
||||||
|
var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00;
|
||||||
|
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1)
|
||||||
|
cx0 = cx1, cy0 = cy1;
|
||||||
|
return {
|
||||||
|
cx: cx0,
|
||||||
|
cy: cy0,
|
||||||
|
x01: -ox,
|
||||||
|
y01: -oy,
|
||||||
|
x11: cx0 * (r1 / r - 1),
|
||||||
|
y11: cy0 * (r1 / r - 1)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function d3arc() {
|
||||||
|
var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null;
|
||||||
|
function arc() {
|
||||||
|
var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs(a1 - a0), cw = a1 > a0;
|
||||||
|
if (!context)
|
||||||
|
context = buffer = path();
|
||||||
|
if (r1 < r0)
|
||||||
|
r = r1, r1 = r0, r0 = r;
|
||||||
|
if (!(r1 > epsilon))
|
||||||
|
context.moveTo(0, 0);
|
||||||
|
else if (da > tau - epsilon) {
|
||||||
|
context.moveTo(r1 * cos(a0), r1 * sin(a0));
|
||||||
|
context.arc(0, 0, r1, a0, a1, !cw);
|
||||||
|
if (r0 > epsilon) {
|
||||||
|
context.moveTo(r0 * cos(a1), r0 * sin(a1));
|
||||||
|
context.arc(0, 0, r0, a1, a0, cw);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1;
|
||||||
|
if (rp > epsilon) {
|
||||||
|
var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap));
|
||||||
|
if ((da0 -= p0 * 2) > epsilon)
|
||||||
|
p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;
|
||||||
|
else
|
||||||
|
da0 = 0, a00 = a10 = (a0 + a1) / 2;
|
||||||
|
if ((da1 -= p1 * 2) > epsilon)
|
||||||
|
p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;
|
||||||
|
else
|
||||||
|
da1 = 0, a01 = a11 = (a0 + a1) / 2;
|
||||||
|
}
|
||||||
|
var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10);
|
||||||
|
if (rc > epsilon) {
|
||||||
|
var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc;
|
||||||
|
if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {
|
||||||
|
var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
|
||||||
|
rc0 = min(rc, (r0 - lc) / (kc - 1));
|
||||||
|
rc1 = min(rc, (r1 - lc) / (kc + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!(da1 > epsilon))
|
||||||
|
context.moveTo(x01, y01);
|
||||||
|
else if (rc1 > epsilon) {
|
||||||
|
t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
|
||||||
|
t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);
|
||||||
|
context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
||||||
|
if (rc1 < rc)
|
||||||
|
context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
else {
|
||||||
|
context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
||||||
|
context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
|
||||||
|
context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);
|
||||||
|
if (!(r0 > epsilon) || !(da0 > epsilon))
|
||||||
|
context.lineTo(x10, y10);
|
||||||
|
else if (rc0 > epsilon) {
|
||||||
|
t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
|
||||||
|
t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);
|
||||||
|
context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
||||||
|
if (rc0 < rc)
|
||||||
|
context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
else {
|
||||||
|
context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
||||||
|
context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);
|
||||||
|
context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
context.arc(0, 0, r0, a10, a00, cw);
|
||||||
|
}
|
||||||
|
context.closePath();
|
||||||
|
if (buffer)
|
||||||
|
return context = null, buffer + "" || null;
|
||||||
|
}
|
||||||
|
arc.centroid = function() {
|
||||||
|
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;
|
||||||
|
return [cos(a) * r, sin(a) * r];
|
||||||
|
};
|
||||||
|
arc.innerRadius = function(_) {
|
||||||
|
return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant(+_), arc) : innerRadius;
|
||||||
|
};
|
||||||
|
arc.outerRadius = function(_) {
|
||||||
|
return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant(+_), arc) : outerRadius;
|
||||||
|
};
|
||||||
|
arc.cornerRadius = function(_) {
|
||||||
|
return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant(+_), arc) : cornerRadius;
|
||||||
|
};
|
||||||
|
arc.padRadius = function(_) {
|
||||||
|
return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant(+_), arc) : padRadius;
|
||||||
|
};
|
||||||
|
arc.startAngle = function(_) {
|
||||||
|
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), arc) : startAngle;
|
||||||
|
};
|
||||||
|
arc.endAngle = function(_) {
|
||||||
|
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), arc) : endAngle;
|
||||||
|
};
|
||||||
|
arc.padAngle = function(_) {
|
||||||
|
return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), arc) : padAngle;
|
||||||
|
};
|
||||||
|
arc.context = function(_) {
|
||||||
|
return arguments.length ? (context = _ == null ? null : _, arc) : context;
|
||||||
|
};
|
||||||
|
return arc;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
d3arc as d
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=arc-7c943a40.js.map
|
1
assets/lib/mermaid/arc-7c943a40.js.map
Normal file
6
assets/lib/mermaid/array-2ff2c7a6.js
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
function t(r) {
|
||||||
|
return typeof r == "object" && "length" in r ? r : Array.from(r);
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
t as a
|
||||||
|
};
|
1
assets/lib/mermaid/array-2ff2c7a6.js.map
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"array-2ff2c7a6.js","sources":["../../../node_modules/.pnpm/d3-shape@3.1.0/node_modules/d3-shape/src/array.js"],"sourcesContent":["export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n"],"names":["array","x"],"mappings":"AAEe,SAAQA,EAACC,GAAG;AACzB,SAAO,OAAOA,KAAM,YAAY,YAAYA,IACxCA,IACA,MAAM,KAAKA,CAAC;AAClB;"}
|
6
assets/lib/mermaid/array-b7dcf730.js
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
function array(x) {
|
||||||
|
return typeof x === "object" && "length" in x ? x : Array.from(x);
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
array as a
|
||||||
|
};
|
1
assets/lib/mermaid/array-b7dcf730.js.map
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"array-b7dcf730.js","sources":["../../../node_modules/.pnpm/d3-shape@3.1.0/node_modules/d3-shape/src/array.js"],"sourcesContent":["export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n"],"names":[],"mappings":"AAEe,SAAQ,MAAC,GAAG;AACzB,SAAO,OAAO,MAAM,YAAY,YAAY,IACxC,IACA,MAAM,KAAK,CAAC;AAClB;"}
|
30
assets/lib/mermaid/assignWithDepth.d.ts
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/**
|
||||||
|
* assignWithDepth Extends the functionality of {@link Object.assign} with the
|
||||||
|
* ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)
|
||||||
|
* performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of
|
||||||
|
* undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to `{}` and
|
||||||
|
* effectively merged with src[`k`]<p> Additionally, dissimilar types will not clobber unless the
|
||||||
|
* config.clobber parameter === true. Example:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* const config_0 = { foo: { bar: 'bar' }, bar: 'foo' };
|
||||||
|
* const config_1 = { foo: 'foo', bar: 'bar' };
|
||||||
|
* const result = assignWithDepth(config_0, config_1);
|
||||||
|
* console.log(result);
|
||||||
|
* //-> result: { foo: { bar: 'bar' }, bar: 'bar' }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a
|
||||||
|
* destructured array of objects and dst is not an array, assignWithDepth will apply each element
|
||||||
|
* of src to dst in order.
|
||||||
|
* @param dst - The destination of the merge
|
||||||
|
* @param src - The source object(s) to merge into destination
|
||||||
|
* @param config -
|
||||||
|
* * depth: depth to traverse within src and dst for merging
|
||||||
|
* * clobber: should dissimilar types clobber
|
||||||
|
*/
|
||||||
|
declare const assignWithDepth: (dst: any, src: any, { depth, clobber }?: {
|
||||||
|
depth?: number | undefined;
|
||||||
|
clobber?: boolean | undefined;
|
||||||
|
}) => any;
|
||||||
|
export default assignWithDepth;
|
1230
assets/lib/mermaid/blockDiagram-48276afd.js
Normal file
1813
assets/lib/mermaid/blockDiagram-8beecd1f.js
Normal file
1817
assets/lib/mermaid/blockDiagram-91b80b7a.js
Normal file
2538
assets/lib/mermaid/c4Diagram-03ae1c00.js
Normal file
1
assets/lib/mermaid/c4Diagram-03ae1c00.js.map
Normal file
2530
assets/lib/mermaid/c4Diagram-8889d224.js
Normal file
1
assets/lib/mermaid/c4Diagram-8889d224.js.map
Normal file
1626
assets/lib/mermaid/c4Diagram-a7af8508.js
Normal file
1
assets/lib/mermaid/c4Diagram-a7af8508.js.map
Normal file
1626
assets/lib/mermaid/c4Diagram-adf7b82c.js
Normal file
1
assets/lib/mermaid/c4Diagram-adf7b82c.js.map
Normal file
2473
assets/lib/mermaid/c4Diagram-b2a90758.js
Normal file
2463
assets/lib/mermaid/c4Diagram-e2511a7a.js
Normal file
1579
assets/lib/mermaid/c4Diagram-e65f60cc.js
Normal file
2538
assets/lib/mermaid/c4Diagram-f9e67060.js
Normal file
1
assets/lib/mermaid/c4Diagram-f9e67060.js.map
Normal file
2530
assets/lib/mermaid/c4Diagram-fa9ef55f.js
Normal file
1
assets/lib/mermaid/c4Diagram-fa9ef55f.js.map
Normal file
5
assets/lib/mermaid/channel-7a9b7149.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
import { aI as o, aJ as r } from "./mermaid-00886c59.js";
|
||||||
|
const s = (a, n) => o.lang.round(r.parse(a)[n]), e = s;
|
||||||
|
export {
|
||||||
|
e as c
|
||||||
|
};
|
8
assets/lib/mermaid/channel-d3ac35ac.js
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import { aI as _, aJ as Color } from "./mermaid-c5809711.js";
|
||||||
|
const channel = (color, channel2) => {
|
||||||
|
return _.lang.round(Color.parse(color)[channel2]);
|
||||||
|
};
|
||||||
|
const channel$1 = channel;
|
||||||
|
export {
|
||||||
|
channel$1 as c
|
||||||
|
};
|
97
assets/lib/mermaid/classDiagram-17eafd8a.js
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
import { p as W, d as M, s as H } from "./styles-55d85316.js";
|
||||||
|
import { g as S, l as d, f as u } from "./config-e567ef17.js";
|
||||||
|
import { G as X, l as Y } from "./layout-d6d8be39.js";
|
||||||
|
import { s as l } from "./svgDraw-c034b55e.js";
|
||||||
|
import { c as Z } from "./setupGraphViewbox-a4603a92.js";
|
||||||
|
import "./utils-aa888deb.js";
|
||||||
|
import "./commonDb-4dc3d465.js";
|
||||||
|
import "./mermaidAPI-04b5c286.js";
|
||||||
|
import "./errorRenderer-a3c4bedb.js";
|
||||||
|
import "./isPlainObject-a5cb4071.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./constant-2fe7eae5.js";
|
||||||
|
let h = {};
|
||||||
|
const g = 20, p = function(e) {
|
||||||
|
const s = Object.entries(h).find((k) => k[1].label === e);
|
||||||
|
if (s)
|
||||||
|
return s[0];
|
||||||
|
}, D = function(e) {
|
||||||
|
e.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), e.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"), e.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
}, $ = function(e, s, k, a) {
|
||||||
|
const f = S().class;
|
||||||
|
h = {}, d.info("Rendering diagram " + e);
|
||||||
|
const L = S().securityLevel;
|
||||||
|
let y;
|
||||||
|
L === "sandbox" && (y = u("#i" + s));
|
||||||
|
const x = L === "sandbox" ? u(y.nodes()[0].contentDocument.body) : u("body"), n = x.select(`[id='${s}']`);
|
||||||
|
D(n);
|
||||||
|
const r = new X({
|
||||||
|
multigraph: !0
|
||||||
|
});
|
||||||
|
r.setGraph({
|
||||||
|
isMultiGraph: !0
|
||||||
|
}), r.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const m = a.db.getClasses(), N = Object.keys(m);
|
||||||
|
for (const t of N) {
|
||||||
|
const o = m[t], i = l.drawClass(n, o, f, a);
|
||||||
|
h[i.id] = i, r.setNode(i.id, i), d.info("Org height: " + i.height);
|
||||||
|
}
|
||||||
|
a.db.getRelations().forEach(function(t) {
|
||||||
|
d.info(
|
||||||
|
"tjoho" + p(t.id1) + p(t.id2) + JSON.stringify(t)
|
||||||
|
), r.setEdge(
|
||||||
|
p(t.id1),
|
||||||
|
p(t.id2),
|
||||||
|
{
|
||||||
|
relation: t
|
||||||
|
},
|
||||||
|
t.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
}), a.db.getNotes().forEach(function(t) {
|
||||||
|
d.debug(`Adding note: ${JSON.stringify(t)}`);
|
||||||
|
const o = l.drawNote(n, t, f, a);
|
||||||
|
h[o.id] = o, r.setNode(o.id, o), t.class && t.class in m && r.setEdge(
|
||||||
|
t.id,
|
||||||
|
p(t.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: t.id,
|
||||||
|
id2: t.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}), Y(r), r.nodes().forEach(function(t) {
|
||||||
|
t !== void 0 && r.node(t) !== void 0 && (d.debug("Node " + t + ": " + JSON.stringify(r.node(t))), x.select("#" + (a.db.lookUpDomId(t) || t)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (r.node(t).x - r.node(t).width / 2) + "," + (r.node(t).y - r.node(t).height / 2) + " )"
|
||||||
|
));
|
||||||
|
}), r.edges().forEach(function(t) {
|
||||||
|
t !== void 0 && r.edge(t) !== void 0 && (d.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(r.edge(t))), l.drawEdge(n, r.edge(t), r.edge(t).relation, f, a));
|
||||||
|
});
|
||||||
|
const c = n.node().getBBox(), E = c.width + g * 2, b = c.height + g * 2;
|
||||||
|
Z(n, b, E, f.useMaxWidth);
|
||||||
|
const w = `${c.x - g} ${c.y - g} ${E} ${b}`;
|
||||||
|
d.debug(`viewBox ${w}`), n.attr("viewBox", w);
|
||||||
|
}, B = {
|
||||||
|
draw: $
|
||||||
|
}, q = {
|
||||||
|
parser: W,
|
||||||
|
db: M,
|
||||||
|
renderer: B,
|
||||||
|
styles: H,
|
||||||
|
init: (e) => {
|
||||||
|
e.class || (e.class = {}), e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute, M.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
q as diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-17eafd8a.js.map
|
1
assets/lib/mermaid/classDiagram-17eafd8a.js.map
Normal file
363
assets/lib/mermaid/classDiagram-30eddba6.js
Normal file
|
@ -0,0 +1,363 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-991ebdfc.js";
|
||||||
|
import { line, curveBasis, select } from "d3";
|
||||||
|
import { layout } from "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { u as utils, l as log, x as parseGenericTypes, c as getConfig, i as configureSvgSize } from "./mermaid-f47111a7.js";
|
||||||
|
import "ts-dedent";
|
||||||
|
import "dayjs";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "dompurify";
|
||||||
|
import "khroma";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
import "lodash-es/merge.js";
|
||||||
|
import "stylis";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
let edgeCount = 0;
|
||||||
|
const drawEdge = function(elem, path, relation, conf, diagObj) {
|
||||||
|
const getRelationType = function(type) {
|
||||||
|
switch (type) {
|
||||||
|
case diagObj.db.relationType.AGGREGATION:
|
||||||
|
return "aggregation";
|
||||||
|
case diagObj.db.relationType.EXTENSION:
|
||||||
|
return "extension";
|
||||||
|
case diagObj.db.relationType.COMPOSITION:
|
||||||
|
return "composition";
|
||||||
|
case diagObj.db.relationType.DEPENDENCY:
|
||||||
|
return "dependency";
|
||||||
|
case diagObj.db.relationType.LOLLIPOP:
|
||||||
|
return "lollipop";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
path.points = path.points.filter((p) => !Number.isNaN(p.y));
|
||||||
|
const lineData = path.points;
|
||||||
|
const lineFunction = line().x(function(d) {
|
||||||
|
return d.x;
|
||||||
|
}).y(function(d) {
|
||||||
|
return d.y;
|
||||||
|
}).curve(curveBasis);
|
||||||
|
const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", "edge" + edgeCount).attr("class", "relation");
|
||||||
|
let url = "";
|
||||||
|
if (conf.arrowMarkerAbsolute) {
|
||||||
|
url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
|
||||||
|
url = url.replace(/\(/g, "\\(");
|
||||||
|
url = url.replace(/\)/g, "\\)");
|
||||||
|
}
|
||||||
|
if (relation.relation.lineType == 1) {
|
||||||
|
svgPath.attr("class", "relation dashed-line");
|
||||||
|
}
|
||||||
|
if (relation.relation.lineType == 10) {
|
||||||
|
svgPath.attr("class", "relation dotted-line");
|
||||||
|
}
|
||||||
|
if (relation.relation.type1 !== "none") {
|
||||||
|
svgPath.attr(
|
||||||
|
"marker-start",
|
||||||
|
"url(" + url + "#" + getRelationType(relation.relation.type1) + "Start)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (relation.relation.type2 !== "none") {
|
||||||
|
svgPath.attr(
|
||||||
|
"marker-end",
|
||||||
|
"url(" + url + "#" + getRelationType(relation.relation.type2) + "End)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let x, y;
|
||||||
|
const l = path.points.length;
|
||||||
|
let labelPosition = utils.calcLabelPosition(path.points);
|
||||||
|
x = labelPosition.x;
|
||||||
|
y = labelPosition.y;
|
||||||
|
let p1_card_x, p1_card_y;
|
||||||
|
let p2_card_x, p2_card_y;
|
||||||
|
if (l % 2 !== 0 && l > 1) {
|
||||||
|
let cardinality_1_point = utils.calcCardinalityPosition(
|
||||||
|
relation.relation.type1 !== "none",
|
||||||
|
path.points,
|
||||||
|
path.points[0]
|
||||||
|
);
|
||||||
|
let cardinality_2_point = utils.calcCardinalityPosition(
|
||||||
|
relation.relation.type2 !== "none",
|
||||||
|
path.points,
|
||||||
|
path.points[l - 1]
|
||||||
|
);
|
||||||
|
log.debug("cardinality_1_point " + JSON.stringify(cardinality_1_point));
|
||||||
|
log.debug("cardinality_2_point " + JSON.stringify(cardinality_2_point));
|
||||||
|
p1_card_x = cardinality_1_point.x;
|
||||||
|
p1_card_y = cardinality_1_point.y;
|
||||||
|
p2_card_x = cardinality_2_point.x;
|
||||||
|
p2_card_y = cardinality_2_point.y;
|
||||||
|
}
|
||||||
|
if (relation.title !== void 0) {
|
||||||
|
const g = elem.append("g").attr("class", "classLabel");
|
||||||
|
const label = g.append("text").attr("class", "label").attr("x", x).attr("y", y).attr("fill", "red").attr("text-anchor", "middle").text(relation.title);
|
||||||
|
window.label = label;
|
||||||
|
const bounds = label.node().getBBox();
|
||||||
|
g.insert("rect", ":first-child").attr("class", "box").attr("x", bounds.x - conf.padding / 2).attr("y", bounds.y - conf.padding / 2).attr("width", bounds.width + conf.padding).attr("height", bounds.height + conf.padding);
|
||||||
|
}
|
||||||
|
log.info("Rendering relation " + JSON.stringify(relation));
|
||||||
|
if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== "none") {
|
||||||
|
const g = elem.append("g").attr("class", "cardinality");
|
||||||
|
g.append("text").attr("class", "type1").attr("x", p1_card_x).attr("y", p1_card_y).attr("fill", "black").attr("font-size", "6").text(relation.relationTitle1);
|
||||||
|
}
|
||||||
|
if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== "none") {
|
||||||
|
const g = elem.append("g").attr("class", "cardinality");
|
||||||
|
g.append("text").attr("class", "type2").attr("x", p2_card_x).attr("y", p2_card_y).attr("fill", "black").attr("font-size", "6").text(relation.relationTitle2);
|
||||||
|
}
|
||||||
|
edgeCount++;
|
||||||
|
};
|
||||||
|
const drawClass = function(elem, classDef, conf, diagObj) {
|
||||||
|
log.debug("Rendering class ", classDef, conf);
|
||||||
|
const id = classDef.id;
|
||||||
|
const classInfo = {
|
||||||
|
id,
|
||||||
|
label: classDef.id,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
};
|
||||||
|
const g = elem.append("g").attr("id", diagObj.db.lookUpDomId(id)).attr("class", "classGroup");
|
||||||
|
let title;
|
||||||
|
if (classDef.link) {
|
||||||
|
title = g.append("svg:a").attr("xlink:href", classDef.link).attr("target", classDef.linkTarget).append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
} else {
|
||||||
|
title = g.append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
}
|
||||||
|
let isFirst = true;
|
||||||
|
classDef.annotations.forEach(function(member) {
|
||||||
|
const titleText2 = title.append("tspan").text("«" + member + "»");
|
||||||
|
if (!isFirst) {
|
||||||
|
titleText2.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
let classTitleString = getClassTitleString(classDef);
|
||||||
|
const classTitle = title.append("tspan").text(classTitleString).attr("class", "title");
|
||||||
|
if (!isFirst) {
|
||||||
|
classTitle.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
const titleHeight = title.node().getBBox().height;
|
||||||
|
let membersLine;
|
||||||
|
let membersBox;
|
||||||
|
let methodsLine;
|
||||||
|
if (classDef.members.length > 0) {
|
||||||
|
membersLine = g.append("line").attr("x1", 0).attr("y1", conf.padding + titleHeight + conf.dividerMargin / 2).attr("y2", conf.padding + titleHeight + conf.dividerMargin / 2);
|
||||||
|
const members = g.append("text").attr("x", conf.padding).attr("y", titleHeight + conf.dividerMargin + conf.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
isFirst = true;
|
||||||
|
classDef.members.forEach(function(member) {
|
||||||
|
addTspan(members, member, isFirst, conf);
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
membersBox = members.node().getBBox();
|
||||||
|
}
|
||||||
|
if (classDef.methods.length > 0) {
|
||||||
|
methodsLine = g.append("line").attr("x1", 0).attr("y1", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr("y2", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);
|
||||||
|
const methods = g.append("text").attr("x", conf.padding).attr("y", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
isFirst = true;
|
||||||
|
classDef.methods.forEach(function(method) {
|
||||||
|
addTspan(methods, method, isFirst, conf);
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const classBox = g.node().getBBox();
|
||||||
|
var cssClassStr = " ";
|
||||||
|
if (classDef.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + classDef.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const rect = g.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", classBox.width + 2 * conf.padding).attr("height", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr("class", cssClassStr);
|
||||||
|
const rectWidth = rect.node().getBBox().width;
|
||||||
|
title.node().childNodes.forEach(function(x) {
|
||||||
|
x.setAttribute("x", (rectWidth - x.getBBox().width) / 2);
|
||||||
|
});
|
||||||
|
if (classDef.tooltip) {
|
||||||
|
title.insert("title").text(classDef.tooltip);
|
||||||
|
}
|
||||||
|
if (membersLine) {
|
||||||
|
membersLine.attr("x2", rectWidth);
|
||||||
|
}
|
||||||
|
if (methodsLine) {
|
||||||
|
methodsLine.attr("x2", rectWidth);
|
||||||
|
}
|
||||||
|
classInfo.width = rectWidth;
|
||||||
|
classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;
|
||||||
|
return classInfo;
|
||||||
|
};
|
||||||
|
const getClassTitleString = function(classDef) {
|
||||||
|
let classTitleString = classDef.id;
|
||||||
|
if (classDef.type) {
|
||||||
|
classTitleString += "<" + parseGenericTypes(classDef.type) + ">";
|
||||||
|
}
|
||||||
|
return classTitleString;
|
||||||
|
};
|
||||||
|
const drawNote = function(elem, note, conf, diagObj) {
|
||||||
|
log.debug("Rendering note ", note, conf);
|
||||||
|
const id = note.id;
|
||||||
|
const noteInfo = {
|
||||||
|
id,
|
||||||
|
text: note.text,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
};
|
||||||
|
const g = elem.append("g").attr("id", id).attr("class", "classGroup");
|
||||||
|
let text = g.append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
const lines = JSON.parse(`"${note.text}"`).split("\n");
|
||||||
|
lines.forEach(function(line2) {
|
||||||
|
log.debug(`Adding line: ${line2}`);
|
||||||
|
text.append("tspan").text(line2).attr("class", "title").attr("dy", conf.textHeight);
|
||||||
|
});
|
||||||
|
const noteBox = g.node().getBBox();
|
||||||
|
const rect = g.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", noteBox.width + 2 * conf.padding).attr(
|
||||||
|
"height",
|
||||||
|
noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin
|
||||||
|
);
|
||||||
|
const rectWidth = rect.node().getBBox().width;
|
||||||
|
text.node().childNodes.forEach(function(x) {
|
||||||
|
x.setAttribute("x", (rectWidth - x.getBBox().width) / 2);
|
||||||
|
});
|
||||||
|
noteInfo.width = rectWidth;
|
||||||
|
noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;
|
||||||
|
return noteInfo;
|
||||||
|
};
|
||||||
|
const addTspan = function(textEl, member, isFirst, conf) {
|
||||||
|
const { displayText, cssStyle } = member.getDisplayDetails();
|
||||||
|
const tSpan = textEl.append("tspan").attr("x", conf.padding).text(displayText);
|
||||||
|
if (cssStyle !== "") {
|
||||||
|
tSpan.attr("style", member.cssStyle);
|
||||||
|
}
|
||||||
|
if (!isFirst) {
|
||||||
|
tSpan.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const svgDraw = {
|
||||||
|
getClassTitleString,
|
||||||
|
drawClass,
|
||||||
|
drawEdge,
|
||||||
|
drawNote
|
||||||
|
};
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
// cspell:ignore tjoho
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
356
assets/lib/mermaid/classDiagram-3275847a.js
Normal file
|
@ -0,0 +1,356 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-d48462a7.js";
|
||||||
|
import { F as curveBasis, A as utils, l as log, G as parseGenericTypes, c as getConfig, j as d3select, k as configureSvgSize } from "./mermaid-c5809711.js";
|
||||||
|
import { G as Graph } from "./graph-af3d5df6.js";
|
||||||
|
import { l as layout } from "./layout-6685625a.js";
|
||||||
|
import { l as line } from "./line-65d70945.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./path-39bad7e2.js";
|
||||||
|
let edgeCount = 0;
|
||||||
|
const drawEdge = function(elem, path, relation, conf, diagObj) {
|
||||||
|
const getRelationType = function(type) {
|
||||||
|
switch (type) {
|
||||||
|
case diagObj.db.relationType.AGGREGATION:
|
||||||
|
return "aggregation";
|
||||||
|
case diagObj.db.relationType.EXTENSION:
|
||||||
|
return "extension";
|
||||||
|
case diagObj.db.relationType.COMPOSITION:
|
||||||
|
return "composition";
|
||||||
|
case diagObj.db.relationType.DEPENDENCY:
|
||||||
|
return "dependency";
|
||||||
|
case diagObj.db.relationType.LOLLIPOP:
|
||||||
|
return "lollipop";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
path.points = path.points.filter((p) => !Number.isNaN(p.y));
|
||||||
|
const lineData = path.points;
|
||||||
|
const lineFunction = line().x(function(d) {
|
||||||
|
return d.x;
|
||||||
|
}).y(function(d) {
|
||||||
|
return d.y;
|
||||||
|
}).curve(curveBasis);
|
||||||
|
const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", "edge" + edgeCount).attr("class", "relation");
|
||||||
|
let url = "";
|
||||||
|
if (conf.arrowMarkerAbsolute) {
|
||||||
|
url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
|
||||||
|
url = url.replace(/\(/g, "\\(");
|
||||||
|
url = url.replace(/\)/g, "\\)");
|
||||||
|
}
|
||||||
|
if (relation.relation.lineType == 1) {
|
||||||
|
svgPath.attr("class", "relation dashed-line");
|
||||||
|
}
|
||||||
|
if (relation.relation.lineType == 10) {
|
||||||
|
svgPath.attr("class", "relation dotted-line");
|
||||||
|
}
|
||||||
|
if (relation.relation.type1 !== "none") {
|
||||||
|
svgPath.attr(
|
||||||
|
"marker-start",
|
||||||
|
"url(" + url + "#" + getRelationType(relation.relation.type1) + "Start)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (relation.relation.type2 !== "none") {
|
||||||
|
svgPath.attr(
|
||||||
|
"marker-end",
|
||||||
|
"url(" + url + "#" + getRelationType(relation.relation.type2) + "End)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
let x, y;
|
||||||
|
const l = path.points.length;
|
||||||
|
let labelPosition = utils.calcLabelPosition(path.points);
|
||||||
|
x = labelPosition.x;
|
||||||
|
y = labelPosition.y;
|
||||||
|
let p1_card_x, p1_card_y;
|
||||||
|
let p2_card_x, p2_card_y;
|
||||||
|
if (l % 2 !== 0 && l > 1) {
|
||||||
|
let cardinality_1_point = utils.calcCardinalityPosition(
|
||||||
|
relation.relation.type1 !== "none",
|
||||||
|
path.points,
|
||||||
|
path.points[0]
|
||||||
|
);
|
||||||
|
let cardinality_2_point = utils.calcCardinalityPosition(
|
||||||
|
relation.relation.type2 !== "none",
|
||||||
|
path.points,
|
||||||
|
path.points[l - 1]
|
||||||
|
);
|
||||||
|
log.debug("cardinality_1_point " + JSON.stringify(cardinality_1_point));
|
||||||
|
log.debug("cardinality_2_point " + JSON.stringify(cardinality_2_point));
|
||||||
|
p1_card_x = cardinality_1_point.x;
|
||||||
|
p1_card_y = cardinality_1_point.y;
|
||||||
|
p2_card_x = cardinality_2_point.x;
|
||||||
|
p2_card_y = cardinality_2_point.y;
|
||||||
|
}
|
||||||
|
if (relation.title !== void 0) {
|
||||||
|
const g = elem.append("g").attr("class", "classLabel");
|
||||||
|
const label = g.append("text").attr("class", "label").attr("x", x).attr("y", y).attr("fill", "red").attr("text-anchor", "middle").text(relation.title);
|
||||||
|
window.label = label;
|
||||||
|
const bounds = label.node().getBBox();
|
||||||
|
g.insert("rect", ":first-child").attr("class", "box").attr("x", bounds.x - conf.padding / 2).attr("y", bounds.y - conf.padding / 2).attr("width", bounds.width + conf.padding).attr("height", bounds.height + conf.padding);
|
||||||
|
}
|
||||||
|
log.info("Rendering relation " + JSON.stringify(relation));
|
||||||
|
if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== "none") {
|
||||||
|
const g = elem.append("g").attr("class", "cardinality");
|
||||||
|
g.append("text").attr("class", "type1").attr("x", p1_card_x).attr("y", p1_card_y).attr("fill", "black").attr("font-size", "6").text(relation.relationTitle1);
|
||||||
|
}
|
||||||
|
if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== "none") {
|
||||||
|
const g = elem.append("g").attr("class", "cardinality");
|
||||||
|
g.append("text").attr("class", "type2").attr("x", p2_card_x).attr("y", p2_card_y).attr("fill", "black").attr("font-size", "6").text(relation.relationTitle2);
|
||||||
|
}
|
||||||
|
edgeCount++;
|
||||||
|
};
|
||||||
|
const drawClass = function(elem, classDef, conf, diagObj) {
|
||||||
|
log.debug("Rendering class ", classDef, conf);
|
||||||
|
const id = classDef.id;
|
||||||
|
const classInfo = {
|
||||||
|
id,
|
||||||
|
label: classDef.id,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
};
|
||||||
|
const g = elem.append("g").attr("id", diagObj.db.lookUpDomId(id)).attr("class", "classGroup");
|
||||||
|
let title;
|
||||||
|
if (classDef.link) {
|
||||||
|
title = g.append("svg:a").attr("xlink:href", classDef.link).attr("target", classDef.linkTarget).append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
} else {
|
||||||
|
title = g.append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
}
|
||||||
|
let isFirst = true;
|
||||||
|
classDef.annotations.forEach(function(member) {
|
||||||
|
const titleText2 = title.append("tspan").text("«" + member + "»");
|
||||||
|
if (!isFirst) {
|
||||||
|
titleText2.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
let classTitleString = getClassTitleString(classDef);
|
||||||
|
const classTitle = title.append("tspan").text(classTitleString).attr("class", "title");
|
||||||
|
if (!isFirst) {
|
||||||
|
classTitle.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
const titleHeight = title.node().getBBox().height;
|
||||||
|
let membersLine;
|
||||||
|
let membersBox;
|
||||||
|
let methodsLine;
|
||||||
|
if (classDef.members.length > 0) {
|
||||||
|
membersLine = g.append("line").attr("x1", 0).attr("y1", conf.padding + titleHeight + conf.dividerMargin / 2).attr("y2", conf.padding + titleHeight + conf.dividerMargin / 2);
|
||||||
|
const members = g.append("text").attr("x", conf.padding).attr("y", titleHeight + conf.dividerMargin + conf.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
isFirst = true;
|
||||||
|
classDef.members.forEach(function(member) {
|
||||||
|
addTspan(members, member, isFirst, conf);
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
membersBox = members.node().getBBox();
|
||||||
|
}
|
||||||
|
if (classDef.methods.length > 0) {
|
||||||
|
methodsLine = g.append("line").attr("x1", 0).attr("y1", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr("y2", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);
|
||||||
|
const methods = g.append("text").attr("x", conf.padding).attr("y", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
isFirst = true;
|
||||||
|
classDef.methods.forEach(function(method) {
|
||||||
|
addTspan(methods, method, isFirst, conf);
|
||||||
|
isFirst = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const classBox = g.node().getBBox();
|
||||||
|
var cssClassStr = " ";
|
||||||
|
if (classDef.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + classDef.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const rect = g.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", classBox.width + 2 * conf.padding).attr("height", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr("class", cssClassStr);
|
||||||
|
const rectWidth = rect.node().getBBox().width;
|
||||||
|
title.node().childNodes.forEach(function(x) {
|
||||||
|
x.setAttribute("x", (rectWidth - x.getBBox().width) / 2);
|
||||||
|
});
|
||||||
|
if (classDef.tooltip) {
|
||||||
|
title.insert("title").text(classDef.tooltip);
|
||||||
|
}
|
||||||
|
if (membersLine) {
|
||||||
|
membersLine.attr("x2", rectWidth);
|
||||||
|
}
|
||||||
|
if (methodsLine) {
|
||||||
|
methodsLine.attr("x2", rectWidth);
|
||||||
|
}
|
||||||
|
classInfo.width = rectWidth;
|
||||||
|
classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;
|
||||||
|
return classInfo;
|
||||||
|
};
|
||||||
|
const getClassTitleString = function(classDef) {
|
||||||
|
let classTitleString = classDef.id;
|
||||||
|
if (classDef.type) {
|
||||||
|
classTitleString += "<" + parseGenericTypes(classDef.type) + ">";
|
||||||
|
}
|
||||||
|
return classTitleString;
|
||||||
|
};
|
||||||
|
const drawNote = function(elem, note, conf, diagObj) {
|
||||||
|
log.debug("Rendering note ", note, conf);
|
||||||
|
const id = note.id;
|
||||||
|
const noteInfo = {
|
||||||
|
id,
|
||||||
|
text: note.text,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
};
|
||||||
|
const g = elem.append("g").attr("id", id).attr("class", "classGroup");
|
||||||
|
let text = g.append("text").attr("y", conf.textHeight + conf.padding).attr("x", 0);
|
||||||
|
const lines = JSON.parse(`"${note.text}"`).split("\n");
|
||||||
|
lines.forEach(function(line2) {
|
||||||
|
log.debug(`Adding line: ${line2}`);
|
||||||
|
text.append("tspan").text(line2).attr("class", "title").attr("dy", conf.textHeight);
|
||||||
|
});
|
||||||
|
const noteBox = g.node().getBBox();
|
||||||
|
const rect = g.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", noteBox.width + 2 * conf.padding).attr(
|
||||||
|
"height",
|
||||||
|
noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin
|
||||||
|
);
|
||||||
|
const rectWidth = rect.node().getBBox().width;
|
||||||
|
text.node().childNodes.forEach(function(x) {
|
||||||
|
x.setAttribute("x", (rectWidth - x.getBBox().width) / 2);
|
||||||
|
});
|
||||||
|
noteInfo.width = rectWidth;
|
||||||
|
noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;
|
||||||
|
return noteInfo;
|
||||||
|
};
|
||||||
|
const addTspan = function(textEl, member, isFirst, conf) {
|
||||||
|
const { displayText, cssStyle } = member.getDisplayDetails();
|
||||||
|
const tSpan = textEl.append("tspan").attr("x", conf.padding).text(displayText);
|
||||||
|
if (cssStyle !== "") {
|
||||||
|
tSpan.attr("style", member.cssStyle);
|
||||||
|
}
|
||||||
|
if (!isFirst) {
|
||||||
|
tSpan.attr("dy", conf.textHeight);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const svgDraw = {
|
||||||
|
getClassTitleString,
|
||||||
|
drawClass,
|
||||||
|
drawEdge,
|
||||||
|
drawNote
|
||||||
|
};
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = d3select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
// cspell:ignore tjoho
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
143
assets/lib/mermaid/classDiagram-3ab3550d.js
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-d6ad8edb.js";
|
||||||
|
import { g as getConfig, l as log, f as select } from "./config-b4fa35bb.js";
|
||||||
|
import { G as Graph, l as layout } from "./layout-4663fc19.js";
|
||||||
|
import { s as svgDraw } from "./svgDraw-9e97e6db.js";
|
||||||
|
import { c as configureSvgSize } from "./setupGraphViewbox-16a0ba81.js";
|
||||||
|
import "./utils-872dfc50.js";
|
||||||
|
import "./commonDb-7f40ab5a.js";
|
||||||
|
import "./mermaidAPI-6f22a815.js";
|
||||||
|
import "./errorRenderer-ebf63d74.js";
|
||||||
|
import "./isPlainObject-91dd8bc9.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./constant-b644328d.js";
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-3ab3550d.js.map
|
1
assets/lib/mermaid/classDiagram-3ab3550d.js.map
Normal file
149
assets/lib/mermaid/classDiagram-4456d403.js
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-0dd3ba1e.js";
|
||||||
|
import { select } from "d3";
|
||||||
|
import { layout } from "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { g as getConfig, l as log } from "./config-389b86ff.js";
|
||||||
|
import { s as svgDraw } from "./svgDraw-6a237a99.js";
|
||||||
|
import { c as configureSvgSize } from "./setupGraphViewbox-e35e4124.js";
|
||||||
|
import "./utils-d5eeff82.js";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "./commonDb-2ace122b.js";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
import "./mermaidAPI-0716c7c2.js";
|
||||||
|
import "stylis";
|
||||||
|
import "./errorRenderer-d05351b9.js";
|
||||||
|
import "dompurify";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
import "dayjs";
|
||||||
|
import "khroma";
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-4456d403.js.map
|
1
assets/lib/mermaid/classDiagram-4456d403.js.map
Normal file
220
assets/lib/mermaid/classDiagram-9faaf380.js
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
import { p as A, d as S, s as G } from "./styles-4bdb8b48.js";
|
||||||
|
import { F as W, A as B, l as u, G as I, c as H, j as M, k as O } from "./mermaid-00886c59.js";
|
||||||
|
import { G as P } from "./graph-dee88f0d.js";
|
||||||
|
import { l as X } from "./layout-03086fc5.js";
|
||||||
|
import { l as Y } from "./line-79437661.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./path-428ebac9.js";
|
||||||
|
let _ = 0;
|
||||||
|
const $ = function(i, a, t, o, p) {
|
||||||
|
const g = function(e) {
|
||||||
|
switch (e) {
|
||||||
|
case p.db.relationType.AGGREGATION:
|
||||||
|
return "aggregation";
|
||||||
|
case p.db.relationType.EXTENSION:
|
||||||
|
return "extension";
|
||||||
|
case p.db.relationType.COMPOSITION:
|
||||||
|
return "composition";
|
||||||
|
case p.db.relationType.DEPENDENCY:
|
||||||
|
return "dependency";
|
||||||
|
case p.db.relationType.LOLLIPOP:
|
||||||
|
return "lollipop";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
a.points = a.points.filter((e) => !Number.isNaN(e.y));
|
||||||
|
const s = a.points, c = Y().x(function(e) {
|
||||||
|
return e.x;
|
||||||
|
}).y(function(e) {
|
||||||
|
return e.y;
|
||||||
|
}).curve(W), n = i.append("path").attr("d", c(s)).attr("id", "edge" + _).attr("class", "relation");
|
||||||
|
let r = "";
|
||||||
|
o.arrowMarkerAbsolute && (r = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, r = r.replace(/\(/g, "\\("), r = r.replace(/\)/g, "\\)")), t.relation.lineType == 1 && n.attr("class", "relation dashed-line"), t.relation.lineType == 10 && n.attr("class", "relation dotted-line"), t.relation.type1 !== "none" && n.attr(
|
||||||
|
"marker-start",
|
||||||
|
"url(" + r + "#" + g(t.relation.type1) + "Start)"
|
||||||
|
), t.relation.type2 !== "none" && n.attr(
|
||||||
|
"marker-end",
|
||||||
|
"url(" + r + "#" + g(t.relation.type2) + "End)"
|
||||||
|
);
|
||||||
|
let f, h;
|
||||||
|
const x = a.points.length;
|
||||||
|
let k = B.calcLabelPosition(a.points);
|
||||||
|
f = k.x, h = k.y;
|
||||||
|
let y, m, w, b;
|
||||||
|
if (x % 2 !== 0 && x > 1) {
|
||||||
|
let e = B.calcCardinalityPosition(
|
||||||
|
t.relation.type1 !== "none",
|
||||||
|
a.points,
|
||||||
|
a.points[0]
|
||||||
|
), d = B.calcCardinalityPosition(
|
||||||
|
t.relation.type2 !== "none",
|
||||||
|
a.points,
|
||||||
|
a.points[x - 1]
|
||||||
|
);
|
||||||
|
u.debug("cardinality_1_point " + JSON.stringify(e)), u.debug("cardinality_2_point " + JSON.stringify(d)), y = e.x, m = e.y, w = d.x, b = d.y;
|
||||||
|
}
|
||||||
|
if (t.title !== void 0) {
|
||||||
|
const e = i.append("g").attr("class", "classLabel"), d = e.append("text").attr("class", "label").attr("x", f).attr("y", h).attr("fill", "red").attr("text-anchor", "middle").text(t.title);
|
||||||
|
window.label = d;
|
||||||
|
const l = d.node().getBBox();
|
||||||
|
e.insert("rect", ":first-child").attr("class", "box").attr("x", l.x - o.padding / 2).attr("y", l.y - o.padding / 2).attr("width", l.width + o.padding).attr("height", l.height + o.padding);
|
||||||
|
}
|
||||||
|
u.info("Rendering relation " + JSON.stringify(t)), t.relationTitle1 !== void 0 && t.relationTitle1 !== "none" && i.append("g").attr("class", "cardinality").append("text").attr("class", "type1").attr("x", y).attr("y", m).attr("fill", "black").attr("font-size", "6").text(t.relationTitle1), t.relationTitle2 !== void 0 && t.relationTitle2 !== "none" && i.append("g").attr("class", "cardinality").append("text").attr("class", "type2").attr("x", w).attr("y", b).attr("fill", "black").attr("font-size", "6").text(t.relationTitle2), _++;
|
||||||
|
}, J = function(i, a, t, o) {
|
||||||
|
u.debug("Rendering class ", a, t);
|
||||||
|
const p = a.id, g = {
|
||||||
|
id: p,
|
||||||
|
label: a.id,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
}, s = i.append("g").attr("id", o.db.lookUpDomId(p)).attr("class", "classGroup");
|
||||||
|
let c;
|
||||||
|
a.link ? c = s.append("svg:a").attr("xlink:href", a.link).attr("target", a.linkTarget).append("text").attr("y", t.textHeight + t.padding).attr("x", 0) : c = s.append("text").attr("y", t.textHeight + t.padding).attr("x", 0);
|
||||||
|
let n = !0;
|
||||||
|
a.annotations.forEach(function(d) {
|
||||||
|
const l = c.append("tspan").text("«" + d + "»");
|
||||||
|
n || l.attr("dy", t.textHeight), n = !1;
|
||||||
|
});
|
||||||
|
let r = C(a);
|
||||||
|
const f = c.append("tspan").text(r).attr("class", "title");
|
||||||
|
n || f.attr("dy", t.textHeight);
|
||||||
|
const h = c.node().getBBox().height;
|
||||||
|
let x, k, y;
|
||||||
|
if (a.members.length > 0) {
|
||||||
|
x = s.append("line").attr("x1", 0).attr("y1", t.padding + h + t.dividerMargin / 2).attr("y2", t.padding + h + t.dividerMargin / 2);
|
||||||
|
const d = s.append("text").attr("x", t.padding).attr("y", h + t.dividerMargin + t.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
n = !0, a.members.forEach(function(l) {
|
||||||
|
v(d, l, n, t), n = !1;
|
||||||
|
}), k = d.node().getBBox();
|
||||||
|
}
|
||||||
|
if (a.methods.length > 0) {
|
||||||
|
y = s.append("line").attr("x1", 0).attr("y1", t.padding + h + t.dividerMargin + k.height).attr("y2", t.padding + h + t.dividerMargin + k.height);
|
||||||
|
const d = s.append("text").attr("x", t.padding).attr("y", h + 2 * t.dividerMargin + k.height + t.textHeight).attr("fill", "white").attr("class", "classText");
|
||||||
|
n = !0, a.methods.forEach(function(l) {
|
||||||
|
v(d, l, n, t), n = !1;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const m = s.node().getBBox();
|
||||||
|
var w = " ";
|
||||||
|
a.cssClasses.length > 0 && (w = w + a.cssClasses.join(" "));
|
||||||
|
const e = s.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", m.width + 2 * t.padding).attr("height", m.height + t.padding + 0.5 * t.dividerMargin).attr("class", w).node().getBBox().width;
|
||||||
|
return c.node().childNodes.forEach(function(d) {
|
||||||
|
d.setAttribute("x", (e - d.getBBox().width) / 2);
|
||||||
|
}), a.tooltip && c.insert("title").text(a.tooltip), x && x.attr("x2", e), y && y.attr("x2", e), g.width = e, g.height = m.height + t.padding + 0.5 * t.dividerMargin, g;
|
||||||
|
}, C = function(i) {
|
||||||
|
let a = i.id;
|
||||||
|
return i.type && (a += "<" + I(i.type) + ">"), a;
|
||||||
|
}, Z = function(i, a, t, o) {
|
||||||
|
u.debug("Rendering note ", a, t);
|
||||||
|
const p = a.id, g = {
|
||||||
|
id: p,
|
||||||
|
text: a.text,
|
||||||
|
width: 0,
|
||||||
|
height: 0
|
||||||
|
}, s = i.append("g").attr("id", p).attr("class", "classGroup");
|
||||||
|
let c = s.append("text").attr("y", t.textHeight + t.padding).attr("x", 0);
|
||||||
|
const n = JSON.parse(`"${a.text}"`).split(`
|
||||||
|
`);
|
||||||
|
n.forEach(function(x) {
|
||||||
|
u.debug(`Adding line: ${x}`), c.append("tspan").text(x).attr("class", "title").attr("dy", t.textHeight);
|
||||||
|
});
|
||||||
|
const r = s.node().getBBox(), h = s.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", r.width + 2 * t.padding).attr(
|
||||||
|
"height",
|
||||||
|
r.height + n.length * t.textHeight + t.padding + 0.5 * t.dividerMargin
|
||||||
|
).node().getBBox().width;
|
||||||
|
return c.node().childNodes.forEach(function(x) {
|
||||||
|
x.setAttribute("x", (h - x.getBBox().width) / 2);
|
||||||
|
}), g.width = h, g.height = r.height + n.length * t.textHeight + t.padding + 0.5 * t.dividerMargin, g;
|
||||||
|
}, v = function(i, a, t, o) {
|
||||||
|
const { displayText: p, cssStyle: g } = a.getDisplayDetails(), s = i.append("tspan").attr("x", o.padding).text(p);
|
||||||
|
g !== "" && s.attr("style", a.cssStyle), t || s.attr("dy", o.textHeight);
|
||||||
|
}, N = {
|
||||||
|
getClassTitleString: C,
|
||||||
|
drawClass: J,
|
||||||
|
drawEdge: $,
|
||||||
|
drawNote: Z
|
||||||
|
};
|
||||||
|
let T = {};
|
||||||
|
const E = 20, L = function(i) {
|
||||||
|
const a = Object.entries(T).find((t) => t[1].label === i);
|
||||||
|
if (a)
|
||||||
|
return a[0];
|
||||||
|
}, R = function(i) {
|
||||||
|
i.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), i.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"), i.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
}, F = function(i, a, t, o) {
|
||||||
|
const p = H().class;
|
||||||
|
T = {}, u.info("Rendering diagram " + i);
|
||||||
|
const g = H().securityLevel;
|
||||||
|
let s;
|
||||||
|
g === "sandbox" && (s = M("#i" + a));
|
||||||
|
const c = g === "sandbox" ? M(s.nodes()[0].contentDocument.body) : M("body"), n = c.select(`[id='${a}']`);
|
||||||
|
R(n);
|
||||||
|
const r = new P({
|
||||||
|
multigraph: !0
|
||||||
|
});
|
||||||
|
r.setGraph({
|
||||||
|
isMultiGraph: !0
|
||||||
|
}), r.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const f = o.db.getClasses(), h = Object.keys(f);
|
||||||
|
for (const e of h) {
|
||||||
|
const d = f[e], l = N.drawClass(n, d, p, o);
|
||||||
|
T[l.id] = l, r.setNode(l.id, l), u.info("Org height: " + l.height);
|
||||||
|
}
|
||||||
|
o.db.getRelations().forEach(function(e) {
|
||||||
|
u.info(
|
||||||
|
// cspell:ignore tjoho
|
||||||
|
"tjoho" + L(e.id1) + L(e.id2) + JSON.stringify(e)
|
||||||
|
), r.setEdge(
|
||||||
|
L(e.id1),
|
||||||
|
L(e.id2),
|
||||||
|
{
|
||||||
|
relation: e
|
||||||
|
},
|
||||||
|
e.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
}), o.db.getNotes().forEach(function(e) {
|
||||||
|
u.debug(`Adding note: ${JSON.stringify(e)}`);
|
||||||
|
const d = N.drawNote(n, e, p, o);
|
||||||
|
T[d.id] = d, r.setNode(d.id, d), e.class && e.class in f && r.setEdge(
|
||||||
|
e.id,
|
||||||
|
L(e.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: e.id,
|
||||||
|
id2: e.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}), X(r), r.nodes().forEach(function(e) {
|
||||||
|
e !== void 0 && r.node(e) !== void 0 && (u.debug("Node " + e + ": " + JSON.stringify(r.node(e))), c.select("#" + (o.db.lookUpDomId(e) || e)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (r.node(e).x - r.node(e).width / 2) + "," + (r.node(e).y - r.node(e).height / 2) + " )"
|
||||||
|
));
|
||||||
|
}), r.edges().forEach(function(e) {
|
||||||
|
e !== void 0 && r.edge(e) !== void 0 && (u.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(r.edge(e))), N.drawEdge(n, r.edge(e), r.edge(e).relation, p, o));
|
||||||
|
});
|
||||||
|
const y = n.node().getBBox(), m = y.width + E * 2, w = y.height + E * 2;
|
||||||
|
O(n, w, m, p.useMaxWidth);
|
||||||
|
const b = `${y.x - E} ${y.y - E} ${m} ${w}`;
|
||||||
|
u.debug(`viewBox ${b}`), n.attr("viewBox", b);
|
||||||
|
}, U = {
|
||||||
|
draw: F
|
||||||
|
}, tt = {
|
||||||
|
parser: A,
|
||||||
|
db: S,
|
||||||
|
renderer: U,
|
||||||
|
styles: G,
|
||||||
|
init: (i) => {
|
||||||
|
i.class || (i.class = {}), i.class.arrowMarkerAbsolute = i.arrowMarkerAbsolute, S.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
tt as diagram
|
||||||
|
};
|
149
assets/lib/mermaid/classDiagram-ef563e47.js
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-b8bd0053.js";
|
||||||
|
import { select } from "d3";
|
||||||
|
import { layout } from "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { g as getConfig, l as log } from "./config-389b86ff.js";
|
||||||
|
import { s as svgDraw } from "./svgDraw-6a237a99.js";
|
||||||
|
import { c as configureSvgSize } from "./setupGraphViewbox-e35e4124.js";
|
||||||
|
import "./utils-d5eeff82.js";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "./commonDb-2ace122b.js";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
import "./mermaidAPI-b17c596d.js";
|
||||||
|
import "stylis";
|
||||||
|
import "./errorRenderer-d05351b9.js";
|
||||||
|
import "dompurify";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
import "dayjs";
|
||||||
|
import "khroma";
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-ef563e47.js.map
|
1
assets/lib/mermaid/classDiagram-ef563e47.js.map
Normal file
97
assets/lib/mermaid/classDiagram-f04b3d8f.js
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
import { p as W, d as M, s as H } from "./styles-e9bde71f.js";
|
||||||
|
import { g as S, l as d, f as u } from "./config-e567ef17.js";
|
||||||
|
import { G as X, l as Y } from "./layout-10a68736.js";
|
||||||
|
import { s as l } from "./svgDraw-c2c52520.js";
|
||||||
|
import { c as Z } from "./setupGraphViewbox-a4603a92.js";
|
||||||
|
import "./utils-aa888deb.js";
|
||||||
|
import "./commonDb-4dc3d465.js";
|
||||||
|
import "./mermaidAPI-51c0c26b.js";
|
||||||
|
import "./errorRenderer-a3c4bedb.js";
|
||||||
|
import "./isPlainObject-bb374f45.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./constant-2fe7eae5.js";
|
||||||
|
let h = {};
|
||||||
|
const g = 20, p = function(e) {
|
||||||
|
const s = Object.entries(h).find((k) => k[1].label === e);
|
||||||
|
if (s)
|
||||||
|
return s[0];
|
||||||
|
}, D = function(e) {
|
||||||
|
e.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), e.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"), e.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
}, $ = function(e, s, k, a) {
|
||||||
|
const f = S().class;
|
||||||
|
h = {}, d.info("Rendering diagram " + e);
|
||||||
|
const L = S().securityLevel;
|
||||||
|
let y;
|
||||||
|
L === "sandbox" && (y = u("#i" + s));
|
||||||
|
const x = L === "sandbox" ? u(y.nodes()[0].contentDocument.body) : u("body"), n = x.select(`[id='${s}']`);
|
||||||
|
D(n);
|
||||||
|
const r = new X({
|
||||||
|
multigraph: !0
|
||||||
|
});
|
||||||
|
r.setGraph({
|
||||||
|
isMultiGraph: !0
|
||||||
|
}), r.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const m = a.db.getClasses(), N = Object.keys(m);
|
||||||
|
for (const t of N) {
|
||||||
|
const o = m[t], i = l.drawClass(n, o, f, a);
|
||||||
|
h[i.id] = i, r.setNode(i.id, i), d.info("Org height: " + i.height);
|
||||||
|
}
|
||||||
|
a.db.getRelations().forEach(function(t) {
|
||||||
|
d.info(
|
||||||
|
"tjoho" + p(t.id1) + p(t.id2) + JSON.stringify(t)
|
||||||
|
), r.setEdge(
|
||||||
|
p(t.id1),
|
||||||
|
p(t.id2),
|
||||||
|
{
|
||||||
|
relation: t
|
||||||
|
},
|
||||||
|
t.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
}), a.db.getNotes().forEach(function(t) {
|
||||||
|
d.debug(`Adding note: ${JSON.stringify(t)}`);
|
||||||
|
const o = l.drawNote(n, t, f, a);
|
||||||
|
h[o.id] = o, r.setNode(o.id, o), t.class && t.class in m && r.setEdge(
|
||||||
|
t.id,
|
||||||
|
p(t.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: t.id,
|
||||||
|
id2: t.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}), Y(r), r.nodes().forEach(function(t) {
|
||||||
|
t !== void 0 && r.node(t) !== void 0 && (d.debug("Node " + t + ": " + JSON.stringify(r.node(t))), x.select("#" + (a.db.lookUpDomId(t) || t)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (r.node(t).x - r.node(t).width / 2) + "," + (r.node(t).y - r.node(t).height / 2) + " )"
|
||||||
|
));
|
||||||
|
}), r.edges().forEach(function(t) {
|
||||||
|
t !== void 0 && r.edge(t) !== void 0 && (d.debug("Edge " + t.v + " -> " + t.w + ": " + JSON.stringify(r.edge(t))), l.drawEdge(n, r.edge(t), r.edge(t).relation, f, a));
|
||||||
|
});
|
||||||
|
const c = n.node().getBBox(), E = c.width + g * 2, b = c.height + g * 2;
|
||||||
|
Z(n, b, E, f.useMaxWidth);
|
||||||
|
const w = `${c.x - g} ${c.y - g} ${E} ${b}`;
|
||||||
|
d.debug(`viewBox ${w}`), n.attr("viewBox", w);
|
||||||
|
}, B = {
|
||||||
|
draw: $
|
||||||
|
}, q = {
|
||||||
|
parser: W,
|
||||||
|
db: M,
|
||||||
|
renderer: B,
|
||||||
|
styles: H,
|
||||||
|
init: (e) => {
|
||||||
|
e.class || (e.class = {}), e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute, M.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
q as diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-f04b3d8f.js.map
|
1
assets/lib/mermaid/classDiagram-f04b3d8f.js.map
Normal file
143
assets/lib/mermaid/classDiagram-ffa2ea72.js
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-ee347520.js";
|
||||||
|
import { g as getConfig, l as log, f as select } from "./config-b4fa35bb.js";
|
||||||
|
import { G as Graph, l as layout } from "./layout-47a4d1ce.js";
|
||||||
|
import { s as svgDraw } from "./svgDraw-aae20718.js";
|
||||||
|
import { c as configureSvgSize } from "./setupGraphViewbox-16a0ba81.js";
|
||||||
|
import "./utils-872dfc50.js";
|
||||||
|
import "./commonDb-7f40ab5a.js";
|
||||||
|
import "./mermaidAPI-a31c2c80.js";
|
||||||
|
import "./errorRenderer-ebf63d74.js";
|
||||||
|
import "./isPlainObject-53794b96.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./constant-b644328d.js";
|
||||||
|
let idCache = {};
|
||||||
|
const padding = 20;
|
||||||
|
const getGraphId = function(label) {
|
||||||
|
const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);
|
||||||
|
if (foundEntry) {
|
||||||
|
return foundEntry[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const insertMarkers = function(elem) {
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
|
||||||
|
elem.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
const conf = getConfig().class;
|
||||||
|
idCache = {};
|
||||||
|
log.info("Rendering diagram " + text);
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const diagram2 = root.select(`[id='${id}']`);
|
||||||
|
insertMarkers(diagram2);
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true
|
||||||
|
});
|
||||||
|
g.setGraph({
|
||||||
|
isMultiGraph: true
|
||||||
|
});
|
||||||
|
g.setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
for (const key of keys) {
|
||||||
|
const classDef = classes[key];
|
||||||
|
const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
log.info("Org height: " + node.height);
|
||||||
|
}
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
relations.forEach(function(relation) {
|
||||||
|
log.info(
|
||||||
|
"tjoho" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)
|
||||||
|
);
|
||||||
|
g.setEdge(
|
||||||
|
getGraphId(relation.id1),
|
||||||
|
getGraphId(relation.id2),
|
||||||
|
{
|
||||||
|
relation
|
||||||
|
},
|
||||||
|
relation.title || "DEFAULT"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
notes.forEach(function(note) {
|
||||||
|
log.debug(`Adding note: ${JSON.stringify(note)}`);
|
||||||
|
const node = svgDraw.drawNote(diagram2, note, conf, diagObj);
|
||||||
|
idCache[node.id] = node;
|
||||||
|
g.setNode(node.id, node);
|
||||||
|
if (note.class && note.class in classes) {
|
||||||
|
g.setEdge(
|
||||||
|
note.id,
|
||||||
|
getGraphId(note.class),
|
||||||
|
{
|
||||||
|
relation: {
|
||||||
|
id1: note.id,
|
||||||
|
id2: note.class,
|
||||||
|
relation: {
|
||||||
|
type1: "none",
|
||||||
|
type2: "none",
|
||||||
|
lineType: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
layout(g);
|
||||||
|
g.nodes().forEach(function(v) {
|
||||||
|
if (v !== void 0 && g.node(v) !== void 0) {
|
||||||
|
log.debug("Node " + v + ": " + JSON.stringify(g.node(v)));
|
||||||
|
root.select("#" + (diagObj.db.lookUpDomId(v) || v)).attr(
|
||||||
|
"transform",
|
||||||
|
"translate(" + (g.node(v).x - g.node(v).width / 2) + "," + (g.node(v).y - g.node(v).height / 2) + " )"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
g.edges().forEach(function(e) {
|
||||||
|
if (e !== void 0 && g.edge(e) !== void 0) {
|
||||||
|
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(g.edge(e)));
|
||||||
|
svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const svgBounds = diagram2.node().getBBox();
|
||||||
|
const width = svgBounds.width + padding * 2;
|
||||||
|
const height = svgBounds.height + padding * 2;
|
||||||
|
configureSvgSize(diagram2, height, width, conf.useMaxWidth);
|
||||||
|
const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;
|
||||||
|
log.debug(`viewBox ${vBox}`);
|
||||||
|
diagram2.attr("viewBox", vBox);
|
||||||
|
};
|
||||||
|
const renderer = {
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-ffa2ea72.js.map
|
1
assets/lib/mermaid/classDiagram-ffa2ea72.js.map
Normal file
200
assets/lib/mermaid/classDiagram-v2-146d8a48.js
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
import { p as M, d as k, s as R } from "./styles-55d85316.js";
|
||||||
|
import { l as p, g as r, f as v, e as C } from "./config-e567ef17.js";
|
||||||
|
import { G as B } from "./layout-d6d8be39.js";
|
||||||
|
import { r as G } from "./index-e6caf2ad.js";
|
||||||
|
import { u as I, z as D, x as E, y as _ } from "./utils-aa888deb.js";
|
||||||
|
import { s as z } from "./setupGraphViewbox-a4603a92.js";
|
||||||
|
import "./mermaidAPI-04b5c286.js";
|
||||||
|
import "./errorRenderer-a3c4bedb.js";
|
||||||
|
import "./commonDb-4dc3d465.js";
|
||||||
|
import "./isPlainObject-a5cb4071.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./constant-2fe7eae5.js";
|
||||||
|
import "./edges-0979260b.js";
|
||||||
|
import "./svgDraw-c034b55e.js";
|
||||||
|
const A = (l) => C.sanitizeText(l, r());
|
||||||
|
let S = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const $ = function(l, o, b, a) {
|
||||||
|
const e = Object.keys(l);
|
||||||
|
p.info("keys:", e), p.info(l), e.forEach(function(s) {
|
||||||
|
var y, m;
|
||||||
|
const t = l[s];
|
||||||
|
let i = "";
|
||||||
|
t.cssClasses.length > 0 && (i = i + " " + t.cssClasses.join(" "));
|
||||||
|
const n = { labelStyle: "", style: "" }, f = t.label ?? t.id, c = 0, u = "class_box", d = {
|
||||||
|
labelStyle: n.labelStyle,
|
||||||
|
shape: u,
|
||||||
|
labelText: A(f),
|
||||||
|
classData: t,
|
||||||
|
rx: c,
|
||||||
|
ry: c,
|
||||||
|
class: i,
|
||||||
|
style: n.style,
|
||||||
|
id: t.id,
|
||||||
|
domId: t.domId,
|
||||||
|
tooltip: a.db.getTooltip(t.id) || "",
|
||||||
|
haveCallback: t.haveCallback,
|
||||||
|
link: t.link,
|
||||||
|
width: t.type === "group" ? 500 : void 0,
|
||||||
|
type: t.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((y = r().flowchart) == null ? void 0 : y.padding) ?? ((m = r().class) == null ? void 0 : m.padding)
|
||||||
|
};
|
||||||
|
o.setNode(t.id, d), p.info("setNode", d);
|
||||||
|
});
|
||||||
|
}, q = function(l, o, b, a) {
|
||||||
|
p.info(l), l.forEach(function(e, s) {
|
||||||
|
var x, h;
|
||||||
|
const t = e, i = "", n = { labelStyle: "", style: "" }, f = t.text, c = 0, u = "note", d = {
|
||||||
|
labelStyle: n.labelStyle,
|
||||||
|
shape: u,
|
||||||
|
labelText: A(f),
|
||||||
|
noteData: t,
|
||||||
|
rx: c,
|
||||||
|
ry: c,
|
||||||
|
class: i,
|
||||||
|
style: n.style,
|
||||||
|
id: t.id,
|
||||||
|
domId: t.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((x = r().flowchart) == null ? void 0 : x.padding) ?? ((h = r().class) == null ? void 0 : h.padding)
|
||||||
|
};
|
||||||
|
if (o.setNode(t.id, d), p.info("setNode", d), !t.class || !(t.class in a))
|
||||||
|
return;
|
||||||
|
const y = b + s, m = {
|
||||||
|
id: `edgeNote${y}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: D(S.curve, E)
|
||||||
|
};
|
||||||
|
o.setEdge(t.id, t.class, m, y);
|
||||||
|
});
|
||||||
|
}, F = function(l, o) {
|
||||||
|
const b = r().flowchart;
|
||||||
|
let a = 0;
|
||||||
|
l.forEach(function(e) {
|
||||||
|
var t;
|
||||||
|
a++;
|
||||||
|
const s = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: e.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + a,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: e.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: e.relationTitle1 === "none" ? "" : e.relationTitle1,
|
||||||
|
endLabelLeft: e.relationTitle2 === "none" ? "" : e.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: L(e.relation.type1),
|
||||||
|
arrowTypeEnd: L(e.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: D(b == null ? void 0 : b.curve, E)
|
||||||
|
};
|
||||||
|
if (p.info(s, e), e.style !== void 0) {
|
||||||
|
const i = _(e.style);
|
||||||
|
s.style = i.style, s.labelStyle = i.labelStyle;
|
||||||
|
}
|
||||||
|
e.text = e.title, e.text === void 0 ? e.style !== void 0 && (s.arrowheadStyle = "fill: #333") : (s.arrowheadStyle = "fill: #333", s.labelpos = "c", ((t = r().flowchart) == null ? void 0 : t.htmlLabels) ?? r().htmlLabels ? (s.labelType = "html", s.label = '<span class="edgeLabel">' + e.text + "</span>") : (s.labelType = "text", s.label = e.text.replace(C.lineBreakRegex, `
|
||||||
|
`), e.style === void 0 && (s.style = s.style || "stroke: #333; stroke-width: 1.5px;fill:none"), s.labelStyle = s.labelStyle.replace("color:", "fill:"))), o.setEdge(e.id1, e.id2, s, a);
|
||||||
|
});
|
||||||
|
}, H = function(l) {
|
||||||
|
S = {
|
||||||
|
...S,
|
||||||
|
...l
|
||||||
|
};
|
||||||
|
}, P = function(l, o, b, a) {
|
||||||
|
p.info("Drawing class - ", o);
|
||||||
|
const e = r().flowchart ?? r().class, s = r().securityLevel;
|
||||||
|
p.info("config:", e);
|
||||||
|
const t = (e == null ? void 0 : e.nodeSpacing) ?? 50, i = (e == null ? void 0 : e.rankSpacing) ?? 50, n = new B({
|
||||||
|
multigraph: !0,
|
||||||
|
compound: !0
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: a.db.getDirection(),
|
||||||
|
nodesep: t,
|
||||||
|
ranksep: i,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
}), f = a.db.getClasses(), c = a.db.getRelations(), u = a.db.getNotes();
|
||||||
|
p.info(c), $(f, n, o, a), F(c, n), q(u, n, c.length + 1, f);
|
||||||
|
let d;
|
||||||
|
s === "sandbox" && (d = v("#i" + o));
|
||||||
|
const y = s === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
v(d.nodes()[0].contentDocument.body)
|
||||||
|
) : v("body"), m = y.select(`[id="${o}"]`), x = y.select("#" + o + " g");
|
||||||
|
if (G(
|
||||||
|
x,
|
||||||
|
n,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
o
|
||||||
|
), I.insertTitle(m, "classTitleText", (e == null ? void 0 : e.titleTopMargin) ?? 5, a.db.getDiagramTitle()), z(n, m, e == null ? void 0 : e.diagramPadding, e == null ? void 0 : e.useMaxWidth), !(e != null && e.htmlLabels)) {
|
||||||
|
const h = s === "sandbox" ? d.nodes()[0].contentDocument : document, N = h.querySelectorAll('[id="' + o + '"] .edgeLabel .label');
|
||||||
|
for (const w of N) {
|
||||||
|
const T = w.getBBox(), g = h.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
g.setAttribute("rx", 0), g.setAttribute("ry", 0), g.setAttribute("width", T.width), g.setAttribute("height", T.height), w.insertBefore(g, w.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function L(l) {
|
||||||
|
let o;
|
||||||
|
switch (l) {
|
||||||
|
case 0:
|
||||||
|
o = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
o = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
o = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
o = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
o = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
o = "none";
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
const V = {
|
||||||
|
setConf: H,
|
||||||
|
draw: P
|
||||||
|
}, le = {
|
||||||
|
parser: M,
|
||||||
|
db: k,
|
||||||
|
renderer: V,
|
||||||
|
styles: R,
|
||||||
|
init: (l) => {
|
||||||
|
l.class || (l.class = {}), l.class.arrowMarkerAbsolute = l.arrowMarkerAbsolute, k.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
le as diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-146d8a48.js.map
|
1
assets/lib/mermaid/classDiagram-v2-146d8a48.js.map
Normal file
290
assets/lib/mermaid/classDiagram-v2-2ed0a7d3.js
Normal file
|
@ -0,0 +1,290 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-d48462a7.js";
|
||||||
|
import { l as log, c as getConfig, j as d3select, A as utils, t as setupGraphViewbox, o as getStylesFromArray, q as interpolateToCurve, n as curveLinear, f as common } from "./mermaid-c5809711.js";
|
||||||
|
import { G as Graph } from "./graph-af3d5df6.js";
|
||||||
|
import { r as render } from "./index-c8395ba2.js";
|
||||||
|
import "./layout-6685625a.js";
|
||||||
|
import "./clone-d2e37f8c.js";
|
||||||
|
import "./edges-1e1ebc73.js";
|
||||||
|
import "./createText-f6615236.js";
|
||||||
|
import "./line-65d70945.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./path-39bad7e2.js";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addNamespaces = function(namespaces, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(namespaces);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(namespaces);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = namespaces[id];
|
||||||
|
const shape = "rect";
|
||||||
|
const node = {
|
||||||
|
shape,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
labelText: sanitizeText(vertex.id),
|
||||||
|
labelStyle: "",
|
||||||
|
style: "fill: none; stroke: black",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
addClasses(vertex.classes, g, _id, diagObj, vertex.id);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj, parent) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.filter((id) => classes[id].parent == parent).forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
const cssClassStr = vertex.cssClasses.join(" ");
|
||||||
|
const styles2 = getStylesFromArray(vertex.styles);
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id, parent) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
if (parent) {
|
||||||
|
g.setParent(vertex.id, parent);
|
||||||
|
}
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: `id_${edge.id1}_${edge.id2}_${cnt}`,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = async function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const namespaces = diagObj.db.getNamespaces();
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addNamespaces(namespaces, g, id, diagObj);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = d3select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
await render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
279
assets/lib/mermaid/classDiagram-v2-539b00ca.js
Normal file
|
@ -0,0 +1,279 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-0dd3ba1e.js";
|
||||||
|
import { select, curveLinear } from "d3";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { l as log, g as getConfig, d as common } from "./config-389b86ff.js";
|
||||||
|
import { r as render } from "./index-f9d09cc9.js";
|
||||||
|
import { u as utils, n as interpolateToCurve, m as getStylesFromArray } from "./utils-d5eeff82.js";
|
||||||
|
import { s as setupGraphViewbox } from "./setupGraphViewbox-e35e4124.js";
|
||||||
|
import "./mermaidAPI-0716c7c2.js";
|
||||||
|
import "stylis";
|
||||||
|
import "./errorRenderer-d05351b9.js";
|
||||||
|
import "dompurify";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
import "./commonDb-2ace122b.js";
|
||||||
|
import "dayjs";
|
||||||
|
import "khroma";
|
||||||
|
import "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import "dagre-d3-es/src/graphlib/json.js";
|
||||||
|
import "./edges-65da65dc.js";
|
||||||
|
import "./svgDraw-6a237a99.js";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
let cssClassStr = "";
|
||||||
|
if (vertex.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + " " + vertex.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + cnt,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
select(sandboxElement.nodes()[0].contentDocument.body)
|
||||||
|
) : select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-539b00ca.js.map
|
1
assets/lib/mermaid/classDiagram-v2-539b00ca.js.map
Normal file
200
assets/lib/mermaid/classDiagram-v2-6bb7b84a.js
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
import { p as M, d as k, s as R } from "./styles-e9bde71f.js";
|
||||||
|
import { l as p, g as r, f as v, e as C } from "./config-e567ef17.js";
|
||||||
|
import { G as B } from "./layout-10a68736.js";
|
||||||
|
import { r as G } from "./index-f4462e28.js";
|
||||||
|
import { u as I, z as D, x as E, y as _ } from "./utils-aa888deb.js";
|
||||||
|
import { s as z } from "./setupGraphViewbox-a4603a92.js";
|
||||||
|
import "./mermaidAPI-51c0c26b.js";
|
||||||
|
import "./errorRenderer-a3c4bedb.js";
|
||||||
|
import "./commonDb-4dc3d465.js";
|
||||||
|
import "./isPlainObject-bb374f45.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./constant-2fe7eae5.js";
|
||||||
|
import "./edges-a2733861.js";
|
||||||
|
import "./svgDraw-c2c52520.js";
|
||||||
|
const A = (l) => C.sanitizeText(l, r());
|
||||||
|
let S = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const $ = function(l, o, b, a) {
|
||||||
|
const e = Object.keys(l);
|
||||||
|
p.info("keys:", e), p.info(l), e.forEach(function(s) {
|
||||||
|
var y, m;
|
||||||
|
const t = l[s];
|
||||||
|
let i = "";
|
||||||
|
t.cssClasses.length > 0 && (i = i + " " + t.cssClasses.join(" "));
|
||||||
|
const n = { labelStyle: "", style: "" }, f = t.label ?? t.id, c = 0, u = "class_box", d = {
|
||||||
|
labelStyle: n.labelStyle,
|
||||||
|
shape: u,
|
||||||
|
labelText: A(f),
|
||||||
|
classData: t,
|
||||||
|
rx: c,
|
||||||
|
ry: c,
|
||||||
|
class: i,
|
||||||
|
style: n.style,
|
||||||
|
id: t.id,
|
||||||
|
domId: t.domId,
|
||||||
|
tooltip: a.db.getTooltip(t.id) || "",
|
||||||
|
haveCallback: t.haveCallback,
|
||||||
|
link: t.link,
|
||||||
|
width: t.type === "group" ? 500 : void 0,
|
||||||
|
type: t.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((y = r().flowchart) == null ? void 0 : y.padding) ?? ((m = r().class) == null ? void 0 : m.padding)
|
||||||
|
};
|
||||||
|
o.setNode(t.id, d), p.info("setNode", d);
|
||||||
|
});
|
||||||
|
}, q = function(l, o, b, a) {
|
||||||
|
p.info(l), l.forEach(function(e, s) {
|
||||||
|
var x, h;
|
||||||
|
const t = e, i = "", n = { labelStyle: "", style: "" }, f = t.text, c = 0, u = "note", d = {
|
||||||
|
labelStyle: n.labelStyle,
|
||||||
|
shape: u,
|
||||||
|
labelText: A(f),
|
||||||
|
noteData: t,
|
||||||
|
rx: c,
|
||||||
|
ry: c,
|
||||||
|
class: i,
|
||||||
|
style: n.style,
|
||||||
|
id: t.id,
|
||||||
|
domId: t.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((x = r().flowchart) == null ? void 0 : x.padding) ?? ((h = r().class) == null ? void 0 : h.padding)
|
||||||
|
};
|
||||||
|
if (o.setNode(t.id, d), p.info("setNode", d), !t.class || !(t.class in a))
|
||||||
|
return;
|
||||||
|
const y = b + s, m = {
|
||||||
|
id: `edgeNote${y}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: D(S.curve, E)
|
||||||
|
};
|
||||||
|
o.setEdge(t.id, t.class, m, y);
|
||||||
|
});
|
||||||
|
}, F = function(l, o) {
|
||||||
|
const b = r().flowchart;
|
||||||
|
let a = 0;
|
||||||
|
l.forEach(function(e) {
|
||||||
|
var t;
|
||||||
|
a++;
|
||||||
|
const s = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: e.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + a,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: e.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: e.relationTitle1 === "none" ? "" : e.relationTitle1,
|
||||||
|
endLabelLeft: e.relationTitle2 === "none" ? "" : e.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: L(e.relation.type1),
|
||||||
|
arrowTypeEnd: L(e.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: D(b == null ? void 0 : b.curve, E)
|
||||||
|
};
|
||||||
|
if (p.info(s, e), e.style !== void 0) {
|
||||||
|
const i = _(e.style);
|
||||||
|
s.style = i.style, s.labelStyle = i.labelStyle;
|
||||||
|
}
|
||||||
|
e.text = e.title, e.text === void 0 ? e.style !== void 0 && (s.arrowheadStyle = "fill: #333") : (s.arrowheadStyle = "fill: #333", s.labelpos = "c", ((t = r().flowchart) == null ? void 0 : t.htmlLabels) ?? r().htmlLabels ? (s.labelType = "html", s.label = '<span class="edgeLabel">' + e.text + "</span>") : (s.labelType = "text", s.label = e.text.replace(C.lineBreakRegex, `
|
||||||
|
`), e.style === void 0 && (s.style = s.style || "stroke: #333; stroke-width: 1.5px;fill:none"), s.labelStyle = s.labelStyle.replace("color:", "fill:"))), o.setEdge(e.id1, e.id2, s, a);
|
||||||
|
});
|
||||||
|
}, H = function(l) {
|
||||||
|
S = {
|
||||||
|
...S,
|
||||||
|
...l
|
||||||
|
};
|
||||||
|
}, P = function(l, o, b, a) {
|
||||||
|
p.info("Drawing class - ", o);
|
||||||
|
const e = r().flowchart ?? r().class, s = r().securityLevel;
|
||||||
|
p.info("config:", e);
|
||||||
|
const t = (e == null ? void 0 : e.nodeSpacing) ?? 50, i = (e == null ? void 0 : e.rankSpacing) ?? 50, n = new B({
|
||||||
|
multigraph: !0,
|
||||||
|
compound: !0
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: a.db.getDirection(),
|
||||||
|
nodesep: t,
|
||||||
|
ranksep: i,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
}), f = a.db.getClasses(), c = a.db.getRelations(), u = a.db.getNotes();
|
||||||
|
p.info(c), $(f, n, o, a), F(c, n), q(u, n, c.length + 1, f);
|
||||||
|
let d;
|
||||||
|
s === "sandbox" && (d = v("#i" + o));
|
||||||
|
const y = s === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
v(d.nodes()[0].contentDocument.body)
|
||||||
|
) : v("body"), m = y.select(`[id="${o}"]`), x = y.select("#" + o + " g");
|
||||||
|
if (G(
|
||||||
|
x,
|
||||||
|
n,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
o
|
||||||
|
), I.insertTitle(m, "classTitleText", (e == null ? void 0 : e.titleTopMargin) ?? 5, a.db.getDiagramTitle()), z(n, m, e == null ? void 0 : e.diagramPadding, e == null ? void 0 : e.useMaxWidth), !(e != null && e.htmlLabels)) {
|
||||||
|
const h = s === "sandbox" ? d.nodes()[0].contentDocument : document, N = h.querySelectorAll('[id="' + o + '"] .edgeLabel .label');
|
||||||
|
for (const w of N) {
|
||||||
|
const T = w.getBBox(), g = h.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
g.setAttribute("rx", 0), g.setAttribute("ry", 0), g.setAttribute("width", T.width), g.setAttribute("height", T.height), w.insertBefore(g, w.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function L(l) {
|
||||||
|
let o;
|
||||||
|
switch (l) {
|
||||||
|
case 0:
|
||||||
|
o = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
o = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
o = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
o = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
o = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
o = "none";
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
const V = {
|
||||||
|
setConf: H,
|
||||||
|
draw: P
|
||||||
|
}, le = {
|
||||||
|
parser: M,
|
||||||
|
db: k,
|
||||||
|
renderer: V,
|
||||||
|
styles: R,
|
||||||
|
init: (l) => {
|
||||||
|
l.class || (l.class = {}), l.class.arrowMarkerAbsolute = l.arrowMarkerAbsolute, k.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
le as diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-6bb7b84a.js.map
|
1
assets/lib/mermaid/classDiagram-v2-6bb7b84a.js.map
Normal file
272
assets/lib/mermaid/classDiagram-v2-8096aa52.js
Normal file
|
@ -0,0 +1,272 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-d6ad8edb.js";
|
||||||
|
import { l as log, g as getConfig, f as select, e as common } from "./config-b4fa35bb.js";
|
||||||
|
import { G as Graph } from "./layout-4663fc19.js";
|
||||||
|
import { r as render } from "./index-a1a98052.js";
|
||||||
|
import { u as utils, z as interpolateToCurve, x as curveLinear, y as getStylesFromArray } from "./utils-872dfc50.js";
|
||||||
|
import { s as setupGraphViewbox } from "./setupGraphViewbox-16a0ba81.js";
|
||||||
|
import "./mermaidAPI-6f22a815.js";
|
||||||
|
import "./errorRenderer-ebf63d74.js";
|
||||||
|
import "./commonDb-7f40ab5a.js";
|
||||||
|
import "./isPlainObject-91dd8bc9.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./constant-b644328d.js";
|
||||||
|
import "./edges-62a01f73.js";
|
||||||
|
import "./svgDraw-9e97e6db.js";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
let cssClassStr = "";
|
||||||
|
if (vertex.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + " " + vertex.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + cnt,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
select(sandboxElement.nodes()[0].contentDocument.body)
|
||||||
|
) : select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-8096aa52.js.map
|
1
assets/lib/mermaid/classDiagram-v2-8096aa52.js.map
Normal file
206
assets/lib/mermaid/classDiagram-v2-8d50f991.js
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
import { p as R, d as N, s as $ } from "./styles-4bdb8b48.js";
|
||||||
|
import { l as c, c as r, j as k, A as B, t as G, o as E, q as A, n as C, f as _ } from "./mermaid-00886c59.js";
|
||||||
|
import { G as q } from "./graph-dee88f0d.js";
|
||||||
|
import { r as z } from "./index-14a831a4.js";
|
||||||
|
import "./layout-03086fc5.js";
|
||||||
|
import "./clone-a4e35854.js";
|
||||||
|
import "./edges-4734986e.js";
|
||||||
|
import "./createText-0ee50ac4.js";
|
||||||
|
import "./line-79437661.js";
|
||||||
|
import "./array-2ff2c7a6.js";
|
||||||
|
import "./path-428ebac9.js";
|
||||||
|
const S = (o) => _.sanitizeText(o, r());
|
||||||
|
let v = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const P = function(o, e, p, n) {
|
||||||
|
const t = Object.keys(o);
|
||||||
|
c.info("keys:", t), c.info(o), t.forEach(function(s) {
|
||||||
|
var y, d;
|
||||||
|
const l = o[s], i = {
|
||||||
|
shape: "rect",
|
||||||
|
id: l.id,
|
||||||
|
domId: l.domId,
|
||||||
|
labelText: S(l.id),
|
||||||
|
labelStyle: "",
|
||||||
|
style: "fill: none; stroke: black",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((y = r().flowchart) == null ? void 0 : y.padding) ?? ((d = r().class) == null ? void 0 : d.padding)
|
||||||
|
};
|
||||||
|
e.setNode(l.id, i), I(l.classes, e, p, n, l.id), c.info("setNode", i);
|
||||||
|
});
|
||||||
|
}, I = function(o, e, p, n, t) {
|
||||||
|
const s = Object.keys(o);
|
||||||
|
c.info("keys:", s), c.info(o), s.filter((l) => o[l].parent == t).forEach(function(l) {
|
||||||
|
var u, m;
|
||||||
|
const a = o[l], i = a.cssClasses.join(" "), y = E(a.styles), d = a.label ?? a.id, f = 0, h = "class_box", b = {
|
||||||
|
labelStyle: y.labelStyle,
|
||||||
|
shape: h,
|
||||||
|
labelText: S(d),
|
||||||
|
classData: a,
|
||||||
|
rx: f,
|
||||||
|
ry: f,
|
||||||
|
class: i,
|
||||||
|
style: y.style,
|
||||||
|
id: a.id,
|
||||||
|
domId: a.domId,
|
||||||
|
tooltip: n.db.getTooltip(a.id, t) || "",
|
||||||
|
haveCallback: a.haveCallback,
|
||||||
|
link: a.link,
|
||||||
|
width: a.type === "group" ? 500 : void 0,
|
||||||
|
type: a.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((u = r().flowchart) == null ? void 0 : u.padding) ?? ((m = r().class) == null ? void 0 : m.padding)
|
||||||
|
};
|
||||||
|
e.setNode(a.id, b), t && e.setParent(a.id, t), c.info("setNode", b);
|
||||||
|
});
|
||||||
|
}, F = function(o, e, p, n) {
|
||||||
|
c.info(o), o.forEach(function(t, s) {
|
||||||
|
var m, g;
|
||||||
|
const l = t, a = "", i = { labelStyle: "", style: "" }, y = l.text, d = 0, f = "note", h = {
|
||||||
|
labelStyle: i.labelStyle,
|
||||||
|
shape: f,
|
||||||
|
labelText: S(y),
|
||||||
|
noteData: l,
|
||||||
|
rx: d,
|
||||||
|
ry: d,
|
||||||
|
class: a,
|
||||||
|
style: i.style,
|
||||||
|
id: l.id,
|
||||||
|
domId: l.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((m = r().flowchart) == null ? void 0 : m.padding) ?? ((g = r().class) == null ? void 0 : g.padding)
|
||||||
|
};
|
||||||
|
if (e.setNode(l.id, h), c.info("setNode", h), !l.class || !(l.class in n))
|
||||||
|
return;
|
||||||
|
const b = p + s, u = {
|
||||||
|
id: `edgeNote${b}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: A(v.curve, C)
|
||||||
|
};
|
||||||
|
e.setEdge(l.id, l.class, u, b);
|
||||||
|
});
|
||||||
|
}, H = function(o, e) {
|
||||||
|
const p = r().flowchart;
|
||||||
|
let n = 0;
|
||||||
|
o.forEach(function(t) {
|
||||||
|
var l;
|
||||||
|
n++;
|
||||||
|
const s = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: t.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: `id_${t.id1}_${t.id2}_${n}`,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: t.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: t.relationTitle1 === "none" ? "" : t.relationTitle1,
|
||||||
|
endLabelLeft: t.relationTitle2 === "none" ? "" : t.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: D(t.relation.type1),
|
||||||
|
arrowTypeEnd: D(t.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: A(p == null ? void 0 : p.curve, C)
|
||||||
|
};
|
||||||
|
if (c.info(s, t), t.style !== void 0) {
|
||||||
|
const a = E(t.style);
|
||||||
|
s.style = a.style, s.labelStyle = a.labelStyle;
|
||||||
|
}
|
||||||
|
t.text = t.title, t.text === void 0 ? t.style !== void 0 && (s.arrowheadStyle = "fill: #333") : (s.arrowheadStyle = "fill: #333", s.labelpos = "c", ((l = r().flowchart) == null ? void 0 : l.htmlLabels) ?? r().htmlLabels ? (s.labelType = "html", s.label = '<span class="edgeLabel">' + t.text + "</span>") : (s.labelType = "text", s.label = t.text.replace(_.lineBreakRegex, `
|
||||||
|
`), t.style === void 0 && (s.style = s.style || "stroke: #333; stroke-width: 1.5px;fill:none"), s.labelStyle = s.labelStyle.replace("color:", "fill:"))), e.setEdge(t.id1, t.id2, s, n);
|
||||||
|
});
|
||||||
|
}, V = function(o) {
|
||||||
|
v = {
|
||||||
|
...v,
|
||||||
|
...o
|
||||||
|
};
|
||||||
|
}, W = async function(o, e, p, n) {
|
||||||
|
c.info("Drawing class - ", e);
|
||||||
|
const t = r().flowchart ?? r().class, s = r().securityLevel;
|
||||||
|
c.info("config:", t);
|
||||||
|
const l = (t == null ? void 0 : t.nodeSpacing) ?? 50, a = (t == null ? void 0 : t.rankSpacing) ?? 50, i = new q({
|
||||||
|
multigraph: !0,
|
||||||
|
compound: !0
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: n.db.getDirection(),
|
||||||
|
nodesep: l,
|
||||||
|
ranksep: a,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
}), y = n.db.getNamespaces(), d = n.db.getClasses(), f = n.db.getRelations(), h = n.db.getNotes();
|
||||||
|
c.info(f), P(y, i, e, n), I(d, i, e, n), H(f, i), F(h, i, f.length + 1, d);
|
||||||
|
let b;
|
||||||
|
s === "sandbox" && (b = k("#i" + e));
|
||||||
|
const u = s === "sandbox" ? k(b.nodes()[0].contentDocument.body) : k("body"), m = u.select(`[id="${e}"]`), g = u.select("#" + e + " g");
|
||||||
|
if (await z(
|
||||||
|
g,
|
||||||
|
i,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
e
|
||||||
|
), B.insertTitle(m, "classTitleText", (t == null ? void 0 : t.titleTopMargin) ?? 5, n.db.getDiagramTitle()), G(i, m, t == null ? void 0 : t.diagramPadding, t == null ? void 0 : t.useMaxWidth), !(t != null && t.htmlLabels)) {
|
||||||
|
const T = s === "sandbox" ? b.nodes()[0].contentDocument : document, M = T.querySelectorAll('[id="' + e + '"] .edgeLabel .label');
|
||||||
|
for (const w of M) {
|
||||||
|
const L = w.getBBox(), x = T.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
x.setAttribute("rx", 0), x.setAttribute("ry", 0), x.setAttribute("width", L.width), x.setAttribute("height", L.height), w.insertBefore(x, w.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function D(o) {
|
||||||
|
let e;
|
||||||
|
switch (o) {
|
||||||
|
case 0:
|
||||||
|
e = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
e = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
e = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
e = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
e = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
e = "none";
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
const J = {
|
||||||
|
setConf: V,
|
||||||
|
draw: W
|
||||||
|
}, ot = {
|
||||||
|
parser: R,
|
||||||
|
db: N,
|
||||||
|
renderer: J,
|
||||||
|
styles: $,
|
||||||
|
init: (o) => {
|
||||||
|
o.class || (o.class = {}), o.class.arrowMarkerAbsolute = o.arrowMarkerAbsolute, N.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
ot as diagram
|
||||||
|
};
|
279
assets/lib/mermaid/classDiagram-v2-b31c380f.js
Normal file
|
@ -0,0 +1,279 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-b8bd0053.js";
|
||||||
|
import { select, curveLinear } from "d3";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { l as log, g as getConfig, d as common } from "./config-389b86ff.js";
|
||||||
|
import { r as render } from "./index-1dda2409.js";
|
||||||
|
import { u as utils, n as interpolateToCurve, m as getStylesFromArray } from "./utils-d5eeff82.js";
|
||||||
|
import { s as setupGraphViewbox } from "./setupGraphViewbox-e35e4124.js";
|
||||||
|
import "./mermaidAPI-b17c596d.js";
|
||||||
|
import "stylis";
|
||||||
|
import "./errorRenderer-d05351b9.js";
|
||||||
|
import "dompurify";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
import "./commonDb-2ace122b.js";
|
||||||
|
import "dayjs";
|
||||||
|
import "khroma";
|
||||||
|
import "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import "dagre-d3-es/src/graphlib/json.js";
|
||||||
|
import "./edges-abc56c75.js";
|
||||||
|
import "./svgDraw-6a237a99.js";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
let cssClassStr = "";
|
||||||
|
if (vertex.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + " " + vertex.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + cnt,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
select(sandboxElement.nodes()[0].contentDocument.body)
|
||||||
|
) : select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-b31c380f.js.map
|
1
assets/lib/mermaid/classDiagram-v2-b31c380f.js.map
Normal file
272
assets/lib/mermaid/classDiagram-v2-cd41be19.js
Normal file
|
@ -0,0 +1,272 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-ee347520.js";
|
||||||
|
import { l as log, g as getConfig, f as select, e as common } from "./config-b4fa35bb.js";
|
||||||
|
import { G as Graph } from "./layout-47a4d1ce.js";
|
||||||
|
import { r as render } from "./index-70db0a05.js";
|
||||||
|
import { u as utils, z as interpolateToCurve, x as curveLinear, y as getStylesFromArray } from "./utils-872dfc50.js";
|
||||||
|
import { s as setupGraphViewbox } from "./setupGraphViewbox-16a0ba81.js";
|
||||||
|
import "./mermaidAPI-a31c2c80.js";
|
||||||
|
import "./errorRenderer-ebf63d74.js";
|
||||||
|
import "./commonDb-7f40ab5a.js";
|
||||||
|
import "./isPlainObject-53794b96.js";
|
||||||
|
import "./array-b7dcf730.js";
|
||||||
|
import "./constant-b644328d.js";
|
||||||
|
import "./edges-3b4dbffd.js";
|
||||||
|
import "./svgDraw-aae20718.js";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
let cssClassStr = "";
|
||||||
|
if (vertex.cssClasses.length > 0) {
|
||||||
|
cssClassStr = cssClassStr + " " + vertex.cssClasses.join(" ");
|
||||||
|
}
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: "id" + cnt,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? (
|
||||||
|
// @ts-ignore Ignore type error for now
|
||||||
|
select(sandboxElement.nodes()[0].contentDocument.body)
|
||||||
|
) : select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=classDiagram-v2-cd41be19.js.map
|
1
assets/lib/mermaid/classDiagram-v2-cd41be19.js.map
Normal file
298
assets/lib/mermaid/classDiagram-v2-f2df5561.js
Normal file
|
@ -0,0 +1,298 @@
|
||||||
|
import { p as parser, d as db, s as styles } from "./styles-991ebdfc.js";
|
||||||
|
import { select, curveLinear } from "d3";
|
||||||
|
import * as graphlib from "dagre-d3-es/src/graphlib/index.js";
|
||||||
|
import { l as log, c as getConfig, u as utils, o as setupGraphViewbox, k as getStylesFromArray, n as interpolateToCurve, e as common } from "./mermaid-f47111a7.js";
|
||||||
|
import { r as render } from "./index-fc10efb0.js";
|
||||||
|
import "ts-dedent";
|
||||||
|
import "dayjs";
|
||||||
|
import "@braintree/sanitize-url";
|
||||||
|
import "dompurify";
|
||||||
|
import "khroma";
|
||||||
|
import "lodash-es/memoize.js";
|
||||||
|
import "lodash-es/merge.js";
|
||||||
|
import "stylis";
|
||||||
|
import "lodash-es/isEmpty.js";
|
||||||
|
import "dagre-d3-es/src/dagre/index.js";
|
||||||
|
import "dagre-d3-es/src/graphlib/json.js";
|
||||||
|
import "./edges-d32062c0.js";
|
||||||
|
import "./createText-6b48ae7d.js";
|
||||||
|
import "mdast-util-from-markdown";
|
||||||
|
const sanitizeText = (txt) => common.sanitizeText(txt, getConfig());
|
||||||
|
let conf = {
|
||||||
|
dividerMargin: 10,
|
||||||
|
padding: 5,
|
||||||
|
textHeight: 10,
|
||||||
|
curve: void 0
|
||||||
|
};
|
||||||
|
const addNamespaces = function(namespaces, g, _id, diagObj) {
|
||||||
|
const keys = Object.keys(namespaces);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(namespaces);
|
||||||
|
keys.forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = namespaces[id];
|
||||||
|
const shape = "rect";
|
||||||
|
const node = {
|
||||||
|
shape,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
labelText: sanitizeText(vertex.id),
|
||||||
|
labelStyle: "",
|
||||||
|
style: "fill: none; stroke: black",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
addClasses(vertex.classes, g, _id, diagObj, vertex.id);
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addClasses = function(classes, g, _id, diagObj, parent) {
|
||||||
|
const keys = Object.keys(classes);
|
||||||
|
log.info("keys:", keys);
|
||||||
|
log.info(classes);
|
||||||
|
keys.filter((id) => classes[id].parent == parent).forEach(function(id) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = classes[id];
|
||||||
|
const cssClassStr = vertex.cssClasses.join(" ");
|
||||||
|
const styles2 = getStylesFromArray(vertex.styles);
|
||||||
|
const vertexText = vertex.label ?? vertex.id;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "class_box";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
classData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssClassStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.domId,
|
||||||
|
tooltip: diagObj.db.getTooltip(vertex.id, parent) || "",
|
||||||
|
haveCallback: vertex.haveCallback,
|
||||||
|
link: vertex.link,
|
||||||
|
width: vertex.type === "group" ? 500 : void 0,
|
||||||
|
type: vertex.type,
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
if (parent) {
|
||||||
|
g.setParent(vertex.id, parent);
|
||||||
|
}
|
||||||
|
log.info("setNode", node);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addNotes = function(notes, g, startEdgeId, classes) {
|
||||||
|
log.info(notes);
|
||||||
|
notes.forEach(function(note, i) {
|
||||||
|
var _a, _b;
|
||||||
|
const vertex = note;
|
||||||
|
const cssNoteStr = "";
|
||||||
|
const styles2 = { labelStyle: "", style: "" };
|
||||||
|
const vertexText = vertex.text;
|
||||||
|
const radius = 0;
|
||||||
|
const shape = "note";
|
||||||
|
const node = {
|
||||||
|
labelStyle: styles2.labelStyle,
|
||||||
|
shape,
|
||||||
|
labelText: sanitizeText(vertexText),
|
||||||
|
noteData: vertex,
|
||||||
|
rx: radius,
|
||||||
|
ry: radius,
|
||||||
|
class: cssNoteStr,
|
||||||
|
style: styles2.style,
|
||||||
|
id: vertex.id,
|
||||||
|
domId: vertex.id,
|
||||||
|
tooltip: "",
|
||||||
|
type: "note",
|
||||||
|
// TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release
|
||||||
|
padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)
|
||||||
|
};
|
||||||
|
g.setNode(vertex.id, node);
|
||||||
|
log.info("setNode", node);
|
||||||
|
if (!vertex.class || !(vertex.class in classes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const edgeId = startEdgeId + i;
|
||||||
|
const edgeData = {
|
||||||
|
id: `edgeNote${edgeId}`,
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: "dotted",
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: "none",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: "",
|
||||||
|
endLabelLeft: "",
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: "none",
|
||||||
|
arrowTypeEnd: "none",
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf.curve, curveLinear)
|
||||||
|
};
|
||||||
|
g.setEdge(vertex.id, vertex.class, edgeData, edgeId);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const addRelations = function(relations, g) {
|
||||||
|
const conf2 = getConfig().flowchart;
|
||||||
|
let cnt = 0;
|
||||||
|
relations.forEach(function(edge) {
|
||||||
|
var _a;
|
||||||
|
cnt++;
|
||||||
|
const edgeData = {
|
||||||
|
//Set relationship style and line type
|
||||||
|
classes: "relation",
|
||||||
|
pattern: edge.relation.lineType == 1 ? "dashed" : "solid",
|
||||||
|
id: `id_${edge.id1}_${edge.id2}_${cnt}`,
|
||||||
|
// Set link type for rendering
|
||||||
|
arrowhead: edge.type === "arrow_open" ? "none" : "normal",
|
||||||
|
//Set edge extra labels
|
||||||
|
startLabelRight: edge.relationTitle1 === "none" ? "" : edge.relationTitle1,
|
||||||
|
endLabelLeft: edge.relationTitle2 === "none" ? "" : edge.relationTitle2,
|
||||||
|
//Set relation arrow types
|
||||||
|
arrowTypeStart: getArrowMarker(edge.relation.type1),
|
||||||
|
arrowTypeEnd: getArrowMarker(edge.relation.type2),
|
||||||
|
style: "fill:none",
|
||||||
|
labelStyle: "",
|
||||||
|
curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)
|
||||||
|
};
|
||||||
|
log.info(edgeData, edge);
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
const styles2 = getStylesFromArray(edge.style);
|
||||||
|
edgeData.style = styles2.style;
|
||||||
|
edgeData.labelStyle = styles2.labelStyle;
|
||||||
|
}
|
||||||
|
edge.text = edge.title;
|
||||||
|
if (edge.text === void 0) {
|
||||||
|
if (edge.style !== void 0) {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
edgeData.arrowheadStyle = "fill: #333";
|
||||||
|
edgeData.labelpos = "c";
|
||||||
|
if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {
|
||||||
|
edgeData.labelType = "html";
|
||||||
|
edgeData.label = '<span class="edgeLabel">' + edge.text + "</span>";
|
||||||
|
} else {
|
||||||
|
edgeData.labelType = "text";
|
||||||
|
edgeData.label = edge.text.replace(common.lineBreakRegex, "\n");
|
||||||
|
if (edge.style === void 0) {
|
||||||
|
edgeData.style = edgeData.style || "stroke: #333; stroke-width: 1.5px;fill:none";
|
||||||
|
}
|
||||||
|
edgeData.labelStyle = edgeData.labelStyle.replace("color:", "fill:");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setEdge(edge.id1, edge.id2, edgeData, cnt);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const setConf = function(cnf) {
|
||||||
|
conf = {
|
||||||
|
...conf,
|
||||||
|
...cnf
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const draw = async function(text, id, _version, diagObj) {
|
||||||
|
log.info("Drawing class - ", id);
|
||||||
|
const conf2 = getConfig().flowchart ?? getConfig().class;
|
||||||
|
const securityLevel = getConfig().securityLevel;
|
||||||
|
log.info("config:", conf2);
|
||||||
|
const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;
|
||||||
|
const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;
|
||||||
|
const g = new graphlib.Graph({
|
||||||
|
multigraph: true,
|
||||||
|
compound: true
|
||||||
|
}).setGraph({
|
||||||
|
rankdir: diagObj.db.getDirection(),
|
||||||
|
nodesep: nodeSpacing,
|
||||||
|
ranksep: rankSpacing,
|
||||||
|
marginx: 8,
|
||||||
|
marginy: 8
|
||||||
|
}).setDefaultEdgeLabel(function() {
|
||||||
|
return {};
|
||||||
|
});
|
||||||
|
const namespaces = diagObj.db.getNamespaces();
|
||||||
|
const classes = diagObj.db.getClasses();
|
||||||
|
const relations = diagObj.db.getRelations();
|
||||||
|
const notes = diagObj.db.getNotes();
|
||||||
|
log.info(relations);
|
||||||
|
addNamespaces(namespaces, g, id, diagObj);
|
||||||
|
addClasses(classes, g, id, diagObj);
|
||||||
|
addRelations(relations, g);
|
||||||
|
addNotes(notes, g, relations.length + 1, classes);
|
||||||
|
let sandboxElement;
|
||||||
|
if (securityLevel === "sandbox") {
|
||||||
|
sandboxElement = select("#i" + id);
|
||||||
|
}
|
||||||
|
const root = securityLevel === "sandbox" ? select(sandboxElement.nodes()[0].contentDocument.body) : select("body");
|
||||||
|
const svg = root.select(`[id="${id}"]`);
|
||||||
|
const element = root.select("#" + id + " g");
|
||||||
|
await render(
|
||||||
|
element,
|
||||||
|
g,
|
||||||
|
["aggregation", "extension", "composition", "dependency", "lollipop"],
|
||||||
|
"classDiagram",
|
||||||
|
id
|
||||||
|
);
|
||||||
|
utils.insertTitle(svg, "classTitleText", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());
|
||||||
|
setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);
|
||||||
|
if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {
|
||||||
|
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
||||||
|
const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label');
|
||||||
|
for (const label of labels) {
|
||||||
|
const dim = label.getBBox();
|
||||||
|
const rect = doc.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||||
|
rect.setAttribute("rx", 0);
|
||||||
|
rect.setAttribute("ry", 0);
|
||||||
|
rect.setAttribute("width", dim.width);
|
||||||
|
rect.setAttribute("height", dim.height);
|
||||||
|
label.insertBefore(rect, label.firstChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function getArrowMarker(type) {
|
||||||
|
let marker;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
marker = "aggregation";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
marker = "extension";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
marker = "composition";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
marker = "dependency";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
marker = "lollipop";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
marker = "none";
|
||||||
|
}
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
|
const renderer = {
|
||||||
|
setConf,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
const diagram = {
|
||||||
|
parser,
|
||||||
|
db,
|
||||||
|
renderer,
|
||||||
|
styles,
|
||||||
|
init: (cnf) => {
|
||||||
|
if (!cnf.class) {
|
||||||
|
cnf.class = {};
|
||||||
|
}
|
||||||
|
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
||||||
|
db.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
diagram
|
||||||
|
};
|
8
assets/lib/mermaid/clone-a4e35854.js
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import { c as r } from "./graph-dee88f0d.js";
|
||||||
|
var e = 4;
|
||||||
|
function a(o) {
|
||||||
|
return r(o, e);
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
a as c
|
||||||
|
};
|
8
assets/lib/mermaid/clone-d2e37f8c.js
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import { c as baseClone } from "./graph-af3d5df6.js";
|
||||||
|
var CLONE_SYMBOLS_FLAG = 4;
|
||||||
|
function clone(value) {
|
||||||
|
return baseClone(value, CLONE_SYMBOLS_FLAG);
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
clone as c
|
||||||
|
};
|
59
assets/lib/mermaid/commonDb-2ace122b.js
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
import { b as sanitizeText$1, g as getConfig } from "./config-389b86ff.js";
|
||||||
|
let title = "";
|
||||||
|
let diagramTitle = "";
|
||||||
|
let description = "";
|
||||||
|
const sanitizeText = (txt) => sanitizeText$1(txt, getConfig());
|
||||||
|
const clear = function() {
|
||||||
|
title = "";
|
||||||
|
description = "";
|
||||||
|
diagramTitle = "";
|
||||||
|
};
|
||||||
|
const setAccTitle = function(txt) {
|
||||||
|
title = sanitizeText(txt).replace(/^\s+/g, "");
|
||||||
|
};
|
||||||
|
const getAccTitle = function() {
|
||||||
|
return title || diagramTitle;
|
||||||
|
};
|
||||||
|
const setAccDescription = function(txt) {
|
||||||
|
description = sanitizeText(txt).replace(/\n\s+/g, "\n");
|
||||||
|
};
|
||||||
|
const getAccDescription = function() {
|
||||||
|
return description;
|
||||||
|
};
|
||||||
|
const setDiagramTitle = function(txt) {
|
||||||
|
diagramTitle = sanitizeText(txt);
|
||||||
|
};
|
||||||
|
const getDiagramTitle = function() {
|
||||||
|
return diagramTitle;
|
||||||
|
};
|
||||||
|
const commonDb = {
|
||||||
|
setAccTitle,
|
||||||
|
getAccTitle,
|
||||||
|
setDiagramTitle,
|
||||||
|
getDiagramTitle,
|
||||||
|
getAccDescription,
|
||||||
|
setAccDescription,
|
||||||
|
clear
|
||||||
|
};
|
||||||
|
const commonDb$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
||||||
|
__proto__: null,
|
||||||
|
clear,
|
||||||
|
default: commonDb,
|
||||||
|
getAccDescription,
|
||||||
|
getAccTitle,
|
||||||
|
getDiagramTitle,
|
||||||
|
setAccDescription,
|
||||||
|
setAccTitle,
|
||||||
|
setDiagramTitle
|
||||||
|
}, Symbol.toStringTag, { value: "Module" }));
|
||||||
|
export {
|
||||||
|
getAccDescription as a,
|
||||||
|
setAccDescription as b,
|
||||||
|
commonDb$1 as c,
|
||||||
|
setDiagramTitle as d,
|
||||||
|
getDiagramTitle as e,
|
||||||
|
clear as f,
|
||||||
|
getAccTitle as g,
|
||||||
|
setAccTitle as s
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=commonDb-2ace122b.js.map
|
1
assets/lib/mermaid/commonDb-2ace122b.js.map
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"commonDb-2ace122b.js","sources":["../src/commonDb.ts"],"sourcesContent":["import { sanitizeText as _sanitizeText } from './diagrams/common/common';\nimport { getConfig } from './config';\nlet title = '';\nlet diagramTitle = '';\nlet description = '';\nconst sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());\n\nexport const clear = function (): void {\n title = '';\n description = '';\n diagramTitle = '';\n};\n\nexport const setAccTitle = function (txt: string): void {\n title = sanitizeText(txt).replace(/^\\s+/g, '');\n};\n\nexport const getAccTitle = function (): string {\n return title || diagramTitle;\n};\n\nexport const setAccDescription = function (txt: string): void {\n description = sanitizeText(txt).replace(/\\n\\s+/g, '\\n');\n};\n\nexport const getAccDescription = function (): string {\n return description;\n};\n\nexport const setDiagramTitle = function (txt: string): void {\n diagramTitle = sanitizeText(txt);\n};\n\nexport const getDiagramTitle = function (): string {\n return diagramTitle;\n};\n\nexport default {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle: getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear,\n};\n"],"names":["_sanitizeText"],"mappings":";AAEA,IAAI,QAAQ;AACZ,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,MAAM,eAAe,CAAC,QAAwBA,eAAc,KAAK,UAAW,CAAA;AAErE,MAAM,QAAQ,WAAkB;AAC7B,UAAA;AACM,gBAAA;AACC,iBAAA;AACjB;AAEa,MAAA,cAAc,SAAU,KAAmB;AACtD,UAAQ,aAAa,GAAG,EAAE,QAAQ,SAAS,EAAE;AAC/C;AAEO,MAAM,cAAc,WAAoB;AAC7C,SAAO,SAAS;AAClB;AAEa,MAAA,oBAAoB,SAAU,KAAmB;AAC5D,gBAAc,aAAa,GAAG,EAAE,QAAQ,UAAU,IAAI;AACxD;AAEO,MAAM,oBAAoB,WAAoB;AAC5C,SAAA;AACT;AAEa,MAAA,kBAAkB,SAAU,KAAmB;AAC1D,iBAAe,aAAa,GAAG;AACjC;AAEO,MAAM,kBAAkB,WAAoB;AAC1C,SAAA;AACT;AAEA,MAAe,WAAA;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;;;;;;;;;"}
|
47
assets/lib/mermaid/commonDb-4dc3d465.js
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import { b as f, g as m } from "./config-e567ef17.js";
|
||||||
|
let n = "", e = "", c = "";
|
||||||
|
const o = (t) => f(t, m()), s = function() {
|
||||||
|
n = "", c = "", e = "";
|
||||||
|
}, i = function(t) {
|
||||||
|
n = o(t).replace(/^\s+/g, "");
|
||||||
|
}, a = function() {
|
||||||
|
return n || e;
|
||||||
|
}, r = function(t) {
|
||||||
|
c = o(t).replace(/\n\s+/g, `
|
||||||
|
`);
|
||||||
|
}, l = function() {
|
||||||
|
return c;
|
||||||
|
}, g = function(t) {
|
||||||
|
e = o(t);
|
||||||
|
}, u = function() {
|
||||||
|
return e;
|
||||||
|
}, p = {
|
||||||
|
setAccTitle: i,
|
||||||
|
getAccTitle: a,
|
||||||
|
setDiagramTitle: g,
|
||||||
|
getDiagramTitle: u,
|
||||||
|
getAccDescription: l,
|
||||||
|
setAccDescription: r,
|
||||||
|
clear: s
|
||||||
|
}, b = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
||||||
|
__proto__: null,
|
||||||
|
clear: s,
|
||||||
|
default: p,
|
||||||
|
getAccDescription: l,
|
||||||
|
getAccTitle: a,
|
||||||
|
getDiagramTitle: u,
|
||||||
|
setAccDescription: r,
|
||||||
|
setAccTitle: i,
|
||||||
|
setDiagramTitle: g
|
||||||
|
}, Symbol.toStringTag, { value: "Module" }));
|
||||||
|
export {
|
||||||
|
l as a,
|
||||||
|
r as b,
|
||||||
|
b as c,
|
||||||
|
g as d,
|
||||||
|
u as e,
|
||||||
|
s as f,
|
||||||
|
a as g,
|
||||||
|
i as s
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=commonDb-4dc3d465.js.map
|
1
assets/lib/mermaid/commonDb-4dc3d465.js.map
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"commonDb-4dc3d465.js","sources":["../src/commonDb.ts"],"sourcesContent":["import { sanitizeText as _sanitizeText } from './diagrams/common/common';\nimport { getConfig } from './config';\nlet title = '';\nlet diagramTitle = '';\nlet description = '';\nconst sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());\n\nexport const clear = function (): void {\n title = '';\n description = '';\n diagramTitle = '';\n};\n\nexport const setAccTitle = function (txt: string): void {\n title = sanitizeText(txt).replace(/^\\s+/g, '');\n};\n\nexport const getAccTitle = function (): string {\n return title || diagramTitle;\n};\n\nexport const setAccDescription = function (txt: string): void {\n description = sanitizeText(txt).replace(/\\n\\s+/g, '\\n');\n};\n\nexport const getAccDescription = function (): string {\n return description;\n};\n\nexport const setDiagramTitle = function (txt: string): void {\n diagramTitle = sanitizeText(txt);\n};\n\nexport const getDiagramTitle = function (): string {\n return diagramTitle;\n};\n\nexport default {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle: getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear,\n};\n"],"names":["title","diagramTitle","description","sanitizeText","txt","_sanitizeText","getConfig","clear","setAccTitle","getAccTitle","setAccDescription","getAccDescription","setDiagramTitle","getDiagramTitle","commonDb"],"mappings":";AAEA,IAAIA,IAAQ,IACRC,IAAe,IACfC,IAAc;AAClB,MAAMC,IAAe,CAACC,MAAwBC,EAAcD,GAAKE,EAAW,CAAA,GAE/DC,IAAQ,WAAkB;AAC7B,EAAAP,IAAA,IACME,IAAA,IACCD,IAAA;AACjB,GAEaO,IAAc,SAAUJ,GAAmB;AACtD,EAAAJ,IAAQG,EAAaC,CAAG,EAAE,QAAQ,SAAS,EAAE;AAC/C,GAEaK,IAAc,WAAoB;AAC7C,SAAOT,KAASC;AAClB,GAEaS,IAAoB,SAAUN,GAAmB;AAC5D,EAAAF,IAAcC,EAAaC,CAAG,EAAE,QAAQ,UAAU;AAAA,CAAI;AACxD,GAEaO,IAAoB,WAAoB;AAC5C,SAAAT;AACT,GAEaU,IAAkB,SAAUR,GAAmB;AAC1D,EAAAH,IAAeE,EAAaC,CAAG;AACjC,GAEaS,IAAkB,WAAoB;AAC1C,SAAAZ;AACT,GAEea,IAAA;AAAA,EACb,aAAAN;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAG;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAF;AAAA,EACA,mBAAAD;AAAA,EACA,OAAAH;AACF;;;;;;;;;;;"}
|
59
assets/lib/mermaid/commonDb-7f40ab5a.js
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
import { b as sanitizeText$1, g as getConfig } from "./config-b4fa35bb.js";
|
||||||
|
let title = "";
|
||||||
|
let diagramTitle = "";
|
||||||
|
let description = "";
|
||||||
|
const sanitizeText = (txt) => sanitizeText$1(txt, getConfig());
|
||||||
|
const clear = function() {
|
||||||
|
title = "";
|
||||||
|
description = "";
|
||||||
|
diagramTitle = "";
|
||||||
|
};
|
||||||
|
const setAccTitle = function(txt) {
|
||||||
|
title = sanitizeText(txt).replace(/^\s+/g, "");
|
||||||
|
};
|
||||||
|
const getAccTitle = function() {
|
||||||
|
return title || diagramTitle;
|
||||||
|
};
|
||||||
|
const setAccDescription = function(txt) {
|
||||||
|
description = sanitizeText(txt).replace(/\n\s+/g, "\n");
|
||||||
|
};
|
||||||
|
const getAccDescription = function() {
|
||||||
|
return description;
|
||||||
|
};
|
||||||
|
const setDiagramTitle = function(txt) {
|
||||||
|
diagramTitle = sanitizeText(txt);
|
||||||
|
};
|
||||||
|
const getDiagramTitle = function() {
|
||||||
|
return diagramTitle;
|
||||||
|
};
|
||||||
|
const commonDb = {
|
||||||
|
setAccTitle,
|
||||||
|
getAccTitle,
|
||||||
|
setDiagramTitle,
|
||||||
|
getDiagramTitle,
|
||||||
|
getAccDescription,
|
||||||
|
setAccDescription,
|
||||||
|
clear
|
||||||
|
};
|
||||||
|
const commonDb$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
||||||
|
__proto__: null,
|
||||||
|
clear,
|
||||||
|
default: commonDb,
|
||||||
|
getAccDescription,
|
||||||
|
getAccTitle,
|
||||||
|
getDiagramTitle,
|
||||||
|
setAccDescription,
|
||||||
|
setAccTitle,
|
||||||
|
setDiagramTitle
|
||||||
|
}, Symbol.toStringTag, { value: "Module" }));
|
||||||
|
export {
|
||||||
|
getAccDescription as a,
|
||||||
|
setAccDescription as b,
|
||||||
|
commonDb$1 as c,
|
||||||
|
setDiagramTitle as d,
|
||||||
|
getDiagramTitle as e,
|
||||||
|
clear as f,
|
||||||
|
getAccTitle as g,
|
||||||
|
setAccTitle as s
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=commonDb-7f40ab5a.js.map
|