@eventcatalog/visualiser 3.20.0 → 3.20.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.mjs CHANGED
@@ -5018,144 +5018,297 @@ var GroupNode_default = memo22(function GroupNode({ data }) {
5018
5018
  });
5019
5019
 
5020
5020
  // src/nodes/Custom.tsx
5021
- import { Handle as Handle17 } from "@xyflow/react";
5022
- import * as Icons from "@heroicons/react/24/solid";
5023
5021
  import { memo as memo23, useMemo as useMemo10 } from "react";
5022
+ import { Handle as Handle17, Position as Position15, useNodeConnections as useNodeConnections10 } from "@xyflow/react";
5023
+ import * as Icons from "@heroicons/react/24/solid";
5024
5024
  import * as ContextMenu4 from "@radix-ui/react-context-menu";
5025
- import * as Tooltip from "@radix-ui/react-tooltip";
5026
5025
  import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
5026
+ var PALETTES = {
5027
+ blue: {
5028
+ border: "border-blue-500",
5029
+ badge: "bg-blue-500",
5030
+ ring: "ring-2 ring-blue-400/60 ring-offset-2",
5031
+ shadow: "rgba(59, 130, 246, 0.15)",
5032
+ glow: "linear-gradient(135deg, #3b82f6, #2563eb)",
5033
+ pillBorder: "#3b82f6"
5034
+ },
5035
+ teal: {
5036
+ border: "border-teal-500",
5037
+ badge: "bg-teal-500",
5038
+ ring: "ring-2 ring-teal-400/60 ring-offset-2",
5039
+ shadow: "rgba(20, 184, 166, 0.15)",
5040
+ glow: "linear-gradient(135deg, #14b8a6, #0f766e)",
5041
+ pillBorder: "#14b8a6"
5042
+ },
5043
+ red: {
5044
+ border: "border-red-500",
5045
+ badge: "bg-red-500",
5046
+ ring: "ring-2 ring-red-400/60 ring-offset-2",
5047
+ shadow: "rgba(239, 68, 68, 0.15)",
5048
+ glow: "linear-gradient(135deg, #ef4444, #b91c1c)",
5049
+ pillBorder: "#ef4444"
5050
+ },
5051
+ green: {
5052
+ border: "border-green-500",
5053
+ badge: "bg-green-500",
5054
+ ring: "ring-2 ring-green-400/60 ring-offset-2",
5055
+ shadow: "rgba(34, 197, 94, 0.15)",
5056
+ glow: "linear-gradient(135deg, #22c55e, #15803d)",
5057
+ pillBorder: "#22c55e"
5058
+ },
5059
+ purple: {
5060
+ border: "border-purple-500",
5061
+ badge: "bg-purple-500",
5062
+ ring: "ring-2 ring-purple-400/60 ring-offset-2",
5063
+ shadow: "rgba(168, 85, 247, 0.15)",
5064
+ glow: "linear-gradient(135deg, #a855f7, #7e22ce)",
5065
+ pillBorder: "#a855f7"
5066
+ },
5067
+ orange: {
5068
+ border: "border-orange-500",
5069
+ badge: "bg-orange-500",
5070
+ ring: "ring-2 ring-orange-400/60 ring-offset-2",
5071
+ shadow: "rgba(251, 146, 60, 0.15)",
5072
+ glow: "linear-gradient(135deg, #fb923c, #ea580c)",
5073
+ pillBorder: "#fb923c"
5074
+ },
5075
+ pink: {
5076
+ border: "border-pink-500",
5077
+ badge: "bg-pink-500",
5078
+ ring: "ring-2 ring-pink-400/60 ring-offset-2",
5079
+ shadow: "rgba(236, 72, 153, 0.15)",
5080
+ glow: "linear-gradient(135deg, #ec4899, #be185d)",
5081
+ pillBorder: "#ec4899"
5082
+ },
5083
+ yellow: {
5084
+ border: "border-yellow-500",
5085
+ badge: "bg-yellow-500",
5086
+ ring: "ring-2 ring-yellow-400/60 ring-offset-2",
5087
+ shadow: "rgba(234, 179, 8, 0.15)",
5088
+ glow: "linear-gradient(135deg, #eab308, #a16207)",
5089
+ pillBorder: "#eab308"
5090
+ },
5091
+ gray: {
5092
+ border: "border-gray-500",
5093
+ badge: "bg-gray-500",
5094
+ ring: "ring-2 ring-gray-400/60 ring-offset-2",
5095
+ shadow: "rgba(107, 114, 128, 0.15)",
5096
+ glow: "linear-gradient(135deg, #6b7280, #374151)",
5097
+ pillBorder: "#6b7280"
5098
+ },
5099
+ indigo: {
5100
+ border: "border-indigo-500",
5101
+ badge: "bg-indigo-500",
5102
+ ring: "ring-2 ring-indigo-400/60 ring-offset-2",
5103
+ shadow: "rgba(99, 102, 241, 0.15)",
5104
+ glow: "linear-gradient(135deg, #6366f1, #4338ca)",
5105
+ pillBorder: "#6366f1"
5106
+ },
5107
+ cyan: {
5108
+ border: "border-cyan-500",
5109
+ badge: "bg-cyan-500",
5110
+ ring: "ring-2 ring-cyan-400/60 ring-offset-2",
5111
+ shadow: "rgba(6, 182, 212, 0.15)",
5112
+ glow: "linear-gradient(135deg, #06b6d4, #0e7490)",
5113
+ pillBorder: "#06b6d4"
5114
+ },
5115
+ slate: {
5116
+ border: "border-slate-500",
5117
+ badge: "bg-slate-500",
5118
+ ring: "ring-2 ring-slate-400/60 ring-offset-2",
5119
+ shadow: "rgba(100, 116, 139, 0.15)",
5120
+ glow: "linear-gradient(135deg, #64748b, #334155)",
5121
+ pillBorder: "#64748b"
5122
+ },
5123
+ amber: {
5124
+ border: "border-amber-500",
5125
+ badge: "bg-amber-500",
5126
+ ring: "ring-2 ring-amber-400/60 ring-offset-2",
5127
+ shadow: "rgba(245, 158, 11, 0.15)",
5128
+ glow: "linear-gradient(135deg, #f59e0b, #b45309)",
5129
+ pillBorder: "#f59e0b"
5130
+ },
5131
+ emerald: {
5132
+ border: "border-emerald-500",
5133
+ badge: "bg-emerald-500",
5134
+ ring: "ring-2 ring-emerald-400/60 ring-offset-2",
5135
+ shadow: "rgba(16, 185, 129, 0.15)",
5136
+ glow: "linear-gradient(135deg, #10b981, #047857)",
5137
+ pillBorder: "#10b981"
5138
+ },
5139
+ violet: {
5140
+ border: "border-violet-500",
5141
+ badge: "bg-violet-500",
5142
+ ring: "ring-2 ring-violet-400/60 ring-offset-2",
5143
+ shadow: "rgba(139, 92, 246, 0.15)",
5144
+ glow: "linear-gradient(135deg, #8b5cf6, #6d28d9)",
5145
+ pillBorder: "#8b5cf6"
5146
+ },
5147
+ rose: {
5148
+ border: "border-rose-500",
5149
+ badge: "bg-rose-500",
5150
+ ring: "ring-2 ring-rose-400/60 ring-offset-2",
5151
+ shadow: "rgba(244, 63, 94, 0.15)",
5152
+ glow: "linear-gradient(135deg, #f43f5e, #be123c)",
5153
+ pillBorder: "#f43f5e"
5154
+ }
5155
+ };
5027
5156
  function classNames16(...classes) {
5028
5157
  return classes.filter(Boolean).join(" ");
5029
5158
  }
