@eventcatalog/visualiser 3.17.1 → 3.18.1
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/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +139 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +150 -46
- package/dist/index.mjs.map +1 -1
- package/dist/styles-core.css +7 -10
- package/dist/styles.css +7 -10
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -35,7 +35,7 @@ import { toPng } from "html-to-image";
|
|
|
35
35
|
|
|
36
36
|
// src/nodes/service/ServiceNode.tsx
|
|
37
37
|
import { memo as memo3, useMemo } from "react";
|
|
38
|
-
import { ServerIcon } from "lucide-react";
|
|
38
|
+
import { ServerIcon, Globe } from "lucide-react";
|
|
39
39
|
|
|
40
40
|
// src/nodes/OwnerIndicator.tsx
|
|
41
41
|
import { memo } from "react";
|
|
@@ -1047,7 +1047,8 @@ var ServiceMessageFlow = memo3(function ServiceMessageFlow2({
|
|
|
1047
1047
|
);
|
|
1048
1048
|
});
|
|
1049
1049
|
var GlowHandle = memo3(function GlowHandle2({
|
|
1050
|
-
side
|
|
1050
|
+
side,
|
|
1051
|
+
external
|
|
1051
1052
|
}) {
|
|
1052
1053
|
return /* @__PURE__ */ jsx3(
|
|
1053
1054
|
"div",
|
|
@@ -1060,10 +1061,10 @@ var GlowHandle = memo3(function GlowHandle2({
|
|
|
1060
1061
|
width: 12,
|
|
1061
1062
|
height: 12,
|
|
1062
1063
|
borderRadius: "50%",
|
|
1063
|
-
background: "linear-gradient(135deg, #ec4899, #be185d)",
|
|
1064
|
+
background: external ? "linear-gradient(135deg, #a855f7, #7e22ce)" : "linear-gradient(135deg, #ec4899, #be185d)",
|
|
1064
1065
|
border: "2px solid rgb(var(--ec-page-bg))",
|
|
1065
1066
|
zIndex: 20,
|
|
1066
|
-
animation: "ec-service-handle-pulse 2s ease-in-out infinite",
|
|
1067
|
+
animation: external ? "ec-external-handle-pulse 2s ease-in-out infinite" : "ec-service-handle-pulse 2s ease-in-out infinite",
|
|
1067
1068
|
pointerEvents: "none"
|
|
1068
1069
|
}
|
|
1069
1070
|
}
|
|
@@ -1072,16 +1073,86 @@ var GlowHandle = memo3(function GlowHandle2({
|
|
|
1072
1073
|
function classNames(...classes) {
|
|
1073
1074
|
return classes.filter(Boolean).join(" ");
|
|
1074
1075
|
}
|
|
1076
|
+
var POST_IT_SERVICE = {
|
|
1077
|
+
Icon: ServerIcon,
|
|
1078
|
+
label: "Service",
|
|
1079
|
+
gradient: "linear-gradient(135deg, #fbcfe8 0%, #f9a8d4 40%, #ec4899 100%)",
|
|
1080
|
+
draftBorder: "rgba(236, 72, 153, 0.5)",
|
|
1081
|
+
corner: "#db2777",
|
|
1082
|
+
ring: "ring-2 ring-pink-400/60 ring-offset-1",
|
|
1083
|
+
iconClass: "w-3 h-3 text-pink-900/50",
|
|
1084
|
+
labelClass: "text-[8px] font-bold text-pink-900/50 uppercase tracking-widest",
|
|
1085
|
+
nameText: "text-pink-950",
|
|
1086
|
+
nameTextDeprecated: "text-pink-950/40 line-through",
|
|
1087
|
+
versionClass: "text-[9px] text-pink-900/40 font-semibold mt-0.5",
|
|
1088
|
+
summaryClass: "mt-2 pt-1.5 border-t border-pink-900/10 text-[9px] text-pink-950/60 leading-relaxed overflow-hidden"
|
|
1089
|
+
};
|
|
1090
|
+
var POST_IT_EXTERNAL = {
|
|
1091
|
+
Icon: Globe,
|
|
1092
|
+
label: "External System",
|
|
1093
|
+
gradient: "linear-gradient(135deg, #e9d5ff 0%, #c084fc 40%, #a855f7 100%)",
|
|
1094
|
+
draftBorder: "rgba(168, 85, 247, 0.5)",
|
|
1095
|
+
corner: "#7e22ce",
|
|
1096
|
+
ring: "ring-2 ring-purple-400/60 ring-offset-1",
|
|
1097
|
+
iconClass: "w-3 h-3 text-purple-900/50",
|
|
1098
|
+
labelClass: "text-[8px] font-bold text-purple-900/50 uppercase tracking-widest",
|
|
1099
|
+
nameText: "text-purple-950",
|
|
1100
|
+
nameTextDeprecated: "text-purple-950/40 line-through",
|
|
1101
|
+
versionClass: "text-[9px] text-purple-900/40 font-semibold mt-0.5",
|
|
1102
|
+
summaryClass: "mt-2 pt-1.5 border-t border-purple-900/10 text-[9px] text-purple-950/60 leading-relaxed overflow-hidden"
|
|
1103
|
+
};
|
|
1104
|
+
var DEFAULT_SERVICE = {
|
|
1105
|
+
Icon: ServerIcon,
|
|
1106
|
+
label: "Service",
|
|
1107
|
+
ring: "ring-2 ring-pink-400/60 ring-offset-2",
|
|
1108
|
+
borderSolid: "border-pink-500",
|
|
1109
|
+
borderDraftDark: "border-dashed border-pink-400",
|
|
1110
|
+
borderDraftLight: "border-dashed border-pink-400/60",
|
|
1111
|
+
draftStripeDark: "rgba(236,72,153,0.25)",
|
|
1112
|
+
draftStripeLight: "rgba(236,72,153,0.15)",
|
|
1113
|
+
nodeBgVar: "var(--ec-service-node-bg, rgb(var(--ec-card-bg)))",
|
|
1114
|
+
shadowColor: "rgba(236, 72, 153, 0.15)",
|
|
1115
|
+
badgeBg: "bg-pink-500",
|
|
1116
|
+
ownerAccent: "bg-pink-400",
|
|
1117
|
+
ownerBorder: "rgba(236,72,153,0.08)",
|
|
1118
|
+
ownerIcon: "text-pink-300"
|
|
1119
|
+
};
|
|
1120
|
+
var DEFAULT_EXTERNAL = {
|
|
1121
|
+
Icon: Globe,
|
|
1122
|
+
label: "External System",
|
|
1123
|
+
ring: "ring-2 ring-purple-400/60 ring-offset-2",
|
|
1124
|
+
borderSolid: "border-purple-500",
|
|
1125
|
+
borderDraftDark: "border-dashed border-purple-400",
|
|
1126
|
+
borderDraftLight: "border-dashed border-purple-400/60",
|
|
1127
|
+
draftStripeDark: "rgba(168,85,247,0.25)",
|
|
1128
|
+
draftStripeLight: "rgba(168,85,247,0.15)",
|
|
1129
|
+
nodeBgVar: "var(--ec-external-node-bg, rgb(var(--ec-card-bg)))",
|
|
1130
|
+
shadowColor: "rgba(168, 85, 247, 0.15)",
|
|
1131
|
+
badgeBg: "bg-purple-500",
|
|
1132
|
+
ownerAccent: "bg-purple-400",
|
|
1133
|
+
ownerBorder: "rgba(168,85,247,0.08)",
|
|
1134
|
+
ownerIcon: "text-purple-300"
|
|
1135
|
+
};
|
|
1075
1136
|
function PostItService(props) {
|
|
1076
|
-
const {
|
|
1137
|
+
const {
|
|
1138
|
+
version,
|
|
1139
|
+
name,
|
|
1140
|
+
summary,
|
|
1141
|
+
deprecated,
|
|
1142
|
+
draft,
|
|
1143
|
+
notes,
|
|
1144
|
+
specifications,
|
|
1145
|
+
externalSystem
|
|
1146
|
+
} = props.data.service;
|
|
1077
1147
|
const mode = props.data.mode || "simple";
|
|
1078
1148
|
const isDark = useDarkMode();
|
|
1149
|
+
const p = externalSystem ? POST_IT_EXTERNAL : POST_IT_SERVICE;
|
|
1079
1150
|
return /* @__PURE__ */ jsxs3(
|
|
1080
1151
|
"div",
|
|
1081
1152
|
{
|
|
1082
1153
|
className: classNames(
|
|
1083
1154
|
"relative min-w-44 max-w-56 min-h-[120px]",
|
|
1084
|
-
props?.selected ?
|
|
1155
|
+
props?.selected ? p.ring : ""
|
|
1085
1156
|
),
|
|
1086
1157
|
children: [
|
|
1087
1158
|
/* @__PURE__ */ jsx3(
|
|
@@ -1106,10 +1177,10 @@ function PostItService(props) {
|
|
|
1106
1177
|
{
|
|
1107
1178
|
className: "absolute inset-0",
|
|
1108
1179
|
style: {
|
|
1109
|
-
background:
|
|
1180
|
+
background: p.gradient,
|
|
1110
1181
|
boxShadow: "1px 1px 3px rgba(0,0,0,0.15), 3px 4px 8px rgba(0,0,0,0.08)",
|
|
1111
1182
|
transform: "rotate(1deg)",
|
|
1112
|
-
border: deprecated ? "2px dashed rgba(239, 68, 68, 0.5)" : draft ?
|
|
1183
|
+
border: deprecated ? "2px dashed rgba(239, 68, 68, 0.5)" : draft ? `2px dashed ${p.draftBorder}` : "none"
|
|
1113
1184
|
},
|
|
1114
1185
|
children: [
|
|
1115
1186
|
/* @__PURE__ */ jsx3("div", { style: FOLDED_CORNER_SHADOW_STYLE }),
|
|
@@ -1124,7 +1195,7 @@ function PostItService(props) {
|
|
|
1124
1195
|
height: 0,
|
|
1125
1196
|
borderStyle: "solid",
|
|
1126
1197
|
borderWidth: "18px 0 0 18px",
|
|
1127
|
-
borderColor:
|
|
1198
|
+
borderColor: `${p.corner} transparent transparent transparent`,
|
|
1128
1199
|
opacity: 0.3
|
|
1129
1200
|
}
|
|
1130
1201
|
}
|
|
@@ -1135,14 +1206,8 @@ function PostItService(props) {
|
|
|
1135
1206
|
/* @__PURE__ */ jsxs3("div", { className: "relative px-3.5 py-3", children: [
|
|
1136
1207
|
/* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1137
1208
|
/* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-1", children: [
|
|
1138
|
-
/* @__PURE__ */ jsx3(
|
|
1139
|
-
|
|
1140
|
-
{
|
|
1141
|
-
className: "w-3 h-3 text-pink-900/50",
|
|
1142
|
-
strokeWidth: 2.5
|
|
1143
|
-
}
|
|
1144
|
-
),
|
|
1145
|
-
/* @__PURE__ */ jsx3("span", { className: "text-[8px] font-bold text-pink-900/50 uppercase tracking-widest", children: "Service" })
|
|
1209
|
+
/* @__PURE__ */ jsx3(p.Icon, { className: p.iconClass, strokeWidth: 2.5 }),
|
|
1210
|
+
/* @__PURE__ */ jsx3("span", { className: p.labelClass, children: p.label })
|
|
1146
1211
|
] }),
|
|
1147
1212
|
draft && /* @__PURE__ */ jsx3("span", { className: "text-[8px] font-extrabold text-amber-900 bg-amber-100 border border-dashed border-amber-400 px-1.5 py-0.5 rounded uppercase", children: "Draft" }),
|
|
1148
1213
|
deprecated && /* @__PURE__ */ jsx3("span", { className: "text-[7px] font-bold text-white bg-red-500 border border-red-600 px-1.5 py-0.5 rounded uppercase", children: "Deprecated" })
|
|
@@ -1152,19 +1217,19 @@ function PostItService(props) {
|
|
|
1152
1217
|
{
|
|
1153
1218
|
className: classNames(
|
|
1154
1219
|
"text-[13px] font-bold leading-snug",
|
|
1155
|
-
deprecated ?
|
|
1220
|
+
deprecated ? p.nameTextDeprecated : p.nameText
|
|
1156
1221
|
),
|
|
1157
1222
|
children: name
|
|
1158
1223
|
}
|
|
1159
1224
|
),
|
|
1160
|
-
version && /* @__PURE__ */ jsxs3("div", { className:
|
|
1225
|
+
version && /* @__PURE__ */ jsxs3("div", { className: p.versionClass, children: [
|
|
1161
1226
|
"v",
|
|
1162
1227
|
version
|
|
1163
1228
|
] }),
|
|
1164
1229
|
mode === "full" && summary && /* @__PURE__ */ jsx3(
|
|
1165
1230
|
"div",
|
|
1166
1231
|
{
|
|
1167
|
-
className:
|
|
1232
|
+
className: p.summaryClass,
|
|
1168
1233
|
style: LINE_CLAMP_STYLE,
|
|
1169
1234
|
title: summary,
|
|
1170
1235
|
children: summary
|
|
@@ -1177,7 +1242,16 @@ function PostItService(props) {
|
|
|
1177
1242
|
);
|
|
1178
1243
|
}
|
|
1179
1244
|
function DefaultService(props) {
|
|
1180
|
-
const {
|
|
1245
|
+
const {
|
|
1246
|
+
version,
|
|
1247
|
+
name,
|
|
1248
|
+
summary,
|
|
1249
|
+
deprecated,
|
|
1250
|
+
draft,
|
|
1251
|
+
notes,
|
|
1252
|
+
specifications,
|
|
1253
|
+
externalSystem
|
|
1254
|
+
} = props.data.service;
|
|
1181
1255
|
const mode = props.data.mode || "simple";
|
|
1182
1256
|
const owners = useMemo(
|
|
1183
1257
|
() => normalizeOwners(props.data.service.owners),
|
|
@@ -1187,17 +1261,20 @@ function DefaultService(props) {
|
|
|
1187
1261
|
const sourceConnections = useNodeConnections({ handleType: "source" });
|
|
1188
1262
|
const isDark = useDarkMode();
|
|
1189
1263
|
const deprecatedStripe = isDark ? "rgba(239,68,68,0.25)" : "rgba(239,68,68,0.1)";
|
|
1264
|
+
const p = externalSystem ? DEFAULT_EXTERNAL : DEFAULT_SERVICE;
|
|
1265
|
+
const draftStripe = isDark ? p.draftStripeDark : p.draftStripeLight;
|
|
1266
|
+
const borderDraft = isDark ? p.borderDraftDark : p.borderDraftLight;
|
|
1190
1267
|
return /* @__PURE__ */ jsxs3(
|
|
1191
1268
|
"div",
|
|
1192
1269
|
{
|
|
1193
1270
|
className: classNames(
|
|
1194
1271
|
"relative min-w-48 max-w-60 rounded-xl border-2 overflow-visible",
|
|
1195
|
-
props?.selected ?
|
|
1196
|
-
deprecated ? "border-dashed border-red-500" : draft ?
|
|
1272
|
+
props?.selected ? p.ring : "",
|
|
1273
|
+
deprecated ? "border-dashed border-red-500" : draft ? borderDraft : p.borderSolid
|
|
1197
1274
|
),
|
|
1198
1275
|
style: {
|
|
1199
|
-
background: deprecated ? `repeating-linear-gradient(135deg, transparent, transparent 6px, ${deprecatedStripe} 6px, ${deprecatedStripe} 7px),
|
|
1200
|
-
boxShadow:
|
|
1276
|
+
background: deprecated ? `repeating-linear-gradient(135deg, transparent, transparent 6px, ${deprecatedStripe} 6px, ${deprecatedStripe} 7px), ${p.nodeBgVar}` : draft ? `repeating-linear-gradient(135deg, transparent, transparent 4px, ${draftStripe} 4px, ${draftStripe} 4.5px), repeating-linear-gradient(45deg, transparent, transparent 4px, ${draftStripe} 4px, ${draftStripe} 4.5px), ${p.nodeBgVar}` : p.nodeBgVar,
|
|
1277
|
+
boxShadow: `0 2px 12px ${p.shadowColor}`
|
|
1201
1278
|
},
|
|
1202
1279
|
children: [
|
|
1203
1280
|
/* @__PURE__ */ jsx3(
|
|
@@ -1217,18 +1294,18 @@ function DefaultService(props) {
|
|
|
1217
1294
|
}
|
|
1218
1295
|
),
|
|
1219
1296
|
notes && notes.length > 0 && /* @__PURE__ */ jsx3(NotesIndicator, { notes, resourceName: name }),
|
|
1220
|
-
targetConnections.length > 0 && /* @__PURE__ */ jsx3(GlowHandle, { side: "left" }),
|
|
1221
|
-
sourceConnections.length > 0 && /* @__PURE__ */ jsx3(GlowHandle, { side: "right" }),
|
|
1297
|
+
targetConnections.length > 0 && /* @__PURE__ */ jsx3(GlowHandle, { side: "left", external: externalSystem }),
|
|
1298
|
+
sourceConnections.length > 0 && /* @__PURE__ */ jsx3(GlowHandle, { side: "right", external: externalSystem }),
|
|
1222
1299
|
/* @__PURE__ */ jsx3("div", { className: "absolute -top-2.5 left-2.5 flex items-center gap-1.5 z-10", children: /* @__PURE__ */ jsxs3(
|
|
1223
1300
|
"span",
|
|
1224
1301
|
{
|
|
1225
1302
|
className: classNames(
|
|
1226
1303
|
"inline-flex items-center gap-1 text-[7px] font-bold uppercase tracking-widest text-white px-1.5 py-0.5 rounded shadow-sm",
|
|
1227
|
-
deprecated ? "bg-red-500" :
|
|
1304
|
+
deprecated ? "bg-red-500" : p.badgeBg
|
|
1228
1305
|
),
|
|
1229
1306
|
children: [
|
|
1230
|
-
/* @__PURE__ */ jsx3(
|
|
1231
|
-
|
|
1307
|
+
/* @__PURE__ */ jsx3(p.Icon, { className: "w-2.5 h-2.5", strokeWidth: 2.5 }),
|
|
1308
|
+
p.label,
|
|
1232
1309
|
draft && " (Draft)",
|
|
1233
1310
|
deprecated && " (Deprecated)"
|
|
1234
1311
|
]
|
|
@@ -1257,9 +1334,9 @@ function DefaultService(props) {
|
|
|
1257
1334
|
OwnerIndicator,
|
|
1258
1335
|
{
|
|
1259
1336
|
owners,
|
|
1260
|
-
accentColor:
|
|
1261
|
-
borderColor:
|
|
1262
|
-
iconClass:
|
|
1337
|
+
accentColor: p.ownerAccent,
|
|
1338
|
+
borderColor: p.ownerBorder,
|
|
1339
|
+
iconClass: p.ownerIcon
|
|
1263
1340
|
}
|
|
1264
1341
|
),
|
|
1265
1342
|
!!specifications && /* @__PURE__ */ jsx3(SpecBadges, { specifications, isDark })
|
|
@@ -3231,7 +3308,7 @@ var config_default3 = {
|
|
|
3231
3308
|
|
|
3232
3309
|
// src/nodes/external-system/ExternalSystem.tsx
|
|
3233
3310
|
import { memo as memo12 } from "react";
|
|
3234
|
-
import { Globe } from "lucide-react";
|
|
3311
|
+
import { Globe as Globe2 } from "lucide-react";
|
|
3235
3312
|
import { Handle as Handle9, Position as Position9, useNodeConnections as useNodeConnections8 } from "@xyflow/react";
|
|
3236
3313
|
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3237
3314
|
function GlowHandle12({ side }) {
|
|
@@ -3320,7 +3397,7 @@ function PostItExternalSystem(props) {
|
|
|
3320
3397
|
/* @__PURE__ */ jsxs11("div", { className: "relative px-3.5 py-3", children: [
|
|
3321
3398
|
/* @__PURE__ */ jsxs11("div", { className: "flex items-center justify-between mb-2", children: [
|
|
3322
3399
|
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-1", children: [
|
|
3323
|
-
/* @__PURE__ */ jsx12(
|
|
3400
|
+
/* @__PURE__ */ jsx12(Globe2, { className: "w-3 h-3 text-purple-900/50", strokeWidth: 2.5 }),
|
|
3324
3401
|
/* @__PURE__ */ jsx12("span", { className: "text-[8px] font-bold text-purple-900/50 uppercase tracking-widest", children: "External" })
|
|
3325
3402
|
] }),
|
|
3326
3403
|
draft && /* @__PURE__ */ jsx12("span", { className: "text-[8px] font-extrabold text-amber-900 bg-amber-100 border border-dashed border-amber-400 px-1.5 py-0.5 rounded uppercase", children: "Draft" }),
|
|
@@ -3401,7 +3478,7 @@ function DefaultExternalSystem(props) {
|
|
|
3401
3478
|
deprecated ? "bg-red-500" : "bg-purple-500"
|
|
3402
3479
|
),
|
|
3403
3480
|
children: [
|
|
3404
|
-
/* @__PURE__ */ jsx12(
|
|
3481
|
+
/* @__PURE__ */ jsx12(Globe2, { className: "w-2.5 h-2.5", strokeWidth: 2.5 }),
|
|
3405
3482
|
"External System",
|
|
3406
3483
|
draft && " (Draft)",
|
|
3407
3484
|
deprecated && " (Deprecated)"
|
|
@@ -3441,10 +3518,10 @@ var ExternalSystem_default = memo12(function ExternalSystem(props) {
|
|
|
3441
3518
|
|
|
3442
3519
|
// src/nodes/external-system/config.ts
|
|
3443
3520
|
import { MarkerType as MarkerType4 } from "@xyflow/react";
|
|
3444
|
-
import { Globe as
|
|
3521
|
+
import { Globe as Globe3 } from "lucide-react";
|
|
3445
3522
|
var config_default4 = {
|
|
3446
3523
|
type: "external-system",
|
|
3447
|
-
icon:
|
|
3524
|
+
icon: Globe3,
|
|
3448
3525
|
color: "pink",
|
|
3449
3526
|
targetCanConnectTo: [...SERVICE, ...CHANNEL, ...MESSAGE, ...ACTOR],
|
|
3450
3527
|
sourceCanConnectTo: [...SERVICE, ...CHANNEL, ...MESSAGE, ...ACTOR],
|
|
@@ -3855,7 +3932,7 @@ function buildUrl(path) {
|
|
|
3855
3932
|
import * as HeroIcons from "@heroicons/react/24/outline";
|
|
3856
3933
|
|
|
3857
3934
|
// src/utils/protocols.tsx
|
|
3858
|
-
import { Server, Radio, Wifi, Network, Globe as
|
|
3935
|
+
import { Server, Radio, Wifi, Network, Globe as Globe4, Cloud } from "lucide-react";
|
|
3859
3936
|
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3860
3937
|
function AwsEventBridge({ className }) {
|
|
3861
3938
|
return /* @__PURE__ */ jsxs14("svg", { viewBox: "0 0 40 40", className, children: [
|
|
@@ -3915,8 +3992,8 @@ var protocolIconMap = {
|
|
|
3915
3992
|
// Messaging protocols
|
|
3916
3993
|
mqtt: { component: Wifi, type: "lucide" },
|
|
3917
3994
|
amqp: { component: Network, type: "lucide" },
|
|
3918
|
-
grpc: { component:
|
|
3919
|
-
graphql: { component:
|
|
3995
|
+
grpc: { component: Globe4, type: "lucide" },
|
|
3996
|
+
graphql: { component: Globe4, type: "lucide" },
|
|
3920
3997
|
// Message brokers
|
|
3921
3998
|
kafka: { component: Network, type: "lucide" },
|
|
3922
3999
|
rabbitmq: { component: Network, type: "lucide" },
|
|
@@ -5352,6 +5429,7 @@ var AnimatedMessageEdge = memo26(
|
|
|
5352
5429
|
[lines]
|
|
5353
5430
|
);
|
|
5354
5431
|
const labelWidth = Math.max(longestLine.length * 6.5 + 16, 50);
|
|
5432
|
+
const firstLineDy = `${-((lines.length - 1) * 1.2) / 2}em`;
|
|
5355
5433
|
return /* @__PURE__ */ jsxs26(Fragment3, { children: [
|
|
5356
5434
|
/* @__PURE__ */ jsx27(
|
|
5357
5435
|
BaseEdge,
|
|
@@ -5395,7 +5473,7 @@ var AnimatedMessageEdge = memo26(
|
|
|
5395
5473
|
"tspan",
|
|
5396
5474
|
{
|
|
5397
5475
|
x: labelX,
|
|
5398
|
-
dy: i === 0 ?
|
|
5476
|
+
dy: i === 0 ? firstLineDy : "1.2em",
|
|
5399
5477
|
style: i === 0 ? TSPAN_NORMAL_STYLE : TSPAN_ITALIC_STYLE,
|
|
5400
5478
|
children: line
|
|
5401
5479
|
},
|
|
@@ -5440,6 +5518,16 @@ var MultilineEdgeLabel_default = memo27(function MultilineEdgeLabel(props) {
|
|
|
5440
5518
|
targetPosition
|
|
5441
5519
|
});
|
|
5442
5520
|
const lines = useMemo13(() => String(label ?? "").split("\n"), [label]);
|
|
5521
|
+
const firstLineDy = useMemo13(
|
|
5522
|
+
() => `${-((lines.length - 1) * 1.2) / 2}em`,
|
|
5523
|
+
[lines.length]
|
|
5524
|
+
);
|
|
5525
|
+
const longestLine = useMemo13(
|
|
5526
|
+
() => lines.reduce((a, b) => a.length > b.length ? a : b, ""),
|
|
5527
|
+
[lines]
|
|
5528
|
+
);
|
|
5529
|
+
const labelWidth = Math.max(longestLine.length * 5.5 + 14, 44);
|
|
5530
|
+
const labelHeight = lines.length * 12 + 4;
|
|
5443
5531
|
return /* @__PURE__ */ jsxs27(Fragment4, { children: [
|
|
5444
5532
|
/* @__PURE__ */ jsx28(
|
|
5445
5533
|
"path",
|
|
@@ -5452,6 +5540,22 @@ var MultilineEdgeLabel_default = memo27(function MultilineEdgeLabel(props) {
|
|
|
5452
5540
|
style
|
|
5453
5541
|
}
|
|
5454
5542
|
),
|
|
5543
|
+
label && /* @__PURE__ */ jsx28(
|
|
5544
|
+
"rect",
|
|
5545
|
+
{
|
|
5546
|
+
x: labelX - labelWidth / 2,
|
|
5547
|
+
y: labelY - labelHeight / 2,
|
|
5548
|
+
width: labelWidth,
|
|
5549
|
+
height: labelHeight,
|
|
5550
|
+
fill: "rgb(var(--ec-card-bg))",
|
|
5551
|
+
fillOpacity: 0.95,
|
|
5552
|
+
stroke: "rgb(var(--ec-page-border))",
|
|
5553
|
+
strokeWidth: 0.75,
|
|
5554
|
+
rx: 5,
|
|
5555
|
+
ry: 5,
|
|
5556
|
+
pointerEvents: "none"
|
|
5557
|
+
}
|
|
5558
|
+
),
|
|
5455
5559
|
/* @__PURE__ */ jsx28(
|
|
5456
5560
|
"text",
|
|
5457
5561
|
{
|
|
@@ -5466,7 +5570,7 @@ var MultilineEdgeLabel_default = memo27(function MultilineEdgeLabel(props) {
|
|
|
5466
5570
|
"tspan",
|
|
5467
5571
|
{
|
|
5468
5572
|
x: labelX,
|
|
5469
|
-
dy: i === 0 ?
|
|
5573
|
+
dy: i === 0 ? firstLineDy : "1.2em",
|
|
5470
5574
|
style: i === 0 ? TSPAN_NORMAL_STYLE2 : TSPAN_ITALIC_STYLE2,
|
|
5471
5575
|
children: line
|
|
5472
5576
|
},
|
|
@@ -8538,7 +8642,7 @@ import {
|
|
|
8538
8642
|
ArrowRightLeft as ArrowRightLeft3,
|
|
8539
8643
|
Database as Database5,
|
|
8540
8644
|
Package as Package2,
|
|
8541
|
-
Globe as
|
|
8645
|
+
Globe as Globe5,
|
|
8542
8646
|
User as User3,
|
|
8543
8647
|
MonitorIcon as MonitorIcon2,
|
|
8544
8648
|
BoxesIcon as BoxesIcon2
|
|
@@ -8559,7 +8663,7 @@ var NODE_TYPE_META = {
|
|
|
8559
8663
|
channels: { icon: ArrowRightLeft3, color: "#6b7280", label: "Channel" },
|
|
8560
8664
|
data: { icon: Database5, color: "#3b82f6", label: "Data" },
|
|
8561
8665
|
"data-products": { icon: Package2, color: "#6366f1", label: "Data Product" },
|
|
8562
|
-
externalSystem: { icon:
|
|
8666
|
+
externalSystem: { icon: Globe5, color: "#ec4899", label: "External System" },
|
|
8563
8667
|
actor: { icon: User3, color: "#eab308", label: "Actor" },
|
|
8564
8668
|
view: { icon: MonitorIcon2, color: "#8b5cf6", label: "View" },
|
|
8565
8669
|
domain: { icon: BoxesIcon2, color: "#14b8a6", label: "Domain" },
|
|
@@ -10614,7 +10718,7 @@ var NodeGraphBuilder = ({
|
|
|
10614
10718
|
{
|
|
10615
10719
|
onClick: handleQuickSaveLayout,
|
|
10616
10720
|
disabled: isSavingLayout,
|
|
10617
|
-
className: "text-xs font-medium text-
|
|
10721
|
+
className: "text-xs font-medium text-white bg-[rgb(var(--ec-accent))] hover:bg-[rgb(var(--ec-accent-hover))] px-2 py-1 rounded transition-colors disabled:opacity-50",
|
|
10618
10722
|
children: isSavingLayout ? "Saving..." : "Save"
|
|
10619
10723
|
}
|
|
10620
10724
|
)
|