@diplodoc/mermaid-extension 1.4.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -67
- package/build/react/index.d.ts +3 -2
- package/build/react/index.js +15 -4
- package/build/react/index.js.map +2 -2
- package/build/runtime/index-node.css +2 -0
- package/build/runtime/index-node.css.map +7 -0
- package/build/runtime/index-node.js +251 -251
- package/build/runtime/index-node.js.map +4 -4
- package/build/runtime/index.css +82 -0
- package/build/runtime/index.css.map +7 -0
- package/build/runtime/index.js +9 -38
- package/build/runtime/index.js.map +3 -3
- package/build/types.d.ts +2 -0
- package/package.json +13 -11
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* src/runtime/zoom.scss */
|
|
2
|
+
:root {
|
|
3
|
+
--mermaid-zoom-control-size: 20px;
|
|
4
|
+
--mermaid-zoom-control-pad: 5px;
|
|
5
|
+
--mermaid-zoom-control-color: #000;
|
|
6
|
+
}
|
|
7
|
+
[data-mermaid-zoom-enabled="1"] {
|
|
8
|
+
position: relative;
|
|
9
|
+
}
|
|
10
|
+
[data-mermaid-zoom-enabled="1"] > svg {
|
|
11
|
+
outline: solid 1px var(--mermaid-zoom-control-color);
|
|
12
|
+
}
|
|
13
|
+
@keyframes mermaid-zoom-menu-controls-fadein {
|
|
14
|
+
from {
|
|
15
|
+
transform: translateY(-100%);
|
|
16
|
+
}
|
|
17
|
+
to {
|
|
18
|
+
transform: translateY(0);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
.mermaid-zoom-menu {
|
|
22
|
+
position: sticky;
|
|
23
|
+
top: 0;
|
|
24
|
+
height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
.mermaid-zoom-menu-controls {
|
|
28
|
+
position: absolute;
|
|
29
|
+
right: 0;
|
|
30
|
+
top: 0;
|
|
31
|
+
height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);
|
|
32
|
+
width: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);
|
|
33
|
+
animation: mermaid-zoom-menu-controls-fadein ease 0.2s;
|
|
34
|
+
}
|
|
35
|
+
.mermaid-zoom-menu-control {
|
|
36
|
+
position: absolute;
|
|
37
|
+
width: var(--mermaid-zoom-control-size);
|
|
38
|
+
height: var(--mermaid-zoom-control-size);
|
|
39
|
+
pointer-events: all;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
transition: all 0.2s;
|
|
42
|
+
}
|
|
43
|
+
.mermaid-zoom-menu-control:hover {
|
|
44
|
+
transform: scale(1.3);
|
|
45
|
+
}
|
|
46
|
+
.mermaid-zoom-menu-control:active {
|
|
47
|
+
transform: scale(1);
|
|
48
|
+
}
|
|
49
|
+
.mermaid-zoom-menu-control[data-action=up] {
|
|
50
|
+
right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
51
|
+
bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);
|
|
52
|
+
}
|
|
53
|
+
.mermaid-zoom-menu-control[data-action=down] {
|
|
54
|
+
right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
55
|
+
bottom: var(--mermaid-zoom-control-pad);
|
|
56
|
+
}
|
|
57
|
+
.mermaid-zoom-menu-control[data-action=reset] {
|
|
58
|
+
right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
59
|
+
bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
60
|
+
}
|
|
61
|
+
.mermaid-zoom-menu-control[data-action=left] {
|
|
62
|
+
right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);
|
|
63
|
+
bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
64
|
+
}
|
|
65
|
+
.mermaid-zoom-menu-control[data-action=right] {
|
|
66
|
+
right: var(--mermaid-zoom-control-pad);
|
|
67
|
+
bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);
|
|
68
|
+
}
|
|
69
|
+
.mermaid-zoom-menu-control[data-action=zoomout] {
|
|
70
|
+
right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);
|
|
71
|
+
bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);
|
|
72
|
+
}
|
|
73
|
+
.mermaid-zoom-menu-control[data-action=zoomin] {
|
|
74
|
+
right: var(--mermaid-zoom-control-pad);
|
|
75
|
+
bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);
|
|
76
|
+
}
|
|
77
|
+
.mermaid-zoom-menu-control svg {
|
|
78
|
+
color: var(--mermaid-zoom-control-color);
|
|
79
|
+
width: var(--mermaid-zoom-control-size);
|
|
80
|
+
height: var(--mermaid-zoom-control-size);
|
|
81
|
+
}
|
|
82
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/zoom.scss"],
|
|
4
|
+
"sourcesContent": [":root {\n --mermaid-zoom-control-size: 20px;\n --mermaid-zoom-control-pad: 5px;\n --mermaid-zoom-control-color: #000;\n}\n\n[data-mermaid-zoom-enabled='1'] {\n position: relative;\n\n & > svg {\n outline: solid 1px var(--mermaid-zoom-control-color);\n }\n}\n\n@keyframes mermaid-zoom-menu-controls-fadein {\n from {\n transform: translateY(-100%);\n }\n\n to {\n transform: translateY(0);\n }\n}\n\n.mermaid-zoom-menu {\n position: sticky;\n top: 0;\n height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n overflow: hidden;\n\n &-controls {\n position: absolute;\n right: 0;\n top: 0;\n height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n width: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n animation: mermaid-zoom-menu-controls-fadein ease 0.2s;\n }\n\n &-control {\n position: absolute;\n width: var(--mermaid-zoom-control-size);\n height: var(--mermaid-zoom-control-size);\n pointer-events: all;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n transform: scale(1.3);\n }\n\n &:active {\n transform: scale(1);\n }\n\n &[data-action='up'] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: calc(\n var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3\n );\n }\n\n &[data-action='down'] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: var(--mermaid-zoom-control-pad);\n }\n\n &[data-action='reset'] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n }\n\n &[data-action='left'] {\n right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n }\n\n &[data-action='right'] {\n right: var(--mermaid-zoom-control-pad);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n }\n\n &[data-action='zoomout'] {\n right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n bottom: calc(\n var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3\n );\n }\n\n &[data-action='zoomin'] {\n right: var(--mermaid-zoom-control-pad);\n bottom: calc(\n var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3\n );\n }\n\n svg {\n color: var(--mermaid-zoom-control-color);\n width: var(--mermaid-zoom-control-size);\n height: var(--mermaid-zoom-control-size);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA;AACI,+BAAA;AACA,8BAAA;AACA,gCAAA;;AAGJ,CAAA;AACI,YAAA;;AAEA,CAAA,+BAAA,EAAA;AACI,WAAA,MAAA,IAAA,IAAA;;AAIR,WAAA;AACI;AACI,eAAA,WAAA;;AAGJ;AACI,eAAA,WAAA;;;AAIR,CAAA;AACI,YAAA;AACA,OAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;AACA,YAAA;;AAEA,CAAA;AACI,YAAA;AACA,SAAA;AACA,OAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;AACA,SAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;AACA,aAAA,kCAAA,KAAA;;AAGJ,CAAA;AACI,YAAA;AACA,SAAA,IAAA;AACA,UAAA,IAAA;AACA,kBAAA;AACA,UAAA;AACA,cAAA,IAAA;;AAEA,CARJ,yBAQI;AACI,aAAA,MAAA;;AAGJ,CAZJ,yBAYI;AACI,aAAA,MAAA;;AAGJ,CAhBJ,yBAgBI,CAAA;AACI,SAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;;AAKJ,CAvBJ,yBAuBI,CAAA;AACI,SAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;AACA,UAAA,IAAA;;AAGJ,CA5BJ,yBA4BI,CAAA;AACI,SAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;;AAGJ,CAjCJ,yBAiCI,CAAA;AACI,SAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;;AAGJ,CAtCJ,yBAsCI,CAAA;AACI,SAAA,IAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,IAAA,4BAAA,EAAA;;AAGJ,CA3CJ,yBA2CI,CAAA;AACI,SAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;;AAKJ,CAlDJ,yBAkDI,CAAA;AACI,SAAA,IAAA;AACA,UAAA,KAAA,IAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,4BAAA,EAAA;;AAKJ,CAzDJ,0BAyDI;AACI,SAAA,IAAA;AACA,SAAA,IAAA;AACA,UAAA,IAAA;;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/build/runtime/index.js
CHANGED
|
@@ -1,42 +1,12 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
1
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
2
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
3
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
7
4
|
};
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
for (let key of __getOwnPropNames(from))
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
-
}
|
|
14
|
-
return to;
|
|
15
|
-
};
|
|
16
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
17
|
-
|
|
18
|
-
// style-helper:index.js
|
|
19
|
-
function inject_style(text) {
|
|
20
|
-
if (typeof document !== "undefined") {
|
|
21
|
-
var style = document.createElement("style");
|
|
22
|
-
var node = document.createTextNode(text);
|
|
23
|
-
style.appendChild(node);
|
|
24
|
-
document.head.appendChild(style);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
var init_index = __esm({
|
|
28
|
-
"style-helper:index.js"() {
|
|
29
|
-
"use strict";
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
5
|
|
|
33
6
|
// src/runtime/zoom.scss
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"use strict";
|
|
38
|
-
init_index();
|
|
39
|
-
inject_style(':root{--mermaid-zoom-control-size: 20px;--mermaid-zoom-control-pad: 5px;--mermaid-zoom-control-color: #000}[data-mermaid-zoom-enabled="1"]{position:relative}[data-mermaid-zoom-enabled="1"]>svg{outline:solid 1px var(--mermaid-zoom-control-color)}@keyframes mermaid-zoom-menu-controls-fadein{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mermaid-zoom-menu{position:sticky;top:0;height:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);overflow:hidden}.mermaid-zoom-menu-controls{position:absolute;right:0;top:0;height:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);width:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);animation:mermaid-zoom-menu-controls-fadein ease .2s}.mermaid-zoom-menu-control{position:absolute;width:var(--mermaid-zoom-control-size);height:var(--mermaid-zoom-control-size);pointer-events:all;cursor:pointer;transition:all .2s}.mermaid-zoom-menu-control:hover{transform:scale(1.3)}.mermaid-zoom-menu-control:active{transform:scale(1)}.mermaid-zoom-menu-control[data-action=up]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control[data-action=down]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:var(--mermaid-zoom-control-pad)}.mermaid-zoom-menu-control[data-action=reset]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=left]{right:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=right]{right:var(--mermaid-zoom-control-pad);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=zoomout]{right:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control[data-action=zoomin]{right:var(--mermaid-zoom-control-pad);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control svg{color:var(--mermaid-zoom-control-color);width:var(--mermaid-zoom-control-size);height:var(--mermaid-zoom-control-size)}');
|
|
7
|
+
var require_zoom = __commonJS({
|
|
8
|
+
"src/runtime/zoom.scss"(exports, module) {
|
|
9
|
+
module.exports = {};
|
|
40
10
|
}
|
|
41
11
|
});
|
|
42
12
|
|
|
@@ -335,7 +305,7 @@ function bindZoomOptions(element, options) {
|
|
|
335
305
|
setZoomable(element, "1");
|
|
336
306
|
if (_options.inlineStyle !== false && !styleInjected) {
|
|
337
307
|
styleInjected = true;
|
|
338
|
-
|
|
308
|
+
require_zoom();
|
|
339
309
|
}
|
|
340
310
|
for (const key of Object.keys(_options)) {
|
|
341
311
|
set(element.dataset, key, _options[key]);
|
|
@@ -390,7 +360,7 @@ async function next() {
|
|
|
390
360
|
svg = result.svg;
|
|
391
361
|
bindFunctions = result.bindFunctions;
|
|
392
362
|
} catch {
|
|
393
|
-
|
|
363
|
+
continue;
|
|
394
364
|
}
|
|
395
365
|
let svgWithNonce = svg;
|
|
396
366
|
if (nonce) {
|
|
@@ -417,7 +387,8 @@ async function next() {
|
|
|
417
387
|
render: mermaid.render,
|
|
418
388
|
parseError: mermaid.parseError,
|
|
419
389
|
parse: mermaid.parse,
|
|
420
|
-
setParseErrorHandler: mermaid.setParseErrorHandler
|
|
390
|
+
setParseErrorHandler: mermaid.setParseErrorHandler,
|
|
391
|
+
registerLayoutLoaders: mermaid.registerLayoutLoaders
|
|
421
392
|
});
|
|
422
393
|
return next();
|
|
423
394
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["export function inject_style(text) {\n if (typeof document !== 'undefined') {\n var style = document.createElement('style')\n var node = document.createTextNode(text)\n style.appendChild(node)\n document.head.appendChild(style)\n }\n}", "import { inject_style } from \"__style_helper__\"\ninject_style(\":root{--mermaid-zoom-control-size: 20px;--mermaid-zoom-control-pad: 5px;--mermaid-zoom-control-color: #000}[data-mermaid-zoom-enabled=\\\"1\\\"]{position:relative}[data-mermaid-zoom-enabled=\\\"1\\\"]>svg{outline:solid 1px var(--mermaid-zoom-control-color)}@keyframes mermaid-zoom-menu-controls-fadein{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mermaid-zoom-menu{position:sticky;top:0;height:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);overflow:hidden}.mermaid-zoom-menu-controls{position:absolute;right:0;top:0;height:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);width:calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);animation:mermaid-zoom-menu-controls-fadein ease .2s}.mermaid-zoom-menu-control{position:absolute;width:var(--mermaid-zoom-control-size);height:var(--mermaid-zoom-control-size);pointer-events:all;cursor:pointer;transition:all .2s}.mermaid-zoom-menu-control:hover{transform:scale(1.3)}.mermaid-zoom-menu-control:active{transform:scale(1)}.mermaid-zoom-menu-control[data-action=up]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control[data-action=down]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:var(--mermaid-zoom-control-pad)}.mermaid-zoom-menu-control[data-action=reset]{right:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=left]{right:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=right]{right:var(--mermaid-zoom-control-pad);bottom:calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2)}.mermaid-zoom-menu-control[data-action=zoomout]{right:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control[data-action=zoomin]{right:var(--mermaid-zoom-control-pad);bottom:calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3)}.mermaid-zoom-menu-control svg{color:var(--mermaid-zoom-control-color);width:var(--mermaid-zoom-control-size);height:var(--mermaid-zoom-control-size)}\")", "import type {ExposedAPI, InitConfig} from '../types';\nimport type {MermaidConfig} from 'mermaid';\n\nimport mermaid from 'mermaid';\nimport dedent from 'ts-dedent';\n\nimport {bindZoomOptions, zoomBehavior} from './zoom';\n\nconst DEFAULT_MERMAID_CONFIG: MermaidConfig = {\n startOnLoad: false,\n // To avoid breaking changes after updating to https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0\n gitGraph: {useMaxWidth: false},\n sankey: {useMaxWidth: false},\n theme: 'forest',\n};\n\nmermaid.initialize(DEFAULT_MERMAID_CONFIG);\n\nconst jsonp = (window.mermaidJsonp = window.mermaidJsonp || []);\nconst queue = jsonp.splice(0, jsonp.length);\n\njsonp.push = function (...args) {\n args.forEach((callback) => {\n queue.push(callback);\n unqueue();\n });\n\n return queue.length;\n};\n\nlet processing = false;\n\nfunction unqueue() {\n if (!processing) {\n next();\n }\n}\n\nasync function next(): Promise<void> {\n processing = true;\n\n const callback = queue.shift();\n if (callback) {\n await callback({\n run: async ({querySelector = '.mermaid', nodes, nonce} = {}) => {\n const nodesList: Element[] = Array.from(\n nodes || document.querySelectorAll(querySelector),\n );\n const {zoom = false} = mermaid.mermaidAPI.getConfig() as InitConfig;\n\n for (const element of nodesList) {\n const id = `mermaid-${Date.now()}`;\n const content = decodeURIComponent(element.getAttribute('data-content') || '');\n let dedentedContent = dedent(content);\n\n if (content.replace(/\\n*$/, '').endsWith(' ')) {\n dedentedContent += ' ';\n }\n const text = dedentedContent.trimStart().replace(/<br\\s*\\/?>/gi, '<br/>');\n\n let svg: string, bindFunctions: ((element: Element) => void) | undefined;\n\n try {\n const result = await mermaid.render(id, text, element);\n svg = result.svg;\n bindFunctions = result.bindFunctions;\n } catch {\n return;\n }\n\n let svgWithNonce = svg;\n if (nonce) {\n svgWithNonce = svgWithNonce.replace(/<style>/g, `<style nonce=\"${nonce}\">`);\n }\n element.innerHTML = svgWithNonce;\n\n if (bindFunctions) {\n bindFunctions(element);\n }\n\n bindZoomOptions(element as HTMLElement, zoom);\n }\n },\n initialize: (config) => {\n mermaid.initialize({\n ...DEFAULT_MERMAID_CONFIG,\n ...(config as MermaidConfig),\n });\n\n const {zoom} = mermaid.mermaidAPI.getConfig() as InitConfig;\n\n document.removeEventListener('click', zoomBehavior);\n if (zoom) {\n document.addEventListener('click', zoomBehavior);\n }\n },\n render: mermaid.render,\n parseError: mermaid.parseError,\n parse: mermaid.parse,\n setParseErrorHandler: mermaid.setParseErrorHandler,\n } as ExposedAPI);\n\n return next();\n }\n\n processing = false;\n}\n\nunqueue();\n", "import type {ZoomOptions} from '../types';\n\nimport * as d3 from 'd3';\n\nimport {attachKeyboard, attachMenu} from './zoom-control';\n\nconst DATA_MERMAID_ZOOM = 'mermaidZoom';\n\nfunction datakey(key: string) {\n return key.replace(/^(.)/, (_, $1) => $1.toUpperCase());\n}\n\nfunction set(dataset: DOMStringMap, key: string, value: unknown) {\n dataset[DATA_MERMAID_ZOOM + datakey(key)] = String(value);\n}\n\nfunction get(dataset: DOMStringMap, key: string) {\n return dataset[DATA_MERMAID_ZOOM + datakey(key)];\n}\n\nconst createInteraction = (svg: Element): HTMLElement => {\n const interaction = document.createElement('div');\n const {width, height} = svg.getBoundingClientRect();\n const style = `top: 0; left: 0; width: ${width}px; height: ${height}px; position: absolute; pointer-events: none;`;\n\n interaction.innerHTML = `<div class=\"mermaid-zoom-interaction\" style=\"${style}\"></div>`;\n\n return interaction.firstElementChild as HTMLElement;\n};\n\nconst enableZoom = (element: HTMLElement, options: ZoomOptions) => {\n const svg = element.querySelector('svg') as SVGSVGElement;\n const {maximumScale} = options;\n const dispose: Function[] = [];\n\n const $svg = d3.select<SVGSVGElement, unknown>(svg);\n\n if (!svg.querySelector('g.zoom-layer')) {\n const layer = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n layer.setAttribute('class', 'zoom-layer');\n Array.from(svg.childNodes).forEach((child) => {\n layer.appendChild(child);\n });\n svg.appendChild(layer);\n }\n\n const $inner = $svg.select<SVGGElement>('g.zoom-layer');\n const interaction = createInteraction(svg);\n\n const zoom = d3\n .zoom<SVGSVGElement, unknown>()\n .on('zoom', (event: ZoomEvent) => $inner.attr('transform', String(event.transform)))\n .scaleExtent([1, maximumScale]);\n\n $svg.call(zoom);\n dispose.push(() => $svg.on('.zoom', null));\n\n if (options.resetOnBlur) {\n dispose.push(() => {\n $svg.call(zoom.transform, d3.zoomIdentity);\n });\n }\n\n if (options.showMenu) {\n dispose.push(attachMenu(interaction, $svg, $inner, zoom));\n }\n\n if (options.bindKeys) {\n dispose.push(attachKeyboard($svg, $inner, zoom));\n }\n\n element.appendChild(interaction);\n dispose.push(() => element.removeChild(interaction));\n\n return () => dispose.forEach((action) => action());\n};\n\nfunction getZoomable(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-allowed=\"1\"]') as HTMLElement | null;\n}\n\nfunction getZoomableSvg(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-allowed=\"1\"] > svg') as HTMLElement | null;\n}\n\nfunction getActiveSvg(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-enabled=\"1\"] > svg') as HTMLElement | null;\n}\n\nfunction getActiveInteraction(element: HTMLElement) {\n return element.closest(\n '[data-mermaid-zoom-enabled=\"1\"] > .mermaid-zoom-interaction',\n ) as HTMLElement | null;\n}\n\nfunction setZoomable(element: HTMLElement, value: string) {\n set(element.dataset, 'allowed', value);\n}\n\nfunction isZoomEnabled(element: HTMLElement) {\n return get(element.dataset, 'enabled') === '1';\n}\n\nfunction setZoomEnabled(element: HTMLElement, value: string) {\n set(element.dataset, 'enabled', value);\n}\n\nexport function zoomBehavior(event: Event) {\n const element = getZoomable(event.target as HTMLElement);\n const svg = getZoomableSvg(event.target as HTMLElement);\n\n if (!element || !svg || isZoomEnabled(element as HTMLElement)) {\n return;\n }\n\n setZoomEnabled(element, '1');\n\n const options = getZoomOptions(element);\n const disableZoom = enableZoom(element, options);\n const onOuterClick = (event: Event) => {\n const target = event.target as HTMLElement;\n if (!getActiveSvg(target) && !getActiveInteraction(target)) {\n disableZoom();\n setZoomEnabled(element, '0');\n document.removeEventListener('mousedown', onOuterClick, true);\n }\n };\n\n document.addEventListener('mousedown', onOuterClick, true);\n}\n\nfunction getZoomOptions(element: HTMLElement): ZoomOptions {\n return {\n maximumScale: Number(get(element.dataset, 'maximumScale')),\n resetOnBlur: get(element.dataset, 'resetOnBlur') === 'true',\n showMenu: get(element.dataset, 'showMenu') === 'true',\n bindKeys: get(element.dataset, 'bindKeys') === 'true',\n };\n}\n\nlet styleInjected = false;\nexport function bindZoomOptions(element: HTMLElement, options: Partial<ZoomOptions> | boolean) {\n const _options: ZoomOptions = Object.assign(\n {\n maximumScale: 5,\n resetOnBlur: false,\n showMenu: false,\n bindKeys: false,\n },\n options,\n );\n\n if (options === false) {\n setZoomable(element, '0');\n setZoomEnabled(element, '0');\n return;\n }\n\n setZoomable(element, '1');\n if (_options.inlineStyle !== false && !styleInjected) {\n styleInjected = true;\n require('./zoom.scss');\n }\n\n for (const key of Object.keys(_options)) {\n set(element.dataset, key, _options[key as keyof typeof _options]);\n }\n}\n", "import * as d3 from 'd3';\nimport MagnifierPlusIcon from '@gravity-ui/icons/svgs/magnifier-plus.svg';\nimport MagnifierMinusIcon from '@gravity-ui/icons/svgs/magnifier-minus.svg';\nimport CaretUpIcon from '@gravity-ui/icons/svgs/caret-up.svg';\nimport CaretDownIcon from '@gravity-ui/icons/svgs/caret-down.svg';\nimport CaretLeftIcon from '@gravity-ui/icons/svgs/caret-left.svg';\nimport CaretRightIcon from '@gravity-ui/icons/svgs/caret-right.svg';\nimport CircleIcon from '@gravity-ui/icons/svgs/circle.svg';\n\nconst ZOOM_SPEED = 1;\nconst MOVE_SPEED = 500;\nconst CONTROLS_CLASS = 'mermaid-zoom-menu-control';\nconst CONTROLS: Record<string, Control> = {\n up: ['move up', CaretUpIcon, ['KeyW', 'w'], [0, 0, 1]],\n down: ['move down', CaretDownIcon, ['KeyS', 's'], [0, 0, -1]],\n left: ['move left', CaretLeftIcon, ['KeyA', 'a'], [0, 1, 0]],\n right: ['move right', CaretRightIcon, ['KeyD', 'd'], [0, -1, 0]],\n zoomin: ['zoom in', MagnifierPlusIcon, ['KeyE', 'e'], [1, 0, 0]],\n zoomout: ['zoom out', MagnifierMinusIcon, ['KeyQ', 'q'], [-1, 0, 0]],\n reset: ['reset', CircleIcon, ['KeyR', 'r'], d3.zoomIdentity],\n};\n\ntype Transform = [number, number, number];\ntype Control = [string, string, [string, string], Transform | d3.ZoomTransform];\ntype Action = keyof typeof CONTROLS;\n\nconst raf = () => new Promise((resolve) => requestAnimationFrame(resolve));\nconst sum = (a1: number[], a2: number[]) => a1.map((item, index) => item + a2[index]);\n\nconst transitions = new WeakMap();\nconst transition = ($svg: SVGSelection, $inner: GSelection, zoom: Zoom) => {\n if (transitions.has(zoom)) {\n return transitions.get(zoom);\n }\n\n const actions = new Set<Action>();\n let loop: Promise<void> | null = null;\n\n const iterarte = async () => {\n while (actions.size) {\n const t = Date.now();\n\n let [dk, dx, dy] = [0, 0, 0];\n for (const action of actions) {\n const d = CONTROLS[action][3];\n if (d === d3.zoomIdentity) {\n try {\n await $svg.transition().call(zoom.transform, d3.zoomIdentity).end();\n } catch {}\n } else {\n [dk, dx, dy] = sum([dk, dx, dy], d as Transform);\n }\n }\n\n await raf();\n\n const {k} = d3.zoomTransform($inner.node() as Element);\n const dt = (Date.now() - t) / 1000;\n\n [dk, dx, dy] = [dk * dt * ZOOM_SPEED, dx * dt * MOVE_SPEED, dy * dt * MOVE_SPEED];\n\n if (dx || dy) {\n zoom.translateBy($svg, dx, dy);\n }\n\n if (dk) {\n zoom.scaleTo($svg, k + dk);\n }\n }\n };\n\n transitions.set(zoom, {\n add(action: Action) {\n actions.add(action);\n\n if (!loop) {\n loop = iterarte().finally(() => {\n loop = null;\n });\n }\n },\n\n delete(action: Action) {\n actions.delete(action);\n },\n });\n\n return transitions.get(zoom);\n};\n\nexport const attachKeyboard = ($svg: SVGSelection, $inner: GSelection, zoom: Zoom) => {\n const ts = transition($svg, $inner, zoom);\n\n const keys: Record<string, Action> = Object.keys(CONTROLS).reduce(\n (acc, key) => {\n const control = CONTROLS[key] as Control;\n const bind = control[2][0];\n\n acc[bind] = key;\n\n return acc;\n },\n {} as Record<string, Action>,\n );\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.altKey || event.ctrlKey || event.shiftKey || event.metaKey) {\n return;\n }\n\n const action = keys[event.code];\n if (action) {\n event.preventDefault();\n ts.add(action);\n }\n };\n\n const handleKeyup = (event: KeyboardEvent) => {\n const action = keys[event.code];\n if (action) {\n event.preventDefault();\n ts.delete(action);\n }\n };\n\n document.addEventListener('keydown', handleKeydown);\n document.addEventListener('keyup', handleKeyup);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n document.removeEventListener('keyup', handleKeyup);\n };\n};\n\nexport const attachMenu = (\n container: HTMLElement,\n $svg: SVGSelection,\n $inner: GSelection,\n zoom: Zoom,\n) => {\n const ts = transition($svg, $inner, zoom);\n\n const build = document.createElement('div');\n const buttons = Object.keys(CONTROLS)\n .map((key) => [key, ...CONTROLS[key]])\n .reduce(\n (acc, [name, title, icon]) =>\n acc +\n `\n <div class=\"${CONTROLS_CLASS}\" title=\"${title}\" data-action=\"${name}\">\n ${icon}\n </div>`,\n '',\n );\n\n build.innerHTML = `\n <div class=\"mermaid-zoom-menu\">\n <div class=\"mermaid-zoom-menu-controls\">\n ${buttons}\n </div>\n </div>\n `;\n\n const menu = build.firstElementChild as HTMLElement;\n\n let controlActive: Action | null = null;\n const resetTransition = () => {\n ts.delete(controlActive);\n controlActive = null;\n document.removeEventListener('mouseup', resetTransition, true);\n };\n\n const handleControlClick = async (event: MouseEvent) => {\n // Disable external text selection\n if (event.detail > 1) {\n event.preventDefault();\n }\n\n const element = (event.target as HTMLElement).closest('.mermaid-zoom-menu-control');\n\n if (!element) {\n return;\n }\n\n controlActive = (element as HTMLElement).dataset.action as Action;\n ts.add(controlActive as Action);\n document.addEventListener('mouseup', resetTransition, true);\n };\n\n menu.addEventListener('mousedown', handleControlClick);\n container.appendChild(menu);\n\n return () => {\n resetTransition();\n container.removeChild(menu);\n menu.removeEventListener('mousedown', handleControlClick);\n };\n};\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.75 11a4.25 4.25 0 1 0 0-8.5 4.25 4.25 0 0 0 0 8.5m0 1.5a5.73 5.73 0 0 0 3.501-1.188l2.719 2.718a.75.75 0 1 0 1.06-1.06l-2.718-2.719A5.75 5.75 0 1 0 6.75 12.5m.75-7.75a.75.75 0 0 0-1.5 0V6H4.75a.75.75 0 0 0 0 1.5H6v1.25a.75.75 0 0 0 1.5 0V7.5h1.25a.75.75 0 0 0 0-1.5H7.5z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.75 11a4.25 4.25 0 1 0 0-8.5 4.25 4.25 0 0 0 0 8.5m0 1.5a5.73 5.73 0 0 0 3.501-1.188l2.719 2.718a.75.75 0 1 0 1.06-1.06l-2.718-2.719A5.75 5.75 0 1 0 6.75 12.5m-2-6.5a.75.75 0 0 0 0 1.5h4a.75.75 0 0 0 0-1.5z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M11.823 9.295a.73.73 0 0 1-.552 1.205H4.729a.73.73 0 0 1-.552-1.205L7.2 5.786a1 1 0 0 1 .757-.347h.084a1 1 0 0 1 .757.347z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M4.177 6.705A.73.73 0 0 1 4.729 5.5h6.542a.73.73 0 0 1 .552 1.205L8.8 10.214a1 1 0 0 1-.757.347h-.084a1 1 0 0 1-.757-.347z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M9.295 4.177a.73.73 0 0 1 1.205.552v6.542a.73.73 0 0 1-1.205.552L5.786 8.8a1 1 0 0 1-.347-.757v-.084a1 1 0 0 1 .347-.757z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.705 11.823a.73.73 0 0 1-1.205-.552V4.729a.73.73 0 0 1 1.205-.552L10.214 7.2a1 1 0 0 1 .347.757v.084a1 1 0 0 1-.347.757z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14\" clip-rule=\"evenodd\"/></svg>"],
|
|
5
|
-
"mappings": "
|
|
3
|
+
"sources": ["../../src/runtime/zoom.scss", "../../src/runtime/index.ts", "../../src/runtime/zoom.ts", "../../src/runtime/zoom-control.ts", "../../node_modules/@gravity-ui/icons/svgs/magnifier-plus.svg", "../../node_modules/@gravity-ui/icons/svgs/magnifier-minus.svg", "../../node_modules/@gravity-ui/icons/svgs/caret-up.svg", "../../node_modules/@gravity-ui/icons/svgs/caret-down.svg", "../../node_modules/@gravity-ui/icons/svgs/caret-left.svg", "../../node_modules/@gravity-ui/icons/svgs/caret-right.svg", "../../node_modules/@gravity-ui/icons/svgs/circle.svg"],
|
|
4
|
+
"sourcesContent": [":root {\n --mermaid-zoom-control-size: 20px;\n --mermaid-zoom-control-pad: 5px;\n --mermaid-zoom-control-color: #000;\n}\n\n[data-mermaid-zoom-enabled=\"1\"] {\n position: relative;\n}\n[data-mermaid-zoom-enabled=\"1\"] > svg {\n outline: solid 1px var(--mermaid-zoom-control-color);\n}\n\n@keyframes mermaid-zoom-menu-controls-fadein {\n from {\n transform: translateY(-100%);\n }\n to {\n transform: translateY(0);\n }\n}\n.mermaid-zoom-menu {\n position: sticky;\n top: 0;\n height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n overflow: hidden;\n}\n.mermaid-zoom-menu-controls {\n position: absolute;\n right: 0;\n top: 0;\n height: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n width: calc(var(--mermaid-zoom-control-size) * 3 + var(--mermaid-zoom-control-pad) * 4);\n animation: mermaid-zoom-menu-controls-fadein ease 0.2s;\n}\n.mermaid-zoom-menu-control {\n position: absolute;\n width: var(--mermaid-zoom-control-size);\n height: var(--mermaid-zoom-control-size);\n pointer-events: all;\n cursor: pointer;\n transition: all 0.2s;\n}\n.mermaid-zoom-menu-control:hover {\n transform: scale(1.3);\n}\n.mermaid-zoom-menu-control:active {\n transform: scale(1);\n}\n.mermaid-zoom-menu-control[data-action=up] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n}\n.mermaid-zoom-menu-control[data-action=down] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: var(--mermaid-zoom-control-pad);\n}\n.mermaid-zoom-menu-control[data-action=reset] {\n right: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n}\n.mermaid-zoom-menu-control[data-action=left] {\n right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n}\n.mermaid-zoom-menu-control[data-action=right] {\n right: var(--mermaid-zoom-control-pad);\n bottom: calc(var(--mermaid-zoom-control-size) + var(--mermaid-zoom-control-pad) * 2);\n}\n.mermaid-zoom-menu-control[data-action=zoomout] {\n right: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n}\n.mermaid-zoom-menu-control[data-action=zoomin] {\n right: var(--mermaid-zoom-control-pad);\n bottom: calc(var(--mermaid-zoom-control-size) * 2 + var(--mermaid-zoom-control-pad) * 3);\n}\n.mermaid-zoom-menu-control svg {\n color: var(--mermaid-zoom-control-color);\n width: var(--mermaid-zoom-control-size);\n height: var(--mermaid-zoom-control-size);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbWVybWFpZC1leHRlbnNpb24vbWVybWFpZC1leHRlbnNpb24vc3JjL3J1bnRpbWUiLCJzb3VyY2VzIjpbInpvb20uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTs7QUFFQTtFQUNJOzs7QUFJUjtFQUNJO0lBQ0k7O0VBR0o7SUFDSTs7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUtKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBS0o7RUFDSTtFQUNBOztBQUtKO0VBQ0k7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xuICAgIC0tbWVybWFpZC16b29tLWNvbnRyb2wtc2l6ZTogMjBweDtcbiAgICAtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZDogNXB4O1xuICAgIC0tbWVybWFpZC16b29tLWNvbnRyb2wtY29sb3I6ICMwMDA7XG59XG5cbltkYXRhLW1lcm1haWQtem9vbS1lbmFibGVkPScxJ10ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICYgPiBzdmcge1xuICAgICAgICBvdXRsaW5lOiBzb2xpZCAxcHggdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtY29sb3IpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBtZXJtYWlkLXpvb20tbWVudS1jb250cm9scy1mYWRlaW4ge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLm1lcm1haWQtem9vbS1tZW51IHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IGNhbGModmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtc2l6ZSkgKiAzICsgdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtcGFkKSAqIDQpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLWNvbnRyb2xzIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtc2l6ZSkgKiAzICsgdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtcGFkKSAqIDQpO1xuICAgICAgICB3aWR0aDogY2FsYyh2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKSAqIDMgKyB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpICogNCk7XG4gICAgICAgIGFuaW1hdGlvbjogbWVybWFpZC16b29tLW1lbnUtY29udHJvbHMtZmFkZWluIGVhc2UgMC4ycztcbiAgICB9XG5cbiAgICAmLWNvbnRyb2wge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtYWN0aW9uPSd1cCddIHtcbiAgICAgICAgICAgIHJpZ2h0OiBjYWxjKHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICsgdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtcGFkKSAqIDIpO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKFxuICAgICAgICAgICAgICAgIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICogMiArIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZCkgKiAzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWFjdGlvbj0nZG93biddIHtcbiAgICAgICAgICAgIHJpZ2h0OiBjYWxjKHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICsgdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtcGFkKSAqIDIpO1xuICAgICAgICAgICAgYm90dG9tOiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWFjdGlvbj0ncmVzZXQnXSB7XG4gICAgICAgICAgICByaWdodDogY2FsYyh2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKSArIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZCkgKiAyKTtcbiAgICAgICAgICAgIGJvdHRvbTogY2FsYyh2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKSArIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZCkgKiAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1hY3Rpb249J2xlZnQnXSB7XG4gICAgICAgICAgICByaWdodDogY2FsYyh2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKSAqIDIgKyB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpICogMyk7XG4gICAgICAgICAgICBib3R0b206IGNhbGModmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtc2l6ZSkgKyB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpICogMik7XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtYWN0aW9uPSdyaWdodCddIHtcbiAgICAgICAgICAgIHJpZ2h0OiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICsgdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtcGFkKSAqIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWFjdGlvbj0nem9vbW91dCddIHtcbiAgICAgICAgICAgIHJpZ2h0OiBjYWxjKHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICogMiArIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZCkgKiAzKTtcbiAgICAgICAgICAgIGJvdHRvbTogY2FsYyhcbiAgICAgICAgICAgICAgICB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1zaXplKSAqIDIgKyB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpICogM1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1hY3Rpb249J3pvb21pbiddIHtcbiAgICAgICAgICAgIHJpZ2h0OiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1wYWQpO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKFxuICAgICAgICAgICAgICAgIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpICogMiArIHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXBhZCkgKiAzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1tZXJtYWlkLXpvb20tY29udHJvbC1jb2xvcik7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tbWVybWFpZC16b29tLWNvbnRyb2wtc2l6ZSk7XG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLW1lcm1haWQtem9vbS1jb250cm9sLXNpemUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19 */", "import type {ExposedAPI, InitConfig} from '../types';\nimport type {MermaidConfig} from 'mermaid';\n\nimport mermaid from 'mermaid';\nimport dedent from 'ts-dedent';\n\nimport {bindZoomOptions, zoomBehavior} from './zoom';\n\nconst DEFAULT_MERMAID_CONFIG: MermaidConfig = {\n startOnLoad: false,\n // To avoid breaking changes after updating to https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0\n gitGraph: {useMaxWidth: false},\n sankey: {useMaxWidth: false},\n theme: 'forest',\n};\n\nmermaid.initialize(DEFAULT_MERMAID_CONFIG);\n\nconst jsonp = (window.mermaidJsonp = window.mermaidJsonp || []);\nconst queue = jsonp.splice(0, jsonp.length);\n\njsonp.push = function (...args) {\n args.forEach((callback) => {\n queue.push(callback);\n unqueue();\n });\n\n return queue.length;\n};\n\nlet processing = false;\n\nfunction unqueue() {\n if (!processing) {\n next();\n }\n}\n\nasync function next(): Promise<void> {\n processing = true;\n\n const callback = queue.shift();\n if (callback) {\n await callback({\n run: async ({querySelector = '.mermaid', nodes, nonce} = {}) => {\n const nodesList: Element[] = Array.from(\n nodes || document.querySelectorAll(querySelector),\n );\n const {zoom = false} = mermaid.mermaidAPI.getConfig() as InitConfig;\n\n for (const element of nodesList) {\n const id = `mermaid-${Date.now()}`;\n const content = decodeURIComponent(element.getAttribute('data-content') || '');\n let dedentedContent = dedent(content);\n\n if (content.replace(/\\n*$/, '').endsWith(' ')) {\n dedentedContent += ' ';\n }\n const text = dedentedContent.trimStart().replace(/<br\\s*\\/?>/gi, '<br/>');\n\n let svg: string, bindFunctions: ((element: Element) => void) | undefined;\n\n try {\n const result = await mermaid.render(id, text, element);\n svg = result.svg;\n bindFunctions = result.bindFunctions;\n } catch {\n continue;\n }\n\n let svgWithNonce = svg;\n if (nonce) {\n svgWithNonce = svgWithNonce.replace(/<style>/g, `<style nonce=\"${nonce}\">`);\n }\n element.innerHTML = svgWithNonce;\n\n if (bindFunctions) {\n bindFunctions(element);\n }\n\n bindZoomOptions(element as HTMLElement, zoom);\n }\n },\n initialize: (config) => {\n mermaid.initialize({\n ...DEFAULT_MERMAID_CONFIG,\n ...(config as MermaidConfig),\n });\n\n const {zoom} = mermaid.mermaidAPI.getConfig() as InitConfig;\n\n document.removeEventListener('click', zoomBehavior);\n if (zoom) {\n document.addEventListener('click', zoomBehavior);\n }\n },\n render: mermaid.render,\n parseError: mermaid.parseError,\n parse: mermaid.parse,\n setParseErrorHandler: mermaid.setParseErrorHandler,\n registerLayoutLoaders: mermaid.registerLayoutLoaders,\n } as ExposedAPI);\n\n return next();\n }\n\n processing = false;\n}\n\nunqueue();\n", "import type {ZoomOptions} from '../types';\n\nimport * as d3 from 'd3';\n\nimport {attachKeyboard, attachMenu} from './zoom-control';\n\nconst DATA_MERMAID_ZOOM = 'mermaidZoom';\n\nfunction datakey(key: string) {\n return key.replace(/^(.)/, (_, $1) => $1.toUpperCase());\n}\n\nfunction set(dataset: DOMStringMap, key: string, value: unknown) {\n dataset[DATA_MERMAID_ZOOM + datakey(key)] = String(value);\n}\n\nfunction get(dataset: DOMStringMap, key: string) {\n return dataset[DATA_MERMAID_ZOOM + datakey(key)];\n}\n\nconst createInteraction = (svg: Element): HTMLElement => {\n const interaction = document.createElement('div');\n const {width, height} = svg.getBoundingClientRect();\n const style = `top: 0; left: 0; width: ${width}px; height: ${height}px; position: absolute; pointer-events: none;`;\n\n interaction.innerHTML = `<div class=\"mermaid-zoom-interaction\" style=\"${style}\"></div>`;\n\n return interaction.firstElementChild as HTMLElement;\n};\n\nconst enableZoom = (element: HTMLElement, options: ZoomOptions) => {\n const svg = element.querySelector('svg') as SVGSVGElement;\n const {maximumScale} = options;\n const dispose: Function[] = [];\n\n const $svg = d3.select<SVGSVGElement, unknown>(svg);\n\n if (!svg.querySelector('g.zoom-layer')) {\n const layer = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n layer.setAttribute('class', 'zoom-layer');\n Array.from(svg.childNodes).forEach((child) => {\n layer.appendChild(child);\n });\n svg.appendChild(layer);\n }\n\n const $inner = $svg.select<SVGGElement>('g.zoom-layer');\n const interaction = createInteraction(svg);\n\n const zoom = d3\n .zoom<SVGSVGElement, unknown>()\n .on('zoom', (event: ZoomEvent) => $inner.attr('transform', String(event.transform)))\n .scaleExtent([1, maximumScale]);\n\n $svg.call(zoom);\n dispose.push(() => $svg.on('.zoom', null));\n\n if (options.resetOnBlur) {\n dispose.push(() => {\n $svg.call(zoom.transform, d3.zoomIdentity);\n });\n }\n\n if (options.showMenu) {\n dispose.push(attachMenu(interaction, $svg, $inner, zoom));\n }\n\n if (options.bindKeys) {\n dispose.push(attachKeyboard($svg, $inner, zoom));\n }\n\n element.appendChild(interaction);\n dispose.push(() => element.removeChild(interaction));\n\n return () => dispose.forEach((action) => action());\n};\n\nfunction getZoomable(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-allowed=\"1\"]') as HTMLElement | null;\n}\n\nfunction getZoomableSvg(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-allowed=\"1\"] > svg') as HTMLElement | null;\n}\n\nfunction getActiveSvg(element: HTMLElement) {\n return element.closest('[data-mermaid-zoom-enabled=\"1\"] > svg') as HTMLElement | null;\n}\n\nfunction getActiveInteraction(element: HTMLElement) {\n return element.closest(\n '[data-mermaid-zoom-enabled=\"1\"] > .mermaid-zoom-interaction',\n ) as HTMLElement | null;\n}\n\nfunction setZoomable(element: HTMLElement, value: string) {\n set(element.dataset, 'allowed', value);\n}\n\nfunction isZoomEnabled(element: HTMLElement) {\n return get(element.dataset, 'enabled') === '1';\n}\n\nfunction setZoomEnabled(element: HTMLElement, value: string) {\n set(element.dataset, 'enabled', value);\n}\n\nexport function zoomBehavior(event: Event) {\n const element = getZoomable(event.target as HTMLElement);\n const svg = getZoomableSvg(event.target as HTMLElement);\n\n if (!element || !svg || isZoomEnabled(element as HTMLElement)) {\n return;\n }\n\n setZoomEnabled(element, '1');\n\n const options = getZoomOptions(element);\n const disableZoom = enableZoom(element, options);\n const onOuterClick = (event: Event) => {\n const target = event.target as HTMLElement;\n if (!getActiveSvg(target) && !getActiveInteraction(target)) {\n disableZoom();\n setZoomEnabled(element, '0');\n document.removeEventListener('mousedown', onOuterClick, true);\n }\n };\n\n document.addEventListener('mousedown', onOuterClick, true);\n}\n\nfunction getZoomOptions(element: HTMLElement): ZoomOptions {\n return {\n maximumScale: Number(get(element.dataset, 'maximumScale')),\n resetOnBlur: get(element.dataset, 'resetOnBlur') === 'true',\n showMenu: get(element.dataset, 'showMenu') === 'true',\n bindKeys: get(element.dataset, 'bindKeys') === 'true',\n };\n}\n\nlet styleInjected = false;\nexport function bindZoomOptions(element: HTMLElement, options: Partial<ZoomOptions> | boolean) {\n const _options: ZoomOptions = Object.assign(\n {\n maximumScale: 5,\n resetOnBlur: false,\n showMenu: false,\n bindKeys: false,\n },\n options,\n );\n\n if (options === false) {\n setZoomable(element, '0');\n setZoomEnabled(element, '0');\n return;\n }\n\n setZoomable(element, '1');\n if (_options.inlineStyle !== false && !styleInjected) {\n styleInjected = true;\n require('./zoom.scss');\n }\n\n for (const key of Object.keys(_options)) {\n set(element.dataset, key, _options[key as keyof typeof _options]);\n }\n}\n", "import * as d3 from 'd3';\nimport MagnifierPlusIcon from '@gravity-ui/icons/svgs/magnifier-plus.svg';\nimport MagnifierMinusIcon from '@gravity-ui/icons/svgs/magnifier-minus.svg';\nimport CaretUpIcon from '@gravity-ui/icons/svgs/caret-up.svg';\nimport CaretDownIcon from '@gravity-ui/icons/svgs/caret-down.svg';\nimport CaretLeftIcon from '@gravity-ui/icons/svgs/caret-left.svg';\nimport CaretRightIcon from '@gravity-ui/icons/svgs/caret-right.svg';\nimport CircleIcon from '@gravity-ui/icons/svgs/circle.svg';\n\nconst ZOOM_SPEED = 1;\nconst MOVE_SPEED = 500;\nconst CONTROLS_CLASS = 'mermaid-zoom-menu-control';\nconst CONTROLS: Record<string, Control> = {\n up: ['move up', CaretUpIcon, ['KeyW', 'w'], [0, 0, 1]],\n down: ['move down', CaretDownIcon, ['KeyS', 's'], [0, 0, -1]],\n left: ['move left', CaretLeftIcon, ['KeyA', 'a'], [0, 1, 0]],\n right: ['move right', CaretRightIcon, ['KeyD', 'd'], [0, -1, 0]],\n zoomin: ['zoom in', MagnifierPlusIcon, ['KeyE', 'e'], [1, 0, 0]],\n zoomout: ['zoom out', MagnifierMinusIcon, ['KeyQ', 'q'], [-1, 0, 0]],\n reset: ['reset', CircleIcon, ['KeyR', 'r'], d3.zoomIdentity],\n};\n\ntype Transform = [number, number, number];\ntype Control = [string, string, [string, string], Transform | d3.ZoomTransform];\ntype Action = keyof typeof CONTROLS;\n\nconst raf = () => new Promise((resolve) => requestAnimationFrame(resolve));\nconst sum = (a1: number[], a2: number[]) => a1.map((item, index) => item + a2[index]);\n\nconst transitions = new WeakMap();\nconst transition = ($svg: SVGSelection, $inner: GSelection, zoom: Zoom) => {\n if (transitions.has(zoom)) {\n return transitions.get(zoom);\n }\n\n const actions = new Set<Action>();\n let loop: Promise<void> | null = null;\n\n const iterarte = async () => {\n while (actions.size) {\n const t = Date.now();\n\n let [dk, dx, dy] = [0, 0, 0];\n for (const action of actions) {\n const d = CONTROLS[action][3];\n if (d === d3.zoomIdentity) {\n try {\n await $svg.transition().call(zoom.transform, d3.zoomIdentity).end();\n } catch {}\n } else {\n [dk, dx, dy] = sum([dk, dx, dy], d as Transform);\n }\n }\n\n await raf();\n\n const {k} = d3.zoomTransform($inner.node() as Element);\n const dt = (Date.now() - t) / 1000;\n\n [dk, dx, dy] = [dk * dt * ZOOM_SPEED, dx * dt * MOVE_SPEED, dy * dt * MOVE_SPEED];\n\n if (dx || dy) {\n zoom.translateBy($svg, dx, dy);\n }\n\n if (dk) {\n zoom.scaleTo($svg, k + dk);\n }\n }\n };\n\n transitions.set(zoom, {\n add(action: Action) {\n actions.add(action);\n\n if (!loop) {\n loop = iterarte().finally(() => {\n loop = null;\n });\n }\n },\n\n delete(action: Action) {\n actions.delete(action);\n },\n });\n\n return transitions.get(zoom);\n};\n\nexport const attachKeyboard = ($svg: SVGSelection, $inner: GSelection, zoom: Zoom) => {\n const ts = transition($svg, $inner, zoom);\n\n const keys: Record<string, Action> = Object.keys(CONTROLS).reduce(\n (acc, key) => {\n const control = CONTROLS[key] as Control;\n const bind = control[2][0];\n\n acc[bind] = key;\n\n return acc;\n },\n {} as Record<string, Action>,\n );\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.altKey || event.ctrlKey || event.shiftKey || event.metaKey) {\n return;\n }\n\n const action = keys[event.code];\n if (action) {\n event.preventDefault();\n ts.add(action);\n }\n };\n\n const handleKeyup = (event: KeyboardEvent) => {\n const action = keys[event.code];\n if (action) {\n event.preventDefault();\n ts.delete(action);\n }\n };\n\n document.addEventListener('keydown', handleKeydown);\n document.addEventListener('keyup', handleKeyup);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown);\n document.removeEventListener('keyup', handleKeyup);\n };\n};\n\nexport const attachMenu = (\n container: HTMLElement,\n $svg: SVGSelection,\n $inner: GSelection,\n zoom: Zoom,\n) => {\n const ts = transition($svg, $inner, zoom);\n\n const build = document.createElement('div');\n const buttons = Object.keys(CONTROLS)\n .map((key) => [key, ...CONTROLS[key]])\n .reduce(\n (acc, [name, title, icon]) =>\n acc +\n `\n <div class=\"${CONTROLS_CLASS}\" title=\"${title}\" data-action=\"${name}\">\n ${icon}\n </div>`,\n '',\n );\n\n build.innerHTML = `\n <div class=\"mermaid-zoom-menu\">\n <div class=\"mermaid-zoom-menu-controls\">\n ${buttons}\n </div>\n </div>\n `;\n\n const menu = build.firstElementChild as HTMLElement;\n\n let controlActive: Action | null = null;\n const resetTransition = () => {\n ts.delete(controlActive);\n controlActive = null;\n document.removeEventListener('mouseup', resetTransition, true);\n };\n\n const handleControlClick = async (event: MouseEvent) => {\n // Disable external text selection\n if (event.detail > 1) {\n event.preventDefault();\n }\n\n const element = (event.target as HTMLElement).closest('.mermaid-zoom-menu-control');\n\n if (!element) {\n return;\n }\n\n controlActive = (element as HTMLElement).dataset.action as Action;\n ts.add(controlActive as Action);\n document.addEventListener('mouseup', resetTransition, true);\n };\n\n menu.addEventListener('mousedown', handleControlClick);\n container.appendChild(menu);\n\n return () => {\n resetTransition();\n container.removeChild(menu);\n menu.removeEventListener('mousedown', handleControlClick);\n };\n};\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.75 11a4.25 4.25 0 1 0 0-8.5 4.25 4.25 0 0 0 0 8.5m0 1.5a5.73 5.73 0 0 0 3.501-1.188l2.719 2.718a.75.75 0 1 0 1.06-1.06l-2.718-2.719A5.75 5.75 0 1 0 6.75 12.5m.75-7.75a.75.75 0 0 0-1.5 0V6H4.75a.75.75 0 0 0 0 1.5H6v1.25a.75.75 0 0 0 1.5 0V7.5h1.25a.75.75 0 0 0 0-1.5H7.5z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.75 11a4.25 4.25 0 1 0 0-8.5 4.25 4.25 0 0 0 0 8.5m0 1.5a5.73 5.73 0 0 0 3.501-1.188l2.719 2.718a.75.75 0 1 0 1.06-1.06l-2.718-2.719A5.75 5.75 0 1 0 6.75 12.5m-2-6.5a.75.75 0 0 0 0 1.5h4a.75.75 0 0 0 0-1.5z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M11.823 9.295a.73.73 0 0 1-.552 1.205H4.729a.73.73 0 0 1-.552-1.205L7.2 5.786a1 1 0 0 1 .757-.347h.084a1 1 0 0 1 .757.347z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M4.177 6.705A.73.73 0 0 1 4.729 5.5h6.542a.73.73 0 0 1 .552 1.205L8.8 10.214a1 1 0 0 1-.757.347h-.084a1 1 0 0 1-.757-.347z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M9.295 4.177a.73.73 0 0 1 1.205.552v6.542a.73.73 0 0 1-1.205.552L5.786 8.8a1 1 0 0 1-.347-.757v-.084a1 1 0 0 1 .347-.757z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M6.705 11.823a.73.73 0 0 1-1.205-.552V4.729a.73.73 0 0 1 1.205-.552L10.214 7.2a1 1 0 0 1 .347.757v.084a1 1 0 0 1-.347.757z\" clip-rule=\"evenodd\"/></svg>", "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14\" clip-rule=\"evenodd\"/></svg>"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["d3", "zoom", "zoom", "event", "zoom"]
|
|
7
7
|
}
|
package/build/types.d.ts
CHANGED
|
@@ -16,7 +16,9 @@ export type ExposedAPI = {
|
|
|
16
16
|
parseError: typeof mermaid.parseError;
|
|
17
17
|
parse: typeof mermaid.parse;
|
|
18
18
|
setParseErrorHandler: typeof mermaid.setParseErrorHandler;
|
|
19
|
+
registerLayoutLoaders: typeof mermaid.registerLayoutLoaders;
|
|
19
20
|
};
|
|
21
|
+
export type LayoutLoaders = Parameters<typeof mermaid.registerLayoutLoaders>[0];
|
|
20
22
|
export type ZoomOptions = {
|
|
21
23
|
/**
|
|
22
24
|
* Maximum zoom scale.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diplodoc/mermaid-extension",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Mermaid plugin for Diplodoc transformer and builder",
|
|
5
5
|
"main": "build/plugin/index.js",
|
|
6
6
|
"types": "build/plugin/index.d.ts",
|
|
@@ -44,10 +44,13 @@
|
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "run-p build:*",
|
|
47
|
-
"build:js": "./esbuild/build.js",
|
|
48
|
-
"build:declarations": "tsc --emitDeclarationOnly --outDir ./build",
|
|
49
|
-
"prepublishOnly": "npm run build",
|
|
50
|
-
"test": "
|
|
47
|
+
"build:js": "node ./esbuild/build.js",
|
|
48
|
+
"build:declarations": "tsc --project tsconfig.publish.json --emitDeclarationOnly --outDir ./build",
|
|
49
|
+
"prepublishOnly": "npm run typecheck && npm run lint && npm test && npm run build",
|
|
50
|
+
"test": "vitest run",
|
|
51
|
+
"test:watch": "vitest",
|
|
52
|
+
"test:coverage": "vitest run --coverage",
|
|
53
|
+
"typecheck": "tsc --noEmit",
|
|
51
54
|
"lint": "lint update && lint",
|
|
52
55
|
"lint:fix": "lint update && lint fix",
|
|
53
56
|
"pre-commit": "lint update && lint-staged",
|
|
@@ -72,20 +75,19 @@
|
|
|
72
75
|
}
|
|
73
76
|
},
|
|
74
77
|
"devDependencies": {
|
|
75
|
-
"@diplodoc/lint": "^1.
|
|
78
|
+
"@diplodoc/lint": "^1.14.2",
|
|
76
79
|
"@diplodoc/tsconfig": "^1.0.2",
|
|
77
80
|
"@types/d3": "^7.4.0",
|
|
78
81
|
"@types/markdown-it": "^13.0.9",
|
|
79
82
|
"@types/node": "^22.19.7",
|
|
80
83
|
"@types/react": "^18.0.35",
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"esbuild-sass-plugin": "^3.3.1",
|
|
84
|
-
"jest": "^29.5.0",
|
|
84
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
85
|
+
"jsdom": "^28.1.0",
|
|
85
86
|
"markdown-it": "^13.0.2",
|
|
86
87
|
"npm-run-all": "^4.1.5",
|
|
87
88
|
"react": "^18.2.0",
|
|
88
|
-
"typescript": "^5.0.2"
|
|
89
|
+
"typescript": "^5.0.2",
|
|
90
|
+
"vitest": "^3.2.4"
|
|
89
91
|
},
|
|
90
92
|
"dependencies": {
|
|
91
93
|
"@gravity-ui/icons": "^2.8.1",
|