5030
- var Custom_default = memo23(function UserNode2({
5031
- data,
5032
- sourcePosition,
5033
- targetPosition
5159
+ function getPalette(color) {
5160
+ return PALETTES[color || "blue"] ?? PALETTES.blue;
5161
+ }
5162
+ function GlowHandle14({
5163
+ side,
5164
+ gradient
5034
5165
  }) {
5035
- const { mode, step, custom: customProps } = data;
5166
+ return /* @__PURE__ */ jsx24(
5167
+ "div",
5168
+ {
5169
+ style: {
5170
+ position: "absolute",
5171
+ top: "50%",
5172
+ [side]: -6,
5173
+ transform: "translateY(-50%)",
5174
+ width: 12,
5175
+ height: 12,
5176
+ borderRadius: "50%",
5177
+ background: gradient,
5178
+ border: "2px solid rgb(var(--ec-page-bg))",
5179
+ zIndex: 20,
5180
+ animation: "ec-handle-pulse 2s ease-in-out infinite",
5181
+ pointerEvents: "none"
5182
+ }
5183
+ }
5184
+ );
5185
+ }
5186
+ var Custom_default = memo23(function CustomNode({ data, selected }) {
5187
+ const { mode, custom: customProps, step } = data;
5036
5188
  const {
5037
5189
  color = "blue",
5038
- title = "Custom",
5039
- icon = "UserIcon",
5040
- type = "custom",
5041
- summary = "",
5042
- url: _url = "",
5190
+ title = step?.title || "Custom",
5191
+ icon = "CubeIcon",
5192
+ type = "Custom",
5193
+ summary = step?.summary || "",
5194
+ url,
5043
5195
  properties = EMPTY_OBJECT,
5044
5196
  menu = EMPTY_ARRAY,
5045
5197
  height = 5
5046
5198
  } = customProps;
5047
- const IconComponent = useMemo10(() => Icons[icon], [icon]);
5048
- const { actor: { name: _name } = {} } = step;
5049
- const isLongType = type && type.length > 10;
5050
- const displayType = isLongType ? `${type.substring(0, 10)}...` : type;
5199
+ const palette = getPalette(color);
5200
+ const IconComponent = useMemo10(() => Icons[icon] || Icons.CubeIcon, [icon]);
5051
5201
  const portalContainer = usePortalContainer();
5202
+ const targetConnections = useNodeConnections10({ handleType: "target" });
5203
+ const sourceConnections = useNodeConnections10({ handleType: "source" });
5204
+ const propertyEntries = Object.entries(properties);
5205
+ const contextMenuItems = url ? [{ label: `Open ${type.toLowerCase()}`, url }, ...menu] : menu;
5052
5206
  return /* @__PURE__ */ jsxs22(ContextMenu4.Root, { children: [
5053
5207
  /* @__PURE__ */ jsx24(ContextMenu4.Trigger, { children: /* @__PURE__ */ jsxs22(
5054
5208
  "div",
5055
5209
  {
5056
5210
  className: classNames16(
5057
- `rounded-md border flex justify-start bg-[rgb(var(--ec-card-bg))] text-[rgb(var(--ec-page-text))] border-${color}-400`
5211
+ "relative min-w-48 max-w-60 rounded-xl border-2 overflow-visible",
5212
+ selected ? palette.ring : "",
5213
+ palette.border
5058
5214
  ),
5059
5215
  style: {
5060
- minHeight: mode === "full" ? `${height}em` : "2em",
5061
- ...NODE_WIDTH_STYLE
5216
+ background: "var(--ec-custom-node-bg, rgb(var(--ec-card-bg)))",
5217
+ boxShadow: `0 2px 12px ${palette.shadow}`,
5218
+ minHeight: mode === "full" ? `${height}em` : void 0
5062
5219
  },
5063
5220
  children: [
5064
- /* @__PURE__ */ jsxs22(
5065
- "div",
5221
+ /* @__PURE__ */ jsx24(
5222
+ Handle17,
5223
+ {
5224
+ type: "target",
5225
+ position: Position15.Left,
5226
+ style: HIDDEN_HANDLE_STYLE
5227
+ }
5228
+ ),
5229
+ /* @__PURE__ */ jsx24(
5230
+ Handle17,
5231
+ {
5232
+ type: "source",
5233
+ position: Position15.Right,
5234
+ style: HIDDEN_HANDLE_STYLE
5235
+ }
5236
+ ),
5237
+ targetConnections.length > 0 && /* @__PURE__ */ jsx24(GlowHandle14, { side: "left", gradient: palette.glow }),
5238
+ sourceConnections.length > 0 && /* @__PURE__ */ jsx24(GlowHandle14, { side: "right", gradient: palette.glow }),
5239
+ /* @__PURE__ */ jsx24("div", { className: "absolute -top-3 left-2.5 z-10", children: /* @__PURE__ */ jsxs22(
5240
+ "span",
5066
5241
  {
5067
5242
  className: classNames16(
5068
- `bg-gradient-to-b from-${color}-400 to-${color}-600 relative flex flex-col items-center w-5 justify-between rounded-l-sm text-orange-100-500`,
5069
- `border-r-[1px] border-${color}`
5243
+ "inline-flex items-center gap-1 text-[7px] font-bold uppercase tracking-widest text-white px-1.5 py-0.5 rounded shadow-sm",
5244
+ palette.badge
5070
5245
  ),
5071
5246
  children: [
5072
- IconComponent && /* @__PURE__ */ jsx24(IconComponent, { className: "w-4 h-4 opacity-90 text-white mt-1" }),
5073
- mode === "full" && /* @__PURE__ */ jsx24(Tooltip.Provider, { children: /* @__PURE__ */ jsxs22(Tooltip.Root, { children: [
5074
- /* @__PURE__ */ jsx24(Tooltip.Trigger, { asChild: true, children: /* @__PURE__ */ jsx24(
5075
- "span",
5076
- {
5077
- className: "text-center text-[9px] text-white font-bold uppercase mb-4",
5078
- style: ROTATED_LABEL_STYLE,
5079
- children: displayType
5080
- }
5081
- ) }),
5082
- isLongType && /* @__PURE__ */ jsx24(Tooltip.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs22(
5083
- Tooltip.Content,
5084
- {
5085
- className: "bg-slate-800 text-white rounded px-2 py-1 text-xs shadow-md z-50",
5086
- side: "right",
5087
- sideOffset: 5,
5088
- children: [
5089
- type,
5090
- /* @__PURE__ */ jsx24(Tooltip.Arrow, { className: "fill-slate-800" })
5091
- ]
5092
- }
5093
- ) })
5094
- ] }) })
5247
+ IconComponent && /* @__PURE__ */ jsx24(IconComponent, { className: "w-2.5 h-2.5", "aria-hidden": true }),
5248
+ type
5095
5249
  ]
5096
5250
  }
5097
- ),
5098
- /* @__PURE__ */ jsxs22("div", { className: "p-1 flex-1", children: [
5099
- targetPosition && /* @__PURE__ */ jsx24(Handle17, { type: "target", position: targetPosition }),
5100
- sourcePosition && /* @__PURE__ */ jsx24(Handle17, { type: "source", position: sourcePosition }),
5101
- (!summary || mode !== "full") && /* @__PURE__ */ jsx24("div", { className: "h-full ", children: /* @__PURE__ */ jsx24("span", { className: "text-sm font-bold block pb-0.5 w-full", children: title }) }),
5102
- summary && mode === "full" && /* @__PURE__ */ jsxs22("div", { children: [
5103
- /* @__PURE__ */ jsx24(
5251
+ ) }),
5252
+ /* @__PURE__ */ jsxs22("div", { className: "px-3 pt-3.5 pb-2.5", children: [
5253
+ /* @__PURE__ */ jsx24("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx24("span", { className: "text-[13px] font-semibold leading-snug text-[rgb(var(--ec-page-text))] truncate", children: title }) }),
5254
+ mode === "full" && summary && /* @__PURE__ */ jsx24(
5255
+ "div",
5256
+ {
5257
+ className: "mt-1.5 text-[9px] text-[rgb(var(--ec-page-text-muted))] leading-relaxed overflow-hidden",
5258
+ style: LINE_CLAMP_STYLE,
5259
+ title: summary,
5260
+ children: summary
5261
+ }
5262
+ ),
5263
+ mode === "full" && propertyEntries.length > 0 && /* @__PURE__ */ jsx24("div", { className: "mt-2 pt-1.5 border-t border-[rgb(var(--ec-page-border))] grid grid-cols-2 gap-x-2 gap-y-1", children: propertyEntries.map(([key, value]) => /* @__PURE__ */ jsxs22("div", { className: "min-w-0", children: [
5264
+ /* @__PURE__ */ jsx24("div", { className: "text-[7px] font-bold uppercase tracking-wide text-[rgb(var(--ec-page-text-muted))] truncate", children: key }),
5265
+ typeof value === "string" && value.startsWith("http") ? /* @__PURE__ */ jsx24(
5266
+ "a",
5267
+ {
5268
+ href: value,
5269
+ target: "_blank",
5270
+ rel: "noopener noreferrer",
5271
+ className: "block text-[8px] text-blue-500 underline truncate",
5272
+ title: value,
5273
+ children: value
5274
+ }
5275
+ ) : /* @__PURE__ */ jsx24(
5104
5276
  "div",
5105
5277
  {
5106
- className: classNames16(
5107
- mode === "full" ? `border-b border-[rgb(var(--ec-page-border))]` : ""
5108
- ),
5109
- children: /* @__PURE__ */ jsx24("span", { className: "text-xs font-bold block pb-0.5", children: title })
5278
+ className: "text-[8px] text-[rgb(var(--ec-page-text))] truncate",
5279
+ title: String(value),
5280
+ children: value
5110
5281
  }
5111
- ),
5112
- mode === "full" && /* @__PURE__ */ jsxs22("div", { className: "divide-y divide-[rgb(var(--ec-page-border))] ", children: [
5113
- /* @__PURE__ */ jsx24("div", { className: "leading-3 py-1", children: /* @__PURE__ */ jsx24("span", { className: "text-[8px] font-light", children: summary }) }),
5114
- properties && /* @__PURE__ */ jsx24("div", { className: "grid grid-cols-2 gap-x-4 py-1", children: Object.entries(properties).map(([key, value]) => /* @__PURE__ */ jsxs22(
5115
- "span",
5116
- {
5117
- className: "text-xs",
5118
- style: TINY_FONT_STYLE,
5119
- children: [
5120
- key,
5121
- ":",
5122
- " ",
5123
- typeof value === "string" && value.startsWith("http") ? /* @__PURE__ */ jsx24(
5124
- "a",
5125
- {
5126
- href: value,
5127
- target: "_blank",
5128
- rel: "noopener noreferrer",
5129
- className: "text-blue-500 underline",
5130
- children: value
5131
- }
5132
- ) : value
5133
- ]
5134
- },
5135
- key
5136
- )) })
5137
- ] })
5138
- ] })
5282
+ )
5283
+ ] }, key)) })
5139
5284
  ] })
5140
5285
  ]
5141
5286
  }
5142
5287
  ) }),
5143
- menu?.length > 0 && /* @__PURE__ */ jsx24(ContextMenu4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx24(ContextMenu4.Content, { className: "min-w-[220px] bg-[rgb(var(--ec-card-bg))] rounded-md p-1 shadow-md border border-[rgb(var(--ec-page-border))]", children: menu?.map((item) => {
5144
- return /* @__PURE__ */ jsx24(
5145
- ContextMenu4.Item,
5146
- {
5147
- asChild: true,
5148
- className: "text-sm px-2 py-1.5 outline-none cursor-pointer hover:bg-orange-100 rounded-sm flex items-center",
5149
- children: /* @__PURE__ */ jsx24("a", { href: item.url, children: item.label })
5150
- }
5151
- );
5152
- }) }) })
5288
+ contextMenuItems.length > 0 && /* @__PURE__ */ jsx24(ContextMenu4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx24(ContextMenu4.Content, { className: "min-w-[220px] bg-[rgb(var(--ec-card-bg))] rounded-md p-1 shadow-md border border-[rgb(var(--ec-page-border))]", children: contextMenuItems.map((item) => /* @__PURE__ */ jsx24(
5289
+ ContextMenu4.Item,
5290
+ {
5291
+ asChild: true,
5292
+ className: "text-sm px-2 py-1.5 outline-none cursor-pointer hover:bg-orange-100 rounded-sm flex items-center",
5293
+ children: /* @__PURE__ */ jsx24(
5294
+ "a",
5295
+ {
5296
+ href: item.url,
5297
+ target: "_blank",
5298
+ rel: "noopener noreferrer",
5299
+ className: "text-[rgb(var(--ec-page-text))] no-underline",
5300
+ children: item.label
5301
+ }
5302
+ )
5303
+ },
5304
+ `${item.label}-${item.url || ""}`
5305
+ )) }) })
5153
5306
  ] });
5154
5307
  });
5155
5308
 
5156
5309
  // src/nodes/ExternalSystem2.tsx
5157
5310
  import { memo as memo24 } from "react";
5158
- import { Handle as Handle18, Position as Position15 } from "@xyflow/react";
5311
+ import { Handle as Handle18, Position as Position16 } from "@xyflow/react";
5159
5312
  import { jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
5160
5313
  var ExternalSystem2_default = memo24(function ExternalSystemNode(props) {
5161
5314
  return /* @__PURE__ */ jsxs23("div", { className: "relative", children: [
@@ -5163,7 +5316,7 @@ var ExternalSystem2_default = memo24(function ExternalSystemNode(props) {
5163
5316
  Handle18,
5164
5317
  {
5165
5318
  type: "target",
5166
- position: Position15.Left,
5319
+ position: Position16.Left,
5167
5320
  style: EXTERNAL_SYSTEM_HANDLE_STYLE,
5168
5321
  className: "bg-gray-500"
5169
5322
  }
@@ -5172,7 +5325,7 @@ var ExternalSystem2_default = memo24(function ExternalSystemNode(props) {
5172
5325
  Handle18,
5173
5326
  {
5174
5327
  type: "source",
5175
- position: Position15.Right,
5328
+ position: Position16.Right,
5176
5329
  style: EXTERNAL_SYSTEM_HANDLE_STYLE,
5177
5330
  className: "bg-gray-500"
5178
5331
  }
@@ -5184,9 +5337,9 @@ var ExternalSystem2_default = memo24(function ExternalSystemNode(props) {
5184
5337
  // src/nodes/DataProduct.tsx
5185
5338
  import { memo as memo25 } from "react";
5186
5339
  import { Package } from "lucide-react";
5187
- import { Handle as Handle19, Position as Position16, useNodeConnections as useNodeConnections10 } from "@xyflow/react";
5340
+ import { Handle as Handle19, Position as Position17, useNodeConnections as useNodeConnections11 } from "@xyflow/react";
5188
5341
  import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
5189
- function GlowHandle14({ side }) {
5342
+ function GlowHandle15({ side }) {
5190
5343
  return /* @__PURE__ */ jsx26(
5191
5344
  "div",
5192
5345
  {
@@ -5226,7 +5379,7 @@ function PostItDataProduct(props) {
5226
5379
  Handle19,
5227
5380
  {
5228
5381
  type: "target",
5229
- position: Position16.Left,
5382
+ position: Position17.Left,
5230
5383
  style: HIDDEN_HANDLE_STYLE
5231
5384
  }
5232
5385
  ),
@@ -5234,7 +5387,7 @@ function PostItDataProduct(props) {
5234
5387
  Handle19,
5235
5388
  {
5236
5389
  type: "source",
5237
- position: Position16.Right,
5390
+ position: Position17.Right,
5238
5391
  style: HIDDEN_HANDLE_STYLE
5239
5392
  }
5240
5393
  ),
@@ -5321,8 +5474,8 @@ function DefaultDataProduct(props) {
5321
5474
  const { version, name, summary, deprecated, draft, notes, styles } = props.data.dataProduct;
5322
5475
  const mode = props.data.mode || "simple";
5323
5476
  const customIcon = isIconPath(styles?.icon) ? styles.icon : void 0;
5324
- const targetConnections = useNodeConnections10({ handleType: "target" });
5325
- const sourceConnections = useNodeConnections10({ handleType: "source" });
5477
+ const targetConnections = useNodeConnections11({ handleType: "target" });
5478
+ const sourceConnections = useNodeConnections11({ handleType: "source" });
5326
5479
  const isDark = useDarkMode();
5327
5480
  const deprecatedStripe = isDark ? "rgba(239,68,68,0.25)" : "rgba(239,68,68,0.1)";
5328
5481
  return /* @__PURE__ */ jsxs24(
@@ -5342,7 +5495,7 @@ function DefaultDataProduct(props) {
5342
5495
  Handle19,
5343
5496
  {
5344
5497
  type: "target",
5345
- position: Position16.Left,
5498
+ position: Position17.Left,
5346
5499
  style: HIDDEN_HANDLE_STYLE
5347
5500
  }
5348
5501
  ),
@@ -5350,13 +5503,13 @@ function DefaultDataProduct(props) {
5350
5503
  Handle19,
5351
5504
  {
5352
5505
  type: "source",
5353
- position: Position16.Right,
5506
+ position: Position17.Right,
5354
5507
  style: HIDDEN_HANDLE_STYLE
5355
5508
  }
5356
5509
  ),
5357
5510
  notes && notes.length > 0 && /* @__PURE__ */ jsx26(NotesIndicator, { notes, resourceName: name }),
5358
- targetConnections.length > 0 && /* @__PURE__ */ jsx26(GlowHandle14, { side: "left" }),
5359
- sourceConnections.length > 0 && /* @__PURE__ */ jsx26(GlowHandle14, { side: "right" }),
5511
+ targetConnections.length > 0 && /* @__PURE__ */ jsx26(GlowHandle15, { side: "left" }),
5512
+ sourceConnections.length > 0 && /* @__PURE__ */ jsx26(GlowHandle15, { side: "right" }),
5360
5513
  /* @__PURE__ */ jsx26("div", { className: "absolute -top-2.5 left-2.5 flex items-center gap-1.5 z-10", children: /* @__PURE__ */ jsxs24(
5361
5514
  "span",
5362
5515
  {
@@ -5416,7 +5569,7 @@ var DataProduct_default = memo25(function DataProductNode(props) {
5416
5569
  // src/nodes/message-group/MessageGroupNode.tsx
5417
5570
  import { memo as memo26, useMemo as useMemo11 } from "react";
5418
5571
  import { Layers, Zap as Zap3, Terminal, HelpCircle, Maximize2 as Maximize22 } from "lucide-react";
5419
- import { Handle as Handle20, Position as Position17, useNodeConnections as useNodeConnections11 } from "@xyflow/react";
5572
+ import { Handle as Handle20, Position as Position18, useNodeConnections as useNodeConnections12 } from "@xyflow/react";
5420
5573
  import { jsx as jsx27, jsxs as jsxs25 } from "react/jsx-runtime";
5421
5574
  var TYPE_ICONS = {
5422
5575
  events: Zap3,
@@ -5432,8 +5585,8 @@ var CARD_STYLE = {
5432
5585
  var MessageGroupNode_default = memo26(function MessageGroupNode(props) {
5433
5586
  const { groupName, messageCount } = props.data;
5434
5587
  const isDark = useDarkMode();
5435
- const targetConnections = useNodeConnections11({ handleType: "target" });
5436
- const sourceConnections = useNodeConnections11({ handleType: "source" });
5588
+ const targetConnections = useNodeConnections12({ handleType: "target" });
5589
+ const sourceConnections = useNodeConnections12({ handleType: "source" });
5437
5590
  const stackDepth = messageCount >= 3 ? 3 : messageCount;
5438
5591
  const typeBreakdown = useMemo11(() => {
5439
5592
  const counts = {};
@@ -5481,7 +5634,7 @@ var MessageGroupNode_default = memo26(function MessageGroupNode(props) {
5481
5634
  Handle20,
5482
5635
  {
5483
5636
  type: "target",
5484
- position: Position17.Left,
5637
+ position: Position18.Left,
5485
5638
  style: HIDDEN_HANDLE_STYLE
5486
5639
  }
5487
5640
  ),
@@ -5489,7 +5642,7 @@ var MessageGroupNode_default = memo26(function MessageGroupNode(props) {
5489
5642
  Handle20,
5490
5643
  {
5491
5644
  type: "source",
5492
- position: Position17.Right,
5645
+ position: Position18.Right,
5493
5646
  style: HIDDEN_HANDLE_STYLE
5494
5647
  }
5495
5648
  ),
@@ -7123,7 +7276,7 @@ function getNodeDocUrl(node) {
7123
7276
  }
7124
7277
 
7125
7278
  // src/components/FocusMode/FocusModeNodeActions.tsx
7126
- import { NodeToolbar, Position as Position18, useViewport } from "@xyflow/react";
7279
+ import { NodeToolbar, Position as Position19, useViewport } from "@xyflow/react";
7127
7280
  import { ArrowRightLeft as ArrowRightLeft2, FileText } from "lucide-react";
7128
7281
  import { jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
7129
7282
  var FocusModeNodeActions = ({
@@ -7156,7 +7309,7 @@ var FocusModeNodeActions = ({
7156
7309
  NodeToolbar,
7157
7310
  {
7158
7311
  nodeId: node.id,
7159
- position: Position18.Bottom,
7312
+ position: Position19.Bottom,
7160
7313
  isVisible: true,
7161
7314
  offset: -16,
7162
7315
  children: /* @__PURE__ */ jsx35(
@@ -7183,7 +7336,7 @@ var FocusModeNodeActions = ({
7183
7336
  NodeToolbar,
7184
7337
  {
7185
7338
  nodeId: node.id,
7186
- position: Position18.Bottom,
7339
+ position: Position19.Bottom,
7187
7340
  isVisible: true,
7188
7341
  offset: -16,
7189
7342
  children: /* @__PURE__ */ jsxs33(
@@ -7221,7 +7374,7 @@ var FocusModeNodeActions = ({
7221
7374
  var FocusModeNodeActions_default = FocusModeNodeActions;
7222
7375
 
7223
7376
  // src/components/FocusMode/FocusModePlaceholder.tsx
7224
- import { Handle as Handle21, Position as Position19 } from "@xyflow/react";
7377
+ import { Handle as Handle21, Position as Position20 } from "@xyflow/react";
7225
7378
  import { jsx as jsx36, jsxs as jsxs34 } from "react/jsx-runtime";
7226
7379
  var FocusModePlaceholder = ({
7227
7380
  data
@@ -7237,7 +7390,7 @@ var FocusModePlaceholder = ({
7237
7390
  Handle21,
7238
7391
  {
7239
7392
  type: "target",
7240
- position: Position19.Left,
7393
+ position: Position20.Left,
7241
7394
  style: { visibility: "hidden" }
7242
7395
  }
7243
7396
  ),
@@ -7246,7 +7399,7 @@ var FocusModePlaceholder = ({
7246
7399
  Handle21,
7247
7400
  {
7248
7401
  type: "source",
7249
- position: Position19.Right,
7402
+ position: Position20.Right,
7250
7403
  style: { visibility: "hidden" }
7251
7404
  }
7252
7405
  )
@@ -8173,7 +8326,7 @@ var MermaidView_default = MermaidView;
8173
8326
  import { useCallback as useCallback10, useMemo as useMemo17, useState as useState11, useEffect as useEffect7 } from "react";
8174
8327
 
8175
8328
  // src/utils/utils/utils.ts
8176
- import { MarkerType as MarkerType6, Position as Position20 } from "@xyflow/react";
8329
+ import { MarkerType as MarkerType6, Position as Position21 } from "@xyflow/react";
8177
8330
  import dagre from "dagre";
8178
8331
  var generateIdForNode = (node) => {
8179
8332
  return `${node.data.id}-${node.data.version}`;
@@ -8263,8 +8416,8 @@ var createEdge = (edgeOptions) => {
8263
8416
  };
8264
8417
  var createNode = (values) => {
8265
8418
  return {
8266
- sourcePosition: Position20.Right,
8267
- targetPosition: Position20.Left,
8419
+ sourcePosition: Position21.Right,
8420
+ targetPosition: Position21.Left,
8268
8421
  ...values
8269
8422
  };
8270
8423
  };