@diagrammo/dgmo 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.cjs +31 -25
- package/dist/advanced.d.cts +3 -855
- package/dist/advanced.d.ts +3 -855
- package/dist/advanced.js +541 -70101
- package/dist/analyzer-UYKBXAKR.js +15 -0
- package/dist/auto.cjs +500 -341
- package/dist/auto.css +342 -159
- package/dist/auto.d.cts +10 -8
- package/dist/auto.d.ts +10 -8
- package/dist/auto.js +373 -265
- package/dist/auto.mjs +500 -341
- package/dist/block.cjs +31 -25
- package/dist/block.js +83 -69411
- package/dist/calculator-LDYQCDDY.js +11 -0
- package/dist/charts-d3-QOZHKTCT.js +25 -0
- package/dist/chunk-2DXMZRWJ.js +800 -0
- package/dist/chunk-2LACINWN.js +786 -0
- package/dist/chunk-33LCUH4H.js +893 -0
- package/dist/chunk-3CIOJ5YJ.js +35 -0
- package/dist/chunk-3HDBAXF5.js +86 -0
- package/dist/chunk-3JLKYGBQ.js +290 -0
- package/dist/chunk-3MQQNXPD.js +415 -0
- package/dist/chunk-3R5POCTZ.js +967 -0
- package/dist/chunk-3SMGIJDD.js +112 -0
- package/dist/chunk-44CM72SQ.js +409 -0
- package/dist/chunk-4GRI7MEB.js +1604 -0
- package/dist/chunk-4OHACBGX.js +606 -0
- package/dist/chunk-5DH3KYFH.js +21 -0
- package/dist/chunk-5MLYVTYM.js +76 -0
- package/dist/chunk-5QXL4NYS.js +553 -0
- package/dist/chunk-5WRI5ZAA.js +31 -0
- package/dist/chunk-6EK55ART.js +117 -0
- package/dist/chunk-6FZYCKXB.js +2065 -0
- package/dist/chunk-6HO5ZTXK.js +277 -0
- package/dist/chunk-6KFWC4CO.js +7 -0
- package/dist/chunk-6MTWIQVO.js +121 -0
- package/dist/chunk-6NYWYNBI.js +329 -0
- package/dist/chunk-6SM5NJQH.js +620 -0
- package/dist/chunk-725LDASD.js +422 -0
- package/dist/chunk-76OWZ3BA.js +130 -0
- package/dist/chunk-7JEGTRLD.js +338 -0
- package/dist/chunk-A44USUV7.js +923 -0
- package/dist/chunk-A4GOY3PE.js +25 -0
- package/dist/chunk-A4VFQH5G.js +251 -0
- package/dist/chunk-AELOBFW5.js +375 -0
- package/dist/chunk-AN2MOO5T.js +522 -0
- package/dist/chunk-BMR4CIEO.js +41 -0
- package/dist/chunk-BS7SV7C3.js +51 -0
- package/dist/chunk-BUPDIHML.js +613 -0
- package/dist/chunk-BUVJFRPY.js +887 -0
- package/dist/chunk-C3Z4DX3V.js +112 -0
- package/dist/chunk-CI2G3OEB.js +1818 -0
- package/dist/chunk-CKNVO24D.js +54 -0
- package/dist/chunk-CUVHQHZ7.js +391 -0
- package/dist/chunk-CXK4DZH3.js +114 -0
- package/dist/chunk-DKEPS5LH.js +315 -0
- package/dist/chunk-DU7W62N5.js +487 -0
- package/dist/chunk-DZAQBW35.js +751 -0
- package/dist/chunk-EB6FPQUP.js +316 -0
- package/dist/chunk-EMS2SK26.js +376 -0
- package/dist/chunk-ERLBPDGU.js +510 -0
- package/dist/chunk-EVCVDTXE.js +732 -0
- package/dist/chunk-FCIIHT24.js +384 -0
- package/dist/chunk-FFUN5D66.js +97 -0
- package/dist/chunk-FITOLXSX.js +714 -0
- package/dist/chunk-FMDSF3OV.js +68 -0
- package/dist/chunk-FNB3PNGF.js +410 -0
- package/dist/chunk-G2H74XJZ.js +2104 -0
- package/dist/chunk-GMR5MFHJ.js +339 -0
- package/dist/chunk-H6PI3KJT.js +305 -0
- package/dist/chunk-I46X5VUA.js +59 -0
- package/dist/chunk-I5IGB56C.js +255 -0
- package/dist/chunk-IH6ZMVQ5.js +3950 -0
- package/dist/chunk-IJZFN3HM.js +463 -0
- package/dist/chunk-IPWPWM6R.js +3079 -0
- package/dist/chunk-IYULMRBE.js +23 -0
- package/dist/chunk-IZMRON6C.js +167 -0
- package/dist/chunk-J5FIXQRT.js +813 -0
- package/dist/chunk-JED6ZDEE.js +73 -0
- package/dist/chunk-JEUJOX5X.js +136 -0
- package/dist/chunk-JM4LEPY3.js +436 -0
- package/dist/chunk-L3UHP6TD.js +101 -0
- package/dist/chunk-L66GEFB6.js +524 -0
- package/dist/chunk-LIOHW36Z.js +469 -0
- package/dist/chunk-LP7EC4MI.js +16 -0
- package/dist/chunk-MITI6NOL.js +548 -0
- package/dist/chunk-MO5YHHMQ.js +168 -0
- package/dist/chunk-MZSBFAPJ.js +885 -0
- package/dist/chunk-NNAAJVBU.js +9 -0
- package/dist/chunk-NOTA6TEI.js +47 -0
- package/dist/chunk-NURGB5Z4.js +335 -0
- package/dist/chunk-NX4EQS3U.js +1062 -0
- package/dist/chunk-NXMESY4J.js +1 -0
- package/dist/chunk-OJR3MQYV.js +1458 -0
- package/dist/chunk-OURHMODR.js +454 -0
- package/dist/chunk-P235SVAH.js +1057 -0
- package/dist/chunk-P4RH4OSP.js +1038 -0
- package/dist/chunk-P6T66CCZ.js +226 -0
- package/dist/chunk-PBAHEPLQ.js +223 -0
- package/dist/chunk-PBHE5UG6.js +1530 -0
- package/dist/chunk-PDKUANDZ.js +35 -0
- package/dist/chunk-PWIHZ6NJ.js +296 -0
- package/dist/chunk-QEBUY5NY.js +1685 -0
- package/dist/chunk-QLCCJEJI.js +253 -0
- package/dist/chunk-QOOUC2J5.js +52 -0
- package/dist/chunk-QYTPPDAO.js +402 -0
- package/dist/chunk-R3XI2VC7.js +801 -0
- package/dist/chunk-RCERWOJR.js +154 -0
- package/dist/chunk-RJE5JTVK.js +362 -0
- package/dist/chunk-RTLBSQ3G.js +1155 -0
- package/dist/chunk-RUNNI6VE.js +448 -0
- package/dist/chunk-RVMRZAPB.js +354 -0
- package/dist/chunk-RYEGFMUO.js +955 -0
- package/dist/chunk-RZCF2VVM.js +528 -0
- package/dist/chunk-SML67VPV.js +1025 -0
- package/dist/chunk-SQ7IY53Q.js +44 -0
- package/dist/chunk-SQAG3UXH.js +161 -0
- package/dist/chunk-SRTU6HMQ.js +1851 -0
- package/dist/chunk-T2OE3YQB.js +550 -0
- package/dist/chunk-T3UBLACL.js +299 -0
- package/dist/chunk-TLVIHFRO.js +296 -0
- package/dist/chunk-TYS6CSS5.js +52 -0
- package/dist/chunk-U6EQI3U6.js +130 -0
- package/dist/chunk-UJ4FJLBF.js +86 -0
- package/dist/chunk-ULOEATBZ.js +347 -0
- package/dist/chunk-UNCCZ3NU.js +127 -0
- package/dist/chunk-USZW2HHU.js +197 -0
- package/dist/chunk-UWN33VNX.js +1610 -0
- package/dist/chunk-UZ7EZW3B.js +40 -0
- package/dist/chunk-VOKGH627.js +37 -0
- package/dist/chunk-WBRZJOEC.js +204 -0
- package/dist/chunk-WCSOJFU3.js +380 -0
- package/dist/chunk-WCT3NYCV.js +160 -0
- package/dist/chunk-WVAJFAIA.js +529 -0
- package/dist/chunk-X5LCYCL5.js +394 -0
- package/dist/chunk-XAKEUMEJ.js +1256 -0
- package/dist/chunk-Y2ZE3MSG.js +590 -0
- package/dist/chunk-Y3J7VR52.js +646 -0
- package/dist/chunk-Y5QGVTVC.js +33 -0
- package/dist/chunk-YAA6IID3.js +548 -0
- package/dist/chunk-YGJTDXVR.js +692 -0
- package/dist/chunk-YRYKTYMQ.js +186 -0
- package/dist/chunk-YYVTBZZC.js +61 -0
- package/dist/chunk-Z5CGSFJB.js +647 -0
- package/dist/chunk-Z72XRXD4.js +787 -0
- package/dist/chunk-ZGR7ULFJ.js +978 -0
- package/dist/chunk-ZJEL4H2R.js +851 -0
- package/dist/chunk-ZO27FGJS.js +554 -0
- package/dist/cli.cjs +112 -112
- package/dist/collapse-CLPJD2RL.js +11 -0
- package/dist/collapse-SLINJQW6.js +9 -0
- package/dist/collapse-ZWUFFCK2.js +9 -0
- package/dist/compute-G55RG53N.js +8 -0
- package/dist/dgmo-router-DZCIDUO5.js +73 -0
- package/dist/dimensions-J3FHIMJ6.js +22 -0
- package/dist/element.cjs +492 -325
- package/dist/element.js +367 -259
- package/dist/element.mjs +492 -325
- package/dist/flowchart-parser-ZNSKIBVR.js +21 -0
- package/dist/flowchart-renderer-ZAEOL4DX.js +35 -0
- package/dist/index.cjs +34 -28
- package/dist/index.d.cts +3 -469
- package/dist/index.d.ts +3 -469
- package/dist/index.js +137 -69679
- package/dist/layout-46N4JJYK.js +17 -0
- package/dist/layout-5RA6QWR6.js +26 -0
- package/dist/layout-5T6RH5M6.js +14 -0
- package/dist/layout-7QXCNOVS.js +13 -0
- package/dist/layout-EE6GE46Y.js +17 -0
- package/dist/layout-G23F7LDH.js +9 -0
- package/dist/layout-HRBZPFCN.js +23 -0
- package/dist/layout-HWDSRX5E.js +20 -0
- package/dist/layout-HYZPWAK5.js +18 -0
- package/dist/layout-N76NR4ZO.js +19 -0
- package/dist/layout-OB3RI63S.js +14 -0
- package/dist/layout-S2QBYSK2.js +15 -0
- package/dist/layout-UM5F4DJB.js +15 -0
- package/dist/layout-search-OYV77HHS.js +1655 -0
- package/dist/load-data-EHDDZ5ZS.js +8 -0
- package/dist/palettes-PRJ2RI6D.js +56 -0
- package/dist/parser-2MFP2H2E.js +11 -0
- package/dist/parser-3STE62GB.js +21 -0
- package/dist/parser-4FL2CMDG.js +18 -0
- package/dist/parser-4OGOBJJ4.js +13 -0
- package/dist/parser-6BTRLKRZ.js +15 -0
- package/dist/parser-AQETEVRW.js +21 -0
- package/dist/parser-CFZD5IBL.js +12 -0
- package/dist/parser-FUSKFGZN.js +16 -0
- package/dist/parser-I6KXEYFK.js +13 -0
- package/dist/parser-IXSZZQHY.js +18 -0
- package/dist/parser-JAL2HD4I.js +13 -0
- package/dist/parser-KNSQSKQO.js +20 -0
- package/dist/parser-N5O4IHUN.js +13 -0
- package/dist/parser-NGU3ETO6.js +16 -0
- package/dist/parser-NRAI6O25.js +19 -0
- package/dist/parser-O5J4VBII.js +11 -0
- package/dist/parser-OV7NOBW6.js +21 -0
- package/dist/parser-PQ3POX45.js +23 -0
- package/dist/parser-TFZFBVWN.js +11 -0
- package/dist/parser-TRTHDFPP.js +18 -0
- package/dist/parser-VQP2UJ6W.js +11 -0
- package/dist/parser-XDVELHRK.js +13 -0
- package/dist/parser-XKRP7QKP.js +11 -0
- package/dist/parser-Y6WTBU76.js +14 -0
- package/dist/parser-ZSDPZYQP.js +12 -0
- package/dist/renderer-2XQQQ6QR.js +28 -0
- package/dist/renderer-5NDVNDAZ.js +26 -0
- package/dist/renderer-6EEZHMH4.js +26 -0
- package/dist/renderer-6W5462RB.js +43 -0
- package/dist/renderer-7MVLWWQD.js +22 -0
- package/dist/renderer-AWWAF6XD.js +33 -0
- package/dist/renderer-BYCNMBF7.js +34 -0
- package/dist/renderer-CLJHQPBJ.js +29 -0
- package/dist/renderer-GHPZMFU2.js +15 -0
- package/dist/renderer-JGBKUCZD.js +16 -0
- package/dist/renderer-KQB7UGDS.js +19 -0
- package/dist/renderer-PGX2TKVS.js +24 -0
- package/dist/renderer-QIWVHWZO.js +15 -0
- package/dist/renderer-RPOA5YPZ.js +35 -0
- package/dist/renderer-SMIBCRVB.js +24 -0
- package/dist/renderer-T7YKC5VP.js +28 -0
- package/dist/renderer-TOCOVLHS.js +37 -0
- package/dist/renderer-UWA5XS74.js +39 -0
- package/dist/renderer-VACVQYML.js +25 -0
- package/dist/renderer-W4M6QLIJ.js +37 -0
- package/dist/renderer-WZRREQ2P.js +23 -0
- package/dist/renderer-YY2OSF6E.js +27 -0
- package/dist/renderer-Z7I3W2PP.js +24 -0
- package/dist/renderer-ZGNTUWC4.js +22 -0
- package/dist/renderer-ZTR3DER3.js +19 -0
- package/dist/renderer-radial-C32GPJQ7.js +21 -0
- package/dist/resolver-NOAA7ID7.js +13 -0
- package/dist/state-collapse-HCGD6IVJ.js +8 -0
- package/dist/state-parser-Z2V23ATR.js +18 -0
- package/dist/state-renderer-RFYHSP4K.js +34 -0
- package/dist/themes-1-CuKpeH.d.cts +908 -0
- package/dist/themes-1-CuKpeH.d.ts +908 -0
- package/package.json +1 -1
- package/src/auto/index.ts +55 -57
- package/src/auto/shared.ts +142 -142
- package/src/auto/styles.ts +44 -199
- package/src/c4/renderer.ts +2 -2
- package/src/element/index.ts +29 -21
- package/src/infra/renderer.ts +1 -1
- package/src/render.ts +34 -14
- package/src/sitemap/renderer.ts +1 -1
- package/src/timeline/renderer.ts +1 -1
- package/src/utils/hover-styles.ts +6 -1
- package/src/utils/legend-d3.ts +1 -4
- package/src/utils/legend-svg.ts +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildMapProjection
|
|
3
|
+
} from "./chunk-IPWPWM6R.js";
|
|
4
|
+
import {
|
|
5
|
+
TITLE_FONT_SIZE,
|
|
6
|
+
TITLE_Y
|
|
7
|
+
} from "./chunk-A4GOY3PE.js";
|
|
8
|
+
|
|
9
|
+
// src/map/dimensions.ts
|
|
10
|
+
import { geoPath } from "d3-geo";
|
|
11
|
+
var FIT_PAD = 24;
|
|
12
|
+
var TITLE_GAP = 16;
|
|
13
|
+
var ASPECT_MAX = 3;
|
|
14
|
+
var ASPECT_MIN = 0.9;
|
|
15
|
+
var GLOBAL_HEIGHT_BOOST = 1.12;
|
|
16
|
+
var MIN_MAP_BAND = 200;
|
|
17
|
+
var FALLBACK_ASPECT = 1.5;
|
|
18
|
+
var REF = 1e3;
|
|
19
|
+
function mapContentAspect(resolved, data, ref = REF) {
|
|
20
|
+
const { projection, fitTarget } = buildMapProjection(resolved, data);
|
|
21
|
+
projection.fitSize([ref, ref], fitTarget);
|
|
22
|
+
const b = geoPath(projection).bounds(fitTarget);
|
|
23
|
+
const w = b[1][0] - b[0][0];
|
|
24
|
+
const h = b[1][1] - b[0][1];
|
|
25
|
+
const aspect = w / h;
|
|
26
|
+
return Number.isFinite(aspect) && aspect > 0 ? aspect : FALLBACK_ASPECT;
|
|
27
|
+
}
|
|
28
|
+
function mapExportDimensions(resolved, data, baseWidth = 1200, aspectOverride) {
|
|
29
|
+
const useOverride = aspectOverride !== void 0 && Number.isFinite(aspectOverride) && aspectOverride > 0;
|
|
30
|
+
const raw = useOverride ? aspectOverride : mapContentAspect(resolved, data);
|
|
31
|
+
const isGlobal = !useOverride && buildMapProjection(resolved, data).fitIsGlobal;
|
|
32
|
+
const target = isGlobal ? raw / GLOBAL_HEIGHT_BOOST : raw;
|
|
33
|
+
const clamped = useOverride ? raw : Math.max(ASPECT_MIN, Math.min(ASPECT_MAX, target));
|
|
34
|
+
const width = baseWidth;
|
|
35
|
+
let height = Math.round(width / clamped);
|
|
36
|
+
let chromeReserve = 0;
|
|
37
|
+
if (resolved.title && resolved.pois.length > 0) {
|
|
38
|
+
const bannerBottom = (resolved.subtitle ? TITLE_Y + TITLE_FONT_SIZE : TITLE_Y) + TITLE_FONT_SIZE / 2;
|
|
39
|
+
chromeReserve += Math.max(FIT_PAD, bannerBottom + TITLE_GAP) - FIT_PAD;
|
|
40
|
+
}
|
|
41
|
+
let floored = false;
|
|
42
|
+
if (height - chromeReserve < MIN_MAP_BAND) {
|
|
43
|
+
height = Math.round(chromeReserve + MIN_MAP_BAND);
|
|
44
|
+
floored = true;
|
|
45
|
+
}
|
|
46
|
+
const preferContain = useOverride ? floored : clamped !== target || floored;
|
|
47
|
+
return { width, height, preferContain };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
mapContentAspect,
|
|
52
|
+
mapExportDimensions
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-CKNVO24D.js.map
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computeNodeText,
|
|
3
|
+
layoutMindmap
|
|
4
|
+
} from "./chunk-T2OE3YQB.js";
|
|
5
|
+
import {
|
|
6
|
+
renderInlineText
|
|
7
|
+
} from "./chunk-3HDBAXF5.js";
|
|
8
|
+
import {
|
|
9
|
+
extractExportSvg,
|
|
10
|
+
runInExportContainer
|
|
11
|
+
} from "./chunk-Y5QGVTVC.js";
|
|
12
|
+
import {
|
|
13
|
+
COLLAPSE_BAR_HEIGHT,
|
|
14
|
+
EDGE_STROKE_WIDTH,
|
|
15
|
+
NODE_STROKE_WIDTH
|
|
16
|
+
} from "./chunk-3CIOJ5YJ.js";
|
|
17
|
+
import {
|
|
18
|
+
renderIntegratedLegend
|
|
19
|
+
} from "./chunk-PWIHZ6NJ.js";
|
|
20
|
+
import {
|
|
21
|
+
ScaleContext
|
|
22
|
+
} from "./chunk-YYVTBZZC.js";
|
|
23
|
+
import {
|
|
24
|
+
getMaxLegendReservedHeight
|
|
25
|
+
} from "./chunk-YAA6IID3.js";
|
|
26
|
+
import {
|
|
27
|
+
TITLE_FONT_SIZE,
|
|
28
|
+
TITLE_FONT_WEIGHT
|
|
29
|
+
} from "./chunk-A4GOY3PE.js";
|
|
30
|
+
import {
|
|
31
|
+
FONT_FAMILY
|
|
32
|
+
} from "./chunk-6KFWC4CO.js";
|
|
33
|
+
import {
|
|
34
|
+
LEGEND_GROUP_GAP
|
|
35
|
+
} from "./chunk-QOOUC2J5.js";
|
|
36
|
+
import {
|
|
37
|
+
parseMindmap
|
|
38
|
+
} from "./chunk-EB6FPQUP.js";
|
|
39
|
+
import {
|
|
40
|
+
preprocessDescriptionLine
|
|
41
|
+
} from "./chunk-IYULMRBE.js";
|
|
42
|
+
import {
|
|
43
|
+
contrastText,
|
|
44
|
+
shapeFill
|
|
45
|
+
} from "./chunk-P6T66CCZ.js";
|
|
46
|
+
import {
|
|
47
|
+
tagAttrKey
|
|
48
|
+
} from "./chunk-QLCCJEJI.js";
|
|
49
|
+
|
|
50
|
+
// src/mindmap/renderer.ts
|
|
51
|
+
import * as d3Selection from "d3-selection";
|
|
52
|
+
var DIAGRAM_PADDING = 20;
|
|
53
|
+
var TITLE_HEIGHT = 30;
|
|
54
|
+
var SINGLE_LABEL_HEIGHT = 28;
|
|
55
|
+
var LABEL_LINE_HEIGHT = 18;
|
|
56
|
+
var DESC_LINE_HEIGHT = 14;
|
|
57
|
+
var NODE_RADIUS = 6;
|
|
58
|
+
var ROOT_STROKE_WIDTH = 2.5;
|
|
59
|
+
function nodeFill(palette, isDark, nodeColor, solid) {
|
|
60
|
+
const color = nodeColor ?? palette.primary;
|
|
61
|
+
return shapeFill(palette, color, isDark, {
|
|
62
|
+
...solid !== void 0 && { solid }
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function nodeStroke(palette, nodeColor) {
|
|
66
|
+
return nodeColor ?? palette.primary;
|
|
67
|
+
}
|
|
68
|
+
var DEPTH_COLOR_KEYS = [
|
|
69
|
+
"red",
|
|
70
|
+
"orange",
|
|
71
|
+
"yellow",
|
|
72
|
+
"green",
|
|
73
|
+
"blue",
|
|
74
|
+
"purple",
|
|
75
|
+
"teal",
|
|
76
|
+
"cyan"
|
|
77
|
+
];
|
|
78
|
+
function depthColor(depth, palette) {
|
|
79
|
+
const key = DEPTH_COLOR_KEYS[depth];
|
|
80
|
+
if (key && key in palette.colors) {
|
|
81
|
+
return palette.colors[key];
|
|
82
|
+
}
|
|
83
|
+
return palette.colors.gray;
|
|
84
|
+
}
|
|
85
|
+
function renderMindmap(container, parsed, layout, palette, isDark, onClickItem, exportDims, onToggleNode, hideDescriptions, activeTagGroup, options) {
|
|
86
|
+
const isExport = !!exportDims;
|
|
87
|
+
const containerWidth = exportDims?.width ?? (container.getBoundingClientRect().width || 800);
|
|
88
|
+
const containerHeight = exportDims?.height ?? (container.getBoundingClientRect().height || 600);
|
|
89
|
+
d3Selection.select(container).selectAll("*").remove();
|
|
90
|
+
const svg = d3Selection.select(container).append("svg").attr("width", containerWidth).attr("height", containerHeight).attr("viewBox", `0 0 ${containerWidth} ${containerHeight}`).attr("preserveAspectRatio", "xMidYMin meet").style("font-family", FONT_FAMILY);
|
|
91
|
+
const appHosted = options?.controlsHost === "app";
|
|
92
|
+
const hasControls = !!options?.onToggleColorByDepth || !!options?.onToggleDescriptions;
|
|
93
|
+
const hasLegend = parsed.tagGroups.length > 0 || hasControls && !appHosted;
|
|
94
|
+
const fixedLegend = !isExport && hasLegend;
|
|
95
|
+
const legendReserve = fixedLegend ? getMaxLegendReservedHeight(
|
|
96
|
+
{
|
|
97
|
+
groups: parsed.tagGroups,
|
|
98
|
+
position: { placement: "top-center", titleRelation: "below-title" },
|
|
99
|
+
mode: "preview"
|
|
100
|
+
},
|
|
101
|
+
containerWidth
|
|
102
|
+
) + LEGEND_GROUP_GAP : 0;
|
|
103
|
+
const showTitle = !!parsed.title && parsed.options["no-title"] !== "on";
|
|
104
|
+
const fixedTitle = !isExport && showTitle;
|
|
105
|
+
const titleReserve = fixedTitle ? TITLE_HEIGHT : 0;
|
|
106
|
+
const availWidth = containerWidth;
|
|
107
|
+
const availHeight = containerHeight - DIAGRAM_PADDING * 2 - legendReserve - titleReserve;
|
|
108
|
+
let ctx = isExport ? ScaleContext.identity() : ScaleContext.fromBox(
|
|
109
|
+
availWidth,
|
|
110
|
+
layout.width,
|
|
111
|
+
availHeight,
|
|
112
|
+
layout.height
|
|
113
|
+
);
|
|
114
|
+
let renderLayout = layout;
|
|
115
|
+
if (ctx.factor < 1) {
|
|
116
|
+
const hiddenCounts = /* @__PURE__ */ new Map();
|
|
117
|
+
for (const n of layout.nodes) {
|
|
118
|
+
if (n.hiddenCount != null && n.hiddenCount > 0) {
|
|
119
|
+
hiddenCounts.set(n.id, n.hiddenCount);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const relayout = (c) => layoutMindmap(parsed, palette, {
|
|
123
|
+
interactive: !isExport,
|
|
124
|
+
...hiddenCounts.size > 0 && { hiddenCounts },
|
|
125
|
+
activeTagGroup: activeTagGroup ?? null,
|
|
126
|
+
...hideDescriptions !== void 0 && { hideDescriptions },
|
|
127
|
+
ctx: c
|
|
128
|
+
});
|
|
129
|
+
renderLayout = relayout(ctx);
|
|
130
|
+
for (let i = 0; i < 3 && !ctx.isBelowFloor; i++) {
|
|
131
|
+
const refit = Math.min(
|
|
132
|
+
availWidth / renderLayout.width,
|
|
133
|
+
availHeight / renderLayout.height
|
|
134
|
+
);
|
|
135
|
+
if (refit >= 0.999) break;
|
|
136
|
+
ctx = ScaleContext.fromFactor(ctx.factor * refit);
|
|
137
|
+
renderLayout = relayout(ctx);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const fitScale = isExport ? 1 : Math.min(
|
|
141
|
+
1,
|
|
142
|
+
renderLayout.width > 0 ? availWidth / renderLayout.width : 1,
|
|
143
|
+
renderLayout.height > 0 ? availHeight / renderLayout.height : 1
|
|
144
|
+
);
|
|
145
|
+
const scaledWidth = renderLayout.width * fitScale;
|
|
146
|
+
const scaledHeight = renderLayout.height * fitScale;
|
|
147
|
+
const offsetX = Math.max(0, (availWidth - scaledWidth) / 2);
|
|
148
|
+
const offsetY = DIAGRAM_PADDING + legendReserve + titleReserve + Math.max(0, (availHeight - scaledHeight) / 2);
|
|
149
|
+
const mainG = svg.append("g").attr(
|
|
150
|
+
"transform",
|
|
151
|
+
`translate(${offsetX}, ${offsetY})${fitScale < 1 ? ` scale(${fitScale})` : ""}`
|
|
152
|
+
);
|
|
153
|
+
if (ctx.isBelowFloor) {
|
|
154
|
+
svg.attr("width", "100%");
|
|
155
|
+
}
|
|
156
|
+
if (showTitle) {
|
|
157
|
+
const titleParent = fixedTitle ? svg : mainG;
|
|
158
|
+
const titleX = fixedTitle ? containerWidth / 2 : renderLayout.width / 2;
|
|
159
|
+
const titleY = fixedTitle ? DIAGRAM_PADDING + TITLE_FONT_SIZE : TITLE_FONT_SIZE;
|
|
160
|
+
const titleText = titleParent.append("text").attr("x", titleX).attr("y", titleY).attr("text-anchor", "middle").attr("font-size", TITLE_FONT_SIZE).attr("font-weight", TITLE_FONT_WEIGHT).attr("fill", palette.text).attr("class", "chart-title").text(parsed.title);
|
|
161
|
+
if (parsed.titleLineNumber) {
|
|
162
|
+
titleText.attr("data-line-number", parsed.titleLineNumber);
|
|
163
|
+
}
|
|
164
|
+
if (onClickItem && parsed.titleLineNumber) {
|
|
165
|
+
titleText.style("cursor", "pointer").on("click", () => onClickItem(parsed.titleLineNumber));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (fixedLegend) {
|
|
169
|
+
const legendG = svg.append("g").attr("class", "mindmap-legend-fixed").attr("transform", `translate(0, ${DIAGRAM_PADDING + titleReserve})`);
|
|
170
|
+
const usedValues = /* @__PURE__ */ new Map();
|
|
171
|
+
for (const node of renderLayout.nodes) {
|
|
172
|
+
for (const tg of parsed.tagGroups) {
|
|
173
|
+
const key = tg.name.toLowerCase();
|
|
174
|
+
const val = node.metadata[key];
|
|
175
|
+
if (val) {
|
|
176
|
+
if (!usedValues.has(key)) usedValues.set(key, /* @__PURE__ */ new Set());
|
|
177
|
+
usedValues.get(key).add(val.toLowerCase());
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const toggles = [];
|
|
182
|
+
if (options?.onToggleDescriptions) {
|
|
183
|
+
toggles.push({
|
|
184
|
+
id: "descriptions",
|
|
185
|
+
type: "toggle",
|
|
186
|
+
label: "Descriptions",
|
|
187
|
+
active: !hideDescriptions,
|
|
188
|
+
onToggle: (active) => options.onToggleDescriptions(active)
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (options?.onToggleColorByDepth) {
|
|
192
|
+
toggles.push({
|
|
193
|
+
id: "depth-colors",
|
|
194
|
+
type: "toggle",
|
|
195
|
+
label: "Depth Colors",
|
|
196
|
+
active: options.colorByDepth ?? false,
|
|
197
|
+
onToggle: options.onToggleColorByDepth
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
const controlsToggles = toggles.length > 0 ? { toggles } : void 0;
|
|
201
|
+
const legendConfig = {
|
|
202
|
+
groups: parsed.tagGroups.map((tg) => {
|
|
203
|
+
const used = usedValues.get(tg.name.toLowerCase());
|
|
204
|
+
return {
|
|
205
|
+
name: tg.name,
|
|
206
|
+
...tg.alias !== void 0 && { alias: tg.alias },
|
|
207
|
+
entries: tg.entries.filter((e) => used?.has(e.value.toLowerCase())).map((e) => ({ value: e.value, color: e.color }))
|
|
208
|
+
};
|
|
209
|
+
}),
|
|
210
|
+
position: { placement: "top-center", titleRelation: "below-title" },
|
|
211
|
+
mode: options?.exportMode ? "export" : "preview",
|
|
212
|
+
...controlsToggles !== void 0 && { controlsGroup: controlsToggles },
|
|
213
|
+
...options?.controlsHost !== void 0 && {
|
|
214
|
+
controlsHost: options.controlsHost
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const legendPalette = {
|
|
218
|
+
text: palette.text,
|
|
219
|
+
textMuted: palette.textMuted,
|
|
220
|
+
bg: palette.bg,
|
|
221
|
+
surface: palette.surface,
|
|
222
|
+
primary: palette.primary
|
|
223
|
+
};
|
|
224
|
+
const legendCallbacks = {
|
|
225
|
+
...options?.onToggleControlsExpand !== void 0 && {
|
|
226
|
+
onControlsExpand: options.onToggleControlsExpand
|
|
227
|
+
},
|
|
228
|
+
onControlsToggle: (id, active) => {
|
|
229
|
+
if (id === "depth-colors" && options?.onToggleColorByDepth) {
|
|
230
|
+
options.onToggleColorByDepth(active);
|
|
231
|
+
}
|
|
232
|
+
if (id === "descriptions" && options?.onToggleDescriptions) {
|
|
233
|
+
options.onToggleDescriptions(active);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
renderIntegratedLegend(legendG, {
|
|
238
|
+
...legendConfig,
|
|
239
|
+
palette: legendPalette,
|
|
240
|
+
isDark,
|
|
241
|
+
width: containerWidth,
|
|
242
|
+
activeGroup: options?.colorByDepth ? null : activeTagGroup !== void 0 ? activeTagGroup : parsed.options["active-tag"] ?? null,
|
|
243
|
+
hiddenAttributes: /* @__PURE__ */ new Set(),
|
|
244
|
+
...options?.controlsExpanded !== void 0 && {
|
|
245
|
+
controlsExpanded: options.controlsExpanded
|
|
246
|
+
},
|
|
247
|
+
callbacks: legendCallbacks
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
for (const edge of renderLayout.edges) {
|
|
251
|
+
mainG.append("path").attr("class", "mindmap-edge").attr("d", edge.path).attr("fill", "none").attr("stroke", palette.textMuted).attr("stroke-width", EDGE_STROKE_WIDTH).attr("stroke-opacity", 0.5);
|
|
252
|
+
}
|
|
253
|
+
for (const node of renderLayout.nodes) {
|
|
254
|
+
const isRoot = node.radius === 0 && renderLayout.nodes.indexOf(node) === 0;
|
|
255
|
+
const strokeW = isRoot ? ROOT_STROKE_WIDTH : NODE_STROKE_WIDTH;
|
|
256
|
+
const effectiveColor = options?.colorByDepth ? depthColor(node.depth, palette) : node.color;
|
|
257
|
+
const fill = nodeFill(
|
|
258
|
+
palette,
|
|
259
|
+
isDark,
|
|
260
|
+
effectiveColor,
|
|
261
|
+
parsed.options["solid-fill"] === "on"
|
|
262
|
+
);
|
|
263
|
+
const stroke = nodeStroke(palette, effectiveColor);
|
|
264
|
+
const onFillText = contrastText(
|
|
265
|
+
fill,
|
|
266
|
+
palette.textOnFillLight,
|
|
267
|
+
palette.textOnFillDark
|
|
268
|
+
);
|
|
269
|
+
const nodeG = mainG.append("g").attr("class", "mindmap-node").attr("data-line-number", node.lineNumber);
|
|
270
|
+
if (activeTagGroup) {
|
|
271
|
+
const tagKey = tagAttrKey(activeTagGroup);
|
|
272
|
+
const metaValue = node.metadata[tagKey];
|
|
273
|
+
if (metaValue) {
|
|
274
|
+
nodeG.attr(`data-tag-${tagKey}`, metaValue.toLowerCase());
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (node.hasChildren) {
|
|
278
|
+
nodeG.attr("data-node-toggle", node.id).attr("tabindex", "0").attr("role", "button").attr(
|
|
279
|
+
"aria-expanded",
|
|
280
|
+
node.hiddenCount != null && node.hiddenCount > 0 ? "false" : "true"
|
|
281
|
+
).attr("aria-label", node.label);
|
|
282
|
+
}
|
|
283
|
+
nodeG.append("rect").attr("x", node.x).attr("y", node.y).attr("width", node.width).attr("height", node.height).attr("rx", NODE_RADIUS).attr("ry", NODE_RADIUS).attr("fill", fill).attr("stroke", stroke).attr("stroke-width", strokeW);
|
|
284
|
+
const collapsed = node.hiddenCount != null && node.hiddenCount > 0;
|
|
285
|
+
const showDesc = !hideDescriptions && !!node.description && !collapsed;
|
|
286
|
+
const textLayout = computeNodeText(
|
|
287
|
+
node.label,
|
|
288
|
+
node.description,
|
|
289
|
+
node.depth,
|
|
290
|
+
node.width,
|
|
291
|
+
hideDescriptions || collapsed
|
|
292
|
+
);
|
|
293
|
+
const {
|
|
294
|
+
labelLines,
|
|
295
|
+
labelFontSize: fontSize,
|
|
296
|
+
descLines,
|
|
297
|
+
descFontSize
|
|
298
|
+
} = textLayout;
|
|
299
|
+
const labelLineCount = labelLines.length;
|
|
300
|
+
const labelZoneH = labelLineCount <= 1 ? SINGLE_LABEL_HEIGHT : LABEL_LINE_HEIGHT * labelLineCount;
|
|
301
|
+
const labelZoneHeight = showDesc ? labelZoneH : node.height;
|
|
302
|
+
const centerX = node.x + node.width / 2;
|
|
303
|
+
if (labelLineCount <= 1) {
|
|
304
|
+
const labelY = node.y + labelZoneHeight / 2 + fontSize * 0.35;
|
|
305
|
+
nodeG.append("text").attr("x", centerX).attr("y", labelY).attr("text-anchor", "middle").attr("font-size", fontSize).attr("font-weight", isRoot ? "bold" : "normal").attr("fill", onFillText).text(labelLines[0]);
|
|
306
|
+
} else {
|
|
307
|
+
const blockH = LABEL_LINE_HEIGHT * (labelLineCount - 1);
|
|
308
|
+
const firstBaselineY = node.y + labelZoneHeight / 2 - blockH / 2 + fontSize * 0.35;
|
|
309
|
+
const textEl = nodeG.append("text").attr("x", centerX).attr("text-anchor", "middle").attr("font-size", fontSize).attr("font-weight", isRoot ? "bold" : "normal").attr("fill", onFillText);
|
|
310
|
+
for (let i = 0; i < labelLines.length; i++) {
|
|
311
|
+
textEl.append("tspan").attr("x", centerX).attr("y", firstBaselineY + i * LABEL_LINE_HEIGHT).text(labelLines[i]);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
if (labelLines.length > 1 || labelLines[0] !== node.label) {
|
|
315
|
+
nodeG.append("title").text(node.label);
|
|
316
|
+
}
|
|
317
|
+
if (showDesc && descLines.length > 0) {
|
|
318
|
+
const separatorY = node.y + labelZoneH;
|
|
319
|
+
nodeG.append("line").attr("x1", node.x).attr("y1", separatorY).attr("x2", node.x + node.width).attr("y2", separatorY).attr("stroke", stroke).attr("stroke-opacity", 0.3).attr("stroke-width", 1);
|
|
320
|
+
if (descLines.length <= 1) {
|
|
321
|
+
const descY = separatorY + 4 + descFontSize;
|
|
322
|
+
const processed = preprocessDescriptionLine(descLines[0]);
|
|
323
|
+
const textEl = nodeG.append("text").attr("x", centerX).attr("y", descY).attr("text-anchor", "middle").attr("font-size", descFontSize).attr("fill", onFillText);
|
|
324
|
+
renderInlineText(textEl, processed, palette, descFontSize);
|
|
325
|
+
} else {
|
|
326
|
+
const descStartY = separatorY + 4 + descFontSize;
|
|
327
|
+
for (let i = 0; i < descLines.length; i++) {
|
|
328
|
+
const processed = preprocessDescriptionLine(descLines[i]);
|
|
329
|
+
const textEl = nodeG.append("text").attr("x", centerX).attr("y", descStartY + i * DESC_LINE_HEIGHT).attr("text-anchor", "middle").attr("font-size", descFontSize).attr("fill", onFillText);
|
|
330
|
+
renderInlineText(textEl, processed, palette, descFontSize);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (!isExport && node.hiddenCount != null && node.hiddenCount > 0) {
|
|
335
|
+
const clipId = `collapse-clip-${node.id}`;
|
|
336
|
+
const defs = mainG.append("defs");
|
|
337
|
+
defs.append("clipPath").attr("id", clipId).append("rect").attr("x", node.x).attr("y", node.y).attr("width", node.width).attr("height", node.height).attr("rx", NODE_RADIUS).attr("ry", NODE_RADIUS);
|
|
338
|
+
nodeG.append("rect").attr("class", "collapse-bar").attr("x", node.x).attr("y", node.y + node.height - COLLAPSE_BAR_HEIGHT).attr("width", node.width).attr("height", COLLAPSE_BAR_HEIGHT).attr("fill", stroke).attr("clip-path", `url(#${clipId})`);
|
|
339
|
+
}
|
|
340
|
+
if (onClickItem) {
|
|
341
|
+
nodeG.style("cursor", "pointer").on("click", (event) => {
|
|
342
|
+
if (node.hasChildren && onToggleNode) {
|
|
343
|
+
event.stopPropagation();
|
|
344
|
+
onToggleNode(node.id);
|
|
345
|
+
} else {
|
|
346
|
+
onClickItem(node.lineNumber);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
if (!isExport) {
|
|
351
|
+
nodeG.on("mouseenter", function() {
|
|
352
|
+
d3Selection.select(this).attr("opacity", 0.7);
|
|
353
|
+
}).on("mouseleave", function() {
|
|
354
|
+
d3Selection.select(this).attr("opacity", 1);
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
function renderMindmapForExport(content, theme, palette) {
|
|
360
|
+
const parsed = parseMindmap(content, palette);
|
|
361
|
+
if (parsed.error) return "";
|
|
362
|
+
const isDark = theme === "dark";
|
|
363
|
+
const hideDescriptions = parsed.options["no-descriptions"] === "true";
|
|
364
|
+
const layout = layoutMindmap(parsed, palette, {
|
|
365
|
+
interactive: false,
|
|
366
|
+
hideDescriptions
|
|
367
|
+
});
|
|
368
|
+
const titleOffset = parsed.title && parsed.options["no-title"] !== "on" ? TITLE_HEIGHT : 0;
|
|
369
|
+
const exportWidth = layout.width + DIAGRAM_PADDING * 2;
|
|
370
|
+
const exportHeight = layout.height + DIAGRAM_PADDING * 2 + titleOffset;
|
|
371
|
+
return runInExportContainer(exportWidth, exportHeight, (container) => {
|
|
372
|
+
renderMindmap(
|
|
373
|
+
container,
|
|
374
|
+
parsed,
|
|
375
|
+
layout,
|
|
376
|
+
palette,
|
|
377
|
+
isDark,
|
|
378
|
+
void 0,
|
|
379
|
+
{ width: exportWidth, height: exportHeight },
|
|
380
|
+
void 0,
|
|
381
|
+
hideDescriptions
|
|
382
|
+
);
|
|
383
|
+
return extractExportSvg(container, theme);
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
export {
|
|
388
|
+
renderMindmap,
|
|
389
|
+
renderMindmapForExport
|
|
390
|
+
};
|
|
391
|
+
//# sourceMappingURL=chunk-CUVHQHZ7.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// src/diagnostics.ts
|
|
2
|
+
function makeDgmoError(line, message, severity = "error", code) {
|
|
3
|
+
return code !== void 0 ? { line, message, severity, code } : { line, message, severity };
|
|
4
|
+
}
|
|
5
|
+
function emit(spec, line, params = {}, opts = {}) {
|
|
6
|
+
const message = typeof spec.message === "function" ? spec.message(params) : spec.message;
|
|
7
|
+
const err = {
|
|
8
|
+
line,
|
|
9
|
+
message,
|
|
10
|
+
severity: spec.severity,
|
|
11
|
+
code: spec.code
|
|
12
|
+
};
|
|
13
|
+
if (opts.column !== void 0) err.column = opts.column;
|
|
14
|
+
return err;
|
|
15
|
+
}
|
|
16
|
+
function dedupeDiagnostics(diagnostics) {
|
|
17
|
+
const seen = /* @__PURE__ */ new Set();
|
|
18
|
+
const out = [];
|
|
19
|
+
for (const d of diagnostics) {
|
|
20
|
+
const key = `${d.line}\0${d.column ?? ""}\0${d.severity}\0${d.code ?? ""}\0${d.message}`;
|
|
21
|
+
if (seen.has(key)) continue;
|
|
22
|
+
seen.add(key);
|
|
23
|
+
out.push(d);
|
|
24
|
+
}
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
function formatDgmoError(err) {
|
|
28
|
+
return err.line > 0 ? `Line ${err.line}: ${err.message}` : err.message;
|
|
29
|
+
}
|
|
30
|
+
function makeFail(result) {
|
|
31
|
+
return (line, message) => {
|
|
32
|
+
const diag = makeDgmoError(line, message);
|
|
33
|
+
result.diagnostics.push(diag);
|
|
34
|
+
result.error = formatDgmoError(diag);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function levenshtein(a, b) {
|
|
39
|
+
const m = a.length;
|
|
40
|
+
const n = b.length;
|
|
41
|
+
const dp = Array(n + 1).fill(0).map((_, i) => i);
|
|
42
|
+
for (let i = 1; i <= m; i++) {
|
|
43
|
+
let prev = dp[0];
|
|
44
|
+
dp[0] = i;
|
|
45
|
+
for (let j = 1; j <= n; j++) {
|
|
46
|
+
const tmp = dp[j];
|
|
47
|
+
dp[j] = a[i - 1] === b[j - 1] ? prev : 1 + Math.min(prev, dp[j], dp[j - 1]);
|
|
48
|
+
prev = tmp;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return dp[n];
|
|
52
|
+
}
|
|
53
|
+
function suggest(input, candidates) {
|
|
54
|
+
if (!input || candidates.length === 0) return null;
|
|
55
|
+
const lower = input.toLowerCase();
|
|
56
|
+
const threshold = Math.max(2, Math.floor(lower.length / 3));
|
|
57
|
+
let best = null;
|
|
58
|
+
let bestDist = Infinity;
|
|
59
|
+
for (const c of candidates) {
|
|
60
|
+
const dist = levenshtein(lower, c.toLowerCase());
|
|
61
|
+
if (dist < bestDist && dist <= threshold && dist > 0) {
|
|
62
|
+
bestDist = dist;
|
|
63
|
+
best = c;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return best ? `Did you mean '${best}'?` : null;
|
|
67
|
+
}
|
|
68
|
+
var NAME_DIAGNOSTIC_CODES = {
|
|
69
|
+
/**
|
|
70
|
+
* Warning: two source-distinct names normalized to the same key
|
|
71
|
+
* (case- or whitespace-only difference). The first occurrence wins
|
|
72
|
+
* for display; subsequent occurrences fold into it. Suppressible
|
|
73
|
+
* per-line via `# allow-merge` annotation when intentional.
|
|
74
|
+
*
|
|
75
|
+
* Note: the `I_` prefix is intentionally preserved for stability —
|
|
76
|
+
* callers may have pinned this string. The diagnostic emits at
|
|
77
|
+
* `warning` severity (no `info` severity exists in DgmoError).
|
|
78
|
+
*/
|
|
79
|
+
NAME_MERGED: "I_NAME_MERGED"
|
|
80
|
+
};
|
|
81
|
+
function nameMergedMessage(args) {
|
|
82
|
+
return `merged '${args.incomingDisplay}' (line ${args.incomingLine}) into '${args.existingDisplay}' (line ${args.existingLine}) \u2014 names differ only in case/whitespace`;
|
|
83
|
+
}
|
|
84
|
+
var METADATA_DIAGNOSTIC_CODES = {
|
|
85
|
+
/**
|
|
86
|
+
* Error: a `tag` declaration appears after the first non-tag
|
|
87
|
+
* content line. The reserved-key registry is finalized before
|
|
88
|
+
* content-line mode begins; downstream-declared tag aliases
|
|
89
|
+
* cannot retroactively apply to earlier lines.
|
|
90
|
+
*/
|
|
91
|
+
TAG_DECLARED_AFTER_CONTENT: "E_TAG_DECLARED_AFTER_CONTENT",
|
|
92
|
+
/**
|
|
93
|
+
* Warning: a metadata pair has an empty value (`Foo c:`). The
|
|
94
|
+
* pair is dropped from the entity's metadata.
|
|
95
|
+
*/
|
|
96
|
+
EMPTY_METADATA_VALUE: "W_EMPTY_METADATA_VALUE"
|
|
97
|
+
};
|
|
98
|
+
function emptyMetadataValueMessage(key) {
|
|
99
|
+
return `Metadata key '${key}:' has no value \u2014 the pair is dropped. Provide a value or remove the key.`;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export {
|
|
103
|
+
makeDgmoError,
|
|
104
|
+
emit,
|
|
105
|
+
dedupeDiagnostics,
|
|
106
|
+
formatDgmoError,
|
|
107
|
+
makeFail,
|
|
108
|
+
suggest,
|
|
109
|
+
NAME_DIAGNOSTIC_CODES,
|
|
110
|
+
nameMergedMessage,
|
|
111
|
+
METADATA_DIAGNOSTIC_CODES,
|
|
112
|
+
emptyMetadataValueMessage
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=chunk-CXK4DZH3.js.map
|