chore: update TypeScript build info cache
This commit is contained in:
parent
fe4c968367
commit
89c8315820
2
.angular/cache/20.3.3/app/.tsbuildinfo
vendored
2
.angular/cache/20.3.3/app/.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
@ -1,3 +1,28 @@
|
|||||||
|
import {
|
||||||
|
isFakeMousedownFromScreenReader,
|
||||||
|
isFakeTouchstartFromScreenReader
|
||||||
|
} from "./chunk-YLELG2JA.js";
|
||||||
|
import {
|
||||||
|
A,
|
||||||
|
ALT,
|
||||||
|
CONTROL,
|
||||||
|
DOWN_ARROW,
|
||||||
|
END,
|
||||||
|
HOME,
|
||||||
|
LEFT_ARROW,
|
||||||
|
MAC_META,
|
||||||
|
META,
|
||||||
|
NINE,
|
||||||
|
PAGE_DOWN,
|
||||||
|
PAGE_UP,
|
||||||
|
RIGHT_ARROW,
|
||||||
|
SHIFT,
|
||||||
|
TAB,
|
||||||
|
UP_ARROW,
|
||||||
|
Z,
|
||||||
|
ZERO,
|
||||||
|
hasModifierKey
|
||||||
|
} from "./chunk-ALQK544G.js";
|
||||||
import {
|
import {
|
||||||
Platform,
|
Platform,
|
||||||
_CdkPrivateStyleLoader,
|
_CdkPrivateStyleLoader,
|
||||||
@ -7,10 +32,8 @@ import {
|
|||||||
_getShadowRoot,
|
_getShadowRoot,
|
||||||
coerceArray,
|
coerceArray,
|
||||||
coerceElement,
|
coerceElement,
|
||||||
coerceNumberProperty,
|
coerceNumberProperty
|
||||||
isFakeMousedownFromScreenReader,
|
} from "./chunk-XATZLEZR.js";
|
||||||
isFakeTouchstartFromScreenReader
|
|
||||||
} from "./chunk-R6KALAQM.js";
|
|
||||||
import "./chunk-76DXN4JH.js";
|
import "./chunk-76DXN4JH.js";
|
||||||
import "./chunk-4X6VR2I6.js";
|
import "./chunk-4X6VR2I6.js";
|
||||||
import {
|
import {
|
||||||
@ -71,26 +94,6 @@ import {
|
|||||||
__spreadValues
|
__spreadValues
|
||||||
} from "./chunk-TKSB4YUA.js";
|
} from "./chunk-TKSB4YUA.js";
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/keycodes2.mjs
|
|
||||||
var TAB = 9;
|
|
||||||
var SHIFT = 16;
|
|
||||||
var CONTROL = 17;
|
|
||||||
var ALT = 18;
|
|
||||||
var PAGE_UP = 33;
|
|
||||||
var PAGE_DOWN = 34;
|
|
||||||
var END = 35;
|
|
||||||
var HOME = 36;
|
|
||||||
var LEFT_ARROW = 37;
|
|
||||||
var UP_ARROW = 38;
|
|
||||||
var RIGHT_ARROW = 39;
|
|
||||||
var DOWN_ARROW = 40;
|
|
||||||
var ZERO = 48;
|
|
||||||
var NINE = 57;
|
|
||||||
var A = 65;
|
|
||||||
var Z = 90;
|
|
||||||
var META = 91;
|
|
||||||
var MAC_META = 224;
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/passive-listeners.mjs
|
// node_modules/@angular/cdk/fesm2022/passive-listeners.mjs
|
||||||
var supportsPassiveEvents;
|
var supportsPassiveEvents;
|
||||||
function supportsPassiveEventListeners() {
|
function supportsPassiveEventListeners() {
|
||||||
@ -1949,14 +1952,6 @@ var Typeahead = class {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/keycodes.mjs
|
|
||||||
function hasModifierKey(event, ...modifiers) {
|
|
||||||
if (modifiers.length) {
|
|
||||||
return modifiers.some((modifier) => event[modifier]);
|
|
||||||
}
|
|
||||||
return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/list-key-manager.mjs
|
// node_modules/@angular/cdk/fesm2022/list-key-manager.mjs
|
||||||
var ListKeyManager = class {
|
var ListKeyManager = class {
|
||||||
_items;
|
_items;
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
582
.angular/cache/20.3.3/app/vite/deps/_metadata.json
vendored
582
.angular/cache/20.3.3/app/vite/deps/_metadata.json
vendored
@ -1,289 +1,283 @@
|
|||||||
{
|
{
|
||||||
"hash": "5038c3f3",
|
"hash": "7b730849",
|
||||||
"configHash": "662dbec5",
|
"configHash": "95526411",
|
||||||
"lockfileHash": "c8679eae",
|
"lockfileHash": "c8679eae",
|
||||||
"browserHash": "5f740862",
|
"browserHash": "9d30bbd7",
|
||||||
"optimized": {
|
"optimized": {
|
||||||
"@angular/cdk/a11y": {
|
"@angular/cdk/a11y": {
|
||||||
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/a11y.mjs",
|
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/a11y.mjs",
|
||||||
"file": "@angular_cdk_a11y.js",
|
"file": "@angular_cdk_a11y.js",
|
||||||
"fileHash": "afdabf75",
|
"fileHash": "70532b41",
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/common": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/common/fesm2022/common.mjs",
|
|
||||||
"file": "@angular_common.js",
|
|
||||||
"fileHash": "6bba694e",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/common/http": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/common/fesm2022/http.mjs",
|
|
||||||
"file": "@angular_common_http.js",
|
|
||||||
"fileHash": "93acd8fe",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/common/locales/fr": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/common/locales/fr.js",
|
|
||||||
"file": "@angular_common_locales_fr.js",
|
|
||||||
"fileHash": "31b73113",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/core": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/core/fesm2022/core.mjs",
|
|
||||||
"file": "@angular_core.js",
|
|
||||||
"fileHash": "af8c5da3",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/core/rxjs-interop": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/core/fesm2022/rxjs-interop.mjs",
|
|
||||||
"file": "@angular_core_rxjs-interop.js",
|
|
||||||
"fileHash": "a0cc11f8",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/forms": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/forms/fesm2022/forms.mjs",
|
|
||||||
"file": "@angular_forms.js",
|
|
||||||
"fileHash": "f4c939e0",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"@angular/platform-browser": {
|
|
||||||
"src": "../../../../../../node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs",
|
|
||||||
"file": "@angular_platform-browser.js",
|
|
||||||
"fileHash": "4ec63e7c",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"angular-calendar": {
|
|
||||||
"src": "../../../../../../node_modules/angular-calendar/fesm2022/angular-calendar.mjs",
|
|
||||||
"file": "angular-calendar.js",
|
|
||||||
"fileHash": "3fe822f0",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"angular-calendar/date-adapters/date-fns": {
|
|
||||||
"src": "../../../../../../node_modules/angular-calendar/date-adapters/esm/date-fns/index.js",
|
|
||||||
"file": "angular-calendar_date-adapters_date-fns.js",
|
|
||||||
"fileHash": "bc5fae74",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"highlight.js": {
|
|
||||||
"src": "../../../../../../node_modules/highlight.js/es/index.js",
|
|
||||||
"file": "highlight__js.js",
|
|
||||||
"fileHash": "42faeb69",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"markdown-it": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it/index.mjs",
|
|
||||||
"file": "markdown-it.js",
|
|
||||||
"fileHash": "8563f0e3",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"markdown-it-anchor": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs",
|
|
||||||
"file": "markdown-it-anchor.js",
|
|
||||||
"fileHash": "d3b3dd4c",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"markdown-it-attrs": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it-attrs/index.js",
|
|
||||||
"file": "markdown-it-attrs.js",
|
|
||||||
"fileHash": "e6924374",
|
|
||||||
"needsInterop": true
|
|
||||||
},
|
|
||||||
"markdown-it-footnote": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it-footnote/index.js",
|
|
||||||
"file": "markdown-it-footnote.js",
|
|
||||||
"fileHash": "016f9bb7",
|
|
||||||
"needsInterop": true
|
|
||||||
},
|
|
||||||
"markdown-it-multimd-table": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it-multimd-table/index.js",
|
|
||||||
"file": "markdown-it-multimd-table.js",
|
|
||||||
"fileHash": "900e90dd",
|
|
||||||
"needsInterop": true
|
|
||||||
},
|
|
||||||
"markdown-it-task-lists": {
|
|
||||||
"src": "../../../../../../node_modules/markdown-it-task-lists/index.js",
|
|
||||||
"file": "markdown-it-task-lists.js",
|
|
||||||
"fileHash": "b9c236d4",
|
|
||||||
"needsInterop": true
|
|
||||||
},
|
|
||||||
"mermaid": {
|
|
||||||
"src": "../../../../../../node_modules/mermaid/dist/mermaid.core.mjs",
|
|
||||||
"file": "mermaid.js",
|
|
||||||
"fileHash": "1466de24",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"rxjs": {
|
|
||||||
"src": "../../../../../../node_modules/rxjs/dist/esm5/index.js",
|
|
||||||
"file": "rxjs.js",
|
|
||||||
"fileHash": "43cb6486",
|
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"@angular/cdk/drag-drop": {
|
"@angular/cdk/drag-drop": {
|
||||||
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/drag-drop.mjs",
|
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/drag-drop.mjs",
|
||||||
"file": "@angular_cdk_drag-drop.js",
|
"file": "@angular_cdk_drag-drop.js",
|
||||||
"fileHash": "cb9925fd",
|
"fileHash": "3cd79ab2",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/cdk/overlay": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/overlay.mjs",
|
||||||
|
"file": "@angular_cdk_overlay.js",
|
||||||
|
"fileHash": "96696b64",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/cdk/portal": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/cdk/fesm2022/portal.mjs",
|
||||||
|
"file": "@angular_cdk_portal.js",
|
||||||
|
"fileHash": "8ba8b5c6",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/common": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/common/fesm2022/common.mjs",
|
||||||
|
"file": "@angular_common.js",
|
||||||
|
"fileHash": "c8a24b88",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/common/http": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/common/fesm2022/http.mjs",
|
||||||
|
"file": "@angular_common_http.js",
|
||||||
|
"fileHash": "70d1d46f",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/common/locales/fr": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/common/locales/fr.js",
|
||||||
|
"file": "@angular_common_locales_fr.js",
|
||||||
|
"fileHash": "61c73bd5",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/core": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/core/fesm2022/core.mjs",
|
||||||
|
"file": "@angular_core.js",
|
||||||
|
"fileHash": "d6a2628d",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/core/rxjs-interop": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/core/fesm2022/rxjs-interop.mjs",
|
||||||
|
"file": "@angular_core_rxjs-interop.js",
|
||||||
|
"fileHash": "8eeccb17",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/forms": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/forms/fesm2022/forms.mjs",
|
||||||
|
"file": "@angular_forms.js",
|
||||||
|
"fileHash": "d439f192",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"@angular/platform-browser": {
|
||||||
|
"src": "../../../../../../node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs",
|
||||||
|
"file": "@angular_platform-browser.js",
|
||||||
|
"fileHash": "763c6745",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"angular-calendar": {
|
||||||
|
"src": "../../../../../../node_modules/angular-calendar/fesm2022/angular-calendar.mjs",
|
||||||
|
"file": "angular-calendar.js",
|
||||||
|
"fileHash": "356919cc",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"angular-calendar/date-adapters/date-fns": {
|
||||||
|
"src": "../../../../../../node_modules/angular-calendar/date-adapters/esm/date-fns/index.js",
|
||||||
|
"file": "angular-calendar_date-adapters_date-fns.js",
|
||||||
|
"fileHash": "dfab03d6",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"d3-force": {
|
||||||
|
"src": "../../../../../../node_modules/d3-force/src/index.js",
|
||||||
|
"file": "d3-force.js",
|
||||||
|
"fileHash": "4c7a2c9f",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"d3-selection": {
|
||||||
|
"src": "../../../../../../node_modules/d3-selection/src/index.js",
|
||||||
|
"file": "d3-selection.js",
|
||||||
|
"fileHash": "6bc4b82f",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"d3-zoom": {
|
||||||
|
"src": "../../../../../../node_modules/d3-zoom/src/index.js",
|
||||||
|
"file": "d3-zoom.js",
|
||||||
|
"fileHash": "225a1736",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"highlight.js": {
|
||||||
|
"src": "../../../../../../node_modules/highlight.js/es/index.js",
|
||||||
|
"file": "highlight__js.js",
|
||||||
|
"fileHash": "23d010cc",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"markdown-it": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it/index.mjs",
|
||||||
|
"file": "markdown-it.js",
|
||||||
|
"fileHash": "5bff6686",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"markdown-it-anchor": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs",
|
||||||
|
"file": "markdown-it-anchor.js",
|
||||||
|
"fileHash": "a95d9c9a",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"markdown-it-attrs": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it-attrs/index.js",
|
||||||
|
"file": "markdown-it-attrs.js",
|
||||||
|
"fileHash": "f6cfa695",
|
||||||
|
"needsInterop": true
|
||||||
|
},
|
||||||
|
"markdown-it-footnote": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it-footnote/index.js",
|
||||||
|
"file": "markdown-it-footnote.js",
|
||||||
|
"fileHash": "c0fb8657",
|
||||||
|
"needsInterop": true
|
||||||
|
},
|
||||||
|
"markdown-it-multimd-table": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it-multimd-table/index.js",
|
||||||
|
"file": "markdown-it-multimd-table.js",
|
||||||
|
"fileHash": "1d0bfd7f",
|
||||||
|
"needsInterop": true
|
||||||
|
},
|
||||||
|
"markdown-it-task-lists": {
|
||||||
|
"src": "../../../../../../node_modules/markdown-it-task-lists/index.js",
|
||||||
|
"file": "markdown-it-task-lists.js",
|
||||||
|
"fileHash": "bd50b3d4",
|
||||||
|
"needsInterop": true
|
||||||
|
},
|
||||||
|
"mermaid": {
|
||||||
|
"src": "../../../../../../node_modules/mermaid/dist/mermaid.core.mjs",
|
||||||
|
"file": "mermaid.js",
|
||||||
|
"fileHash": "c0926062",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"rxjs": {
|
||||||
|
"src": "../../../../../../node_modules/rxjs/dist/esm5/index.js",
|
||||||
|
"file": "rxjs.js",
|
||||||
|
"fileHash": "9db2b102",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chunks": {
|
"chunks": {
|
||||||
"kanban-definition-3W4ZIXB7-GUMHX2OD": {
|
"diagram-QEK2KX5R-UK7PAHXE": {
|
||||||
"file": "kanban-definition-3W4ZIXB7-GUMHX2OD.js"
|
"file": "diagram-QEK2KX5R-UK7PAHXE.js"
|
||||||
},
|
},
|
||||||
"sankeyDiagram-TZEHDZUN-GH26R5YW": {
|
"blockDiagram-VD42YOAC-TQED7YCX": {
|
||||||
"file": "sankeyDiagram-TZEHDZUN-GH26R5YW.js"
|
"file": "blockDiagram-VD42YOAC-TQED7YCX.js"
|
||||||
},
|
},
|
||||||
"diagram-S2PKOQOG-CRJZWG5Y": {
|
"architectureDiagram-VXUJARFQ-DJJ3VEXP": {
|
||||||
"file": "diagram-S2PKOQOG-CRJZWG5Y.js"
|
"file": "architectureDiagram-VXUJARFQ-DJJ3VEXP.js"
|
||||||
},
|
},
|
||||||
"diagram-QEK2KX5R-5GIFGTRQ": {
|
"diagram-PSM6KHXK-KRKGF3PJ": {
|
||||||
"file": "diagram-QEK2KX5R-5GIFGTRQ.js"
|
"file": "diagram-PSM6KHXK-KRKGF3PJ.js"
|
||||||
},
|
},
|
||||||
"blockDiagram-VD42YOAC-IMP7RBMX": {
|
"stateDiagram-FKZM4ZOC-SFQZ4DUM": {
|
||||||
"file": "blockDiagram-VD42YOAC-IMP7RBMX.js"
|
"file": "stateDiagram-FKZM4ZOC-SFQZ4DUM.js"
|
||||||
},
|
},
|
||||||
"architectureDiagram-VXUJARFQ-3B5SPFPL": {
|
"stateDiagram-v2-4FDKWEC3-GIGECPBX": {
|
||||||
"file": "architectureDiagram-VXUJARFQ-3B5SPFPL.js"
|
"file": "stateDiagram-v2-4FDKWEC3-GIGECPBX.js"
|
||||||
},
|
},
|
||||||
"diagram-PSM6KHXK-7CHUIA47": {
|
"chunk-4IT5YJ5F": {
|
||||||
"file": "diagram-PSM6KHXK-7CHUIA47.js"
|
"file": "chunk-4IT5YJ5F.js"
|
||||||
},
|
},
|
||||||
"sequenceDiagram-WL72ISMW-ZGS5TERI": {
|
"journeyDiagram-XKPGCS4Q-T7T2TQKB": {
|
||||||
"file": "sequenceDiagram-WL72ISMW-ZGS5TERI.js"
|
"file": "journeyDiagram-XKPGCS4Q-T7T2TQKB.js"
|
||||||
},
|
},
|
||||||
"classDiagram-2ON5EDUG-33U76KPG": {
|
"timeline-definition-IT6M3QCI-C5KDXEFL": {
|
||||||
"file": "classDiagram-2ON5EDUG-33U76KPG.js"
|
"file": "timeline-definition-IT6M3QCI-C5KDXEFL.js"
|
||||||
},
|
},
|
||||||
"classDiagram-v2-WZHVMYZB-Z27PMM23": {
|
"mindmap-definition-VGOIOE7T-QIS6XLZK": {
|
||||||
"file": "classDiagram-v2-WZHVMYZB-Z27PMM23.js"
|
"file": "mindmap-definition-VGOIOE7T-QIS6XLZK.js"
|
||||||
},
|
},
|
||||||
"chunk-X65BYZXM": {
|
"kanban-definition-3W4ZIXB7-XS2J4B5U": {
|
||||||
"file": "chunk-X65BYZXM.js"
|
"file": "kanban-definition-3W4ZIXB7-XS2J4B5U.js"
|
||||||
},
|
},
|
||||||
"stateDiagram-FKZM4ZOC-KXMQ5JNR": {
|
"sankeyDiagram-TZEHDZUN-LPZGI7FI": {
|
||||||
"file": "stateDiagram-FKZM4ZOC-KXMQ5JNR.js"
|
"file": "sankeyDiagram-TZEHDZUN-LPZGI7FI.js"
|
||||||
},
|
},
|
||||||
"stateDiagram-v2-4FDKWEC3-JB4TSVIW": {
|
"diagram-S2PKOQOG-MVN3UCTY": {
|
||||||
"file": "stateDiagram-v2-4FDKWEC3-JB4TSVIW.js"
|
"file": "diagram-S2PKOQOG-MVN3UCTY.js"
|
||||||
},
|
},
|
||||||
"chunk-UHQERBHF": {
|
"infoDiagram-F6ZHWCRC-Q4VG5QSO": {
|
||||||
"file": "chunk-UHQERBHF.js"
|
"file": "infoDiagram-F6ZHWCRC-Q4VG5QSO.js"
|
||||||
},
|
},
|
||||||
"journeyDiagram-XKPGCS4Q-TGUXGKSG": {
|
"pieDiagram-ADFJNKIX-UKBRA3ML": {
|
||||||
"file": "journeyDiagram-XKPGCS4Q-TGUXGKSG.js"
|
"file": "pieDiagram-ADFJNKIX-UKBRA3ML.js"
|
||||||
},
|
},
|
||||||
"timeline-definition-IT6M3QCI-WHNO6URF": {
|
"quadrantDiagram-AYHSOK5B-WIQVQDVA": {
|
||||||
"file": "timeline-definition-IT6M3QCI-WHNO6URF.js"
|
"file": "quadrantDiagram-AYHSOK5B-WIQVQDVA.js"
|
||||||
},
|
},
|
||||||
"mindmap-definition-VGOIOE7T-YDOCEY2Q": {
|
"xychartDiagram-PRI3JC2R-HI3UQ7SD": {
|
||||||
"file": "mindmap-definition-VGOIOE7T-YDOCEY2Q.js"
|
"file": "xychartDiagram-PRI3JC2R-HI3UQ7SD.js"
|
||||||
},
|
},
|
||||||
"treemap-75Q7IDZK-IP775KCD": {
|
"requirementDiagram-UZGBJVZJ-KIOGDH7L": {
|
||||||
"file": "treemap-75Q7IDZK-IP775KCD.js"
|
"file": "requirementDiagram-UZGBJVZJ-KIOGDH7L.js"
|
||||||
},
|
},
|
||||||
"gitGraphDiagram-NY62KEGX-67QA5ASO": {
|
"sequenceDiagram-WL72ISMW-PZZPIBIB": {
|
||||||
"file": "gitGraphDiagram-NY62KEGX-67QA5ASO.js"
|
"file": "sequenceDiagram-WL72ISMW-PZZPIBIB.js"
|
||||||
},
|
},
|
||||||
"chunk-3WIYXQMB": {
|
"classDiagram-2ON5EDUG-M7J3EIFW": {
|
||||||
"file": "chunk-3WIYXQMB.js"
|
"file": "classDiagram-2ON5EDUG-M7J3EIFW.js"
|
||||||
},
|
},
|
||||||
"ganttDiagram-LVOFAZNH-HYMY4RKD": {
|
"classDiagram-v2-WZHVMYZB-L5AKDJKO": {
|
||||||
"file": "ganttDiagram-LVOFAZNH-HYMY4RKD.js"
|
"file": "classDiagram-v2-WZHVMYZB-L5AKDJKO.js"
|
||||||
},
|
},
|
||||||
"infoDiagram-F6ZHWCRC-WO5AQYKA": {
|
"chunk-FO5BVBKW": {
|
||||||
"file": "infoDiagram-F6ZHWCRC-WO5AQYKA.js"
|
"file": "chunk-FO5BVBKW.js"
|
||||||
},
|
|
||||||
"pieDiagram-ADFJNKIX-GZV4UXNK": {
|
|
||||||
"file": "pieDiagram-ADFJNKIX-GZV4UXNK.js"
|
|
||||||
},
|
|
||||||
"chunk-PNW5KFH4": {
|
|
||||||
"file": "chunk-PNW5KFH4.js"
|
|
||||||
},
|
|
||||||
"chunk-VGVCR5QM": {
|
|
||||||
"file": "chunk-VGVCR5QM.js"
|
|
||||||
},
|
|
||||||
"chunk-5SXTVVUG": {
|
|
||||||
"file": "chunk-5SXTVVUG.js"
|
|
||||||
},
|
|
||||||
"quadrantDiagram-AYHSOK5B-G2SG5IZD": {
|
|
||||||
"file": "quadrantDiagram-AYHSOK5B-G2SG5IZD.js"
|
|
||||||
},
|
|
||||||
"xychartDiagram-PRI3JC2R-3HCTMHS4": {
|
|
||||||
"file": "xychartDiagram-PRI3JC2R-3HCTMHS4.js"
|
|
||||||
},
|
|
||||||
"requirementDiagram-UZGBJVZJ-75TZV2RQ": {
|
|
||||||
"file": "requirementDiagram-UZGBJVZJ-75TZV2RQ.js"
|
|
||||||
},
|
|
||||||
"flowDiagram-NV44I4VS-WHL2L3RD": {
|
|
||||||
"file": "flowDiagram-NV44I4VS-WHL2L3RD.js"
|
|
||||||
},
|
|
||||||
"chunk-I4QIIVJ7": {
|
|
||||||
"file": "chunk-I4QIIVJ7.js"
|
|
||||||
},
|
|
||||||
"erDiagram-Q2GNP2WA-WNA6LIBQ": {
|
|
||||||
"file": "erDiagram-Q2GNP2WA-WNA6LIBQ.js"
|
|
||||||
},
|
|
||||||
"chunk-PLWNSIKB": {
|
|
||||||
"file": "chunk-PLWNSIKB.js"
|
|
||||||
},
|
|
||||||
"chunk-LHH5RO5K": {
|
|
||||||
"file": "chunk-LHH5RO5K.js"
|
|
||||||
},
|
|
||||||
"info-63CPKGFF-W56KXM6Z": {
|
|
||||||
"file": "info-63CPKGFF-W56KXM6Z.js"
|
|
||||||
},
|
|
||||||
"chunk-BUI4I457": {
|
|
||||||
"file": "chunk-BUI4I457.js"
|
|
||||||
},
|
},
|
||||||
"packet-HUATNLJX-LCJ3BRNR": {
|
"packet-HUATNLJX-LCJ3BRNR": {
|
||||||
"file": "packet-HUATNLJX-LCJ3BRNR.js"
|
"file": "packet-HUATNLJX-LCJ3BRNR.js"
|
||||||
},
|
},
|
||||||
"chunk-CHJ5BV6S": {
|
|
||||||
"file": "chunk-CHJ5BV6S.js"
|
|
||||||
},
|
|
||||||
"pie-WTHONI2E-7JKUTNCJ": {
|
"pie-WTHONI2E-7JKUTNCJ": {
|
||||||
"file": "pie-WTHONI2E-7JKUTNCJ.js"
|
"file": "pie-WTHONI2E-7JKUTNCJ.js"
|
||||||
},
|
},
|
||||||
"chunk-XP22GJHQ": {
|
|
||||||
"file": "chunk-XP22GJHQ.js"
|
|
||||||
},
|
|
||||||
"architecture-O4VJ6CD3-IBEWAQYB": {
|
"architecture-O4VJ6CD3-IBEWAQYB": {
|
||||||
"file": "architecture-O4VJ6CD3-IBEWAQYB.js"
|
"file": "architecture-O4VJ6CD3-IBEWAQYB.js"
|
||||||
},
|
},
|
||||||
"chunk-NYZY7JGI": {
|
|
||||||
"file": "chunk-NYZY7JGI.js"
|
|
||||||
},
|
|
||||||
"gitGraph-ZV4HHKMB-6SC2CHQE": {
|
"gitGraph-ZV4HHKMB-6SC2CHQE": {
|
||||||
"file": "gitGraph-ZV4HHKMB-6SC2CHQE.js"
|
"file": "gitGraph-ZV4HHKMB-6SC2CHQE.js"
|
||||||
},
|
},
|
||||||
"chunk-FNEVJCCX": {
|
|
||||||
"file": "chunk-FNEVJCCX.js"
|
|
||||||
},
|
|
||||||
"radar-NJJJXTRR-IXC2PP4O": {
|
"radar-NJJJXTRR-IXC2PP4O": {
|
||||||
"file": "radar-NJJJXTRR-IXC2PP4O.js"
|
"file": "radar-NJJJXTRR-IXC2PP4O.js"
|
||||||
},
|
},
|
||||||
|
"treemap-75Q7IDZK-IP775KCD": {
|
||||||
|
"file": "treemap-75Q7IDZK-IP775KCD.js"
|
||||||
|
},
|
||||||
|
"gitGraphDiagram-NY62KEGX-AYADZGTS": {
|
||||||
|
"file": "gitGraphDiagram-NY62KEGX-AYADZGTS.js"
|
||||||
|
},
|
||||||
|
"chunk-AKEMTW7V": {
|
||||||
|
"file": "chunk-AKEMTW7V.js"
|
||||||
|
},
|
||||||
|
"chunk-LVXTZUHJ": {
|
||||||
|
"file": "chunk-LVXTZUHJ.js"
|
||||||
|
},
|
||||||
|
"chunk-TZM3OB4W": {
|
||||||
|
"file": "chunk-TZM3OB4W.js"
|
||||||
|
},
|
||||||
|
"chunk-CHJ5BV6S": {
|
||||||
|
"file": "chunk-CHJ5BV6S.js"
|
||||||
|
},
|
||||||
|
"chunk-XP22GJHQ": {
|
||||||
|
"file": "chunk-XP22GJHQ.js"
|
||||||
|
},
|
||||||
|
"chunk-NYZY7JGI": {
|
||||||
|
"file": "chunk-NYZY7JGI.js"
|
||||||
|
},
|
||||||
|
"chunk-FNEVJCCX": {
|
||||||
|
"file": "chunk-FNEVJCCX.js"
|
||||||
|
},
|
||||||
"chunk-R33GOAXK": {
|
"chunk-R33GOAXK": {
|
||||||
"file": "chunk-R33GOAXK.js"
|
"file": "chunk-R33GOAXK.js"
|
||||||
},
|
},
|
||||||
"chunk-WHHJWK6B": {
|
"chunk-5SXTVVUG": {
|
||||||
"file": "chunk-WHHJWK6B.js"
|
"file": "chunk-5SXTVVUG.js"
|
||||||
},
|
},
|
||||||
"chunk-BSULYXPT": {
|
"ganttDiagram-LVOFAZNH-6V2ZJWSP": {
|
||||||
"file": "chunk-BSULYXPT.js"
|
"file": "ganttDiagram-LVOFAZNH-6V2ZJWSP.js"
|
||||||
},
|
|
||||||
"chunk-B5NQPFQG": {
|
|
||||||
"file": "chunk-B5NQPFQG.js"
|
|
||||||
},
|
|
||||||
"chunk-JSZQKJT3": {
|
|
||||||
"file": "chunk-JSZQKJT3.js"
|
|
||||||
},
|
|
||||||
"chunk-WC2C7HAT": {
|
|
||||||
"file": "chunk-WC2C7HAT.js"
|
|
||||||
},
|
},
|
||||||
"katex-JJTYNRHT": {
|
"katex-JJTYNRHT": {
|
||||||
"file": "katex-JJTYNRHT.js"
|
"file": "katex-JJTYNRHT.js"
|
||||||
},
|
},
|
||||||
"dagre-6UL2VRFP-RIOSZDA4": {
|
"dagre-6UL2VRFP-5QR6CR47": {
|
||||||
"file": "dagre-6UL2VRFP-RIOSZDA4.js"
|
"file": "dagre-6UL2VRFP-5QR6CR47.js"
|
||||||
},
|
},
|
||||||
"chunk-YUMEK5VY": {
|
"chunk-YUMEK5VY": {
|
||||||
"file": "chunk-YUMEK5VY.js"
|
"file": "chunk-YUMEK5VY.js"
|
||||||
@ -291,69 +285,129 @@
|
|||||||
"chunk-MEGNL3BT": {
|
"chunk-MEGNL3BT": {
|
||||||
"file": "chunk-MEGNL3BT.js"
|
"file": "chunk-MEGNL3BT.js"
|
||||||
},
|
},
|
||||||
"chunk-6SIVX7OU": {
|
"cose-bilkent-S5V4N54A-NUGUH4PI": {
|
||||||
"file": "chunk-6SIVX7OU.js"
|
"file": "cose-bilkent-S5V4N54A-NUGUH4PI.js"
|
||||||
},
|
|
||||||
"chunk-HICR2YSH": {
|
|
||||||
"file": "chunk-HICR2YSH.js"
|
|
||||||
},
|
|
||||||
"chunk-JJ4TL56I": {
|
|
||||||
"file": "chunk-JJ4TL56I.js"
|
|
||||||
},
|
|
||||||
"chunk-2HSIUWWJ": {
|
|
||||||
"file": "chunk-2HSIUWWJ.js"
|
|
||||||
},
|
|
||||||
"chunk-EUUYHBKV": {
|
|
||||||
"file": "chunk-EUUYHBKV.js"
|
|
||||||
},
|
|
||||||
"chunk-FTTOYZOY": {
|
|
||||||
"file": "chunk-FTTOYZOY.js"
|
|
||||||
},
|
|
||||||
"chunk-NMWDZEZO": {
|
|
||||||
"file": "chunk-NMWDZEZO.js"
|
|
||||||
},
|
|
||||||
"chunk-NGEE2U2J": {
|
|
||||||
"file": "chunk-NGEE2U2J.js"
|
|
||||||
},
|
|
||||||
"cose-bilkent-S5V4N54A-5WYXQMNH": {
|
|
||||||
"file": "cose-bilkent-S5V4N54A-5WYXQMNH.js"
|
|
||||||
},
|
},
|
||||||
"chunk-4434HPF7": {
|
"chunk-4434HPF7": {
|
||||||
"file": "chunk-4434HPF7.js"
|
"file": "chunk-4434HPF7.js"
|
||||||
},
|
},
|
||||||
"c4Diagram-YG6GDRKO-DTLV3BK5": {
|
"c4Diagram-YG6GDRKO-S27KF7WZ": {
|
||||||
"file": "c4Diagram-YG6GDRKO-DTLV3BK5.js"
|
"file": "c4Diagram-YG6GDRKO-S27KF7WZ.js"
|
||||||
},
|
},
|
||||||
"chunk-BETRN5NS": {
|
"chunk-QGTVOCII": {
|
||||||
"file": "chunk-BETRN5NS.js"
|
"file": "chunk-QGTVOCII.js"
|
||||||
},
|
},
|
||||||
"chunk-QVVRGVV3": {
|
"flowDiagram-NV44I4VS-PAMDTSQG": {
|
||||||
"file": "chunk-QVVRGVV3.js"
|
"file": "flowDiagram-NV44I4VS-PAMDTSQG.js"
|
||||||
|
},
|
||||||
|
"chunk-LDVVQOTJ": {
|
||||||
|
"file": "chunk-LDVVQOTJ.js"
|
||||||
|
},
|
||||||
|
"erDiagram-Q2GNP2WA-YN7PFEX5": {
|
||||||
|
"file": "erDiagram-Q2GNP2WA-YN7PFEX5.js"
|
||||||
|
},
|
||||||
|
"chunk-SPF44GI6": {
|
||||||
|
"file": "chunk-SPF44GI6.js"
|
||||||
|
},
|
||||||
|
"chunk-HKZUPKUO": {
|
||||||
|
"file": "chunk-HKZUPKUO.js"
|
||||||
|
},
|
||||||
|
"info-63CPKGFF-W56KXM6Z": {
|
||||||
|
"file": "info-63CPKGFF-W56KXM6Z.js"
|
||||||
|
},
|
||||||
|
"chunk-BUI4I457": {
|
||||||
|
"file": "chunk-BUI4I457.js"
|
||||||
|
},
|
||||||
|
"chunk-WHHJWK6B": {
|
||||||
|
"file": "chunk-WHHJWK6B.js"
|
||||||
|
},
|
||||||
|
"chunk-6SIVX7OU": {
|
||||||
|
"file": "chunk-6SIVX7OU.js"
|
||||||
|
},
|
||||||
|
"chunk-BSULYXPT": {
|
||||||
|
"file": "chunk-BSULYXPT.js"
|
||||||
|
},
|
||||||
|
"chunk-AX55YWLP": {
|
||||||
|
"file": "chunk-AX55YWLP.js"
|
||||||
|
},
|
||||||
|
"chunk-QQXB2KBB": {
|
||||||
|
"file": "chunk-QQXB2KBB.js"
|
||||||
|
},
|
||||||
|
"chunk-SALDWYPM": {
|
||||||
|
"file": "chunk-SALDWYPM.js"
|
||||||
|
},
|
||||||
|
"chunk-XLAQUT22": {
|
||||||
|
"file": "chunk-XLAQUT22.js"
|
||||||
|
},
|
||||||
|
"chunk-C5C3W4IT": {
|
||||||
|
"file": "chunk-C5C3W4IT.js"
|
||||||
|
},
|
||||||
|
"chunk-DFNB73OP": {
|
||||||
|
"file": "chunk-DFNB73OP.js"
|
||||||
|
},
|
||||||
|
"chunk-FGVQ5EAF": {
|
||||||
|
"file": "chunk-FGVQ5EAF.js"
|
||||||
|
},
|
||||||
|
"chunk-SBFIRBTE": {
|
||||||
|
"file": "chunk-SBFIRBTE.js"
|
||||||
|
},
|
||||||
|
"chunk-CQMBBTJ5": {
|
||||||
|
"file": "chunk-CQMBBTJ5.js"
|
||||||
|
},
|
||||||
|
"chunk-MNXRRJHR": {
|
||||||
|
"file": "chunk-MNXRRJHR.js"
|
||||||
},
|
},
|
||||||
"chunk-CMK64ICG": {
|
"chunk-CMK64ICG": {
|
||||||
"file": "chunk-CMK64ICG.js"
|
"file": "chunk-CMK64ICG.js"
|
||||||
},
|
},
|
||||||
"chunk-BFCVI5XI": {
|
"chunk-6TEFNLMX": {
|
||||||
"file": "chunk-BFCVI5XI.js"
|
"file": "chunk-6TEFNLMX.js"
|
||||||
|
},
|
||||||
|
"chunk-NOSQ5GAS": {
|
||||||
|
"file": "chunk-NOSQ5GAS.js"
|
||||||
|
},
|
||||||
|
"chunk-NGEE2U2J": {
|
||||||
|
"file": "chunk-NGEE2U2J.js"
|
||||||
},
|
},
|
||||||
"chunk-M5X7JH4I": {
|
"chunk-M5X7JH4I": {
|
||||||
"file": "chunk-M5X7JH4I.js"
|
"file": "chunk-M5X7JH4I.js"
|
||||||
},
|
},
|
||||||
"chunk-I65GBZ6F": {
|
"chunk-6IIGIOZW": {
|
||||||
"file": "chunk-I65GBZ6F.js"
|
"file": "chunk-6IIGIOZW.js"
|
||||||
},
|
},
|
||||||
"chunk-R6KALAQM": {
|
"chunk-YLELG2JA": {
|
||||||
"file": "chunk-R6KALAQM.js"
|
"file": "chunk-YLELG2JA.js"
|
||||||
},
|
},
|
||||||
"chunk-4JODBTHE": {
|
"chunk-4JODBTHE": {
|
||||||
"file": "chunk-4JODBTHE.js"
|
"file": "chunk-4JODBTHE.js"
|
||||||
},
|
},
|
||||||
|
"chunk-2XXNJICA": {
|
||||||
|
"file": "chunk-2XXNJICA.js"
|
||||||
|
},
|
||||||
|
"chunk-ALQK544G": {
|
||||||
|
"file": "chunk-ALQK544G.js"
|
||||||
|
},
|
||||||
|
"chunk-XATZLEZR": {
|
||||||
|
"file": "chunk-XATZLEZR.js"
|
||||||
|
},
|
||||||
"chunk-76DXN4JH": {
|
"chunk-76DXN4JH": {
|
||||||
"file": "chunk-76DXN4JH.js"
|
"file": "chunk-76DXN4JH.js"
|
||||||
},
|
},
|
||||||
"chunk-4X6VR2I6": {
|
"chunk-4X6VR2I6": {
|
||||||
"file": "chunk-4X6VR2I6.js"
|
"file": "chunk-4X6VR2I6.js"
|
||||||
},
|
},
|
||||||
|
"chunk-M3UL5JB7": {
|
||||||
|
"file": "chunk-M3UL5JB7.js"
|
||||||
|
},
|
||||||
|
"chunk-RPD7EFVI": {
|
||||||
|
"file": "chunk-RPD7EFVI.js"
|
||||||
|
},
|
||||||
|
"chunk-TZ7OVMR6": {
|
||||||
|
"file": "chunk-TZ7OVMR6.js"
|
||||||
|
},
|
||||||
|
"chunk-5ES3MEZY": {
|
||||||
|
"file": "chunk-5ES3MEZY.js"
|
||||||
|
},
|
||||||
"chunk-UEBPW2IJ": {
|
"chunk-UEBPW2IJ": {
|
||||||
"file": "chunk-UEBPW2IJ.js"
|
"file": "chunk-UEBPW2IJ.js"
|
||||||
},
|
},
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,160 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-HN2XXSSU.mjs
|
|
||||||
var markerOffsets = {
|
|
||||||
aggregation: 17.25,
|
|
||||||
extension: 17.25,
|
|
||||||
composition: 17.25,
|
|
||||||
dependency: 6,
|
|
||||||
lollipop: 13.5,
|
|
||||||
arrow_point: 4
|
|
||||||
//arrow_cross: 24,
|
|
||||||
};
|
|
||||||
var markerOffsets2 = {
|
|
||||||
arrow_point: 9,
|
|
||||||
arrow_cross: 12.5,
|
|
||||||
arrow_circle: 12.5
|
|
||||||
};
|
|
||||||
function calculateDeltaAndAngle(point1, point2) {
|
|
||||||
if (point1 === void 0 || point2 === void 0) {
|
|
||||||
return { angle: 0, deltaX: 0, deltaY: 0 };
|
|
||||||
}
|
|
||||||
point1 = pointTransformer(point1);
|
|
||||||
point2 = pointTransformer(point2);
|
|
||||||
const [x1, y1] = [point1.x, point1.y];
|
|
||||||
const [x2, y2] = [point2.x, point2.y];
|
|
||||||
const deltaX = x2 - x1;
|
|
||||||
const deltaY = y2 - y1;
|
|
||||||
return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };
|
|
||||||
}
|
|
||||||
__name(calculateDeltaAndAngle, "calculateDeltaAndAngle");
|
|
||||||
var pointTransformer = __name((data) => {
|
|
||||||
if (Array.isArray(data)) {
|
|
||||||
return { x: data[0], y: data[1] };
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}, "pointTransformer");
|
|
||||||
var getLineFunctionsWithOffset = __name((edge) => {
|
|
||||||
return {
|
|
||||||
x: __name(function(d, i, data) {
|
|
||||||
let offset = 0;
|
|
||||||
const DIRECTION = pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? "left" : "right";
|
|
||||||
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
|
||||||
const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);
|
|
||||||
offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
|
|
||||||
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
|
||||||
const { angle, deltaX } = calculateDeltaAndAngle(
|
|
||||||
data[data.length - 1],
|
|
||||||
data[data.length - 2]
|
|
||||||
);
|
|
||||||
offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);
|
|
||||||
}
|
|
||||||
const differenceToEnd = Math.abs(
|
|
||||||
pointTransformer(d).x - pointTransformer(data[data.length - 1]).x
|
|
||||||
);
|
|
||||||
const differenceInYEnd = Math.abs(
|
|
||||||
pointTransformer(d).y - pointTransformer(data[data.length - 1]).y
|
|
||||||
);
|
|
||||||
const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);
|
|
||||||
const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);
|
|
||||||
const startMarkerHeight = markerOffsets[edge.arrowTypeStart];
|
|
||||||
const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];
|
|
||||||
const extraRoom = 1;
|
|
||||||
if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInYEnd < endMarkerHeight) {
|
|
||||||
let adjustment = endMarkerHeight + extraRoom - differenceToEnd;
|
|
||||||
adjustment *= DIRECTION === "right" ? -1 : 1;
|
|
||||||
offset -= adjustment;
|
|
||||||
}
|
|
||||||
if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInYStart < startMarkerHeight) {
|
|
||||||
let adjustment = startMarkerHeight + extraRoom - differenceToStart;
|
|
||||||
adjustment *= DIRECTION === "right" ? -1 : 1;
|
|
||||||
offset += adjustment;
|
|
||||||
}
|
|
||||||
return pointTransformer(d).x + offset;
|
|
||||||
}, "x"),
|
|
||||||
y: __name(function(d, i, data) {
|
|
||||||
let offset = 0;
|
|
||||||
const DIRECTION = pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? "down" : "up";
|
|
||||||
if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {
|
|
||||||
const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);
|
|
||||||
offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
|
||||||
} else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {
|
|
||||||
const { angle, deltaY } = calculateDeltaAndAngle(
|
|
||||||
data[data.length - 1],
|
|
||||||
data[data.length - 2]
|
|
||||||
);
|
|
||||||
offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);
|
|
||||||
}
|
|
||||||
const differenceToEnd = Math.abs(
|
|
||||||
pointTransformer(d).y - pointTransformer(data[data.length - 1]).y
|
|
||||||
);
|
|
||||||
const differenceInXEnd = Math.abs(
|
|
||||||
pointTransformer(d).x - pointTransformer(data[data.length - 1]).x
|
|
||||||
);
|
|
||||||
const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);
|
|
||||||
const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);
|
|
||||||
const startMarkerHeight = markerOffsets[edge.arrowTypeStart];
|
|
||||||
const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];
|
|
||||||
const extraRoom = 1;
|
|
||||||
if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInXEnd < endMarkerHeight) {
|
|
||||||
let adjustment = endMarkerHeight + extraRoom - differenceToEnd;
|
|
||||||
adjustment *= DIRECTION === "up" ? -1 : 1;
|
|
||||||
offset -= adjustment;
|
|
||||||
}
|
|
||||||
if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInXStart < startMarkerHeight) {
|
|
||||||
let adjustment = startMarkerHeight + extraRoom - differenceToStart;
|
|
||||||
adjustment *= DIRECTION === "up" ? -1 : 1;
|
|
||||||
offset += adjustment;
|
|
||||||
}
|
|
||||||
return pointTransformer(d).y + offset;
|
|
||||||
}, "y")
|
|
||||||
};
|
|
||||||
}, "getLineFunctionsWithOffset");
|
|
||||||
if (void 0) {
|
|
||||||
const { it, expect, describe } = void 0;
|
|
||||||
describe("calculateDeltaAndAngle", () => {
|
|
||||||
it("should calculate the angle and deltas between two points", () => {
|
|
||||||
expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({
|
|
||||||
angle: 1.5707963267948966,
|
|
||||||
deltaX: 0,
|
|
||||||
deltaY: 1
|
|
||||||
});
|
|
||||||
expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({
|
|
||||||
angle: 0.7853981633974483,
|
|
||||||
deltaX: -1,
|
|
||||||
deltaY: -1
|
|
||||||
});
|
|
||||||
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({
|
|
||||||
angle: 0.7853981633974483,
|
|
||||||
deltaX: -1,
|
|
||||||
deltaY: -1
|
|
||||||
});
|
|
||||||
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({
|
|
||||||
angle: NaN,
|
|
||||||
deltaX: 0,
|
|
||||||
deltaY: 0
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should calculate the angle and deltas if one point in undefined", () => {
|
|
||||||
expect(calculateDeltaAndAngle(void 0, [0, 1])).toStrictEqual({
|
|
||||||
angle: 0,
|
|
||||||
deltaX: 0,
|
|
||||||
deltaY: 0
|
|
||||||
});
|
|
||||||
expect(calculateDeltaAndAngle([0, 1], void 0)).toStrictEqual({
|
|
||||||
angle: 0,
|
|
||||||
deltaX: 0,
|
|
||||||
deltaY: 0
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
markerOffsets,
|
|
||||||
markerOffsets2,
|
|
||||||
getLineFunctionsWithOffset
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-2HSIUWWJ.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,23 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-QZHKN3VN.mjs
|
|
||||||
var _a;
|
|
||||||
var ImperativeState = (_a = class {
|
|
||||||
/**
|
|
||||||
* @param init - Function that creates the default state.
|
|
||||||
*/
|
|
||||||
constructor(init) {
|
|
||||||
this.init = init;
|
|
||||||
this.records = this.init();
|
|
||||||
}
|
|
||||||
reset() {
|
|
||||||
this.records = this.init();
|
|
||||||
}
|
|
||||||
}, __name(_a, "ImperativeState"), _a);
|
|
||||||
|
|
||||||
export {
|
|
||||||
ImperativeState
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-3WIYXQMB.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-QZHKN3VN.mjs"],
|
|
||||||
"sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/utils/imperativeState.ts\nvar ImperativeState = class {\n /**\n * @param init - Function that creates the default state.\n */\n constructor(init) {\n this.init = init;\n this.records = this.init();\n }\n static {\n __name(this, \"ImperativeState\");\n }\n reset() {\n this.records = this.init();\n }\n};\n\nexport {\n ImperativeState\n};\n"],
|
|
||||||
"mappings": ";;;;;AAAA;AAKA,IAAI,mBAAkB,WAAM;AAAA;AAAA;AAAA;AAAA,EAI1B,YAAY,MAAM;AAChB,SAAK,OAAO;AACZ,SAAK,UAAU,KAAK,KAAK;AAAA,EAC3B;AAAA,EAIA,QAAQ;AACN,SAAK,UAAU,KAAK,KAAK;AAAA,EAC3B;AACF,GALI,OAAO,IAAM,iBAAiB,GATZ;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import {
|
|
||||||
getConfig2
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
select_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-EXTU4WIE.mjs
|
|
||||||
var selectSvgElement = __name((id) => {
|
|
||||||
const { securityLevel } = getConfig2();
|
|
||||||
let root = select_default("body");
|
|
||||||
if (securityLevel === "sandbox") {
|
|
||||||
const sandboxElement = select_default(`#i${id}`);
|
|
||||||
const doc = sandboxElement.node()?.contentDocument ?? document;
|
|
||||||
root = select_default(doc.body);
|
|
||||||
}
|
|
||||||
const svg = root.select(`#${id}`);
|
|
||||||
return svg;
|
|
||||||
}, "selectSvgElement");
|
|
||||||
|
|
||||||
export {
|
|
||||||
selectSvgElement
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-B5NQPFQG.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-EXTU4WIE.mjs"],
|
|
||||||
"sourcesContent": ["import {\n getConfig2 as getConfig\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/selectSvgElement.ts\nimport { select } from \"d3\";\nvar selectSvgElement = /* @__PURE__ */ __name((id) => {\n const { securityLevel } = getConfig();\n let root = select(\"body\");\n if (securityLevel === \"sandbox\") {\n const sandboxElement = select(`#i${id}`);\n const doc = sandboxElement.node()?.contentDocument ?? document;\n root = select(doc.body);\n }\n const svg = root.select(`#${id}`);\n return svg;\n}, \"selectSvgElement\");\n\nexport {\n selectSvgElement\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;AASA,IAAI,mBAAmC,OAAO,CAAC,OAAO;AACpD,QAAM,EAAE,cAAc,IAAI,WAAU;AACpC,MAAI,OAAO,eAAO,MAAM;AACxB,MAAI,kBAAkB,WAAW;AAC/B,UAAM,iBAAiB,eAAO,KAAK,EAAE,EAAE;AACvC,UAAM,MAAM,eAAe,KAAK,GAAG,mBAAmB;AACtD,WAAO,eAAO,IAAI,IAAI;AAAA,EACxB;AACA,QAAM,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE;AAChC,SAAO;AACT,GAAG,kBAAkB;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,124 +0,0 @@
|
|||||||
import {
|
|
||||||
require_dist
|
|
||||||
} from "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
lineBreakRegex
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__toESM
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-TZMSLE5B.mjs
|
|
||||||
var import_sanitize_url = __toESM(require_dist(), 1);
|
|
||||||
var drawRect = __name((element, rectData) => {
|
|
||||||
const rectElement = element.append("rect");
|
|
||||||
rectElement.attr("x", rectData.x);
|
|
||||||
rectElement.attr("y", rectData.y);
|
|
||||||
rectElement.attr("fill", rectData.fill);
|
|
||||||
rectElement.attr("stroke", rectData.stroke);
|
|
||||||
rectElement.attr("width", rectData.width);
|
|
||||||
rectElement.attr("height", rectData.height);
|
|
||||||
if (rectData.name) {
|
|
||||||
rectElement.attr("name", rectData.name);
|
|
||||||
}
|
|
||||||
if (rectData.rx) {
|
|
||||||
rectElement.attr("rx", rectData.rx);
|
|
||||||
}
|
|
||||||
if (rectData.ry) {
|
|
||||||
rectElement.attr("ry", rectData.ry);
|
|
||||||
}
|
|
||||||
if (rectData.attrs !== void 0) {
|
|
||||||
for (const attrKey in rectData.attrs) {
|
|
||||||
rectElement.attr(attrKey, rectData.attrs[attrKey]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (rectData.class) {
|
|
||||||
rectElement.attr("class", rectData.class);
|
|
||||||
}
|
|
||||||
return rectElement;
|
|
||||||
}, "drawRect");
|
|
||||||
var drawBackgroundRect = __name((element, bounds) => {
|
|
||||||
const rectData = {
|
|
||||||
x: bounds.startx,
|
|
||||||
y: bounds.starty,
|
|
||||||
width: bounds.stopx - bounds.startx,
|
|
||||||
height: bounds.stopy - bounds.starty,
|
|
||||||
fill: bounds.fill,
|
|
||||||
stroke: bounds.stroke,
|
|
||||||
class: "rect"
|
|
||||||
};
|
|
||||||
const rectElement = drawRect(element, rectData);
|
|
||||||
rectElement.lower();
|
|
||||||
}, "drawBackgroundRect");
|
|
||||||
var drawText = __name((element, textData) => {
|
|
||||||
const nText = textData.text.replace(lineBreakRegex, " ");
|
|
||||||
const textElem = element.append("text");
|
|
||||||
textElem.attr("x", textData.x);
|
|
||||||
textElem.attr("y", textData.y);
|
|
||||||
textElem.attr("class", "legend");
|
|
||||||
textElem.style("text-anchor", textData.anchor);
|
|
||||||
if (textData.class) {
|
|
||||||
textElem.attr("class", textData.class);
|
|
||||||
}
|
|
||||||
const tspan = textElem.append("tspan");
|
|
||||||
tspan.attr("x", textData.x + textData.textMargin * 2);
|
|
||||||
tspan.text(nText);
|
|
||||||
return textElem;
|
|
||||||
}, "drawText");
|
|
||||||
var drawImage = __name((elem, x, y, link) => {
|
|
||||||
const imageElement = elem.append("image");
|
|
||||||
imageElement.attr("x", x);
|
|
||||||
imageElement.attr("y", y);
|
|
||||||
const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link);
|
|
||||||
imageElement.attr("xlink:href", sanitizedLink);
|
|
||||||
}, "drawImage");
|
|
||||||
var drawEmbeddedImage = __name((element, x, y, link) => {
|
|
||||||
const imageElement = element.append("use");
|
|
||||||
imageElement.attr("x", x);
|
|
||||||
imageElement.attr("y", y);
|
|
||||||
const sanitizedLink = (0, import_sanitize_url.sanitizeUrl)(link);
|
|
||||||
imageElement.attr("xlink:href", `#${sanitizedLink}`);
|
|
||||||
}, "drawEmbeddedImage");
|
|
||||||
var getNoteRect = __name(() => {
|
|
||||||
const noteRectData = {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
width: 100,
|
|
||||||
height: 100,
|
|
||||||
fill: "#EDF2AE",
|
|
||||||
stroke: "#666",
|
|
||||||
anchor: "start",
|
|
||||||
rx: 0,
|
|
||||||
ry: 0
|
|
||||||
};
|
|
||||||
return noteRectData;
|
|
||||||
}, "getNoteRect");
|
|
||||||
var getTextObj = __name(() => {
|
|
||||||
const testObject = {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
width: 100,
|
|
||||||
height: 100,
|
|
||||||
"text-anchor": "start",
|
|
||||||
style: "#666",
|
|
||||||
textMargin: 0,
|
|
||||||
rx: 0,
|
|
||||||
ry: 0,
|
|
||||||
tspan: true
|
|
||||||
};
|
|
||||||
return testObject;
|
|
||||||
}, "getTextObj");
|
|
||||||
|
|
||||||
export {
|
|
||||||
drawRect,
|
|
||||||
drawBackgroundRect,
|
|
||||||
drawText,
|
|
||||||
drawImage,
|
|
||||||
drawEmbeddedImage,
|
|
||||||
getNoteRect,
|
|
||||||
getTextObj
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-BETRN5NS.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-TZMSLE5B.mjs"],
|
|
||||||
"sourcesContent": ["import {\n lineBreakRegex\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/common/svgDrawCommon.ts\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nvar drawRect = /* @__PURE__ */ __name((element, rectData) => {\n const rectElement = element.append(\"rect\");\n rectElement.attr(\"x\", rectData.x);\n rectElement.attr(\"y\", rectData.y);\n rectElement.attr(\"fill\", rectData.fill);\n rectElement.attr(\"stroke\", rectData.stroke);\n rectElement.attr(\"width\", rectData.width);\n rectElement.attr(\"height\", rectData.height);\n if (rectData.name) {\n rectElement.attr(\"name\", rectData.name);\n }\n if (rectData.rx) {\n rectElement.attr(\"rx\", rectData.rx);\n }\n if (rectData.ry) {\n rectElement.attr(\"ry\", rectData.ry);\n }\n if (rectData.attrs !== void 0) {\n for (const attrKey in rectData.attrs) {\n rectElement.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n if (rectData.class) {\n rectElement.attr(\"class\", rectData.class);\n }\n return rectElement;\n}, \"drawRect\");\nvar drawBackgroundRect = /* @__PURE__ */ __name((element, bounds) => {\n const rectData = {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n stroke: bounds.stroke,\n class: \"rect\"\n };\n const rectElement = drawRect(element, rectData);\n rectElement.lower();\n}, \"drawBackgroundRect\");\nvar drawText = /* @__PURE__ */ __name((element, textData) => {\n const nText = textData.text.replace(lineBreakRegex, \" \");\n const textElem = element.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class) {\n textElem.attr(\"class\", textData.class);\n }\n const tspan = textElem.append(\"tspan\");\n tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n tspan.text(nText);\n return textElem;\n}, \"drawText\");\nvar drawImage = /* @__PURE__ */ __name((elem, x, y, link) => {\n const imageElement = elem.append(\"image\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", sanitizedLink);\n}, \"drawImage\");\nvar drawEmbeddedImage = /* @__PURE__ */ __name((element, x, y, link) => {\n const imageElement = element.append(\"use\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n}, \"drawEmbeddedImage\");\nvar getNoteRect = /* @__PURE__ */ __name(() => {\n const noteRectData = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n return noteRectData;\n}, \"getNoteRect\");\nvar getTextObj = /* @__PURE__ */ __name(() => {\n const testObject = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true\n };\n return testObject;\n}, \"getTextObj\");\n\nexport {\n drawRect,\n drawBackgroundRect,\n drawText,\n drawImage,\n drawEmbeddedImage,\n getNoteRect,\n getTextObj\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;;;;;;AAQA,0BAA4B;AAC5B,IAAI,WAA2B,OAAO,CAAC,SAAS,aAAa;AAC3D,QAAM,cAAc,QAAQ,OAAO,MAAM;AACzC,cAAY,KAAK,KAAK,SAAS,CAAC;AAChC,cAAY,KAAK,KAAK,SAAS,CAAC;AAChC,cAAY,KAAK,QAAQ,SAAS,IAAI;AACtC,cAAY,KAAK,UAAU,SAAS,MAAM;AAC1C,cAAY,KAAK,SAAS,SAAS,KAAK;AACxC,cAAY,KAAK,UAAU,SAAS,MAAM;AAC1C,MAAI,SAAS,MAAM;AACjB,gBAAY,KAAK,QAAQ,SAAS,IAAI;AAAA,EACxC;AACA,MAAI,SAAS,IAAI;AACf,gBAAY,KAAK,MAAM,SAAS,EAAE;AAAA,EACpC;AACA,MAAI,SAAS,IAAI;AACf,gBAAY,KAAK,MAAM,SAAS,EAAE;AAAA,EACpC;AACA,MAAI,SAAS,UAAU,QAAQ;AAC7B,eAAW,WAAW,SAAS,OAAO;AACpC,kBAAY,KAAK,SAAS,SAAS,MAAM,OAAO,CAAC;AAAA,IACnD;AAAA,EACF;AACA,MAAI,SAAS,OAAO;AAClB,gBAAY,KAAK,SAAS,SAAS,KAAK;AAAA,EAC1C;AACA,SAAO;AACT,GAAG,UAAU;AACb,IAAI,qBAAqC,OAAO,CAAC,SAAS,WAAW;AACnE,QAAM,WAAW;AAAA,IACf,GAAG,OAAO;AAAA,IACV,GAAG,OAAO;AAAA,IACV,OAAO,OAAO,QAAQ,OAAO;AAAA,IAC7B,QAAQ,OAAO,QAAQ,OAAO;AAAA,IAC9B,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,OAAO;AAAA,EACT;AACA,QAAM,cAAc,SAAS,SAAS,QAAQ;AAC9C,cAAY,MAAM;AACpB,GAAG,oBAAoB;AACvB,IAAI,WAA2B,OAAO,CAAC,SAAS,aAAa;AAC3D,QAAM,QAAQ,SAAS,KAAK,QAAQ,gBAAgB,GAAG;AACvD,QAAM,WAAW,QAAQ,OAAO,MAAM;AACtC,WAAS,KAAK,KAAK,SAAS,CAAC;AAC7B,WAAS,KAAK,KAAK,SAAS,CAAC;AAC7B,WAAS,KAAK,SAAS,QAAQ;AAC/B,WAAS,MAAM,eAAe,SAAS,MAAM;AAC7C,MAAI,SAAS,OAAO;AAClB,aAAS,KAAK,SAAS,SAAS,KAAK;AAAA,EACvC;AACA,QAAM,QAAQ,SAAS,OAAO,OAAO;AACrC,QAAM,KAAK,KAAK,SAAS,IAAI,SAAS,aAAa,CAAC;AACpD,QAAM,KAAK,KAAK;AAChB,SAAO;AACT,GAAG,UAAU;AACb,IAAI,YAA4B,OAAO,CAAC,MAAM,GAAG,GAAG,SAAS;AAC3D,QAAM,eAAe,KAAK,OAAO,OAAO;AACxC,eAAa,KAAK,KAAK,CAAC;AACxB,eAAa,KAAK,KAAK,CAAC;AACxB,QAAM,oBAAgB,iCAAY,IAAI;AACtC,eAAa,KAAK,cAAc,aAAa;AAC/C,GAAG,WAAW;AACd,IAAI,oBAAoC,OAAO,CAAC,SAAS,GAAG,GAAG,SAAS;AACtE,QAAM,eAAe,QAAQ,OAAO,KAAK;AACzC,eAAa,KAAK,KAAK,CAAC;AACxB,eAAa,KAAK,KAAK,CAAC;AACxB,QAAM,oBAAgB,iCAAY,IAAI;AACtC,eAAa,KAAK,cAAc,IAAI,aAAa,EAAE;AACrD,GAAG,mBAAmB;AACtB,IAAI,cAA8B,OAAO,MAAM;AAC7C,QAAM,eAAe;AAAA,IACnB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SAAO;AACT,GAAG,aAAa;AAChB,IAAI,aAA6B,OAAO,MAAM;AAC5C,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AACA,SAAO;AACT,GAAG,YAAY;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
4744
.angular/cache/20.3.3/app/vite/deps/chunk-BFCVI5XI.js
vendored
4744
.angular/cache/20.3.3/app/vite/deps/chunk-BFCVI5XI.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,22 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-CVBHYZKI.mjs
|
|
||||||
var getSubGraphTitleMargins = __name(({
|
|
||||||
flowchart
|
|
||||||
}) => {
|
|
||||||
const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;
|
|
||||||
const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;
|
|
||||||
const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;
|
|
||||||
return {
|
|
||||||
subGraphTitleTopMargin,
|
|
||||||
subGraphTitleBottomMargin,
|
|
||||||
subGraphTitleTotalMargin
|
|
||||||
};
|
|
||||||
}, "getSubGraphTitleMargins");
|
|
||||||
|
|
||||||
export {
|
|
||||||
getSubGraphTitleMargins
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-EUUYHBKV.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-CVBHYZKI.mjs"],
|
|
||||||
"sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n flowchart\n}) => {\n const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n}, \"getSubGraphTitleMargins\");\n\nexport {\n getSubGraphTitleMargins\n};\n"],
|
|
||||||
"mappings": ";;;;;AAKA,IAAI,0BAA0C,OAAO,CAAC;AAAA,EACpD;AACF,MAAM;AACJ,QAAM,yBAAyB,WAAW,qBAAqB,OAAO;AACtE,QAAM,4BAA4B,WAAW,qBAAqB,UAAU;AAC5E,QAAM,2BAA2B,yBAAyB;AAC1D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,GAAG,yBAAyB;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,112 +0,0 @@
|
|||||||
import {
|
|
||||||
getConfig2
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-ATLVNIR6.mjs
|
|
||||||
var solidStateFill = __name((color) => {
|
|
||||||
const { handDrawnSeed } = getConfig2();
|
|
||||||
return {
|
|
||||||
fill: color,
|
|
||||||
hachureAngle: 120,
|
|
||||||
// angle of hachure,
|
|
||||||
hachureGap: 4,
|
|
||||||
fillWeight: 2,
|
|
||||||
roughness: 0.7,
|
|
||||||
stroke: color,
|
|
||||||
seed: handDrawnSeed
|
|
||||||
};
|
|
||||||
}, "solidStateFill");
|
|
||||||
var compileStyles = __name((node) => {
|
|
||||||
const stylesMap = styles2Map([
|
|
||||||
...node.cssCompiledStyles || [],
|
|
||||||
...node.cssStyles || [],
|
|
||||||
...node.labelStyle || []
|
|
||||||
]);
|
|
||||||
return { stylesMap, stylesArray: [...stylesMap] };
|
|
||||||
}, "compileStyles");
|
|
||||||
var styles2Map = __name((styles) => {
|
|
||||||
const styleMap = /* @__PURE__ */ new Map();
|
|
||||||
styles.forEach((style) => {
|
|
||||||
const [key, value] = style.split(":");
|
|
||||||
styleMap.set(key.trim(), value?.trim());
|
|
||||||
});
|
|
||||||
return styleMap;
|
|
||||||
}, "styles2Map");
|
|
||||||
var isLabelStyle = __name((key) => {
|
|
||||||
return key === "color" || key === "font-size" || key === "font-family" || key === "font-weight" || key === "font-style" || key === "text-decoration" || key === "text-align" || key === "text-transform" || key === "line-height" || key === "letter-spacing" || key === "word-spacing" || key === "text-shadow" || key === "text-overflow" || key === "white-space" || key === "word-wrap" || key === "word-break" || key === "overflow-wrap" || key === "hyphens";
|
|
||||||
}, "isLabelStyle");
|
|
||||||
var styles2String = __name((node) => {
|
|
||||||
const { stylesArray } = compileStyles(node);
|
|
||||||
const labelStyles = [];
|
|
||||||
const nodeStyles = [];
|
|
||||||
const borderStyles = [];
|
|
||||||
const backgroundStyles = [];
|
|
||||||
stylesArray.forEach((style) => {
|
|
||||||
const key = style[0];
|
|
||||||
if (isLabelStyle(key)) {
|
|
||||||
labelStyles.push(style.join(":") + " !important");
|
|
||||||
} else {
|
|
||||||
nodeStyles.push(style.join(":") + " !important");
|
|
||||||
if (key.includes("stroke")) {
|
|
||||||
borderStyles.push(style.join(":") + " !important");
|
|
||||||
}
|
|
||||||
if (key === "fill") {
|
|
||||||
backgroundStyles.push(style.join(":") + " !important");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
labelStyles: labelStyles.join(";"),
|
|
||||||
nodeStyles: nodeStyles.join(";"),
|
|
||||||
stylesArray,
|
|
||||||
borderStyles,
|
|
||||||
backgroundStyles
|
|
||||||
};
|
|
||||||
}, "styles2String");
|
|
||||||
var userNodeOverrides = __name((node, options) => {
|
|
||||||
const { themeVariables, handDrawnSeed } = getConfig2();
|
|
||||||
const { nodeBorder, mainBkg } = themeVariables;
|
|
||||||
const { stylesMap } = compileStyles(node);
|
|
||||||
const result = Object.assign(
|
|
||||||
{
|
|
||||||
roughness: 0.7,
|
|
||||||
fill: stylesMap.get("fill") || mainBkg,
|
|
||||||
fillStyle: "hachure",
|
|
||||||
// solid fill
|
|
||||||
fillWeight: 4,
|
|
||||||
hachureGap: 5.2,
|
|
||||||
stroke: stylesMap.get("stroke") || nodeBorder,
|
|
||||||
seed: handDrawnSeed,
|
|
||||||
strokeWidth: stylesMap.get("stroke-width")?.replace("px", "") || 1.3,
|
|
||||||
fillLineDash: [0, 0],
|
|
||||||
strokeLineDash: getStrokeDashArray(stylesMap.get("stroke-dasharray"))
|
|
||||||
},
|
|
||||||
options
|
|
||||||
);
|
|
||||||
return result;
|
|
||||||
}, "userNodeOverrides");
|
|
||||||
var getStrokeDashArray = __name((strokeDasharrayStyle) => {
|
|
||||||
if (!strokeDasharrayStyle) {
|
|
||||||
return [0, 0];
|
|
||||||
}
|
|
||||||
const dashArray = strokeDasharrayStyle.trim().split(/\s+/).map(Number);
|
|
||||||
if (dashArray.length === 1) {
|
|
||||||
const val = isNaN(dashArray[0]) ? 0 : dashArray[0];
|
|
||||||
return [val, val];
|
|
||||||
}
|
|
||||||
const first = isNaN(dashArray[0]) ? 0 : dashArray[0];
|
|
||||||
const second = isNaN(dashArray[1]) ? 0 : dashArray[1];
|
|
||||||
return [first, second];
|
|
||||||
}, "getStrokeDashArray");
|
|
||||||
|
|
||||||
export {
|
|
||||||
solidStateFill,
|
|
||||||
compileStyles,
|
|
||||||
isLabelStyle,
|
|
||||||
styles2String,
|
|
||||||
userNodeOverrides
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-FTTOYZOY.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-ATLVNIR6.mjs"],
|
|
||||||
"sourcesContent": ["import {\n getConfig2 as getConfig\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts\nvar solidStateFill = /* @__PURE__ */ __name((color) => {\n const { handDrawnSeed } = getConfig();\n return {\n fill: color,\n hachureAngle: 120,\n // angle of hachure,\n hachureGap: 4,\n fillWeight: 2,\n roughness: 0.7,\n stroke: color,\n seed: handDrawnSeed\n };\n}, \"solidStateFill\");\nvar compileStyles = /* @__PURE__ */ __name((node) => {\n const stylesMap = styles2Map([\n ...node.cssCompiledStyles || [],\n ...node.cssStyles || [],\n ...node.labelStyle || []\n ]);\n return { stylesMap, stylesArray: [...stylesMap] };\n}, \"compileStyles\");\nvar styles2Map = /* @__PURE__ */ __name((styles) => {\n const styleMap = /* @__PURE__ */ new Map();\n styles.forEach((style) => {\n const [key, value] = style.split(\":\");\n styleMap.set(key.trim(), value?.trim());\n });\n return styleMap;\n}, \"styles2Map\");\nvar isLabelStyle = /* @__PURE__ */ __name((key) => {\n return key === \"color\" || key === \"font-size\" || key === \"font-family\" || key === \"font-weight\" || key === \"font-style\" || key === \"text-decoration\" || key === \"text-align\" || key === \"text-transform\" || key === \"line-height\" || key === \"letter-spacing\" || key === \"word-spacing\" || key === \"text-shadow\" || key === \"text-overflow\" || key === \"white-space\" || key === \"word-wrap\" || key === \"word-break\" || key === \"overflow-wrap\" || key === \"hyphens\";\n}, \"isLabelStyle\");\nvar styles2String = /* @__PURE__ */ __name((node) => {\n const { stylesArray } = compileStyles(node);\n const labelStyles = [];\n const nodeStyles = [];\n const borderStyles = [];\n const backgroundStyles = [];\n stylesArray.forEach((style) => {\n const key = style[0];\n if (isLabelStyle(key)) {\n labelStyles.push(style.join(\":\") + \" !important\");\n } else {\n nodeStyles.push(style.join(\":\") + \" !important\");\n if (key.includes(\"stroke\")) {\n borderStyles.push(style.join(\":\") + \" !important\");\n }\n if (key === \"fill\") {\n backgroundStyles.push(style.join(\":\") + \" !important\");\n }\n }\n });\n return {\n labelStyles: labelStyles.join(\";\"),\n nodeStyles: nodeStyles.join(\";\"),\n stylesArray,\n borderStyles,\n backgroundStyles\n };\n}, \"styles2String\");\nvar userNodeOverrides = /* @__PURE__ */ __name((node, options) => {\n const { themeVariables, handDrawnSeed } = getConfig();\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const result = Object.assign(\n {\n roughness: 0.7,\n fill: stylesMap.get(\"fill\") || mainBkg,\n fillStyle: \"hachure\",\n // solid fill\n fillWeight: 4,\n hachureGap: 5.2,\n stroke: stylesMap.get(\"stroke\") || nodeBorder,\n seed: handDrawnSeed,\n strokeWidth: stylesMap.get(\"stroke-width\")?.replace(\"px\", \"\") || 1.3,\n fillLineDash: [0, 0],\n strokeLineDash: getStrokeDashArray(stylesMap.get(\"stroke-dasharray\"))\n },\n options\n );\n return result;\n}, \"userNodeOverrides\");\nvar getStrokeDashArray = /* @__PURE__ */ __name((strokeDasharrayStyle) => {\n if (!strokeDasharrayStyle) {\n return [0, 0];\n }\n const dashArray = strokeDasharrayStyle.trim().split(/\\s+/).map(Number);\n if (dashArray.length === 1) {\n const val = isNaN(dashArray[0]) ? 0 : dashArray[0];\n return [val, val];\n }\n const first = isNaN(dashArray[0]) ? 0 : dashArray[0];\n const second = isNaN(dashArray[1]) ? 0 : dashArray[1];\n return [first, second];\n}, \"getStrokeDashArray\");\n\nexport {\n solidStateFill,\n compileStyles,\n isLabelStyle,\n styles2String,\n userNodeOverrides\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;AAQA,IAAI,iBAAiC,OAAO,CAAC,UAAU;AACrD,QAAM,EAAE,cAAc,IAAI,WAAU;AACpC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,cAAc;AAAA;AAAA,IAEd,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AACF,GAAG,gBAAgB;AACnB,IAAI,gBAAgC,OAAO,CAAC,SAAS;AACnD,QAAM,YAAY,WAAW;AAAA,IAC3B,GAAG,KAAK,qBAAqB,CAAC;AAAA,IAC9B,GAAG,KAAK,aAAa,CAAC;AAAA,IACtB,GAAG,KAAK,cAAc,CAAC;AAAA,EACzB,CAAC;AACD,SAAO,EAAE,WAAW,aAAa,CAAC,GAAG,SAAS,EAAE;AAClD,GAAG,eAAe;AAClB,IAAI,aAA6B,OAAO,CAAC,WAAW;AAClD,QAAM,WAA2B,oBAAI,IAAI;AACzC,SAAO,QAAQ,CAAC,UAAU;AACxB,UAAM,CAAC,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG;AACpC,aAAS,IAAI,IAAI,KAAK,GAAG,OAAO,KAAK,CAAC;AAAA,EACxC,CAAC;AACD,SAAO;AACT,GAAG,YAAY;AACf,IAAI,eAA+B,OAAO,CAAC,QAAQ;AACjD,SAAO,QAAQ,WAAW,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ,iBAAiB,QAAQ,gBAAgB,QAAQ,qBAAqB,QAAQ,gBAAgB,QAAQ,oBAAoB,QAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,kBAAkB,QAAQ,iBAAiB,QAAQ,mBAAmB,QAAQ,iBAAiB,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,mBAAmB,QAAQ;AAC5b,GAAG,cAAc;AACjB,IAAI,gBAAgC,OAAO,CAAC,SAAS;AACnD,QAAM,EAAE,YAAY,IAAI,cAAc,IAAI;AAC1C,QAAM,cAAc,CAAC;AACrB,QAAM,aAAa,CAAC;AACpB,QAAM,eAAe,CAAC;AACtB,QAAM,mBAAmB,CAAC;AAC1B,cAAY,QAAQ,CAAC,UAAU;AAC7B,UAAM,MAAM,MAAM,CAAC;AACnB,QAAI,aAAa,GAAG,GAAG;AACrB,kBAAY,KAAK,MAAM,KAAK,GAAG,IAAI,aAAa;AAAA,IAClD,OAAO;AACL,iBAAW,KAAK,MAAM,KAAK,GAAG,IAAI,aAAa;AAC/C,UAAI,IAAI,SAAS,QAAQ,GAAG;AAC1B,qBAAa,KAAK,MAAM,KAAK,GAAG,IAAI,aAAa;AAAA,MACnD;AACA,UAAI,QAAQ,QAAQ;AAClB,yBAAiB,KAAK,MAAM,KAAK,GAAG,IAAI,aAAa;AAAA,MACvD;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL,aAAa,YAAY,KAAK,GAAG;AAAA,IACjC,YAAY,WAAW,KAAK,GAAG;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,GAAG,eAAe;AAClB,IAAI,oBAAoC,OAAO,CAAC,MAAM,YAAY;AAChE,QAAM,EAAE,gBAAgB,cAAc,IAAI,WAAU;AACpD,QAAM,EAAE,YAAY,QAAQ,IAAI;AAChC,QAAM,EAAE,UAAU,IAAI,cAAc,IAAI;AACxC,QAAM,SAAS,OAAO;AAAA,IACpB;AAAA,MACE,WAAW;AAAA,MACX,MAAM,UAAU,IAAI,MAAM,KAAK;AAAA,MAC/B,WAAW;AAAA;AAAA,MAEX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,UAAU,IAAI,QAAQ,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,aAAa,UAAU,IAAI,cAAc,GAAG,QAAQ,MAAM,EAAE,KAAK;AAAA,MACjE,cAAc,CAAC,GAAG,CAAC;AAAA,MACnB,gBAAgB,mBAAmB,UAAU,IAAI,kBAAkB,CAAC;AAAA,IACtE;AAAA,IACA;AAAA,EACF;AACA,SAAO;AACT,GAAG,mBAAmB;AACtB,IAAI,qBAAqC,OAAO,CAAC,yBAAyB;AACxE,MAAI,CAAC,sBAAsB;AACzB,WAAO,CAAC,GAAG,CAAC;AAAA,EACd;AACA,QAAM,YAAY,qBAAqB,KAAK,EAAE,MAAM,KAAK,EAAE,IAAI,MAAM;AACrE,MAAI,UAAU,WAAW,GAAG;AAC1B,UAAM,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC;AACjD,WAAO,CAAC,KAAK,GAAG;AAAA,EAClB;AACA,QAAM,QAAQ,MAAM,UAAU,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC;AACnD,QAAM,SAAS,MAAM,UAAU,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC;AACpD,SAAO,CAAC,OAAO,MAAM;AACvB,GAAG,oBAAoB;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,850 +0,0 @@
|
|||||||
import {
|
|
||||||
at,
|
|
||||||
createLabel_default
|
|
||||||
} from "./chunk-JJ4TL56I.js";
|
|
||||||
import {
|
|
||||||
getLineFunctionsWithOffset,
|
|
||||||
markerOffsets,
|
|
||||||
markerOffsets2
|
|
||||||
} from "./chunk-2HSIUWWJ.js";
|
|
||||||
import {
|
|
||||||
getSubGraphTitleMargins
|
|
||||||
} from "./chunk-EUUYHBKV.js";
|
|
||||||
import {
|
|
||||||
isLabelStyle,
|
|
||||||
styles2String
|
|
||||||
} from "./chunk-FTTOYZOY.js";
|
|
||||||
import {
|
|
||||||
createText
|
|
||||||
} from "./chunk-NMWDZEZO.js";
|
|
||||||
import {
|
|
||||||
utils_default
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import {
|
|
||||||
evaluate,
|
|
||||||
getConfig2
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
basis_default,
|
|
||||||
bumpX,
|
|
||||||
bumpY,
|
|
||||||
cardinal_default,
|
|
||||||
catmullRom_default,
|
|
||||||
line_default,
|
|
||||||
linear_default,
|
|
||||||
log,
|
|
||||||
monotoneX,
|
|
||||||
monotoneY,
|
|
||||||
natural_default,
|
|
||||||
select_default,
|
|
||||||
stepAfter,
|
|
||||||
stepBefore,
|
|
||||||
step_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__spreadValues
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-QXUST7PY.mjs
|
|
||||||
var addEdgeMarkers = __name((svgPath, edge, url, id, diagramType, strokeColor) => {
|
|
||||||
if (edge.arrowTypeStart) {
|
|
||||||
addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id, diagramType, strokeColor);
|
|
||||||
}
|
|
||||||
if (edge.arrowTypeEnd) {
|
|
||||||
addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id, diagramType, strokeColor);
|
|
||||||
}
|
|
||||||
}, "addEdgeMarkers");
|
|
||||||
var arrowTypesMap = {
|
|
||||||
arrow_cross: { type: "cross", fill: false },
|
|
||||||
arrow_point: { type: "point", fill: true },
|
|
||||||
arrow_barb: { type: "barb", fill: true },
|
|
||||||
arrow_circle: { type: "circle", fill: false },
|
|
||||||
aggregation: { type: "aggregation", fill: false },
|
|
||||||
extension: { type: "extension", fill: false },
|
|
||||||
composition: { type: "composition", fill: true },
|
|
||||||
dependency: { type: "dependency", fill: true },
|
|
||||||
lollipop: { type: "lollipop", fill: false },
|
|
||||||
only_one: { type: "onlyOne", fill: false },
|
|
||||||
zero_or_one: { type: "zeroOrOne", fill: false },
|
|
||||||
one_or_more: { type: "oneOrMore", fill: false },
|
|
||||||
zero_or_more: { type: "zeroOrMore", fill: false },
|
|
||||||
requirement_arrow: { type: "requirement_arrow", fill: false },
|
|
||||||
requirement_contains: { type: "requirement_contains", fill: false }
|
|
||||||
};
|
|
||||||
var addEdgeMarker = __name((svgPath, position, arrowType, url, id, diagramType, strokeColor) => {
|
|
||||||
const arrowTypeInfo = arrowTypesMap[arrowType];
|
|
||||||
if (!arrowTypeInfo) {
|
|
||||||
log.warn(`Unknown arrow type: ${arrowType}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const endMarkerType = arrowTypeInfo.type;
|
|
||||||
const suffix = position === "start" ? "Start" : "End";
|
|
||||||
const originalMarkerId = `${id}_${diagramType}-${endMarkerType}${suffix}`;
|
|
||||||
if (strokeColor && strokeColor.trim() !== "") {
|
|
||||||
const colorId = strokeColor.replace(/[^\dA-Za-z]/g, "_");
|
|
||||||
const coloredMarkerId = `${originalMarkerId}_${colorId}`;
|
|
||||||
if (!document.getElementById(coloredMarkerId)) {
|
|
||||||
const originalMarker = document.getElementById(originalMarkerId);
|
|
||||||
if (originalMarker) {
|
|
||||||
const coloredMarker = originalMarker.cloneNode(true);
|
|
||||||
coloredMarker.id = coloredMarkerId;
|
|
||||||
const paths = coloredMarker.querySelectorAll("path, circle, line");
|
|
||||||
paths.forEach((path) => {
|
|
||||||
path.setAttribute("stroke", strokeColor);
|
|
||||||
if (arrowTypeInfo.fill) {
|
|
||||||
path.setAttribute("fill", strokeColor);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
originalMarker.parentNode?.appendChild(coloredMarker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
svgPath.attr(`marker-${position}`, `url(${url}#${coloredMarkerId})`);
|
|
||||||
} else {
|
|
||||||
svgPath.attr(`marker-${position}`, `url(${url}#${originalMarkerId})`);
|
|
||||||
}
|
|
||||||
}, "addEdgeMarker");
|
|
||||||
var edgeLabels = /* @__PURE__ */ new Map();
|
|
||||||
var terminalLabels = /* @__PURE__ */ new Map();
|
|
||||||
var clear = __name(() => {
|
|
||||||
edgeLabels.clear();
|
|
||||||
terminalLabels.clear();
|
|
||||||
}, "clear");
|
|
||||||
var getLabelStyles = __name((styleArray) => {
|
|
||||||
let styles = styleArray ? styleArray.reduce((acc, style) => acc + ";" + style, "") : "";
|
|
||||||
return styles;
|
|
||||||
}, "getLabelStyles");
|
|
||||||
var insertEdgeLabel = __name(async (elem, edge) => {
|
|
||||||
let useHtmlLabels = evaluate(getConfig2().flowchart.htmlLabels);
|
|
||||||
const { labelStyles } = styles2String(edge);
|
|
||||||
edge.labelStyle = labelStyles;
|
|
||||||
const labelElement = await createText(elem, edge.label, {
|
|
||||||
style: edge.labelStyle,
|
|
||||||
useHtmlLabels,
|
|
||||||
addSvgBackground: true,
|
|
||||||
isNode: false
|
|
||||||
});
|
|
||||||
log.info("abc82", edge, edge.labelType);
|
|
||||||
const edgeLabel = elem.insert("g").attr("class", "edgeLabel");
|
|
||||||
const label = edgeLabel.insert("g").attr("class", "label").attr("data-id", edge.id);
|
|
||||||
label.node().appendChild(labelElement);
|
|
||||||
let bbox = labelElement.getBBox();
|
|
||||||
if (useHtmlLabels) {
|
|
||||||
const div = labelElement.children[0];
|
|
||||||
const dv = select_default(labelElement);
|
|
||||||
bbox = div.getBoundingClientRect();
|
|
||||||
dv.attr("width", bbox.width);
|
|
||||||
dv.attr("height", bbox.height);
|
|
||||||
}
|
|
||||||
label.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")");
|
|
||||||
edgeLabels.set(edge.id, edgeLabel);
|
|
||||||
edge.width = bbox.width;
|
|
||||||
edge.height = bbox.height;
|
|
||||||
let fo;
|
|
||||||
if (edge.startLabelLeft) {
|
|
||||||
const startLabelElement = await createLabel_default(
|
|
||||||
edge.startLabelLeft,
|
|
||||||
getLabelStyles(edge.labelStyle)
|
|
||||||
);
|
|
||||||
const startEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
|
|
||||||
const inner = startEdgeLabelLeft.insert("g").attr("class", "inner");
|
|
||||||
fo = inner.node().appendChild(startLabelElement);
|
|
||||||
const slBox = startLabelElement.getBBox();
|
|
||||||
inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
|
|
||||||
if (!terminalLabels.get(edge.id)) {
|
|
||||||
terminalLabels.set(edge.id, {});
|
|
||||||
}
|
|
||||||
terminalLabels.get(edge.id).startLeft = startEdgeLabelLeft;
|
|
||||||
setTerminalWidth(fo, edge.startLabelLeft);
|
|
||||||
}
|
|
||||||
if (edge.startLabelRight) {
|
|
||||||
const startLabelElement = await createLabel_default(
|
|
||||||
edge.startLabelRight,
|
|
||||||
getLabelStyles(edge.labelStyle)
|
|
||||||
);
|
|
||||||
const startEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
|
|
||||||
const inner = startEdgeLabelRight.insert("g").attr("class", "inner");
|
|
||||||
fo = startEdgeLabelRight.node().appendChild(startLabelElement);
|
|
||||||
inner.node().appendChild(startLabelElement);
|
|
||||||
const slBox = startLabelElement.getBBox();
|
|
||||||
inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
|
|
||||||
if (!terminalLabels.get(edge.id)) {
|
|
||||||
terminalLabels.set(edge.id, {});
|
|
||||||
}
|
|
||||||
terminalLabels.get(edge.id).startRight = startEdgeLabelRight;
|
|
||||||
setTerminalWidth(fo, edge.startLabelRight);
|
|
||||||
}
|
|
||||||
if (edge.endLabelLeft) {
|
|
||||||
const endLabelElement = await createLabel_default(edge.endLabelLeft, getLabelStyles(edge.labelStyle));
|
|
||||||
const endEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
|
|
||||||
const inner = endEdgeLabelLeft.insert("g").attr("class", "inner");
|
|
||||||
fo = inner.node().appendChild(endLabelElement);
|
|
||||||
const slBox = endLabelElement.getBBox();
|
|
||||||
inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
|
|
||||||
endEdgeLabelLeft.node().appendChild(endLabelElement);
|
|
||||||
if (!terminalLabels.get(edge.id)) {
|
|
||||||
terminalLabels.set(edge.id, {});
|
|
||||||
}
|
|
||||||
terminalLabels.get(edge.id).endLeft = endEdgeLabelLeft;
|
|
||||||
setTerminalWidth(fo, edge.endLabelLeft);
|
|
||||||
}
|
|
||||||
if (edge.endLabelRight) {
|
|
||||||
const endLabelElement = await createLabel_default(edge.endLabelRight, getLabelStyles(edge.labelStyle));
|
|
||||||
const endEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
|
|
||||||
const inner = endEdgeLabelRight.insert("g").attr("class", "inner");
|
|
||||||
fo = inner.node().appendChild(endLabelElement);
|
|
||||||
const slBox = endLabelElement.getBBox();
|
|
||||||
inner.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
|
|
||||||
endEdgeLabelRight.node().appendChild(endLabelElement);
|
|
||||||
if (!terminalLabels.get(edge.id)) {
|
|
||||||
terminalLabels.set(edge.id, {});
|
|
||||||
}
|
|
||||||
terminalLabels.get(edge.id).endRight = endEdgeLabelRight;
|
|
||||||
setTerminalWidth(fo, edge.endLabelRight);
|
|
||||||
}
|
|
||||||
return labelElement;
|
|
||||||
}, "insertEdgeLabel");
|
|
||||||
function setTerminalWidth(fo, value) {
|
|
||||||
if (getConfig2().flowchart.htmlLabels && fo) {
|
|
||||||
fo.style.width = value.length * 9 + "px";
|
|
||||||
fo.style.height = "12px";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__name(setTerminalWidth, "setTerminalWidth");
|
|
||||||
var positionEdgeLabel = __name((edge, paths) => {
|
|
||||||
log.debug("Moving label abc88 ", edge.id, edge.label, edgeLabels.get(edge.id), paths);
|
|
||||||
let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
|
|
||||||
const siteConfig = getConfig2();
|
|
||||||
const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
|
|
||||||
if (edge.label) {
|
|
||||||
const el = edgeLabels.get(edge.id);
|
|
||||||
let x = edge.x;
|
|
||||||
let y = edge.y;
|
|
||||||
if (path) {
|
|
||||||
const pos = utils_default.calcLabelPosition(path);
|
|
||||||
log.debug(
|
|
||||||
"Moving label " + edge.label + " from (",
|
|
||||||
x,
|
|
||||||
",",
|
|
||||||
y,
|
|
||||||
") to (",
|
|
||||||
pos.x,
|
|
||||||
",",
|
|
||||||
pos.y,
|
|
||||||
") abc88"
|
|
||||||
);
|
|
||||||
if (paths.updatedPath) {
|
|
||||||
x = pos.x;
|
|
||||||
y = pos.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
el.attr("transform", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);
|
|
||||||
}
|
|
||||||
if (edge.startLabelLeft) {
|
|
||||||
const el = terminalLabels.get(edge.id).startLeft;
|
|
||||||
let x = edge.x;
|
|
||||||
let y = edge.y;
|
|
||||||
if (path) {
|
|
||||||
const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, "start_left", path);
|
|
||||||
x = pos.x;
|
|
||||||
y = pos.y;
|
|
||||||
}
|
|
||||||
el.attr("transform", `translate(${x}, ${y})`);
|
|
||||||
}
|
|
||||||
if (edge.startLabelRight) {
|
|
||||||
const el = terminalLabels.get(edge.id).startRight;
|
|
||||||
let x = edge.x;
|
|
||||||
let y = edge.y;
|
|
||||||
if (path) {
|
|
||||||
const pos = utils_default.calcTerminalLabelPosition(
|
|
||||||
edge.arrowTypeStart ? 10 : 0,
|
|
||||||
"start_right",
|
|
||||||
path
|
|
||||||
);
|
|
||||||
x = pos.x;
|
|
||||||
y = pos.y;
|
|
||||||
}
|
|
||||||
el.attr("transform", `translate(${x}, ${y})`);
|
|
||||||
}
|
|
||||||
if (edge.endLabelLeft) {
|
|
||||||
const el = terminalLabels.get(edge.id).endLeft;
|
|
||||||
let x = edge.x;
|
|
||||||
let y = edge.y;
|
|
||||||
if (path) {
|
|
||||||
const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_left", path);
|
|
||||||
x = pos.x;
|
|
||||||
y = pos.y;
|
|
||||||
}
|
|
||||||
el.attr("transform", `translate(${x}, ${y})`);
|
|
||||||
}
|
|
||||||
if (edge.endLabelRight) {
|
|
||||||
const el = terminalLabels.get(edge.id).endRight;
|
|
||||||
let x = edge.x;
|
|
||||||
let y = edge.y;
|
|
||||||
if (path) {
|
|
||||||
const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, "end_right", path);
|
|
||||||
x = pos.x;
|
|
||||||
y = pos.y;
|
|
||||||
}
|
|
||||||
el.attr("transform", `translate(${x}, ${y})`);
|
|
||||||
}
|
|
||||||
}, "positionEdgeLabel");
|
|
||||||
var outsideNode = __name((node, point2) => {
|
|
||||||
const x = node.x;
|
|
||||||
const y = node.y;
|
|
||||||
const dx = Math.abs(point2.x - x);
|
|
||||||
const dy = Math.abs(point2.y - y);
|
|
||||||
const w = node.width / 2;
|
|
||||||
const h = node.height / 2;
|
|
||||||
return dx >= w || dy >= h;
|
|
||||||
}, "outsideNode");
|
|
||||||
var intersection = __name((node, outsidePoint, insidePoint) => {
|
|
||||||
log.debug(`intersection calc abc89:
|
|
||||||
outsidePoint: ${JSON.stringify(outsidePoint)}
|
|
||||||
insidePoint : ${JSON.stringify(insidePoint)}
|
|
||||||
node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);
|
|
||||||
const x = node.x;
|
|
||||||
const y = node.y;
|
|
||||||
const dx = Math.abs(x - insidePoint.x);
|
|
||||||
const w = node.width / 2;
|
|
||||||
let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
|
|
||||||
const h = node.height / 2;
|
|
||||||
const Q = Math.abs(outsidePoint.y - insidePoint.y);
|
|
||||||
const R = Math.abs(outsidePoint.x - insidePoint.x);
|
|
||||||
if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
|
|
||||||
let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
|
|
||||||
r = R * q / Q;
|
|
||||||
const res = {
|
|
||||||
x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,
|
|
||||||
y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q
|
|
||||||
};
|
|
||||||
if (r === 0) {
|
|
||||||
res.x = outsidePoint.x;
|
|
||||||
res.y = outsidePoint.y;
|
|
||||||
}
|
|
||||||
if (R === 0) {
|
|
||||||
res.x = outsidePoint.x;
|
|
||||||
}
|
|
||||||
if (Q === 0) {
|
|
||||||
res.y = outsidePoint.y;
|
|
||||||
}
|
|
||||||
log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);
|
|
||||||
return res;
|
|
||||||
} else {
|
|
||||||
if (insidePoint.x < outsidePoint.x) {
|
|
||||||
r = outsidePoint.x - w - x;
|
|
||||||
} else {
|
|
||||||
r = x - w - outsidePoint.x;
|
|
||||||
}
|
|
||||||
let q = Q * r / R;
|
|
||||||
let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;
|
|
||||||
let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;
|
|
||||||
log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });
|
|
||||||
if (r === 0) {
|
|
||||||
_x = outsidePoint.x;
|
|
||||||
_y = outsidePoint.y;
|
|
||||||
}
|
|
||||||
if (R === 0) {
|
|
||||||
_x = outsidePoint.x;
|
|
||||||
}
|
|
||||||
if (Q === 0) {
|
|
||||||
_y = outsidePoint.y;
|
|
||||||
}
|
|
||||||
return { x: _x, y: _y };
|
|
||||||
}
|
|
||||||
}, "intersection");
|
|
||||||
var cutPathAtIntersect = __name((_points, boundaryNode) => {
|
|
||||||
log.warn("abc88 cutPathAtIntersect", _points, boundaryNode);
|
|
||||||
let points = [];
|
|
||||||
let lastPointOutside = _points[0];
|
|
||||||
let isInside = false;
|
|
||||||
_points.forEach((point2) => {
|
|
||||||
log.info("abc88 checking point", point2, boundaryNode);
|
|
||||||
if (!outsideNode(boundaryNode, point2) && !isInside) {
|
|
||||||
const inter = intersection(boundaryNode, lastPointOutside, point2);
|
|
||||||
log.debug("abc88 inside", point2, lastPointOutside, inter);
|
|
||||||
log.debug("abc88 intersection", inter, boundaryNode);
|
|
||||||
let pointPresent = false;
|
|
||||||
points.forEach((p) => {
|
|
||||||
pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;
|
|
||||||
});
|
|
||||||
if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {
|
|
||||||
points.push(inter);
|
|
||||||
} else {
|
|
||||||
log.warn("abc88 no intersect", inter, points);
|
|
||||||
}
|
|
||||||
isInside = true;
|
|
||||||
} else {
|
|
||||||
log.warn("abc88 outside", point2, lastPointOutside);
|
|
||||||
lastPointOutside = point2;
|
|
||||||
if (!isInside) {
|
|
||||||
points.push(point2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
log.debug("returning points", points);
|
|
||||||
return points;
|
|
||||||
}, "cutPathAtIntersect");
|
|
||||||
function extractCornerPoints(points) {
|
|
||||||
const cornerPoints = [];
|
|
||||||
const cornerPointPositions = [];
|
|
||||||
for (let i = 1; i < points.length - 1; i++) {
|
|
||||||
const prev = points[i - 1];
|
|
||||||
const curr = points[i];
|
|
||||||
const next = points[i + 1];
|
|
||||||
if (prev.x === curr.x && curr.y === next.y && Math.abs(curr.x - next.x) > 5 && Math.abs(curr.y - prev.y) > 5) {
|
|
||||||
cornerPoints.push(curr);
|
|
||||||
cornerPointPositions.push(i);
|
|
||||||
} else if (prev.y === curr.y && curr.x === next.x && Math.abs(curr.x - prev.x) > 5 && Math.abs(curr.y - next.y) > 5) {
|
|
||||||
cornerPoints.push(curr);
|
|
||||||
cornerPointPositions.push(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return { cornerPoints, cornerPointPositions };
|
|
||||||
}
|
|
||||||
__name(extractCornerPoints, "extractCornerPoints");
|
|
||||||
var findAdjacentPoint = __name(function(pointA, pointB, distance) {
|
|
||||||
const xDiff = pointB.x - pointA.x;
|
|
||||||
const yDiff = pointB.y - pointA.y;
|
|
||||||
const length = Math.sqrt(xDiff * xDiff + yDiff * yDiff);
|
|
||||||
const ratio = distance / length;
|
|
||||||
return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff };
|
|
||||||
}, "findAdjacentPoint");
|
|
||||||
var fixCorners = __name(function(lineData) {
|
|
||||||
const { cornerPointPositions } = extractCornerPoints(lineData);
|
|
||||||
const newLineData = [];
|
|
||||||
for (let i = 0; i < lineData.length; i++) {
|
|
||||||
if (cornerPointPositions.includes(i)) {
|
|
||||||
const prevPoint = lineData[i - 1];
|
|
||||||
const nextPoint = lineData[i + 1];
|
|
||||||
const cornerPoint = lineData[i];
|
|
||||||
const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5);
|
|
||||||
const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5);
|
|
||||||
const xDiff = newNextPoint.x - newPrevPoint.x;
|
|
||||||
const yDiff = newNextPoint.y - newPrevPoint.y;
|
|
||||||
newLineData.push(newPrevPoint);
|
|
||||||
const a = Math.sqrt(2) * 2;
|
|
||||||
let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y };
|
|
||||||
if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) {
|
|
||||||
log.debug(
|
|
||||||
"Corner point fixing",
|
|
||||||
Math.abs(nextPoint.x - prevPoint.x),
|
|
||||||
Math.abs(nextPoint.y - prevPoint.y)
|
|
||||||
);
|
|
||||||
const r = 5;
|
|
||||||
if (cornerPoint.x === newPrevPoint.x) {
|
|
||||||
newCornerPoint = {
|
|
||||||
x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a,
|
|
||||||
y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
newCornerPoint = {
|
|
||||||
x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a,
|
|
||||||
y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.debug(
|
|
||||||
"Corner point skipping fixing",
|
|
||||||
Math.abs(nextPoint.x - prevPoint.x),
|
|
||||||
Math.abs(nextPoint.y - prevPoint.y)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
newLineData.push(newCornerPoint, newNextPoint);
|
|
||||||
} else {
|
|
||||||
newLineData.push(lineData[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newLineData;
|
|
||||||
}, "fixCorners");
|
|
||||||
var generateDashArray = __name((len, oValueS, oValueE) => {
|
|
||||||
const middleLength = len - oValueS - oValueE;
|
|
||||||
const dashLength = 2;
|
|
||||||
const gapLength = 2;
|
|
||||||
const dashGapPairLength = dashLength + gapLength;
|
|
||||||
const numberOfPairs = Math.floor(middleLength / dashGapPairLength);
|
|
||||||
const middlePattern = Array(numberOfPairs).fill(`${dashLength} ${gapLength}`).join(" ");
|
|
||||||
const dashArray = `0 ${oValueS} ${middlePattern} ${oValueE}`;
|
|
||||||
return dashArray;
|
|
||||||
}, "generateDashArray");
|
|
||||||
var insertEdge = __name(function(elem, edge, clusterDb, diagramType, startNode, endNode, id, skipIntersect = false) {
|
|
||||||
const { handDrawnSeed } = getConfig2();
|
|
||||||
let points = edge.points;
|
|
||||||
let pointsHasChanged = false;
|
|
||||||
const tail = startNode;
|
|
||||||
var head = endNode;
|
|
||||||
const edgeClassStyles = [];
|
|
||||||
for (const key in edge.cssCompiledStyles) {
|
|
||||||
if (isLabelStyle(key)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
edgeClassStyles.push(edge.cssCompiledStyles[key]);
|
|
||||||
}
|
|
||||||
log.debug("UIO intersect check", edge.points, head.x, tail.x);
|
|
||||||
if (head.intersect && tail.intersect && !skipIntersect) {
|
|
||||||
points = points.slice(1, edge.points.length - 1);
|
|
||||||
points.unshift(tail.intersect(points[0]));
|
|
||||||
log.debug(
|
|
||||||
"Last point UIO",
|
|
||||||
edge.start,
|
|
||||||
"-->",
|
|
||||||
edge.end,
|
|
||||||
points[points.length - 1],
|
|
||||||
head,
|
|
||||||
head.intersect(points[points.length - 1])
|
|
||||||
);
|
|
||||||
points.push(head.intersect(points[points.length - 1]));
|
|
||||||
}
|
|
||||||
const pointsStr = btoa(JSON.stringify(points));
|
|
||||||
if (edge.toCluster) {
|
|
||||||
log.info("to cluster abc88", clusterDb.get(edge.toCluster));
|
|
||||||
points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node);
|
|
||||||
pointsHasChanged = true;
|
|
||||||
}
|
|
||||||
if (edge.fromCluster) {
|
|
||||||
log.debug(
|
|
||||||
"from cluster abc88",
|
|
||||||
clusterDb.get(edge.fromCluster),
|
|
||||||
JSON.stringify(points, null, 2)
|
|
||||||
);
|
|
||||||
points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse();
|
|
||||||
pointsHasChanged = true;
|
|
||||||
}
|
|
||||||
let lineData = points.filter((p) => !Number.isNaN(p.y));
|
|
||||||
lineData = fixCorners(lineData);
|
|
||||||
let curve = basis_default;
|
|
||||||
curve = linear_default;
|
|
||||||
switch (edge.curve) {
|
|
||||||
case "linear":
|
|
||||||
curve = linear_default;
|
|
||||||
break;
|
|
||||||
case "basis":
|
|
||||||
curve = basis_default;
|
|
||||||
break;
|
|
||||||
case "cardinal":
|
|
||||||
curve = cardinal_default;
|
|
||||||
break;
|
|
||||||
case "bumpX":
|
|
||||||
curve = bumpX;
|
|
||||||
break;
|
|
||||||
case "bumpY":
|
|
||||||
curve = bumpY;
|
|
||||||
break;
|
|
||||||
case "catmullRom":
|
|
||||||
curve = catmullRom_default;
|
|
||||||
break;
|
|
||||||
case "monotoneX":
|
|
||||||
curve = monotoneX;
|
|
||||||
break;
|
|
||||||
case "monotoneY":
|
|
||||||
curve = monotoneY;
|
|
||||||
break;
|
|
||||||
case "natural":
|
|
||||||
curve = natural_default;
|
|
||||||
break;
|
|
||||||
case "step":
|
|
||||||
curve = step_default;
|
|
||||||
break;
|
|
||||||
case "stepAfter":
|
|
||||||
curve = stepAfter;
|
|
||||||
break;
|
|
||||||
case "stepBefore":
|
|
||||||
curve = stepBefore;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
curve = basis_default;
|
|
||||||
}
|
|
||||||
const { x, y } = getLineFunctionsWithOffset(edge);
|
|
||||||
const lineFunction = line_default().x(x).y(y).curve(curve);
|
|
||||||
let strokeClasses;
|
|
||||||
switch (edge.thickness) {
|
|
||||||
case "normal":
|
|
||||||
strokeClasses = "edge-thickness-normal";
|
|
||||||
break;
|
|
||||||
case "thick":
|
|
||||||
strokeClasses = "edge-thickness-thick";
|
|
||||||
break;
|
|
||||||
case "invisible":
|
|
||||||
strokeClasses = "edge-thickness-invisible";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
strokeClasses = "edge-thickness-normal";
|
|
||||||
}
|
|
||||||
switch (edge.pattern) {
|
|
||||||
case "solid":
|
|
||||||
strokeClasses += " edge-pattern-solid";
|
|
||||||
break;
|
|
||||||
case "dotted":
|
|
||||||
strokeClasses += " edge-pattern-dotted";
|
|
||||||
break;
|
|
||||||
case "dashed":
|
|
||||||
strokeClasses += " edge-pattern-dashed";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
strokeClasses += " edge-pattern-solid";
|
|
||||||
}
|
|
||||||
let svgPath;
|
|
||||||
let linePath = edge.curve === "rounded" ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5) : lineFunction(lineData);
|
|
||||||
const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];
|
|
||||||
let strokeColor = edgeStyles.find((style) => style?.startsWith("stroke:"));
|
|
||||||
let animatedEdge = false;
|
|
||||||
if (edge.look === "handDrawn") {
|
|
||||||
const rc = at.svg(elem);
|
|
||||||
Object.assign([], lineData);
|
|
||||||
const svgPathNode = rc.path(linePath, {
|
|
||||||
roughness: 0.3,
|
|
||||||
seed: handDrawnSeed
|
|
||||||
});
|
|
||||||
strokeClasses += " transition";
|
|
||||||
svgPath = select_default(svgPathNode).select("path").attr("id", edge.id).attr("class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "")).attr("style", edgeStyles ? edgeStyles.reduce((acc, style) => acc + ";" + style, "") : "");
|
|
||||||
let d = svgPath.attr("d");
|
|
||||||
svgPath.attr("d", d);
|
|
||||||
elem.node().appendChild(svgPath.node());
|
|
||||||
} else {
|
|
||||||
const stylesFromClasses = edgeClassStyles.join(";");
|
|
||||||
const styles = edgeStyles ? edgeStyles.reduce((acc, style) => acc + style + ";", "") : "";
|
|
||||||
let animationClass = "";
|
|
||||||
if (edge.animate) {
|
|
||||||
animationClass = " edge-animation-fast";
|
|
||||||
}
|
|
||||||
if (edge.animation) {
|
|
||||||
animationClass = " edge-animation-" + edge.animation;
|
|
||||||
}
|
|
||||||
const pathStyle = (stylesFromClasses ? stylesFromClasses + ";" + styles + ";" : styles) + ";" + (edgeStyles ? edgeStyles.reduce((acc, style) => acc + ";" + style, "") : "");
|
|
||||||
svgPath = elem.append("path").attr("d", linePath).attr("id", edge.id).attr(
|
|
||||||
"class",
|
|
||||||
" " + strokeClasses + (edge.classes ? " " + edge.classes : "") + (animationClass ?? "")
|
|
||||||
).attr("style", pathStyle);
|
|
||||||
strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1];
|
|
||||||
animatedEdge = edge.animate === true || !!edge.animation || stylesFromClasses.includes("animation");
|
|
||||||
const pathNode = svgPath.node();
|
|
||||||
const len = typeof pathNode.getTotalLength === "function" ? pathNode.getTotalLength() : 0;
|
|
||||||
const oValueS = markerOffsets2[edge.arrowTypeStart] || 0;
|
|
||||||
const oValueE = markerOffsets2[edge.arrowTypeEnd] || 0;
|
|
||||||
if (edge.look === "neo" && !animatedEdge) {
|
|
||||||
const dashArray = edge.pattern === "dotted" || edge.pattern === "dashed" ? generateDashArray(len, oValueS, oValueE) : `0 ${oValueS} ${len - oValueS - oValueE} ${oValueE}`;
|
|
||||||
const mOffset = `stroke-dasharray: ${dashArray}; stroke-dashoffset: 0;`;
|
|
||||||
svgPath.attr("style", mOffset + svgPath.attr("style"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
svgPath.attr("data-edge", true);
|
|
||||||
svgPath.attr("data-et", "edge");
|
|
||||||
svgPath.attr("data-id", edge.id);
|
|
||||||
svgPath.attr("data-points", pointsStr);
|
|
||||||
if (edge.showPoints) {
|
|
||||||
lineData.forEach((point3) => {
|
|
||||||
elem.append("circle").style("stroke", "red").style("fill", "red").attr("r", 1).attr("cx", point3.x).attr("cy", point3.y);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
let url = "";
|
|
||||||
if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {
|
|
||||||
url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
|
|
||||||
url = url.replace(/\(/g, "\\(").replace(/\)/g, "\\)");
|
|
||||||
}
|
|
||||||
log.info("arrowTypeStart", edge.arrowTypeStart);
|
|
||||||
log.info("arrowTypeEnd", edge.arrowTypeEnd);
|
|
||||||
addEdgeMarkers(svgPath, edge, url, id, diagramType, strokeColor);
|
|
||||||
const midIndex = Math.floor(points.length / 2);
|
|
||||||
const point2 = points[midIndex];
|
|
||||||
if (!utils_default.isLabelCoordinateInPath(point2, svgPath.attr("d"))) {
|
|
||||||
pointsHasChanged = true;
|
|
||||||
}
|
|
||||||
let paths = {};
|
|
||||||
if (pointsHasChanged) {
|
|
||||||
paths.updatedPath = points;
|
|
||||||
}
|
|
||||||
paths.originalPath = edge.points;
|
|
||||||
return paths;
|
|
||||||
}, "insertEdge");
|
|
||||||
function generateRoundedPath(points, radius) {
|
|
||||||
if (points.length < 2) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
let path = "";
|
|
||||||
const size = points.length;
|
|
||||||
const epsilon = 1e-5;
|
|
||||||
for (let i = 0; i < size; i++) {
|
|
||||||
const currPoint = points[i];
|
|
||||||
const prevPoint = points[i - 1];
|
|
||||||
const nextPoint = points[i + 1];
|
|
||||||
if (i === 0) {
|
|
||||||
path += `M${currPoint.x},${currPoint.y}`;
|
|
||||||
} else if (i === size - 1) {
|
|
||||||
path += `L${currPoint.x},${currPoint.y}`;
|
|
||||||
} else {
|
|
||||||
const dx1 = currPoint.x - prevPoint.x;
|
|
||||||
const dy1 = currPoint.y - prevPoint.y;
|
|
||||||
const dx2 = nextPoint.x - currPoint.x;
|
|
||||||
const dy2 = nextPoint.y - currPoint.y;
|
|
||||||
const len1 = Math.hypot(dx1, dy1);
|
|
||||||
const len2 = Math.hypot(dx2, dy2);
|
|
||||||
if (len1 < epsilon || len2 < epsilon) {
|
|
||||||
path += `L${currPoint.x},${currPoint.y}`;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const nx1 = dx1 / len1;
|
|
||||||
const ny1 = dy1 / len1;
|
|
||||||
const nx2 = dx2 / len2;
|
|
||||||
const ny2 = dy2 / len2;
|
|
||||||
const dot = nx1 * nx2 + ny1 * ny2;
|
|
||||||
const clampedDot = Math.max(-1, Math.min(1, dot));
|
|
||||||
const angle = Math.acos(clampedDot);
|
|
||||||
if (angle < epsilon || Math.abs(Math.PI - angle) < epsilon) {
|
|
||||||
path += `L${currPoint.x},${currPoint.y}`;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const cutLen = Math.min(radius / Math.sin(angle / 2), len1 / 2, len2 / 2);
|
|
||||||
const startX = currPoint.x - nx1 * cutLen;
|
|
||||||
const startY = currPoint.y - ny1 * cutLen;
|
|
||||||
const endX = currPoint.x + nx2 * cutLen;
|
|
||||||
const endY = currPoint.y + ny2 * cutLen;
|
|
||||||
path += `L${startX},${startY}`;
|
|
||||||
path += `Q${currPoint.x},${currPoint.y} ${endX},${endY}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
__name(generateRoundedPath, "generateRoundedPath");
|
|
||||||
function calculateDeltaAndAngle(point1, point2) {
|
|
||||||
if (!point1 || !point2) {
|
|
||||||
return { angle: 0, deltaX: 0, deltaY: 0 };
|
|
||||||
}
|
|
||||||
const deltaX = point2.x - point1.x;
|
|
||||||
const deltaY = point2.y - point1.y;
|
|
||||||
const angle = Math.atan2(deltaY, deltaX);
|
|
||||||
return { angle, deltaX, deltaY };
|
|
||||||
}
|
|
||||||
__name(calculateDeltaAndAngle, "calculateDeltaAndAngle");
|
|
||||||
function applyMarkerOffsetsToPoints(points, edge) {
|
|
||||||
const newPoints = points.map((point2) => __spreadValues({}, point2));
|
|
||||||
if (points.length >= 2 && markerOffsets[edge.arrowTypeStart]) {
|
|
||||||
const offsetValue = markerOffsets[edge.arrowTypeStart];
|
|
||||||
const point1 = points[0];
|
|
||||||
const point2 = points[1];
|
|
||||||
const { angle } = calculateDeltaAndAngle(point1, point2);
|
|
||||||
const offsetX = offsetValue * Math.cos(angle);
|
|
||||||
const offsetY = offsetValue * Math.sin(angle);
|
|
||||||
newPoints[0].x = point1.x + offsetX;
|
|
||||||
newPoints[0].y = point1.y + offsetY;
|
|
||||||
}
|
|
||||||
const n = points.length;
|
|
||||||
if (n >= 2 && markerOffsets[edge.arrowTypeEnd]) {
|
|
||||||
const offsetValue = markerOffsets[edge.arrowTypeEnd];
|
|
||||||
const point1 = points[n - 1];
|
|
||||||
const point2 = points[n - 2];
|
|
||||||
const { angle } = calculateDeltaAndAngle(point2, point1);
|
|
||||||
const offsetX = offsetValue * Math.cos(angle);
|
|
||||||
const offsetY = offsetValue * Math.sin(angle);
|
|
||||||
newPoints[n - 1].x = point1.x - offsetX;
|
|
||||||
newPoints[n - 1].y = point1.y - offsetY;
|
|
||||||
}
|
|
||||||
return newPoints;
|
|
||||||
}
|
|
||||||
__name(applyMarkerOffsetsToPoints, "applyMarkerOffsetsToPoints");
|
|
||||||
var insertMarkers = __name((elem, markerArray, type, id) => {
|
|
||||||
markerArray.forEach((markerName) => {
|
|
||||||
markers[markerName](elem, type, id);
|
|
||||||
});
|
|
||||||
}, "insertMarkers");
|
|
||||||
var extension = __name((elem, type, id) => {
|
|
||||||
log.trace("Making markers for ", id);
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-extensionStart").attr("class", "marker extension " + type).attr("refX", 18).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", id + "_" + type + "-extensionEnd").attr("class", "marker extension " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
|
|
||||||
}, "extension");
|
|
||||||
var composition = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-compositionStart").attr("class", "marker composition " + type).attr("refX", 18).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", id + "_" + type + "-compositionEnd").attr("class", "marker composition " + type).attr("refX", 1).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");
|
|
||||||
}, "composition");
|
|
||||||
var aggregation = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-aggregationStart").attr("class", "marker aggregation " + type).attr("refX", 18).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", id + "_" + type + "-aggregationEnd").attr("class", "marker aggregation " + type).attr("refX", 1).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");
|
|
||||||
}, "aggregation");
|
|
||||||
var dependency = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-dependencyStart").attr("class", "marker dependency " + type).attr("refX", 6).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", id + "_" + type + "-dependencyEnd").attr("class", "marker dependency " + type).attr("refX", 13).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");
|
|
||||||
}, "dependency");
|
|
||||||
var lollipop = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-lollipopStart").attr("class", "marker lollipop " + type).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-lollipopEnd").attr("class", "marker lollipop " + type).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
|
|
||||||
}, "lollipop");
|
|
||||||
var point = __name((elem, type, id) => {
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-pointEnd").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-pointStart").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
|
||||||
}, "point");
|
|
||||||
var circle = __name((elem, type, id) => {
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-circleEnd").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-circleStart").attr("class", "marker " + type).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
|
||||||
}, "circle");
|
|
||||||
var cross = __name((elem, type, id) => {
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-crossEnd").attr("class", "marker cross " + type).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
|
|
||||||
elem.append("marker").attr("id", id + "_" + type + "-crossStart").attr("class", "marker cross " + type).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
|
|
||||||
}, "cross");
|
|
||||||
var barb = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "userSpaceOnUse").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z");
|
|
||||||
}, "barb");
|
|
||||||
var only_one = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-onlyOneStart").attr("class", "marker onlyOne " + type).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M9,0 L9,18 M15,0 L15,18");
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-onlyOneEnd").attr("class", "marker onlyOne " + type).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M3,0 L3,18 M9,0 L9,18");
|
|
||||||
}, "only_one");
|
|
||||||
var zero_or_one = __name((elem, type, id) => {
|
|
||||||
const startMarker = elem.append("defs").append("marker").attr("id", id + "_" + type + "-zeroOrOneStart").attr("class", "marker zeroOrOne " + type).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
|
|
||||||
startMarker.append("circle").attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6);
|
|
||||||
startMarker.append("path").attr("d", "M9,0 L9,18");
|
|
||||||
const endMarker = elem.append("defs").append("marker").attr("id", id + "_" + type + "-zeroOrOneEnd").attr("class", "marker zeroOrOne " + type).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
|
|
||||||
endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6);
|
|
||||||
endMarker.append("path").attr("d", "M21,0 L21,18");
|
|
||||||
}, "zero_or_one");
|
|
||||||
var one_or_more = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-oneOrMoreStart").attr("class", "marker oneOrMore " + type).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27");
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-oneOrMoreEnd").attr("class", "marker oneOrMore " + type).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18");
|
|
||||||
}, "one_or_more");
|
|
||||||
var zero_or_more = __name((elem, type, id) => {
|
|
||||||
const startMarker = elem.append("defs").append("marker").attr("id", id + "_" + type + "-zeroOrMoreStart").attr("class", "marker zeroOrMore " + type).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
|
|
||||||
startMarker.append("circle").attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6);
|
|
||||||
startMarker.append("path").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18");
|
|
||||||
const endMarker = elem.append("defs").append("marker").attr("id", id + "_" + type + "-zeroOrMoreEnd").attr("class", "marker zeroOrMore " + type).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
|
|
||||||
endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6);
|
|
||||||
endMarker.append("path").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18");
|
|
||||||
}, "zero_or_more");
|
|
||||||
var requirement_arrow = __name((elem, type, id) => {
|
|
||||||
elem.append("defs").append("marker").attr("id", id + "_" + type + "-requirement_arrowEnd").attr("refX", 20).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("path").attr(
|
|
||||||
"d",
|
|
||||||
`M0,0
|
|
||||||
L20,10
|
|
||||||
M20,10
|
|
||||||
L0,20`
|
|
||||||
);
|
|
||||||
}, "requirement_arrow");
|
|
||||||
var requirement_contains = __name((elem, type, id) => {
|
|
||||||
const containsNode = elem.append("defs").append("marker").attr("id", id + "_" + type + "-requirement_containsStart").attr("refX", 0).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("g");
|
|
||||||
containsNode.append("circle").attr("cx", 10).attr("cy", 10).attr("r", 9).attr("fill", "none");
|
|
||||||
containsNode.append("line").attr("x1", 1).attr("x2", 19).attr("y1", 10).attr("y2", 10);
|
|
||||||
containsNode.append("line").attr("y1", 1).attr("y2", 19).attr("x1", 10).attr("x2", 10);
|
|
||||||
}, "requirement_contains");
|
|
||||||
var markers = {
|
|
||||||
extension,
|
|
||||||
composition,
|
|
||||||
aggregation,
|
|
||||||
dependency,
|
|
||||||
lollipop,
|
|
||||||
point,
|
|
||||||
circle,
|
|
||||||
cross,
|
|
||||||
barb,
|
|
||||||
only_one,
|
|
||||||
zero_or_one,
|
|
||||||
one_or_more,
|
|
||||||
zero_or_more,
|
|
||||||
requirement_arrow,
|
|
||||||
requirement_contains
|
|
||||||
};
|
|
||||||
var markers_default = insertMarkers;
|
|
||||||
|
|
||||||
export {
|
|
||||||
clear,
|
|
||||||
insertEdgeLabel,
|
|
||||||
positionEdgeLabel,
|
|
||||||
insertEdge,
|
|
||||||
markers_default
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-HICR2YSH.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,25 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-FMBD7UC4.mjs
|
|
||||||
var getIconStyles = __name(() => `
|
|
||||||
/* Font Awesome icon styling - consolidated */
|
|
||||||
.label-icon {
|
|
||||||
display: inline-block;
|
|
||||||
height: 1em;
|
|
||||||
overflow: visible;
|
|
||||||
vertical-align: -0.125em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.node .label-icon path {
|
|
||||||
fill: currentColor;
|
|
||||||
stroke: revert;
|
|
||||||
stroke-width: revert;
|
|
||||||
}
|
|
||||||
`, "getIconStyles");
|
|
||||||
|
|
||||||
export {
|
|
||||||
getIconStyles
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-I4QIIVJ7.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-FMBD7UC4.mjs"],
|
|
||||||
"sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/globalStyles.ts\nvar getIconStyles = /* @__PURE__ */ __name(() => `\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n`, \"getIconStyles\");\n\nexport {\n getIconStyles\n};\n"],
|
|
||||||
"mappings": ";;;;;AAKA,IAAI,gBAAgC,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAc9C,eAAe;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
8855
.angular/cache/20.3.3/app/vite/deps/chunk-I65GBZ6F.js
vendored
8855
.angular/cache/20.3.3/app/vite/deps/chunk-I65GBZ6F.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
6266
.angular/cache/20.3.3/app/vite/deps/chunk-JJ4TL56I.js
vendored
6266
.angular/cache/20.3.3/app/vite/deps/chunk-JJ4TL56I.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
2717
.angular/cache/20.3.3/app/vite/deps/chunk-JSZQKJT3.js
vendored
2717
.angular/cache/20.3.3/app/vite/deps/chunk-JSZQKJT3.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,34 +0,0 @@
|
|||||||
import {
|
|
||||||
configureSvgSize
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-QN33PNHL.mjs
|
|
||||||
var setupViewPortForSVG = __name((svg, padding, cssDiagram, useMaxWidth) => {
|
|
||||||
svg.attr("class", cssDiagram);
|
|
||||||
const { width, height, x, y } = calculateDimensionsWithPadding(svg, padding);
|
|
||||||
configureSvgSize(svg, height, width, useMaxWidth);
|
|
||||||
const viewBox = createViewBox(x, y, width, height, padding);
|
|
||||||
svg.attr("viewBox", viewBox);
|
|
||||||
log.debug(`viewBox configured: ${viewBox} with padding: ${padding}`);
|
|
||||||
}, "setupViewPortForSVG");
|
|
||||||
var calculateDimensionsWithPadding = __name((svg, padding) => {
|
|
||||||
const bounds = svg.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 };
|
|
||||||
return {
|
|
||||||
width: bounds.width + padding * 2,
|
|
||||||
height: bounds.height + padding * 2,
|
|
||||||
x: bounds.x,
|
|
||||||
y: bounds.y
|
|
||||||
};
|
|
||||||
}, "calculateDimensionsWithPadding");
|
|
||||||
var createViewBox = __name((x, y, width, height, padding) => {
|
|
||||||
return `${x - padding} ${y - padding} ${width} ${height}`;
|
|
||||||
}, "createViewBox");
|
|
||||||
|
|
||||||
export {
|
|
||||||
setupViewPortForSVG
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-LHH5RO5K.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-QN33PNHL.mjs"],
|
|
||||||
"sourcesContent": ["import {\n configureSvgSize\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/setupViewPortForSVG.ts\nvar setupViewPortForSVG = /* @__PURE__ */ __name((svg, padding, cssDiagram, useMaxWidth) => {\n svg.attr(\"class\", cssDiagram);\n const { width, height, x, y } = calculateDimensionsWithPadding(svg, padding);\n configureSvgSize(svg, height, width, useMaxWidth);\n const viewBox = createViewBox(x, y, width, height, padding);\n svg.attr(\"viewBox\", viewBox);\n log.debug(`viewBox configured: ${viewBox} with padding: ${padding}`);\n}, \"setupViewPortForSVG\");\nvar calculateDimensionsWithPadding = /* @__PURE__ */ __name((svg, padding) => {\n const bounds = svg.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 };\n return {\n width: bounds.width + padding * 2,\n height: bounds.height + padding * 2,\n x: bounds.x,\n y: bounds.y\n };\n}, \"calculateDimensionsWithPadding\");\nvar createViewBox = /* @__PURE__ */ __name((x, y, width, height, padding) => {\n return `${x - padding} ${y - padding} ${width} ${height}`;\n}, \"createViewBox\");\n\nexport {\n setupViewPortForSVG\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;AASA,IAAI,sBAAsC,OAAO,CAAC,KAAK,SAAS,YAAY,gBAAgB;AAC1F,MAAI,KAAK,SAAS,UAAU;AAC5B,QAAM,EAAE,OAAO,QAAQ,GAAG,EAAE,IAAI,+BAA+B,KAAK,OAAO;AAC3E,mBAAiB,KAAK,QAAQ,OAAO,WAAW;AAChD,QAAM,UAAU,cAAc,GAAG,GAAG,OAAO,QAAQ,OAAO;AAC1D,MAAI,KAAK,WAAW,OAAO;AAC3B,MAAI,MAAM,uBAAuB,OAAO,kBAAkB,OAAO,EAAE;AACrE,GAAG,qBAAqB;AACxB,IAAI,iCAAiD,OAAO,CAAC,KAAK,YAAY;AAC5E,QAAM,SAAS,IAAI,KAAK,GAAG,QAAQ,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,EAAE;AAC1E,SAAO;AAAA,IACL,OAAO,OAAO,QAAQ,UAAU;AAAA,IAChC,QAAQ,OAAO,SAAS,UAAU;AAAA,IAClC,GAAG,OAAO;AAAA,IACV,GAAG,OAAO;AAAA,EACZ;AACF,GAAG,gCAAgC;AACnC,IAAI,gBAAgC,OAAO,CAAC,GAAG,GAAG,OAAO,QAAQ,YAAY;AAC3E,SAAO,GAAG,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,MAAM;AACzD,GAAG,eAAe;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
3101
.angular/cache/20.3.3/app/vite/deps/chunk-NMWDZEZO.js
vendored
3101
.angular/cache/20.3.3/app/vite/deps/chunk-NMWDZEZO.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,20 +0,0 @@
|
|||||||
import {
|
|
||||||
__name,
|
|
||||||
select_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-55IACEB6.mjs
|
|
||||||
var getDiagramElement = __name((id, securityLevel) => {
|
|
||||||
let sandboxElement;
|
|
||||||
if (securityLevel === "sandbox") {
|
|
||||||
sandboxElement = select_default("#i" + id);
|
|
||||||
}
|
|
||||||
const root = securityLevel === "sandbox" ? select_default(sandboxElement.nodes()[0].contentDocument.body) : select_default("body");
|
|
||||||
const svg = root.select(`[id="${id}"]`);
|
|
||||||
return svg;
|
|
||||||
}, "getDiagramElement");
|
|
||||||
|
|
||||||
export {
|
|
||||||
getDiagramElement
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-PLWNSIKB.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-55IACEB6.mjs"],
|
|
||||||
"sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/insertElementsForSize.js\nimport { select } from \"d3\";\nvar getDiagramElement = /* @__PURE__ */ __name((id, securityLevel) => {\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n return svg;\n}, \"getDiagramElement\");\n\nexport {\n getDiagramElement\n};\n"],
|
|
||||||
"mappings": ";;;;;;AAMA,IAAI,oBAAoC,OAAO,CAAC,IAAI,kBAAkB;AACpE,MAAI;AACJ,MAAI,kBAAkB,WAAW;AAC/B,qBAAiB,eAAO,OAAO,EAAE;AAAA,EACnC;AACA,QAAM,OAAO,kBAAkB,YAAY,eAAO,eAAe,MAAM,EAAE,CAAC,EAAE,gBAAgB,IAAI,IAAI,eAAO,MAAM;AACjH,QAAM,MAAM,KAAK,OAAO,QAAQ,EAAE,IAAI;AACtC,SAAO;AACT,GAAG,mBAAmB;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-4BX2VUAB.mjs
|
|
||||||
function populateCommonDb(ast, db) {
|
|
||||||
if (ast.accDescr) {
|
|
||||||
db.setAccDescription?.(ast.accDescr);
|
|
||||||
}
|
|
||||||
if (ast.accTitle) {
|
|
||||||
db.setAccTitle?.(ast.accTitle);
|
|
||||||
}
|
|
||||||
if (ast.title) {
|
|
||||||
db.setDiagramTitle?.(ast.title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__name(populateCommonDb, "populateCommonDb");
|
|
||||||
|
|
||||||
export {
|
|
||||||
populateCommonDb
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-PNW5KFH4.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-4BX2VUAB.mjs"],
|
|
||||||
"sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/common/populateCommonDb.ts\nfunction populateCommonDb(ast, db) {\n if (ast.accDescr) {\n db.setAccDescription?.(ast.accDescr);\n }\n if (ast.accTitle) {\n db.setAccTitle?.(ast.accTitle);\n }\n if (ast.title) {\n db.setDiagramTitle?.(ast.title);\n }\n}\n__name(populateCommonDb, \"populateCommonDb\");\n\nexport {\n populateCommonDb\n};\n"],
|
|
||||||
"mappings": ";;;;;AAKA,SAAS,iBAAiB,KAAK,IAAI;AACjC,MAAI,IAAI,UAAU;AAChB,OAAG,oBAAoB,IAAI,QAAQ;AAAA,EACrC;AACA,MAAI,IAAI,UAAU;AAChB,OAAG,cAAc,IAAI,QAAQ;AAAA,EAC/B;AACA,MAAI,IAAI,OAAO;AACb,OAAG,kBAAkB,IAAI,KAAK;AAAA,EAChC;AACF;AACA,OAAO,kBAAkB,kBAAkB;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,590 +0,0 @@
|
|||||||
import {
|
|
||||||
require_dist
|
|
||||||
} from "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
assignWithDepth_default,
|
|
||||||
common_default,
|
|
||||||
detectType,
|
|
||||||
directiveRegex,
|
|
||||||
sanitizeDirective
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
memoize_default,
|
|
||||||
merge_default
|
|
||||||
} from "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
basisClosed_default,
|
|
||||||
basisOpen_default,
|
|
||||||
basis_default,
|
|
||||||
bumpX,
|
|
||||||
bumpY,
|
|
||||||
bundle_default,
|
|
||||||
cardinalClosed_default,
|
|
||||||
cardinalOpen_default,
|
|
||||||
cardinal_default,
|
|
||||||
catmullRomClosed_default,
|
|
||||||
catmullRomOpen_default,
|
|
||||||
catmullRom_default,
|
|
||||||
linearClosed_default,
|
|
||||||
linear_default,
|
|
||||||
log,
|
|
||||||
monotoneX,
|
|
||||||
monotoneY,
|
|
||||||
natural_default,
|
|
||||||
select_default,
|
|
||||||
stepAfter,
|
|
||||||
stepBefore,
|
|
||||||
step_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__toESM
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-S3R3BYOJ.mjs
|
|
||||||
var import_sanitize_url = __toESM(require_dist(), 1);
|
|
||||||
var ZERO_WIDTH_SPACE = "";
|
|
||||||
var d3CurveTypes = {
|
|
||||||
curveBasis: basis_default,
|
|
||||||
curveBasisClosed: basisClosed_default,
|
|
||||||
curveBasisOpen: basisOpen_default,
|
|
||||||
curveBumpX: bumpX,
|
|
||||||
curveBumpY: bumpY,
|
|
||||||
curveBundle: bundle_default,
|
|
||||||
curveCardinalClosed: cardinalClosed_default,
|
|
||||||
curveCardinalOpen: cardinalOpen_default,
|
|
||||||
curveCardinal: cardinal_default,
|
|
||||||
curveCatmullRomClosed: catmullRomClosed_default,
|
|
||||||
curveCatmullRomOpen: catmullRomOpen_default,
|
|
||||||
curveCatmullRom: catmullRom_default,
|
|
||||||
curveLinear: linear_default,
|
|
||||||
curveLinearClosed: linearClosed_default,
|
|
||||||
curveMonotoneX: monotoneX,
|
|
||||||
curveMonotoneY: monotoneY,
|
|
||||||
curveNatural: natural_default,
|
|
||||||
curveStep: step_default,
|
|
||||||
curveStepAfter: stepAfter,
|
|
||||||
curveStepBefore: stepBefore
|
|
||||||
};
|
|
||||||
var directiveWithoutOpen = /\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi;
|
|
||||||
var detectInit = __name(function(text, config) {
|
|
||||||
const inits = detectDirective(text, /(?:init\b)|(?:initialize\b)/);
|
|
||||||
let results = {};
|
|
||||||
if (Array.isArray(inits)) {
|
|
||||||
const args = inits.map((init) => init.args);
|
|
||||||
sanitizeDirective(args);
|
|
||||||
results = assignWithDepth_default(results, [...args]);
|
|
||||||
} else {
|
|
||||||
results = inits.args;
|
|
||||||
}
|
|
||||||
if (!results) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let type = detectType(text, config);
|
|
||||||
const prop = "config";
|
|
||||||
if (results[prop] !== void 0) {
|
|
||||||
if (type === "flowchart-v2") {
|
|
||||||
type = "flowchart";
|
|
||||||
}
|
|
||||||
results[type] = results[prop];
|
|
||||||
delete results[prop];
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}, "detectInit");
|
|
||||||
var detectDirective = __name(function(text, type = null) {
|
|
||||||
try {
|
|
||||||
const commentWithoutDirectives = new RegExp(
|
|
||||||
`[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*
|
|
||||||
`,
|
|
||||||
"ig"
|
|
||||||
);
|
|
||||||
text = text.trim().replace(commentWithoutDirectives, "").replace(/'/gm, '"');
|
|
||||||
log.debug(
|
|
||||||
`Detecting diagram directive${type !== null ? " type:" + type : ""} based on the text:${text}`
|
|
||||||
);
|
|
||||||
let match;
|
|
||||||
const result = [];
|
|
||||||
while ((match = directiveRegex.exec(text)) !== null) {
|
|
||||||
if (match.index === directiveRegex.lastIndex) {
|
|
||||||
directiveRegex.lastIndex++;
|
|
||||||
}
|
|
||||||
if (match && !type || type && match[1]?.match(type) || type && match[2]?.match(type)) {
|
|
||||||
const type2 = match[1] ? match[1] : match[2];
|
|
||||||
const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;
|
|
||||||
result.push({ type: type2, args });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result.length === 0) {
|
|
||||||
return { type: text, args: null };
|
|
||||||
}
|
|
||||||
return result.length === 1 ? result[0] : result;
|
|
||||||
} catch (error) {
|
|
||||||
log.error(
|
|
||||||
`ERROR: ${error.message} - Unable to parse directive type: '${type}' based on the text: '${text}'`
|
|
||||||
);
|
|
||||||
return { type: void 0, args: null };
|
|
||||||
}
|
|
||||||
}, "detectDirective");
|
|
||||||
var removeDirectives = __name(function(text) {
|
|
||||||
return text.replace(directiveRegex, "");
|
|
||||||
}, "removeDirectives");
|
|
||||||
var isSubstringInArray = __name(function(str, arr) {
|
|
||||||
for (const [i, element] of arr.entries()) {
|
|
||||||
if (element.match(str)) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}, "isSubstringInArray");
|
|
||||||
function interpolateToCurve(interpolate, defaultCurve) {
|
|
||||||
if (!interpolate) {
|
|
||||||
return defaultCurve;
|
|
||||||
}
|
|
||||||
const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;
|
|
||||||
return d3CurveTypes[curveName] ?? defaultCurve;
|
|
||||||
}
|
|
||||||
__name(interpolateToCurve, "interpolateToCurve");
|
|
||||||
function formatUrl(linkStr, config) {
|
|
||||||
const url = linkStr.trim();
|
|
||||||
if (!url) {
|
|
||||||
return void 0;
|
|
||||||
}
|
|
||||||
if (config.securityLevel !== "loose") {
|
|
||||||
return (0, import_sanitize_url.sanitizeUrl)(url);
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
__name(formatUrl, "formatUrl");
|
|
||||||
var runFunc = __name((functionName, ...params) => {
|
|
||||||
const arrPaths = functionName.split(".");
|
|
||||||
const len = arrPaths.length - 1;
|
|
||||||
const fnName = arrPaths[len];
|
|
||||||
let obj = window;
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
obj = obj[arrPaths[i]];
|
|
||||||
if (!obj) {
|
|
||||||
log.error(`Function name: ${functionName} not found in window`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
obj[fnName](...params);
|
|
||||||
}, "runFunc");
|
|
||||||
function distance(p1, p2) {
|
|
||||||
if (!p1 || !p2) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
|
|
||||||
}
|
|
||||||
__name(distance, "distance");
|
|
||||||
function traverseEdge(points) {
|
|
||||||
let prevPoint;
|
|
||||||
let totalDistance = 0;
|
|
||||||
points.forEach((point) => {
|
|
||||||
totalDistance += distance(point, prevPoint);
|
|
||||||
prevPoint = point;
|
|
||||||
});
|
|
||||||
const remainingDistance = totalDistance / 2;
|
|
||||||
return calculatePoint(points, remainingDistance);
|
|
||||||
}
|
|
||||||
__name(traverseEdge, "traverseEdge");
|
|
||||||
function calcLabelPosition(points) {
|
|
||||||
if (points.length === 1) {
|
|
||||||
return points[0];
|
|
||||||
}
|
|
||||||
return traverseEdge(points);
|
|
||||||
}
|
|
||||||
__name(calcLabelPosition, "calcLabelPosition");
|
|
||||||
var roundNumber = __name((num, precision = 2) => {
|
|
||||||
const factor = Math.pow(10, precision);
|
|
||||||
return Math.round(num * factor) / factor;
|
|
||||||
}, "roundNumber");
|
|
||||||
var calculatePoint = __name((points, distanceToTraverse) => {
|
|
||||||
let prevPoint = void 0;
|
|
||||||
let remainingDistance = distanceToTraverse;
|
|
||||||
for (const point of points) {
|
|
||||||
if (prevPoint) {
|
|
||||||
const vectorDistance = distance(point, prevPoint);
|
|
||||||
if (vectorDistance === 0) {
|
|
||||||
return prevPoint;
|
|
||||||
}
|
|
||||||
if (vectorDistance < remainingDistance) {
|
|
||||||
remainingDistance -= vectorDistance;
|
|
||||||
} else {
|
|
||||||
const distanceRatio = remainingDistance / vectorDistance;
|
|
||||||
if (distanceRatio <= 0) {
|
|
||||||
return prevPoint;
|
|
||||||
}
|
|
||||||
if (distanceRatio >= 1) {
|
|
||||||
return { x: point.x, y: point.y };
|
|
||||||
}
|
|
||||||
if (distanceRatio > 0 && distanceRatio < 1) {
|
|
||||||
return {
|
|
||||||
x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),
|
|
||||||
y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prevPoint = point;
|
|
||||||
}
|
|
||||||
throw new Error("Could not find a suitable point for the given distance");
|
|
||||||
}, "calculatePoint");
|
|
||||||
var calcCardinalityPosition = __name((isRelationTypePresent, points, initialPosition) => {
|
|
||||||
log.info(`our points ${JSON.stringify(points)}`);
|
|
||||||
if (points[0] !== initialPosition) {
|
|
||||||
points = points.reverse();
|
|
||||||
}
|
|
||||||
const distanceToCardinalityPoint = 25;
|
|
||||||
const center = calculatePoint(points, distanceToCardinalityPoint);
|
|
||||||
const d = isRelationTypePresent ? 10 : 5;
|
|
||||||
const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);
|
|
||||||
const cardinalityPosition = { x: 0, y: 0 };
|
|
||||||
cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;
|
|
||||||
cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;
|
|
||||||
return cardinalityPosition;
|
|
||||||
}, "calcCardinalityPosition");
|
|
||||||
function calcTerminalLabelPosition(terminalMarkerSize, position, _points) {
|
|
||||||
const points = structuredClone(_points);
|
|
||||||
log.info("our points", points);
|
|
||||||
if (position !== "start_left" && position !== "start_right") {
|
|
||||||
points.reverse();
|
|
||||||
}
|
|
||||||
const distanceToCardinalityPoint = 25 + terminalMarkerSize;
|
|
||||||
const center = calculatePoint(points, distanceToCardinalityPoint);
|
|
||||||
const d = 10 + terminalMarkerSize * 0.5;
|
|
||||||
const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);
|
|
||||||
const cardinalityPosition = { x: 0, y: 0 };
|
|
||||||
if (position === "start_left") {
|
|
||||||
cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;
|
|
||||||
cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;
|
|
||||||
} else if (position === "end_right") {
|
|
||||||
cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;
|
|
||||||
cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;
|
|
||||||
} else if (position === "end_left") {
|
|
||||||
cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;
|
|
||||||
cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;
|
|
||||||
} else {
|
|
||||||
cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;
|
|
||||||
cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;
|
|
||||||
}
|
|
||||||
return cardinalityPosition;
|
|
||||||
}
|
|
||||||
__name(calcTerminalLabelPosition, "calcTerminalLabelPosition");
|
|
||||||
function getStylesFromArray(arr) {
|
|
||||||
let style = "";
|
|
||||||
let labelStyle = "";
|
|
||||||
for (const element of arr) {
|
|
||||||
if (element !== void 0) {
|
|
||||||
if (element.startsWith("color:") || element.startsWith("text-align:")) {
|
|
||||||
labelStyle = labelStyle + element + ";";
|
|
||||||
} else {
|
|
||||||
style = style + element + ";";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return { style, labelStyle };
|
|
||||||
}
|
|
||||||
__name(getStylesFromArray, "getStylesFromArray");
|
|
||||||
var cnt = 0;
|
|
||||||
var generateId = __name(() => {
|
|
||||||
cnt++;
|
|
||||||
return "id-" + Math.random().toString(36).substr(2, 12) + "-" + cnt;
|
|
||||||
}, "generateId");
|
|
||||||
function makeRandomHex(length) {
|
|
||||||
let result = "";
|
|
||||||
const characters = "0123456789abcdef";
|
|
||||||
const charactersLength = characters.length;
|
|
||||||
for (let i = 0; i < length; i++) {
|
|
||||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
__name(makeRandomHex, "makeRandomHex");
|
|
||||||
var random = __name((options) => {
|
|
||||||
return makeRandomHex(options.length);
|
|
||||||
}, "random");
|
|
||||||
var getTextObj = __name(function() {
|
|
||||||
return {
|
|
||||||
x: 0,
|
|
||||||
y: 0,
|
|
||||||
fill: void 0,
|
|
||||||
anchor: "start",
|
|
||||||
style: "#666",
|
|
||||||
width: 100,
|
|
||||||
height: 100,
|
|
||||||
textMargin: 0,
|
|
||||||
rx: 0,
|
|
||||||
ry: 0,
|
|
||||||
valign: void 0,
|
|
||||||
text: ""
|
|
||||||
};
|
|
||||||
}, "getTextObj");
|
|
||||||
var drawSimpleText = __name(function(elem, textData) {
|
|
||||||
const nText = textData.text.replace(common_default.lineBreakRegex, " ");
|
|
||||||
const [, _fontSizePx] = parseFontSize(textData.fontSize);
|
|
||||||
const textElem = elem.append("text");
|
|
||||||
textElem.attr("x", textData.x);
|
|
||||||
textElem.attr("y", textData.y);
|
|
||||||
textElem.style("text-anchor", textData.anchor);
|
|
||||||
textElem.style("font-family", textData.fontFamily);
|
|
||||||
textElem.style("font-size", _fontSizePx);
|
|
||||||
textElem.style("font-weight", textData.fontWeight);
|
|
||||||
textElem.attr("fill", textData.fill);
|
|
||||||
if (textData.class !== void 0) {
|
|
||||||
textElem.attr("class", textData.class);
|
|
||||||
}
|
|
||||||
const span = textElem.append("tspan");
|
|
||||||
span.attr("x", textData.x + textData.textMargin * 2);
|
|
||||||
span.attr("fill", textData.fill);
|
|
||||||
span.text(nText);
|
|
||||||
return textElem;
|
|
||||||
}, "drawSimpleText");
|
|
||||||
var wrapLabel = memoize_default(
|
|
||||||
(label, maxWidth, config) => {
|
|
||||||
if (!label) {
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
config = Object.assign(
|
|
||||||
{ fontSize: 12, fontWeight: 400, fontFamily: "Arial", joinWith: "<br/>" },
|
|
||||||
config
|
|
||||||
);
|
|
||||||
if (common_default.lineBreakRegex.test(label)) {
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
const words = label.split(" ").filter(Boolean);
|
|
||||||
const completedLines = [];
|
|
||||||
let nextLine = "";
|
|
||||||
words.forEach((word, index) => {
|
|
||||||
const wordLength = calculateTextWidth(`${word} `, config);
|
|
||||||
const nextLineLength = calculateTextWidth(nextLine, config);
|
|
||||||
if (wordLength > maxWidth) {
|
|
||||||
const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, "-", config);
|
|
||||||
completedLines.push(nextLine, ...hyphenatedStrings);
|
|
||||||
nextLine = remainingWord;
|
|
||||||
} else if (nextLineLength + wordLength >= maxWidth) {
|
|
||||||
completedLines.push(nextLine);
|
|
||||||
nextLine = word;
|
|
||||||
} else {
|
|
||||||
nextLine = [nextLine, word].filter(Boolean).join(" ");
|
|
||||||
}
|
|
||||||
const currentWord = index + 1;
|
|
||||||
const isLastWord = currentWord === words.length;
|
|
||||||
if (isLastWord) {
|
|
||||||
completedLines.push(nextLine);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return completedLines.filter((line) => line !== "").join(config.joinWith);
|
|
||||||
},
|
|
||||||
(label, maxWidth, config) => `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`
|
|
||||||
);
|
|
||||||
var breakString = memoize_default(
|
|
||||||
(word, maxWidth, hyphenCharacter = "-", config) => {
|
|
||||||
config = Object.assign(
|
|
||||||
{ fontSize: 12, fontWeight: 400, fontFamily: "Arial", margin: 0 },
|
|
||||||
config
|
|
||||||
);
|
|
||||||
const characters = [...word];
|
|
||||||
const lines = [];
|
|
||||||
let currentLine = "";
|
|
||||||
characters.forEach((character, index) => {
|
|
||||||
const nextLine = `${currentLine}${character}`;
|
|
||||||
const lineWidth = calculateTextWidth(nextLine, config);
|
|
||||||
if (lineWidth >= maxWidth) {
|
|
||||||
const currentCharacter = index + 1;
|
|
||||||
const isLastLine = characters.length === currentCharacter;
|
|
||||||
const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;
|
|
||||||
lines.push(isLastLine ? nextLine : hyphenatedNextLine);
|
|
||||||
currentLine = "";
|
|
||||||
} else {
|
|
||||||
currentLine = nextLine;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return { hyphenatedStrings: lines, remainingWord: currentLine };
|
|
||||||
},
|
|
||||||
(word, maxWidth, hyphenCharacter = "-", config) => `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`
|
|
||||||
);
|
|
||||||
function calculateTextHeight(text, config) {
|
|
||||||
return calculateTextDimensions(text, config).height;
|
|
||||||
}
|
|
||||||
__name(calculateTextHeight, "calculateTextHeight");
|
|
||||||
function calculateTextWidth(text, config) {
|
|
||||||
return calculateTextDimensions(text, config).width;
|
|
||||||
}
|
|
||||||
__name(calculateTextWidth, "calculateTextWidth");
|
|
||||||
var calculateTextDimensions = memoize_default(
|
|
||||||
(text, config) => {
|
|
||||||
const { fontSize = 12, fontFamily = "Arial", fontWeight = 400 } = config;
|
|
||||||
if (!text) {
|
|
||||||
return { width: 0, height: 0 };
|
|
||||||
}
|
|
||||||
const [, _fontSizePx] = parseFontSize(fontSize);
|
|
||||||
const fontFamilies = ["sans-serif", fontFamily];
|
|
||||||
const lines = text.split(common_default.lineBreakRegex);
|
|
||||||
const dims = [];
|
|
||||||
const body = select_default("body");
|
|
||||||
if (!body.remove) {
|
|
||||||
return { width: 0, height: 0, lineHeight: 0 };
|
|
||||||
}
|
|
||||||
const g = body.append("svg");
|
|
||||||
for (const fontFamily2 of fontFamilies) {
|
|
||||||
let cHeight = 0;
|
|
||||||
const dim = { width: 0, height: 0, lineHeight: 0 };
|
|
||||||
for (const line of lines) {
|
|
||||||
const textObj = getTextObj();
|
|
||||||
textObj.text = line || ZERO_WIDTH_SPACE;
|
|
||||||
const textElem = drawSimpleText(g, textObj).style("font-size", _fontSizePx).style("font-weight", fontWeight).style("font-family", fontFamily2);
|
|
||||||
const bBox = (textElem._groups || textElem)[0][0].getBBox();
|
|
||||||
if (bBox.width === 0 && bBox.height === 0) {
|
|
||||||
throw new Error("svg element not in render tree");
|
|
||||||
}
|
|
||||||
dim.width = Math.round(Math.max(dim.width, bBox.width));
|
|
||||||
cHeight = Math.round(bBox.height);
|
|
||||||
dim.height += cHeight;
|
|
||||||
dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));
|
|
||||||
}
|
|
||||||
dims.push(dim);
|
|
||||||
}
|
|
||||||
g.remove();
|
|
||||||
const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;
|
|
||||||
return dims[index];
|
|
||||||
},
|
|
||||||
(text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`
|
|
||||||
);
|
|
||||||
var _a;
|
|
||||||
var InitIDGenerator = (_a = class {
|
|
||||||
constructor(deterministic = false, seed) {
|
|
||||||
this.count = 0;
|
|
||||||
this.count = seed ? seed.length : 0;
|
|
||||||
this.next = deterministic ? () => this.count++ : () => Date.now();
|
|
||||||
}
|
|
||||||
}, __name(_a, "InitIDGenerator"), _a);
|
|
||||||
var decoder;
|
|
||||||
var entityDecode = __name(function(html) {
|
|
||||||
decoder = decoder || document.createElement("div");
|
|
||||||
html = escape(html).replace(/%26/g, "&").replace(/%23/g, "#").replace(/%3B/g, ";");
|
|
||||||
decoder.innerHTML = html;
|
|
||||||
return unescape(decoder.textContent);
|
|
||||||
}, "entityDecode");
|
|
||||||
function isDetailedError(error) {
|
|
||||||
return "str" in error;
|
|
||||||
}
|
|
||||||
__name(isDetailedError, "isDetailedError");
|
|
||||||
var insertTitle = __name((parent, cssClass, titleTopMargin, title) => {
|
|
||||||
if (!title) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const bounds = parent.node()?.getBBox();
|
|
||||||
if (!bounds) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
parent.append("text").text(title).attr("text-anchor", "middle").attr("x", bounds.x + bounds.width / 2).attr("y", -titleTopMargin).attr("class", cssClass);
|
|
||||||
}, "insertTitle");
|
|
||||||
var parseFontSize = __name((fontSize) => {
|
|
||||||
if (typeof fontSize === "number") {
|
|
||||||
return [fontSize, fontSize + "px"];
|
|
||||||
}
|
|
||||||
const fontSizeNumber = parseInt(fontSize ?? "", 10);
|
|
||||||
if (Number.isNaN(fontSizeNumber)) {
|
|
||||||
return [void 0, void 0];
|
|
||||||
} else if (fontSize === String(fontSizeNumber)) {
|
|
||||||
return [fontSizeNumber, fontSize + "px"];
|
|
||||||
} else {
|
|
||||||
return [fontSizeNumber, fontSize];
|
|
||||||
}
|
|
||||||
}, "parseFontSize");
|
|
||||||
function cleanAndMerge(defaultData, data) {
|
|
||||||
return merge_default({}, defaultData, data);
|
|
||||||
}
|
|
||||||
__name(cleanAndMerge, "cleanAndMerge");
|
|
||||||
var utils_default = {
|
|
||||||
assignWithDepth: assignWithDepth_default,
|
|
||||||
wrapLabel,
|
|
||||||
calculateTextHeight,
|
|
||||||
calculateTextWidth,
|
|
||||||
calculateTextDimensions,
|
|
||||||
cleanAndMerge,
|
|
||||||
detectInit,
|
|
||||||
detectDirective,
|
|
||||||
isSubstringInArray,
|
|
||||||
interpolateToCurve,
|
|
||||||
calcLabelPosition,
|
|
||||||
calcCardinalityPosition,
|
|
||||||
calcTerminalLabelPosition,
|
|
||||||
formatUrl,
|
|
||||||
getStylesFromArray,
|
|
||||||
generateId,
|
|
||||||
random,
|
|
||||||
runFunc,
|
|
||||||
entityDecode,
|
|
||||||
insertTitle,
|
|
||||||
isLabelCoordinateInPath,
|
|
||||||
parseFontSize,
|
|
||||||
InitIDGenerator
|
|
||||||
};
|
|
||||||
var encodeEntities = __name(function(text) {
|
|
||||||
let txt = text;
|
|
||||||
txt = txt.replace(/style.*:\S*#.*;/g, function(s) {
|
|
||||||
return s.substring(0, s.length - 1);
|
|
||||||
});
|
|
||||||
txt = txt.replace(/classDef.*:\S*#.*;/g, function(s) {
|
|
||||||
return s.substring(0, s.length - 1);
|
|
||||||
});
|
|
||||||
txt = txt.replace(/#\w+;/g, function(s) {
|
|
||||||
const innerTxt = s.substring(1, s.length - 1);
|
|
||||||
const isInt = /^\+?\d+$/.test(innerTxt);
|
|
||||||
if (isInt) {
|
|
||||||
return "fl°°" + innerTxt + "¶ß";
|
|
||||||
} else {
|
|
||||||
return "fl°" + innerTxt + "¶ß";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return txt;
|
|
||||||
}, "encodeEntities");
|
|
||||||
var decodeEntities = __name(function(text) {
|
|
||||||
return text.replace(/fl°°/g, "&#").replace(/fl°/g, "&").replace(/¶ß/g, ";");
|
|
||||||
}, "decodeEntities");
|
|
||||||
var getEdgeId = __name((from, to, {
|
|
||||||
counter = 0,
|
|
||||||
prefix,
|
|
||||||
suffix
|
|
||||||
}, id) => {
|
|
||||||
if (id) {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
return `${prefix ? `${prefix}_` : ""}${from}_${to}_${counter}${suffix ? `_${suffix}` : ""}`;
|
|
||||||
}, "getEdgeId");
|
|
||||||
function handleUndefinedAttr(attrValue) {
|
|
||||||
return attrValue ?? null;
|
|
||||||
}
|
|
||||||
__name(handleUndefinedAttr, "handleUndefinedAttr");
|
|
||||||
function isLabelCoordinateInPath(point, dAttr) {
|
|
||||||
const roundedX = Math.round(point.x);
|
|
||||||
const roundedY = Math.round(point.y);
|
|
||||||
const sanitizedD = dAttr.replace(
|
|
||||||
/(\d+\.\d+)/g,
|
|
||||||
(match) => Math.round(parseFloat(match)).toString()
|
|
||||||
);
|
|
||||||
return sanitizedD.includes(roundedX.toString()) || sanitizedD.includes(roundedY.toString());
|
|
||||||
}
|
|
||||||
__name(isLabelCoordinateInPath, "isLabelCoordinateInPath");
|
|
||||||
|
|
||||||
export {
|
|
||||||
ZERO_WIDTH_SPACE,
|
|
||||||
removeDirectives,
|
|
||||||
interpolateToCurve,
|
|
||||||
getStylesFromArray,
|
|
||||||
generateId,
|
|
||||||
random,
|
|
||||||
wrapLabel,
|
|
||||||
calculateTextHeight,
|
|
||||||
calculateTextWidth,
|
|
||||||
isDetailedError,
|
|
||||||
parseFontSize,
|
|
||||||
cleanAndMerge,
|
|
||||||
utils_default,
|
|
||||||
encodeEntities,
|
|
||||||
decodeEntities,
|
|
||||||
getEdgeId,
|
|
||||||
handleUndefinedAttr
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-QVVRGVV3.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,240 +0,0 @@
|
|||||||
import {
|
|
||||||
isPlatformBrowser
|
|
||||||
} from "./chunk-76DXN4JH.js";
|
|
||||||
import {
|
|
||||||
APP_ID,
|
|
||||||
ApplicationRef,
|
|
||||||
ElementRef,
|
|
||||||
Injectable,
|
|
||||||
PLATFORM_ID,
|
|
||||||
createComponent,
|
|
||||||
setClassMetadata
|
|
||||||
} from "./chunk-UEBPW2IJ.js";
|
|
||||||
import {
|
|
||||||
EnvironmentInjector,
|
|
||||||
Injector,
|
|
||||||
inject,
|
|
||||||
ɵɵdefineInjectable
|
|
||||||
} from "./chunk-QLJXSR7F.js";
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/shadow-dom.mjs
|
|
||||||
var shadowDomIsSupported;
|
|
||||||
function _supportsShadowDom() {
|
|
||||||
if (shadowDomIsSupported == null) {
|
|
||||||
const head = typeof document !== "undefined" ? document.head : null;
|
|
||||||
shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));
|
|
||||||
}
|
|
||||||
return shadowDomIsSupported;
|
|
||||||
}
|
|
||||||
function _getShadowRoot(element) {
|
|
||||||
if (_supportsShadowDom()) {
|
|
||||||
const rootNode = element.getRootNode ? element.getRootNode() : null;
|
|
||||||
if (typeof ShadowRoot !== "undefined" && ShadowRoot && rootNode instanceof ShadowRoot) {
|
|
||||||
return rootNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
function _getFocusedElementPierceShadowDom() {
|
|
||||||
let activeElement = typeof document !== "undefined" && document ? document.activeElement : null;
|
|
||||||
while (activeElement && activeElement.shadowRoot) {
|
|
||||||
const newActiveElement = activeElement.shadowRoot.activeElement;
|
|
||||||
if (newActiveElement === activeElement) {
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
activeElement = newActiveElement;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return activeElement;
|
|
||||||
}
|
|
||||||
function _getEventTarget(event) {
|
|
||||||
return event.composedPath ? event.composedPath()[0] : event.target;
|
|
||||||
}
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/fake-event-detection.mjs
|
|
||||||
function isFakeMousedownFromScreenReader(event) {
|
|
||||||
return event.buttons === 0 || event.detail === 0;
|
|
||||||
}
|
|
||||||
function isFakeTouchstartFromScreenReader(event) {
|
|
||||||
const touch = event.touches && event.touches[0] || event.changedTouches && event.changedTouches[0];
|
|
||||||
return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) && (touch.radiusY == null || touch.radiusY === 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/element.mjs
|
|
||||||
function coerceNumberProperty(value, fallbackValue = 0) {
|
|
||||||
if (_isNumberValue(value)) {
|
|
||||||
return Number(value);
|
|
||||||
}
|
|
||||||
return arguments.length === 2 ? fallbackValue : 0;
|
|
||||||
}
|
|
||||||
function _isNumberValue(value) {
|
|
||||||
return !isNaN(parseFloat(value)) && !isNaN(Number(value));
|
|
||||||
}
|
|
||||||
function coerceElement(elementOrRef) {
|
|
||||||
return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/style-loader.mjs
|
|
||||||
var appsWithLoaders = /* @__PURE__ */ new WeakMap();
|
|
||||||
var _CdkPrivateStyleLoader = class __CdkPrivateStyleLoader {
|
|
||||||
_appRef;
|
|
||||||
_injector = inject(Injector);
|
|
||||||
_environmentInjector = inject(EnvironmentInjector);
|
|
||||||
/**
|
|
||||||
* Loads a set of styles.
|
|
||||||
* @param loader Component which will be instantiated to load the styles.
|
|
||||||
*/
|
|
||||||
load(loader) {
|
|
||||||
const appRef = this._appRef = this._appRef || this._injector.get(ApplicationRef);
|
|
||||||
let data = appsWithLoaders.get(appRef);
|
|
||||||
if (!data) {
|
|
||||||
data = {
|
|
||||||
loaders: /* @__PURE__ */ new Set(),
|
|
||||||
refs: []
|
|
||||||
};
|
|
||||||
appsWithLoaders.set(appRef, data);
|
|
||||||
appRef.onDestroy(() => {
|
|
||||||
appsWithLoaders.get(appRef)?.refs.forEach((ref) => ref.destroy());
|
|
||||||
appsWithLoaders.delete(appRef);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (!data.loaders.has(loader)) {
|
|
||||||
data.loaders.add(loader);
|
|
||||||
data.refs.push(createComponent(loader, {
|
|
||||||
environmentInjector: this._environmentInjector
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static ɵfac = function _CdkPrivateStyleLoader_Factory(__ngFactoryType__) {
|
|
||||||
return new (__ngFactoryType__ || __CdkPrivateStyleLoader)();
|
|
||||||
};
|
|
||||||
static ɵprov = ɵɵdefineInjectable({
|
|
||||||
token: __CdkPrivateStyleLoader,
|
|
||||||
factory: __CdkPrivateStyleLoader.ɵfac,
|
|
||||||
providedIn: "root"
|
|
||||||
});
|
|
||||||
};
|
|
||||||
(() => {
|
|
||||||
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(_CdkPrivateStyleLoader, [{
|
|
||||||
type: Injectable,
|
|
||||||
args: [{
|
|
||||||
providedIn: "root"
|
|
||||||
}]
|
|
||||||
}], null, null);
|
|
||||||
})();
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/platform2.mjs
|
|
||||||
var hasV8BreakIterator;
|
|
||||||
try {
|
|
||||||
hasV8BreakIterator = typeof Intl !== "undefined" && Intl.v8BreakIterator;
|
|
||||||
} catch {
|
|
||||||
hasV8BreakIterator = false;
|
|
||||||
}
|
|
||||||
var Platform = class _Platform {
|
|
||||||
_platformId = inject(PLATFORM_ID);
|
|
||||||
// We want to use the Angular platform check because if the Document is shimmed
|
|
||||||
// without the navigator, the following checks will fail. This is preferred because
|
|
||||||
// sometimes the Document may be shimmed without the user's knowledge or intention
|
|
||||||
/** Whether the Angular application is being rendered in the browser. */
|
|
||||||
isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === "object" && !!document;
|
|
||||||
/** Whether the current browser is Microsoft Edge. */
|
|
||||||
EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);
|
|
||||||
/** Whether the current rendering engine is Microsoft Trident. */
|
|
||||||
TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);
|
|
||||||
// EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.
|
|
||||||
/** Whether the current rendering engine is Blink. */
|
|
||||||
BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== "undefined" && !this.EDGE && !this.TRIDENT;
|
|
||||||
// Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to
|
|
||||||
// ensure that Webkit runs standalone and is not used as another engine's base.
|
|
||||||
/** Whether the current rendering engine is WebKit. */
|
|
||||||
WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;
|
|
||||||
/** Whether the current platform is Apple iOS. */
|
|
||||||
IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !("MSStream" in window);
|
|
||||||
// It's difficult to detect the plain Gecko engine, because most of the browsers identify
|
|
||||||
// them self as Gecko-like browsers and modify the userAgent's according to that.
|
|
||||||
// Since we only cover one explicit Firefox case, we can simply check for Firefox
|
|
||||||
// instead of having an unstable check for Gecko.
|
|
||||||
/** Whether the current browser is Firefox. */
|
|
||||||
FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);
|
|
||||||
/** Whether the current platform is Android. */
|
|
||||||
// Trident on mobile adds the android platform to the userAgent to trick detections.
|
|
||||||
ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;
|
|
||||||
// Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake
|
|
||||||
// this and just place the Safari keyword in the userAgent. To be more safe about Safari every
|
|
||||||
// Safari browser should also use Webkit as its layout engine.
|
|
||||||
/** Whether the current browser is Safari. */
|
|
||||||
SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;
|
|
||||||
constructor() {
|
|
||||||
}
|
|
||||||
static ɵfac = function Platform_Factory(__ngFactoryType__) {
|
|
||||||
return new (__ngFactoryType__ || _Platform)();
|
|
||||||
};
|
|
||||||
static ɵprov = ɵɵdefineInjectable({
|
|
||||||
token: _Platform,
|
|
||||||
factory: _Platform.ɵfac,
|
|
||||||
providedIn: "root"
|
|
||||||
});
|
|
||||||
};
|
|
||||||
(() => {
|
|
||||||
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Platform, [{
|
|
||||||
type: Injectable,
|
|
||||||
args: [{
|
|
||||||
providedIn: "root"
|
|
||||||
}]
|
|
||||||
}], () => [], null);
|
|
||||||
})();
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/id-generator.mjs
|
|
||||||
var counters = {};
|
|
||||||
var _IdGenerator = class __IdGenerator {
|
|
||||||
_appId = inject(APP_ID);
|
|
||||||
/**
|
|
||||||
* Generates a unique ID with a specific prefix.
|
|
||||||
* @param prefix Prefix to add to the ID.
|
|
||||||
*/
|
|
||||||
getId(prefix) {
|
|
||||||
if (this._appId !== "ng") {
|
|
||||||
prefix += this._appId;
|
|
||||||
}
|
|
||||||
if (!counters.hasOwnProperty(prefix)) {
|
|
||||||
counters[prefix] = 0;
|
|
||||||
}
|
|
||||||
return `${prefix}${counters[prefix]++}`;
|
|
||||||
}
|
|
||||||
static ɵfac = function _IdGenerator_Factory(__ngFactoryType__) {
|
|
||||||
return new (__ngFactoryType__ || __IdGenerator)();
|
|
||||||
};
|
|
||||||
static ɵprov = ɵɵdefineInjectable({
|
|
||||||
token: __IdGenerator,
|
|
||||||
factory: __IdGenerator.ɵfac,
|
|
||||||
providedIn: "root"
|
|
||||||
});
|
|
||||||
};
|
|
||||||
(() => {
|
|
||||||
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(_IdGenerator, [{
|
|
||||||
type: Injectable,
|
|
||||||
args: [{
|
|
||||||
providedIn: "root"
|
|
||||||
}]
|
|
||||||
}], null, null);
|
|
||||||
})();
|
|
||||||
|
|
||||||
// node_modules/@angular/cdk/fesm2022/array.mjs
|
|
||||||
function coerceArray(value) {
|
|
||||||
return Array.isArray(value) ? value : [value];
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
_getShadowRoot,
|
|
||||||
_getFocusedElementPierceShadowDom,
|
|
||||||
_getEventTarget,
|
|
||||||
isFakeMousedownFromScreenReader,
|
|
||||||
isFakeTouchstartFromScreenReader,
|
|
||||||
coerceNumberProperty,
|
|
||||||
coerceElement,
|
|
||||||
_CdkPrivateStyleLoader,
|
|
||||||
Platform,
|
|
||||||
_IdGenerator,
|
|
||||||
coerceArray
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-R6KALAQM.js.map
|
|
File diff suppressed because one or more lines are too long
2018
.angular/cache/20.3.3/app/vite/deps/chunk-UHQERBHF.js
vendored
2018
.angular/cache/20.3.3/app/vite/deps/chunk-UHQERBHF.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,73 +0,0 @@
|
|||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-WHHJWK6B.js";
|
|
||||||
|
|
||||||
// node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs
|
|
||||||
var parsers = {};
|
|
||||||
var initializers = {
|
|
||||||
info: __name(async () => {
|
|
||||||
const { createInfoServices: createInfoServices2 } = await import("./info-63CPKGFF-W56KXM6Z.js");
|
|
||||||
const parser = createInfoServices2().Info.parser.LangiumParser;
|
|
||||||
parsers.info = parser;
|
|
||||||
}, "info"),
|
|
||||||
packet: __name(async () => {
|
|
||||||
const { createPacketServices: createPacketServices2 } = await import("./packet-HUATNLJX-LCJ3BRNR.js");
|
|
||||||
const parser = createPacketServices2().Packet.parser.LangiumParser;
|
|
||||||
parsers.packet = parser;
|
|
||||||
}, "packet"),
|
|
||||||
pie: __name(async () => {
|
|
||||||
const { createPieServices: createPieServices2 } = await import("./pie-WTHONI2E-7JKUTNCJ.js");
|
|
||||||
const parser = createPieServices2().Pie.parser.LangiumParser;
|
|
||||||
parsers.pie = parser;
|
|
||||||
}, "pie"),
|
|
||||||
architecture: __name(async () => {
|
|
||||||
const { createArchitectureServices: createArchitectureServices2 } = await import("./architecture-O4VJ6CD3-IBEWAQYB.js");
|
|
||||||
const parser = createArchitectureServices2().Architecture.parser.LangiumParser;
|
|
||||||
parsers.architecture = parser;
|
|
||||||
}, "architecture"),
|
|
||||||
gitGraph: __name(async () => {
|
|
||||||
const { createGitGraphServices: createGitGraphServices2 } = await import("./gitGraph-ZV4HHKMB-6SC2CHQE.js");
|
|
||||||
const parser = createGitGraphServices2().GitGraph.parser.LangiumParser;
|
|
||||||
parsers.gitGraph = parser;
|
|
||||||
}, "gitGraph"),
|
|
||||||
radar: __name(async () => {
|
|
||||||
const { createRadarServices: createRadarServices2 } = await import("./radar-NJJJXTRR-IXC2PP4O.js");
|
|
||||||
const parser = createRadarServices2().Radar.parser.LangiumParser;
|
|
||||||
parsers.radar = parser;
|
|
||||||
}, "radar"),
|
|
||||||
treemap: __name(async () => {
|
|
||||||
const { createTreemapServices: createTreemapServices2 } = await import("./treemap-75Q7IDZK-IP775KCD.js");
|
|
||||||
const parser = createTreemapServices2().Treemap.parser.LangiumParser;
|
|
||||||
parsers.treemap = parser;
|
|
||||||
}, "treemap")
|
|
||||||
};
|
|
||||||
async function parse(diagramType, text) {
|
|
||||||
const initializer = initializers[diagramType];
|
|
||||||
if (!initializer) {
|
|
||||||
throw new Error(`Unknown diagram type: ${diagramType}`);
|
|
||||||
}
|
|
||||||
if (!parsers[diagramType]) {
|
|
||||||
await initializer();
|
|
||||||
}
|
|
||||||
const parser = parsers[diagramType];
|
|
||||||
const result = parser.parse(text);
|
|
||||||
if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {
|
|
||||||
throw new MermaidParseError(result);
|
|
||||||
}
|
|
||||||
return result.value;
|
|
||||||
}
|
|
||||||
__name(parse, "parse");
|
|
||||||
var _a;
|
|
||||||
var MermaidParseError = (_a = class extends Error {
|
|
||||||
constructor(result) {
|
|
||||||
const lexerErrors = result.lexerErrors.map((err) => err.message).join("\n");
|
|
||||||
const parserErrors = result.parserErrors.map((err) => err.message).join("\n");
|
|
||||||
super(`Parsing failed: ${lexerErrors} ${parserErrors}`);
|
|
||||||
this.result = result;
|
|
||||||
}
|
|
||||||
}, __name(_a, "MermaidParseError"), _a);
|
|
||||||
|
|
||||||
export {
|
|
||||||
parse
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-VGVCR5QM.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,85 +0,0 @@
|
|||||||
import {
|
|
||||||
insertEdge,
|
|
||||||
insertEdgeLabel,
|
|
||||||
markers_default,
|
|
||||||
positionEdgeLabel
|
|
||||||
} from "./chunk-HICR2YSH.js";
|
|
||||||
import {
|
|
||||||
insertCluster,
|
|
||||||
insertNode,
|
|
||||||
labelHelper
|
|
||||||
} from "./chunk-JJ4TL56I.js";
|
|
||||||
import {
|
|
||||||
interpolateToCurve
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import {
|
|
||||||
common_default,
|
|
||||||
getConfig
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/chunk-N4CR4FBY.mjs
|
|
||||||
var internalHelpers = {
|
|
||||||
common: common_default,
|
|
||||||
getConfig,
|
|
||||||
insertCluster,
|
|
||||||
insertEdge,
|
|
||||||
insertEdgeLabel,
|
|
||||||
insertMarkers: markers_default,
|
|
||||||
insertNode,
|
|
||||||
interpolateToCurve,
|
|
||||||
labelHelper,
|
|
||||||
log,
|
|
||||||
positionEdgeLabel
|
|
||||||
};
|
|
||||||
var layoutAlgorithms = {};
|
|
||||||
var registerLayoutLoaders = __name((loaders) => {
|
|
||||||
for (const loader of loaders) {
|
|
||||||
layoutAlgorithms[loader.name] = loader;
|
|
||||||
}
|
|
||||||
}, "registerLayoutLoaders");
|
|
||||||
var registerDefaultLayoutLoaders = __name(() => {
|
|
||||||
registerLayoutLoaders([
|
|
||||||
{
|
|
||||||
name: "dagre",
|
|
||||||
loader: __name(async () => await import("./dagre-6UL2VRFP-RIOSZDA4.js"), "loader")
|
|
||||||
},
|
|
||||||
...true ? [
|
|
||||||
{
|
|
||||||
name: "cose-bilkent",
|
|
||||||
loader: __name(async () => await import("./cose-bilkent-S5V4N54A-5WYXQMNH.js"), "loader")
|
|
||||||
}
|
|
||||||
] : []
|
|
||||||
]);
|
|
||||||
}, "registerDefaultLayoutLoaders");
|
|
||||||
registerDefaultLayoutLoaders();
|
|
||||||
var render = __name(async (data4Layout, svg) => {
|
|
||||||
if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {
|
|
||||||
throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);
|
|
||||||
}
|
|
||||||
const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];
|
|
||||||
const layoutRenderer = await layoutDefinition.loader();
|
|
||||||
return layoutRenderer.render(data4Layout, svg, internalHelpers, {
|
|
||||||
algorithm: layoutDefinition.algorithm
|
|
||||||
});
|
|
||||||
}, "render");
|
|
||||||
var getRegisteredLayoutAlgorithm = __name((algorithm = "", { fallback = "dagre" } = {}) => {
|
|
||||||
if (algorithm in layoutAlgorithms) {
|
|
||||||
return algorithm;
|
|
||||||
}
|
|
||||||
if (fallback in layoutAlgorithms) {
|
|
||||||
log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);
|
|
||||||
return fallback;
|
|
||||||
}
|
|
||||||
throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);
|
|
||||||
}, "getRegisteredLayoutAlgorithm");
|
|
||||||
|
|
||||||
export {
|
|
||||||
registerLayoutLoaders,
|
|
||||||
render,
|
|
||||||
getRegisteredLayoutAlgorithm
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=chunk-WC2C7HAT.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-N4CR4FBY.mjs"],
|
|
||||||
"sourcesContent": ["import {\n insertEdge,\n insertEdgeLabel,\n markers_default,\n positionEdgeLabel\n} from \"./chunk-QXUST7PY.mjs\";\nimport {\n insertCluster,\n insertNode,\n labelHelper\n} from \"./chunk-JZLCHNYA.mjs\";\nimport {\n interpolateToCurve\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n getConfig\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/internals.ts\nvar internalHelpers = {\n common: common_default,\n getConfig,\n insertCluster,\n insertEdge,\n insertEdgeLabel,\n insertMarkers: markers_default,\n insertNode,\n interpolateToCurve,\n labelHelper,\n log,\n positionEdgeLabel\n};\n\n// src/rendering-util/render.ts\nvar layoutAlgorithms = {};\nvar registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => {\n for (const loader of loaders) {\n layoutAlgorithms[loader.name] = loader;\n }\n}, \"registerLayoutLoaders\");\nvar registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {\n registerLayoutLoaders([\n {\n name: \"dagre\",\n loader: /* @__PURE__ */ __name(async () => await import(\"./dagre-6UL2VRFP.mjs\"), \"loader\")\n },\n ...true ? [\n {\n name: \"cose-bilkent\",\n loader: /* @__PURE__ */ __name(async () => await import(\"./cose-bilkent-S5V4N54A.mjs\"), \"loader\")\n }\n ] : []\n ]);\n}, \"registerDefaultLayoutLoaders\");\nregisterDefaultLayoutLoaders();\nvar render = /* @__PURE__ */ __name(async (data4Layout, svg) => {\n if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n }\n const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n const layoutRenderer = await layoutDefinition.loader();\n return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n algorithm: layoutDefinition.algorithm\n });\n}, \"render\");\nvar getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = \"\", { fallback = \"dagre\" } = {}) => {\n if (algorithm in layoutAlgorithms) {\n return algorithm;\n }\n if (fallback in layoutAlgorithms) {\n log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n return fallback;\n }\n throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n}, \"getRegisteredLayoutAlgorithm\");\n\nexport {\n registerLayoutLoaders,\n render,\n getRegisteredLayoutAlgorithm\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAI,kBAAkB;AAAA,EACpB,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAI,mBAAmB,CAAC;AACxB,IAAI,wBAAwC,OAAO,CAAC,YAAY;AAC9D,aAAW,UAAU,SAAS;AAC5B,qBAAiB,OAAO,IAAI,IAAI;AAAA,EAClC;AACF,GAAG,uBAAuB;AAC1B,IAAI,+BAA+C,OAAO,MAAM;AAC9D,wBAAsB;AAAA,IACpB;AAAA,MACE,MAAM;AAAA,MACN,QAAwB,OAAO,YAAY,MAAM,OAAO,8BAAsB,GAAG,QAAQ;AAAA,IAC3F;AAAA,IACA,GAAG,OAAO;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,QAAwB,OAAO,YAAY,MAAM,OAAO,qCAA6B,GAAG,QAAQ;AAAA,MAClG;AAAA,IACF,IAAI,CAAC;AAAA,EACP,CAAC;AACH,GAAG,8BAA8B;AACjC,6BAA6B;AAC7B,IAAI,SAAyB,OAAO,OAAO,aAAa,QAAQ;AAC9D,MAAI,EAAE,YAAY,mBAAmB,mBAAmB;AACtD,UAAM,IAAI,MAAM,6BAA6B,YAAY,eAAe,EAAE;AAAA,EAC5E;AACA,QAAM,mBAAmB,iBAAiB,YAAY,eAAe;AACrE,QAAM,iBAAiB,MAAM,iBAAiB,OAAO;AACrD,SAAO,eAAe,OAAO,aAAa,KAAK,iBAAiB;AAAA,IAC9D,WAAW,iBAAiB;AAAA,EAC9B,CAAC;AACH,GAAG,QAAQ;AACX,IAAI,+BAA+C,OAAO,CAAC,YAAY,IAAI,EAAE,WAAW,QAAQ,IAAI,CAAC,MAAM;AACzG,MAAI,aAAa,kBAAkB;AACjC,WAAO;AAAA,EACT;AACA,MAAI,YAAY,kBAAkB;AAChC,QAAI,KAAK,oBAAoB,SAAS,6BAA6B,QAAQ,eAAe;AAC1F,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,0BAA0B,SAAS,QAAQ,QAAQ,sBAAsB;AAC3F,GAAG,8BAA8B;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
1948
.angular/cache/20.3.3/app/vite/deps/chunk-X65BYZXM.js
vendored
1948
.angular/cache/20.3.3/app/vite/deps/chunk-X65BYZXM.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,44 +0,0 @@
|
|||||||
import {
|
|
||||||
ClassDB,
|
|
||||||
classDiagram_default,
|
|
||||||
classRenderer_v3_unified_default,
|
|
||||||
styles_default
|
|
||||||
} from "./chunk-X65BYZXM.js";
|
|
||||||
import "./chunk-I4QIIVJ7.js";
|
|
||||||
import "./chunk-PLWNSIKB.js";
|
|
||||||
import "./chunk-LHH5RO5K.js";
|
|
||||||
import "./chunk-WC2C7HAT.js";
|
|
||||||
import "./chunk-HICR2YSH.js";
|
|
||||||
import "./chunk-JJ4TL56I.js";
|
|
||||||
import "./chunk-2HSIUWWJ.js";
|
|
||||||
import "./chunk-EUUYHBKV.js";
|
|
||||||
import "./chunk-FTTOYZOY.js";
|
|
||||||
import "./chunk-NMWDZEZO.js";
|
|
||||||
import "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-2ON5EDUG.mjs
|
|
||||||
var diagram = {
|
|
||||||
parser: classDiagram_default,
|
|
||||||
get db() {
|
|
||||||
return new ClassDB();
|
|
||||||
},
|
|
||||||
renderer: classRenderer_v3_unified_default,
|
|
||||||
styles: styles_default,
|
|
||||||
init: __name((cnf) => {
|
|
||||||
if (!cnf.class) {
|
|
||||||
cnf.class = {};
|
|
||||||
}
|
|
||||||
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
|
||||||
}, "init")
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=classDiagram-2ON5EDUG-33U76KPG.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-2ON5EDUG.mjs"],
|
|
||||||
"sourcesContent": ["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-B4BG7PRW.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-QN33PNHL.mjs\";\nimport \"./chunk-N4CR4FBY.mjs\";\nimport \"./chunk-QXUST7PY.mjs\";\nimport \"./chunk-HN2XXSSU.mjs\";\nimport \"./chunk-JZLCHNYA.mjs\";\nimport \"./chunk-CVBHYZKI.mjs\";\nimport \"./chunk-ATLVNIR6.mjs\";\nimport \"./chunk-JA3XYJ7Z.mjs\";\nimport \"./chunk-S3R3BYOJ.mjs\";\nimport \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAI,UAAU;AAAA,EACZ,QAAQ;AAAA,EACR,IAAI,KAAK;AACP,WAAO,IAAI,QAAQ;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAsB,OAAO,CAAC,QAAQ;AACpC,QAAI,CAAC,IAAI,OAAO;AACd,UAAI,QAAQ,CAAC;AAAA,IACf;AACA,QAAI,MAAM,sBAAsB,IAAI;AAAA,EACtC,GAAG,MAAM;AACX;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
import {
|
|
||||||
ClassDB,
|
|
||||||
classDiagram_default,
|
|
||||||
classRenderer_v3_unified_default,
|
|
||||||
styles_default
|
|
||||||
} from "./chunk-X65BYZXM.js";
|
|
||||||
import "./chunk-I4QIIVJ7.js";
|
|
||||||
import "./chunk-PLWNSIKB.js";
|
|
||||||
import "./chunk-LHH5RO5K.js";
|
|
||||||
import "./chunk-WC2C7HAT.js";
|
|
||||||
import "./chunk-HICR2YSH.js";
|
|
||||||
import "./chunk-JJ4TL56I.js";
|
|
||||||
import "./chunk-2HSIUWWJ.js";
|
|
||||||
import "./chunk-EUUYHBKV.js";
|
|
||||||
import "./chunk-FTTOYZOY.js";
|
|
||||||
import "./chunk-NMWDZEZO.js";
|
|
||||||
import "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-WZHVMYZB.mjs
|
|
||||||
var diagram = {
|
|
||||||
parser: classDiagram_default,
|
|
||||||
get db() {
|
|
||||||
return new ClassDB();
|
|
||||||
},
|
|
||||||
renderer: classRenderer_v3_unified_default,
|
|
||||||
styles: styles_default,
|
|
||||||
init: __name((cnf) => {
|
|
||||||
if (!cnf.class) {
|
|
||||||
cnf.class = {};
|
|
||||||
}
|
|
||||||
cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
|
||||||
}, "init")
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=classDiagram-v2-WZHVMYZB-Z27PMM23.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-WZHVMYZB.mjs"],
|
|
||||||
"sourcesContent": ["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-B4BG7PRW.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-QN33PNHL.mjs\";\nimport \"./chunk-N4CR4FBY.mjs\";\nimport \"./chunk-QXUST7PY.mjs\";\nimport \"./chunk-HN2XXSSU.mjs\";\nimport \"./chunk-JZLCHNYA.mjs\";\nimport \"./chunk-CVBHYZKI.mjs\";\nimport \"./chunk-ATLVNIR6.mjs\";\nimport \"./chunk-JA3XYJ7Z.mjs\";\nimport \"./chunk-S3R3BYOJ.mjs\";\nimport \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram-v2.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAI,UAAU;AAAA,EACZ,QAAQ;AAAA,EACR,IAAI,KAAK;AACP,WAAO,IAAI,QAAQ;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAsB,OAAO,CAAC,QAAQ;AACpC,QAAI,CAAC,IAAI,OAAO;AACd,UAAI,QAAQ,CAAC;AAAA,IACf;AACA,QAAI,MAAM,sBAAsB,IAAI;AAAA,EACtC,GAAG,MAAM;AACX;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,740 +0,0 @@
|
|||||||
import {
|
|
||||||
layout
|
|
||||||
} from "./chunk-YUMEK5VY.js";
|
|
||||||
import {
|
|
||||||
Graph
|
|
||||||
} from "./chunk-MEGNL3BT.js";
|
|
||||||
import {
|
|
||||||
clone_default,
|
|
||||||
isUndefined_default,
|
|
||||||
map_default
|
|
||||||
} from "./chunk-6SIVX7OU.js";
|
|
||||||
import {
|
|
||||||
clear as clear3,
|
|
||||||
insertEdge,
|
|
||||||
insertEdgeLabel,
|
|
||||||
markers_default,
|
|
||||||
positionEdgeLabel
|
|
||||||
} from "./chunk-HICR2YSH.js";
|
|
||||||
import {
|
|
||||||
clear,
|
|
||||||
clear2,
|
|
||||||
insertCluster,
|
|
||||||
insertNode,
|
|
||||||
positionNode,
|
|
||||||
setNodeElem,
|
|
||||||
updateNodeBounds
|
|
||||||
} from "./chunk-JJ4TL56I.js";
|
|
||||||
import "./chunk-2HSIUWWJ.js";
|
|
||||||
import {
|
|
||||||
getSubGraphTitleMargins
|
|
||||||
} from "./chunk-EUUYHBKV.js";
|
|
||||||
import "./chunk-FTTOYZOY.js";
|
|
||||||
import "./chunk-NMWDZEZO.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
getConfig2
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__spreadProps,
|
|
||||||
__spreadValues
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/dagre-d3-es/src/graphlib/json.js
|
|
||||||
function write(g) {
|
|
||||||
var json = {
|
|
||||||
options: {
|
|
||||||
directed: g.isDirected(),
|
|
||||||
multigraph: g.isMultigraph(),
|
|
||||||
compound: g.isCompound()
|
|
||||||
},
|
|
||||||
nodes: writeNodes(g),
|
|
||||||
edges: writeEdges(g)
|
|
||||||
};
|
|
||||||
if (!isUndefined_default(g.graph())) {
|
|
||||||
json.value = clone_default(g.graph());
|
|
||||||
}
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
function writeNodes(g) {
|
|
||||||
return map_default(g.nodes(), function(v) {
|
|
||||||
var nodeValue = g.node(v);
|
|
||||||
var parent = g.parent(v);
|
|
||||||
var node = { v };
|
|
||||||
if (!isUndefined_default(nodeValue)) {
|
|
||||||
node.value = nodeValue;
|
|
||||||
}
|
|
||||||
if (!isUndefined_default(parent)) {
|
|
||||||
node.parent = parent;
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function writeEdges(g) {
|
|
||||||
return map_default(g.edges(), function(e) {
|
|
||||||
var edgeValue = g.edge(e);
|
|
||||||
var edge = { v: e.v, w: e.w };
|
|
||||||
if (!isUndefined_default(e.name)) {
|
|
||||||
edge.name = e.name;
|
|
||||||
}
|
|
||||||
if (!isUndefined_default(edgeValue)) {
|
|
||||||
edge.value = edgeValue;
|
|
||||||
}
|
|
||||||
return edge;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/dagre-6UL2VRFP.mjs
|
|
||||||
var clusterDb = /* @__PURE__ */ new Map();
|
|
||||||
var descendants = /* @__PURE__ */ new Map();
|
|
||||||
var parents = /* @__PURE__ */ new Map();
|
|
||||||
var clear4 = __name(() => {
|
|
||||||
descendants.clear();
|
|
||||||
parents.clear();
|
|
||||||
clusterDb.clear();
|
|
||||||
}, "clear");
|
|
||||||
var isDescendant = __name((id, ancestorId) => {
|
|
||||||
const ancestorDescendants = descendants.get(ancestorId) || [];
|
|
||||||
log.trace("In isDescendant", ancestorId, " ", id, " = ", ancestorDescendants.includes(id));
|
|
||||||
return ancestorDescendants.includes(id);
|
|
||||||
}, "isDescendant");
|
|
||||||
var edgeInCluster = __name((edge, clusterId) => {
|
|
||||||
const clusterDescendants = descendants.get(clusterId) || [];
|
|
||||||
log.info("Descendants of ", clusterId, " is ", clusterDescendants);
|
|
||||||
log.info("Edge is ", edge);
|
|
||||||
if (edge.v === clusterId || edge.w === clusterId) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!clusterDescendants) {
|
|
||||||
log.debug("Tilt, ", clusterId, ",not in descendants");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return clusterDescendants.includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || clusterDescendants.includes(edge.w);
|
|
||||||
}, "edgeInCluster");
|
|
||||||
var copy = __name((clusterId, graph, newGraph, rootId) => {
|
|
||||||
log.warn(
|
|
||||||
"Copying children of ",
|
|
||||||
clusterId,
|
|
||||||
"root",
|
|
||||||
rootId,
|
|
||||||
"data",
|
|
||||||
graph.node(clusterId),
|
|
||||||
rootId
|
|
||||||
);
|
|
||||||
const nodes = graph.children(clusterId) || [];
|
|
||||||
if (clusterId !== rootId) {
|
|
||||||
nodes.push(clusterId);
|
|
||||||
}
|
|
||||||
log.warn("Copying (nodes) clusterId", clusterId, "nodes", nodes);
|
|
||||||
nodes.forEach((node) => {
|
|
||||||
if (graph.children(node).length > 0) {
|
|
||||||
copy(node, graph, newGraph, rootId);
|
|
||||||
} else {
|
|
||||||
const data = graph.node(node);
|
|
||||||
log.info("cp ", node, " to ", rootId, " with parent ", clusterId);
|
|
||||||
newGraph.setNode(node, data);
|
|
||||||
if (rootId !== graph.parent(node)) {
|
|
||||||
log.warn("Setting parent", node, graph.parent(node));
|
|
||||||
newGraph.setParent(node, graph.parent(node));
|
|
||||||
}
|
|
||||||
if (clusterId !== rootId && node !== clusterId) {
|
|
||||||
log.debug("Setting parent", node, clusterId);
|
|
||||||
newGraph.setParent(node, clusterId);
|
|
||||||
} else {
|
|
||||||
log.info("In copy ", clusterId, "root", rootId, "data", graph.node(clusterId), rootId);
|
|
||||||
log.debug(
|
|
||||||
"Not Setting parent for node=",
|
|
||||||
node,
|
|
||||||
"cluster!==rootId",
|
|
||||||
clusterId !== rootId,
|
|
||||||
"node!==clusterId",
|
|
||||||
node !== clusterId
|
|
||||||
);
|
|
||||||
}
|
|
||||||
const edges = graph.edges(node);
|
|
||||||
log.debug("Copying Edges", edges);
|
|
||||||
edges.forEach((edge) => {
|
|
||||||
log.info("Edge", edge);
|
|
||||||
const data2 = graph.edge(edge.v, edge.w, edge.name);
|
|
||||||
log.info("Edge data", data2, rootId);
|
|
||||||
try {
|
|
||||||
if (edgeInCluster(edge, rootId)) {
|
|
||||||
log.info("Copying as ", edge.v, edge.w, data2, edge.name);
|
|
||||||
newGraph.setEdge(edge.v, edge.w, data2, edge.name);
|
|
||||||
log.info("newGraph edges ", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));
|
|
||||||
} else {
|
|
||||||
log.info(
|
|
||||||
"Skipping copy of edge ",
|
|
||||||
edge.v,
|
|
||||||
"-->",
|
|
||||||
edge.w,
|
|
||||||
" rootId: ",
|
|
||||||
rootId,
|
|
||||||
" clusterId:",
|
|
||||||
clusterId
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
log.error(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
log.debug("Removing node", node);
|
|
||||||
graph.removeNode(node);
|
|
||||||
});
|
|
||||||
}, "copy");
|
|
||||||
var extractDescendants = __name((id, graph) => {
|
|
||||||
const children = graph.children(id);
|
|
||||||
let res = [...children];
|
|
||||||
for (const child of children) {
|
|
||||||
parents.set(child, id);
|
|
||||||
res = [...res, ...extractDescendants(child, graph)];
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}, "extractDescendants");
|
|
||||||
var findCommonEdges = __name((graph, id1, id2) => {
|
|
||||||
const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1);
|
|
||||||
const edges2 = graph.edges().filter((edge) => edge.v === id2 || edge.w === id2);
|
|
||||||
const edges1Prim = edges1.map((edge) => {
|
|
||||||
return { v: edge.v === id1 ? id2 : edge.v, w: edge.w === id1 ? id1 : edge.w };
|
|
||||||
});
|
|
||||||
const edges2Prim = edges2.map((edge) => {
|
|
||||||
return { v: edge.v, w: edge.w };
|
|
||||||
});
|
|
||||||
const result = edges1Prim.filter((edgeIn1) => {
|
|
||||||
return edges2Prim.some((edge) => edgeIn1.v === edge.v && edgeIn1.w === edge.w);
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
}, "findCommonEdges");
|
|
||||||
var findNonClusterChild = __name((id, graph, clusterId) => {
|
|
||||||
const children = graph.children(id);
|
|
||||||
log.trace("Searching children of id ", id, children);
|
|
||||||
if (children.length < 1) {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
let reserve;
|
|
||||||
for (const child of children) {
|
|
||||||
const _id = findNonClusterChild(child, graph, clusterId);
|
|
||||||
const commonEdges = findCommonEdges(graph, clusterId, _id);
|
|
||||||
if (_id) {
|
|
||||||
if (commonEdges.length > 0) {
|
|
||||||
reserve = _id;
|
|
||||||
} else {
|
|
||||||
return _id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return reserve;
|
|
||||||
}, "findNonClusterChild");
|
|
||||||
var getAnchorId = __name((id) => {
|
|
||||||
if (!clusterDb.has(id)) {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
if (!clusterDb.get(id).externalConnections) {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
if (clusterDb.has(id)) {
|
|
||||||
return clusterDb.get(id).id;
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}, "getAnchorId");
|
|
||||||
var adjustClustersAndEdges = __name((graph, depth) => {
|
|
||||||
if (!graph || depth > 10) {
|
|
||||||
log.debug("Opting out, no graph ");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
log.debug("Opting in, graph ");
|
|
||||||
}
|
|
||||||
graph.nodes().forEach(function(id) {
|
|
||||||
const children = graph.children(id);
|
|
||||||
if (children.length > 0) {
|
|
||||||
log.warn(
|
|
||||||
"Cluster identified",
|
|
||||||
id,
|
|
||||||
" Replacement id in edges: ",
|
|
||||||
findNonClusterChild(id, graph, id)
|
|
||||||
);
|
|
||||||
descendants.set(id, extractDescendants(id, graph));
|
|
||||||
clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
graph.nodes().forEach(function(id) {
|
|
||||||
const children = graph.children(id);
|
|
||||||
const edges = graph.edges();
|
|
||||||
if (children.length > 0) {
|
|
||||||
log.debug("Cluster identified", id, descendants);
|
|
||||||
edges.forEach((edge) => {
|
|
||||||
const d1 = isDescendant(edge.v, id);
|
|
||||||
const d2 = isDescendant(edge.w, id);
|
|
||||||
if (d1 ^ d2) {
|
|
||||||
log.warn("Edge: ", edge, " leaves cluster ", id);
|
|
||||||
log.warn("Descendants of XXX ", id, ": ", descendants.get(id));
|
|
||||||
clusterDb.get(id).externalConnections = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
log.debug("Not a cluster ", id, descendants);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
for (let id of clusterDb.keys()) {
|
|
||||||
const nonClusterChild = clusterDb.get(id).id;
|
|
||||||
const parent = graph.parent(nonClusterChild);
|
|
||||||
if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) {
|
|
||||||
clusterDb.get(id).id = parent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
graph.edges().forEach(function(e) {
|
|
||||||
const edge = graph.edge(e);
|
|
||||||
log.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
|
|
||||||
log.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(graph.edge(e)));
|
|
||||||
let v = e.v;
|
|
||||||
let w = e.w;
|
|
||||||
log.warn(
|
|
||||||
"Fix XXX",
|
|
||||||
clusterDb,
|
|
||||||
"ids:",
|
|
||||||
e.v,
|
|
||||||
e.w,
|
|
||||||
"Translating: ",
|
|
||||||
clusterDb.get(e.v),
|
|
||||||
" --- ",
|
|
||||||
clusterDb.get(e.w)
|
|
||||||
);
|
|
||||||
if (clusterDb.get(e.v) || clusterDb.get(e.w)) {
|
|
||||||
log.warn("Fixing and trying - removing XXX", e.v, e.w, e.name);
|
|
||||||
v = getAnchorId(e.v);
|
|
||||||
w = getAnchorId(e.w);
|
|
||||||
graph.removeEdge(e.v, e.w, e.name);
|
|
||||||
if (v !== e.v) {
|
|
||||||
const parent = graph.parent(v);
|
|
||||||
clusterDb.get(parent).externalConnections = true;
|
|
||||||
edge.fromCluster = e.v;
|
|
||||||
}
|
|
||||||
if (w !== e.w) {
|
|
||||||
const parent = graph.parent(w);
|
|
||||||
clusterDb.get(parent).externalConnections = true;
|
|
||||||
edge.toCluster = e.w;
|
|
||||||
}
|
|
||||||
log.warn("Fix Replacing with XXX", v, w, e.name);
|
|
||||||
graph.setEdge(v, w, edge, e.name);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
log.warn("Adjusted Graph", write(graph));
|
|
||||||
extractor(graph, 0);
|
|
||||||
log.trace(clusterDb);
|
|
||||||
}, "adjustClustersAndEdges");
|
|
||||||
var extractor = __name((graph, depth) => {
|
|
||||||
log.warn("extractor - ", depth, write(graph), graph.children("D"));
|
|
||||||
if (depth > 10) {
|
|
||||||
log.error("Bailing out");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let nodes = graph.nodes();
|
|
||||||
let hasChildren = false;
|
|
||||||
for (const node of nodes) {
|
|
||||||
const children = graph.children(node);
|
|
||||||
hasChildren = hasChildren || children.length > 0;
|
|
||||||
}
|
|
||||||
if (!hasChildren) {
|
|
||||||
log.debug("Done, no node has children", graph.nodes());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
log.debug("Nodes = ", nodes, depth);
|
|
||||||
for (const node of nodes) {
|
|
||||||
log.debug(
|
|
||||||
"Extracting node",
|
|
||||||
node,
|
|
||||||
clusterDb,
|
|
||||||
clusterDb.has(node) && !clusterDb.get(node).externalConnections,
|
|
||||||
!graph.parent(node),
|
|
||||||
graph.node(node),
|
|
||||||
graph.children("D"),
|
|
||||||
" Depth ",
|
|
||||||
depth
|
|
||||||
);
|
|
||||||
if (!clusterDb.has(node)) {
|
|
||||||
log.debug("Not a cluster", node, depth);
|
|
||||||
} else if (!clusterDb.get(node).externalConnections && graph.children(node) && graph.children(node).length > 0) {
|
|
||||||
log.warn(
|
|
||||||
"Cluster without external connections, without a parent and with children",
|
|
||||||
node,
|
|
||||||
depth
|
|
||||||
);
|
|
||||||
const graphSettings = graph.graph();
|
|
||||||
let dir = graphSettings.rankdir === "TB" ? "LR" : "TB";
|
|
||||||
if (clusterDb.get(node)?.clusterData?.dir) {
|
|
||||||
dir = clusterDb.get(node).clusterData.dir;
|
|
||||||
log.warn("Fixing dir", clusterDb.get(node).clusterData.dir, dir);
|
|
||||||
}
|
|
||||||
const clusterGraph = new Graph({
|
|
||||||
multigraph: true,
|
|
||||||
compound: true
|
|
||||||
}).setGraph({
|
|
||||||
rankdir: dir,
|
|
||||||
nodesep: 50,
|
|
||||||
ranksep: 50,
|
|
||||||
marginx: 8,
|
|
||||||
marginy: 8
|
|
||||||
}).setDefaultEdgeLabel(function() {
|
|
||||||
return {};
|
|
||||||
});
|
|
||||||
log.warn("Old graph before copy", write(graph));
|
|
||||||
copy(node, graph, clusterGraph, node);
|
|
||||||
graph.setNode(node, {
|
|
||||||
clusterNode: true,
|
|
||||||
id: node,
|
|
||||||
clusterData: clusterDb.get(node).clusterData,
|
|
||||||
label: clusterDb.get(node).label,
|
|
||||||
graph: clusterGraph
|
|
||||||
});
|
|
||||||
log.warn("New graph after copy node: (", node, ")", write(clusterGraph));
|
|
||||||
log.debug("Old graph after copy", write(graph));
|
|
||||||
} else {
|
|
||||||
log.warn(
|
|
||||||
"Cluster ** ",
|
|
||||||
node,
|
|
||||||
" **not meeting the criteria !externalConnections:",
|
|
||||||
!clusterDb.get(node).externalConnections,
|
|
||||||
" no parent: ",
|
|
||||||
!graph.parent(node),
|
|
||||||
" children ",
|
|
||||||
graph.children(node) && graph.children(node).length > 0,
|
|
||||||
graph.children("D"),
|
|
||||||
depth
|
|
||||||
);
|
|
||||||
log.debug(clusterDb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
nodes = graph.nodes();
|
|
||||||
log.warn("New list of nodes", nodes);
|
|
||||||
for (const node of nodes) {
|
|
||||||
const data = graph.node(node);
|
|
||||||
log.warn(" Now next level", node, data);
|
|
||||||
if (data?.clusterNode) {
|
|
||||||
extractor(data.graph, depth + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, "extractor");
|
|
||||||
var sorter = __name((graph, nodes) => {
|
|
||||||
if (nodes.length === 0) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
let result = Object.assign([], nodes);
|
|
||||||
nodes.forEach((node) => {
|
|
||||||
const children = graph.children(node);
|
|
||||||
const sorted = sorter(graph, children);
|
|
||||||
result = [...result, ...sorted];
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
}, "sorter");
|
|
||||||
var sortNodesByHierarchy = __name((graph) => sorter(graph, graph.children()), "sortNodesByHierarchy");
|
|
||||||
var recursiveRender = __name(async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {
|
|
||||||
log.warn("Graph in recursive render:XAX", write(graph), parentCluster);
|
|
||||||
const dir = graph.graph().rankdir;
|
|
||||||
log.trace("Dir in recursive render - dir:", dir);
|
|
||||||
const elem = _elem.insert("g").attr("class", "root");
|
|
||||||
if (!graph.nodes()) {
|
|
||||||
log.info("No nodes found for", graph);
|
|
||||||
} else {
|
|
||||||
log.info("Recursive render XXX", graph.nodes());
|
|
||||||
}
|
|
||||||
if (graph.edges().length > 0) {
|
|
||||||
log.info("Recursive edges", graph.edge(graph.edges()[0]));
|
|
||||||
}
|
|
||||||
const clusters = elem.insert("g").attr("class", "clusters");
|
|
||||||
const edgePaths = elem.insert("g").attr("class", "edgePaths");
|
|
||||||
const edgeLabels = elem.insert("g").attr("class", "edgeLabels");
|
|
||||||
const nodes = elem.insert("g").attr("class", "nodes");
|
|
||||||
await Promise.all(
|
|
||||||
graph.nodes().map(async function(v) {
|
|
||||||
const node = graph.node(v);
|
|
||||||
if (parentCluster !== void 0) {
|
|
||||||
const data = JSON.parse(JSON.stringify(parentCluster.clusterData));
|
|
||||||
log.trace(
|
|
||||||
"Setting data for parent cluster XXX\n Node.id = ",
|
|
||||||
v,
|
|
||||||
"\n data=",
|
|
||||||
data.height,
|
|
||||||
"\nParent cluster",
|
|
||||||
parentCluster.height
|
|
||||||
);
|
|
||||||
graph.setNode(parentCluster.id, data);
|
|
||||||
if (!graph.parent(v)) {
|
|
||||||
log.trace("Setting parent", v, parentCluster.id);
|
|
||||||
graph.setParent(v, parentCluster.id, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("(Insert) Node XXX" + v + ": " + JSON.stringify(graph.node(v)));
|
|
||||||
if (node?.clusterNode) {
|
|
||||||
log.info("Cluster identified XBX", v, node.width, graph.node(v));
|
|
||||||
const { ranksep, nodesep } = graph.graph();
|
|
||||||
node.graph.setGraph(__spreadProps(__spreadValues({}, node.graph.graph()), {
|
|
||||||
ranksep: ranksep + 25,
|
|
||||||
nodesep
|
|
||||||
}));
|
|
||||||
const o = await recursiveRender(
|
|
||||||
nodes,
|
|
||||||
node.graph,
|
|
||||||
diagramType,
|
|
||||||
id,
|
|
||||||
graph.node(v),
|
|
||||||
siteConfig
|
|
||||||
);
|
|
||||||
const newEl = o.elem;
|
|
||||||
updateNodeBounds(node, newEl);
|
|
||||||
node.diff = o.diff || 0;
|
|
||||||
log.info(
|
|
||||||
"New compound node after recursive render XAX",
|
|
||||||
v,
|
|
||||||
"width",
|
|
||||||
// node,
|
|
||||||
node.width,
|
|
||||||
"height",
|
|
||||||
node.height
|
|
||||||
// node.x,
|
|
||||||
// node.y
|
|
||||||
);
|
|
||||||
setNodeElem(newEl, node);
|
|
||||||
} else {
|
|
||||||
if (graph.children(v).length > 0) {
|
|
||||||
log.trace(
|
|
||||||
"Cluster - the non recursive path XBX",
|
|
||||||
v,
|
|
||||||
node.id,
|
|
||||||
node,
|
|
||||||
node.width,
|
|
||||||
"Graph:",
|
|
||||||
graph
|
|
||||||
);
|
|
||||||
log.trace(findNonClusterChild(node.id, graph));
|
|
||||||
clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });
|
|
||||||
} else {
|
|
||||||
log.trace("Node - the non recursive path XAX", v, nodes, graph.node(v), dir);
|
|
||||||
await insertNode(nodes, graph.node(v), { config: siteConfig, dir });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
const processEdges = __name(async () => {
|
|
||||||
const edgePromises = graph.edges().map(async function(e) {
|
|
||||||
const edge = graph.edge(e.v, e.w, e.name);
|
|
||||||
log.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
|
|
||||||
log.info("Edge " + e.v + " -> " + e.w + ": ", e, " ", JSON.stringify(graph.edge(e)));
|
|
||||||
log.info(
|
|
||||||
"Fix",
|
|
||||||
clusterDb,
|
|
||||||
"ids:",
|
|
||||||
e.v,
|
|
||||||
e.w,
|
|
||||||
"Translating: ",
|
|
||||||
clusterDb.get(e.v),
|
|
||||||
clusterDb.get(e.w)
|
|
||||||
);
|
|
||||||
await insertEdgeLabel(edgeLabels, edge);
|
|
||||||
});
|
|
||||||
await Promise.all(edgePromises);
|
|
||||||
}, "processEdges");
|
|
||||||
await processEdges();
|
|
||||||
log.info("Graph before layout:", JSON.stringify(write(graph)));
|
|
||||||
log.info("############################################# XXX");
|
|
||||||
log.info("### Layout ### XXX");
|
|
||||||
log.info("############################################# XXX");
|
|
||||||
layout(graph);
|
|
||||||
log.info("Graph after layout:", JSON.stringify(write(graph)));
|
|
||||||
let diff = 0;
|
|
||||||
let { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
|
|
||||||
await Promise.all(
|
|
||||||
sortNodesByHierarchy(graph).map(async function(v) {
|
|
||||||
const node = graph.node(v);
|
|
||||||
log.info(
|
|
||||||
"Position XBX => " + v + ": (" + node.x,
|
|
||||||
"," + node.y,
|
|
||||||
") width: ",
|
|
||||||
node.width,
|
|
||||||
" height: ",
|
|
||||||
node.height
|
|
||||||
);
|
|
||||||
if (node?.clusterNode) {
|
|
||||||
node.y += subGraphTitleTotalMargin;
|
|
||||||
log.info(
|
|
||||||
"A tainted cluster node XBX1",
|
|
||||||
v,
|
|
||||||
node.id,
|
|
||||||
node.width,
|
|
||||||
node.height,
|
|
||||||
node.x,
|
|
||||||
node.y,
|
|
||||||
graph.parent(v)
|
|
||||||
);
|
|
||||||
clusterDb.get(node.id).node = node;
|
|
||||||
positionNode(node);
|
|
||||||
} else {
|
|
||||||
if (graph.children(v).length > 0) {
|
|
||||||
log.info(
|
|
||||||
"A pure cluster node XBX1",
|
|
||||||
v,
|
|
||||||
node.id,
|
|
||||||
node.x,
|
|
||||||
node.y,
|
|
||||||
node.width,
|
|
||||||
node.height,
|
|
||||||
graph.parent(v)
|
|
||||||
);
|
|
||||||
node.height += subGraphTitleTotalMargin;
|
|
||||||
graph.node(node.parentId);
|
|
||||||
const halfPadding = node?.padding / 2 || 0;
|
|
||||||
const labelHeight = node?.labelBBox?.height || 0;
|
|
||||||
const offsetY = labelHeight - halfPadding || 0;
|
|
||||||
log.debug("OffsetY", offsetY, "labelHeight", labelHeight, "halfPadding", halfPadding);
|
|
||||||
await insertCluster(clusters, node);
|
|
||||||
clusterDb.get(node.id).node = node;
|
|
||||||
} else {
|
|
||||||
const parent = graph.node(node.parentId);
|
|
||||||
node.y += subGraphTitleTotalMargin / 2;
|
|
||||||
log.info(
|
|
||||||
"A regular node XBX1 - using the padding",
|
|
||||||
node.id,
|
|
||||||
"parent",
|
|
||||||
node.parentId,
|
|
||||||
node.width,
|
|
||||||
node.height,
|
|
||||||
node.x,
|
|
||||||
node.y,
|
|
||||||
"offsetY",
|
|
||||||
node.offsetY,
|
|
||||||
"parent",
|
|
||||||
parent,
|
|
||||||
parent?.offsetY,
|
|
||||||
node
|
|
||||||
);
|
|
||||||
positionNode(node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
graph.edges().forEach(function(e) {
|
|
||||||
const edge = graph.edge(e);
|
|
||||||
log.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(edge), edge);
|
|
||||||
edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);
|
|
||||||
const startNode = graph.node(e.v);
|
|
||||||
var endNode = graph.node(e.w);
|
|
||||||
const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);
|
|
||||||
positionEdgeLabel(edge, paths);
|
|
||||||
});
|
|
||||||
graph.nodes().forEach(function(v) {
|
|
||||||
const n = graph.node(v);
|
|
||||||
log.info(v, n.type, n.diff);
|
|
||||||
if (n.isGroup) {
|
|
||||||
diff = n.diff;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
log.warn("Returning from recursive render XAX", elem, diff);
|
|
||||||
return { elem, diff };
|
|
||||||
}, "recursiveRender");
|
|
||||||
var render = __name(async (data4Layout, svg) => {
|
|
||||||
const graph = new Graph({
|
|
||||||
multigraph: true,
|
|
||||||
compound: true
|
|
||||||
}).setGraph({
|
|
||||||
rankdir: data4Layout.direction,
|
|
||||||
nodesep: data4Layout.config?.nodeSpacing || data4Layout.config?.flowchart?.nodeSpacing || data4Layout.nodeSpacing,
|
|
||||||
ranksep: data4Layout.config?.rankSpacing || data4Layout.config?.flowchart?.rankSpacing || data4Layout.rankSpacing,
|
|
||||||
marginx: 8,
|
|
||||||
marginy: 8
|
|
||||||
}).setDefaultEdgeLabel(function() {
|
|
||||||
return {};
|
|
||||||
});
|
|
||||||
const element = svg.select("g");
|
|
||||||
markers_default(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);
|
|
||||||
clear2();
|
|
||||||
clear3();
|
|
||||||
clear();
|
|
||||||
clear4();
|
|
||||||
data4Layout.nodes.forEach((node) => {
|
|
||||||
graph.setNode(node.id, __spreadValues({}, node));
|
|
||||||
if (node.parentId) {
|
|
||||||
graph.setParent(node.id, node.parentId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
log.debug("Edges:", data4Layout.edges);
|
|
||||||
data4Layout.edges.forEach((edge) => {
|
|
||||||
if (edge.start === edge.end) {
|
|
||||||
const nodeId = edge.start;
|
|
||||||
const specialId1 = nodeId + "---" + nodeId + "---1";
|
|
||||||
const specialId2 = nodeId + "---" + nodeId + "---2";
|
|
||||||
const node = graph.node(nodeId);
|
|
||||||
graph.setNode(specialId1, {
|
|
||||||
domId: specialId1,
|
|
||||||
id: specialId1,
|
|
||||||
parentId: node.parentId,
|
|
||||||
labelStyle: "",
|
|
||||||
label: "",
|
|
||||||
padding: 0,
|
|
||||||
shape: "labelRect",
|
|
||||||
// shape: 'rect',
|
|
||||||
style: "",
|
|
||||||
width: 10,
|
|
||||||
height: 10
|
|
||||||
});
|
|
||||||
graph.setParent(specialId1, node.parentId);
|
|
||||||
graph.setNode(specialId2, {
|
|
||||||
domId: specialId2,
|
|
||||||
id: specialId2,
|
|
||||||
parentId: node.parentId,
|
|
||||||
labelStyle: "",
|
|
||||||
padding: 0,
|
|
||||||
// shape: 'rect',
|
|
||||||
shape: "labelRect",
|
|
||||||
label: "",
|
|
||||||
style: "",
|
|
||||||
width: 10,
|
|
||||||
height: 10
|
|
||||||
});
|
|
||||||
graph.setParent(specialId2, node.parentId);
|
|
||||||
const edge1 = structuredClone(edge);
|
|
||||||
const edgeMid = structuredClone(edge);
|
|
||||||
const edge2 = structuredClone(edge);
|
|
||||||
edge1.label = "";
|
|
||||||
edge1.arrowTypeEnd = "none";
|
|
||||||
edge1.id = nodeId + "-cyclic-special-1";
|
|
||||||
edgeMid.arrowTypeStart = "none";
|
|
||||||
edgeMid.arrowTypeEnd = "none";
|
|
||||||
edgeMid.id = nodeId + "-cyclic-special-mid";
|
|
||||||
edge2.label = "";
|
|
||||||
if (node.isGroup) {
|
|
||||||
edge1.fromCluster = nodeId;
|
|
||||||
edge2.toCluster = nodeId;
|
|
||||||
}
|
|
||||||
edge2.id = nodeId + "-cyclic-special-2";
|
|
||||||
edge2.arrowTypeStart = "none";
|
|
||||||
graph.setEdge(nodeId, specialId1, edge1, nodeId + "-cyclic-special-0");
|
|
||||||
graph.setEdge(specialId1, specialId2, edgeMid, nodeId + "-cyclic-special-1");
|
|
||||||
graph.setEdge(specialId2, nodeId, edge2, nodeId + "-cyc<lic-special-2");
|
|
||||||
} else {
|
|
||||||
graph.setEdge(edge.start, edge.end, __spreadValues({}, edge), edge.id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
log.warn("Graph at first:", JSON.stringify(write(graph)));
|
|
||||||
adjustClustersAndEdges(graph);
|
|
||||||
log.warn("Graph after XAX:", JSON.stringify(write(graph)));
|
|
||||||
const siteConfig = getConfig2();
|
|
||||||
await recursiveRender(
|
|
||||||
element,
|
|
||||||
graph,
|
|
||||||
data4Layout.type,
|
|
||||||
data4Layout.diagramId,
|
|
||||||
void 0,
|
|
||||||
siteConfig
|
|
||||||
);
|
|
||||||
}, "render");
|
|
||||||
export {
|
|
||||||
render
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=dagre-6UL2VRFP-RIOSZDA4.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,569 +0,0 @@
|
|||||||
import {
|
|
||||||
populateCommonDb
|
|
||||||
} from "./chunk-PNW5KFH4.js";
|
|
||||||
import {
|
|
||||||
parse
|
|
||||||
} from "./chunk-VGVCR5QM.js";
|
|
||||||
import "./chunk-5SXTVVUG.js";
|
|
||||||
import {
|
|
||||||
setupViewPortForSVG
|
|
||||||
} from "./chunk-LHH5RO5K.js";
|
|
||||||
import "./chunk-BUI4I457.js";
|
|
||||||
import "./chunk-CHJ5BV6S.js";
|
|
||||||
import "./chunk-XP22GJHQ.js";
|
|
||||||
import "./chunk-NYZY7JGI.js";
|
|
||||||
import "./chunk-FNEVJCCX.js";
|
|
||||||
import "./chunk-R33GOAXK.js";
|
|
||||||
import "./chunk-WHHJWK6B.js";
|
|
||||||
import {
|
|
||||||
selectSvgElement
|
|
||||||
} from "./chunk-B5NQPFQG.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import {
|
|
||||||
isLabelStyle,
|
|
||||||
styles2String
|
|
||||||
} from "./chunk-FTTOYZOY.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
cleanAndMerge
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
clear,
|
|
||||||
configureSvgSize,
|
|
||||||
defaultConfig_default,
|
|
||||||
getAccDescription,
|
|
||||||
getAccTitle,
|
|
||||||
getConfig,
|
|
||||||
getDiagramTitle,
|
|
||||||
setAccDescription,
|
|
||||||
setAccTitle,
|
|
||||||
setDiagramTitle
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
format,
|
|
||||||
hierarchy,
|
|
||||||
log,
|
|
||||||
ordinal,
|
|
||||||
select_default,
|
|
||||||
treemap_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__spreadValues
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/diagram-PSM6KHXK.mjs
|
|
||||||
var _a;
|
|
||||||
var TreeMapDB = (_a = class {
|
|
||||||
constructor() {
|
|
||||||
this.nodes = [];
|
|
||||||
this.levels = /* @__PURE__ */ new Map();
|
|
||||||
this.outerNodes = [];
|
|
||||||
this.classes = /* @__PURE__ */ new Map();
|
|
||||||
this.setAccTitle = setAccTitle;
|
|
||||||
this.getAccTitle = getAccTitle;
|
|
||||||
this.setDiagramTitle = setDiagramTitle;
|
|
||||||
this.getDiagramTitle = getDiagramTitle;
|
|
||||||
this.getAccDescription = getAccDescription;
|
|
||||||
this.setAccDescription = setAccDescription;
|
|
||||||
}
|
|
||||||
getNodes() {
|
|
||||||
return this.nodes;
|
|
||||||
}
|
|
||||||
getConfig() {
|
|
||||||
const defaultConfig = defaultConfig_default;
|
|
||||||
const userConfig = getConfig();
|
|
||||||
return cleanAndMerge(__spreadValues(__spreadValues({}, defaultConfig.treemap), userConfig.treemap ?? {}));
|
|
||||||
}
|
|
||||||
addNode(node, level) {
|
|
||||||
this.nodes.push(node);
|
|
||||||
this.levels.set(node, level);
|
|
||||||
if (level === 0) {
|
|
||||||
this.outerNodes.push(node);
|
|
||||||
this.root ??= node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getRoot() {
|
|
||||||
return { name: "", children: this.outerNodes };
|
|
||||||
}
|
|
||||||
addClass(id, _style) {
|
|
||||||
const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };
|
|
||||||
const styles = _style.replace(/\\,/g, "§§§").replace(/,/g, ";").replace(/§§§/g, ",").split(";");
|
|
||||||
if (styles) {
|
|
||||||
styles.forEach((s) => {
|
|
||||||
if (isLabelStyle(s)) {
|
|
||||||
if (styleClass?.textStyles) {
|
|
||||||
styleClass.textStyles.push(s);
|
|
||||||
} else {
|
|
||||||
styleClass.textStyles = [s];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (styleClass?.styles) {
|
|
||||||
styleClass.styles.push(s);
|
|
||||||
} else {
|
|
||||||
styleClass.styles = [s];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.classes.set(id, styleClass);
|
|
||||||
}
|
|
||||||
getClasses() {
|
|
||||||
return this.classes;
|
|
||||||
}
|
|
||||||
getStylesForClass(classSelector) {
|
|
||||||
return this.classes.get(classSelector)?.styles ?? [];
|
|
||||||
}
|
|
||||||
clear() {
|
|
||||||
clear();
|
|
||||||
this.nodes = [];
|
|
||||||
this.levels = /* @__PURE__ */ new Map();
|
|
||||||
this.outerNodes = [];
|
|
||||||
this.classes = /* @__PURE__ */ new Map();
|
|
||||||
this.root = void 0;
|
|
||||||
}
|
|
||||||
}, __name(_a, "TreeMapDB"), _a);
|
|
||||||
function buildHierarchy(items) {
|
|
||||||
if (!items.length) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
const root = [];
|
|
||||||
const stack = [];
|
|
||||||
items.forEach((item) => {
|
|
||||||
const node = {
|
|
||||||
name: item.name,
|
|
||||||
children: item.type === "Leaf" ? void 0 : []
|
|
||||||
};
|
|
||||||
node.classSelector = item?.classSelector;
|
|
||||||
if (item?.cssCompiledStyles) {
|
|
||||||
node.cssCompiledStyles = [item.cssCompiledStyles];
|
|
||||||
}
|
|
||||||
if (item.type === "Leaf" && item.value !== void 0) {
|
|
||||||
node.value = item.value;
|
|
||||||
}
|
|
||||||
while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {
|
|
||||||
stack.pop();
|
|
||||||
}
|
|
||||||
if (stack.length === 0) {
|
|
||||||
root.push(node);
|
|
||||||
} else {
|
|
||||||
const parent = stack[stack.length - 1].node;
|
|
||||||
if (parent.children) {
|
|
||||||
parent.children.push(node);
|
|
||||||
} else {
|
|
||||||
parent.children = [node];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (item.type !== "Leaf") {
|
|
||||||
stack.push({ node, level: item.level });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return root;
|
|
||||||
}
|
|
||||||
__name(buildHierarchy, "buildHierarchy");
|
|
||||||
var populate = __name((ast, db) => {
|
|
||||||
populateCommonDb(ast, db);
|
|
||||||
const items = [];
|
|
||||||
for (const row of ast.TreemapRows ?? []) {
|
|
||||||
if (row.$type === "ClassDefStatement") {
|
|
||||||
db.addClass(row.className ?? "", row.styleText ?? "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const row of ast.TreemapRows ?? []) {
|
|
||||||
const item = row.item;
|
|
||||||
if (!item) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const level = row.indent ? parseInt(row.indent) : 0;
|
|
||||||
const name = getItemName(item);
|
|
||||||
const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];
|
|
||||||
const cssCompiledStyles = styles.length > 0 ? styles.join(";") : void 0;
|
|
||||||
const itemData = {
|
|
||||||
level,
|
|
||||||
name,
|
|
||||||
type: item.$type,
|
|
||||||
value: item.value,
|
|
||||||
classSelector: item.classSelector,
|
|
||||||
cssCompiledStyles
|
|
||||||
};
|
|
||||||
items.push(itemData);
|
|
||||||
}
|
|
||||||
const hierarchyNodes = buildHierarchy(items);
|
|
||||||
const addNodesRecursively = __name((nodes, level) => {
|
|
||||||
for (const node of nodes) {
|
|
||||||
db.addNode(node, level);
|
|
||||||
if (node.children && node.children.length > 0) {
|
|
||||||
addNodesRecursively(node.children, level + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, "addNodesRecursively");
|
|
||||||
addNodesRecursively(hierarchyNodes, 0);
|
|
||||||
}, "populate");
|
|
||||||
var getItemName = __name((item) => {
|
|
||||||
return item.name ? String(item.name) : "";
|
|
||||||
}, "getItemName");
|
|
||||||
var parser = {
|
|
||||||
// @ts-expect-error - TreeMapDB is not assignable to DiagramDB
|
|
||||||
parser: { yy: void 0 },
|
|
||||||
parse: __name(async (text) => {
|
|
||||||
try {
|
|
||||||
const parseFunc = parse;
|
|
||||||
const ast = await parseFunc("treemap", text);
|
|
||||||
log.debug("Treemap AST:", ast);
|
|
||||||
const db = parser.parser?.yy;
|
|
||||||
if (!(db instanceof TreeMapDB)) {
|
|
||||||
throw new Error(
|
|
||||||
"parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
populate(ast, db);
|
|
||||||
} catch (error) {
|
|
||||||
log.error("Error parsing treemap:", error);
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}, "parse")
|
|
||||||
};
|
|
||||||
var DEFAULT_INNER_PADDING = 10;
|
|
||||||
var SECTION_INNER_PADDING = 10;
|
|
||||||
var SECTION_HEADER_HEIGHT = 25;
|
|
||||||
var draw = __name((_text, id, _version, diagram2) => {
|
|
||||||
const treemapDb = diagram2.db;
|
|
||||||
const config = treemapDb.getConfig();
|
|
||||||
const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;
|
|
||||||
const title = treemapDb.getDiagramTitle();
|
|
||||||
const root = treemapDb.getRoot();
|
|
||||||
const { themeVariables } = getConfig();
|
|
||||||
if (!root) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const titleHeight = title ? 30 : 0;
|
|
||||||
const svg = selectSvgElement(id);
|
|
||||||
const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;
|
|
||||||
const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;
|
|
||||||
const svgWidth = width;
|
|
||||||
const svgHeight = height + titleHeight;
|
|
||||||
svg.attr("viewBox", `0 0 ${svgWidth} ${svgHeight}`);
|
|
||||||
configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);
|
|
||||||
let valueFormat;
|
|
||||||
try {
|
|
||||||
const formatStr = config.valueFormat || ",";
|
|
||||||
if (formatStr === "$0,0") {
|
|
||||||
valueFormat = __name((value) => "$" + format(",")(value), "valueFormat");
|
|
||||||
} else if (formatStr.startsWith("$") && formatStr.includes(",")) {
|
|
||||||
const precision = /\.\d+/.exec(formatStr);
|
|
||||||
const precisionStr = precision ? precision[0] : "";
|
|
||||||
valueFormat = __name((value) => "$" + format("," + precisionStr)(value), "valueFormat");
|
|
||||||
} else if (formatStr.startsWith("$")) {
|
|
||||||
const restOfFormat = formatStr.substring(1);
|
|
||||||
valueFormat = __name((value) => "$" + format(restOfFormat || "")(value), "valueFormat");
|
|
||||||
} else {
|
|
||||||
valueFormat = format(formatStr);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
log.error("Error creating format function:", error);
|
|
||||||
valueFormat = format(",");
|
|
||||||
}
|
|
||||||
const colorScale = ordinal().range([
|
|
||||||
"transparent",
|
|
||||||
themeVariables.cScale0,
|
|
||||||
themeVariables.cScale1,
|
|
||||||
themeVariables.cScale2,
|
|
||||||
themeVariables.cScale3,
|
|
||||||
themeVariables.cScale4,
|
|
||||||
themeVariables.cScale5,
|
|
||||||
themeVariables.cScale6,
|
|
||||||
themeVariables.cScale7,
|
|
||||||
themeVariables.cScale8,
|
|
||||||
themeVariables.cScale9,
|
|
||||||
themeVariables.cScale10,
|
|
||||||
themeVariables.cScale11
|
|
||||||
]);
|
|
||||||
const colorScalePeer = ordinal().range([
|
|
||||||
"transparent",
|
|
||||||
themeVariables.cScalePeer0,
|
|
||||||
themeVariables.cScalePeer1,
|
|
||||||
themeVariables.cScalePeer2,
|
|
||||||
themeVariables.cScalePeer3,
|
|
||||||
themeVariables.cScalePeer4,
|
|
||||||
themeVariables.cScalePeer5,
|
|
||||||
themeVariables.cScalePeer6,
|
|
||||||
themeVariables.cScalePeer7,
|
|
||||||
themeVariables.cScalePeer8,
|
|
||||||
themeVariables.cScalePeer9,
|
|
||||||
themeVariables.cScalePeer10,
|
|
||||||
themeVariables.cScalePeer11
|
|
||||||
]);
|
|
||||||
const colorScaleLabel = ordinal().range([
|
|
||||||
themeVariables.cScaleLabel0,
|
|
||||||
themeVariables.cScaleLabel1,
|
|
||||||
themeVariables.cScaleLabel2,
|
|
||||||
themeVariables.cScaleLabel3,
|
|
||||||
themeVariables.cScaleLabel4,
|
|
||||||
themeVariables.cScaleLabel5,
|
|
||||||
themeVariables.cScaleLabel6,
|
|
||||||
themeVariables.cScaleLabel7,
|
|
||||||
themeVariables.cScaleLabel8,
|
|
||||||
themeVariables.cScaleLabel9,
|
|
||||||
themeVariables.cScaleLabel10,
|
|
||||||
themeVariables.cScaleLabel11
|
|
||||||
]);
|
|
||||||
if (title) {
|
|
||||||
svg.append("text").attr("x", svgWidth / 2).attr("y", titleHeight / 2).attr("class", "treemapTitle").attr("text-anchor", "middle").attr("dominant-baseline", "middle").text(title);
|
|
||||||
}
|
|
||||||
const g = svg.append("g").attr("transform", `translate(0, ${titleHeight})`).attr("class", "treemapContainer");
|
|
||||||
const hierarchyRoot = hierarchy(root).sum((d) => d.value ?? 0).sort((a, b) => (b.value ?? 0) - (a.value ?? 0));
|
|
||||||
const treemapLayout = treemap_default().size([width, height]).paddingTop(
|
|
||||||
(d) => d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0
|
|
||||||
).paddingInner(treemapInnerPadding).paddingLeft((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingRight((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).paddingBottom((d) => d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0).round(true);
|
|
||||||
const treemapData = treemapLayout(hierarchyRoot);
|
|
||||||
const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);
|
|
||||||
const sections = g.selectAll(".treemapSection").data(branchNodes).enter().append("g").attr("class", "treemapSection").attr("transform", (d) => `translate(${d.x0},${d.y0})`);
|
|
||||||
sections.append("rect").attr("width", (d) => d.x1 - d.x0).attr("height", SECTION_HEADER_HEIGHT).attr("class", "treemapSectionHeader").attr("fill", "none").attr("fill-opacity", 0.6).attr("stroke-width", 0.6).attr("style", (d) => {
|
|
||||||
if (d.depth === 0) {
|
|
||||||
return "display: none;";
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
});
|
|
||||||
sections.append("clipPath").attr("id", (_d, i) => `clip-section-${id}-${i}`).append("rect").attr("width", (d) => Math.max(0, d.x1 - d.x0 - 12)).attr("height", SECTION_HEADER_HEIGHT);
|
|
||||||
sections.append("rect").attr("width", (d) => d.x1 - d.x0).attr("height", (d) => d.y1 - d.y0).attr("class", (_d, i) => {
|
|
||||||
return `treemapSection section${i}`;
|
|
||||||
}).attr("fill", (d) => colorScale(d.data.name)).attr("fill-opacity", 0.6).attr("stroke", (d) => colorScalePeer(d.data.name)).attr("stroke-width", 2).attr("stroke-opacity", 0.4).attr("style", (d) => {
|
|
||||||
if (d.depth === 0) {
|
|
||||||
return "display: none;";
|
|
||||||
}
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return styles.nodeStyles + ";" + styles.borderStyles.join(";");
|
|
||||||
});
|
|
||||||
sections.append("text").attr("class", "treemapSectionLabel").attr("x", 6).attr("y", SECTION_HEADER_HEIGHT / 2).attr("dominant-baseline", "middle").text((d) => d.depth === 0 ? "" : d.data.name).attr("font-weight", "bold").attr("style", (d) => {
|
|
||||||
if (d.depth === 0) {
|
|
||||||
return "display: none;";
|
|
||||||
}
|
|
||||||
const labelStyles = "dominant-baseline: middle; font-size: 12px; fill:" + colorScaleLabel(d.data.name) + "; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;";
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return labelStyles + styles.labelStyles.replace("color:", "fill:");
|
|
||||||
}).each(function(d) {
|
|
||||||
if (d.depth === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const self = select_default(this);
|
|
||||||
const originalText = d.data.name;
|
|
||||||
self.text(originalText);
|
|
||||||
const totalHeaderWidth = d.x1 - d.x0;
|
|
||||||
const labelXPosition = 6;
|
|
||||||
let spaceForTextContent;
|
|
||||||
if (config.showValues !== false && d.value) {
|
|
||||||
const valueEndsAtXRelative = totalHeaderWidth - 10;
|
|
||||||
const estimatedValueTextActualWidth = 30;
|
|
||||||
const gapBetweenLabelAndValue = 10;
|
|
||||||
const labelMustEndBeforeX = valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;
|
|
||||||
spaceForTextContent = labelMustEndBeforeX - labelXPosition;
|
|
||||||
} else {
|
|
||||||
const labelOwnRightPadding = 6;
|
|
||||||
spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;
|
|
||||||
}
|
|
||||||
const minimumWidthToDisplay = 15;
|
|
||||||
const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);
|
|
||||||
const textNode = self.node();
|
|
||||||
const currentTextContentLength = textNode.getComputedTextLength();
|
|
||||||
if (currentTextContentLength > actualAvailableWidth) {
|
|
||||||
const ellipsis = "...";
|
|
||||||
let currentTruncatedText = originalText;
|
|
||||||
while (currentTruncatedText.length > 0) {
|
|
||||||
currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);
|
|
||||||
if (currentTruncatedText.length === 0) {
|
|
||||||
self.text(ellipsis);
|
|
||||||
if (textNode.getComputedTextLength() > actualAvailableWidth) {
|
|
||||||
self.text("");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
self.text(currentTruncatedText + ellipsis);
|
|
||||||
if (textNode.getComputedTextLength() <= actualAvailableWidth) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (config.showValues !== false) {
|
|
||||||
sections.append("text").attr("class", "treemapSectionValue").attr("x", (d) => d.x1 - d.x0 - 10).attr("y", SECTION_HEADER_HEIGHT / 2).attr("text-anchor", "end").attr("dominant-baseline", "middle").text((d) => d.value ? valueFormat(d.value) : "").attr("font-style", "italic").attr("style", (d) => {
|
|
||||||
if (d.depth === 0) {
|
|
||||||
return "display: none;";
|
|
||||||
}
|
|
||||||
const labelStyles = "text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:" + colorScaleLabel(d.data.name) + "; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;";
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return labelStyles + styles.labelStyles.replace("color:", "fill:");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const leafNodes = treemapData.leaves();
|
|
||||||
const cell = g.selectAll(".treemapLeafGroup").data(leafNodes).enter().append("g").attr("class", (d, i) => {
|
|
||||||
return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : ""}x`;
|
|
||||||
}).attr("transform", (d) => `translate(${d.x0},${d.y0})`);
|
|
||||||
cell.append("rect").attr("width", (d) => d.x1 - d.x0).attr("height", (d) => d.y1 - d.y0).attr("class", "treemapLeaf").attr("fill", (d) => {
|
|
||||||
return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);
|
|
||||||
}).attr("style", (d) => {
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return styles.nodeStyles;
|
|
||||||
}).attr("fill-opacity", 0.3).attr("stroke", (d) => {
|
|
||||||
return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);
|
|
||||||
}).attr("stroke-width", 3);
|
|
||||||
cell.append("clipPath").attr("id", (_d, i) => `clip-${id}-${i}`).append("rect").attr("width", (d) => Math.max(0, d.x1 - d.x0 - 4)).attr("height", (d) => Math.max(0, d.y1 - d.y0 - 4));
|
|
||||||
const leafLabels = cell.append("text").attr("class", "treemapLabel").attr("x", (d) => (d.x1 - d.x0) / 2).attr("y", (d) => (d.y1 - d.y0) / 2).attr("style", (d) => {
|
|
||||||
const labelStyles = "text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:" + colorScaleLabel(d.data.name) + ";";
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return labelStyles + styles.labelStyles.replace("color:", "fill:");
|
|
||||||
}).attr("clip-path", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.data.name);
|
|
||||||
leafLabels.each(function(d) {
|
|
||||||
const self = select_default(this);
|
|
||||||
const nodeWidth = d.x1 - d.x0;
|
|
||||||
const nodeHeight = d.y1 - d.y0;
|
|
||||||
const textNode = self.node();
|
|
||||||
const padding = 4;
|
|
||||||
const availableWidth = nodeWidth - 2 * padding;
|
|
||||||
const availableHeight = nodeHeight - 2 * padding;
|
|
||||||
if (availableWidth < 10 || availableHeight < 10) {
|
|
||||||
self.style("display", "none");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let currentLabelFontSize = parseInt(self.style("font-size"), 10);
|
|
||||||
const minLabelFontSize = 8;
|
|
||||||
const originalValueRelFontSize = 28;
|
|
||||||
const valueScaleFactor = 0.6;
|
|
||||||
const minValueFontSize = 6;
|
|
||||||
const spacingBetweenLabelAndValue = 2;
|
|
||||||
while (textNode.getComputedTextLength() > availableWidth && currentLabelFontSize > minLabelFontSize) {
|
|
||||||
currentLabelFontSize--;
|
|
||||||
self.style("font-size", `${currentLabelFontSize}px`);
|
|
||||||
}
|
|
||||||
let prospectiveValueFontSize = Math.max(
|
|
||||||
minValueFontSize,
|
|
||||||
Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))
|
|
||||||
);
|
|
||||||
let combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;
|
|
||||||
while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {
|
|
||||||
currentLabelFontSize--;
|
|
||||||
prospectiveValueFontSize = Math.max(
|
|
||||||
minValueFontSize,
|
|
||||||
Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))
|
|
||||||
);
|
|
||||||
if (prospectiveValueFontSize < minValueFontSize && currentLabelFontSize === minLabelFontSize) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
self.style("font-size", `${currentLabelFontSize}px`);
|
|
||||||
combinedHeight = currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;
|
|
||||||
if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.style("font-size", `${currentLabelFontSize}px`);
|
|
||||||
if (textNode.getComputedTextLength() > availableWidth || currentLabelFontSize < minLabelFontSize || availableHeight < currentLabelFontSize) {
|
|
||||||
self.style("display", "none");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (config.showValues !== false) {
|
|
||||||
const leafValues = cell.append("text").attr("class", "treemapValue").attr("x", (d) => (d.x1 - d.x0) / 2).attr("y", function(d) {
|
|
||||||
return (d.y1 - d.y0) / 2;
|
|
||||||
}).attr("style", (d) => {
|
|
||||||
const labelStyles = "text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:" + colorScaleLabel(d.data.name) + ";";
|
|
||||||
const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles });
|
|
||||||
return labelStyles + styles.labelStyles.replace("color:", "fill:");
|
|
||||||
}).attr("clip-path", (_d, i) => `url(#clip-${id}-${i})`).text((d) => d.value ? valueFormat(d.value) : "");
|
|
||||||
leafValues.each(function(d) {
|
|
||||||
const valueTextElement = select_default(this);
|
|
||||||
const parentCellNode = this.parentNode;
|
|
||||||
if (!parentCellNode) {
|
|
||||||
valueTextElement.style("display", "none");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const labelElement = select_default(parentCellNode).select(".treemapLabel");
|
|
||||||
if (labelElement.empty() || labelElement.style("display") === "none") {
|
|
||||||
valueTextElement.style("display", "none");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const finalLabelFontSize = parseFloat(labelElement.style("font-size"));
|
|
||||||
const originalValueFontSize = 28;
|
|
||||||
const valueScaleFactor = 0.6;
|
|
||||||
const minValueFontSize = 6;
|
|
||||||
const spacingBetweenLabelAndValue = 2;
|
|
||||||
const actualValueFontSize = Math.max(
|
|
||||||
minValueFontSize,
|
|
||||||
Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))
|
|
||||||
);
|
|
||||||
valueTextElement.style("font-size", `${actualValueFontSize}px`);
|
|
||||||
const labelCenterY = (d.y1 - d.y0) / 2;
|
|
||||||
const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;
|
|
||||||
valueTextElement.attr("y", valueTopActualY);
|
|
||||||
const nodeWidth = d.x1 - d.x0;
|
|
||||||
const nodeTotalHeight = d.y1 - d.y0;
|
|
||||||
const cellBottomPadding = 4;
|
|
||||||
const maxValueBottomY = nodeTotalHeight - cellBottomPadding;
|
|
||||||
const availableWidthForValue = nodeWidth - 2 * 4;
|
|
||||||
if (valueTextElement.node().getComputedTextLength() > availableWidthForValue || valueTopActualY + actualValueFontSize > maxValueBottomY || actualValueFontSize < minValueFontSize) {
|
|
||||||
valueTextElement.style("display", "none");
|
|
||||||
} else {
|
|
||||||
valueTextElement.style("display", null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const diagramPadding = config.diagramPadding ?? 8;
|
|
||||||
setupViewPortForSVG(svg, diagramPadding, "flowchart", config?.useMaxWidth || false);
|
|
||||||
}, "draw");
|
|
||||||
var getClasses = __name(function(_text, diagramObj) {
|
|
||||||
return diagramObj.db.getClasses();
|
|
||||||
}, "getClasses");
|
|
||||||
var renderer = { draw, getClasses };
|
|
||||||
var defaultTreemapStyleOptions = {
|
|
||||||
sectionStrokeColor: "black",
|
|
||||||
sectionStrokeWidth: "1",
|
|
||||||
sectionFillColor: "#efefef",
|
|
||||||
leafStrokeColor: "black",
|
|
||||||
leafStrokeWidth: "1",
|
|
||||||
leafFillColor: "#efefef",
|
|
||||||
labelColor: "black",
|
|
||||||
labelFontSize: "12px",
|
|
||||||
valueFontSize: "10px",
|
|
||||||
valueColor: "black",
|
|
||||||
titleColor: "black",
|
|
||||||
titleFontSize: "14px"
|
|
||||||
};
|
|
||||||
var getStyles = __name(({
|
|
||||||
treemap: treemap2
|
|
||||||
} = {}) => {
|
|
||||||
const options = cleanAndMerge(defaultTreemapStyleOptions, treemap2);
|
|
||||||
return `
|
|
||||||
.treemapNode.section {
|
|
||||||
stroke: ${options.sectionStrokeColor};
|
|
||||||
stroke-width: ${options.sectionStrokeWidth};
|
|
||||||
fill: ${options.sectionFillColor};
|
|
||||||
}
|
|
||||||
.treemapNode.leaf {
|
|
||||||
stroke: ${options.leafStrokeColor};
|
|
||||||
stroke-width: ${options.leafStrokeWidth};
|
|
||||||
fill: ${options.leafFillColor};
|
|
||||||
}
|
|
||||||
.treemapLabel {
|
|
||||||
fill: ${options.labelColor};
|
|
||||||
font-size: ${options.labelFontSize};
|
|
||||||
}
|
|
||||||
.treemapValue {
|
|
||||||
fill: ${options.valueColor};
|
|
||||||
font-size: ${options.valueFontSize};
|
|
||||||
}
|
|
||||||
.treemapTitle {
|
|
||||||
fill: ${options.titleColor};
|
|
||||||
font-size: ${options.titleFontSize};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}, "getStyles");
|
|
||||||
var styles_default = getStyles;
|
|
||||||
var diagram = {
|
|
||||||
parser,
|
|
||||||
get db() {
|
|
||||||
return new TreeMapDB();
|
|
||||||
},
|
|
||||||
renderer,
|
|
||||||
styles: styles_default
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=diagram-PSM6KHXK-7CHUIA47.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,340 +0,0 @@
|
|||||||
import {
|
|
||||||
populateCommonDb
|
|
||||||
} from "./chunk-PNW5KFH4.js";
|
|
||||||
import {
|
|
||||||
parse
|
|
||||||
} from "./chunk-VGVCR5QM.js";
|
|
||||||
import "./chunk-5SXTVVUG.js";
|
|
||||||
import "./chunk-BUI4I457.js";
|
|
||||||
import "./chunk-CHJ5BV6S.js";
|
|
||||||
import "./chunk-XP22GJHQ.js";
|
|
||||||
import "./chunk-NYZY7JGI.js";
|
|
||||||
import "./chunk-FNEVJCCX.js";
|
|
||||||
import "./chunk-R33GOAXK.js";
|
|
||||||
import "./chunk-WHHJWK6B.js";
|
|
||||||
import {
|
|
||||||
selectSvgElement
|
|
||||||
} from "./chunk-B5NQPFQG.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
cleanAndMerge
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
clear,
|
|
||||||
defaultConfig_default,
|
|
||||||
getAccDescription,
|
|
||||||
getAccTitle,
|
|
||||||
getConfig,
|
|
||||||
getDiagramTitle,
|
|
||||||
getThemeVariables3,
|
|
||||||
setAccDescription,
|
|
||||||
setAccTitle,
|
|
||||||
setDiagramTitle
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__spreadValues
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/diagram-QEK2KX5R.mjs
|
|
||||||
var defaultOptions = {
|
|
||||||
showLegend: true,
|
|
||||||
ticks: 5,
|
|
||||||
max: null,
|
|
||||||
min: 0,
|
|
||||||
graticule: "circle"
|
|
||||||
};
|
|
||||||
var defaultRadarData = {
|
|
||||||
axes: [],
|
|
||||||
curves: [],
|
|
||||||
options: defaultOptions
|
|
||||||
};
|
|
||||||
var data = structuredClone(defaultRadarData);
|
|
||||||
var DEFAULT_RADAR_CONFIG = defaultConfig_default.radar;
|
|
||||||
var getConfig2 = __name(() => {
|
|
||||||
const config = cleanAndMerge(__spreadValues(__spreadValues({}, DEFAULT_RADAR_CONFIG), getConfig().radar));
|
|
||||||
return config;
|
|
||||||
}, "getConfig");
|
|
||||||
var getAxes = __name(() => data.axes, "getAxes");
|
|
||||||
var getCurves = __name(() => data.curves, "getCurves");
|
|
||||||
var getOptions = __name(() => data.options, "getOptions");
|
|
||||||
var setAxes = __name((axes) => {
|
|
||||||
data.axes = axes.map((axis) => {
|
|
||||||
return {
|
|
||||||
name: axis.name,
|
|
||||||
label: axis.label ?? axis.name
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}, "setAxes");
|
|
||||||
var setCurves = __name((curves) => {
|
|
||||||
data.curves = curves.map((curve) => {
|
|
||||||
return {
|
|
||||||
name: curve.name,
|
|
||||||
label: curve.label ?? curve.name,
|
|
||||||
entries: computeCurveEntries(curve.entries)
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}, "setCurves");
|
|
||||||
var computeCurveEntries = __name((entries) => {
|
|
||||||
if (entries[0].axis == void 0) {
|
|
||||||
return entries.map((entry) => entry.value);
|
|
||||||
}
|
|
||||||
const axes = getAxes();
|
|
||||||
if (axes.length === 0) {
|
|
||||||
throw new Error("Axes must be populated before curves for reference entries");
|
|
||||||
}
|
|
||||||
return axes.map((axis) => {
|
|
||||||
const entry = entries.find((entry2) => entry2.axis?.$refText === axis.name);
|
|
||||||
if (entry === void 0) {
|
|
||||||
throw new Error("Missing entry for axis " + axis.label);
|
|
||||||
}
|
|
||||||
return entry.value;
|
|
||||||
});
|
|
||||||
}, "computeCurveEntries");
|
|
||||||
var setOptions = __name((options) => {
|
|
||||||
const optionMap = options.reduce(
|
|
||||||
(acc, option) => {
|
|
||||||
acc[option.name] = option;
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{}
|
|
||||||
);
|
|
||||||
data.options = {
|
|
||||||
showLegend: optionMap.showLegend?.value ?? defaultOptions.showLegend,
|
|
||||||
ticks: optionMap.ticks?.value ?? defaultOptions.ticks,
|
|
||||||
max: optionMap.max?.value ?? defaultOptions.max,
|
|
||||||
min: optionMap.min?.value ?? defaultOptions.min,
|
|
||||||
graticule: optionMap.graticule?.value ?? defaultOptions.graticule
|
|
||||||
};
|
|
||||||
}, "setOptions");
|
|
||||||
var clear2 = __name(() => {
|
|
||||||
clear();
|
|
||||||
data = structuredClone(defaultRadarData);
|
|
||||||
}, "clear");
|
|
||||||
var db = {
|
|
||||||
getAxes,
|
|
||||||
getCurves,
|
|
||||||
getOptions,
|
|
||||||
setAxes,
|
|
||||||
setCurves,
|
|
||||||
setOptions,
|
|
||||||
getConfig: getConfig2,
|
|
||||||
clear: clear2,
|
|
||||||
setAccTitle,
|
|
||||||
getAccTitle,
|
|
||||||
setDiagramTitle,
|
|
||||||
getDiagramTitle,
|
|
||||||
getAccDescription,
|
|
||||||
setAccDescription
|
|
||||||
};
|
|
||||||
var populate = __name((ast) => {
|
|
||||||
populateCommonDb(ast, db);
|
|
||||||
const { axes, curves, options } = ast;
|
|
||||||
db.setAxes(axes);
|
|
||||||
db.setCurves(curves);
|
|
||||||
db.setOptions(options);
|
|
||||||
}, "populate");
|
|
||||||
var parser = {
|
|
||||||
parse: __name(async (input) => {
|
|
||||||
const ast = await parse("radar", input);
|
|
||||||
log.debug(ast);
|
|
||||||
populate(ast);
|
|
||||||
}, "parse")
|
|
||||||
};
|
|
||||||
var draw = __name((_text, id, _version, diagram2) => {
|
|
||||||
const db2 = diagram2.db;
|
|
||||||
const axes = db2.getAxes();
|
|
||||||
const curves = db2.getCurves();
|
|
||||||
const options = db2.getOptions();
|
|
||||||
const config = db2.getConfig();
|
|
||||||
const title = db2.getDiagramTitle();
|
|
||||||
const svg = selectSvgElement(id);
|
|
||||||
const g = drawFrame(svg, config);
|
|
||||||
const maxValue = options.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries)));
|
|
||||||
const minValue = options.min;
|
|
||||||
const radius = Math.min(config.width, config.height) / 2;
|
|
||||||
drawGraticule(g, axes, radius, options.ticks, options.graticule);
|
|
||||||
drawAxes(g, axes, radius, config);
|
|
||||||
drawCurves(g, axes, curves, minValue, maxValue, options.graticule, config);
|
|
||||||
drawLegend(g, curves, options.showLegend, config);
|
|
||||||
g.append("text").attr("class", "radarTitle").text(title).attr("x", 0).attr("y", -config.height / 2 - config.marginTop);
|
|
||||||
}, "draw");
|
|
||||||
var drawFrame = __name((svg, config) => {
|
|
||||||
const totalWidth = config.width + config.marginLeft + config.marginRight;
|
|
||||||
const totalHeight = config.height + config.marginTop + config.marginBottom;
|
|
||||||
const center = {
|
|
||||||
x: config.marginLeft + config.width / 2,
|
|
||||||
y: config.marginTop + config.height / 2
|
|
||||||
};
|
|
||||||
svg.attr("viewbox", `0 0 ${totalWidth} ${totalHeight}`).attr("width", totalWidth).attr("height", totalHeight);
|
|
||||||
return svg.append("g").attr("transform", `translate(${center.x}, ${center.y})`);
|
|
||||||
}, "drawFrame");
|
|
||||||
var drawGraticule = __name((g, axes, radius, ticks, graticule) => {
|
|
||||||
if (graticule === "circle") {
|
|
||||||
for (let i = 0; i < ticks; i++) {
|
|
||||||
const r = radius * (i + 1) / ticks;
|
|
||||||
g.append("circle").attr("r", r).attr("class", "radarGraticule");
|
|
||||||
}
|
|
||||||
} else if (graticule === "polygon") {
|
|
||||||
const numAxes = axes.length;
|
|
||||||
for (let i = 0; i < ticks; i++) {
|
|
||||||
const r = radius * (i + 1) / ticks;
|
|
||||||
const points = axes.map((_, j) => {
|
|
||||||
const angle = 2 * j * Math.PI / numAxes - Math.PI / 2;
|
|
||||||
const x = r * Math.cos(angle);
|
|
||||||
const y = r * Math.sin(angle);
|
|
||||||
return `${x},${y}`;
|
|
||||||
}).join(" ");
|
|
||||||
g.append("polygon").attr("points", points).attr("class", "radarGraticule");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, "drawGraticule");
|
|
||||||
var drawAxes = __name((g, axes, radius, config) => {
|
|
||||||
const numAxes = axes.length;
|
|
||||||
for (let i = 0; i < numAxes; i++) {
|
|
||||||
const label = axes[i].label;
|
|
||||||
const angle = 2 * i * Math.PI / numAxes - Math.PI / 2;
|
|
||||||
g.append("line").attr("x1", 0).attr("y1", 0).attr("x2", radius * config.axisScaleFactor * Math.cos(angle)).attr("y2", radius * config.axisScaleFactor * Math.sin(angle)).attr("class", "radarAxisLine");
|
|
||||||
g.append("text").text(label).attr("x", radius * config.axisLabelFactor * Math.cos(angle)).attr("y", radius * config.axisLabelFactor * Math.sin(angle)).attr("class", "radarAxisLabel");
|
|
||||||
}
|
|
||||||
}, "drawAxes");
|
|
||||||
function drawCurves(g, axes, curves, minValue, maxValue, graticule, config) {
|
|
||||||
const numAxes = axes.length;
|
|
||||||
const radius = Math.min(config.width, config.height) / 2;
|
|
||||||
curves.forEach((curve, index) => {
|
|
||||||
if (curve.entries.length !== numAxes) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const points = curve.entries.map((entry, i) => {
|
|
||||||
const angle = 2 * Math.PI * i / numAxes - Math.PI / 2;
|
|
||||||
const r = relativeRadius(entry, minValue, maxValue, radius);
|
|
||||||
const x = r * Math.cos(angle);
|
|
||||||
const y = r * Math.sin(angle);
|
|
||||||
return { x, y };
|
|
||||||
});
|
|
||||||
if (graticule === "circle") {
|
|
||||||
g.append("path").attr("d", closedRoundCurve(points, config.curveTension)).attr("class", `radarCurve-${index}`);
|
|
||||||
} else if (graticule === "polygon") {
|
|
||||||
g.append("polygon").attr("points", points.map((p) => `${p.x},${p.y}`).join(" ")).attr("class", `radarCurve-${index}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
__name(drawCurves, "drawCurves");
|
|
||||||
function relativeRadius(value, minValue, maxValue, radius) {
|
|
||||||
const clippedValue = Math.min(Math.max(value, minValue), maxValue);
|
|
||||||
return radius * (clippedValue - minValue) / (maxValue - minValue);
|
|
||||||
}
|
|
||||||
__name(relativeRadius, "relativeRadius");
|
|
||||||
function closedRoundCurve(points, tension) {
|
|
||||||
const numPoints = points.length;
|
|
||||||
let d = `M${points[0].x},${points[0].y}`;
|
|
||||||
for (let i = 0; i < numPoints; i++) {
|
|
||||||
const p0 = points[(i - 1 + numPoints) % numPoints];
|
|
||||||
const p1 = points[i];
|
|
||||||
const p2 = points[(i + 1) % numPoints];
|
|
||||||
const p3 = points[(i + 2) % numPoints];
|
|
||||||
const cp1 = {
|
|
||||||
x: p1.x + (p2.x - p0.x) * tension,
|
|
||||||
y: p1.y + (p2.y - p0.y) * tension
|
|
||||||
};
|
|
||||||
const cp2 = {
|
|
||||||
x: p2.x - (p3.x - p1.x) * tension,
|
|
||||||
y: p2.y - (p3.y - p1.y) * tension
|
|
||||||
};
|
|
||||||
d += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p2.x},${p2.y}`;
|
|
||||||
}
|
|
||||||
return `${d} Z`;
|
|
||||||
}
|
|
||||||
__name(closedRoundCurve, "closedRoundCurve");
|
|
||||||
function drawLegend(g, curves, showLegend, config) {
|
|
||||||
if (!showLegend) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const legendX = (config.width / 2 + config.marginRight) * 3 / 4;
|
|
||||||
const legendY = -(config.height / 2 + config.marginTop) * 3 / 4;
|
|
||||||
const lineHeight = 20;
|
|
||||||
curves.forEach((curve, index) => {
|
|
||||||
const itemGroup = g.append("g").attr("transform", `translate(${legendX}, ${legendY + index * lineHeight})`);
|
|
||||||
itemGroup.append("rect").attr("width", 12).attr("height", 12).attr("class", `radarLegendBox-${index}`);
|
|
||||||
itemGroup.append("text").attr("x", 16).attr("y", 0).attr("class", "radarLegendText").text(curve.label);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
__name(drawLegend, "drawLegend");
|
|
||||||
var renderer = { draw };
|
|
||||||
var genIndexStyles = __name((themeVariables, radarOptions) => {
|
|
||||||
let sections = "";
|
|
||||||
for (let i = 0; i < themeVariables.THEME_COLOR_LIMIT; i++) {
|
|
||||||
const indexColor = themeVariables[`cScale${i}`];
|
|
||||||
sections += `
|
|
||||||
.radarCurve-${i} {
|
|
||||||
color: ${indexColor};
|
|
||||||
fill: ${indexColor};
|
|
||||||
fill-opacity: ${radarOptions.curveOpacity};
|
|
||||||
stroke: ${indexColor};
|
|
||||||
stroke-width: ${radarOptions.curveStrokeWidth};
|
|
||||||
}
|
|
||||||
.radarLegendBox-${i} {
|
|
||||||
fill: ${indexColor};
|
|
||||||
fill-opacity: ${radarOptions.curveOpacity};
|
|
||||||
stroke: ${indexColor};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
return sections;
|
|
||||||
}, "genIndexStyles");
|
|
||||||
var buildRadarStyleOptions = __name((radar) => {
|
|
||||||
const defaultThemeVariables = getThemeVariables3();
|
|
||||||
const currentConfig = getConfig();
|
|
||||||
const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);
|
|
||||||
const radarOptions = cleanAndMerge(themeVariables.radar, radar);
|
|
||||||
return { themeVariables, radarOptions };
|
|
||||||
}, "buildRadarStyleOptions");
|
|
||||||
var styles = __name(({ radar } = {}) => {
|
|
||||||
const { themeVariables, radarOptions } = buildRadarStyleOptions(radar);
|
|
||||||
return `
|
|
||||||
.radarTitle {
|
|
||||||
font-size: ${themeVariables.fontSize};
|
|
||||||
color: ${themeVariables.titleColor};
|
|
||||||
dominant-baseline: hanging;
|
|
||||||
text-anchor: middle;
|
|
||||||
}
|
|
||||||
.radarAxisLine {
|
|
||||||
stroke: ${radarOptions.axisColor};
|
|
||||||
stroke-width: ${radarOptions.axisStrokeWidth};
|
|
||||||
}
|
|
||||||
.radarAxisLabel {
|
|
||||||
dominant-baseline: middle;
|
|
||||||
text-anchor: middle;
|
|
||||||
font-size: ${radarOptions.axisLabelFontSize}px;
|
|
||||||
color: ${radarOptions.axisColor};
|
|
||||||
}
|
|
||||||
.radarGraticule {
|
|
||||||
fill: ${radarOptions.graticuleColor};
|
|
||||||
fill-opacity: ${radarOptions.graticuleOpacity};
|
|
||||||
stroke: ${radarOptions.graticuleColor};
|
|
||||||
stroke-width: ${radarOptions.graticuleStrokeWidth};
|
|
||||||
}
|
|
||||||
.radarLegendText {
|
|
||||||
text-anchor: start;
|
|
||||||
font-size: ${radarOptions.legendFontSize}px;
|
|
||||||
dominant-baseline: hanging;
|
|
||||||
}
|
|
||||||
${genIndexStyles(themeVariables, radarOptions)}
|
|
||||||
`;
|
|
||||||
}, "styles");
|
|
||||||
var diagram = {
|
|
||||||
parser,
|
|
||||||
db,
|
|
||||||
renderer,
|
|
||||||
styles
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=diagram-QEK2KX5R-5GIFGTRQ.js.map
|
|
File diff suppressed because one or more lines are too long
@ -1,250 +0,0 @@
|
|||||||
import {
|
|
||||||
populateCommonDb
|
|
||||||
} from "./chunk-PNW5KFH4.js";
|
|
||||||
import {
|
|
||||||
parse
|
|
||||||
} from "./chunk-VGVCR5QM.js";
|
|
||||||
import "./chunk-5SXTVVUG.js";
|
|
||||||
import "./chunk-BUI4I457.js";
|
|
||||||
import "./chunk-CHJ5BV6S.js";
|
|
||||||
import "./chunk-XP22GJHQ.js";
|
|
||||||
import "./chunk-NYZY7JGI.js";
|
|
||||||
import "./chunk-FNEVJCCX.js";
|
|
||||||
import "./chunk-R33GOAXK.js";
|
|
||||||
import "./chunk-WHHJWK6B.js";
|
|
||||||
import {
|
|
||||||
selectSvgElement
|
|
||||||
} from "./chunk-B5NQPFQG.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
cleanAndMerge
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
clear,
|
|
||||||
configureSvgSize,
|
|
||||||
defaultConfig_default,
|
|
||||||
getAccDescription,
|
|
||||||
getAccTitle,
|
|
||||||
getConfig,
|
|
||||||
getDiagramTitle,
|
|
||||||
setAccDescription,
|
|
||||||
setAccTitle,
|
|
||||||
setDiagramTitle
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import {
|
|
||||||
__spreadValues
|
|
||||||
} from "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/diagram-S2PKOQOG.mjs
|
|
||||||
var DEFAULT_PACKET_CONFIG = defaultConfig_default.packet;
|
|
||||||
var _a;
|
|
||||||
var PacketDB = (_a = class {
|
|
||||||
constructor() {
|
|
||||||
this.packet = [];
|
|
||||||
this.setAccTitle = setAccTitle;
|
|
||||||
this.getAccTitle = getAccTitle;
|
|
||||||
this.setDiagramTitle = setDiagramTitle;
|
|
||||||
this.getDiagramTitle = getDiagramTitle;
|
|
||||||
this.getAccDescription = getAccDescription;
|
|
||||||
this.setAccDescription = setAccDescription;
|
|
||||||
}
|
|
||||||
getConfig() {
|
|
||||||
const config = cleanAndMerge(__spreadValues(__spreadValues({}, DEFAULT_PACKET_CONFIG), getConfig().packet));
|
|
||||||
if (config.showBits) {
|
|
||||||
config.paddingY += 10;
|
|
||||||
}
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
getPacket() {
|
|
||||||
return this.packet;
|
|
||||||
}
|
|
||||||
pushWord(word) {
|
|
||||||
if (word.length > 0) {
|
|
||||||
this.packet.push(word);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clear() {
|
|
||||||
clear();
|
|
||||||
this.packet = [];
|
|
||||||
}
|
|
||||||
}, __name(_a, "PacketDB"), _a);
|
|
||||||
var maxPacketSize = 1e4;
|
|
||||||
var populate = __name((ast, db) => {
|
|
||||||
populateCommonDb(ast, db);
|
|
||||||
let lastBit = -1;
|
|
||||||
let word = [];
|
|
||||||
let row = 1;
|
|
||||||
const { bitsPerRow } = db.getConfig();
|
|
||||||
for (let { start, end, bits, label } of ast.blocks) {
|
|
||||||
if (start !== void 0 && end !== void 0 && end < start) {
|
|
||||||
throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);
|
|
||||||
}
|
|
||||||
start ??= lastBit + 1;
|
|
||||||
if (start !== lastBit + 1) {
|
|
||||||
throw new Error(
|
|
||||||
`Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${lastBit + 1}.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (bits === 0) {
|
|
||||||
throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);
|
|
||||||
}
|
|
||||||
end ??= start + (bits ?? 1) - 1;
|
|
||||||
bits ??= end - start + 1;
|
|
||||||
lastBit = end;
|
|
||||||
log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);
|
|
||||||
while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {
|
|
||||||
const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);
|
|
||||||
word.push(block);
|
|
||||||
if (block.end + 1 === row * bitsPerRow) {
|
|
||||||
db.pushWord(word);
|
|
||||||
word = [];
|
|
||||||
row++;
|
|
||||||
}
|
|
||||||
if (!nextBlock) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
({ start, end, bits, label } = nextBlock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
db.pushWord(word);
|
|
||||||
}, "populate");
|
|
||||||
var getNextFittingBlock = __name((block, row, bitsPerRow) => {
|
|
||||||
if (block.start === void 0) {
|
|
||||||
throw new Error("start should have been set during first phase");
|
|
||||||
}
|
|
||||||
if (block.end === void 0) {
|
|
||||||
throw new Error("end should have been set during first phase");
|
|
||||||
}
|
|
||||||
if (block.start > block.end) {
|
|
||||||
throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);
|
|
||||||
}
|
|
||||||
if (block.end + 1 <= row * bitsPerRow) {
|
|
||||||
return [block, void 0];
|
|
||||||
}
|
|
||||||
const rowEnd = row * bitsPerRow - 1;
|
|
||||||
const rowStart = row * bitsPerRow;
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
start: block.start,
|
|
||||||
end: rowEnd,
|
|
||||||
label: block.label,
|
|
||||||
bits: rowEnd - block.start
|
|
||||||
},
|
|
||||||
{
|
|
||||||
start: rowStart,
|
|
||||||
end: block.end,
|
|
||||||
label: block.label,
|
|
||||||
bits: block.end - rowStart
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}, "getNextFittingBlock");
|
|
||||||
var parser = {
|
|
||||||
// @ts-expect-error - PacketDB is not assignable to DiagramDB
|
|
||||||
parser: { yy: void 0 },
|
|
||||||
parse: __name(async (input) => {
|
|
||||||
const ast = await parse("packet", input);
|
|
||||||
const db = parser.parser?.yy;
|
|
||||||
if (!(db instanceof PacketDB)) {
|
|
||||||
throw new Error(
|
|
||||||
"parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
log.debug(ast);
|
|
||||||
populate(ast, db);
|
|
||||||
}, "parse")
|
|
||||||
};
|
|
||||||
var draw = __name((_text, id, _version, diagram2) => {
|
|
||||||
const db = diagram2.db;
|
|
||||||
const config = db.getConfig();
|
|
||||||
const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;
|
|
||||||
const words = db.getPacket();
|
|
||||||
const title = db.getDiagramTitle();
|
|
||||||
const totalRowHeight = rowHeight + paddingY;
|
|
||||||
const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);
|
|
||||||
const svgWidth = bitWidth * bitsPerRow + 2;
|
|
||||||
const svg = selectSvgElement(id);
|
|
||||||
svg.attr("viewbox", `0 0 ${svgWidth} ${svgHeight}`);
|
|
||||||
configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);
|
|
||||||
for (const [word, packet] of words.entries()) {
|
|
||||||
drawWord(svg, packet, word, config);
|
|
||||||
}
|
|
||||||
svg.append("text").text(title).attr("x", svgWidth / 2).attr("y", svgHeight - totalRowHeight / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("class", "packetTitle");
|
|
||||||
}, "draw");
|
|
||||||
var drawWord = __name((svg, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => {
|
|
||||||
const group = svg.append("g");
|
|
||||||
const wordY = rowNumber * (rowHeight + paddingY) + paddingY;
|
|
||||||
for (const block of word) {
|
|
||||||
const blockX = block.start % bitsPerRow * bitWidth + 1;
|
|
||||||
const width = (block.end - block.start + 1) * bitWidth - paddingX;
|
|
||||||
group.append("rect").attr("x", blockX).attr("y", wordY).attr("width", width).attr("height", rowHeight).attr("class", "packetBlock");
|
|
||||||
group.append("text").attr("x", blockX + width / 2).attr("y", wordY + rowHeight / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(block.label);
|
|
||||||
if (!showBits) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const isSingleBlock = block.end === block.start;
|
|
||||||
const bitNumberY = wordY - 2;
|
|
||||||
group.append("text").attr("x", blockX + (isSingleBlock ? width / 2 : 0)).attr("y", bitNumberY).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", isSingleBlock ? "middle" : "start").text(block.start);
|
|
||||||
if (!isSingleBlock) {
|
|
||||||
group.append("text").attr("x", blockX + width).attr("y", bitNumberY).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(block.end);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, "drawWord");
|
|
||||||
var renderer = { draw };
|
|
||||||
var defaultPacketStyleOptions = {
|
|
||||||
byteFontSize: "10px",
|
|
||||||
startByteColor: "black",
|
|
||||||
endByteColor: "black",
|
|
||||||
labelColor: "black",
|
|
||||||
labelFontSize: "12px",
|
|
||||||
titleColor: "black",
|
|
||||||
titleFontSize: "14px",
|
|
||||||
blockStrokeColor: "black",
|
|
||||||
blockStrokeWidth: "1",
|
|
||||||
blockFillColor: "#efefef"
|
|
||||||
};
|
|
||||||
var styles = __name(({ packet } = {}) => {
|
|
||||||
const options = cleanAndMerge(defaultPacketStyleOptions, packet);
|
|
||||||
return `
|
|
||||||
.packetByte {
|
|
||||||
font-size: ${options.byteFontSize};
|
|
||||||
}
|
|
||||||
.packetByte.start {
|
|
||||||
fill: ${options.startByteColor};
|
|
||||||
}
|
|
||||||
.packetByte.end {
|
|
||||||
fill: ${options.endByteColor};
|
|
||||||
}
|
|
||||||
.packetLabel {
|
|
||||||
fill: ${options.labelColor};
|
|
||||||
font-size: ${options.labelFontSize};
|
|
||||||
}
|
|
||||||
.packetTitle {
|
|
||||||
fill: ${options.titleColor};
|
|
||||||
font-size: ${options.titleFontSize};
|
|
||||||
}
|
|
||||||
.packetBlock {
|
|
||||||
stroke: ${options.blockStrokeColor};
|
|
||||||
stroke-width: ${options.blockStrokeWidth};
|
|
||||||
fill: ${options.blockFillColor};
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}, "styles");
|
|
||||||
var diagram = {
|
|
||||||
parser,
|
|
||||||
get db() {
|
|
||||||
return new PacketDB();
|
|
||||||
},
|
|
||||||
renderer,
|
|
||||||
styles
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=diagram-S2PKOQOG-CRJZWG5Y.js.map
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,60 +0,0 @@
|
|||||||
import {
|
|
||||||
parse
|
|
||||||
} from "./chunk-VGVCR5QM.js";
|
|
||||||
import "./chunk-5SXTVVUG.js";
|
|
||||||
import "./chunk-BUI4I457.js";
|
|
||||||
import "./chunk-CHJ5BV6S.js";
|
|
||||||
import "./chunk-XP22GJHQ.js";
|
|
||||||
import "./chunk-NYZY7JGI.js";
|
|
||||||
import "./chunk-FNEVJCCX.js";
|
|
||||||
import "./chunk-R33GOAXK.js";
|
|
||||||
import "./chunk-WHHJWK6B.js";
|
|
||||||
import {
|
|
||||||
package_default
|
|
||||||
} from "./chunk-BSULYXPT.js";
|
|
||||||
import {
|
|
||||||
selectSvgElement
|
|
||||||
} from "./chunk-B5NQPFQG.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
configureSvgSize
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
log
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-F6ZHWCRC.mjs
|
|
||||||
var parser = {
|
|
||||||
parse: __name(async (input) => {
|
|
||||||
const ast = await parse("info", input);
|
|
||||||
log.debug(ast);
|
|
||||||
}, "parse")
|
|
||||||
};
|
|
||||||
var DEFAULT_INFO_DB = {
|
|
||||||
version: package_default.version + (true ? "" : "-tiny")
|
|
||||||
};
|
|
||||||
var getVersion = __name(() => DEFAULT_INFO_DB.version, "getVersion");
|
|
||||||
var db = {
|
|
||||||
getVersion
|
|
||||||
};
|
|
||||||
var draw = __name((text, id, version) => {
|
|
||||||
log.debug("rendering info diagram\n" + text);
|
|
||||||
const svg = selectSvgElement(id);
|
|
||||||
configureSvgSize(svg, 100, 400, true);
|
|
||||||
const group = svg.append("g");
|
|
||||||
group.append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", 32).style("text-anchor", "middle").text(`v${version}`);
|
|
||||||
}, "draw");
|
|
||||||
var renderer = { draw };
|
|
||||||
var diagram = {
|
|
||||||
parser,
|
|
||||||
db,
|
|
||||||
renderer
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=infoDiagram-F6ZHWCRC-WO5AQYKA.js.map
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": ["../../../../../../node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-F6ZHWCRC.mjs"],
|
|
||||||
"sourcesContent": ["import {\n package_default\n} from \"./chunk-KS23V3DP.mjs\";\nimport {\n selectSvgElement\n} from \"./chunk-EXTU4WIE.mjs\";\nimport {\n configureSvgSize\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/info/infoParser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"info\", input);\n log.debug(ast);\n }, \"parse\")\n};\n\n// src/diagrams/info/infoDb.ts\nvar DEFAULT_INFO_DB = {\n version: package_default.version + (true ? \"\" : \"-tiny\")\n};\nvar getVersion = /* @__PURE__ */ __name(() => DEFAULT_INFO_DB.version, \"getVersion\");\nvar db = {\n getVersion\n};\n\n// src/diagrams/info/infoRenderer.ts\nvar draw = /* @__PURE__ */ __name((text, id, version) => {\n log.debug(\"rendering info diagram\\n\" + text);\n const svg = selectSvgElement(id);\n configureSvgSize(svg, 100, 400, true);\n const group = svg.append(\"g\");\n group.append(\"text\").attr(\"x\", 100).attr(\"y\", 40).attr(\"class\", \"version\").attr(\"font-size\", 32).style(\"text-anchor\", \"middle\").text(`v${version}`);\n}, \"draw\");\nvar renderer = { draw };\n\n// src/diagrams/info/infoDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer\n};\nexport {\n diagram\n};\n"],
|
|
||||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAI,SAAS;AAAA,EACX,OAAuB,OAAO,OAAO,UAAU;AAC7C,UAAM,MAAM,MAAM,MAAM,QAAQ,KAAK;AACrC,QAAI,MAAM,GAAG;AAAA,EACf,GAAG,OAAO;AACZ;AAGA,IAAI,kBAAkB;AAAA,EACpB,SAAS,gBAAgB,WAAW,OAAO,KAAK;AAClD;AACA,IAAI,aAA6B,OAAO,MAAM,gBAAgB,SAAS,YAAY;AACnF,IAAI,KAAK;AAAA,EACP;AACF;AAGA,IAAI,OAAuB,OAAO,CAAC,MAAM,IAAI,YAAY;AACvD,MAAI,MAAM,6BAA6B,IAAI;AAC3C,QAAM,MAAM,iBAAiB,EAAE;AAC/B,mBAAiB,KAAK,KAAK,KAAK,IAAI;AACpC,QAAM,QAAQ,IAAI,OAAO,GAAG;AAC5B,QAAM,OAAO,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,KAAK,SAAS,SAAS,EAAE,KAAK,aAAa,EAAE,EAAE,MAAM,eAAe,QAAQ,EAAE,KAAK,IAAI,OAAO,EAAE;AACpJ,GAAG,MAAM;AACT,IAAI,WAAW,EAAE,KAAK;AAGtB,IAAI,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF;",
|
|
||||||
"names": []
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
93
.angular/cache/20.3.3/app/vite/deps/mermaid.js
vendored
93
.angular/cache/20.3.3/app/vite/deps/mermaid.js
vendored
@ -3,26 +3,23 @@ import {
|
|||||||
} from "./chunk-BSULYXPT.js";
|
} from "./chunk-BSULYXPT.js";
|
||||||
import {
|
import {
|
||||||
selectSvgElement
|
selectSvgElement
|
||||||
} from "./chunk-B5NQPFQG.js";
|
} from "./chunk-AX55YWLP.js";
|
||||||
import {
|
import {
|
||||||
JSON_SCHEMA,
|
JSON_SCHEMA,
|
||||||
load
|
load
|
||||||
} from "./chunk-JSZQKJT3.js";
|
} from "./chunk-QQXB2KBB.js";
|
||||||
import {
|
import {
|
||||||
registerLayoutLoaders
|
registerLayoutLoaders
|
||||||
} from "./chunk-WC2C7HAT.js";
|
} from "./chunk-SALDWYPM.js";
|
||||||
import "./chunk-HICR2YSH.js";
|
import "./chunk-XLAQUT22.js";
|
||||||
import "./chunk-JJ4TL56I.js";
|
import "./chunk-C5C3W4IT.js";
|
||||||
import "./chunk-2HSIUWWJ.js";
|
import "./chunk-DFNB73OP.js";
|
||||||
import "./chunk-EUUYHBKV.js";
|
import "./chunk-FGVQ5EAF.js";
|
||||||
import "./chunk-FTTOYZOY.js";
|
import "./chunk-SBFIRBTE.js";
|
||||||
import {
|
import {
|
||||||
dedent,
|
dedent,
|
||||||
registerIconPacks
|
registerIconPacks
|
||||||
} from "./chunk-NMWDZEZO.js";
|
} from "./chunk-CQMBBTJ5.js";
|
||||||
import {
|
|
||||||
isEmpty_default
|
|
||||||
} from "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
import {
|
||||||
cleanAndMerge,
|
cleanAndMerge,
|
||||||
decodeEntities,
|
decodeEntities,
|
||||||
@ -30,7 +27,7 @@ import {
|
|||||||
isDetailedError,
|
isDetailedError,
|
||||||
removeDirectives,
|
removeDirectives,
|
||||||
utils_default
|
utils_default
|
||||||
} from "./chunk-QVVRGVV3.js";
|
} from "./chunk-MNXRRJHR.js";
|
||||||
import "./chunk-CMK64ICG.js";
|
import "./chunk-CMK64ICG.js";
|
||||||
import {
|
import {
|
||||||
UnknownDiagramError,
|
UnknownDiagramError,
|
||||||
@ -56,14 +53,22 @@ import {
|
|||||||
styles_default,
|
styles_default,
|
||||||
themes_default,
|
themes_default,
|
||||||
updateSiteConfig
|
updateSiteConfig
|
||||||
} from "./chunk-BFCVI5XI.js";
|
} from "./chunk-6TEFNLMX.js";
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
import {
|
||||||
__name,
|
__name,
|
||||||
log,
|
log,
|
||||||
select_default,
|
|
||||||
setLogLevel
|
setLogLevel
|
||||||
} from "./chunk-I65GBZ6F.js";
|
} from "./chunk-NOSQ5GAS.js";
|
||||||
|
import {
|
||||||
|
isEmpty_default
|
||||||
|
} from "./chunk-NGEE2U2J.js";
|
||||||
|
import "./chunk-M5X7JH4I.js";
|
||||||
|
import "./chunk-6IIGIOZW.js";
|
||||||
|
import "./chunk-M3UL5JB7.js";
|
||||||
|
import {
|
||||||
|
select_default
|
||||||
|
} from "./chunk-RPD7EFVI.js";
|
||||||
|
import "./chunk-TZ7OVMR6.js";
|
||||||
import {
|
import {
|
||||||
__spreadProps,
|
__spreadProps,
|
||||||
__spreadValues
|
__spreadValues
|
||||||
@ -426,7 +431,7 @@ var detector = __name((txt) => {
|
|||||||
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader = __name(async () => {
|
var loader = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-DTLV3BK5.js");
|
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-S27KF7WZ.js");
|
||||||
return { id, diagram: diagram2 };
|
return { id, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin = {
|
var plugin = {
|
||||||
@ -443,7 +448,7 @@ var detector2 = __name((txt, config) => {
|
|||||||
return /^\s*graph/.test(txt);
|
return /^\s*graph/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader2 = __name(async () => {
|
var loader2 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-WHL2L3RD.js");
|
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-PAMDTSQG.js");
|
||||||
return { id: id2, diagram: diagram2 };
|
return { id: id2, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin2 = {
|
var plugin2 = {
|
||||||
@ -466,7 +471,7 @@ var detector3 = __name((txt, config) => {
|
|||||||
return /^\s*flowchart/.test(txt);
|
return /^\s*flowchart/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader3 = __name(async () => {
|
var loader3 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-WHL2L3RD.js");
|
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-PAMDTSQG.js");
|
||||||
return { id: id3, diagram: diagram2 };
|
return { id: id3, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin3 = {
|
var plugin3 = {
|
||||||
@ -480,7 +485,7 @@ var detector4 = __name((txt) => {
|
|||||||
return /^\s*erDiagram/.test(txt);
|
return /^\s*erDiagram/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader4 = __name(async () => {
|
var loader4 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-WNA6LIBQ.js");
|
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-YN7PFEX5.js");
|
||||||
return { id: id4, diagram: diagram2 };
|
return { id: id4, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin4 = {
|
var plugin4 = {
|
||||||
@ -494,7 +499,7 @@ var detector5 = __name((txt) => {
|
|||||||
return /^\s*gitGraph/.test(txt);
|
return /^\s*gitGraph/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader5 = __name(async () => {
|
var loader5 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./gitGraphDiagram-NY62KEGX-67QA5ASO.js");
|
const { diagram: diagram2 } = await import("./gitGraphDiagram-NY62KEGX-AYADZGTS.js");
|
||||||
return { id: id5, diagram: diagram2 };
|
return { id: id5, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin5 = {
|
var plugin5 = {
|
||||||
@ -508,7 +513,7 @@ var detector6 = __name((txt) => {
|
|||||||
return /^\s*gantt/.test(txt);
|
return /^\s*gantt/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader6 = __name(async () => {
|
var loader6 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./ganttDiagram-LVOFAZNH-HYMY4RKD.js");
|
const { diagram: diagram2 } = await import("./ganttDiagram-LVOFAZNH-6V2ZJWSP.js");
|
||||||
return { id: id6, diagram: diagram2 };
|
return { id: id6, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin6 = {
|
var plugin6 = {
|
||||||
@ -522,7 +527,7 @@ var detector7 = __name((txt) => {
|
|||||||
return /^\s*info/.test(txt);
|
return /^\s*info/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader7 = __name(async () => {
|
var loader7 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./infoDiagram-F6ZHWCRC-WO5AQYKA.js");
|
const { diagram: diagram2 } = await import("./infoDiagram-F6ZHWCRC-Q4VG5QSO.js");
|
||||||
return { id: id7, diagram: diagram2 };
|
return { id: id7, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var info = {
|
var info = {
|
||||||
@ -535,7 +540,7 @@ var detector8 = __name((txt) => {
|
|||||||
return /^\s*pie/.test(txt);
|
return /^\s*pie/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader8 = __name(async () => {
|
var loader8 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-GZV4UXNK.js");
|
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-UKBRA3ML.js");
|
||||||
return { id: id8, diagram: diagram2 };
|
return { id: id8, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var pie = {
|
var pie = {
|
||||||
@ -548,7 +553,7 @@ var detector9 = __name((txt) => {
|
|||||||
return /^\s*quadrantChart/.test(txt);
|
return /^\s*quadrantChart/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader9 = __name(async () => {
|
var loader9 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-G2SG5IZD.js");
|
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-WIQVQDVA.js");
|
||||||
return { id: id9, diagram: diagram2 };
|
return { id: id9, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin7 = {
|
var plugin7 = {
|
||||||
@ -562,7 +567,7 @@ var detector10 = __name((txt) => {
|
|||||||
return /^\s*xychart(-beta)?/.test(txt);
|
return /^\s*xychart(-beta)?/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader10 = __name(async () => {
|
var loader10 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-3HCTMHS4.js");
|
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-HI3UQ7SD.js");
|
||||||
return { id: id10, diagram: diagram2 };
|
return { id: id10, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin8 = {
|
var plugin8 = {
|
||||||
@ -576,7 +581,7 @@ var detector11 = __name((txt) => {
|
|||||||
return /^\s*requirement(Diagram)?/.test(txt);
|
return /^\s*requirement(Diagram)?/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader11 = __name(async () => {
|
var loader11 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-75TZV2RQ.js");
|
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-KIOGDH7L.js");
|
||||||
return { id: id11, diagram: diagram2 };
|
return { id: id11, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin9 = {
|
var plugin9 = {
|
||||||
@ -590,7 +595,7 @@ var detector12 = __name((txt) => {
|
|||||||
return /^\s*sequenceDiagram/.test(txt);
|
return /^\s*sequenceDiagram/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader12 = __name(async () => {
|
var loader12 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-ZGS5TERI.js");
|
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-PZZPIBIB.js");
|
||||||
return { id: id12, diagram: diagram2 };
|
return { id: id12, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin10 = {
|
var plugin10 = {
|
||||||
@ -607,7 +612,7 @@ var detector13 = __name((txt, config) => {
|
|||||||
return /^\s*classDiagram/.test(txt);
|
return /^\s*classDiagram/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader13 = __name(async () => {
|
var loader13 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-33U76KPG.js");
|
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-M7J3EIFW.js");
|
||||||
return { id: id13, diagram: diagram2 };
|
return { id: id13, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin11 = {
|
var plugin11 = {
|
||||||
@ -624,7 +629,7 @@ var detector14 = __name((txt, config) => {
|
|||||||
return /^\s*classDiagram-v2/.test(txt);
|
return /^\s*classDiagram-v2/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader14 = __name(async () => {
|
var loader14 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Z27PMM23.js");
|
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-L5AKDJKO.js");
|
||||||
return { id: id14, diagram: diagram2 };
|
return { id: id14, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin12 = {
|
var plugin12 = {
|
||||||
@ -641,7 +646,7 @@ var detector15 = __name((txt, config) => {
|
|||||||
return /^\s*stateDiagram/.test(txt);
|
return /^\s*stateDiagram/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader15 = __name(async () => {
|
var loader15 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-KXMQ5JNR.js");
|
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-SFQZ4DUM.js");
|
||||||
return { id: id15, diagram: diagram2 };
|
return { id: id15, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin13 = {
|
var plugin13 = {
|
||||||
@ -661,7 +666,7 @@ var detector16 = __name((txt, config) => {
|
|||||||
return false;
|
return false;
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader16 = __name(async () => {
|
var loader16 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-JB4TSVIW.js");
|
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-GIGECPBX.js");
|
||||||
return { id: id16, diagram: diagram2 };
|
return { id: id16, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin14 = {
|
var plugin14 = {
|
||||||
@ -675,7 +680,7 @@ var detector17 = __name((txt) => {
|
|||||||
return /^\s*journey/.test(txt);
|
return /^\s*journey/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader17 = __name(async () => {
|
var loader17 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-TGUXGKSG.js");
|
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-T7T2TQKB.js");
|
||||||
return { id: id17, diagram: diagram2 };
|
return { id: id17, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin15 = {
|
var plugin15 = {
|
||||||
@ -742,7 +747,7 @@ var detector18 = __name((txt, config = {}) => {
|
|||||||
return false;
|
return false;
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader18 = __name(async () => {
|
var loader18 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-WHL2L3RD.js");
|
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-PAMDTSQG.js");
|
||||||
return { id: id18, diagram: diagram2 };
|
return { id: id18, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin16 = {
|
var plugin16 = {
|
||||||
@ -756,7 +761,7 @@ var detector19 = __name((txt) => {
|
|||||||
return /^\s*timeline/.test(txt);
|
return /^\s*timeline/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader19 = __name(async () => {
|
var loader19 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-WHNO6URF.js");
|
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-C5KDXEFL.js");
|
||||||
return { id: id19, diagram: diagram2 };
|
return { id: id19, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin17 = {
|
var plugin17 = {
|
||||||
@ -770,7 +775,7 @@ var detector20 = __name((txt) => {
|
|||||||
return /^\s*mindmap/.test(txt);
|
return /^\s*mindmap/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader20 = __name(async () => {
|
var loader20 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-YDOCEY2Q.js");
|
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-QIS6XLZK.js");
|
||||||
return { id: id20, diagram: diagram2 };
|
return { id: id20, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin18 = {
|
var plugin18 = {
|
||||||
@ -784,7 +789,7 @@ var detector21 = __name((txt) => {
|
|||||||
return /^\s*kanban/.test(txt);
|
return /^\s*kanban/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader21 = __name(async () => {
|
var loader21 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-GUMHX2OD.js");
|
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-XS2J4B5U.js");
|
||||||
return { id: id21, diagram: diagram2 };
|
return { id: id21, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin19 = {
|
var plugin19 = {
|
||||||
@ -798,7 +803,7 @@ var detector22 = __name((txt) => {
|
|||||||
return /^\s*sankey(-beta)?/.test(txt);
|
return /^\s*sankey(-beta)?/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader22 = __name(async () => {
|
var loader22 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-GH26R5YW.js");
|
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-LPZGI7FI.js");
|
||||||
return { id: id22, diagram: diagram2 };
|
return { id: id22, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin20 = {
|
var plugin20 = {
|
||||||
@ -812,7 +817,7 @@ var detector23 = __name((txt) => {
|
|||||||
return /^\s*packet(-beta)?/.test(txt);
|
return /^\s*packet(-beta)?/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader23 = __name(async () => {
|
var loader23 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-CRJZWG5Y.js");
|
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-MVN3UCTY.js");
|
||||||
return { id: id23, diagram: diagram2 };
|
return { id: id23, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var packet = {
|
var packet = {
|
||||||
@ -825,7 +830,7 @@ var detector24 = __name((txt) => {
|
|||||||
return /^\s*radar-beta/.test(txt);
|
return /^\s*radar-beta/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader24 = __name(async () => {
|
var loader24 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-5GIFGTRQ.js");
|
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-UK7PAHXE.js");
|
||||||
return { id: id24, diagram: diagram2 };
|
return { id: id24, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var radar = {
|
var radar = {
|
||||||
@ -838,7 +843,7 @@ var detector25 = __name((txt) => {
|
|||||||
return /^\s*block(-beta)?/.test(txt);
|
return /^\s*block(-beta)?/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader25 = __name(async () => {
|
var loader25 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-IMP7RBMX.js");
|
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-TQED7YCX.js");
|
||||||
return { id: id25, diagram: diagram2 };
|
return { id: id25, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var plugin21 = {
|
var plugin21 = {
|
||||||
@ -852,7 +857,7 @@ var detector26 = __name((txt) => {
|
|||||||
return /^\s*architecture/.test(txt);
|
return /^\s*architecture/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader26 = __name(async () => {
|
var loader26 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-3B5SPFPL.js");
|
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DJJ3VEXP.js");
|
||||||
return { id: id26, diagram: diagram2 };
|
return { id: id26, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var architecture = {
|
var architecture = {
|
||||||
@ -866,7 +871,7 @@ var detector27 = __name((txt) => {
|
|||||||
return /^\s*treemap/.test(txt);
|
return /^\s*treemap/.test(txt);
|
||||||
}, "detector");
|
}, "detector");
|
||||||
var loader27 = __name(async () => {
|
var loader27 = __name(async () => {
|
||||||
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-7CHUIA47.js");
|
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-KRKGF3PJ.js");
|
||||||
return { id: id27, diagram: diagram2 };
|
return { id: id27, diagram: diagram2 };
|
||||||
}, "loader");
|
}, "loader");
|
||||||
var treemap = {
|
var treemap = {
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,228 +0,0 @@
|
|||||||
import {
|
|
||||||
populateCommonDb
|
|
||||||
} from "./chunk-PNW5KFH4.js";
|
|
||||||
import {
|
|
||||||
parse
|
|
||||||
} from "./chunk-VGVCR5QM.js";
|
|
||||||
import "./chunk-5SXTVVUG.js";
|
|
||||||
import "./chunk-BUI4I457.js";
|
|
||||||
import "./chunk-CHJ5BV6S.js";
|
|
||||||
import "./chunk-XP22GJHQ.js";
|
|
||||||
import "./chunk-NYZY7JGI.js";
|
|
||||||
import "./chunk-FNEVJCCX.js";
|
|
||||||
import "./chunk-R33GOAXK.js";
|
|
||||||
import "./chunk-WHHJWK6B.js";
|
|
||||||
import {
|
|
||||||
selectSvgElement
|
|
||||||
} from "./chunk-B5NQPFQG.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
cleanAndMerge,
|
|
||||||
parseFontSize
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
clear,
|
|
||||||
configureSvgSize,
|
|
||||||
defaultConfig_default,
|
|
||||||
getAccDescription,
|
|
||||||
getAccTitle,
|
|
||||||
getConfig2,
|
|
||||||
getDiagramTitle,
|
|
||||||
setAccDescription,
|
|
||||||
setAccTitle,
|
|
||||||
setDiagramTitle
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
arc_default,
|
|
||||||
log,
|
|
||||||
ordinal,
|
|
||||||
pie_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.mjs
|
|
||||||
var DEFAULT_PIE_CONFIG = defaultConfig_default.pie;
|
|
||||||
var DEFAULT_PIE_DB = {
|
|
||||||
sections: /* @__PURE__ */ new Map(),
|
|
||||||
showData: false,
|
|
||||||
config: DEFAULT_PIE_CONFIG
|
|
||||||
};
|
|
||||||
var sections = DEFAULT_PIE_DB.sections;
|
|
||||||
var showData = DEFAULT_PIE_DB.showData;
|
|
||||||
var config = structuredClone(DEFAULT_PIE_CONFIG);
|
|
||||||
var getConfig22 = __name(() => structuredClone(config), "getConfig");
|
|
||||||
var clear2 = __name(() => {
|
|
||||||
sections = /* @__PURE__ */ new Map();
|
|
||||||
showData = DEFAULT_PIE_DB.showData;
|
|
||||||
clear();
|
|
||||||
}, "clear");
|
|
||||||
var addSection = __name(({ label, value }) => {
|
|
||||||
if (value < 0) {
|
|
||||||
throw new Error(
|
|
||||||
`"${label}" has invalid value: ${value}. Negative values are not allowed in pie charts. All slice values must be >= 0.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (!sections.has(label)) {
|
|
||||||
sections.set(label, value);
|
|
||||||
log.debug(`added new section: ${label}, with value: ${value}`);
|
|
||||||
}
|
|
||||||
}, "addSection");
|
|
||||||
var getSections = __name(() => sections, "getSections");
|
|
||||||
var setShowData = __name((toggle) => {
|
|
||||||
showData = toggle;
|
|
||||||
}, "setShowData");
|
|
||||||
var getShowData = __name(() => showData, "getShowData");
|
|
||||||
var db = {
|
|
||||||
getConfig: getConfig22,
|
|
||||||
clear: clear2,
|
|
||||||
setDiagramTitle,
|
|
||||||
getDiagramTitle,
|
|
||||||
setAccTitle,
|
|
||||||
getAccTitle,
|
|
||||||
setAccDescription,
|
|
||||||
getAccDescription,
|
|
||||||
addSection,
|
|
||||||
getSections,
|
|
||||||
setShowData,
|
|
||||||
getShowData
|
|
||||||
};
|
|
||||||
var populateDb = __name((ast, db2) => {
|
|
||||||
populateCommonDb(ast, db2);
|
|
||||||
db2.setShowData(ast.showData);
|
|
||||||
ast.sections.map(db2.addSection);
|
|
||||||
}, "populateDb");
|
|
||||||
var parser = {
|
|
||||||
parse: __name(async (input) => {
|
|
||||||
const ast = await parse("pie", input);
|
|
||||||
log.debug(ast);
|
|
||||||
populateDb(ast, db);
|
|
||||||
}, "parse")
|
|
||||||
};
|
|
||||||
var getStyles = __name((options) => `
|
|
||||||
.pieCircle{
|
|
||||||
stroke: ${options.pieStrokeColor};
|
|
||||||
stroke-width : ${options.pieStrokeWidth};
|
|
||||||
opacity : ${options.pieOpacity};
|
|
||||||
}
|
|
||||||
.pieOuterCircle{
|
|
||||||
stroke: ${options.pieOuterStrokeColor};
|
|
||||||
stroke-width: ${options.pieOuterStrokeWidth};
|
|
||||||
fill: none;
|
|
||||||
}
|
|
||||||
.pieTitleText {
|
|
||||||
text-anchor: middle;
|
|
||||||
font-size: ${options.pieTitleTextSize};
|
|
||||||
fill: ${options.pieTitleTextColor};
|
|
||||||
font-family: ${options.fontFamily};
|
|
||||||
}
|
|
||||||
.slice {
|
|
||||||
font-family: ${options.fontFamily};
|
|
||||||
fill: ${options.pieSectionTextColor};
|
|
||||||
font-size:${options.pieSectionTextSize};
|
|
||||||
// fill: white;
|
|
||||||
}
|
|
||||||
.legend text {
|
|
||||||
fill: ${options.pieLegendTextColor};
|
|
||||||
font-family: ${options.fontFamily};
|
|
||||||
font-size: ${options.pieLegendTextSize};
|
|
||||||
}
|
|
||||||
`, "getStyles");
|
|
||||||
var pieStyles_default = getStyles;
|
|
||||||
var createPieArcs = __name((sections2) => {
|
|
||||||
const sum = [...sections2.values()].reduce((acc, val) => acc + val, 0);
|
|
||||||
const pieData = [...sections2.entries()].map(([label, value]) => ({ label, value })).filter((d) => d.value / sum * 100 >= 1).sort((a, b) => b.value - a.value);
|
|
||||||
const pie = pie_default().value((d) => d.value);
|
|
||||||
return pie(pieData);
|
|
||||||
}, "createPieArcs");
|
|
||||||
var draw = __name((text, id, _version, diagObj) => {
|
|
||||||
log.debug("rendering pie chart\n" + text);
|
|
||||||
const db2 = diagObj.db;
|
|
||||||
const globalConfig = getConfig2();
|
|
||||||
const pieConfig = cleanAndMerge(db2.getConfig(), globalConfig.pie);
|
|
||||||
const MARGIN = 40;
|
|
||||||
const LEGEND_RECT_SIZE = 18;
|
|
||||||
const LEGEND_SPACING = 4;
|
|
||||||
const height = 450;
|
|
||||||
const pieWidth = height;
|
|
||||||
const svg = selectSvgElement(id);
|
|
||||||
const group = svg.append("g");
|
|
||||||
group.attr("transform", "translate(" + pieWidth / 2 + "," + height / 2 + ")");
|
|
||||||
const { themeVariables } = globalConfig;
|
|
||||||
let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);
|
|
||||||
outerStrokeWidth ??= 2;
|
|
||||||
const textPosition = pieConfig.textPosition;
|
|
||||||
const radius = Math.min(pieWidth, height) / 2 - MARGIN;
|
|
||||||
const arcGenerator = arc_default().innerRadius(0).outerRadius(radius);
|
|
||||||
const labelArcGenerator = arc_default().innerRadius(radius * textPosition).outerRadius(radius * textPosition);
|
|
||||||
group.append("circle").attr("cx", 0).attr("cy", 0).attr("r", radius + outerStrokeWidth / 2).attr("class", "pieOuterCircle");
|
|
||||||
const sections2 = db2.getSections();
|
|
||||||
const arcs = createPieArcs(sections2);
|
|
||||||
const myGeneratedColors = [
|
|
||||||
themeVariables.pie1,
|
|
||||||
themeVariables.pie2,
|
|
||||||
themeVariables.pie3,
|
|
||||||
themeVariables.pie4,
|
|
||||||
themeVariables.pie5,
|
|
||||||
themeVariables.pie6,
|
|
||||||
themeVariables.pie7,
|
|
||||||
themeVariables.pie8,
|
|
||||||
themeVariables.pie9,
|
|
||||||
themeVariables.pie10,
|
|
||||||
themeVariables.pie11,
|
|
||||||
themeVariables.pie12
|
|
||||||
];
|
|
||||||
let sum = 0;
|
|
||||||
sections2.forEach((section) => {
|
|
||||||
sum += section;
|
|
||||||
});
|
|
||||||
const filteredArcs = arcs.filter((datum) => (datum.data.value / sum * 100).toFixed(0) !== "0");
|
|
||||||
const color = ordinal(myGeneratedColors);
|
|
||||||
group.selectAll("mySlices").data(filteredArcs).enter().append("path").attr("d", arcGenerator).attr("fill", (datum) => {
|
|
||||||
return color(datum.data.label);
|
|
||||||
}).attr("class", "pieCircle");
|
|
||||||
group.selectAll("mySlices").data(filteredArcs).enter().append("text").text((datum) => {
|
|
||||||
return (datum.data.value / sum * 100).toFixed(0) + "%";
|
|
||||||
}).attr("transform", (datum) => {
|
|
||||||
return "translate(" + labelArcGenerator.centroid(datum) + ")";
|
|
||||||
}).style("text-anchor", "middle").attr("class", "slice");
|
|
||||||
group.append("text").text(db2.getDiagramTitle()).attr("x", 0).attr("y", -(height - 50) / 2).attr("class", "pieTitleText");
|
|
||||||
const allSectionData = [...sections2.entries()].map(([label, value]) => ({
|
|
||||||
label,
|
|
||||||
value
|
|
||||||
}));
|
|
||||||
const legend = group.selectAll(".legend").data(allSectionData).enter().append("g").attr("class", "legend").attr("transform", (_datum, index) => {
|
|
||||||
const height2 = LEGEND_RECT_SIZE + LEGEND_SPACING;
|
|
||||||
const offset = height2 * allSectionData.length / 2;
|
|
||||||
const horizontal = 12 * LEGEND_RECT_SIZE;
|
|
||||||
const vertical = index * height2 - offset;
|
|
||||||
return "translate(" + horizontal + "," + vertical + ")";
|
|
||||||
});
|
|
||||||
legend.append("rect").attr("width", LEGEND_RECT_SIZE).attr("height", LEGEND_RECT_SIZE).style("fill", (d) => color(d.label)).style("stroke", (d) => color(d.label));
|
|
||||||
legend.append("text").attr("x", LEGEND_RECT_SIZE + LEGEND_SPACING).attr("y", LEGEND_RECT_SIZE - LEGEND_SPACING).text((d) => {
|
|
||||||
if (db2.getShowData()) {
|
|
||||||
return `${d.label} [${d.value}]`;
|
|
||||||
}
|
|
||||||
return d.label;
|
|
||||||
});
|
|
||||||
const longestTextWidth = Math.max(
|
|
||||||
...legend.selectAll("text").nodes().map((node) => node?.getBoundingClientRect().width ?? 0)
|
|
||||||
);
|
|
||||||
const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;
|
|
||||||
svg.attr("viewBox", `0 0 ${totalWidth} ${height}`);
|
|
||||||
configureSvgSize(svg, height, totalWidth, pieConfig.useMaxWidth);
|
|
||||||
}, "draw");
|
|
||||||
var renderer = { draw };
|
|
||||||
var diagram = {
|
|
||||||
parser,
|
|
||||||
db,
|
|
||||||
renderer,
|
|
||||||
styles: pieStyles_default
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=pieDiagram-ADFJNKIX-GZV4UXNK.js.map
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,493 +0,0 @@
|
|||||||
import {
|
|
||||||
StateDB,
|
|
||||||
stateDiagram_default,
|
|
||||||
styles_default
|
|
||||||
} from "./chunk-UHQERBHF.js";
|
|
||||||
import "./chunk-PLWNSIKB.js";
|
|
||||||
import "./chunk-LHH5RO5K.js";
|
|
||||||
import "./chunk-WC2C7HAT.js";
|
|
||||||
import {
|
|
||||||
layout
|
|
||||||
} from "./chunk-YUMEK5VY.js";
|
|
||||||
import {
|
|
||||||
Graph
|
|
||||||
} from "./chunk-MEGNL3BT.js";
|
|
||||||
import "./chunk-6SIVX7OU.js";
|
|
||||||
import "./chunk-HICR2YSH.js";
|
|
||||||
import "./chunk-JJ4TL56I.js";
|
|
||||||
import "./chunk-2HSIUWWJ.js";
|
|
||||||
import "./chunk-EUUYHBKV.js";
|
|
||||||
import "./chunk-FTTOYZOY.js";
|
|
||||||
import "./chunk-NMWDZEZO.js";
|
|
||||||
import "./chunk-NGEE2U2J.js";
|
|
||||||
import {
|
|
||||||
utils_default
|
|
||||||
} from "./chunk-QVVRGVV3.js";
|
|
||||||
import "./chunk-CMK64ICG.js";
|
|
||||||
import {
|
|
||||||
common_default,
|
|
||||||
configureSvgSize,
|
|
||||||
getConfig2,
|
|
||||||
getUrl
|
|
||||||
} from "./chunk-BFCVI5XI.js";
|
|
||||||
import "./chunk-M5X7JH4I.js";
|
|
||||||
import {
|
|
||||||
__name,
|
|
||||||
basis_default,
|
|
||||||
line_default,
|
|
||||||
log,
|
|
||||||
select_default
|
|
||||||
} from "./chunk-I65GBZ6F.js";
|
|
||||||
import "./chunk-TKSB4YUA.js";
|
|
||||||
|
|
||||||
// node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-FKZM4ZOC.mjs
|
|
||||||
var drawStartState = __name((g) => g.append("circle").attr("class", "start-state").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit), "drawStartState");
|
|
||||||
var drawDivider = __name((g) => g.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", getConfig2().state.textHeight).attr("class", "divider").attr("x2", getConfig2().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider");
|
|
||||||
var drawSimpleState = __name((g, stateDef) => {
|
|
||||||
const state = g.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 2 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id);
|
|
||||||
const classBox = state.node().getBBox();
|
|
||||||
g.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", classBox.width + 2 * getConfig2().state.padding).attr("height", classBox.height + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius);
|
|
||||||
return state;
|
|
||||||
}, "drawSimpleState");
|
|
||||||
var drawDescrState = __name((g, stateDef) => {
|
|
||||||
const addTspan = __name(function(textEl, txt, isFirst2) {
|
|
||||||
const tSpan = textEl.append("tspan").attr("x", 2 * getConfig2().state.padding).text(txt);
|
|
||||||
if (!isFirst2) {
|
|
||||||
tSpan.attr("dy", getConfig2().state.textHeight);
|
|
||||||
}
|
|
||||||
}, "addTspan");
|
|
||||||
const title = g.append("text").attr("x", 2 * getConfig2().state.padding).attr("y", getConfig2().state.textHeight + 1.3 * getConfig2().state.padding).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.descriptions[0]);
|
|
||||||
const titleBox = title.node().getBBox();
|
|
||||||
const titleHeight = titleBox.height;
|
|
||||||
const description = g.append("text").attr("x", getConfig2().state.padding).attr(
|
|
||||||
"y",
|
|
||||||
titleHeight + getConfig2().state.padding * 0.4 + getConfig2().state.dividerMargin + getConfig2().state.textHeight
|
|
||||||
).attr("class", "state-description");
|
|
||||||
let isFirst = true;
|
|
||||||
let isSecond = true;
|
|
||||||
stateDef.descriptions.forEach(function(descr) {
|
|
||||||
if (!isFirst) {
|
|
||||||
addTspan(description, descr, isSecond);
|
|
||||||
isSecond = false;
|
|
||||||
}
|
|
||||||
isFirst = false;
|
|
||||||
});
|
|
||||||
const descrLine = g.append("line").attr("x1", getConfig2().state.padding).attr("y1", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("y2", getConfig2().state.padding + titleHeight + getConfig2().state.dividerMargin / 2).attr("class", "descr-divider");
|
|
||||||
const descrBox = description.node().getBBox();
|
|
||||||
const width = Math.max(descrBox.width, titleBox.width);
|
|
||||||
descrLine.attr("x2", width + 3 * getConfig2().state.padding);
|
|
||||||
g.insert("rect", ":first-child").attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding).attr("width", width + 2 * getConfig2().state.padding).attr("height", descrBox.height + titleHeight + 2 * getConfig2().state.padding).attr("rx", getConfig2().state.radius);
|
|
||||||
return g;
|
|
||||||
}, "drawDescrState");
|
|
||||||
var addTitleAndBox = __name((g, stateDef, altBkg) => {
|
|
||||||
const pad = getConfig2().state.padding;
|
|
||||||
const dblPad = 2 * getConfig2().state.padding;
|
|
||||||
const orgBox = g.node().getBBox();
|
|
||||||
const orgWidth = orgBox.width;
|
|
||||||
const orgX = orgBox.x;
|
|
||||||
const title = g.append("text").attr("x", 0).attr("y", getConfig2().state.titleShift).attr("font-size", getConfig2().state.fontSize).attr("class", "state-title").text(stateDef.id);
|
|
||||||
const titleBox = title.node().getBBox();
|
|
||||||
const titleWidth = titleBox.width + dblPad;
|
|
||||||
let width = Math.max(titleWidth, orgWidth);
|
|
||||||
if (width === orgWidth) {
|
|
||||||
width = width + dblPad;
|
|
||||||
}
|
|
||||||
let startX;
|
|
||||||
const graphBox = g.node().getBBox();
|
|
||||||
if (stateDef.doc) {
|
|
||||||
}
|
|
||||||
startX = orgX - pad;
|
|
||||||
if (titleWidth > orgWidth) {
|
|
||||||
startX = (orgWidth - width) / 2 + pad;
|
|
||||||
}
|
|
||||||
if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {
|
|
||||||
startX = orgX - (titleWidth - orgWidth) / 2;
|
|
||||||
}
|
|
||||||
const lineY = 1 - getConfig2().state.textHeight;
|
|
||||||
g.insert("rect", ":first-child").attr("x", startX).attr("y", lineY).attr("class", altBkg ? "alt-composit" : "composit").attr("width", width).attr(
|
|
||||||
"height",
|
|
||||||
graphBox.height + getConfig2().state.textHeight + getConfig2().state.titleShift + 1
|
|
||||||
).attr("rx", "0");
|
|
||||||
title.attr("x", startX + pad);
|
|
||||||
if (titleWidth <= orgWidth) {
|
|
||||||
title.attr("x", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);
|
|
||||||
}
|
|
||||||
g.insert("rect", ":first-child").attr("x", startX).attr(
|
|
||||||
"y",
|
|
||||||
getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding
|
|
||||||
).attr("width", width).attr("height", getConfig2().state.textHeight * 3).attr("rx", getConfig2().state.radius);
|
|
||||||
g.insert("rect", ":first-child").attr("x", startX).attr(
|
|
||||||
"y",
|
|
||||||
getConfig2().state.titleShift - getConfig2().state.textHeight - getConfig2().state.padding
|
|
||||||
).attr("width", width).attr("height", graphBox.height + 3 + 2 * getConfig2().state.textHeight).attr("rx", getConfig2().state.radius);
|
|
||||||
return g;
|
|
||||||
}, "addTitleAndBox");
|
|
||||||
var drawEndState = __name((g) => {
|
|
||||||
g.append("circle").attr("class", "end-state-outer").attr("r", getConfig2().state.sizeUnit + getConfig2().state.miniPadding).attr(
|
|
||||||
"cx",
|
|
||||||
getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding
|
|
||||||
).attr(
|
|
||||||
"cy",
|
|
||||||
getConfig2().state.padding + getConfig2().state.sizeUnit + getConfig2().state.miniPadding
|
|
||||||
);
|
|
||||||
return g.append("circle").attr("class", "end-state-inner").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit + 2).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit + 2);
|
|
||||||
}, "drawEndState");
|
|
||||||
var drawForkJoinState = __name((g, stateDef) => {
|
|
||||||
let width = getConfig2().state.forkWidth;
|
|
||||||
let height = getConfig2().state.forkHeight;
|
|
||||||
if (stateDef.parentId) {
|
|
||||||
let tmp = width;
|
|
||||||
width = height;
|
|
||||||
height = tmp;
|
|
||||||
}
|
|
||||||
return g.append("rect").style("stroke", "black").style("fill", "black").attr("width", width).attr("height", height).attr("x", getConfig2().state.padding).attr("y", getConfig2().state.padding);
|
|
||||||
}, "drawForkJoinState");
|
|
||||||
var _drawLongText = __name((_text, x, y, g) => {
|
|
||||||
let textHeight = 0;
|
|
||||||
const textElem = g.append("text");
|
|
||||||
textElem.style("text-anchor", "start");
|
|
||||||
textElem.attr("class", "noteText");
|
|
||||||
let text = _text.replace(/\r\n/g, "<br/>");
|
|
||||||
text = text.replace(/\n/g, "<br/>");
|
|
||||||
const lines = text.split(common_default.lineBreakRegex);
|
|
||||||
let tHeight = 1.25 * getConfig2().state.noteMargin;
|
|
||||||
for (const line2 of lines) {
|
|
||||||
const txt = line2.trim();
|
|
||||||
if (txt.length > 0) {
|
|
||||||
const span = textElem.append("tspan");
|
|
||||||
span.text(txt);
|
|
||||||
if (tHeight === 0) {
|
|
||||||
const textBounds = span.node().getBBox();
|
|
||||||
tHeight += textBounds.height;
|
|
||||||
}
|
|
||||||
textHeight += tHeight;
|
|
||||||
span.attr("x", x + getConfig2().state.noteMargin);
|
|
||||||
span.attr("y", y + textHeight + 1.25 * getConfig2().state.noteMargin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return { textWidth: textElem.node().getBBox().width, textHeight };
|
|
||||||
}, "_drawLongText");
|
|
||||||
var drawNote = __name((text, g) => {
|
|
||||||
g.attr("class", "state-note");
|
|
||||||
const note = g.append("rect").attr("x", 0).attr("y", getConfig2().state.padding);
|
|
||||||
const rectElem = g.append("g");
|
|
||||||
const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);
|
|
||||||
note.attr("height", textHeight + 2 * getConfig2().state.noteMargin);
|
|
||||||
note.attr("width", textWidth + getConfig2().state.noteMargin * 2);
|
|
||||||
return note;
|
|
||||||
}, "drawNote");
|
|
||||||
var drawState = __name(function(elem, stateDef) {
|
|
||||||
const id = stateDef.id;
|
|
||||||
const stateInfo = {
|
|
||||||
id,
|
|
||||||
label: stateDef.id,
|
|
||||||
width: 0,
|
|
||||||
height: 0
|
|
||||||
};
|
|
||||||
const g = elem.append("g").attr("id", id).attr("class", "stateGroup");
|
|
||||||
if (stateDef.type === "start") {
|
|
||||||
drawStartState(g);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "end") {
|
|
||||||
drawEndState(g);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "fork" || stateDef.type === "join") {
|
|
||||||
drawForkJoinState(g, stateDef);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "note") {
|
|
||||||
drawNote(stateDef.note.text, g);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "divider") {
|
|
||||||
drawDivider(g);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "default" && stateDef.descriptions.length === 0) {
|
|
||||||
drawSimpleState(g, stateDef);
|
|
||||||
}
|
|
||||||
if (stateDef.type === "default" && stateDef.descriptions.length > 0) {
|
|
||||||
drawDescrState(g, stateDef);
|
|
||||||
}
|
|
||||||
const stateBox = g.node().getBBox();
|
|
||||||
stateInfo.width = stateBox.width + 2 * getConfig2().state.padding;
|
|
||||||
stateInfo.height = stateBox.height + 2 * getConfig2().state.padding;
|
|
||||||
return stateInfo;
|
|
||||||
}, "drawState");
|
|
||||||
var edgeCount = 0;
|
|
||||||
var drawEdge = __name(function(elem, path, relation) {
|
|
||||||
const getRelationType = __name(function(type) {
|
|
||||||
switch (type) {
|
|
||||||
case StateDB.relationType.AGGREGATION:
|
|
||||||
return "aggregation";
|
|
||||||
case StateDB.relationType.EXTENSION:
|
|
||||||
return "extension";
|
|
||||||
case StateDB.relationType.COMPOSITION:
|
|
||||||
return "composition";
|
|
||||||
case StateDB.relationType.DEPENDENCY:
|
|
||||||
return "dependency";
|
|
||||||
}
|
|
||||||
}, "getRelationType");
|
|
||||||
path.points = path.points.filter((p) => !Number.isNaN(p.y));
|
|
||||||
const lineData = path.points;
|
|
||||||
const lineFunction = line_default().x(function(d) {
|
|
||||||
return d.x;
|
|
||||||
}).y(function(d) {
|
|
||||||
return d.y;
|
|
||||||
}).curve(basis_default);
|
|
||||||
const svgPath = elem.append("path").attr("d", lineFunction(lineData)).attr("id", "edge" + edgeCount).attr("class", "transition");
|
|
||||||
let url = "";
|
|
||||||
if (getConfig2().state.arrowMarkerAbsolute) {
|
|
||||||
url = getUrl(true);
|
|
||||||
}
|
|
||||||
svgPath.attr(
|
|
||||||
"marker-end",
|
|
||||||
"url(" + url + "#" + getRelationType(StateDB.relationType.DEPENDENCY) + "End)"
|
|
||||||
);
|
|
||||||
if (relation.title !== void 0) {
|
|
||||||
const label = elem.append("g").attr("class", "stateLabel");
|
|
||||||
const { x, y } = utils_default.calcLabelPosition(path.points);
|
|
||||||
const rows = common_default.getRows(relation.title);
|
|
||||||
let titleHeight = 0;
|
|
||||||
const titleRows = [];
|
|
||||||
let maxWidth = 0;
|
|
||||||
let minX = 0;
|
|
||||||
for (let i = 0; i <= rows.length; i++) {
|
|
||||||
const title = label.append("text").attr("text-anchor", "middle").text(rows[i]).attr("x", x).attr("y", y + titleHeight);
|
|
||||||
const boundsTmp = title.node().getBBox();
|
|
||||||
maxWidth = Math.max(maxWidth, boundsTmp.width);
|
|
||||||
minX = Math.min(minX, boundsTmp.x);
|
|
||||||
log.info(boundsTmp.x, x, y + titleHeight);
|
|
||||||
if (titleHeight === 0) {
|
|
||||||
const titleBox = title.node().getBBox();
|
|
||||||
titleHeight = titleBox.height;
|
|
||||||
log.info("Title height", titleHeight, y);
|
|
||||||
}
|
|
||||||
titleRows.push(title);
|
|
||||||
}
|
|
||||||
let boxHeight = titleHeight * rows.length;
|
|
||||||
if (rows.length > 1) {
|
|
||||||
const heightAdj = (rows.length - 1) * titleHeight * 0.5;
|
|
||||||
titleRows.forEach((title, i) => title.attr("y", y + i * titleHeight - heightAdj));
|
|
||||||
boxHeight = titleHeight * rows.length;
|
|
||||||
}
|
|
||||||
const bounds = label.node().getBBox();
|
|
||||||
label.insert("rect", ":first-child").attr("class", "box").attr("x", x - maxWidth / 2 - getConfig2().state.padding / 2).attr("y", y - boxHeight / 2 - getConfig2().state.padding / 2 - 3.5).attr("width", maxWidth + getConfig2().state.padding).attr("height", boxHeight + getConfig2().state.padding);
|
|
||||||
log.info(bounds);
|
|
||||||
}
|
|
||||||
edgeCount++;
|
|
||||||
}, "drawEdge");
|
|
||||||
var conf;
|
|
||||||
var transformationLog = {};
|
|
||||||
var setConf = __name(function() {
|
|
||||||
}, "setConf");
|
|
||||||
var insertMarkers = __name(function(elem) {
|
|
||||||
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 19,7 L9,13 L14,7 L9,1 Z");
|
|
||||||
}, "insertMarkers");
|
|
||||||
var draw = __name(function(text, id, _version, diagObj) {
|
|
||||||
conf = getConfig2().state;
|
|
||||||
const securityLevel = getConfig2().securityLevel;
|
|
||||||
let sandboxElement;
|
|
||||||
if (securityLevel === "sandbox") {
|
|
||||||
sandboxElement = select_default("#i" + id);
|
|
||||||
}
|
|
||||||
const root = securityLevel === "sandbox" ? select_default(sandboxElement.nodes()[0].contentDocument.body) : select_default("body");
|
|
||||||
const doc = securityLevel === "sandbox" ? sandboxElement.nodes()[0].contentDocument : document;
|
|
||||||
log.debug("Rendering diagram " + text);
|
|
||||||
const diagram2 = root.select(`[id='${id}']`);
|
|
||||||
insertMarkers(diagram2);
|
|
||||||
const rootDoc = diagObj.db.getRootDoc();
|
|
||||||
renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);
|
|
||||||
const padding = conf.padding;
|
|
||||||
const bounds = diagram2.node().getBBox();
|
|
||||||
const width = bounds.width + padding * 2;
|
|
||||||
const height = bounds.height + padding * 2;
|
|
||||||
const svgWidth = width * 1.75;
|
|
||||||
configureSvgSize(diagram2, height, svgWidth, conf.useMaxWidth);
|
|
||||||
diagram2.attr(
|
|
||||||
"viewBox",
|
|
||||||
`${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + " " + height
|
|
||||||
);
|
|
||||||
}, "draw");
|
|
||||||
var getLabelWidth = __name((text) => {
|
|
||||||
return text ? text.length * conf.fontSizeFactor : 1;
|
|
||||||
}, "getLabelWidth");
|
|
||||||
var renderDoc = __name((doc, diagram2, parentId, altBkg, root, domDocument, diagObj) => {
|
|
||||||
const graph = new Graph({
|
|
||||||
compound: true,
|
|
||||||
multigraph: true
|
|
||||||
});
|
|
||||||
let i;
|
|
||||||
let edgeFreeDoc = true;
|
|
||||||
for (i = 0; i < doc.length; i++) {
|
|
||||||
if (doc[i].stmt === "relation") {
|
|
||||||
edgeFreeDoc = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (parentId) {
|
|
||||||
graph.setGraph({
|
|
||||||
rankdir: "LR",
|
|
||||||
multigraph: true,
|
|
||||||
compound: true,
|
|
||||||
// acyclicer: 'greedy',
|
|
||||||
ranker: "tight-tree",
|
|
||||||
ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,
|
|
||||||
nodeSep: edgeFreeDoc ? 1 : 50,
|
|
||||||
isMultiGraph: true
|
|
||||||
// ranksep: 5,
|
|
||||||
// nodesep: 1
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
graph.setGraph({
|
|
||||||
rankdir: "TB",
|
|
||||||
multigraph: true,
|
|
||||||
compound: true,
|
|
||||||
// isCompound: true,
|
|
||||||
// acyclicer: 'greedy',
|
|
||||||
// ranker: 'longest-path'
|
|
||||||
ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,
|
|
||||||
nodeSep: edgeFreeDoc ? 1 : 50,
|
|
||||||
ranker: "tight-tree",
|
|
||||||
// ranker: 'network-simplex'
|
|
||||||
isMultiGraph: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
graph.setDefaultEdgeLabel(function() {
|
|
||||||
return {};
|
|
||||||
});
|
|
||||||
const states = diagObj.db.getStates();
|
|
||||||
const relations = diagObj.db.getRelations();
|
|
||||||
const keys = Object.keys(states);
|
|
||||||
let first = true;
|
|
||||||
for (const key of keys) {
|
|
||||||
const stateDef = states[key];
|
|
||||||
if (parentId) {
|
|
||||||
stateDef.parentId = parentId;
|
|
||||||
}
|
|
||||||
let node;
|
|
||||||
if (stateDef.doc) {
|
|
||||||
let sub = diagram2.append("g").attr("id", stateDef.id).attr("class", "stateGroup");
|
|
||||||
node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);
|
|
||||||
if (first) {
|
|
||||||
sub = addTitleAndBox(sub, stateDef, altBkg);
|
|
||||||
let boxBounds = sub.node().getBBox();
|
|
||||||
node.width = boxBounds.width;
|
|
||||||
node.height = boxBounds.height + conf.padding / 2;
|
|
||||||
transformationLog[stateDef.id] = { y: conf.compositTitleSize };
|
|
||||||
} else {
|
|
||||||
let boxBounds = sub.node().getBBox();
|
|
||||||
node.width = boxBounds.width;
|
|
||||||
node.height = boxBounds.height;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
node = drawState(diagram2, stateDef, graph);
|
|
||||||
}
|
|
||||||
if (stateDef.note) {
|
|
||||||
const noteDef = {
|
|
||||||
descriptions: [],
|
|
||||||
id: stateDef.id + "-note",
|
|
||||||
note: stateDef.note,
|
|
||||||
type: "note"
|
|
||||||
};
|
|
||||||
const note = drawState(diagram2, noteDef, graph);
|
|
||||||
if (stateDef.note.position === "left of") {
|
|
||||||
graph.setNode(node.id + "-note", note);
|
|
||||||
graph.setNode(node.id, node);
|
|
||||||
} else {
|
|
||||||
graph.setNode(node.id, node);
|
|
||||||
graph.setNode(node.id + "-note", note);
|
|
||||||
}
|
|
||||||
graph.setParent(node.id, node.id + "-group");
|
|
||||||
graph.setParent(node.id + "-note", node.id + "-group");
|
|
||||||
} else {
|
|
||||||
graph.setNode(node.id, node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.debug("Count=", graph.nodeCount(), graph);
|
|
||||||
let cnt = 0;
|
|
||||||
relations.forEach(function(relation) {
|
|
||||||
cnt++;
|
|
||||||
log.debug("Setting edge", relation);
|
|
||||||
graph.setEdge(
|
|
||||||
relation.id1,
|
|
||||||
relation.id2,
|
|
||||||
{
|
|
||||||
relation,
|
|
||||||
width: getLabelWidth(relation.title),
|
|
||||||
height: conf.labelHeight * common_default.getRows(relation.title).length,
|
|
||||||
labelpos: "c"
|
|
||||||
},
|
|
||||||
"id" + cnt
|
|
||||||
);
|
|
||||||
});
|
|
||||||
layout(graph);
|
|
||||||
log.debug("Graph after layout", graph.nodes());
|
|
||||||
const svgElem = diagram2.node();
|
|
||||||
graph.nodes().forEach(function(v) {
|
|
||||||
if (v !== void 0 && graph.node(v) !== void 0) {
|
|
||||||
log.warn("Node " + v + ": " + JSON.stringify(graph.node(v)));
|
|
||||||
root.select("#" + svgElem.id + " #" + v).attr(
|
|
||||||
"transform",
|
|
||||||
"translate(" + (graph.node(v).x - graph.node(v).width / 2) + "," + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + " )"
|
|
||||||
);
|
|
||||||
root.select("#" + svgElem.id + " #" + v).attr("data-x-shift", graph.node(v).x - graph.node(v).width / 2);
|
|
||||||
const dividers = domDocument.querySelectorAll("#" + svgElem.id + " #" + v + " .divider");
|
|
||||||
dividers.forEach((divider) => {
|
|
||||||
const parent = divider.parentElement;
|
|
||||||
let pWidth = 0;
|
|
||||||
let pShift = 0;
|
|
||||||
if (parent) {
|
|
||||||
if (parent.parentElement) {
|
|
||||||
pWidth = parent.parentElement.getBBox().width;
|
|
||||||
}
|
|
||||||
pShift = parseInt(parent.getAttribute("data-x-shift"), 10);
|
|
||||||
if (Number.isNaN(pShift)) {
|
|
||||||
pShift = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
divider.setAttribute("x1", 0 - pShift + 8);
|
|
||||||
divider.setAttribute("x2", pWidth - pShift - 8);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
log.debug("No Node " + v + ": " + JSON.stringify(graph.node(v)));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let stateBox = svgElem.getBBox();
|
|
||||||
graph.edges().forEach(function(e) {
|
|
||||||
if (e !== void 0 && graph.edge(e) !== void 0) {
|
|
||||||
log.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(graph.edge(e)));
|
|
||||||
drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
stateBox = svgElem.getBBox();
|
|
||||||
const stateInfo = {
|
|
||||||
id: parentId ? parentId : "root",
|
|
||||||
label: parentId ? parentId : "root",
|
|
||||||
width: 0,
|
|
||||||
height: 0
|
|
||||||
};
|
|
||||||
stateInfo.width = stateBox.width + 2 * conf.padding;
|
|
||||||
stateInfo.height = stateBox.height + 2 * conf.padding;
|
|
||||||
log.debug("Doc rendered", stateInfo, graph);
|
|
||||||
return stateInfo;
|
|
||||||
}, "renderDoc");
|
|
||||||
var stateRenderer_default = {
|
|
||||||
setConf,
|
|
||||||
draw
|
|
||||||
};
|
|
||||||
var diagram = {
|
|
||||||
parser: stateDiagram_default,
|
|
||||||
get db() {
|
|
||||||
return new StateDB(1);
|
|
||||||
},
|
|
||||||
renderer: stateRenderer_default,
|
|
||||||
styles: styles_default,
|
|
||||||
init: __name((cnf) => {
|
|
||||||
if (!cnf.state) {
|
|
||||||
cnf.state = {};
|
|
||||||
}
|
|
||||||
cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
|
|
||||||
}, "init")
|
|
||||||
};
|
|
||||||
export {
|
|
||||||
diagram
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=stateDiagram-FKZM4ZOC-KXMQ5JNR.js.map
|
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user