Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51df39a028 | ||
|
|
fb6188b94c | ||
|
|
56889bcbd4 | ||
|
|
6daf41ed2b | ||
|
|
756d07aa80 | ||
|
|
07d8dcb4a7 | ||
|
|
42469c1638 | ||
|
|
d5fec1cfcd | ||
|
|
cfcf6d5003 | ||
|
|
6193bdc5e3 | ||
|
|
35414a6e00 | ||
|
|
a67d942e9a | ||
|
|
ab361bebb9 | ||
|
|
89b31ce563 | ||
|
|
68b0e8518a | ||
|
|
af29c0662b | ||
|
|
6168a40033 | ||
|
|
66d996deb3 | ||
|
|
5763b2b403 | ||
|
|
f6dbf6cfe9 | ||
|
|
35e68d6f55 | ||
|
|
e56a4b59b8 | ||
|
|
13c2a585c2 | ||
|
|
67968a50c4 | ||
|
|
fed026827b | ||
|
|
35fcf1a50d | ||
|
|
e9c55f2e17 | ||
|
|
7e6fe3b6b2 | ||
|
|
af85151907 | ||
|
|
7417b6ca2c | ||
|
|
f6e6f8325f | ||
|
|
46fcf6cc68 | ||
|
|
cef8e28795 | ||
|
|
0b492f26de | ||
|
|
ceb5c72b40 | ||
|
|
87b5ab53da | ||
|
|
bf3f7b993c | ||
|
|
74221bf424 | ||
|
|
1fdfb46638 | ||
|
|
5b2f6f5648 | ||
|
|
7067128e48 | ||
|
|
b06e9dc303 | ||
|
|
7c1930d3a8 | ||
|
|
85df73d8b6 | ||
|
|
0297dd1de8 | ||
|
|
4eb838b230 | ||
|
|
e36c227ce1 | ||
|
|
9e55ca83e3 | ||
|
|
6ea69b3b6d | ||
|
|
c1a2340d49 | ||
|
|
e768573d10 | ||
|
|
d4a45eb951 | ||
|
|
2abca494c0 | ||
|
|
92c13bdc85 | ||
|
|
81e9dee2f5 | ||
|
|
7e4db1f562 | ||
|
|
de044b614e | ||
|
|
cc7d6a9aeb | ||
|
|
15bf9dc07d | ||
|
|
5a4f5245a9 | ||
|
|
4df9af06ad | ||
|
|
a751c97dd9 | ||
|
|
e50e276f36 | ||
|
|
5ad54fd91a | ||
|
|
a0d05ce208 | ||
|
|
66c3a9c71d | ||
|
|
cbbdbcf1a9 | ||
|
|
b90b916493 | ||
|
|
22b51a2275 | ||
|
|
c3a6c2ca27 | ||
|
|
811a9b5c1c | ||
|
|
12f6b5b77c | ||
|
|
bafc42f587 | ||
|
|
ab87f4cbad | ||
|
|
6ae4f4b71c | ||
|
|
b0aa7298b5 | ||
|
|
a1769a6722 | ||
|
|
11463f3992 | ||
|
|
998a422ed6 | ||
|
|
0f48b1a16d | ||
|
|
32b8aa5876 | ||
|
|
7df76e9a32 | ||
|
|
4690352255 | ||
|
|
e009305c4e | ||
|
|
5edba5cf2e | ||
|
|
75e76c572d | ||
|
|
686f2ef9fe | ||
|
|
f85fc05b6e | ||
|
|
c7dbcbf154 | ||
|
|
fd1dd03358 | ||
|
|
c8b2c245a8 | ||
|
|
17a034a989 | ||
|
|
6510a7505e | ||
|
|
c0c9d54fbf | ||
|
|
5a2ea71bdf | ||
|
|
29625b34b6 | ||
|
|
5a38b0e42d | ||
|
|
ac6dc9275b | ||
|
|
5d9a9beee6 | ||
|
|
422d8fa8e8 | ||
|
|
6190898b70 | ||
|
|
4a58dae0a4 | ||
|
|
5ad4fd2225 | ||
|
|
8bf4d13667 | ||
|
|
433b51208d | ||
|
|
c3719406ac | ||
|
|
1e7b2c58db | ||
|
|
4ef29d4697 | ||
|
|
4a95a42286 | ||
|
|
94c013166b | ||
|
|
77d0ab83fd | ||
|
|
44b3b17fac | ||
|
|
6b341ad811 | ||
|
|
f81f55ba94 | ||
|
|
4748453ea3 | ||
|
|
3b0393d553 | ||
|
|
74bd2b2b35 | ||
|
|
74b985654e | ||
|
|
4e63dcadb3 | ||
|
|
a7ae2030f0 | ||
|
|
c516d2ef6e | ||
|
|
f7286ece55 | ||
|
|
f03311be06 | ||
|
|
c5eef5a8f6 | ||
|
|
f1271eea67 | ||
|
|
3d197535ea | ||
|
|
e6a8167b11 | ||
|
|
9ed6ee385c | ||
|
|
45ac03eb53 | ||
|
|
8b93b9960a | ||
|
|
b5307d0fb5 | ||
|
|
d54ecd6a04 | ||
|
|
ff8e458e1f | ||
|
|
1c800f6d1b | ||
|
|
00845bbd18 | ||
|
|
e528194e4c | ||
|
|
e90caa7a7b | ||
|
|
67e026efd7 | ||
|
|
5d00985704 | ||
|
|
3ad4fbd7a2 | ||
|
|
c021818745 | ||
|
|
4f42c38e36 | ||
|
|
10bf07a7b7 | ||
|
|
8626104b88 | ||
|
|
cf15eca10f | ||
|
|
531e89ce6c | ||
|
|
6de3ed8566 | ||
|
|
9a70203a42 | ||
|
|
745bf89b70 | ||
|
|
cd33d1f880 | ||
|
|
6c1bdb36f6 | ||
|
|
b176f67a91 | ||
|
|
80c1a9d96a | ||
|
|
6f646c8688 | ||
|
|
0aa278ada6 | ||
|
|
eaff5aae11 | ||
|
|
93ef687194 | ||
|
|
48bc05b12f | ||
|
|
01a88441fd | ||
|
|
c4ffe1f0d5 | ||
|
|
bbb0f9be0d | ||
|
|
5e9bfbd9fe | ||
|
|
f8d48382bc | ||
|
|
8620d809fe | ||
|
|
9f67fb1859 | ||
|
|
241199c5ee | ||
|
|
77462c9f21 | ||
|
|
f3f27729f1 | ||
|
|
18800f8408 | ||
|
|
b6c908e4e5 | ||
|
|
65956f10b9 | ||
|
|
35ab259633 | ||
|
|
cad46b0876 | ||
|
|
8409353223 | ||
|
|
5ef6777ac9 | ||
|
|
c2a84b2418 | ||
|
|
2eb7f8aed7 | ||
|
|
6c47f51936 | ||
|
|
abf51ad142 | ||
|
|
bb737313e2 | ||
|
|
0bc9b9af6a | ||
|
|
35a5b61881 | ||
|
|
d93195c377 | ||
|
|
4a0d10dc18 | ||
|
|
6c6a559113 | ||
|
|
ed6e943e57 | ||
|
|
a67798f18a | ||
|
|
902b0d9c86 | ||
|
|
554e25716c | ||
|
|
491ce02f59 | ||
|
|
255358e016 | ||
|
|
c6114343ab | ||
|
|
a147c648fc | ||
|
|
beb23b9596 | ||
|
|
2e50aae48b | ||
|
|
346b74baf9 | ||
|
|
1676cc965f | ||
|
|
e9e1a9761b | ||
|
|
b5bb4a17b4 | ||
|
|
7e22a5e368 | ||
|
|
54daa63c2a | ||
|
|
be187c78ee | ||
|
|
40908cb3c3 | ||
|
|
e17c4b6dd6 | ||
|
|
2e9a2f244f | ||
|
|
e92c30b7a3 | ||
|
|
ea3aec22c5 | ||
|
|
6f1e6e4537 | ||
|
|
a2e806e094 | ||
|
|
1d32caec6a | ||
|
|
a657ad96f1 | ||
|
|
828ed74680 | ||
|
|
bf94692d46 | ||
|
|
1b4aa91c56 | ||
|
|
3ec8dbc5cb | ||
|
|
8bbd8b8626 | ||
|
|
36d022e020 | ||
|
|
afdaaaf408 | ||
|
|
b490f97b8b | ||
|
|
0c22317171 | ||
|
|
83797461b4 | ||
|
|
937fdad583 | ||
|
|
5fdf429761 | ||
|
|
f4022f5a5c | ||
|
|
83b0c5aea0 | ||
|
|
2134b2fd01 | ||
|
|
fbe67c9978 | ||
|
|
8d3e4df011 | ||
|
|
f421ce16c8 | ||
|
|
893687d0d4 | ||
|
|
4d13ea3256 | ||
|
|
f0f6afa555 | ||
|
|
08b14e923d | ||
|
|
f93ac47d88 | ||
|
|
263a1dce02 | ||
|
|
713f9f687b | ||
|
|
5a11829222 | ||
|
|
85fe1addbc | ||
|
|
f1d582ff98 | ||
|
|
ef4068911b | ||
|
|
ec76fb3c0a | ||
|
|
fd356e8c1b | ||
|
|
e5296095fa | ||
|
|
9d07b99b19 | ||
|
|
7c0eacf44f | ||
|
|
317245e67d | ||
|
|
abd2a8ed94 | ||
|
|
99eb45cbfd | ||
|
|
947e2d9f87 | ||
|
|
e1cd249c5e | ||
|
|
3254052134 | ||
|
|
39ce8d9344 | ||
|
|
8490870d3c | ||
|
|
18e3ba268d | ||
|
|
986de46ff9 | ||
|
|
6154c4c15a | ||
|
|
fdb7bbd3c0 | ||
|
|
480497bb6c | ||
|
|
c846970b49 | ||
|
|
984320d0ef | ||
|
|
d1a7d455a8 | ||
|
|
2b35dc4905 | ||
|
|
19a43d0fe0 | ||
|
|
73de5fc8c5 | ||
|
|
7ee7ddc13a | ||
|
|
ee8d2d28cf | ||
|
|
aa1411568b | ||
|
|
e58678409e | ||
|
|
4c28762511 | ||
|
|
59d5ece765 | ||
|
|
a1bab39ff2 | ||
|
|
8a29505f8f | ||
|
|
c5f2dc028e | ||
|
|
bba4356a44 | ||
|
|
8f36c51fa7 | ||
|
|
83c19b788b | ||
|
|
0884d177dc | ||
|
|
f2b934c8f4 | ||
|
|
ad9ebc8456 | ||
|
|
84398af9c1 | ||
|
|
c8c3ef706f | ||
|
|
1e1dff4af2 | ||
|
|
dbe704f2e8 | ||
|
|
92348d0a7b | ||
|
|
6acb658a07 | ||
|
|
271a7df203 | ||
|
|
a3583482b5 | ||
|
|
f9505668e6 | ||
|
|
d412084491 | ||
|
|
0189a57b76 | ||
|
|
58bea096cb | ||
|
|
97cae5ee6a | ||
|
|
d0ada22e81 | ||
|
|
d998d3b403 | ||
|
|
18428a79b8 | ||
|
|
174e07c675 | ||
|
|
1c1d3d95b0 | ||
|
|
be4d9570e5 | ||
|
|
ff7f3e4f3f | ||
|
|
dd7d0d3431 | ||
|
|
9f8c1ab2cc | ||
|
|
773d32d378 | ||
|
|
984fef9309 | ||
|
|
e7ce386049 | ||
|
|
13cb402dd0 | ||
|
|
225121b2f1 | ||
|
|
b0eea59728 | ||
|
|
ef2f7e6a95 | ||
|
|
0332cc6f45 | ||
|
|
214d65f076 | ||
|
|
d20e2fb4e3 | ||
|
|
127a03b29c | ||
|
|
87893236dd | ||
|
|
9d440a8856 | ||
|
|
8e14d69e14 | ||
|
|
9ea59af0af | ||
|
|
ca9709f2e9 | ||
|
|
f4648e5f87 | ||
|
|
f4fd472e6e | ||
|
|
e29a3f719f | ||
|
|
9e381ed619 | ||
|
|
580e13b6d6 | ||
|
|
7f929c2fd8 | ||
|
|
393791265c | ||
|
|
ab6738cd4d | ||
|
|
4ec4062494 | ||
|
|
664eea75f9 | ||
|
|
c77c69da84 | ||
|
|
353f438c5e | ||
|
|
7d06ca6c38 | ||
|
|
02bcbb7a12 | ||
|
|
e87e066aa7 | ||
|
|
14e464731c | ||
|
|
19520b4481 | ||
|
|
289b3ff7ad | ||
|
|
3da195bad1 | ||
|
|
66253cbdd0 | ||
|
|
4ce27882fe | ||
|
|
c7c75e3075 | ||
|
|
02b6b46427 | ||
|
|
ad55a5fb93 | ||
|
|
bf91c39b62 | ||
|
|
b6c0f889b8 | ||
|
|
9545dd1a6f | ||
|
|
5f5fdc51d0 | ||
|
|
fd78299fde | ||
|
|
d332b54c94 | ||
|
|
d8dc81ab53 | ||
|
|
17e33482b1 | ||
|
|
44e14ea3b8 | ||
|
|
ddf79f4573 | ||
|
|
008347865d | ||
|
|
9efba1ffe1 | ||
|
|
eefbba7f2d | ||
|
|
8a2eaff8fa | ||
|
|
2c3141f67a | ||
|
|
549d7d48ff | ||
|
|
5c6b8dc7d5 | ||
|
|
f4c1e17906 | ||
|
|
11e091a1e6 | ||
|
|
e4096c80ca | ||
|
|
602b012bfe | ||
|
|
b37fe87c3c | ||
|
|
863354a960 | ||
|
|
8c4fb4d64c | ||
|
|
f85443d3d5 | ||
|
|
392e89722d | ||
|
|
f481e64411 | ||
|
|
c97a2b0d04 | ||
|
|
e06f703799 | ||
|
|
1b2c7458a5 | ||
|
|
477029e5f0 | ||
|
|
f3ecc71aad | ||
|
|
9a632353c2 | ||
|
|
c2740e9d0f | ||
|
|
e6470390d8 | ||
|
|
8511b60d3a | ||
|
|
f558c41f0e | ||
|
|
c6576af418 | ||
|
|
4825539121 | ||
|
|
6b56512f11 | ||
|
|
d2eedcb6a1 | ||
|
|
d3b9f1b54b | ||
|
|
0097326f4f | ||
|
|
66f840999b | ||
|
|
d08cdba52a | ||
|
|
9256ecd122 | ||
|
|
aa2a37c666 | ||
|
|
63f61dac75 | ||
|
|
560cde339b | ||
|
|
0a9b4a29a1 | ||
|
|
71b578b8c4 | ||
|
|
bbb657dfd4 | ||
|
|
9d7650b375 | ||
|
|
3798b09baf | ||
|
|
fd40a9da17 | ||
|
|
2d28e80052 | ||
|
|
1c24d6a6a2 | ||
|
|
e516b28bde | ||
|
|
9818cfd07b | ||
|
|
50ea75d777 | ||
|
|
8f31c4f834 | ||
|
|
bb2968a41d | ||
|
|
723c2e8421 | ||
|
|
c27baa27b5 | ||
|
|
f461d0160b | ||
|
|
d2266c3647 | ||
|
|
d37c1f7adf | ||
|
|
55cf0f98b8 | ||
|
|
48b6fe6612 | ||
|
|
8ed9a2de50 | ||
|
|
7b4cf06c08 | ||
|
|
9cfc07565c | ||
|
|
f927990504 | ||
|
|
c598410de1 | ||
|
|
564b7fbf56 | ||
|
|
c0697915a2 | ||
|
|
7f9f84ee6a | ||
|
|
8b5012b8f2 | ||
|
|
08305fe2f7 | ||
|
|
768352a7a6 | ||
|
|
97a7893cdd | ||
|
|
0224885de3 | ||
|
|
7c50d68f53 | ||
|
|
4d73996b34 | ||
|
|
30558fb1f4 | ||
|
|
be9dab5724 | ||
|
|
bd2a50aade | ||
|
|
06deb3536b | ||
|
|
0b8df7ea18 | ||
|
|
697dbc9b27 | ||
|
|
8ecb97dc29 | ||
|
|
7d61d43d1a | ||
|
|
96cbca1d4d | ||
|
|
404bacd9b6 | ||
|
|
9714971430 | ||
|
|
23bb87b1cf | ||
|
|
09bdcb78a2 | ||
|
|
2fdb03f9f5 | ||
|
|
92712dc6f1 | ||
|
|
c147af39ca | ||
|
|
e211e2c6ff | ||
|
|
aa63694ef3 | ||
|
|
1848083559 | ||
|
|
c0285a45ec | ||
|
|
bfc35c3905 | ||
|
|
d17678b85f | ||
|
|
5aae32560b | ||
|
|
19ab117a1f | ||
|
|
6eb9f0d2dd | ||
|
|
7a92e2b162 | ||
|
|
f584402826 | ||
|
|
7ed2d33baa | ||
|
|
b6db1673ed | ||
|
|
b095438fde | ||
|
|
3cae671ef4 | ||
|
|
5607b5e151 | ||
|
|
0fa3375425 | ||
|
|
0aff8c72f0 | ||
|
|
9aa130cd64 | ||
|
|
ebe4b44029 | ||
|
|
6742e7f4eb | ||
|
|
86dc4b0ade | ||
|
|
29d2cfd9b6 | ||
|
|
1358930b6e | ||
|
|
46c1199289 | ||
|
|
3e81805971 | ||
|
|
2791cc7cb9 | ||
|
|
3b4e6af5e2 | ||
|
|
15cb9669bb | ||
|
|
0d4a604eef | ||
|
|
2e6fa514ac | ||
|
|
5d1b934b97 | ||
|
|
ebaacedc6c | ||
|
|
e1f6607def | ||
|
|
7b2f775267 | ||
|
|
6e956ef471 | ||
|
|
854f773c65 | ||
|
|
6611e0f23c | ||
|
|
c790396863 | ||
|
|
844cf98ccf | ||
|
|
b6744efbf2 | ||
|
|
ff9839965f | ||
|
|
2fc94cb599 | ||
|
|
88731e553b | ||
|
|
4c41435a11 | ||
|
|
5cae118d74 | ||
|
|
162f02e4b5 | ||
|
|
4551b18fb8 | ||
|
|
ba0f9070ef | ||
|
|
bf8170fec0 | ||
|
|
8fd87fd8a3 | ||
|
|
39695820d7 | ||
|
|
02553cf01d | ||
|
|
b0ecb9508f | ||
|
|
302e035e23 | ||
|
|
fa650e192b | ||
|
|
b1e8e00267 | ||
|
|
ea8344a4bc | ||
|
|
80d2a65a0c | ||
|
|
ea8ad8ba7c | ||
|
|
d613121b76 | ||
|
|
8f126777ad | ||
|
|
85e7073cb9 | ||
|
|
20546b9dd4 | ||
|
|
065bf2b060 | ||
|
|
4bc1ed0a86 | ||
|
|
c502e3e078 | ||
|
|
d581063f1d | ||
|
|
5264d11bba | ||
|
|
e098744327 | ||
|
|
a9a6301839 | ||
|
|
a07f38d97a | ||
|
|
7b74b10bbf | ||
|
|
5048a57d30 | ||
|
|
f4e85f9f90 | ||
|
|
2239fcba22 | ||
|
|
97cd6eb799 | ||
|
|
196c5a2c10 | ||
|
|
89a7626944 | ||
|
|
b7dbf6872b | ||
|
|
41473c9953 | ||
|
|
7fa5ca11c5 | ||
|
|
b7009d8f30 | ||
|
|
48c27ebd25 | ||
|
|
b647cef055 | ||
|
|
00c1079609 | ||
|
|
20e0eb9b1b | ||
|
|
ce175a3c82 | ||
|
|
b15c3321a1 | ||
|
|
98fa8bf604 | ||
|
|
f8c0ea1327 | ||
|
|
1b83a34d99 | ||
|
|
0025b897b3 | ||
|
|
33b3302a61 | ||
|
|
8e2dd360fe | ||
|
|
242c43ed78 | ||
|
|
723da1ace0 | ||
|
|
24cd703277 | ||
|
|
7a1db331ee | ||
|
|
60bdf84f37 | ||
|
|
be435940ac | ||
|
|
4c9e372ef7 | ||
|
|
87144481c9 | ||
|
|
e1883afd7d | ||
|
|
15027bf896 | ||
|
|
b3577c59cb | ||
|
|
c376f07876 | ||
|
|
98da3368d6 | ||
|
|
13ebdb4af0 | ||
|
|
bc3c87ff81 | ||
|
|
9c89cadd3a | ||
|
|
baa33ffeff | ||
|
|
6c7b89c697 | ||
|
|
b271b3b107 | ||
|
|
a31607509e | ||
|
|
e7244b6bfe | ||
|
|
45d634f6ca | ||
|
|
3ec0017c4d | ||
|
|
93a1ec25f7 | ||
|
|
7f1be0dc51 | ||
|
|
9f3547d632 | ||
|
|
22426a49c7 | ||
|
|
d853f89921 | ||
|
|
cb2c3022dc | ||
|
|
18cbf92d47 | ||
|
|
1c4a452842 | ||
|
|
3d111af0fb | ||
|
|
dc732753a6 | ||
|
|
f0de933424 | ||
|
|
26a1c27bef | ||
|
|
9ef04fbe77 | ||
|
|
d474091a79 | ||
|
|
8f4610ec71 | ||
|
|
36d0e5295a | ||
|
|
43dfc43392 | ||
|
|
0f6bfe7b03 | ||
|
|
97b7b229a6 | ||
|
|
dccb479d1a | ||
|
|
23a0e1d2fa | ||
|
|
77764f9005 | ||
|
|
976bf23bb3 | ||
|
|
dbd0effce2 | ||
|
|
784e161371 | ||
|
|
bf3f154014 | ||
|
|
c78d68dc0b | ||
|
|
7970651f41 | ||
|
|
b2f8082120 | ||
|
|
25ee0ec2b7 | ||
|
|
e1b9050cfd | ||
|
|
9b12b03bdc | ||
|
|
82251df74d | ||
|
|
f36b17dc01 | ||
|
|
3a81de2bfd | ||
|
|
092bd16ba4 | ||
|
|
2976eb3244 | ||
|
|
2e71afec00 | ||
|
|
7078f74b2b | ||
|
|
164107c436 | ||
|
|
52961d3330 | ||
|
|
1ea2c8b416 | ||
|
|
46270689c5 | ||
|
|
0e798313e0 | ||
|
|
fa75cb4239 | ||
|
|
b9d2dd1795 | ||
|
|
b75f210b11 | ||
|
|
0c3443e5a3 | ||
|
|
228ee0b005 | ||
|
|
6e62dc3a7c | ||
|
|
1c513c7c99 | ||
|
|
838b44315f | ||
|
|
9056c29702 | ||
|
|
be6c9ed5cd | ||
|
|
474fc9b826 | ||
|
|
735f7c30fc | ||
|
|
d5661dd1ff | ||
|
|
378932de99 | ||
|
|
49df416f71 | ||
|
|
967e7a02ac | ||
|
|
c5eb8c306e | ||
|
|
af40b71951 | ||
|
|
270aacb7d9 | ||
|
|
bdc7641114 | ||
|
|
10ac37ba29 | ||
|
|
a4c24284da | ||
|
|
c9c5b3d9cf | ||
|
|
e98987a4cd | ||
|
|
7c3c305035 | ||
|
|
4db43644c3 | ||
|
|
4755264ed9 | ||
|
|
1bfe62ab54 | ||
|
|
68a6081a2c | ||
|
|
1b2120f78c | ||
|
|
d0933e982a | ||
|
|
bc1d9bd855 | ||
|
|
c1290f55b8 | ||
|
|
82828085f6 | ||
|
|
6a55c3ae36 | ||
|
|
d7054a66a9 | ||
|
|
7b96a0180a | ||
|
|
4986c70d09 | ||
|
|
0515d4b1a9 | ||
|
|
71930df3fa | ||
|
|
3e38f9bc9d | ||
|
|
9dbcea859d | ||
|
|
5763d2083e | ||
|
|
97e82579c3 | ||
|
|
14478e5f15 | ||
|
|
409649cb7b | ||
|
|
24ea6f175b | ||
|
|
7cc592be7a | ||
|
|
8bfc2ee56b | ||
|
|
0456173ce5 | ||
|
|
8531993279 | ||
|
|
5701c3fc12 | ||
|
|
12b608f3ca | ||
|
|
8b96d182a8 | ||
|
|
78b87e60b9 | ||
|
|
3b6817b0f8 | ||
|
|
f3e4246db1 | ||
|
|
23772af8fe | ||
|
|
5af39e116e | ||
|
|
bd7d43561e | ||
|
|
32ac1de4d2 | ||
|
|
30559800cb | ||
|
|
4baf448a5e | ||
|
|
b5471d52ae | ||
|
|
e434fe9c99 | ||
|
|
4a660645d4 | ||
|
|
870d126a8f | ||
|
|
962dbb3dd3 | ||
|
|
53918411a0 | ||
|
|
ed57d748a2 | ||
|
|
b5dd43eab0 | ||
|
|
8b75721494 | ||
|
|
994f30d0fc | ||
|
|
54a1595f2f | ||
|
|
8557ad92bb | ||
|
|
c9474e425d | ||
|
|
aaa76e04d3 | ||
|
|
4815406fe5 | ||
|
|
ea8793fac8 | ||
|
|
d1f6b62606 | ||
|
|
d6859f6168 | ||
|
|
ec3c638f20 | ||
|
|
09f5b9a55d | ||
|
|
5361f2c5df | ||
|
|
ee96370a3b | ||
|
|
1dae62baa7 | ||
|
|
7c8aac7fb0 | ||
|
|
d0eb74c10f | ||
|
|
445b23b874 | ||
|
|
574d0f16a7 | ||
|
|
c0033de00e | ||
|
|
04a6b626c7 | ||
|
|
e98c89daa7 | ||
|
|
df41cfd725 | ||
|
|
3a0f07b0f3 | ||
|
|
06d9bff485 | ||
|
|
06d9e18599 | ||
|
|
b2a05f09cd | ||
|
|
3fa4fbcfb5 | ||
|
|
533dfaf56a | ||
|
|
8b33d98f7b | ||
|
|
749b9dac1c | ||
|
|
5e5d77a577 | ||
|
|
54059b0e57 | ||
|
|
c0b196834f | ||
|
|
0930093773 | ||
|
|
06b291dd8d |
No files matched your search
@@ -7,7 +7,8 @@ updates:
|
||||
directory: "/"
|
||||
target-branch: "dev"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
commit-message:
|
||||
prefix: "📌"
|
||||
labels:
|
||||
@@ -17,7 +18,7 @@ updates:
|
||||
target-branch: "dev"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "sunday"
|
||||
day: "wednesday"
|
||||
commit-message:
|
||||
prefix: "👷"
|
||||
labels:
|
||||
|
||||
@@ -12,33 +12,40 @@ jobs:
|
||||
with:
|
||||
ref: "${{ github.head_ref }}"
|
||||
- name: Install dependencies and Build Theme
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
- run: npm install
|
||||
- run: npm run assets
|
||||
- name: Commit and push Chart.js changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
branch: "${{ github.head_ref }}"
|
||||
push_options: "--dry-run"
|
||||
file_pattern: "assets/lib/chart/*"
|
||||
commit_message: "📦 Update packaged ChartJS"
|
||||
- name: Commit Fuse changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
branch: "${{ github.head_ref }}"
|
||||
push_options: "--dry-run"
|
||||
file_pattern: "assets/lib/fuse/*"
|
||||
commit_message: "📦 Update packaged FuseJS"
|
||||
- name: Commit KaTeX changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
branch: "${{ github.head_ref }}"
|
||||
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@v4
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
branch: "${{ github.head_ref }}"
|
||||
push_options: "--dry-run"
|
||||
|
||||
@@ -7,7 +7,10 @@ jobs:
|
||||
steps:
|
||||
|
||||
- name: Hugo setup
|
||||
uses: peaceiris/actions-hugo@v2.6.0
|
||||
uses: peaceiris/actions-hugo@v3.0.0
|
||||
with:
|
||||
hugo-version: 0.120.4
|
||||
extended: true
|
||||
env:
|
||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
||||
|
||||
|
||||
@@ -9,7 +9,10 @@ jobs:
|
||||
steps:
|
||||
|
||||
- name: Hugo setup
|
||||
uses: peaceiris/actions-hugo@v2.6.0
|
||||
uses: peaceiris/actions-hugo@v3.0.0
|
||||
with:
|
||||
hugo-version: 0.120.4
|
||||
extended: true
|
||||
env:
|
||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
name: Update Hugo version
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
updateBlowfish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: dev
|
||||
submodules: true # Fetch Hugo themes (true OR recursive)
|
||||
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||
|
||||
- name: Fetch release version
|
||||
id: fetch-release
|
||||
run: |
|
||||
curl -sL https://api.github.com/repos/gohugoio/hugo/releases/latest | \
|
||||
jq -r ".tag_name" > release-versions/hugo-latest.txt
|
||||
|
||||
- name: Check for modified files
|
||||
id: git-check
|
||||
run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
|
||||
|
||||
- name: Update config.toml
|
||||
id: update-config
|
||||
if: steps.git-check.outputs.modified == 'true'
|
||||
run: |
|
||||
cat release-versions/hugo-latest.txt | \
|
||||
while read version; do sed -i'' -E "s/(max = \")[0-9]+\.[0-9]+\.[0-9]+(\")/\1${version#v}\2/g" config.toml; done
|
||||
|
||||
- name: Create Pull Request
|
||||
if: steps.git-check.outputs.modified == 'true'
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
with:
|
||||
commit-message: Update Hugo supported version
|
||||
title: ⚙️ Update Hugo supported version
|
||||
body: |
|
||||
Updates [Hugo][1] support
|
||||
|
||||
Auto-generated by [create-pull-request][2]
|
||||
|
||||
[1]: https://github.com/gohugoio/hugo
|
||||
[2]: https://github.com/peter-evans/create-pull-request
|
||||
labels: dependencies, automated pr
|
||||
branch: hugo-new-version
|
||||
base: dev
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
submodules: recursive
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v3
|
||||
uses: actions/configure-pages@v5
|
||||
- name: Build with Hugo
|
||||
env:
|
||||
# For maximum backward compatibility with Hugo modules
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
run: |
|
||||
hugo --minify -s exampleSite --themesDir ../.. -d ../docs --baseURL https://nunocoracao.github.io/blowfish/
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ./docs
|
||||
|
||||
@@ -65,4 +65,4 @@ jobs:
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v2
|
||||
uses: actions/deploy-pages@v4
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: 'This issue will be closed since it has been stale for 60 days.'
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2.6.0
|
||||
uses: peaceiris/actions-hugo@v3.0.0
|
||||
with:
|
||||
hugo-version: "latest"
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
# Hugo and Blowfish
|
||||
public/
|
||||
resources/
|
||||
exampleSite/resources/
|
||||
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
@@ -24,3 +29,6 @@ node_modules
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
.idea
|
||||
.Ulysses-Group.plist
|
||||
.Ulysses-Settings.plist
|
||||
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"alert": {
|
||||
"prefix": ["BFS-alert", "HSC-alert", "alert"],
|
||||
"body": [
|
||||
"{{< alert ${1| ,icon=\"iconName\"|}${2| , iconColor=\"iconColor\"|}${3| , cardColor=\"cardColor\"|}${4| , textColor=\"textColor\"|} >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /alert >}}"
|
||||
],
|
||||
"description": "Outputs its contents as a stylised message box within your article. Blowfish alert Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#alert ",
|
||||
},
|
||||
"article": {
|
||||
"prefix": ["BFS-article", "HSC-article", "article"],
|
||||
"body": [
|
||||
"{{< article link=\"${1:RelPermalink_Of_Target_Article}\">}}",
|
||||
"$0"
|
||||
],
|
||||
"description": " Embed a single article into a markdown file. The link to the file should be the .RelPermalink of the file to be embedded. Blowfish article Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#article ",
|
||||
},
|
||||
"badge": {
|
||||
"prefix": ["BFS-badge", "HSC-badge", "badge"],
|
||||
"body": [
|
||||
"{{< badge >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /badge >}}"
|
||||
],
|
||||
"description": "Outputs a styled badge component which is useful for displaying metadata. Blowfish badge Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#badge ",
|
||||
},
|
||||
"button": {
|
||||
"prefix": ["BFS-button", "HSC-button", "button"],
|
||||
"body": [
|
||||
"{{< button href=\"${1:url}\" target=\"${2:target}\" >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /button >}}"
|
||||
],
|
||||
"description": "Output a styled button component which can be used to highlight a primary action. Blowfish button Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#button ",
|
||||
},
|
||||
"carousel": {
|
||||
"prefix": ["BFS-carousel", "HSC-carousel", "carousel"],
|
||||
"body": [
|
||||
"{{< carousel images=\"{${1:regex matching images }}\" aspectRatio=\"${2|16-9,21-9,32-9|}\" interval=\"${3:2000}\" >}}",
|
||||
"$0"
|
||||
],
|
||||
"description": "Showcase multiple images in an interactive and visually appealing way. Blowfish carousel Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#carousel ",
|
||||
},
|
||||
"chart-bar": {
|
||||
"prefix": ["BFS-chart-bar", "HSC-chart-bar", "chart-bar"],
|
||||
"body": [
|
||||
"{{< chart >}} $0<!-- https://www.chartjs.org/docs/latest/samples/information.html -->",
|
||||
"type: 'bar',\r\ndata: {\r\n labels: ['January', 'February', 'March'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [65, 59, 80],\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 0.2)',\r\n 'rgba(255, 159, 64, 0.2)',\r\n 'rgba(255, 205, 86, 0.2)'\r\n ],\r\n borderColor: [ \r\n 'rgb(255, 99, 132)',\r\n 'rgb(255, 159, 64)',\r\n 'rgb(255, 205, 86)'\r\n ],\r\n borderWidth: 1\r\n }]\r\n}"
|
||||
"{{< /chart >}}"
|
||||
],
|
||||
"description": "Use the Chart.js library to embed charts into articles using simple structured data. Blowfish chart Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#chart ",
|
||||
},
|
||||
"chart-doughnut": {
|
||||
"prefix": ["BFS-chart-doughnut", "HSC-chart-doughnut", "chart-doughnut"],
|
||||
"body": [
|
||||
"{{< chart >}} $0<!-- https://www.chartjs.org/docs/latest/samples/information.html -->",
|
||||
"type: 'doughnut',\r\ndata: {\r\n labels: ['Red', 'Blue', 'Yellow'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [300, 50, 100],\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 0.7)',\r\n 'rgba(54, 162, 235, 0.7)',\r\n 'rgba(255, 205, 86, 0.7)'\r\n ],\r\n borderWidth: 0,\r\n hoverOffset: 4\r\n }]\r\n}",
|
||||
"{{< /chart >}}"
|
||||
],
|
||||
"description": "Use the Chart.js library to embed charts into articles using simple structured data. Blowfish chart Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#chart ",
|
||||
},
|
||||
"chart-line": {
|
||||
"prefix": ["BFS-chart-line", "HSC-chart-line", "chart-line"],
|
||||
"body": [
|
||||
"{{< chart >}} $0<!-- https://www.chartjs.org/docs/latest/samples/information.html -->",
|
||||
"type: 'line',\r\ndata: {\r\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [65, 59, 80, 81, 56, 55, 40],\r\n tension: 0.2\r\n }]\r\n}",
|
||||
"{{< /chart >}}"
|
||||
],
|
||||
"description": "Use the Chart.js library to embed charts into articles using simple structured data. Blowfish chart Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#chart ",
|
||||
},
|
||||
"chart": {
|
||||
"prefix": ["BFS-chart", "HSC-chart", "chart"],
|
||||
"body": [
|
||||
"{{< chart >}} $0<!-- https://www.chartjs.org/docs/latest/samples/information.html -->",
|
||||
"type: 'bar',\r\ndata: {\r\n labels: ['January', 'February', 'March'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [65, 59, 80],\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 0.2)',\r\n 'rgba(255, 159, 64, 0.2)',\r\n 'rgba(255, 205, 86, 0.2)'\r\n ],\r\n borderColor: [ \r\n 'rgb(255, 99, 132)',\r\n 'rgb(255, 159, 64)',\r\n 'rgb(255, 205, 86)'\r\n ],\r\n borderWidth: 1\r\n }]\r\n}",
|
||||
"type: 'doughnut',\r\ndata: {\r\n labels: ['Red', 'Blue', 'Yellow'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [300, 50, 100],\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 0.7)',\r\n 'rgba(54, 162, 235, 0.7)',\r\n 'rgba(255, 205, 86, 0.7)'\r\n ],\r\n borderWidth: 0,\r\n hoverOffset: 4\r\n }]\r\n}",
|
||||
"type: 'line',\r\ndata: {\r\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\r\n datasets: [{\r\n label: 'My First Dataset',\r\n data: [65, 59, 80, 81, 56, 55, 40],\r\n tension: 0.2\r\n }]\r\n}",
|
||||
"{{< /chart >}}"
|
||||
],
|
||||
"description": "Use the Chart.js library to embed charts into articles using simple structured data. Blowfish chart Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#chart ",
|
||||
},
|
||||
"figure": {
|
||||
"prefix": ["BFS-figure", "HSC-figure", "figure"],
|
||||
"body": [
|
||||
"{{< figure src=\"${1:asset-src}\"${2| , alt=\"2:alt text\"|}${3| , caption=\"MD String to display beneath asset\"|}${4| , class=\"CSS Class to add to asset\"|}${5| , href=\"url to link asset to\"|}${6| , nozoom=true, nozoom=false|}${7| , default=true|} >}}",
|
||||
],
|
||||
"description": "Add images to content. Blowfish figure Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#figure ",
|
||||
},
|
||||
"gallery": {
|
||||
"prefix": ["BFS-gallery", "HSC-gallery", "gallery"],
|
||||
"body": [
|
||||
"{{< gallery >}}",
|
||||
"<img src=\"image-uri-here\" class=\"${1|grid-w5,grid-w10,grid-w15,grid-w20,grid-w25,grid-w30,grid-w33,grid-w35,grid-w40,grid-w45,grid-w50,grid-w55,grid-w60,grid-w65,grid-w66,grid-w70,grid-w75,grid-w80,grid-w85,grid-w90,grid-w95,grid-w100|}\" />",
|
||||
"<img src=\"image-uri-here\" class=\"grid-w50 md:grid-w33 xl:grid-w25\" />",
|
||||
"$0",
|
||||
"{{< /gallery >}}"
|
||||
],
|
||||
"description": "Showcase multiple images at once, in a responsive manner with more varied and interesting layouts. Blowfish gallery Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#gallery ",
|
||||
},
|
||||
"github": {
|
||||
"prefix": ["BFS-github", "HSC-github", "github"],
|
||||
"body": [
|
||||
"{{< github repo=\"${1:nunocoracao/blowfish}\" >}}$0",
|
||||
],
|
||||
"description": "Quickly link a github repository. Blowfish github Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#github ",
|
||||
},
|
||||
"gitlab": {
|
||||
"prefix": ["BFS-gitlab", "HSC-gitlab", "gitlab"],
|
||||
"body": [
|
||||
"{{< gitlab projectID=\"${1:278964}\"${2| , baseURL=\"https://gitlab.com\"|}$0 >}}",
|
||||
],
|
||||
"description": "Quickly link a GitLab Project. Blowfish gitlab Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#gitlab ",
|
||||
},
|
||||
"icon": {
|
||||
"prefix": ["BFS-icon", "HSC-icon", "icon"],
|
||||
"body": [
|
||||
"{{< icon \"${1:star}$0\" >}}",
|
||||
],
|
||||
"description": "Output an SVG icon. Blowfish icon Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#icon ",
|
||||
},
|
||||
"katex": {
|
||||
"prefix": ["BFS-katex", "HSC-katex", "katex"],
|
||||
"body": [
|
||||
"{{< katex >}}",
|
||||
"$0"
|
||||
],
|
||||
"description": "Add mathematical expressions to article content using the KaTeX package. Blowfish katex Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#katex ",
|
||||
},
|
||||
"lead": {
|
||||
"prefix": ["BFS-lead", "HSC-lead", "lead"],
|
||||
"body": [
|
||||
"{{< lead >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /lead >}}"
|
||||
],
|
||||
"description": "Bring emphasis to the start of an article. Blowfish lead Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#lead ",
|
||||
},
|
||||
"list": {
|
||||
"prefix": ["BFS-list", "HSC-list", "list"],
|
||||
"body": [
|
||||
"{{< list limit=\"${1:5}\"${2| , title=\"Recent\"|}${3| , where=\"Type\"|}${4| ,value=\"article\"|} >}}",
|
||||
"{{/* The where and value values are used in the following query where .Site.RegularPages $where $value in the code of the shortcode. See Hugo Docs: https://gohugo.io/variables/page/ */}} $0",
|
||||
],
|
||||
"description": "Display a list of recent articles. Blowfish list Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#list ",
|
||||
},
|
||||
"ltr": {
|
||||
"prefix": ["BFS-ltr", "HSC-ltr", "ltr"],
|
||||
"body": [
|
||||
"{{% ltr %}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{% /ltr %}}"
|
||||
],
|
||||
"description": "Allows you to mix your contents' reading direction. Blowfish ltr Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#ltr ",
|
||||
},
|
||||
"mermaid": {
|
||||
"prefix": ["BFS-mermaid", "HSC-mermaid", "mermaid"],
|
||||
"body": [
|
||||
"{{< mermaid >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /mermaid >}}"
|
||||
],
|
||||
"description": "Draw detailed diagrams and visualisations using text. Blowfish mermaid Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#mermaid ",
|
||||
},
|
||||
"rtl": {
|
||||
"prefix": ["BFS-rtl", "HSC-rtl", "rtl"],
|
||||
"body": [
|
||||
"{{% rtl %}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{% /rtl %}}"
|
||||
],
|
||||
"description": "allows you to mix your contents. Blowfish rtl Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#rtl ",
|
||||
},
|
||||
"swatches": {
|
||||
"prefix": ["BFS-swatches", "HSC-swatches", "swatches"],
|
||||
"body": [
|
||||
"{{< swatches \"#${1:00ff00}\"${2| , \"#0000FF\"|}${3| , \"#FF00FF\"|} >}}$0",
|
||||
],
|
||||
"description": "Output a set of up to three different colors. Blowfish swatches Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#swatches ",
|
||||
},
|
||||
"timeline": {
|
||||
"prefix": ["BFS-timeline", "HSC-timeline", "timeline"],
|
||||
"body": [
|
||||
"{{< timeline >}}",
|
||||
"{{< timelineItem ${1| , icon=\"star\"|}${2| , header=\"Header\"|}${3| , badge=\"Badge Text\"|}${4| , subheader=\"SubHeader\"|} >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /timelineItem >}}",
|
||||
"{{< /timeline >}}"
|
||||
],
|
||||
"description": "Create a linear visual timeline that can be used in different use-cases. Blowfish timeline Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#timeline ",
|
||||
},
|
||||
"timelineItem": {
|
||||
"prefix": ["BFS-timelineItem", "HSC-timelineItem", "timelineItem"],
|
||||
"body": [
|
||||
"{{< timelineItem ${1| , icon=\"star\"|}${2| , header=\"Header\"|}${3| , badge=\"Badge Text\"|}${4| , subheader=\"SubHeader\"|} >}}",
|
||||
"${TM_SELECTED_TEXT:${CLIPBOARD}}$0",
|
||||
"{{< /timelineItem >}}",
|
||||
],
|
||||
"description": "Create an element within a timeline. Blowfish timelineItem Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#timeline ",
|
||||
},
|
||||
"typeit": {
|
||||
"prefix": ["BFS-typeit", "HSC-typeit", "typeit"],
|
||||
"body": [
|
||||
"${1:Type-Initial-String-then-press-tab}\r{{< typeit tag=\"${2|div,span,aside,p,header,footer,main,section,h1,h2,h3,h4,h5,h6,hgroup,code,kbd,q,samp,portal|}\"${3| , classList=\"rounded\"|} initialString=\"${1:Type-Initial-Text-and-hit-tab}\"${4| , speed=\"19\"|}${5| , lifeLike=true, lifeLike=false|}${6| , startDelay=\"250\"|}${7| , breakLines=true, breakLines=false|}${8| , waitUntilVisible=true, waitUntilVisible=false|}${9| , loop=true, loop=false|} >}}",
|
||||
"${TM_SELECTED_TEXT:$CLIPBOARD} $0",
|
||||
"{{< /typeit >}}"
|
||||
],
|
||||
"description": "Typewriter-Like text. Blowfish typeit Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#typeit https://www.typeitjs.com/docs/vanilla/usage/ ",
|
||||
},
|
||||
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
# [Making VSCode Snippets][vscode-snippets-docs]
|
||||
|
||||
This info sourced from: [VSCode's docs][vscode-snippets-docs]
|
||||
|
||||
A useful bit of info is that VSCode Snippets are intended to be compatible with [textmate code snippets](https://macromates.com/textmate/manual/snippets)
|
||||
|
||||
## [Creating your own](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets)
|
||||
|
||||
### [File template snippets](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_file-template-snippets)
|
||||
|
||||
You can add the `isFileTemplate` attribute to your snippet's definition if the snippet is intended to populate or replace a file's contents. File template snippets are displayed in a dropdown when you run the **Snippets: Populate File from Snippet** command in a new or existing file.
|
||||
|
||||
## [Snippet scope](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-scope)
|
||||
|
||||
Snippets are scoped so that only relevant snippets are suggested. Snippets can be scoped by either:
|
||||
|
||||
1. the **language(s)** to which snippets are scoped (possibly all)
|
||||
2. the **project(s)** to which snippets are scoped (probably all)
|
||||
|
||||
### [Language snippet scope](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_language-snippet-scope)
|
||||
|
||||
Every snippet is scoped to one, several, or all ("global") languages based on whether it is defined in:
|
||||
|
||||
1. a **language** snippet file
|
||||
2. a **global** snippet file
|
||||
|
||||
Single-language user-defined snippets are defined in a specific language's snippet file (for example `javascript.json`), which you can access by language identifier through **Snippets: Configure User Snippets**. A snippet is only accessible when editing the language for which it is defined.
|
||||
|
||||
Multi-language and global user-defined snippets are all defined in "global" snippet files (JSON with the file suffix `.code-snippets`), which is also accessible through **Snippets: Configure User Snippets**. In a global snippets file, a snippet definition may have an additional `scope` property that takes one or more [language identifiers](https://code.visualstudio.com/docs/languages/identifiers), which makes the snippet available only for those specified languages. If no `scope`property is given, then the global snippet is available in **all** languages.
|
||||
|
||||
Most user-defined snippets are scoped to a single language, and so are defined in a language-specific snippet file.
|
||||
|
||||
### [Project snippet scope](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_project-snippet-scope)
|
||||
|
||||
You can also have a global snippets file (JSON with file suffix `.code-snippets`) scoped to your project. Project-folder snippets are created with the **New Snippets file for ''...** option in the **Snippets: Configure User Snippets** dropdown menu and are located at the root of the project in a `.vscode` folder. Project snippet files are useful for sharing snippets with all users working in that project. Project-folder snippets are similar to global snippets and can be scoped to specific languages through the `scope` property.
|
||||
|
||||
|
||||
## [Snippet syntax](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax)
|
||||
|
||||
The `body` of a snippet can use special constructs to control cursors and the text being inserted. The following are supported features and their syntaxes:
|
||||
|
||||
### [Tabstops](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_tabstops)
|
||||
|
||||
With tabstops, you can make the editor cursor move inside a snippet. Use `$1`, `$2` to specify cursor locations. The number is the order in which tabstops will be visited, whereas `$0` denotes the final cursor position. Multiple occurrences of the same tabstop are linked and updated in sync.
|
||||
|
||||
### [Placeholders](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholders)
|
||||
|
||||
Placeholders are tabstops with values, like `${1:foo}`. The placeholder text will be inserted and selected such that it can be easily changed.
|
||||
Placeholders can be nested, like `${1:another ${2:placeholder}}`.
|
||||
|
||||
### [Choice](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_choice)
|
||||
|
||||
Placeholders can have choices as values. The syntax is a comma-separated enumeration of values, enclosed with the pipe-character, for example `${1|one,two,three|}`. When the snippet is inserted and the placeholder selected, choices will prompt the user to pick one of the values.
|
||||
|
||||
### [Variables](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables)
|
||||
|
||||
With `$name` or `${name:default}`, you can insert the value of a variable. When a variable isn't set, its **default** or the empty string is inserted. When a variable is unknown (that is, its name isn't defined) the name of the variable is inserted and it is transformed into a placeholder.
|
||||
|
||||
The following variables can be used:
|
||||
|
||||
`TM_SELECTED_TEXT`
|
||||
: The currently selected text or the empty string
|
||||
|
||||
`TM_CURRENT_LINE`
|
||||
: The contents of the current line
|
||||
|
||||
`TM_CURRENT_WORD`
|
||||
: The contents of the word under cursor or the empty string
|
||||
|
||||
`TM_LINE_INDEX`
|
||||
: The zero-index based line number
|
||||
|
||||
`TM_LINE_NUMBER`
|
||||
: The one-index based line number
|
||||
|
||||
`TM_FILENAME`
|
||||
: The filename of the current document
|
||||
|
||||
`TM_FILENAME_BASE`
|
||||
: The filename of the current document without its extensions
|
||||
|
||||
`TM_DIRECTORY`
|
||||
: The directory of the current document
|
||||
|
||||
`TM_FILEPATH`
|
||||
: The full file path of the current document
|
||||
|
||||
`RELATIVE_FILEPATH`
|
||||
: The relative (to the opened workspace or folder) file path of the current document
|
||||
|
||||
`CLIPBOARD`
|
||||
: The contents of your clipboard
|
||||
|
||||
`WORKSPACE_NAME`
|
||||
: The name of the opened workspace or folder
|
||||
|
||||
`WORKSPACE_FOLDER`
|
||||
: The path of the opened workspace or folder
|
||||
|
||||
`CURSOR_INDEX`
|
||||
: The zero-index based cursor number
|
||||
|
||||
`CURSOR_NUMBER`
|
||||
: The one-index based cursor number
|
||||
|
||||
#### Inserting the current date and time:
|
||||
|
||||
`CURRENT_YEAR`
|
||||
: The current year
|
||||
|
||||
`CURRENT_YEAR_SHORT`
|
||||
: The current year's last two digits
|
||||
|
||||
`CURRENT_MONTH`
|
||||
: The month as two digits (example '02')
|
||||
|
||||
`CURRENT_MONTH_NAME`
|
||||
: The full name of the month (example 'July')
|
||||
|
||||
`CURRENT_MONTH_NAME_SHORT`
|
||||
: The short name of the month (example 'Jul')
|
||||
|
||||
`CURRENT_DATE`
|
||||
: The day of the month as two digits (example '08')
|
||||
|
||||
`CURRENT_DAY_NAME`
|
||||
: The name of day (example 'Monday')
|
||||
|
||||
`CURRENT_DAY_NAME_SHORT`
|
||||
: The short name of the day (example 'Mon')
|
||||
|
||||
`CURRENT_HOUR`
|
||||
: The current hour in 24-hour clock format
|
||||
|
||||
`CURRENT_MINUTE`
|
||||
: The current minute as two digits
|
||||
|
||||
`CURRENT_SECOND`
|
||||
: The current second as two digits
|
||||
|
||||
`CURRENT_SECONDS_UNIX`
|
||||
: The number of seconds since the Unix epoch
|
||||
|
||||
`CURRENT_TIMEZONE_OFFSET`
|
||||
: The current UTC time zone offset as +HH:MM or -HH:MM (example -07:00).
|
||||
|
||||
|
||||
#### Inserting random values:
|
||||
|
||||
RANDOM 6 random Base-10 digits
|
||||
RANDOM_HEX 6 random Base-16 digits
|
||||
UUID A Version 4 UUID
|
||||
#### Inserting line or block comments, honoring the current language:
|
||||
|
||||
`BLOCK_COMMENT_START`
|
||||
: Example output: in PHP `/*` or in HTML `<!--`
|
||||
|
||||
`BLOCK_COMMENT_END`
|
||||
: Example output: in PHP `*/` or in HTML `-->`
|
||||
|
||||
`LINE_COMMENT`
|
||||
: Example output: in PHP `//`
|
||||
|
||||
|
||||
### [Variable transforms](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variable-transforms)
|
||||
|
||||
Transformations allow you to modify the value of a variable before it is inserted. The definition of a transformation consists of three parts:
|
||||
|
||||
1. A regular expression that is matched against the value of a variable, or the empty string when the variable cannot be resolved.
|
||||
2. A "format string" that allows to reference matching groups from the regular expression. The format string allows for conditional inserts and simple modifications.
|
||||
3. Options that are passed to the regular expression.
|
||||
|
||||
The following example inserts the name of the current file without its ending, so from `foo.txt` it makes `foo`.
|
||||
|
||||
```
|
||||
${TM_FILENAME/(.*)\\..+$/$1/}
|
||||
| | | |
|
||||
| | | |-> no options
|
||||
| | |
|
||||
| | |-> references the contents of the first
|
||||
| | capture group
|
||||
| |
|
||||
| |-> regex to capture everything before
|
||||
| the final `.suffix`
|
||||
|
|
||||
|-> resolves to the filename
|
||||
```
|
||||
|
||||
### [Placeholder-Transform](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholdertransform)
|
||||
|
||||
Like a Variable-Transform, a transformation of a placeholder allows changing the inserted text for the placeholder when moving to the next tab stop. The inserted text is matched with the regular expression and the match or matches - depending on the options - are replaced with the specified replacement format text. Every occurrence of a placeholder can define its own transformation independently using the value of the first placeholder. The format for Placeholder-Transforms is the same as for Variable-Transforms.
|
||||
|
||||
### [Transform examples](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_transform-examples)
|
||||
|
||||
The examples are shown within double quotes, as they would appear inside a snippet body, to illustrate the need to double escape certain characters. Sample transformations and the resulting output for the filename `example-123.456-TEST.js`.
|
||||
|
||||
|Example|Output|Explanation|
|
||||
|---|---|---|
|
||||
|`"${TM_FILENAME/[\\.]/_/}"`|`example-123_456-TEST.js`|Replace the first `.` with `_`|
|
||||
|`"${TM_FILENAME/[\\.-]/_/g}"`|`example_123_456_TEST_js`|Replace each `.` or `-`with `_`|
|
||||
|`"${TM_FILENAME/(.*)/${1:/upcase}/}"`|`EXAMPLE-123.456-TEST.JS`|Change to all uppercase|
|
||||
|`"${TM_FILENAME/[^0-9^a-z]//gi}"`|`example123456TESTjs`|Remove non-alphanumeric characters|
|
||||
|
||||
### [Grammar](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_grammar)
|
||||
|
||||
Below is the EBNF ([extended Backus-Naur form](https://en.wikipedia.org/wiki/Extended_Backus-Naur_form)) for snippets. With `\` (backslash), you can escape `$`, `}`, and `\`. Within choice elements, the backslash also escapes comma and pipe characters.
|
||||
|
||||
```
|
||||
any ::= tabstop | placeholder | choice | variable | text
|
||||
tabstop ::= '$' int
|
||||
| '${' int '}'
|
||||
| '${' int transform '}'
|
||||
placeholder ::= '${' int ':' any '}'
|
||||
choice ::= '${' int '|' text (',' text)* '|}'
|
||||
variable ::= '$' var | '${' var '}'
|
||||
| '${' var ':' any '}'
|
||||
| '${' var transform '}'
|
||||
transform ::= '/' regex '/' (format | text)+ '/' options
|
||||
format ::= '$' int | '${' int '}'
|
||||
| '${' int ':' '/upcase' | '/downcase' | '/capitalize' | '/camelcase' | '/pascalcase' '}'
|
||||
| '${' int ':+' if '}'
|
||||
| '${' int ':?' if ':' else '}'
|
||||
| '${' int ':-' else '}' | '${' int ':' else '}'
|
||||
regex ::= JavaScript Regular Expression value (ctor-string)
|
||||
options ::= JavaScript Regular Expression option (ctor-options)
|
||||
var ::= [_a-zA-Z] [_a-zA-Z0-9]*
|
||||
int ::= [0-9]+
|
||||
text ::= .*
|
||||
if ::= text
|
||||
else ::= text
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
[vscode-snippets-docs]: <https://code.visualstudio.com/docs/editor/userdefinedsnippets>
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
# [Textmate Code Snippets](https://macromates.com/textmate/manual/snippets)
|
||||
|
||||
|
||||
A snippet is a piece of text that you would like to insert in your document. It can include code to run at insertion time, variables (like selected text), tab stops/placeholders for missing information (which you can tab through after insertion) and perform transformations on the data which you enter in the placeholders.
|
||||
|
||||
Snippets are created in the bundle editor and are often assigned a tab trigger for easy insertion.
|
||||
|
||||
## Grammar
|
||||
|
||||
Snippets support the following constructs:
|
||||
|
||||
```
|
||||
$«int»
|
||||
${«int»}
|
||||
${«int»:«any»}
|
||||
${«int»/«regexp»/«format»/«options»}
|
||||
${«int»|«choice 1»,…,«choice n»|}
|
||||
`«code»`
|
||||
«format»
|
||||
```
|
||||
|
||||
In the above, `«format»` is a format string and `«any»` refers to any of the above.
|
||||
|
||||
The next sections will give examples of each of the above.
|
||||
|
||||
## Plain Text
|
||||
|
||||
In the simplest case, you can use snippets to insert text that you do not want to type again and again, either because you type it a lot, or because the actual text to insert is hard to remember (like your bank account details or the HTML entities for the Apple modifier keys).
|
||||
|
||||
If you use snippets to insert plain text there is only one thing you should be aware of: `$` and `` ` `` are reserved characters. So if you want to insert one of these, prefix it with an escape (i.e. `\$`). An escape not followed by one of these two characters (or followed by another escape) will be inserted as a literal character.
|
||||
|
||||
## Variables
|
||||
|
||||
You can use any of TextMate’s defined variables by prefixing the name of the variable with `$`. All the normal dynamic variables are supported, the most useful probably being `TM_SELECTED_TEXT`. If for example we want to create a snippet which wraps the selection in a LaTeX `\textbf` command, we can make a snippet which is:
|
||||
|
||||
```
|
||||
\textbf{$TM_SELECTED_TEXT}
|
||||
```
|
||||
|
||||
If no text is selected the variable will not be set, so nothing will be inserted in its place. We can provide a default value by using format string syntax: `${«variable»:«default value»}`. For example:
|
||||
|
||||
```
|
||||
\textbf{${TM_SELECTED_TEXT:no text was selected}}
|
||||
```
|
||||
|
||||
The default value can itself contain variables or shell code. If you want the default text to contain a `}`, you need to escape it. But all other characters are used verbatim.
|
||||
|
||||
Variables also support regular expression replacements using this syntax: `${«variable»/«regexp»/«format»/«options»}`. If the variable is not set the replacement will be performed on the empty string. For example, to prepend a bullet to each non-empty line in the selection (and insert that) we can do:
|
||||
|
||||
```
|
||||
${TM_SELECTED_TEXT/^.+$/• $0/g}
|
||||
```
|
||||
|
||||
## Interpolated Shell Code
|
||||
|
||||
You can use backticks to have shell code executed when the snippet is inserted. The result from running the code gets inserted into the snippet, though with the last newline in the result removed (if present). So for example to create a snippet that wraps the selection in an HTML link, where the URL of that link comes from the clipboard, we can do:
|
||||
|
||||
```
|
||||
<a href="`pbpaste`">$TM_SELECTED_TEXT</a>
|
||||
```
|
||||
|
||||
Since this is normal shell code, we can write a small program. For example we can let it verify that the clipboard contains only a single line of text like this:
|
||||
|
||||
```
|
||||
<a href="`
|
||||
if [[ $(pbpaste|wc -l) -eq 0 ]]
|
||||
then pbpaste
|
||||
else echo http://example.com/
|
||||
fi
|
||||
`">$TM_SELECTED_TEXT</a>
|
||||
```
|
||||
|
||||
Inside shell code, the only character you need to escape is the backtick.
|
||||
|
||||
## Tab Stops
|
||||
|
||||
After insertion, the caret will be placed after the last character of the snippet. This is not always desirable and we can change that by using `$0` to mark where we want the caret to be. So if for example we make an HTML `div`-snippet and want the caret to end between the opening and closing tags, we could make it like this:
|
||||
|
||||
```
|
||||
<div>
|
||||
$0
|
||||
</div>
|
||||
```
|
||||
|
||||
Often though we want to fill in text in several places in the snippet. Multiple tab stops can be provided by inserting `$1`-`$n`. The caret will start at `$1`, then when pressing tab it will move to `$2` and `$3` on next tab etc. until there are no more tab stops. If you do not explicitly set `$0`, the caret will be at the end of the snippet.
|
||||
|
||||
So we could for example change the above to:
|
||||
|
||||
```
|
||||
<div$1>
|
||||
$0
|
||||
</div>
|
||||
```
|
||||
|
||||
This allows us to fill in an argument and then tab on to `$0`.
|
||||
|
||||
## Placeholders
|
||||
|
||||
Like variables, tab stops can also have default values (and are generally referred to as placeholders when they do). The syntax is the same: `${«tab stop»:«default value»}`. And the default value can contain both text, shell code and other placeholders. So we can refine the previous example further:
|
||||
|
||||
```
|
||||
<div${1: id="${2:some_id}"}>
|
||||
$0
|
||||
</div>
|
||||
```
|
||||
|
||||
Inserting this snippet will insert a `div` tag with the `id` argument selected and we can then decide either to overtype the argument (i.e. delete it) and press tab again to reach `$0`, or we can press tab immediately to get to the second tab stop (the value part of the argument) and edit that.
|
||||
|
||||
When you edit the placeholder text, any embedded tab stops will be removed.
|
||||
|
||||
## Mirrors
|
||||
|
||||
There are times when you need to provide the same value several places in the inserted text and in these situations you can re-use the tab stop to signal that you want it mirrored at that location. So for example to create a LaTeX environment with a snippet, we can use:
|
||||
|
||||
```
|
||||
\begin{${1:enumerate}}
|
||||
$0
|
||||
\end{$1}
|
||||
```
|
||||
|
||||
After inserting this snippet, `enumerate` will be selected and if we edit it, the changes will be reflected in the `\end` part as well.
|
||||
|
||||
## Transformations
|
||||
|
||||
There are situations where we want our placeholder text mirrored but with slight changes or where we want some text to appear depending on the value/presence of a placeholder.
|
||||
|
||||
We can accomplish this by doing a regular expression substitution on the placeholder text (when mirroring it). The syntax for this is: `${«tab stop»/«regexp»/«format»/«options»}`.
|
||||
|
||||
As an example, the Objective-C getter/setter methods (prior to the `@property` keyword) often look like this (in the [thread-unsafe form](http://ticket.macromates.com/show?ticket_id=E11D9EAF)):
|
||||
|
||||
```
|
||||
- (id)foo
|
||||
{
|
||||
return foo;
|
||||
}
|
||||
|
||||
- (void)setFoo:(id)aValue
|
||||
{
|
||||
[foo autorelease];
|
||||
foo = [aValue retain];
|
||||
}
|
||||
```
|
||||
|
||||
In the format string we can use `${«var»:/upcase}` to uppercase the matched character, so a snippet that only asks for the name of the instance variable once could look like this:
|
||||
|
||||
```
|
||||
- (${1:id})${2:foo}
|
||||
{
|
||||
return $2;
|
||||
}
|
||||
|
||||
- (void)set${2/./${0:/upcase}/}:($1)aValue
|
||||
{
|
||||
[$2 autorelease];
|
||||
$2 = [aValue retain];
|
||||
}
|
||||
```
|
||||
|
||||
We can also use conditional insertions in the format string (`${«var»:+«if-set»}`) to make decisions. For example if we create a snippet for a method we can let the return type decide whether or not the method should include a `return` statement like this:
|
||||
|
||||
```
|
||||
- (${1:void})${2:methodName}
|
||||
{${1/void$|(.+)/${1:+\n\treturn nil;}/}
|
||||
}
|
||||
```
|
||||
|
||||
Here we match placeholder 1 against `void` or anything (`.+`) and put the latter match in capture register 1. Then only if we did match something (other than `void`) will we insert a newline, tab and the `return nil;` text.
|
||||
|
||||
## Multiple Choices
|
||||
|
||||
Sometimes a placeholder can only take a limited number of values in which case we may want to show a menu with these choices.
|
||||
|
||||
This can be done with the `${«int»|«choice 1»,…,«choice n»|}` syntax.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
color: ${1|red,green,blue|}
|
||||
```
|
||||
|
||||
[Text Editing](https://macromates.com/textmate/manual/text-editing)
|
||||
|
||||
[Table of Contents](https://macromates.com/textmate/manual/)
|
||||
|
||||
[Commands](https://macromates.com/textmate/manual/commands)
|
||||
@@ -35,9 +35,9 @@
|
||||
- Indent using 2 spaces (soft tabs).
|
||||
- Put spaces between list items (ie. `[1, 2, 3]`, not `[1,2,3]`), around operators (ie. `1 + 1`, not `1+1`) and inside go templating tags (ie. `{{< alert >}}`, not `{{<alert>}}`).
|
||||
- Avoid code reuse in templates by extracting components into partials.
|
||||
- Layout code in a logical manner that prioritises readibility.
|
||||
- Layout code in a logical manner that prioritises readability.
|
||||
- Add comments when the intent of the code isn't immediately apparent or to break up large blocks of logic.
|
||||
- Use relative paths to assets without including the preceeding slash but, when referring to a folder, including a trailing slash (ie. `static/img/`, not `/static/img/` or `/static/img`).
|
||||
- Use relative paths to assets without including the preceding slash but, when referring to a folder, including a trailing slash (ie. `static/img/`, not `/static/img/` or `/static/img`).
|
||||
- Any static text must be referenced using the `i18n` methods and included in the localisation assets.
|
||||
- Commit often, preferring incremental changes rather than bundling everything into a single, large commit.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2021 James Panther (https://jamespanther.com)
|
||||
Copyright (c) 2022 Nuno Coração (https://nunocoracao.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
@@ -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>
|
||||
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
@@ -10,7 +6,10 @@
|
||||
[](https://themes.gohugo.io/themes/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.
|
||||
|
||||

|
||||
|
||||
|
||||
🌏 [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)
|
||||
|
||||

|
||||
|
||||
|
||||
<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
|
||||
@@ -33,10 +36,11 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
||||
- Multiple homepage layouts
|
||||
- Multiple authors
|
||||
- Series of articles
|
||||
- Zen mode for article reading
|
||||
- Flexible with any content types, taxonomies and menus
|
||||
- Header and footer menus
|
||||
- Nested menus & sub-navigation menu
|
||||
- Multilingual content support inlcuding support for RTL languages
|
||||
- Multilingual content support including support for RTL languages
|
||||
- Ability to link to posts on third-party websites
|
||||
- Support for several shortcodes like Gallery, Timeline, GitHub cards, and Carousels
|
||||
- Buymeacoffee integration
|
||||
@@ -44,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
|
||||
@@ -58,6 +63,8 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
@@ -70,6 +77,27 @@ Blowfish supports several installation methods - as a git submodule, a Hugo Modu
|
||||
|
||||
Detailed instructions for each method can be found in the [Installation](https://blowfish.page/docs/installation) docs. You should consult the documentation for the simplest setup experience. Below is a quick start guide using submodules if you are using git, or Hugo modules if you're already confident installing Hugo themes.
|
||||
|
||||
### Quick start using Blowfish Tools
|
||||
|
||||
> **Note:** Ensure you have **Node.js**, **Git**, **Go** and **Hugo** installed, and that you have created a new Hugo project before proceeding.
|
||||
|
||||
We just launched a new CLI tool to help you get started with Blowfish. It will create a new Hugo project, install the theme and set up the theme configuration files for you. It's still in beta so please [report any issues you find](https://github.com/nunocoracao/blowfish-tools).
|
||||
|
||||
Install the CLI tool globally using npm (or other package manager):
|
||||
```shell
|
||||
npm i -g blowfish-tools
|
||||
```
|
||||
|
||||
Then run the command `blowfish-tools` to start an interactive run which will guide you through creation and configuration use-cases.
|
||||
```shell
|
||||
blowfish-tools
|
||||
```
|
||||
|
||||
You can also run the command `blowfish-tools new` to create a new Hugo project and install the theme in one go. Check the CLI help for more information.
|
||||
```shell
|
||||
blowfish-tools new mynewsite
|
||||
```
|
||||
|
||||
### Quick start using git submodules
|
||||
|
||||
> **Note:** Ensure you have **Git**, **Go**, and **Hugo** installed, and that you have created a new Hugo project before proceeding.
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#zen-mode-button {
|
||||
cursor:pointer
|
||||
}
|
||||
|
||||
.zen-mode {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
body.zen-mode-enable {
|
||||
#bmc-wbtn, .author {
|
||||
display:none !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
|
||||
|
||||
@import 'components/zen-mode.css';
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@@ -111,6 +113,21 @@ body:has(#menu-controller:checked) {
|
||||
@apply absolute opacity-5 -z-10;
|
||||
}
|
||||
|
||||
/* Fix long KaTeX equations on mobile (see https://katex.org/docs/issues.html#css-customization) */
|
||||
.katex-display { overflow: auto hidden }
|
||||
|
||||
/* Fix long tables breaking out of article on mobile */
|
||||
table {
|
||||
display: block;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* Fix long inline code sections breaking out of article on mobile */
|
||||
code {
|
||||
word-wrap: break-word; /* All browsers since IE 5.5+ */
|
||||
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
|
||||
}
|
||||
|
||||
/* -- Chroma Highlight -- */
|
||||
/* Background */
|
||||
.prose .chroma {
|
||||
@@ -339,6 +356,10 @@ body:has(#menu-controller:checked) {
|
||||
|
||||
/* Custom */
|
||||
|
||||
pre {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
min-width: 300px;
|
||||
height: 180px;
|
||||
@@ -400,7 +421,7 @@ body:has(#menu-controller:checked) {
|
||||
.anchor {
|
||||
display: block;
|
||||
position: relative;
|
||||
top: -100px;
|
||||
top: -150px;
|
||||
height: 0px;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256,232.562c-21.183,-41.196 -78.868,-117.97 -132.503,-155.834c-51.378,-36.272 -70.978,-29.987 -83.828,-24.181c-14.872,6.72 -17.577,29.554 -17.577,42.988c0,13.433 7.365,110.138 12.169,126.281c15.873,53.336 72.376,71.358 124.413,65.574c2.66,-0.395 5.357,-0.759 8.089,-1.097c-2.68,0.429 -5.379,0.796 -8.089,1.097c-76.259,11.294 -143.984,39.085 -55.158,137.972c97.708,101.165 133.908,-21.692 152.484,-83.983c18.576,62.291 39.972,180.718 150.734,83.983c83.174,-83.983 22.851,-126.674 -53.408,-137.969c-2.71,-0.302 -5.409,-0.667 -8.089,-1.096c2.732,0.337 5.429,0.702 8.089,1.096c52.037,5.785 108.54,-12.239 124.413,-65.574c4.804,-16.142 12.169,-112.847 12.169,-126.281c-0,-13.434 -2.705,-36.267 -17.577,-42.988c-12.85,-5.806 -32.45,-12.09 -83.829,24.181c-53.634,37.864 -111.319,114.635 -132.502,155.831Z"/></svg>
|
||||
|
After Width: | Height: | Size: 898 B |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M490.3 40.4C512.2 62.27 512.2 97.73 490.3 119.6L460.3 149.7L362.3 51.72L392.4 21.66C414.3-.2135 449.7-.2135 471.6 21.66L490.3 40.4zM172.4 241.7L339.7 74.34L437.7 172.3L270.3 339.6C264.2 345.8 256.7 350.4 248.4 353.2L159.6 382.8C150.1 385.6 141.5 383.4 135 376.1C128.6 370.5 126.4 361 129.2 352.4L158.8 263.6C161.6 255.3 166.2 247.8 172.4 241.7V241.7zM192 63.1C209.7 63.1 224 78.33 224 95.1C224 113.7 209.7 127.1 192 127.1H96C78.33 127.1 64 142.3 64 159.1V416C64 433.7 78.33 448 96 448H352C369.7 448 384 433.7 384 416V319.1C384 302.3 398.3 287.1 416 287.1C433.7 287.1 448 302.3 448 319.1V416C448 469 405 512 352 512H96C42.98 512 0 469 0 416V159.1C0 106.1 42.98 63.1 96 63.1H192z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><path fill="currentColor" d="M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z"/></svg>
|
||||
|
Before Width: | Height: | Size: 778 B After Width: | Height: | Size: 776 B |
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px">
|
||||
<path fill="currentColor" d="M 12.980469 4 C 9.1204688 4 5.9804688 7.14 5.9804688 11 L 6 26 L 9.9804688 26 L 9.9804688 11 C 9.9804688 9.35 11.320469 8 12.980469 8 L 40.019531 8 C 41.679531 8 43.019531 9.35 43.019531 11 L 43.019531 39 C 43.019531 40.65 41.679531 42 40.019531 42 L 29 42 C 29 43.54 28.420938 44.94 27.460938 46 L 40.019531 46 C 43.879531 46 47.019531 42.86 47.019531 39 L 47.019531 11 C 47.019531 7.14 43.879531 4 40.019531 4 L 12.980469 4 z M 7 28 C 4.794 28 3 29.794 3 32 L 3 42 C 3 44.206 4.794 46 7 46 L 23 46 C 25.206 46 27 44.206 27 42 L 27 32 C 27 29.794 25.206 28 23 28 L 7 28 z M 7 32 L 23 32 L 23.001953 42 L 7 42 L 7 32 z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 749 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="235.452" width="261.728" viewBox="0 0 245.37069 220.73612"><path fill="currentColor" d="M31.99 1.365C21.287 7.72.2 31.945 0 38.298v10.516C0 62.144 12.46 73.86 23.773 73.86c13.584 0 24.902-11.258 24.903-24.62 0 13.362 10.93 24.62 24.515 24.62 13.586 0 24.165-11.258 24.165-24.62 0 13.362 11.622 24.62 25.207 24.62h.246c13.586 0 25.208-11.258 25.208-24.62 0 13.362 10.58 24.62 24.164 24.62 13.585 0 24.515-11.258 24.515-24.62 0 13.362 11.32 24.62 24.903 24.62 11.313 0 23.773-11.714 23.773-25.046V38.298c-.2-6.354-21.287-30.58-31.988-36.933C180.118.197 157.056-.005 122.685 0c-34.37.003-81.228.54-90.697 1.365zm65.194 66.217a28.025 28.025 0 0 1-4.78 6.155c-5.128 5.014-12.157 8.122-19.906 8.122a28.482 28.482 0 0 1-19.948-8.126c-1.858-1.82-3.27-3.766-4.563-6.032l-.006.004c-1.292 2.27-3.092 4.215-4.954 6.037a28.5 28.5 0 0 1-19.948 8.12c-.934 0-1.906-.258-2.692-.528-1.092 11.372-1.553 22.24-1.716 30.164l-.002.045c-.02 4.024-.04 7.333-.06 11.93.21 23.86-2.363 77.334 10.52 90.473 19.964 4.655 56.7 6.775 93.555 6.788h.006c36.854-.013 73.59-2.133 93.554-6.788 12.883-13.14 10.31-66.614 10.52-90.474-.022-4.596-.04-7.905-.06-11.93l-.003-.045c-.162-7.926-.623-18.793-1.715-30.165-.786.27-1.757.528-2.692.528a28.5 28.5 0 0 1-19.948-8.12c-1.862-1.822-3.662-3.766-4.955-6.037l-.006-.004c-1.294 2.266-2.705 4.213-4.563 6.032a28.48 28.48 0 0 1-19.947 8.125c-7.748 0-14.778-3.11-19.906-8.123a28.025 28.025 0 0 1-4.78-6.155 27.99 27.99 0 0 1-4.736 6.155 28.49 28.49 0 0 1-19.95 8.124c-.27 0-.54-.012-.81-.02h-.007c-.27.008-.54.02-.813.02a28.49 28.49 0 0 1-19.95-8.123 27.992 27.992 0 0 1-4.736-6.155zm-20.486 26.49l-.002.01h.015c8.113.017 15.32 0 24.25 9.746 7.028-.737 14.372-1.105 21.722-1.094h.006c7.35-.01 14.694.357 21.723 1.094 8.93-9.747 16.137-9.73 24.25-9.746h.014l-.002-.01c3.833 0 19.166 0 29.85 30.007L210 165.244c8.504 30.624-2.723 31.373-16.727 31.4-20.768-.773-32.267-15.855-32.267-30.935-11.496 1.884-24.907 2.826-38.318 2.827h-.006c-13.412 0-26.823-.943-38.318-2.827 0 15.08-11.5 30.162-32.267 30.935-14.004-.027-25.23-.775-16.726-31.4L46.85 124.08c10.684-30.007 26.017-30.007 29.85-30.007zm45.985 23.582v.006c-.02.02-21.863 20.08-25.79 27.215l14.304-.573v12.474c0 .584 5.74.346 11.486.08h.006c5.744.266 11.485.504 11.485-.08v-12.474l14.304.573c-3.928-7.135-25.79-27.215-25.79-27.215v-.006l-.003.002z"/></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -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 |
@@ -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 |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 256 B |
@@ -0,0 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xing</title><path fill="currentColor" d="M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.74c-.211 0-.385.074-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z"/></svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -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>
|
||||
@@ -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 |
|
After Width: | Height: | Size: 198 KiB |
@@ -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.5239578789186163" x="0" y="0" width="1057.28" height="1057.28" patternUnits="userSpaceOnUse">
|
||||
<g transform="scale(4.13)"><defs>
|
||||
<filter id="pat-0.28056686700481603" x="-100%" y="-100%" width="300%" height="300%" color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur in="SourceGraphic" stdDeviation="7.16"></feGaussianBlur>
|
||||
<feComponentTransfer result="cutoff">
|
||||
<feFuncA type="linear" slope="60" intercept="-40"></feFuncA>
|
||||
</feComponentTransfer>
|
||||
</filter>
|
||||
</defs><g style="isolation:isolate" filter="url(#pat-0.28056686700481603)"><g>
|
||||
<circle cx="-117.47820145411958" cy="65.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="138.52179854588042" cy="65.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="394.5217985458804" cy="65.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="-117.47820145411958" cy="321.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="138.52179854588042" cy="321.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="394.5217985458804" cy="321.73704682775116" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="-117.47820145411958" cy="577.7370468277511" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="138.52179854588042" cy="577.7370468277511" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="394.5217985458804" cy="577.7370468277511" r="21.556106316222454" fill="#93dbe9"></circle> <circle cx="-162.6386709099624" cy="209.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="93.3613290900376" cy="209.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="349.3613290900376" cy="209.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="-162.6386709099624" cy="465.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="93.3613290900376" cy="465.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="349.3613290900376" cy="465.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="-162.6386709099624" cy="721.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="93.3613290900376" cy="721.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="349.3613290900376" cy="721.5394904805088" r="24.52697043691995" fill="#93dbe9"></circle> <circle cx="-147.3740595647397" cy="152.91068748943633" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="108.6259404352603" cy="152.91068748943633" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="364.6259404352603" cy="152.91068748943633" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="-147.3740595647397" cy="408.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="108.6259404352603" cy="408.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="364.6259404352603" cy="408.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="-147.3740595647397" cy="664.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="108.6259404352603" cy="664.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="364.6259404352603" cy="664.9106874894363" r="21.51015200476747" fill="#93dbe9"></circle> <circle cx="-192.59175861041996" cy="77.18554993301422" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="63.40824138958004" cy="77.18554993301422" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="319.40824138958004" cy="77.18554993301422" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="-192.59175861041996" cy="333.1855499330142" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="63.40824138958004" cy="333.1855499330142" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="319.40824138958004" cy="333.1855499330142" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="-192.59175861041996" cy="589.1855499330143" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="63.40824138958004" cy="589.1855499330143" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="319.40824138958004" cy="589.1855499330143" r="23.208103474280268" fill="#93dbe9"></circle> <circle cx="-79.42006978738306" cy="200.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="176.57993021261694" cy="200.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="432.57993021261694" cy="200.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="-79.42006978738306" cy="456.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="176.57993021261694" cy="456.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="432.57993021261694" cy="456.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="-79.42006978738306" cy="712.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="176.57993021261694" cy="712.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="432.57993021261694" cy="712.4069752375559" r="15.486005317165144" fill="#93dbe9"></circle> <circle cx="-121.43762123242561" cy="56.491324829246764" r="16.92789159610261" fill="#93dbe9"></circle> <circle cx="134.5623787675744" cy="56.491324829246764" r="16.92789159610261" fill="#93dbe9"></circle> <circle cx="390.5623787675744" cy="56.491324829246764" r="16.92789159610261" fill="#93dbe9"></circle> <circle cx="-121.43762123242561" cy="312.49132482924676" r="16.92789159610261Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" dur="50s" repeatCount="indefinite" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||
</g><g>
|
||||
<circle cx="-29.282070824233358" cy="206.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="226.71792917576664" cy="206.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="482.71792917576664" cy="206.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="-29.282070824233358" cy="462.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="226.71792917576664" cy="462.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="482.71792917576664" cy="462.7475764076192" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="-29.282070824233358" cy="718.7475764076191" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="226.71792917576664" cy="718.7475764076191" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="482.71792917576664" cy="718.7475764076191" r="16.356569130544052" fill="#689cc5"></circle> <circle cx="-119.77106789599327" cy="147.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="136.22893210400673" cy="147.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="392.22893210400673" cy="147.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="-119.77106789599327" cy="403.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="136.22893210400673" cy="403.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="392.22893210400673" cy="403.59310623269687" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="-119.77106789599327" cy="659.5931062326969" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="136.22893210400673" cy="659.5931062326969" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="392.22893210400673" cy="659.5931062326969" r="21.16585478989172" fill="#689cc5"></circle> <circle cx="-99.1950458914921" cy="90.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="156.8049541085079" cy="90.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="412.8049541085079" cy="90.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="-99.1950458914921" cy="346.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="156.8049541085079" cy="346.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="412.8049541085079" cy="346.60520911712854" r="18.26347402711" fill="#689cc5"></circle> <circle cx="-99.1950458914921" cy="602.6052091171285" r="18.26347402711" fill="#689cc5"></circle> <circle cx="156.8049541085079" cy="602.6052091171285" r="18.26347402711" fill="#689cc5"></circle> <circle cx="412.8049541085079" cy="602.6052091171285" r="18.26347402711" fill="#689cc5"></circle> <circle cx="-190.20831840016888" cy="133.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="65.79168159983112" cy="133.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="321.7916815998311" cy="133.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="-190.20831840016888" cy="389.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="65.79168159983112" cy="389.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="321.7916815998311" cy="389.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="-190.20831840016888" cy="645.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="65.79168159983112" cy="645.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="321.7916815998311" cy="645.6427033026721" r="16.438060855095472" fill="#689cc5"></circle> <circle cx="-75.36598803253361" cy="227.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="180.6340119674664" cy="227.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="436.6340119674664" cy="227.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="-75.36598803253361" cy="483.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="180.6340119674664" cy="483.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="436.6340119674664" cy="483.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="-75.36598803253361" cy="739.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="180.6340119674664" cy="739.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="436.6340119674664" cy="739.1713073994291" r="24.488501941495453" fill="#689cc5"></circle> <circle cx="-52.0535694396504" cy="-12.529192687286525" r="18.640227929932493" fill="#689cc5"></circle> <circle cx="203.9464305603496" cy="-12.529192687286525" r="18.640227929932493" fill="#689cc5"></circle> <circle cx="459.9464305603496" cy="-12.529192687286525" r="18.640227929932493" fill="#689cc5"></circle> <circle cx="-52.0535694396504" cy="243.47080731271348" r="18.640227929932493" fill="#689cc5"><Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" dur="25s" repeatCount="indefinite" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||
</g><g>
|
||||
<circle cx="-61.818625426475705" cy="223.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="194.1813745735243" cy="223.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="450.1813745735243" cy="223.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="-61.818625426475705" cy="479.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="194.1813745735243" cy="479.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="450.1813745735243" cy="479.73093714877814" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="-61.818625426475705" cy="735.7309371487781" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="194.1813745735243" cy="735.7309371487781" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="450.1813745735243" cy="735.7309371487781" r="19.489813297125778" fill="#5e6fa3"></circle> <circle cx="-130.99287817390075" cy="32.266904580826974" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="125.00712182609925" cy="32.266904580826974" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="381.00712182609925" cy="32.266904580826974" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="-130.99287817390075" cy="288.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="125.00712182609925" cy="288.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="381.00712182609925" cy="288.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="-130.99287817390075" cy="544.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="125.00712182609925" cy="544.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="381.00712182609925" cy="544.266904580827" r="20.250598288605616" fill="#5e6fa3"></circle> <circle cx="-114.9408654122559" cy="20.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="141.0591345877441" cy="20.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="397.0591345877441" cy="20.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="-114.9408654122559" cy="276.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="141.0591345877441" cy="276.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="397.0591345877441" cy="276.45342899050013" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="-114.9408654122559" cy="532.4534289905001" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="141.0591345877441" cy="532.4534289905001" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="397.0591345877441" cy="532.4534289905001" r="18.103831625412525" fill="#5e6fa3"></circle> <circle cx="-104.80705775206593" cy="44.91882464484638" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="151.19294224793407" cy="44.91882464484638" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="407.19294224793407" cy="44.91882464484638" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="-104.80705775206593" cy="300.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="151.19294224793407" cy="300.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="407.19294224793407" cy="300.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="-104.80705775206593" cy="556.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="151.19294224793407" cy="556.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="407.19294224793407" cy="556.9188246448464" r="21.639796724165027" fill="#5e6fa3"></circle> <circle cx="-237.85345336121185" cy="132.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="18.146546638788152" cy="132.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="274.14654663878815" cy="132.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="-237.85345336121185" cy="388.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="18.146546638788152" cy="388.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="274.14654663878815" cy="388.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="-237.85345336121185" cy="644.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="18.146546638788152" cy="644.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="274.14654663878815" cy="644.1180245261114" r="13.548894974734658" fill="#5e6fa3"></circle> <circle cx="-114.10644418384612" cy="143.46034115303564" r="19.363930365828462" fill="#5e6fa3"></circle> <circle cx="141.89355581615388" cy="143.46034115303564" r="19.363930365828462" fill="#5e6fa3"></circle> <circle cx="397.8935558161539" cy="143.46034115303564" r="19.363930365828462" fill="#5e6fa3"></circle> <circle cx="-114.10644418384612" cy="399Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" dur="16.666666666666668s" repeatCount="indefinite" keyTimes="0;1" values="0 0;0 -256"></animateTransform>
|
||||
</g></g></g>
|
||||
</pattern>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.5239578789186163)"></rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 27 KiB |
@@ -0,0 +1,17 @@
|
||||
<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.7559634166593172" x="0" y="0" width="760.32" height="760.32" patternUnits="userSpaceOnUse">
|
||||
<g transform="scale(2.97)"><g>
|
||||
<line x1="248.93220498412637" x2="187.83676887148368" y1="133.26068452225024" y2="194.35612063489293" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="248.93220498412637" x2="187.83676887148368" y1="-378.73931547774976" y2="-317.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="504.9322049841264" x2="443.8367688714837" y1="-378.73931547774976" y2="-317.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="760.9322049841264" x2="699.8367688714836" y1="-378.73931547774976" y2="-317.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="248.93220498412637" x2="187.83676887148368" y1="-122.73931547774976" y2="-61.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="504.9322049841264" x2="443.8367688714837" y1="-122.73931547774976" y2="-61.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="760.9322049841264" x2="699.8367688714836" y1="-122.73931547774976" y2="-61.64387936510707" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="248.93220498412637" x2="187.83676887148368" y1="133.26068452225024" y2="194.35612063489293" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="504.9322049841264" x2="443.8367688714837" y1="133.26068452225024" y2="194.35612063489293" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="760.9322049841264" x2="699.8367688714836" y1="133.26068452225024" y2="194.35612063489293" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="271.51835507321255" x2="195.66490594892483" y1="160.40603458717632" y2="236.25948371146401" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="271.51835507321255" x2="195.66490594892483" y1="-351.59396541282365" y2="-275.740516288536" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="527.5183550732125" x2="451.6649059489248" y1="-351.59396541282365" y2="-275.740516288536" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="783.5183550732125" x2="707.6649059489248" y1="-351.59396541282365" y2="-275.740516288536" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="271.51835507321255" x2="195.66490594892483" y1="-95.59396541282368" y2="-19.740516288535986" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="527.5183550732125" x2="451.6649059489248" y1="-95.59396541282368" y2="-19.740516288535986" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="783.5183550732125" x2="707.6649059489248" y1="-95.59396541282368" y2="-19.740516288535986" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="271.51835507321255" x2="195.66490594892483" y1="160.40603458717632" y2="236.25948371146401" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="527.5183550732125" x2="451.6649059489248" y1="160.40603458717632" y2="236.25948371146401" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="783.5183550732125" x2="707.6649059489248" y1="160.40603458717632" y2="236.25948371146401" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="15.518355073212547" x2="-60.335094051075174" y1="160.40603458717632" y2="236.25948371146401" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="83.40042674041591" x2="33.11441362141967" y1="-16.06889251952758" y2="34.21712059946866" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="83.40042674041591" x2="33.11441362141967" y1="-528.0688925195276" y2="-477.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="339.4004267404159" x2="289.11441362141966" y1="-528.0688925195276" y2="-477.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="595.4004267404159" x2="545.1144136214197" y1="-528.0688925195276" y2="-477.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="83.40042674041591" x2="33.11441362141967" y1="-272.0688925195276" y2="-221.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="339.4004267404159" x2="289.11441362141966" y1="-272.0688925195276" y2="-221.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="595.4004267404159" x2="545.1144136214197" y1="-272.0688925195276" y2="-221.78287940053133" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="83.40042674041591" x2="33.11441362141967" y1="-16.06889251952758" y2="34.21712059946866" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line x1="339.4004267404159" x2="289.11441362141966" y1="-16.06889251952758" y2="34.21712059946866" stroke-width="17" stroke="#93dbe9" stroke-linecap="round"></line><line Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256" keyTimes="0;1" repeatCount="indefinite" dur="25s"></animateTransform>
|
||||
</g><g>
|
||||
<line x1="71.91569756110977" x2="15.716244394201393" y1="203.173939148305" y2="259.3733923152134" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="71.91569756110977" x2="15.716244394201393" y1="-308.826060851695" y2="-252.62660768478662" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="327.91569756110977" x2="271.7162443942014" y1="-308.826060851695" y2="-252.62660768478662" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="583.9156975611097" x2="527.7162443942013" y1="-308.826060851695" y2="-252.62660768478662" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="71.91569756110977" x2="15.716244394201393" y1="-52.82606085169499" y2="3.37339231521338" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="327.91569756110977" x2="271.7162443942014" y1="-52.82606085169499" y2="3.37339231521338" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="583.9156975611097" x2="527.7162443942013" y1="-52.82606085169499" y2="3.37339231521338" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="71.91569756110977" x2="15.716244394201393" y1="203.173939148305" y2="259.3733923152134" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="327.91569756110977" x2="271.7162443942014" y1="203.173939148305" y2="259.3733923152134" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="583.9156975611097" x2="527.7162443942013" y1="203.173939148305" y2="259.3733923152134" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="100.19778350912817" x2="40.76948708581391" y1="172.52911656319793" y2="231.95741298651217" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="100.19778350912817" x2="40.76948708581391" y1="-339.47088343680207" y2="-280.04258701348783" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="356.19778350912816" x2="296.7694870858139" y1="-339.47088343680207" y2="-280.04258701348783" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="612.1977835091282" x2="552.7694870858139" y1="-339.47088343680207" y2="-280.04258701348783" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="100.19778350912817" x2="40.76948708581391" y1="-83.47088343680207" y2="-24.042587013487832" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="356.19778350912816" x2="296.7694870858139" y1="-83.47088343680207" y2="-24.042587013487832" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="612.1977835091282" x2="552.7694870858139" y1="-83.47088343680207" y2="-24.042587013487832" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="100.19778350912817" x2="40.76948708581391" y1="172.52911656319793" y2="231.95741298651217" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="356.19778350912816" x2="296.7694870858139" y1="172.52911656319793" y2="231.95741298651217" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="612.1977835091282" x2="552.7694870858139" y1="172.52911656319793" y2="231.95741298651217" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="213.2381854072459" x2="157.39228641928293" y1="217.7855761775765" y2="273.6314751655395" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="213.2381854072459" x2="157.39228641928293" y1="-294.2144238224235" y2="-238.36852483446052" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="469.2381854072459" x2="413.3922864192829" y1="-294.2144238224235" y2="-238.36852483446052" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="725.238185407246" x2="669.392286419283" y1="-294.2144238224235" y2="-238.36852483446052" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="213.2381854072459" x2="157.39228641928293" y1="-38.2144238224235" y2="17.631475165539484" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="469.2381854072459" x2="413.3922864192829" y1="-38.2144238224235" y2="17.631475165539484" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="725.238185407246" x2="669.392286419283" y1="-38.2144238224235" y2="17.631475165539484" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="213.2381854072459" x2="157.39228641928293" y1="217.7855761775765" y2="273.6314751655395" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="469.2381854072459" x2="413.3922864192829" y1="217.7855761775765" y2="273.6314751655395" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="725.238185407246" x2="669.392286419283" y1="217.7855761775765" y2="273.6314751655395" stroke-width="17" stroke="#689cc5" stroke-linecap="round"></line><line x1="33.27332893022041" x2="25.614502345307Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256" keyTimes="0;1" repeatCount="indefinite" dur="12.5s"></animateTransform>
|
||||
</g><g>
|
||||
<line x1="46.826418842232336" x2="16.147355370761254" y1="89.43634965170651" y2="120.11541312317758" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="46.826418842232336" x2="16.147355370761254" y1="-422.5636503482935" y2="-391.8845868768224" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="302.82641884223233" x2="272.14735537076126" y1="-422.5636503482935" y2="-391.8845868768224" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="558.8264188422323" x2="528.1473553707613" y1="-422.5636503482935" y2="-391.8845868768224" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="46.826418842232336" x2="16.147355370761254" y1="-166.5636503482935" y2="-135.88458687682242" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="302.82641884223233" x2="272.14735537076126" y1="-166.5636503482935" y2="-135.88458687682242" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="558.8264188422323" x2="528.1473553707613" y1="-166.5636503482935" y2="-135.88458687682242" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="46.826418842232336" x2="16.147355370761254" y1="89.43634965170651" y2="120.11541312317758" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="302.82641884223233" x2="272.14735537076126" y1="89.43634965170651" y2="120.11541312317758" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="558.8264188422323" x2="528.1473553707613" y1="89.43634965170651" y2="120.11541312317758" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="189.95299049748724" x2="111.70381347927696" y1="45.75774329661329" y2="124.00692031482356" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="189.95299049748724" x2="111.70381347927696" y1="-466.2422567033867" y2="-387.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="445.95299049748724" x2="367.70381347927696" y1="-466.2422567033867" y2="-387.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="701.9529904974872" x2="623.703813479277" y1="-466.2422567033867" y2="-387.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="189.95299049748724" x2="111.70381347927696" y1="-210.24225670338672" y2="-131.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="445.95299049748724" x2="367.70381347927696" y1="-210.24225670338672" y2="-131.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="701.9529904974872" x2="623.703813479277" y1="-210.24225670338672" y2="-131.99307968517644" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="189.95299049748724" x2="111.70381347927696" y1="45.75774329661329" y2="124.00692031482356" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="445.95299049748724" x2="367.70381347927696" y1="45.75774329661329" y2="124.00692031482356" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="701.9529904974872" x2="623.703813479277" y1="45.75774329661329" y2="124.00692031482356" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="248.68858250190144" x2="203.82663522832937" y1="112.45061693842503" y2="157.3125642119971" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="248.68858250190144" x2="203.82663522832937" y1="-399.549383061575" y2="-354.68743578800286" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="504.68858250190146" x2="459.82663522832934" y1="-399.549383061575" y2="-354.68743578800286" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="760.6885825019015" x2="715.8266352283293" y1="-399.549383061575" y2="-354.68743578800286" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="248.68858250190144" x2="203.82663522832937" y1="-143.54938306157499" y2="-98.68743578800289" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="504.68858250190146" x2="459.82663522832934" y1="-143.54938306157499" y2="-98.68743578800289" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="760.6885825019015" x2="715.8266352283293" y1="-143.54938306157499" y2="-98.68743578800289" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="248.68858250190144" x2="203.82663522832937" y1="112.45061693842503" y2="157.3125642119971" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="504.68858250190146" x2="459.82663522832934" y1="112.45061693842503" y2="157.3125642119971" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><line x1="760.6885825019015" x2="715.8266352283293" y1="112.45061693842503" y2="157.3125642119971" stroke-width="17" stroke="#5e6fa3" stroke-linecap="round"></line><Line truncated
|
||||
<animateTransform attributeName="transform" type="translate" values="0 0;-256 256" keyTimes="0;1" repeatCount="indefinite" dur="8.333333333333334s"></animateTransform>
|
||||
</g></g>
|
||||
</pattern>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="1084" height="322" fill="url(#pid-0.7559634166593172)"></rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 85 KiB |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -13,7 +13,7 @@ function createCopyButton(highlightDiv) {
|
||||
}
|
||||
|
||||
async function copyCodeToClipboard(button, highlightDiv) {
|
||||
const codeToCopy = highlightDiv.querySelector(":last-child > .chroma > code").innerText;
|
||||
const codeToCopy = highlightDiv.querySelector(":last-child").innerText;
|
||||
try {
|
||||
result = await navigator.permissions.query({ name: "clipboard-write" });
|
||||
if (result.state == "granted" || result.state == "prompt") {
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
});
|
||||
@@ -1,7 +1,9 @@
|
||||
var liked_page = false
|
||||
var id = oid ? oid.replaceAll("/", "-") : oid
|
||||
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
|
||||
|
||||
if (typeof auth !== 'undefined') {
|
||||
var id = oid ? oid.replaceAll("/", "-") : oid
|
||||
|
||||
var viewed = localStorage.getItem(id);
|
||||
|
||||
if (!viewed) {
|
||||
@@ -28,14 +30,13 @@ if (typeof auth !== 'undefined') {
|
||||
});
|
||||
}
|
||||
|
||||
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
|
||||
var liked = localStorage.getItem(id_likes);
|
||||
|
||||
if (liked) {
|
||||
liked_page = true
|
||||
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = ""
|
||||
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = ""
|
||||
}
|
||||
|
||||
}
|
||||
@@ -47,9 +48,9 @@ function like_article(id_likes) {
|
||||
docRef.get().then((doc) => {
|
||||
liked_page = true
|
||||
localStorage.setItem(id_likes, true);
|
||||
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = ""
|
||||
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = ""
|
||||
if (doc.exists) {
|
||||
db.collection('likes').doc(id_likes).update({
|
||||
likes: firebase.firestore.FieldValue.increment(1)
|
||||
@@ -75,9 +76,9 @@ function remove_like_article(id_likes) {
|
||||
docRef.get().then((doc) => {
|
||||
liked_page = false
|
||||
localStorage.removeItem(id_likes);
|
||||
document.querySelectorAll("span[id='likes_button_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='likes_button_emtpty_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='likes_button_text']")[0].innerText = "\xa0Like"
|
||||
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "none"
|
||||
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = ""
|
||||
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "\xa0Like"
|
||||
if (doc.exists) {
|
||||
db.collection('likes').doc(id_likes).update({
|
||||
likes: firebase.firestore.FieldValue.increment(-1)
|
||||
@@ -97,7 +98,6 @@ function remove_like_article(id_likes) {
|
||||
}
|
||||
|
||||
function process_article() {
|
||||
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
|
||||
if (!liked_page) {
|
||||
like_article(id_likes)
|
||||
} else {
|
||||
|
||||
@@ -6,12 +6,24 @@ if (typeof auth !== 'undefined') {
|
||||
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
}
|
||||
|
||||
function toggleLoaders(node){
|
||||
var classesString = node.className;
|
||||
if(classesString == "") return
|
||||
var classes = classesString.split(" ");
|
||||
for(var i in classes){
|
||||
node.classList.toggle(classes[i])
|
||||
}
|
||||
}
|
||||
|
||||
var update_views = function (node, id) {
|
||||
viewsCollection.doc(id).onSnapshot(doc => {
|
||||
var data = doc.data();
|
||||
if (data) {
|
||||
node.innerText = numberWithCommas(data.views)
|
||||
} else {
|
||||
node.innerText = 0
|
||||
}
|
||||
toggleLoaders(node)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -20,7 +32,11 @@ if (typeof auth !== 'undefined') {
|
||||
var data = doc.data();
|
||||
if (data) {
|
||||
node.innerText = numberWithCommas(data.likes)
|
||||
} else {
|
||||
node.innerText = 0
|
||||
}
|
||||
toggleLoaders(node)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -63,6 +63,21 @@ document.addEventListener("keydown", function (event) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Enter to get to results
|
||||
if (event.key == "Enter") {
|
||||
if (searchVisible && hasResults) {
|
||||
event.preventDefault();
|
||||
if (document.activeElement == input) {
|
||||
first.focus();
|
||||
} else {
|
||||
document.activeElement.click();
|
||||
}
|
||||
}else{
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Update search on each keypress
|
||||
@@ -123,6 +138,12 @@ function buildIndex() {
|
||||
{ name: "content", weight: 0.4 },
|
||||
],
|
||||
};
|
||||
/*var finalIndex = [];
|
||||
for (var i in data) {
|
||||
if(data[i].type != "users" && data[i].type != "tags" && data[i].type != "categories"){
|
||||
finalIndex.push(data[i]);
|
||||
}
|
||||
}*/
|
||||
fuse = new Fuse(data, options);
|
||||
indexed = true;
|
||||
});
|
||||
@@ -134,12 +155,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>
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
function _getDefaultPackeryOptions() {
|
||||
return {
|
||||
percentPosition: true,
|
||||
gutter: 5,
|
||||
resize: true
|
||||
};
|
||||
}
|
||||
|
||||
(function init() {
|
||||
|
||||
$(window).on("load", function () {
|
||||
let packeries = [];
|
||||
let nodeGalleries = document.querySelectorAll('.gallery');
|
||||
|
||||
nodeGalleries.forEach(nodeGallery => {
|
||||
// TODO : implement a reader of Packery configuration _getPackeryOptions; for example by reading data-attribute
|
||||
let packery = new Packery(nodeGallery, _getDefaultPackeryOptions());
|
||||
packeries.push(packery);
|
||||
});
|
||||
console.groupEnd();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1,57 @@
|
||||
function _toogleZenMode(zendModeButton) {
|
||||
// Nodes selection
|
||||
const body = document.querySelector('body');
|
||||
const tocRight = document.querySelector('.toc-right');
|
||||
const tocInside = document.querySelector('.toc-inside');
|
||||
const articleContent = document.querySelector('.article-content');
|
||||
const header = document.querySelector('#single_header');
|
||||
|
||||
|
||||
// Add semantic class into body tag
|
||||
body.classList.toggle('zen-mode-enable');
|
||||
|
||||
// Show/Hide 'toc right' and 'toc inside'
|
||||
tocRight.classList.toggle('lg:block');
|
||||
tocInside.classList.toggle('lg:hidden');
|
||||
|
||||
// Change width of article content
|
||||
articleContent.classList.toggle('max-w-fit');
|
||||
articleContent.classList.toggle('max-w-prose');
|
||||
|
||||
// Read i18n title from data-attributes
|
||||
const titleI18nDisable = zendModeButton.getAttribute('data-title-i18n-disable');
|
||||
const titleI18nEnable = zendModeButton.getAttribute('data-title-i18n-enable');
|
||||
|
||||
if (body.classList.contains('zen-mode-enable')) {
|
||||
// Persist configuration
|
||||
//localStorage.setItem('blowfish-zen-mode-enabled', 'true');
|
||||
|
||||
// Change title to enable
|
||||
zendModeButton.setAttribute('title', titleI18nEnable)
|
||||
// Auto-scroll to title article
|
||||
window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90);
|
||||
} else {
|
||||
//localStorage.setItem('blowfish-zen-mode-enabled', 'false');
|
||||
zendModeButton.setAttribute('title', titleI18nDisable);
|
||||
document.querySelector('body').scrollIntoView();
|
||||
}
|
||||
}
|
||||
|
||||
function _registerZendModeButtonClick(zendModeButton) {
|
||||
zendModeButton.addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
// Toggle zen-mode
|
||||
_toogleZenMode(zendModeButton);
|
||||
});
|
||||
}
|
||||
|
||||
(function init() {
|
||||
window.addEventListener("DOMContentLoaded", (event) => {
|
||||
// Register click on 'zen-mode-button' node element
|
||||
const zendModeButton = document.getElementById('zen-mode-button');
|
||||
if(zendModeButton !== null && zendModeButton !== undefined) {
|
||||
_registerZendModeButtonClick(zendModeButton);
|
||||
}
|
||||
});
|
||||
})();
|
||||
@@ -1,14 +1,14 @@
|
||||
/*!
|
||||
* Chart.js v4.3.3
|
||||
* Chart.js v4.4.2
|
||||
* https://www.chartjs.org
|
||||
* (c) 2023 Chart.js Contributors
|
||||
* (c) 2024 Chart.js Contributors
|
||||
* Released under the MIT License
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Ko},get Decimation(){return Jo},get Filler(){return pa},get Legend(){return _a},get SubTitle(){return wa},get Title(){return va},get Tooltip(){return Va}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return J(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){Line truncated
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return J(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){Line truncated
|
||||
/*!
|
||||
* @kurkle/color v0.3.2
|
||||
* https://github.com/kurkle/color#readme
|
||||
* (c) 2023 Jukka Kurkela
|
||||
* Released under the MIT License
|
||||
*/function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),Line truncated
|
||||
*/function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),Line truncated
|
||||
//# sourceMappingURL=chart.umd.js.map
|
||||
@@ -1,9 +1,9 @@
|
||||
/**
|
||||
* Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)
|
||||
* Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)
|
||||
*
|
||||
* Copyright (c) 2022 Kiro Risk (http://kiro.me)
|
||||
* Copyright (c) 2023 Kiro Risk (http://kiro.me)
|
||||
* All Rights Reserved. Apache Software License 2.0
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){c(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");Object.defineProperty(e,"prototype",{value:Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),writable:!1}),t&&u(e,t)}function s(e){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},s(e)}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function h(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var i=s(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return h(this,n)}}function f(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e){return Array.isArray?Array.isArray(e):"[object Array]"===b(e)}function g(e){return"string"==typeof e}function y(e){return"number"==typeof e}function p(e){return!0===e||!1===e||function(e){return m(e)&&null!==e}(e)&&"[object Boolean]"==b(e)}function m(e){return"object"===n(e)}function k(e){return null!=e}function M(e){return!e.trim().length}function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var x=function(e){return"Invalid value for key ".concat(e)},w=function(e){return"Pattern length exceeds max of ".concat(e,".")},L=Object.prototype.hasOwnProperty,S=function(){function e(t){var n=this;r(this,e),this._keys=[],this._keyMap={};var i=0;t.forEach((function(e){var t=_(e);i+=t.weight,n._keys.push(t),n._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}return o(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function _(e){var t=null,n=null,r=null,i=1,o=null;if(g(e)||v(e))r=e,t=O(e),n=j(e);else{if(!L.call(e,"name"))throw new Error(function(e){return"Missing ".concat(e," property in key")}("name"));var c=e.name;if(r=c,L.call(e,"weight")&&(i=e.weight)<=0)throw new Error(function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")}(c));t=O(c),n=j(c),o=e.getFn}return{path:t,id:n,weight:i,src:r,getFn:o}}function O(e){return v(e)?e:e.split(".")}function j(e){return v(e)?e.join("."):e}var A={useExtendedSearch:!1,getFn:function(e,t){var n=[],r=!1;return function e(t,i,o){if(k(t))if(i[o]){var c=t[i[o]];if(!k(c))return;if(o===i.Line truncated
|
||||
var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){c(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,v(r.key),r)}}function o(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}function s(e){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},s(e)}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}function h(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var i=s(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return h(this,n)}}function f(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function g(e){return Array.isArray?Array.isArray(e):"[object Array]"===S(e)}var y=1/0;function p(e){return null==e?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-y?"-0":t}(e)}function m(e){return"string"==typeof e}function k(e){return"number"==typeof e}function M(e){return!0===e||!1===e||function(e){return b(e)&&null!==e}(e)&&"[object Boolean]"==S(e)}function b(e){return"object"===n(e)}function x(e){return null!=e}function w(e){return!e.trim().length}function S(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var L=function(e){return"Missing ".concat(e," property in key")},_=function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")},O=Object.prototype.hasOwnProperty,j=function(){function e(t){var n=this;r(this,e),this._keys=[],this._keyMap={};var i=0;t.forEach((function(e){var t=A(e);n._keys.push(t),n._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}return o(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function A(e){var t=null,n=null,r=null,i=1,o=null;if(m(e)||g(e))r=e,t=I(e),n=C(e);else{if(!O.call(e,"name"))throw new ErLine truncated
|
||||
@@ -1,2 +1,2 @@
|
||||
/*! jQuery v3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
||||
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i)return e.textContent;if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=ce.text(t);return n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var de=oe.pop,pe=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function d(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").Line truncated
|
||||
/*! jQuery v3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
||||
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var de=oe.pop,pe=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function d(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+Line truncated
|
||||
@@ -1 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var i=r[e];if(void 0!==i)return i.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var i={};return function(){n.d(i,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,i=0,a=e.length;n<t.length;){var o=t[n];if(i<=0&&t.slice(n,n+a)===e)return n;"\\"===o?n++:"{"===o?i++:"}"===o&&i--,n++}return-1},a=/^\\begin{/,o=function(e,t){for(var n,i=[],o=new RegExp("("+t.map((function(e){return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})).join("|")+")");-1!==(n=e.search(o));){n>0&&(i.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=a.test(d)?d:e.slice(t[l].left.length,n);i.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&i.push({type:"text",data:e}),i},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var i=document.createDocumentFragment(),a=0;a<n.length;a++)if("text"===n[a].type)i.appendChild(document.createTextNode(n[a].data));else{var l=document.createElement("span"),d=n[a].data;r.displayMode=n[a].display;try{r.preProcess&&(d=r.preProcess(d)),t().render(d,l,r)}catch(e){if(!(e instanceof t().ParseError))throw e;r.errorCallback("KaTeX auto-render: Failed to parse `"+n[a].data+"` with ",e),i.appendChild(document.createTextNode(n[a].rawData));continue}i.appendChild(l)}return i},d=function e(t,r){for(var n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(3===i.nodeType){for(var a=i.textContent,o=i.nextSibling,d=0;o&&o.nodeType===Node.TEXT_NODE;)a+=o.textContent,o=o.nextSibling,d++;var s=l(a,r);if(s){for(var f=0;f<d;f++)i.nextSibling.remove();n+=s.childNodes.length-1,t.replaceChild(s,i)}else n+=d}else 1===i.nodeType&&function(){var t=" "+i.className+" ";-1===r.ignoredTags.indexOf(i.nodeName.toLowerCase())&&r.ignoredClasses.every((function(e){return-1===t.indexOf(" "+e+" ")}))&&e(i,r)}()}},s=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},d(e,r)}}(),i=i.default}()}));
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));
|
||||
@@ -1 +1 @@
|
||||
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.8"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pxLine truncated
|
||||
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.10"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1pLine truncated
|
||||
@@ -1 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return na}});var r=function e(t,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n,a,i="KaTeX parse error: "+t,o=r&&r.loc;if(o&&o.start<=o.end){var s=o.lexer.input;n=o.start,a=o.end,n===s.length?i+=" at end of input: ":i+=" at position "+(n+1)+": ";var l=s.slice(n,a).replace(/[^]/g,"$&\u0332");i+=(n>15?"\u2026"+s.slice(n-15,n):s.slice(0,n))+l+(a+15<s.length?s.slice(a,a+15)+"\u2026":s.slice(a))}var h=new Error(i);return h.name="ParseError",h.__proto__=e.prototype,h.position=n,null!=n&&null!=a&&(h.length=a-n),h.rawMessage=t,h};r.prototype.__proto__=Error.prototype;var n=r,a=/([A-Z])/g,i={"&":"&",">":">","<":"<",'"':""","'":"'"},o=/[&><"']/g;var s=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(o,(function(e){return i[e]}))},hyphenate:function(e){return e.replace(a,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){var t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:function(e){return"#"+e}},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:function(e,t){return t.push(e),t}},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:function(e){return Math.max(0,e)},cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:function(e){return Math.max(0,e)},cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:function(e){return Math.max(0,e)},cli:"-e, --max-expand <n>",cliProcessor:function(e){return"Infinity"===e?1/0:parseInt(e)}},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var m=function(){function e(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void
Line truncated
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Yn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0Line truncated
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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>;
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
};
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -0,0 +1 @@
|
||||
export {};
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"add-html-label-3fd8c466.js","sources":["../src/diagrams/flowchart/parser/flow.jison","../src/diagrams/flowchart/flowDb.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/util.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n%x string\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%x dir\n%x vertex\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\\%\\%(?!\\{)[^\\n]* /* skip comments */\n[^\\}]\\%\\%[^\\n]* /* skip comments */\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n// <acc_descr_multiline>.*[^\\n]* { return \"acc_descr_line\"}\n[\"] this.begin(\"string\");\n<string>[\"] this.popState();\n<string>[^\"]* return \"STR\";\n\"style\" return 'STYLE';\n\"default\" return 'DEFAULT';\n\"linkStyle\" return 'LINKSTYLE';\n\"interpolate\" return 'INTERPOLATE';\n\"classDef\" return 'CLASSDEF';\n\"class\" return 'CLASS';\n\n/*\n---interactivity command---\n'href' adds a link to the specified node. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"<link>\"' attaches the specified link to the node that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n<href>[\"] this.popState();\n<href>[^\"]* return 'HREF';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified node. 'call' can only be specified when\nthe line was introduced with 'click'.\n'call <callbackname>(<args>)' attaches the function 'callbackname' with the specified\narguments to the node that was specified by 'click'.\nFunction arguments are optional: 'call <callbackname>()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n<callbackname>\\([\\s]*\\) this.popState();\n<callbackname>\\( this.popState(); this.begin(\"callbackargs\");\n<callbackname>[^(]* return 'CALLBACKNAME';\n<callbackargs>\\) this.popState();\n<callbackargs>[^)]* return 'CALLBACKARGS';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing node-id. All commands are attached to\nthat id.\n'click <id>' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n<click>[\\s\\n] this.popState();\n<click>[^\\s\\n]* return 'CLICK';\n\n\"flowchart-elk\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"graph\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"flowchart\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"subgraph\" return 'subgraph';\n\"end\"\\b\\s* return 'end';\n\n\"_self\" return 'LINK_TARGET';\n\"_blank\" return 'LINK_TARGET';\n\"_parent\" return 'LINK_TARGET';\n\"_top\" return 'LINK_TARGET';\n\n<dir>(\\r?\\n)*\\s*\\n { this.popState(); return 'NODIR'; }\n<dir>\\s*\"LR\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"RL\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"TB\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"add-html-label-6e56ed67.js","sources":["../src/diagrams/flowchart/parser/flow.jison","../src/diagrams/flowchart/flowDb.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/util.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n%x string\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%x dir\n%x vertex\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\\%\\%(?!\\{)[^\\n]* /* skip comments */\n[^\\}]\\%\\%[^\\n]* /* skip comments */\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n// <acc_descr_multiline>.*[^\\n]* { return \"acc_descr_line\"}\n[\"] this.begin(\"string\");\n<string>[\"] this.popState();\n<string>[^\"]* return \"STR\";\n\"style\" return 'STYLE';\n\"default\" return 'DEFAULT';\n\"linkStyle\" return 'LINKSTYLE';\n\"interpolate\" return 'INTERPOLATE';\n\"classDef\" return 'CLASSDEF';\n\"class\" return 'CLASS';\n\n/*\n---interactivity command---\n'href' adds a link to the specified node. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"<link>\"' attaches the specified link to the node that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n<href>[\"] this.popState();\n<href>[^\"]* return 'HREF';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified node. 'call' can only be specified when\nthe line was introduced with 'click'.\n'call <callbackname>(<args>)' attaches the function 'callbackname' with the specified\narguments to the node that was specified by 'click'.\nFunction arguments are optional: 'call <callbackname>()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n<callbackname>\\([\\s]*\\) this.popState();\n<callbackname>\\( this.popState(); this.begin(\"callbackargs\");\n<callbackname>[^(]* return 'CALLBACKNAME';\n<callbackargs>\\) this.popState();\n<callbackargs>[^)]* return 'CALLBACKARGS';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing node-id. All commands are attached to\nthat id.\n'click <id>' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n<click>[\\s\\n] this.popState();\n<click>[^\\s\\n]* return 'CLICK';\n\n\"flowchart-elk\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"graph\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"flowchart\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"subgraph\" return 'subgraph';\n\"end\"\\b\\s* return 'end';\n\n\"_self\" return 'LINK_TARGET';\n\"_blank\" return 'LINK_TARGET';\n\"_parent\" return 'LINK_TARGET';\n\"_top\" return 'LINK_TARGET';\n\n<dir>(\\r?\\n)*\\s*\\n { this.popState(); return 'NODIR'; }\n<dir>\\s*\"LR\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"RL\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"TB\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"add-html-label-ce7f9292.js","sources":["../src/diagrams/flowchart/parser/flow.jison","../src/diagrams/flowchart/flowDb.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/util.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n%x string\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%x dir\n%x vertex\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\\%\\%(?!\\{)[^\\n]* /* skip comments */\n[^\\}]\\%\\%[^\\n]* /* skip comments */\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n// <acc_descr_multiline>.*[^\\n]* { return \"acc_descr_line\"}\n[\"] this.begin(\"string\");\n<string>[\"] this.popState();\n<string>[^\"]* return \"STR\";\n\"style\" return 'STYLE';\n\"default\" return 'DEFAULT';\n\"linkStyle\" return 'LINKSTYLE';\n\"interpolate\" return 'INTERPOLATE';\n\"classDef\" return 'CLASSDEF';\n\"class\" return 'CLASS';\n\n/*\n---interactivity command---\n'href' adds a link to the specified node. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"<link>\"' attaches the specified link to the node that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n<href>[\"] this.popState();\n<href>[^\"]* return 'HREF';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified node. 'call' can only be specified when\nthe line was introduced with 'click'.\n'call <callbackname>(<args>)' attaches the function 'callbackname' with the specified\narguments to the node that was specified by 'click'.\nFunction arguments are optional: 'call <callbackname>()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n<callbackname>\\([\\s]*\\) this.popState();\n<callbackname>\\( this.popState(); this.begin(\"callbackargs\");\n<callbackname>[^(]* return 'CALLBACKNAME';\n<callbackargs>\\) this.popState();\n<callbackargs>[^)]* return 'CALLBACKARGS';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing node-id. All commands are attached to\nthat id.\n'click <id>' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n<click>[\\s\\n] this.popState();\n<click>[^\\s\\n]* return 'CLICK';\n\n\"flowchart-elk\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"graph\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"flowchart\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"subgraph\" return 'subgraph';\n\"end\"\\b\\s* return 'end';\n\n\"_self\" return 'LINK_TARGET';\n\"_blank\" return 'LINK_TARGET';\n\"_parent\" return 'LINK_TARGET';\n\"_top\" return 'LINK_TARGET';\n\n<dir>(\\r?\\n)*\\s*\\n { this.popState(); return 'NODIR'; }\n<dir>\\s*\"LR\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"RL\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"TB\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"add-html-label-f3a0bd34.js","sources":["../src/diagrams/flowchart/parser/flow.jison","../src/diagrams/flowchart/flowDb.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/util.js","../../../node_modules/.pnpm/dagre-d3-es@7.0.9/node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n%x string\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%x dir\n%x vertex\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\\%\\%(?!\\{)[^\\n]* /* skip comments */\n[^\\}]\\%\\%[^\\n]* /* skip comments */\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n// <acc_descr_multiline>.*[^\\n]* { return \"acc_descr_line\"}\n[\"] this.begin(\"string\");\n<string>[\"] this.popState();\n<string>[^\"]* return \"STR\";\n\"style\" return 'STYLE';\n\"default\" return 'DEFAULT';\n\"linkStyle\" return 'LINKSTYLE';\n\"interpolate\" return 'INTERPOLATE';\n\"classDef\" return 'CLASSDEF';\n\"class\" return 'CLASS';\n\n/*\n---interactivity command---\n'href' adds a link to the specified node. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"<link>\"' attaches the specified link to the node that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n<href>[\"] this.popState();\n<href>[^\"]* return 'HREF';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified node. 'call' can only be specified when\nthe line was introduced with 'click'.\n'call <callbackname>(<args>)' attaches the function 'callbackname' with the specified\narguments to the node that was specified by 'click'.\nFunction arguments are optional: 'call <callbackname>()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n<callbackname>\\([\\s]*\\) this.popState();\n<callbackname>\\( this.popState(); this.begin(\"callbackargs\");\n<callbackname>[^(]* return 'CALLBACKNAME';\n<callbackargs>\\) this.popState();\n<callbackargs>[^)]* return 'CALLBACKARGS';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing node-id. All commands are attached to\nthat id.\n'click <id>' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n<click>[\\s\\n] this.popState();\n<click>[^\\s\\n]* return 'CLICK';\n\n\"flowchart-elk\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"graph\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"flowchart\" {if(yy.lex.firstGraph()){this.begin(\"dir\");} return 'GRAPH';}\n\"subgraph\" return 'subgraph';\n\"end\"\\b\\s* return 'end';\n\n\"_self\" return 'LINK_TARGET';\n\"_blank\" return 'LINK_TARGET';\n\"_parent\" return 'LINK_TARGET';\n\"_top\" return 'LINK_TARGET';\n\n<dir>(\\r?\\n)*\\s*\\n { this.popState(); return 'NODIR'; }\n<dir>\\s*\"LR\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"RL\" { this.popState(); return 'DIR'; }\n<dir>\\s*\"TB\" { thisLine truncated
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"arc-1bd4335b.js","sources":["../../../node_modules/.pnpm/d3-shape@3.1.0/node_modules/d3-shape/src/arc.js"],"sourcesContent":["import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) *Line truncated
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"arc-7c943a40.js","sources":["../../../node_modules/.pnpm/d3-shape@3.1.0/node_modules/d3-shape/src/arc.js"],"sourcesContent":["import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) *Line truncated
|
||||
@@ -0,0 +1,6 @@
|
||||
function t(r) {
|
||||
return typeof r == "object" && "length" in r ? r : Array.from(r);
|
||||
}
|
||||
export {
|
||||
t as a
|
||||
};
|
||||
@@ -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;"}
|
||||
@@ -0,0 +1,6 @@
|
||||
function array(x) {
|
||||
return typeof x === "object" && "length" in x ? x : Array.from(x);
|
||||
}
|
||||
export {
|
||||
array as a
|
||||
};
|
||||
@@ -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;"}
|
||||
@@ -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;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-03ae1c00.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-8889d224.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-a7af8508.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-adf7b82c.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-f9e67060.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"c4Diagram-fa9ef55f.js","sources":["../src/diagrams/c4/parser/c4Diagram.jison","../src/diagrams/c4/c4Db.js","../src/diagrams/c4/svgDraw.js","../src/diagrams/c4/c4Renderer.js","../src/diagrams/c4/styles.js","../src/diagrams/c4/c4Diagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2022 mzhx.meng@gmail.com\n * MIT license.\n */\n\n/* lexical grammar */\n%lex\n\n/* context */\n%x person\n%x person_ext\n%x system\n%x system_db\n%x system_queue\n%x system_ext\n%x system_ext_db\n%x system_ext_queue\n%x boundary\n%x enterprise_boundary\n%x system_boundary\n%x rel\n%x birel\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n\n/* container */\n%x container\n%x container_db\n%x container_queue\n%x container_ext\n%x container_ext_db\n%x container_ext_queue\n%x container_boundary\n\n/* component */\n%x component\n%x component_db\n%x component_queue\n%x component_ext\n%x component_ext_db\n%x component_ext_queue\n\n/* Dynamic diagram */\n%x rel_index\n%x index\n\n/* Deployment diagram */\n%x node\n%x node_l\n%x node_r\n\n/* Relationship Types */\n%x rel\n%x rel_bi\n%x rel_u\n%x rel_d\n%x rel_l\n%x rel_r\n%x rel_b\n\n/* Custom tags/stereotypes */\n%x update_el_style\n%x update_rel_style\n%x update_layout_config\n\n%x attribute\n%x string\n%x string_kv\n%x string_kv_key\n%x string_kv_value\n\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n\n%%\n\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n.*direction\\s+TB[^\\n]* return 'direction_tb';\n.*direction\\s+BT[^\\n]* return 'direction_bt';\n.*direction\\s+RL[^\\n]* return 'direction_rl';\n.*direction\\s+LR[^\\n]* return 'direction_lr';\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\n\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\n\\%\\%(?!\\{)*[^\\n]*(\\r?\\n?)+ /* skip comments */\n\\%\\%[^\\n]*(\\r?\\n)* c /* skip comments */\n\n\\s*(\\r?\\n)+ return 'NEWLINE';\n\\s+ /* skip whitespace */\n\"C4Context\" return 'C4_CONTEXT';\n\"C4Container\" return 'C4_CONTAINER';\n\"C4Component\" return 'C4_COMPONENT';\n\"C4Dynamic\" return 'C4_DYNAMIC';\n\"C4Deployment\" return 'C4_DEPLOYMENT';\n\n\"Person_Ext\" { this.begin(\"person_ext\"); return 'PERSON_EXT';}\n\"Person\" { this.begin(\"person\"); return 'PERSON';}\n\"SystemQueue_Ext\" { this.begin(\"system_ext_queue\"); return 'SYSTEM_EXT_QUEUE';}\n\"SystemDb_Ext\" { this.begin(\"system_ext_db\"); return 'SYSTEM_EXT_DB';}\n\"System_Ext\" { this.begin(\"system_ext\"); return 'SYSTEM_EXT';}\n\"SystemQueue\" { this.begin(\"system_queue\"); return 'SYSTEM_QUEUE';}\n\"SystemDb\" { this.begin(\"system_db\"); return 'SYSTEM_DB';}\n\"System\" { this.begin(\"system\"); return 'SYSTEM';}\n\n\"Boundary\" { this.begin(\"boundary\"); return 'BOUNDARY';}\n\"Enterprise_Boundary\" { this.begin(\"enterprise_boundary\"); return 'ENTERPRISE_BOUNDARY';}\n\"System_Boundary\" { this.begin(\"system_boundary\"); return 'SYSTEM_BOUNDARY';}\n\n\"ContainerQueue_Ext\" { this.begin(\"container_ext_queue\"); return 'CONTAINER_EXT_QUEUE';}\n\"ContainerDb_Ext\" { this.begin(\"container_ext_db\"); return 'CONTAINER_EXT_DB';}\n\"Container_Ext\" { thisLine truncated
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"classDiagram-17eafd8a.js","sources":["../src/diagrams/class/classRenderer.js","../src/diagrams/class/classDiagram.ts"],"sourcesContent":["import { select } from 'd3';\nimport { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../setupGraphViewbox';\nimport { getConfig } from '../../config';\n\nlet idCache = {};\nconst padding = 20;\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n * @param {any} _version\n * @param diagObj\n */\nexport const draw = function (text, id, _version, diagObj) {\n const conf = getConfig().class;\n idCache = {};\n // diagObj.db.clear();\n // diagObj.parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n\n for (const key of keys) {\n const classDef = classes[key];\n const node = svgDraw.drawLine truncated
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"classDiagram-3ab3550d.js","sources":["../src/diagrams/class/classRenderer.js","../src/diagrams/class/classDiagram.ts"],"sourcesContent":["import { select } from 'd3';\nimport { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../setupGraphViewbox';\nimport { getConfig } from '../../config';\n\nlet idCache = {};\nconst padding = 20;\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n * @param {any} _version\n * @param diagObj\n */\nexport const draw = function (text, id, _version, diagObj) {\n const conf = getConfig().class;\n idCache = {};\n // diagObj.db.clear();\n // diagObj.parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n\n for (const key of keys) {\n const classDef = classes[key];\n const node = svgDraw.drawLine truncated
|
||||