7
.github/workflows/build.yml
vendored
|
@ -36,6 +36,13 @@ jobs:
|
|||
push_options: "--dry-run"
|
||||
file_pattern: "assets/lib/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
|
||||
- name: Commit CSS changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
|
|
2
.gitignore
vendored
|
@ -30,3 +30,5 @@ node_modules
|
|||
.Spotlight-V100
|
||||
.Trashes
|
||||
.idea
|
||||
.Ulysses-Group.plist
|
||||
.Ulysses-Settings.plist
|
18
README.md
|
@ -1,8 +1,4 @@
|
|||
# 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 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)
|
||||
|
@ -10,7 +6,10 @@
|
|||
[![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)
|
||||
|
||||
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/)
|
||||
📑 [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)
|
||||
💡 [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
|
||||
|
@ -45,6 +48,7 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
|||
- Diagrams and visualisations using Mermaid
|
||||
- Charts using Chart.js
|
||||
- TypeIt integration
|
||||
- Youtube embeds with performance improvements
|
||||
- Mathematical notation using KaTeX
|
||||
- SVG icons from FontAwesome 6
|
||||
- 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
|
||||
|
||||
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-h-\[130px\] {
|
||||
min-height:130px
|
||||
}
|
||||
|
||||
.min-h-\[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)
|
||||
}
|
||||
|
||||
.from-60\% {
|
||||
--tw-gradient-from-position:60%
|
||||
}
|
||||
|
||||
.to-neutral {
|
||||
--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
|
||||
}
|
||||
|
||||
.px-8 {
|
||||
padding-left:2rem;
|
||||
padding-right:2rem
|
||||
}
|
||||
|
||||
.px-\[0\.4rem\] {
|
||||
padding-left:0.4rem;
|
||||
padding-right:0.4rem
|
||||
|
@ -3066,6 +3069,10 @@ input[type="range"]:active::-webkit-slider-thumb {
|
|||
opacity:0.6
|
||||
}
|
||||
|
||||
.opacity-65 {
|
||||
opacity:0.65
|
||||
}
|
||||
|
||||
.mix-blend-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) {
|
||||
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 +
|
||||
`<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="-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 italic">${value.item.summary}</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
|