@railtownai/railtracks-visualizer 0.0.59 → 0.0.60

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/cjs/index.js CHANGED
@@ -29,6 +29,12 @@ var LoadingOutlined = require('@ant-design/icons/es/icons/LoadingOutlined');
29
29
  var RcColorPicker = require('@rc-component/color-picker');
30
30
  var RightOutlined = require('@ant-design/icons/es/icons/RightOutlined');
31
31
  var RcCollapse = require('@rc-component/collapse');
32
+ var CheckCircleFilled = require('@ant-design/icons/es/icons/CheckCircleFilled');
33
+ var CloseCircleFilled = require('@ant-design/icons/es/icons/CloseCircleFilled');
34
+ var ExclamationCircleFilled = require('@ant-design/icons/es/icons/ExclamationCircleFilled');
35
+ var InfoCircleFilled = require('@ant-design/icons/es/icons/InfoCircleFilled');
36
+ var notification = require('@rc-component/notification');
37
+ var RcTooltip = require('@rc-component/tooltip');
32
38
  var RcTree = require('@rc-component/tree');
33
39
  var FileOutlined = require('@ant-design/icons/es/icons/FileOutlined');
34
40
  var FolderOpenOutlined = require('@ant-design/icons/es/icons/FolderOpenOutlined');
@@ -39,16 +45,10 @@ var HolderOutlined = require('@ant-design/icons/es/icons/HolderOutlined');
39
45
  var CaretDownFilled = require('@ant-design/icons/es/icons/CaretDownFilled');
40
46
  var MinusSquareOutlined = require('@ant-design/icons/es/icons/MinusSquareOutlined');
41
47
  var PlusSquareOutlined = require('@ant-design/icons/es/icons/PlusSquareOutlined');
42
- var CheckCircleFilled = require('@ant-design/icons/es/icons/CheckCircleFilled');
43
- var CloseCircleFilled = require('@ant-design/icons/es/icons/CloseCircleFilled');
44
- var ExclamationCircleFilled = require('@ant-design/icons/es/icons/ExclamationCircleFilled');
45
- var InfoCircleFilled = require('@ant-design/icons/es/icons/InfoCircleFilled');
46
- var notification = require('@rc-component/notification');
47
48
  var EditOutlined = require('@ant-design/icons/es/icons/EditOutlined');
48
49
  var ResizeObserver$1 = require('@rc-component/resize-observer');
49
50
  require('@rc-component/util/es/Dom/canUseDom');
50
51
  var styleChecker = require('@rc-component/util/es/Dom/styleChecker');
51
- var RcTooltip = require('@rc-component/tooltip');
52
52
  var EnterOutlined = require('@ant-design/icons/es/icons/EnterOutlined');
53
53
  var KeyCode = require('@rc-component/util/es/KeyCode');
54
54
  var RcTextArea = require('@rc-component/textarea');
@@ -57,9 +57,6 @@ var focus$1 = require('@rc-component/util/es/Dom/focus');
57
57
  var CheckOutlined = require('@ant-design/icons/es/icons/CheckOutlined');
58
58
  var CopyOutlined = require('@ant-design/icons/es/icons/CopyOutlined');
59
59
  var RcSwitch = require('@rc-component/switch');
60
- var EllipsisOutlined = require('@ant-design/icons/es/icons/EllipsisOutlined');
61
- var PlusOutlined = require('@ant-design/icons/es/icons/PlusOutlined');
62
- var RcTabs = require('@rc-component/tabs');
63
60
  var RcSelect = require('@rc-component/select');
64
61
  var DownOutlined = require('@ant-design/icons/es/icons/DownOutlined');
65
62
  var SearchOutlined = require('@ant-design/icons/es/icons/SearchOutlined');
@@ -70,6 +67,7 @@ var LeftOutlined = require('@ant-design/icons/es/icons/LeftOutlined');
70
67
  var RcDropdown = require('@rc-component/dropdown');
71
68
  var RcMenu = require('@rc-component/menu');
72
69
  var BarsOutlined = require('@ant-design/icons/es/icons/BarsOutlined');
70
+ var EllipsisOutlined = require('@ant-design/icons/es/icons/EllipsisOutlined');
73
71
  require('@rc-component/util/es/Dom/findDOMNode');
74
72
  var useColumns = require('@rc-component/table/es/hooks/useColumns');
75
73
  var DoubleLeftOutlined = require('@ant-design/icons/es/icons/DoubleLeftOutlined');
@@ -78,6 +76,8 @@ var RcPagination = require('@rc-component/pagination');
78
76
  var FilterFilled = require('@ant-design/icons/es/icons/FilterFilled');
79
77
  var CaretDownOutlined = require('@ant-design/icons/es/icons/CaretDownOutlined');
80
78
  var CaretUpOutlined = require('@ant-design/icons/es/icons/CaretUpOutlined');
79
+ var PlusOutlined = require('@ant-design/icons/es/icons/PlusOutlined');
80
+ var RcTabs = require('@rc-component/tabs');
81
81
 
82
82
  function _interopNamespaceDefault(e) {
83
83
  var n = Object.create(null);
@@ -12923,7 +12923,7 @@ const createLucideIcon = (iconName, iconNode)=>{
12923
12923
  return Component;
12924
12924
  };
12925
12925
 
12926
- const __iconNode$u = [
12926
+ const __iconNode$x = [
12927
12927
  [
12928
12928
  "path",
12929
12929
  {
@@ -12939,9 +12939,9 @@ const __iconNode$u = [
12939
12939
  }
12940
12940
  ]
12941
12941
  ];
12942
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$u);
12942
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$x);
12943
12943
 
12944
- const __iconNode$t = [
12944
+ const __iconNode$w = [
12945
12945
  [
12946
12946
  "path",
12947
12947
  {
@@ -12957,9 +12957,9 @@ const __iconNode$t = [
12957
12957
  }
12958
12958
  ]
12959
12959
  ];
12960
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$t);
12960
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$w);
12961
12961
 
12962
- const __iconNode$s = [
12962
+ const __iconNode$v = [
12963
12963
  [
12964
12964
  "path",
12965
12965
  {
@@ -13007,9 +13007,9 @@ const __iconNode$s = [
13007
13007
  }
13008
13008
  ]
13009
13009
  ];
13010
- const Bot = createLucideIcon("bot", __iconNode$s);
13010
+ const Bot = createLucideIcon("bot", __iconNode$v);
13011
13011
 
13012
- const __iconNode$r = [
13012
+ const __iconNode$u = [
13013
13013
  [
13014
13014
  "path",
13015
13015
  {
@@ -13043,9 +13043,9 @@ const __iconNode$r = [
13043
13043
  }
13044
13044
  ]
13045
13045
  ];
13046
- const Calendar = createLucideIcon("calendar", __iconNode$r);
13046
+ const Calendar = createLucideIcon("calendar", __iconNode$u);
13047
13047
 
13048
- const __iconNode$q = [
13048
+ const __iconNode$t = [
13049
13049
  [
13050
13050
  "path",
13051
13051
  {
@@ -13102,9 +13102,9 @@ const __iconNode$q = [
13102
13102
  }
13103
13103
  ]
13104
13104
  ];
13105
- const ChartNetwork = createLucideIcon("chart-network", __iconNode$q);
13105
+ const ChartNetwork = createLucideIcon("chart-network", __iconNode$t);
13106
13106
 
13107
- const __iconNode$p = [
13107
+ const __iconNode$s = [
13108
13108
  [
13109
13109
  "path",
13110
13110
  {
@@ -13113,9 +13113,9 @@ const __iconNode$p = [
13113
13113
  }
13114
13114
  ]
13115
13115
  ];
13116
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$p);
13116
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$s);
13117
13117
 
13118
- const __iconNode$o = [
13118
+ const __iconNode$r = [
13119
13119
  [
13120
13120
  "path",
13121
13121
  {
@@ -13124,9 +13124,9 @@ const __iconNode$o = [
13124
13124
  }
13125
13125
  ]
13126
13126
  ];
13127
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$o);
13127
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$r);
13128
13128
 
13129
- const __iconNode$n = [
13129
+ const __iconNode$q = [
13130
13130
  [
13131
13131
  "path",
13132
13132
  {
@@ -13142,9 +13142,9 @@ const __iconNode$n = [
13142
13142
  }
13143
13143
  ]
13144
13144
  ];
13145
- const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$n);
13145
+ const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$q);
13146
13146
 
13147
- const __iconNode$m = [
13147
+ const __iconNode$p = [
13148
13148
  [
13149
13149
  "path",
13150
13150
  {
@@ -13160,9 +13160,9 @@ const __iconNode$m = [
13160
13160
  }
13161
13161
  ]
13162
13162
  ];
13163
- const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$m);
13163
+ const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$p);
13164
13164
 
13165
- const __iconNode$l = [
13165
+ const __iconNode$o = [
13166
13166
  [
13167
13167
  "circle",
13168
13168
  {
@@ -13193,9 +13193,9 @@ const __iconNode$l = [
13193
13193
  }
13194
13194
  ]
13195
13195
  ];
13196
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$l);
13196
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$o);
13197
13197
 
13198
- const __iconNode$k = [
13198
+ const __iconNode$n = [
13199
13199
  [
13200
13200
  "path",
13201
13201
  {
@@ -13211,9 +13211,36 @@ const __iconNode$k = [
13211
13211
  }
13212
13212
  ]
13213
13213
  ];
13214
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$k);
13214
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$n);
13215
13215
 
13216
- const __iconNode$j = [
13216
+ const __iconNode$m = [
13217
+ [
13218
+ "circle",
13219
+ {
13220
+ cx: "12",
13221
+ cy: "12",
13222
+ r: "10",
13223
+ key: "1mglay"
13224
+ }
13225
+ ],
13226
+ [
13227
+ "path",
13228
+ {
13229
+ d: "M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",
13230
+ key: "1h4pet"
13231
+ }
13232
+ ],
13233
+ [
13234
+ "path",
13235
+ {
13236
+ d: "M12 18V6",
13237
+ key: "zqpxq5"
13238
+ }
13239
+ ]
13240
+ ];
13241
+ const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$m);
13242
+
13243
+ const __iconNode$l = [
13217
13244
  [
13218
13245
  "circle",
13219
13246
  {
@@ -13231,9 +13258,9 @@ const __iconNode$j = [
13231
13258
  }
13232
13259
  ]
13233
13260
  ];
13234
- const Clock = createLucideIcon("clock", __iconNode$j);
13261
+ const Clock = createLucideIcon("clock", __iconNode$l);
13235
13262
 
13236
- const __iconNode$i = [
13263
+ const __iconNode$k = [
13237
13264
  [
13238
13265
  "path",
13239
13266
  {
@@ -13249,9 +13276,9 @@ const __iconNode$i = [
13249
13276
  }
13250
13277
  ]
13251
13278
  ];
13252
- const CloudLightning = createLucideIcon("cloud-lightning", __iconNode$i);
13279
+ const CloudLightning = createLucideIcon("cloud-lightning", __iconNode$k);
13253
13280
 
13254
- const __iconNode$h = [
13281
+ const __iconNode$j = [
13255
13282
  [
13256
13283
  "rect",
13257
13284
  {
@@ -13272,9 +13299,9 @@ const __iconNode$h = [
13272
13299
  }
13273
13300
  ]
13274
13301
  ];
13275
- const Copy = createLucideIcon("copy", __iconNode$h);
13302
+ const Copy = createLucideIcon("copy", __iconNode$j);
13276
13303
 
13277
- const __iconNode$g = [
13304
+ const __iconNode$i = [
13278
13305
  [
13279
13306
  "path",
13280
13307
  {
@@ -13382,9 +13409,9 @@ const __iconNode$g = [
13382
13409
  }
13383
13410
  ]
13384
13411
  ];
13385
- const Cpu = createLucideIcon("cpu", __iconNode$g);
13412
+ const Cpu = createLucideIcon("cpu", __iconNode$i);
13386
13413
 
13387
- const __iconNode$f = [
13414
+ const __iconNode$h = [
13388
13415
  [
13389
13416
  "line",
13390
13417
  {
@@ -13403,9 +13430,9 @@ const __iconNode$f = [
13403
13430
  }
13404
13431
  ]
13405
13432
  ];
13406
- const DollarSign = createLucideIcon("dollar-sign", __iconNode$f);
13433
+ const DollarSign = createLucideIcon("dollar-sign", __iconNode$h);
13407
13434
 
13408
- const __iconNode$e = [
13435
+ const __iconNode$g = [
13409
13436
  [
13410
13437
  "path",
13411
13438
  {
@@ -13435,9 +13462,9 @@ const __iconNode$e = [
13435
13462
  }
13436
13463
  ]
13437
13464
  ];
13438
- const FileInput = createLucideIcon("file-input", __iconNode$e);
13465
+ const FileInput = createLucideIcon("file-input", __iconNode$g);
13439
13466
 
13440
- const __iconNode$d = [
13467
+ const __iconNode$f = [
13441
13468
  [
13442
13469
  "path",
13443
13470
  {
@@ -13467,9 +13494,69 @@ const __iconNode$d = [
13467
13494
  }
13468
13495
  ]
13469
13496
  ];
13470
- const FileOutput = createLucideIcon("file-output", __iconNode$d);
13497
+ const FileOutput = createLucideIcon("file-output", __iconNode$f);
13471
13498
 
13472
- const __iconNode$c = [
13499
+ const __iconNode$e = [
13500
+ [
13501
+ "path",
13502
+ {
13503
+ d: "M12 22v-6",
13504
+ key: "6o8u61"
13505
+ }
13506
+ ],
13507
+ [
13508
+ "path",
13509
+ {
13510
+ d: "M12 8V2",
13511
+ key: "1wkif3"
13512
+ }
13513
+ ],
13514
+ [
13515
+ "path",
13516
+ {
13517
+ d: "M4 12H2",
13518
+ key: "rhcxmi"
13519
+ }
13520
+ ],
13521
+ [
13522
+ "path",
13523
+ {
13524
+ d: "M10 12H8",
13525
+ key: "s88cx1"
13526
+ }
13527
+ ],
13528
+ [
13529
+ "path",
13530
+ {
13531
+ d: "M16 12h-2",
13532
+ key: "10asgb"
13533
+ }
13534
+ ],
13535
+ [
13536
+ "path",
13537
+ {
13538
+ d: "M22 12h-2",
13539
+ key: "14jgyd"
13540
+ }
13541
+ ],
13542
+ [
13543
+ "path",
13544
+ {
13545
+ d: "m15 19-3-3-3 3",
13546
+ key: "e37ymu"
13547
+ }
13548
+ ],
13549
+ [
13550
+ "path",
13551
+ {
13552
+ d: "m15 5-3 3-3-3",
13553
+ key: "19d6lf"
13554
+ }
13555
+ ]
13556
+ ];
13557
+ const FoldVertical = createLucideIcon("fold-vertical", __iconNode$e);
13558
+
13559
+ const __iconNode$d = [
13473
13560
  [
13474
13561
  "line",
13475
13562
  {
@@ -13511,9 +13598,9 @@ const __iconNode$c = [
13511
13598
  }
13512
13599
  ]
13513
13600
  ];
13514
- const Hash = createLucideIcon("hash", __iconNode$c);
13601
+ const Hash = createLucideIcon("hash", __iconNode$d);
13515
13602
 
13516
- const __iconNode$b = [
13603
+ const __iconNode$c = [
13517
13604
  [
13518
13605
  "circle",
13519
13606
  {
@@ -13538,9 +13625,9 @@ const __iconNode$b = [
13538
13625
  }
13539
13626
  ]
13540
13627
  ];
13541
- const Info = createLucideIcon("info", __iconNode$b);
13628
+ const Info = createLucideIcon("info", __iconNode$c);
13542
13629
 
13543
- const __iconNode$a = [
13630
+ const __iconNode$b = [
13544
13631
  [
13545
13632
  "path",
13546
13633
  {
@@ -13577,9 +13664,9 @@ const __iconNode$a = [
13577
13664
  }
13578
13665
  ]
13579
13666
  ];
13580
- const ListChecks = createLucideIcon("list-checks", __iconNode$a);
13667
+ const ListChecks = createLucideIcon("list-checks", __iconNode$b);
13581
13668
 
13582
- const __iconNode$9 = [
13669
+ const __iconNode$a = [
13583
13670
  [
13584
13671
  "path",
13585
13672
  {
@@ -13595,9 +13682,9 @@ const __iconNode$9 = [
13595
13682
  }
13596
13683
  ]
13597
13684
  ];
13598
- const MessagesSquare = createLucideIcon("messages-square", __iconNode$9);
13685
+ const MessagesSquare = createLucideIcon("messages-square", __iconNode$a);
13599
13686
 
13600
- const __iconNode$8 = [
13687
+ const __iconNode$9 = [
13601
13688
  [
13602
13689
  "path",
13603
13690
  {
@@ -13606,9 +13693,9 @@ const __iconNode$8 = [
13606
13693
  }
13607
13694
  ]
13608
13695
  ];
13609
- const MessageSquare = createLucideIcon("message-square", __iconNode$8);
13696
+ const MessageSquare = createLucideIcon("message-square", __iconNode$9);
13610
13697
 
13611
- const __iconNode$7 = [
13698
+ const __iconNode$8 = [
13612
13699
  [
13613
13700
  "rect",
13614
13701
  {
@@ -13628,9 +13715,9 @@ const __iconNode$7 = [
13628
13715
  }
13629
13716
  ]
13630
13717
  ];
13631
- const PanelLeft = createLucideIcon("panel-left", __iconNode$7);
13718
+ const PanelLeft = createLucideIcon("panel-left", __iconNode$8);
13632
13719
 
13633
- const __iconNode$6 = [
13720
+ const __iconNode$7 = [
13634
13721
  [
13635
13722
  "path",
13636
13723
  {
@@ -13660,9 +13747,9 @@ const __iconNode$6 = [
13660
13747
  }
13661
13748
  ]
13662
13749
  ];
13663
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$6);
13750
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$7);
13664
13751
 
13665
- const __iconNode$5 = [
13752
+ const __iconNode$6 = [
13666
13753
  [
13667
13754
  "path",
13668
13755
  {
@@ -13699,9 +13786,9 @@ const __iconNode$5 = [
13699
13786
  }
13700
13787
  ]
13701
13788
  ];
13702
- const Scale = createLucideIcon("scale", __iconNode$5);
13789
+ const Scale = createLucideIcon("scale", __iconNode$6);
13703
13790
 
13704
- const __iconNode$4 = [
13791
+ const __iconNode$5 = [
13705
13792
  [
13706
13793
  "path",
13707
13794
  {
@@ -13724,9 +13811,9 @@ const __iconNode$4 = [
13724
13811
  }
13725
13812
  ]
13726
13813
  ];
13727
- const Share = createLucideIcon("share", __iconNode$4);
13814
+ const Share = createLucideIcon("share", __iconNode$5);
13728
13815
 
13729
- const __iconNode$3 = [
13816
+ const __iconNode$4 = [
13730
13817
  [
13731
13818
  "circle",
13732
13819
  {
@@ -13755,9 +13842,9 @@ const __iconNode$3 = [
13755
13842
  }
13756
13843
  ]
13757
13844
  ];
13758
- const Target = createLucideIcon("target", __iconNode$3);
13845
+ const Target = createLucideIcon("target", __iconNode$4);
13759
13846
 
13760
- const __iconNode$2 = [
13847
+ const __iconNode$3 = [
13761
13848
  [
13762
13849
  "line",
13763
13850
  {
@@ -13788,7 +13875,67 @@ const __iconNode$2 = [
13788
13875
  }
13789
13876
  ]
13790
13877
  ];
13791
- const Timer = createLucideIcon("timer", __iconNode$2);
13878
+ const Timer = createLucideIcon("timer", __iconNode$3);
13879
+
13880
+ const __iconNode$2 = [
13881
+ [
13882
+ "path",
13883
+ {
13884
+ d: "M12 22v-6",
13885
+ key: "6o8u61"
13886
+ }
13887
+ ],
13888
+ [
13889
+ "path",
13890
+ {
13891
+ d: "M12 8V2",
13892
+ key: "1wkif3"
13893
+ }
13894
+ ],
13895
+ [
13896
+ "path",
13897
+ {
13898
+ d: "M4 12H2",
13899
+ key: "rhcxmi"
13900
+ }
13901
+ ],
13902
+ [
13903
+ "path",
13904
+ {
13905
+ d: "M10 12H8",
13906
+ key: "s88cx1"
13907
+ }
13908
+ ],
13909
+ [
13910
+ "path",
13911
+ {
13912
+ d: "M16 12h-2",
13913
+ key: "10asgb"
13914
+ }
13915
+ ],
13916
+ [
13917
+ "path",
13918
+ {
13919
+ d: "M22 12h-2",
13920
+ key: "14jgyd"
13921
+ }
13922
+ ],
13923
+ [
13924
+ "path",
13925
+ {
13926
+ d: "m15 19-3 3-3-3",
13927
+ key: "11eu04"
13928
+ }
13929
+ ],
13930
+ [
13931
+ "path",
13932
+ {
13933
+ d: "m15 5-3-3-3 3",
13934
+ key: "itvq4r"
13935
+ }
13936
+ ]
13937
+ ];
13938
+ const UnfoldVertical = createLucideIcon("unfold-vertical", __iconNode$2);
13792
13939
 
13793
13940
  const __iconNode$1 = [
13794
13941
  [
@@ -15973,19 +16120,18 @@ const useComponentTheme = (themeProp)=>{
15973
16120
  return themeProp || contextTheme;
15974
16121
  };
15975
16122
 
15976
- const Edge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style = {}, markerEnd, bidirectional = false, data, clientToSvgCoords, svgRef })=>{
16123
+ const Edge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, animated = false, style = {}, markerEnd, bidirectional = false, data, clientToSvgCoords, svgRef })=>{
15977
16124
  const [isHovered, setIsHovered] = React.useState(false);
15978
16125
  const { theme } = useTheme$1();
15979
16126
  const themeColors = theme.colors;
15980
- // Function to determine stroke color based on edge status and theme
15981
16127
  const getStrokeColor = ()=>{
15982
16128
  const status = data?.details?.status;
15983
- data?.details?.output;
15984
- // Check for error indicators
15985
- const hasError = status === "Failed";
15986
- if (hasError) {
16129
+ if (status === "Failed") {
15987
16130
  return themeColors.destructive;
15988
16131
  }
16132
+ if (animated) {
16133
+ return themeColors.primary;
16134
+ }
15989
16135
  return themeColors.mutedForeground;
15990
16136
  };
15991
16137
  const [edgePath] = React.useMemo(()=>{
@@ -20873,6 +21019,25 @@ function cn(...inputs) {
20873
21019
  }
20874
21020
  return text.substring(0, maxLength - 3) + "...";
20875
21021
  }
21022
+ /**
21023
+ * True for plain object literals (own enumerable keys, not arrays, Date, etc.).
21024
+ */ function isPlainObject(value) {
21025
+ return value !== null && typeof value === "object" && !Array.isArray(value) && value.constructor === Object;
21026
+ }
21027
+ /**
21028
+ * Escapes `\` and `.` in a segment so dot-delimited path keys stay unambiguous (e.g. JSON tree UIs).
21029
+ */ function escapeDotPathSegment(segment) {
21030
+ return segment.replace(/\\/g, "\\\\").replace(/\./g, "\\.");
21031
+ }
21032
+ /**
21033
+ * Compact JSON-like string for tree / debug views: strings use JSON quoting; null and undefined as words.
21034
+ */ function formatJsonTreePrimitive(value) {
21035
+ if (value === null) return "null";
21036
+ if (value === undefined) return "undefined";
21037
+ if (typeof value === "string") return JSON.stringify(value);
21038
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
21039
+ return String(value);
21040
+ }
20876
21041
  /**
20877
21042
  * Styled-components utility for conditional styling
20878
21043
  * @param condition - The condition to check
@@ -21148,500 +21313,6 @@ const AppleIcon = ({ width = "1.5rem", height = "1.5rem" })=>/*#__PURE__*/ React
21148
21313
  d: "M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z"
21149
21314
  }));
21150
21315
 
21151
- const TooltipContainer = styled.div`
21152
- position: relative;
21153
- display: inline-block;
21154
- `;
21155
- const TooltipContent = styled.div`
21156
- position: absolute;
21157
- z-index: 1000;
21158
- padding: 8px 12px;
21159
- font-weight: 400;
21160
- background-color: ${({ themeColors })=>themeColors.popover};
21161
- color: ${({ themeColors })=>themeColors.popoverForeground};
21162
- border: 1px solid ${({ themeColors })=>themeColors.border};
21163
- border-radius: 6px;
21164
- font-size: 12px;
21165
- line-height: 1.4;
21166
- white-space: nowrap;
21167
- box-shadow:
21168
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
21169
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
21170
- opacity: ${({ isVisible })=>isVisible ? 1 : 0};
21171
- visibility: ${({ isVisible })=>isVisible ? "visible" : "hidden"};
21172
- transition:
21173
- opacity 0.15s ease-in-out,
21174
- visibility 0.15s ease-in-out;
21175
- pointer-events: none;
21176
-
21177
- /* Arrow */
21178
- &::before {
21179
- content: "";
21180
- position: absolute;
21181
- width: 0;
21182
- height: 0;
21183
- border: 4px solid transparent;
21184
- }
21185
-
21186
- /* Placement-specific positioning and arrow */
21187
- ${({ placement, themeColors })=>{
21188
- switch(placement){
21189
- case "top":
21190
- return `
21191
- bottom: 100%;
21192
- left: 50%;
21193
- transform: translateX(-50%);
21194
- margin-bottom: 8px;
21195
- &::before {
21196
- top: 100%;
21197
- left: 50%;
21198
- transform: translateX(-50%);
21199
- border-top-color: ${themeColors.border};
21200
- }
21201
- &::after {
21202
- content: "";
21203
- position: absolute;
21204
- top: 100%;
21205
- left: 50%;
21206
- transform: translateX(-50%);
21207
- width: 0;
21208
- height: 0;
21209
- border: 3px solid transparent;
21210
- border-top-color: ${themeColors.popover};
21211
- }
21212
- `;
21213
- case "bottom":
21214
- return `
21215
- top: 100%;
21216
- left: 50%;
21217
- transform: translateX(-50%);
21218
- margin-top: 8px;
21219
- &::before {
21220
- bottom: 100%;
21221
- left: 50%;
21222
- transform: translateX(-50%);
21223
- border-bottom-color: ${themeColors.border};
21224
- }
21225
- &::after {
21226
- content: "";
21227
- position: absolute;
21228
- bottom: 100%;
21229
- left: 50%;
21230
- transform: translateX(-50%);
21231
- width: 0;
21232
- height: 0;
21233
- border: 3px solid transparent;
21234
- border-bottom-color: ${themeColors.popover};
21235
- }
21236
- `;
21237
- case "left":
21238
- return `
21239
- right: 100%;
21240
- top: 50%;
21241
- transform: translateY(-50%);
21242
- margin-right: 8px;
21243
- &::before {
21244
- left: 100%;
21245
- top: 50%;
21246
- transform: translateY(-50%);
21247
- border-left-color: ${themeColors.border};
21248
- }
21249
- &::after {
21250
- content: "";
21251
- position: absolute;
21252
- left: 100%;
21253
- top: 50%;
21254
- transform: translateY(-50%);
21255
- width: 0;
21256
- height: 0;
21257
- border: 3px solid transparent;
21258
- border-left-color: ${themeColors.popover};
21259
- }
21260
- `;
21261
- case "right":
21262
- return `
21263
- left: 100%;
21264
- top: 50%;
21265
- transform: translateY(-50%);
21266
- margin-left: 8px;
21267
- &::before {
21268
- right: 100%;
21269
- top: 50%;
21270
- transform: translateY(-50%);
21271
- border-right-color: ${themeColors.border};
21272
- }
21273
- &::after {
21274
- content: "";
21275
- position: absolute;
21276
- right: 100%;
21277
- top: 50%;
21278
- transform: translateY(-50%);
21279
- width: 0;
21280
- height: 0;
21281
- border: 3px solid transparent;
21282
- border-right-color: ${themeColors.popover};
21283
- }
21284
- `;
21285
- case "topLeft":
21286
- return `
21287
- bottom: 100%;
21288
- right: 0;
21289
- margin-bottom: 8px;
21290
- &::before {
21291
- top: 100%;
21292
- right: 8px;
21293
- border-top-color: ${themeColors.border};
21294
- }
21295
- &::after {
21296
- content: "";
21297
- position: absolute;
21298
- top: 100%;
21299
- right: 8px;
21300
- width: 0;
21301
- height: 0;
21302
- border: 3px solid transparent;
21303
- border-top-color: ${themeColors.popover};
21304
- }
21305
- `;
21306
- case "topRight":
21307
- return `
21308
- bottom: 100%;
21309
- left: 0;
21310
- margin-bottom: 8px;
21311
- &::before {
21312
- top: 100%;
21313
- left: 8px;
21314
- border-top-color: ${themeColors.border};
21315
- }
21316
- &::after {
21317
- content: "";
21318
- position: absolute;
21319
- top: 100%;
21320
- left: 8px;
21321
- width: 0;
21322
- height: 0;
21323
- border: 3px solid transparent;
21324
- border-top-color: ${themeColors.popover};
21325
- }
21326
- `;
21327
- case "bottomLeft":
21328
- return `
21329
- top: 100%;
21330
- right: 0;
21331
- margin-top: 8px;
21332
- &::before {
21333
- bottom: 100%;
21334
- right: 8px;
21335
- border-bottom-color: ${themeColors.border};
21336
- }
21337
- &::after {
21338
- content: "";
21339
- position: absolute;
21340
- bottom: 100%;
21341
- right: 8px;
21342
- width: 0;
21343
- height: 0;
21344
- border: 3px solid transparent;
21345
- border-bottom-color: ${themeColors.popover};
21346
- }
21347
- `;
21348
- case "bottomRight":
21349
- return `
21350
- top: 100%;
21351
- left: 0;
21352
- margin-top: 8px;
21353
- &::before {
21354
- bottom: 100%;
21355
- left: 8px;
21356
- border-bottom-color: ${themeColors.border};
21357
- }
21358
- &::after {
21359
- content: "";
21360
- position: absolute;
21361
- bottom: 100%;
21362
- left: 8px;
21363
- width: 0;
21364
- height: 0;
21365
- border: 3px solid transparent;
21366
- border-bottom-color: ${themeColors.popover};
21367
- }
21368
- `;
21369
- case "leftTop":
21370
- return `
21371
- right: 100%;
21372
- bottom: 0;
21373
- margin-right: 8px;
21374
- &::before {
21375
- left: 100%;
21376
- bottom: 8px;
21377
- border-left-color: ${themeColors.border};
21378
- }
21379
- &::after {
21380
- content: "";
21381
- position: absolute;
21382
- left: 100%;
21383
- bottom: 8px;
21384
- width: 0;
21385
- height: 0;
21386
- border: 3px solid transparent;
21387
- border-left-color: ${themeColors.popover};
21388
- }
21389
- `;
21390
- case "leftBottom":
21391
- return `
21392
- right: 100%;
21393
- top: 0;
21394
- margin-right: 8px;
21395
- &::before {
21396
- left: 100%;
21397
- top: 8px;
21398
- border-left-color: ${themeColors.border};
21399
- }
21400
- &::after {
21401
- content: "";
21402
- position: absolute;
21403
- left: 100%;
21404
- top: 8px;
21405
- width: 0;
21406
- height: 0;
21407
- border: 3px solid transparent;
21408
- border-left-color: ${themeColors.popover};
21409
- }
21410
- `;
21411
- case "rightTop":
21412
- return `
21413
- left: 100%;
21414
- bottom: 0;
21415
- margin-left: 8px;
21416
- &::before {
21417
- right: 100%;
21418
- bottom: 8px;
21419
- border-right-color: ${themeColors.border};
21420
- }
21421
- &::after {
21422
- content: "";
21423
- position: absolute;
21424
- right: 100%;
21425
- bottom: 8px;
21426
- width: 0;
21427
- height: 0;
21428
- border: 3px solid transparent;
21429
- border-right-color: ${themeColors.popover};
21430
- }
21431
- `;
21432
- case "rightBottom":
21433
- return `
21434
- left: 100%;
21435
- top: 0;
21436
- margin-left: 8px;
21437
- &::before {
21438
- right: 100%;
21439
- top: 8px;
21440
- border-right-color: ${themeColors.border};
21441
- }
21442
- &::after {
21443
- content: "";
21444
- position: absolute;
21445
- right: 100%;
21446
- top: 8px;
21447
- width: 0;
21448
- height: 0;
21449
- border: 3px solid transparent;
21450
- border-right-color: ${themeColors.popover};
21451
- }
21452
- `;
21453
- default:
21454
- return `
21455
- bottom: 100%;
21456
- left: 50%;
21457
- transform: translateX(-50%);
21458
- margin-bottom: 8px;
21459
- &::before {
21460
- top: 100%;
21461
- left: 50%;
21462
- transform: translateX(-50%);
21463
- border-top-color: ${themeColors.border};
21464
- }
21465
- &::after {
21466
- content: "";
21467
- position: absolute;
21468
- top: 100%;
21469
- left: 50%;
21470
- transform: translateX(-50%);
21471
- width: 0;
21472
- height: 0;
21473
- border: 3px solid transparent;
21474
- border-top-color: ${themeColors.popover};
21475
- }
21476
- `;
21477
- }
21478
- }}
21479
- `;
21480
- const Tooltip$1 = ({ children, content, placement = "top", delay = 300 })=>{
21481
- const { theme } = useTheme$1();
21482
- const [isVisible, setIsVisible] = React__namespace.useState(false);
21483
- const timeoutRef = React__namespace.useRef();
21484
- const showTooltip = ()=>{
21485
- if (timeoutRef.current) {
21486
- clearTimeout(timeoutRef.current);
21487
- }
21488
- timeoutRef.current = setTimeout(()=>{
21489
- setIsVisible(true);
21490
- }, delay);
21491
- };
21492
- const hideTooltip = ()=>{
21493
- if (timeoutRef.current) {
21494
- clearTimeout(timeoutRef.current);
21495
- }
21496
- setIsVisible(false);
21497
- };
21498
- React__namespace.useEffect(()=>{
21499
- return ()=>{
21500
- if (timeoutRef.current) {
21501
- clearTimeout(timeoutRef.current);
21502
- }
21503
- };
21504
- }, []);
21505
- return /*#__PURE__*/ React__namespace.createElement(TooltipContainer, {
21506
- onMouseEnter: showTooltip,
21507
- onMouseLeave: hideTooltip,
21508
- onFocus: showTooltip,
21509
- onBlur: hideTooltip
21510
- }, children, /*#__PURE__*/ React__namespace.createElement(TooltipContent, {
21511
- isVisible: isVisible,
21512
- placement: placement,
21513
- themeColors: theme.colors,
21514
- role: "tooltip"
21515
- }, content));
21516
- };
21517
-
21518
- const BadgeContainer$3 = styled.div`
21519
- display: inline-flex;
21520
- align-items: center;
21521
- border-radius: 9999px;
21522
- border: 1px solid transparent;
21523
- padding: 0.125rem 0.625rem;
21524
- font-size: 0.75rem;
21525
- font-weight: 600;
21526
- transition: colors 0.2s ease-in-out;
21527
- outline: none;
21528
-
21529
- &:focus {
21530
- outline: none;
21531
- box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
21532
- }
21533
-
21534
- ${({ variant, themeColors })=>{
21535
- switch(variant){
21536
- case "default":
21537
- return `
21538
- background-color: ${themeColors.primary};
21539
- color: ${themeColors.primaryForeground};
21540
- &:hover {
21541
- background-color: ${themeColors.primary};
21542
- opacity: 0.9;
21543
- }
21544
- `;
21545
- case "secondary":
21546
- return `
21547
- background-color: ${themeColors.secondary};
21548
- color: ${themeColors.secondaryForeground};
21549
- &:hover {
21550
- background-color: ${themeColors.muted};
21551
- }
21552
- `;
21553
- case "destructive":
21554
- return `
21555
- background-color: ${themeColors.destructive};
21556
- color: ${themeColors.destructiveForeground};
21557
- &:hover {
21558
- background-color: ${themeColors.destructive};
21559
- opacity: 0.9;
21560
- }
21561
- `;
21562
- case "outline":
21563
- return `
21564
- background-color: transparent;
21565
- color: ${themeColors.cardForeground};
21566
- border-color: ${themeColors.border};
21567
- `;
21568
- case "cost":
21569
- return `
21570
- background-color: ${themeColors.secondary};
21571
- color: ${themeColors.secondaryForeground};
21572
- &:hover {
21573
- background-color: ${themeColors.muted};
21574
- }
21575
- `;
21576
- case "gray":
21577
- return `
21578
- background-color: ${themeColors.secondary};
21579
- color: ${themeColors.secondaryForeground};
21580
- &:hover {
21581
- background-color: ${themeColors.muted};
21582
- }
21583
- `;
21584
- case "latency":
21585
- return `
21586
- background-color: ${themeColors.secondary};
21587
- color: ${themeColors.secondaryForeground};
21588
- &:hover {
21589
- background-color: ${themeColors.muted};
21590
- }
21591
- `;
21592
- case "latencyLow":
21593
- return `
21594
- background-color: ${themeColors.secondary};
21595
- color: ${themeColors.secondaryForeground};
21596
- &:hover {
21597
- background-color: ${themeColors.muted};
21598
- }
21599
- `;
21600
- case "latencyMedium":
21601
- return `
21602
- background-color: ${themeColors.secondary};
21603
- color: ${themeColors.secondaryForeground};
21604
- &:hover {
21605
- background-color: ${themeColors.muted};
21606
- }
21607
- `;
21608
- case "latencyHigh":
21609
- return `
21610
- background-color: ${themeColors.destructive};
21611
- color: ${themeColors.destructiveForeground};
21612
- &:hover {
21613
- background-color: ${themeColors.destructive};
21614
- opacity: 0.9;
21615
- }
21616
- `;
21617
- default:
21618
- return `
21619
- background-color: ${themeColors.primary};
21620
- color: ${themeColors.primaryForeground};
21621
- &:hover {
21622
- background-color: ${themeColors.primary};
21623
- opacity: 0.9;
21624
- }
21625
- `;
21626
- }
21627
- }}
21628
- `;
21629
- const Badge = ({ variant = "default", children, title, placement = "top" })=>{
21630
- const { theme } = useTheme$1();
21631
- const themeColors = theme.colors;
21632
- const badgeContent = /*#__PURE__*/ React__namespace.createElement(BadgeContainer$3, {
21633
- variant: variant,
21634
- themeColors: themeColors
21635
- }, children);
21636
- if (title) {
21637
- return /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
21638
- content: title,
21639
- placement: placement
21640
- }, badgeContent);
21641
- }
21642
- return badgeContent;
21643
- };
21644
-
21645
21316
  function noop$2() {}
21646
21317
  const { resetWarned: rcResetWarned } = util.warning;
21647
21318
  let deprecatedWarnList = null;
@@ -23668,7 +23339,7 @@ const genActionStyle = (token)=>{
23668
23339
  }
23669
23340
  };
23670
23341
  };
23671
- const prepareComponentToken$n = (token)=>{
23342
+ const prepareComponentToken$m = (token)=>{
23672
23343
  const paddingHorizontal = 12; // Fixed value here.
23673
23344
  return {
23674
23345
  withDescriptionIconSize: token.fontSizeHeading3,
@@ -23676,11 +23347,11 @@ const prepareComponentToken$n = (token)=>{
23676
23347
  withDescriptionPadding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`
23677
23348
  };
23678
23349
  };
23679
- var useStyle$u = genStyleHooks('Alert', (token)=>[
23350
+ var useStyle$t = genStyleHooks('Alert', (token)=>[
23680
23351
  genBaseStyle$6(token),
23681
23352
  genTypeStyle(token),
23682
23353
  genActionStyle(token)
23683
- ], prepareComponentToken$n);
23354
+ ], prepareComponentToken$m);
23684
23355
 
23685
23356
  const IconNode = (props)=>{
23686
23357
  const { icon, type, className, style, successIcon, infoIcon, warningIcon, errorIcon } = props;
@@ -23732,7 +23403,7 @@ const Alert$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref$1)=>{
23732
23403
  }));
23733
23404
  const { getPrefixCls, direction, closable: contextClosable, closeIcon: contextCloseIcon, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, successIcon, infoIcon, warningIcon, errorIcon } = useComponentConfig('alert');
23734
23405
  const prefixCls = getPrefixCls('alert', customizePrefixCls);
23735
- const [hashId, cssVarCls] = useStyle$u(prefixCls);
23406
+ const [hashId, cssVarCls] = useStyle$t(prefixCls);
23736
23407
  const { onClose: closableOnClose, afterClose: closableAfterClose } = closable && typeof closable === 'object' ? closable : {};
23737
23408
  const handleClose = (e)=>{
23738
23409
  setClosed(true);
@@ -24772,19 +24443,19 @@ const genMessageStyle = (token)=>{
24772
24443
  }
24773
24444
  ];
24774
24445
  };
24775
- const prepareComponentToken$m = (token)=>({
24446
+ const prepareComponentToken$l = (token)=>({
24776
24447
  zIndexPopup: token.zIndexPopupBase + CONTAINER_MAX_OFFSET + 10,
24777
24448
  contentBg: token.colorBgElevated,
24778
24449
  contentPadding: `${(token.controlHeightLG - token.fontSize * token.lineHeight) / 2}px ${token.paddingSM}px`
24779
24450
  });
24780
24451
  // ============================== Export ==============================
24781
- var useStyle$t = genStyleHooks('Message', (token)=>{
24452
+ var useStyle$s = genStyleHooks('Message', (token)=>{
24782
24453
  // Gen-style functions here
24783
24454
  const combinedToken = cssinjsUtils.mergeToken(token, {
24784
24455
  height: 150
24785
24456
  });
24786
24457
  return genMessageStyle(combinedToken);
24787
- }, prepareComponentToken$m);
24458
+ }, prepareComponentToken$l);
24788
24459
 
24789
24460
  const TypeIcon = {
24790
24461
  info: /*#__PURE__*/ React__namespace.createElement(InfoCircleFilled, null),
@@ -24818,7 +24489,7 @@ const PureContent = (props)=>{
24818
24489
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('message');
24819
24490
  const prefixCls = staticPrefixCls || getPrefixCls('message');
24820
24491
  const rootCls = useCSSVarCls(prefixCls);
24821
- const [hashId, cssVarCls] = useStyle$t(prefixCls, rootCls);
24492
+ const [hashId, cssVarCls] = useStyle$s(prefixCls, rootCls);
24822
24493
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
24823
24494
  contextClassNames,
24824
24495
  messageClassNames
@@ -24873,7 +24544,7 @@ const DEFAULT_OFFSET = 8;
24873
24544
  const DEFAULT_DURATION = 3;
24874
24545
  const Wrapper = ({ children, prefixCls })=>{
24875
24546
  const rootCls = useCSSVarCls(prefixCls);
24876
- const [hashId, cssVarCls] = useStyle$t(prefixCls, rootCls);
24547
+ const [hashId, cssVarCls] = useStyle$s(prefixCls, rootCls);
24877
24548
  return /*#__PURE__*/ React__namespace.createElement(notification.NotificationProvider, {
24878
24549
  classNames: {
24879
24550
  list: clsx(hashId, cssVarCls, rootCls)
@@ -25151,7 +24822,7 @@ const genWaveStyle = (token)=>{
25151
24822
  }
25152
24823
  };
25153
24824
  };
25154
- var useStyle$s = genComponentStyleHook('Wave', genWaveStyle);
24825
+ var useStyle$r = genComponentStyleHook('Wave', genWaveStyle);
25155
24826
 
25156
24827
  const TARGET_CLS = `${defaultPrefixCls}-wave-target`;
25157
24828
 
@@ -25326,7 +24997,7 @@ const Wave = (props)=>{
25326
24997
  const containerRef = React.useRef(null);
25327
24998
  // ============================== Style ===============================
25328
24999
  const prefixCls = getPrefixCls('wave');
25329
- const hashId = useStyle$s(prefixCls);
25000
+ const hashId = useStyle$r(prefixCls);
25330
25001
  // =============================== Wave ===============================
25331
25002
  const showWave = useWave(containerRef, clsx(prefixCls, hashId), component, colorSource);
25332
25003
  // ============================== Effect ==============================
@@ -25404,7 +25075,7 @@ const genSpaceCompactStyle = (token)=>{
25404
25075
  };
25405
25076
  };
25406
25077
  // ============================== Export ==============================
25407
- var useStyle$r = genStyleHooks([
25078
+ var useStyle$q = genStyleHooks([
25408
25079
  'Space',
25409
25080
  'Compact'
25410
25081
  ], genSpaceCompactStyle, ()=>({}), {
@@ -25463,7 +25134,7 @@ const Compact$1 = (props)=>{
25463
25134
  const [mergedOrientation, mergedVertical] = useOrientation(orientation, vertical, direction);
25464
25135
  const mergedSize = useSize((ctx)=>size ?? ctx);
25465
25136
  const prefixCls = getPrefixCls('space-compact', customizePrefixCls);
25466
- const [hashId] = useStyle$r(prefixCls);
25137
+ const [hashId] = useStyle$q(prefixCls);
25467
25138
  const clx = clsx(prefixCls, hashId, {
25468
25139
  [`${prefixCls}-rtl`]: directionConfig === 'rtl',
25469
25140
  [`${prefixCls}-block`]: block,
@@ -26678,7 +26349,7 @@ const genGhostStyle = (token)=>{
26678
26349
  }
26679
26350
  };
26680
26351
  };
26681
- const prepareComponentToken$l = (token)=>({
26352
+ const prepareComponentToken$k = (token)=>({
26682
26353
  headerPadding: `${token.paddingSM}px ${token.padding}px`,
26683
26354
  headerBg: token.colorFillAlter,
26684
26355
  contentPadding: `${token.padding}px 16px`,
@@ -26687,7 +26358,7 @@ const prepareComponentToken$l = (token)=>({
26687
26358
  borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
26688
26359
  borderlessContentBg: 'transparent'
26689
26360
  });
26690
- var useStyle$q = genStyleHooks('Collapse', (token)=>{
26361
+ var useStyle$p = genStyleHooks('Collapse', (token)=>{
26691
26362
  const collapseToken = cssinjsUtils.mergeToken(token, {
26692
26363
  collapseHeaderPaddingSM: `${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingSM)}`,
26693
26364
  collapseHeaderPaddingLG: `${cssinjs.unit(token.padding)} ${cssinjs.unit(token.paddingLG)}`,
@@ -26700,7 +26371,7 @@ var useStyle$q = genStyleHooks('Collapse', (token)=>{
26700
26371
  genArrowStyle(collapseToken),
26701
26372
  genCollapseMotion(collapseToken)
26702
26373
  ];
26703
- }, prepareComponentToken$l);
26374
+ }, prepareComponentToken$k);
26704
26375
 
26705
26376
  const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
26706
26377
  const { getPrefixCls, direction, expandIcon: contextExpandIcon, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('collapse');
@@ -26708,7 +26379,7 @@ const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
26708
26379
  const mergedSize = useSize((ctx)=>customizeSize ?? ctx ?? 'middle');
26709
26380
  const prefixCls = getPrefixCls('collapse', customizePrefixCls);
26710
26381
  const rootPrefixCls = getPrefixCls();
26711
- const [hashId, cssVarCls] = useStyle$q(prefixCls);
26382
+ const [hashId, cssVarCls] = useStyle$p(prefixCls);
26712
26383
  const mergedPlacement = expandIconPlacement ?? expandIconPosition ?? 'start';
26713
26384
  // =========== Merged Props for Semantic ===========
26714
26385
  const mergedProps = {
@@ -26831,7 +26502,7 @@ const prepareToken$2 = (token)=>{
26831
26502
  });
26832
26503
  return buttonToken;
26833
26504
  };
26834
- const prepareComponentToken$k = (token)=>{
26505
+ const prepareComponentToken$j = (token)=>{
26835
26506
  const contentFontSize = token.contentFontSize ?? token.fontSize;
26836
26507
  const contentFontSizeSM = token.contentFontSizeSM ?? token.fontSize;
26837
26508
  const contentFontSizeLG = token.contentFontSizeLG ?? token.fontSizeLG;
@@ -27341,7 +27012,7 @@ const genBlockButtonStyle = (token)=>{
27341
27012
  };
27342
27013
  };
27343
27014
  // ============================== Export ==============================
27344
- var useStyle$p = genStyleHooks('Button', (token)=>{
27015
+ var useStyle$o = genStyleHooks('Button', (token)=>{
27345
27016
  const buttonToken = prepareToken$2(token);
27346
27017
  return [
27347
27018
  // Shared
@@ -27357,7 +27028,7 @@ var useStyle$p = genStyleHooks('Button', (token)=>{
27357
27028
  // Button Group
27358
27029
  genGroupStyle$1(buttonToken)
27359
27030
  ];
27360
- }, prepareComponentToken$k, {
27031
+ }, prepareComponentToken$j, {
27361
27032
  unitless: {
27362
27033
  fontWeight: true,
27363
27034
  contentLineHeight: true,
@@ -27541,7 +27212,7 @@ var Compact = genSubStyleComponent([
27541
27212
  genCompactItemVerticalStyle(buttonToken),
27542
27213
  genButtonCompactStyle(buttonToken)
27543
27214
  ];
27544
- }, prepareComponentToken$k);
27215
+ }, prepareComponentToken$j);
27545
27216
 
27546
27217
  function getLoadingConfig(loading) {
27547
27218
  if (typeof loading === 'object' && loading) {
@@ -27649,7 +27320,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27649
27320
  const mergedColorText = isDanger ? 'dangerous' : mergedColor;
27650
27321
  const mergedInsertSpace = autoInsertSpace ?? contextAutoInsertSpace ?? true;
27651
27322
  const prefixCls = getPrefixCls('btn', customizePrefixCls);
27652
- const [hashId, cssVarCls] = useStyle$p(prefixCls);
27323
+ const [hashId, cssVarCls] = useStyle$o(prefixCls);
27653
27324
  const disabled = React.useContext(DisabledContext);
27654
27325
  const mergedDisabled = customDisabled ?? disabled;
27655
27326
  const groupSize = React.useContext(GroupSizeContext);
@@ -28219,7 +27890,7 @@ const genBaseStyle$4 = (token)=>{
28219
27890
  };
28220
27891
  };
28221
27892
  // ============================== Export ==============================
28222
- const prepareComponentToken$j = (token)=>{
27893
+ const prepareComponentToken$i = (token)=>{
28223
27894
  const { colorFillContent, colorFill } = token;
28224
27895
  const gradientFromColor = colorFillContent;
28225
27896
  const gradientToColor = colorFill;
@@ -28234,7 +27905,7 @@ const prepareComponentToken$j = (token)=>{
28234
27905
  paragraphLiHeight: token.controlHeight / 2
28235
27906
  };
28236
27907
  };
28237
- var useStyle$o = genStyleHooks('Skeleton', (token)=>{
27908
+ var useStyle$n = genStyleHooks('Skeleton', (token)=>{
28238
27909
  const { componentCls, calc } = token;
28239
27910
  const skeletonToken = cssinjsUtils.mergeToken(token, {
28240
27911
  skeletonAvatarCls: `${componentCls}-avatar`,
@@ -28251,7 +27922,7 @@ var useStyle$o = genStyleHooks('Skeleton', (token)=>{
28251
27922
  skeletonLoadingMotionDuration: '1.4s'
28252
27923
  });
28253
27924
  return genBaseStyle$4(skeletonToken);
28254
- }, prepareComponentToken$j, {
27925
+ }, prepareComponentToken$i, {
28255
27926
  deprecatedTokens: [
28256
27927
  [
28257
27928
  'color',
@@ -28268,7 +27939,7 @@ const SkeletonAvatar = (props)=>{
28268
27939
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, active, style, styles, shape = 'circle', size = 'default', ...rest } = props;
28269
27940
  const { getPrefixCls } = React__namespace.useContext(ConfigContext);
28270
27941
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28271
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27942
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28272
27943
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28273
27944
  [`${prefixCls}-active`]: active
28274
27945
  }, classNames?.root, className, rootClassName, hashId, cssVarCls);
@@ -28292,7 +27963,7 @@ const SkeletonButton = (props)=>{
28292
27963
  const { prefixCls: customizePrefixCls, className, rootClassName, classNames, active, style, styles, block = false, size = 'default', ...rest } = props;
28293
27964
  const { getPrefixCls } = React__namespace.useContext(ConfigContext);
28294
27965
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28295
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27966
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28296
27967
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28297
27968
  [`${prefixCls}-active`]: active,
28298
27969
  [`${prefixCls}-block`]: block
@@ -28316,7 +27987,7 @@ const SkeletonNode = (props)=>{
28316
27987
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, internalClassName, style, styles, active, children } = props;
28317
27988
  const { getPrefixCls } = React__namespace.useContext(ConfigContext);
28318
27989
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28319
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27990
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28320
27991
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28321
27992
  [`${prefixCls}-active`]: active
28322
27993
  }, hashId, classNames?.root, className, rootClassName, cssVarCls);
@@ -28352,7 +28023,7 @@ const SkeletonInput = (props)=>{
28352
28023
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, active, block, style, styles, size = 'default', ...rest } = props;
28353
28024
  const { getPrefixCls } = React__namespace.useContext(ConfigContext);
28354
28025
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28355
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
28026
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28356
28027
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28357
28028
  [`${prefixCls}-active`]: active,
28358
28029
  [`${prefixCls}-block`]: block
@@ -28460,7 +28131,7 @@ const Skeleton = (props)=>{
28460
28131
  const { prefixCls: customizePrefixCls, loading, className, rootClassName, classNames, style, styles, children, avatar = false, title = true, paragraph = true, active, round } = props;
28461
28132
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('skeleton');
28462
28133
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28463
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
28134
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28464
28135
  const mergedProps = {
28465
28136
  ...props,
28466
28137
  avatar,
@@ -28986,7 +28657,7 @@ const genSharedEmptyStyle = (token)=>{
28986
28657
  };
28987
28658
  };
28988
28659
  // ============================== Export ==============================
28989
- var useStyle$n = genStyleHooks('Empty', (token)=>{
28660
+ var useStyle$m = genStyleHooks('Empty', (token)=>{
28990
28661
  const { componentCls, controlHeightLG, calc } = token;
28991
28662
  const emptyToken = cssinjsUtils.mergeToken(token, {
28992
28663
  emptyImgCls: `${componentCls}-img`,
@@ -29003,7 +28674,7 @@ const Empty = (props)=>{
29003
28674
  const { className, rootClassName, prefixCls: customizePrefixCls, image, description, children, imageStyle, style, classNames, styles, ...restProps } = props;
29004
28675
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
29005
28676
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
29006
- const [hashId, cssVarCls] = useStyle$n(prefixCls);
28677
+ const [hashId, cssVarCls] = useStyle$m(prefixCls);
29007
28678
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29008
28679
  contextClassNames,
29009
28680
  classNames
@@ -29795,7 +29466,7 @@ const genSelectInputStyle = (token)=>{
29795
29466
  };
29796
29467
  };
29797
29468
 
29798
- const prepareComponentToken$i = (token)=>{
29469
+ const prepareComponentToken$h = (token)=>{
29799
29470
  const { fontSize, lineHeight, lineWidth, controlHeight, controlHeightSM, controlHeightLG, paddingXXS, controlPaddingHorizontal, zIndexPopupBase, colorText, fontWeightStrong, controlItemBgActive, controlItemBgHover, colorBgContainer, colorFillSecondary, colorBgContainerDisabled, colorTextDisabled, colorPrimaryHover, colorPrimary, controlOutline } = token;
29800
29471
  // Item height default use `controlHeight - 2 * paddingXXS`,
29801
29472
  // but some case `paddingXXS=0`.
@@ -29963,7 +29634,7 @@ var useSelectStyle = genStyleHooks('Select', (token, { rootPrefixCls })=>{
29963
29634
  genSelectStyle(selectToken),
29964
29635
  genSelectInputStyle(selectToken)
29965
29636
  ];
29966
- }, prepareComponentToken$i, {
29637
+ }, prepareComponentToken$h, {
29967
29638
  unitless: {
29968
29639
  optionLineHeight: true,
29969
29640
  optionSelectedFontWeight: true
@@ -30281,16 +29952,6 @@ const getResponsiveMap = (token)=>({
30281
29952
  });
30282
29953
  return token;
30283
29954
  };
30284
- const matchScreen = (screens, screenSizes)=>{
30285
- if (!screenSizes) {
30286
- return;
30287
- }
30288
- for (const breakpoint of responsiveArray){
30289
- if (screens[breakpoint] && screenSizes?.[breakpoint] !== undefined) {
30290
- return screenSizes[breakpoint];
30291
- }
30292
- }
30293
- };
30294
29955
  const useResponsiveObserver = ()=>{
30295
29956
  const [, token] = useToken();
30296
29957
  const responsiveMap = getResponsiveMap(validateBreakpoints(token));
@@ -31004,7 +30665,7 @@ const genTooltipStyle = (token)=>{
31004
30665
  ];
31005
30666
  };
31006
30667
  // ============================== Export ==============================
31007
- const prepareComponentToken$h = (token)=>({
30668
+ const prepareComponentToken$g = (token)=>({
31008
30669
  zIndexPopup: token.zIndexPopupBase + 70,
31009
30670
  maxWidth: 250,
31010
30671
  ...getArrowOffsetToken({
@@ -31015,7 +30676,7 @@ const prepareComponentToken$h = (token)=>({
31015
30676
  borderRadiusOuter: Math.min(token.borderRadiusOuter, 4)
31016
30677
  }))
31017
30678
  });
31018
- var useStyle$m = ((prefixCls, rootCls, injectStyle = true)=>{
30679
+ var useStyle$l = ((prefixCls, rootCls, injectStyle = true)=>{
31019
30680
  const useStyle = genStyleHooks('Tooltip', (token)=>{
31020
30681
  const { borderRadius, colorTextLightSolid, colorBgSpotlight, maxWidth } = token;
31021
30682
  const TooltipToken = cssinjsUtils.mergeToken(token, {
@@ -31029,7 +30690,7 @@ var useStyle$m = ((prefixCls, rootCls, injectStyle = true)=>{
31029
30690
  genTooltipStyle(TooltipToken),
31030
30691
  initZoomMotion(token, 'zoom-big-fast')
31031
30692
  ];
31032
- }, prepareComponentToken$h, {
30693
+ }, prepareComponentToken$g, {
31033
30694
  resetStyle: false,
31034
30695
  // Popover use Tooltip as internal component. We do not need to handle this.
31035
30696
  injectStyle
@@ -31088,7 +30749,7 @@ const parseColor = (rootPrefixCls, prefixCls, color)=>{
31088
30749
  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);
31089
30750
  const rootPrefixCls = getPrefixCls();
31090
30751
  const rootCls = useCSSVarCls(prefixCls);
31091
- const [hashId, cssVarCls] = useStyle$m(prefixCls, rootCls);
30752
+ const [hashId, cssVarCls] = useStyle$l(prefixCls, rootCls);
31092
30753
  // Color
31093
30754
  const colorInfo = parseColor(rootPrefixCls, prefixCls, color);
31094
30755
  const arrowContentStyle = colorInfo.arrowStyle;
@@ -31250,7 +30911,7 @@ const InternalTooltip = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>
31250
30911
  const childCls = !childProps.className || typeof childProps.className === 'string' ? clsx(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className;
31251
30912
  // Style
31252
30913
  const rootCls = useCSSVarCls(prefixCls);
31253
- const [hashId, cssVarCls] = useStyle$m(prefixCls, rootCls, !injectFromPopover);
30914
+ const [hashId, cssVarCls] = useStyle$l(prefixCls, rootCls, !injectFromPopover);
31254
30915
  // Color
31255
30916
  const colorInfo = parseColor(rootPrefixCls, prefixCls, color);
31256
30917
  const arrowContentStyle = colorInfo.arrowStyle;
@@ -31314,12 +30975,12 @@ const InternalTooltip = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>
31314
30975
  value: contextZIndex
31315
30976
  }, content);
31316
30977
  });
31317
- const Tooltip = InternalTooltip;
30978
+ const Tooltip$1 = InternalTooltip;
31318
30979
  if (process.env.NODE_ENV !== 'production') {
31319
- Tooltip.displayName = 'Tooltip';
30980
+ Tooltip$1.displayName = 'Tooltip';
31320
30981
  }
31321
- Tooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$2;
31322
- Tooltip.UniqueProvider = UniqueProvider;
30982
+ Tooltip$1._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$2;
30983
+ Tooltip$1.UniqueProvider = UniqueProvider;
31323
30984
 
31324
30985
  const isPrimitive = (value)=>typeof value !== 'object' && typeof value !== 'function' || value === null;
31325
30986
 
@@ -31388,7 +31049,7 @@ const genLayoutStyle = (token)=>{
31388
31049
  }
31389
31050
  };
31390
31051
  };
31391
- const prepareComponentToken$g = (token)=>{
31052
+ const prepareComponentToken$f = (token)=>{
31392
31053
  const { colorBgLayout, controlHeight, controlHeightLG, colorText, controlHeightSM, marginXXS, colorTextLightSolid, colorBgContainer } = token;
31393
31054
  const paddingInline = controlHeightLG * 1.25;
31394
31055
  return {
@@ -31429,7 +31090,7 @@ const DEPRECATED_TOKENS = [
31429
31090
  'triggerBg'
31430
31091
  ]
31431
31092
  ];
31432
- genStyleHooks('Layout', genLayoutStyle, prepareComponentToken$g, {
31093
+ genStyleHooks('Layout', genLayoutStyle, prepareComponentToken$f, {
31433
31094
  deprecatedTokens: DEPRECATED_TOKENS
31434
31095
  });
31435
31096
 
@@ -31523,10 +31184,10 @@ const genSiderStyle = (token)=>{
31523
31184
  }
31524
31185
  };
31525
31186
  };
31526
- var useStyle$l = genStyleHooks([
31187
+ var useStyle$k = genStyleHooks([
31527
31188
  'Layout',
31528
31189
  'Sider'
31529
- ], genSiderStyle, prepareComponentToken$g, {
31190
+ ], genSiderStyle, prepareComponentToken$f, {
31530
31191
  deprecatedTokens: DEPRECATED_TOKENS
31531
31192
  });
31532
31193
 
@@ -31569,7 +31230,7 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
31569
31230
  // =========================== Prefix ===========================
31570
31231
  const { getPrefixCls, direction } = React.useContext(ConfigContext);
31571
31232
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
31572
- const [hashId, cssVarCls] = useStyle$l(prefixCls);
31233
+ const [hashId, cssVarCls] = useStyle$k(prefixCls);
31573
31234
  // ========================= Responsive =========================
31574
31235
  const responsiveHandlerRef = React.useRef(null);
31575
31236
  responsiveHandlerRef.current = (mql)=>{
@@ -31764,7 +31425,7 @@ const MenuItem = (props)=>{
31764
31425
  const resolvedClassNames = tooltipConfig.classNames(info);
31765
31426
  return mergeTooltipRootClassName(resolvedClassNames);
31766
31427
  } : mergeTooltipRootClassName(tooltipConfig?.classNames);
31767
- returnNode = /*#__PURE__*/ React__namespace.createElement(Tooltip, {
31428
+ returnNode = /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
31768
31429
  ...tooltipProps,
31769
31430
  placement: mergedTooltipPlacement,
31770
31431
  classNames: mergedTooltipClassNames
@@ -32561,7 +32222,7 @@ const getBaseStyle = (token)=>{
32561
32222
  }
32562
32223
  ];
32563
32224
  };
32564
- const prepareComponentToken$f = (token)=>{
32225
+ const prepareComponentToken$e = (token)=>{
32565
32226
  const { colorPrimary, colorError, colorTextDisabled, colorErrorBg, colorText, colorTextDescription, colorBgContainer, colorFillAlter, colorFillContent, lineWidth, lineWidthBold, controlItemBgActive, colorBgTextHover, controlHeightLG, lineHeight, colorBgElevated, marginXXS, padding, fontSize, controlHeightSM, fontSizeLG, colorTextLightSolid, colorErrorHover } = token;
32566
32227
  const activeBarWidth = token.activeBarWidth ?? 0;
32567
32228
  const activeBarBorderWidth = token.activeBarBorderWidth ?? lineWidth;
@@ -32655,7 +32316,7 @@ const prepareComponentToken$f = (token)=>{
32655
32316
  };
32656
32317
  };
32657
32318
  // ============================== Export ==============================
32658
- var useStyle$k = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32319
+ var useStyle$j = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32659
32320
  const useStyle = genStyleHooks('Menu', (token)=>{
32660
32321
  const { colorBgElevated, controlHeightLG, fontSize, darkItemColor, darkDangerItemColor, darkItemBg, darkSubMenuItemBg, darkItemSelectedColor, darkItemSelectedBg, darkDangerItemSelectedBg, darkItemHoverBg, darkGroupTitleColor, darkItemHoverColor, darkItemDisabledColor, darkDangerItemHoverColor, darkDangerItemSelectedColor, darkDangerItemActiveBg, popupBg, darkPopupBg } = token;
32661
32322
  const menuArrowSize = token.calc(fontSize).div(7).mul(5).equal();
@@ -32715,7 +32376,7 @@ var useStyle$k = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32715
32376
  initSlideMotion(menuToken, 'slide-down'),
32716
32377
  initZoomMotion(menuToken, 'zoom-big')
32717
32378
  ];
32718
- }, prepareComponentToken$f, {
32379
+ }, prepareComponentToken$e, {
32719
32380
  deprecatedTokens: [
32720
32381
  [
32721
32382
  'colorGroupTitle',
@@ -32953,7 +32614,7 @@ const InternalMenu = /*#__PURE__*/ React.forwardRef((props, ref)=>{
32953
32614
  };
32954
32615
  const prefixCls = getPrefixCls('menu', customizePrefixCls || overrideObj.prefixCls);
32955
32616
  const rootCls = useCSSVarCls(prefixCls);
32956
- const [hashId, cssVarCls] = useStyle$k(prefixCls, rootCls, !override);
32617
+ const [hashId, cssVarCls] = useStyle$j(prefixCls, rootCls, !override);
32957
32618
  const menuClassName = clsx(`${prefixCls}-${theme}`, contextClassName, className);
32958
32619
  // ====================== ExpandIcon ========================
32959
32620
  const mergedExpandIcon = React__namespace.useMemo(()=>{
@@ -33340,7 +33001,7 @@ const genBaseStyle$2 = (token)=>{
33340
33001
  ];
33341
33002
  };
33342
33003
  // ============================== Export ==============================
33343
- const prepareComponentToken$e = (token)=>({
33004
+ const prepareComponentToken$d = (token)=>({
33344
33005
  zIndexPopup: token.zIndexPopupBase + 50,
33345
33006
  paddingBlock: (token.controlHeight - token.fontSize * token.lineHeight) / 2,
33346
33007
  ...getArrowOffsetToken({
@@ -33349,7 +33010,7 @@ const prepareComponentToken$e = (token)=>({
33349
33010
  }),
33350
33011
  ...getArrowToken(token)
33351
33012
  });
33352
- var useStyle$j = genStyleHooks('Dropdown', (token)=>{
33013
+ var useStyle$i = genStyleHooks('Dropdown', (token)=>{
33353
33014
  const { marginXXS, sizePopupArrow, paddingXXS, componentCls } = token;
33354
33015
  const dropdownToken = cssinjsUtils.mergeToken(token, {
33355
33016
  menuCls: `${componentCls}-menu`,
@@ -33360,7 +33021,7 @@ var useStyle$j = genStyleHooks('Dropdown', (token)=>{
33360
33021
  genBaseStyle$2(dropdownToken),
33361
33022
  genStatusStyle(dropdownToken)
33362
33023
  ];
33363
- }, prepareComponentToken$e, {
33024
+ }, prepareComponentToken$d, {
33364
33025
  resetStyle: false
33365
33026
  });
33366
33027
 
@@ -33432,7 +33093,7 @@ const Dropdown$1 = (props)=>{
33432
33093
  ]);
33433
33094
  const prefixCls = getPrefixCls('dropdown', customizePrefixCls);
33434
33095
  const rootCls = useCSSVarCls(prefixCls);
33435
- const [hashId, cssVarCls] = useStyle$j(prefixCls, rootCls);
33096
+ const [hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
33436
33097
  const [, token] = useToken();
33437
33098
  const child = React__namespace.Children.only(isPrimitive(children) ? /*#__PURE__*/ React__namespace.createElement("span", null, children) : children);
33438
33099
  const popupTrigger = cloneElement(child, {
@@ -33995,7 +33656,7 @@ const getRadioButtonStyle = (token)=>{
33995
33656
  };
33996
33657
  };
33997
33658
  // ============================== Export ==============================
33998
- const prepareComponentToken$d = (token)=>{
33659
+ const prepareComponentToken$c = (token)=>{
33999
33660
  const { wireframe, padding, marginXS, lineWidth, fontSizeLG, colorText, colorBgContainer, colorTextDisabled, controlItemBgActiveDisabled, colorTextLightSolid, colorPrimary, colorPrimaryHover, colorPrimaryActive, colorWhite } = token;
34000
33661
  const dotPadding = 4; // Fixed value
34001
33662
  const radioSize = fontSizeLG;
@@ -34022,7 +33683,7 @@ const prepareComponentToken$d = (token)=>{
34022
33683
  radioBgColor: wireframe ? colorBgContainer : colorPrimary
34023
33684
  };
34024
33685
  };
34025
- var useStyle$i = genStyleHooks('Radio', (token)=>{
33686
+ var useStyle$h = genStyleHooks('Radio', (token)=>{
34026
33687
  const { controlOutline, controlOutlineWidth } = token;
34027
33688
  const radioFocusShadow = `0 0 0 ${cssinjs.unit(controlOutlineWidth)} ${controlOutline}`;
34028
33689
  const radioButtonFocusShadow = radioFocusShadow;
@@ -34035,7 +33696,7 @@ var useStyle$i = genStyleHooks('Radio', (token)=>{
34035
33696
  getRadioBasicStyle(radioToken),
34036
33697
  getRadioButtonStyle(radioToken)
34037
33698
  ];
34038
- }, prepareComponentToken$d, {
33699
+ }, prepareComponentToken$c, {
34039
33700
  unitless: {
34040
33701
  radioSize: true,
34041
33702
  dotSize: true
@@ -34063,7 +33724,7 @@ const InternalRadio = (props, ref$1)=>{
34063
33724
  const prefixCls = isButtonType ? `${radioPrefixCls}-button` : radioPrefixCls;
34064
33725
  // Style
34065
33726
  const rootCls = useCSSVarCls(radioPrefixCls);
34066
- const [hashId, cssVarCls] = useStyle$i(radioPrefixCls, rootCls);
33727
+ const [hashId, cssVarCls] = useStyle$h(radioPrefixCls, rootCls);
34067
33728
  const radioProps = {
34068
33729
  ...restProps
34069
33730
  };
@@ -34162,7 +33823,7 @@ const RadioGroup = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
34162
33823
  const groupPrefixCls = `${prefixCls}-group`;
34163
33824
  // Style
34164
33825
  const rootCls = useCSSVarCls(prefixCls);
34165
- const [hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
33826
+ const [hashId, cssVarCls] = useStyle$h(prefixCls, rootCls);
34166
33827
  let childrenToRender = children;
34167
33828
  // 如果存在 options, 优先使用
34168
33829
  if (options && options.length > 0) {
@@ -35126,7 +34787,7 @@ const useSharedStyle = genStyleHooks([
35126
34787
  }, initComponentToken$1, {
35127
34788
  resetFont: false
35128
34789
  });
35129
- var useStyle$h = genStyleHooks([
34790
+ var useStyle$g = genStyleHooks([
35130
34791
  'Input',
35131
34792
  'Component'
35132
34793
  ], (token)=>{
@@ -36012,7 +35673,7 @@ const genTabsStyle = (token)=>{
36012
35673
  }
36013
35674
  };
36014
35675
  };
36015
- const prepareComponentToken$c = (token)=>{
35676
+ const prepareComponentToken$b = (token)=>{
36016
35677
  const { cardHeight, cardHeightSM, cardHeightLG, controlHeight, controlHeightLG } = token;
36017
35678
  const mergedCardHeight = cardHeight || controlHeightLG;
36018
35679
  const mergedCardHeightSM = cardHeightSM || controlHeight;
@@ -36053,7 +35714,7 @@ const prepareComponentToken$c = (token)=>{
36053
35714
  };
36054
35715
  };
36055
35716
  // ============================== Export ==============================
36056
- var useStyle$g = genStyleHooks('Tabs', (token)=>{
35717
+ var useStyle$f = genStyleHooks('Tabs', (token)=>{
36057
35718
  const tabsToken = cssinjsUtils.mergeToken(token, {
36058
35719
  // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`
36059
35720
  tabsCardPadding: token.cardPadding,
@@ -36072,7 +35733,7 @@ var useStyle$g = genStyleHooks('Tabs', (token)=>{
36072
35733
  genTabsStyle(tabsToken),
36073
35734
  genMotionStyle$1(tabsToken)
36074
35735
  ];
36075
- }, prepareComponentToken$c);
35736
+ }, prepareComponentToken$b);
36076
35737
 
36077
35738
  const TabPane = ()=>null;
36078
35739
  if (process.env.NODE_ENV !== 'production') {
@@ -36086,7 +35747,7 @@ const InternalTabs = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
36086
35747
  const { tabs } = React__namespace.useContext(ConfigContext);
36087
35748
  const prefixCls = getPrefixCls('tabs', customizePrefixCls);
36088
35749
  const rootCls = useCSSVarCls(prefixCls);
36089
- const [hashId, cssVarCls] = useStyle$g(prefixCls, rootCls);
35750
+ const [hashId, cssVarCls] = useStyle$f(prefixCls, rootCls);
36090
35751
  const tabsRef = React__namespace.useRef(null);
36091
35752
  React__namespace.useImperativeHandle(ref, ()=>({
36092
35753
  nativeElement: tabsRef.current
@@ -36518,7 +36179,7 @@ const genCardSizeStyle = (token)=>{
36518
36179
  }
36519
36180
  };
36520
36181
  };
36521
- const prepareComponentToken$b = (token)=>({
36182
+ const prepareComponentToken$a = (token)=>({
36522
36183
  headerBg: 'transparent',
36523
36184
  headerFontSize: token.fontSizeLG,
36524
36185
  headerFontSizeSM: token.fontSize,
@@ -36535,7 +36196,7 @@ const prepareComponentToken$b = (token)=>({
36535
36196
  headerPadding: token.headerPadding ?? token.paddingLG
36536
36197
  });
36537
36198
  // ============================== Export ==============================
36538
- var useStyle$f = genStyleHooks('Card', (token)=>{
36199
+ var useStyle$e = genStyleHooks('Card', (token)=>{
36539
36200
  const cardToken = cssinjsUtils.mergeToken(token, {
36540
36201
  cardShadow: token.boxShadowCard,
36541
36202
  cardHeadPadding: token.padding,
@@ -36548,7 +36209,7 @@ var useStyle$f = genStyleHooks('Card', (token)=>{
36548
36209
  // Size
36549
36210
  genCardSizeStyle(cardToken)
36550
36211
  ];
36551
- }, prepareComponentToken$b);
36212
+ }, prepareComponentToken$a);
36552
36213
 
36553
36214
  const ActionNode = (props)=>{
36554
36215
  const { actionClasses, actions = [], actionStyle } = props;
@@ -36619,7 +36280,7 @@ const Card$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
36619
36280
  children
36620
36281
  ]);
36621
36282
  const prefixCls = getPrefixCls('card', customizePrefixCls);
36622
- const [hashId, cssVarCls] = useStyle$f(prefixCls);
36283
+ const [hashId, cssVarCls] = useStyle$e(prefixCls);
36623
36284
  const loadingBlock = /*#__PURE__*/ React__namespace.createElement(Skeleton, {
36624
36285
  loading: true,
36625
36286
  active: true,
@@ -36975,7 +36636,7 @@ function getStyle(prefixCls, token) {
36975
36636
  });
36976
36637
  return genCheckboxStyle(checkboxToken);
36977
36638
  }
36978
- var useStyle$e = genStyleHooks('Checkbox', (token, { prefixCls })=>[
36639
+ var useStyle$d = genStyleHooks('Checkbox', (token, { prefixCls })=>[
36979
36640
  getStyle(prefixCls, token)
36980
36641
  ]);
36981
36642
 
@@ -37039,7 +36700,7 @@ const InternalCheckbox = (props, ref$1)=>{
37039
36700
  // ============================== Style ===============================
37040
36701
  const prefixCls = getPrefixCls('checkbox', customizePrefixCls);
37041
36702
  const rootCls = useCSSVarCls(prefixCls);
37042
- const [hashId, cssVarCls] = useStyle$e(prefixCls, rootCls);
36703
+ const [hashId, cssVarCls] = useStyle$d(prefixCls, rootCls);
37043
36704
  const checkboxProps = {
37044
36705
  ...restProps
37045
36706
  };
@@ -37157,7 +36818,7 @@ const CheckboxGroup = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
37157
36818
  const prefixCls = getPrefixCls('checkbox', customizePrefixCls);
37158
36819
  const groupPrefixCls = `${prefixCls}-group`;
37159
36820
  const rootCls = useCSSVarCls(prefixCls);
37160
- const [hashId, cssVarCls] = useStyle$e(prefixCls, rootCls);
36821
+ const [hashId, cssVarCls] = useStyle$d(prefixCls, rootCls);
37161
36822
  const domProps = util.omit(restProps, [
37162
36823
  'value',
37163
36824
  'disabled'
@@ -37367,7 +37028,7 @@ function useMergedPropByScreen(oriProp, screen) {
37367
37028
  ]);
37368
37029
  return prop;
37369
37030
  }
37370
- const Row$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
37031
+ const Row = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
37371
37032
  const { prefixCls: customizePrefixCls, justify, align, className, style, children, gutter = 0, wrap, ...others } = props;
37372
37033
  const { getPrefixCls, direction } = React__namespace.useContext(ConfigContext);
37373
37034
  const screens = useBreakpoint(true, null);
@@ -37416,7 +37077,7 @@ const Row$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
37416
37077
  }, children));
37417
37078
  });
37418
37079
  if (process.env.NODE_ENV !== 'production') {
37419
- Row$1.displayName = 'Row';
37080
+ Row.displayName = 'Row';
37420
37081
  }
37421
37082
 
37422
37083
  // ============================== Size ================================
@@ -37577,13 +37238,13 @@ const genSharedDividerStyle = (token)=>{
37577
37238
  }
37578
37239
  };
37579
37240
  };
37580
- const prepareComponentToken$a = (token)=>({
37241
+ const prepareComponentToken$9 = (token)=>({
37581
37242
  textPaddingInline: '1em',
37582
37243
  orientationMargin: 0.05,
37583
37244
  verticalMarginInline: token.marginXS
37584
37245
  });
37585
37246
  // ============================== Export ==============================
37586
- var useStyle$d = genStyleHooks('Divider', (token)=>{
37247
+ var useStyle$c = genStyleHooks('Divider', (token)=>{
37587
37248
  const dividerToken = cssinjsUtils.mergeToken(token, {
37588
37249
  dividerHorizontalWithTextGutterMargin: token.margin,
37589
37250
  sizePaddingEdgeHorizontal: 0
@@ -37592,7 +37253,7 @@ var useStyle$d = genStyleHooks('Divider', (token)=>{
37592
37253
  genSharedDividerStyle(dividerToken),
37593
37254
  genSizeDividerStyle(dividerToken)
37594
37255
  ];
37595
- }, prepareComponentToken$a, {
37256
+ }, prepareComponentToken$9, {
37596
37257
  unitless: {
37597
37258
  orientationMargin: true
37598
37259
  }
@@ -37614,7 +37275,7 @@ const Divider = (props)=>{
37614
37275
  const { prefixCls: customizePrefixCls, type, orientation, vertical, titlePlacement, orientationMargin, className, rootClassName, children, dashed, variant = 'solid', plain, style, size: customSize, classNames, styles, ...restProps } = props;
37615
37276
  const prefixCls = getPrefixCls('divider', customizePrefixCls);
37616
37277
  const railCls = `${prefixCls}-rail`;
37617
- const [hashId, cssVarCls] = useStyle$d(prefixCls);
37278
+ const [hashId, cssVarCls] = useStyle$c(prefixCls);
37618
37279
  const sizeFullName = useSize(customSize);
37619
37280
  const sizeCls = sizeClassNameMap[sizeFullName];
37620
37281
  const hasChildren = !!children;
@@ -37832,7 +37493,7 @@ const genSpaceAddonStyle = (token)=>{
37832
37493
  };
37833
37494
  };
37834
37495
  // ============================== Export ==============================
37835
- var useStyle$c = genStyleHooks([
37496
+ var useStyle$b = genStyleHooks([
37836
37497
  'Space',
37837
37498
  'Addon'
37838
37499
  ], (token)=>[
@@ -37846,7 +37507,7 @@ const SpaceAddon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
37846
37507
  const { className, children, style, prefixCls: customizePrefixCls, variant = 'outlined', disabled, status, ...restProps } = props;
37847
37508
  const { getPrefixCls, direction: directionConfig } = React.useContext(ConfigContext);
37848
37509
  const prefixCls = getPrefixCls('space-addon', customizePrefixCls);
37849
- const [hashId, cssVarCls] = useStyle$c(prefixCls);
37510
+ const [hashId, cssVarCls] = useStyle$b(prefixCls);
37850
37511
  const { compactItemClassnames, compactSize } = useCompactItemContext(prefixCls, directionConfig);
37851
37512
  const statusCls = getStatusClassNames(prefixCls, status);
37852
37513
  const classes = clsx(prefixCls, hashId, compactItemClassnames, cssVarCls, `${prefixCls}-variant-${variant}`, statusCls, {
@@ -37926,7 +37587,7 @@ const Input = /*#__PURE__*/ React.forwardRef((props, ref$1)=>{
37926
37587
  // Style
37927
37588
  const rootCls = useCSSVarCls(prefixCls);
37928
37589
  const [hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);
37929
- useStyle$h(prefixCls, rootCls);
37590
+ useStyle$g(prefixCls, rootCls);
37930
37591
  // ===================== Compact Item =====================
37931
37592
  const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);
37932
37593
  // ===================== Size =====================
@@ -38041,583 +37702,6 @@ if (process.env.NODE_ENV !== 'production') {
38041
37702
  Input.displayName = 'Input';
38042
37703
  }
38043
37704
 
38044
- const DEFAULT_COLUMN_MAP = {
38045
- xxxl: 4,
38046
- xxl: 3,
38047
- xl: 3,
38048
- lg: 3,
38049
- md: 3,
38050
- sm: 2,
38051
- xs: 1
38052
- };
38053
-
38054
- const DescriptionsContext = /*#__PURE__*/ React.createContext(null);
38055
-
38056
- // Convert children into items
38057
- const transChildren2Items = (childNodes)=>util.toArray(childNodes).map((node)=>({
38058
- ...node?.props,
38059
- key: node.key
38060
- }));
38061
- function useItems(screens, items, children) {
38062
- const mergedItems = React__namespace.useMemo(()=>// Take `items` first or convert `children` into items
38063
- items || transChildren2Items(children), [
38064
- items,
38065
- children
38066
- ]);
38067
- const responsiveItems = React__namespace.useMemo(()=>mergedItems.map(({ span, ...restItem })=>{
38068
- if (span === 'filled') {
38069
- return {
38070
- ...restItem,
38071
- filled: true
38072
- };
38073
- }
38074
- return {
38075
- ...restItem,
38076
- span: typeof span === 'number' ? span : matchScreen(screens, span)
38077
- };
38078
- }), [
38079
- mergedItems,
38080
- screens
38081
- ]);
38082
- return responsiveItems;
38083
- }
38084
-
38085
- // Calculate the sum of span in a row
38086
- function getCalcRows(rowItems, mergedColumn) {
38087
- let rows = [];
38088
- let tmpRow = [];
38089
- let exceed = false;
38090
- let count = 0;
38091
- rowItems.filter((n)=>n).forEach((rowItem)=>{
38092
- const { filled, ...restItem } = rowItem;
38093
- if (filled) {
38094
- tmpRow.push(restItem);
38095
- rows.push(tmpRow);
38096
- // reset
38097
- tmpRow = [];
38098
- count = 0;
38099
- return;
38100
- }
38101
- const restSpan = mergedColumn - count;
38102
- count += rowItem.span || 1;
38103
- if (count >= mergedColumn) {
38104
- if (count > mergedColumn) {
38105
- exceed = true;
38106
- tmpRow.push({
38107
- ...restItem,
38108
- span: restSpan
38109
- });
38110
- } else {
38111
- tmpRow.push(restItem);
38112
- }
38113
- rows.push(tmpRow);
38114
- // reset
38115
- tmpRow = [];
38116
- count = 0;
38117
- } else {
38118
- tmpRow.push(restItem);
38119
- }
38120
- });
38121
- if (tmpRow.length > 0) {
38122
- rows.push(tmpRow);
38123
- }
38124
- rows = rows.map((rows)=>{
38125
- const count = rows.reduce((acc, item)=>acc + (item.span || 1), 0);
38126
- if (count < mergedColumn) {
38127
- // If the span of the last element in the current row is less than the column, then add its span to the remaining columns
38128
- const last = rows[rows.length - 1];
38129
- last.span = mergedColumn - (count - (last.span || 1));
38130
- return rows;
38131
- }
38132
- return rows;
38133
- });
38134
- return [
38135
- rows,
38136
- exceed
38137
- ];
38138
- }
38139
- const useRow = (mergedColumn, items)=>{
38140
- const [rows, exceed] = React.useMemo(()=>getCalcRows(items, mergedColumn), [
38141
- items,
38142
- mergedColumn
38143
- ]);
38144
- if (process.env.NODE_ENV !== 'production') {
38145
- const warning = devUseWarning('Descriptions');
38146
- process.env.NODE_ENV !== "production" ? warning(!exceed, 'usage', 'Sum of column `span` in a line not match `column` of Descriptions.') : void 0;
38147
- }
38148
- return rows;
38149
- };
38150
-
38151
- // JSX Structure Syntactic Sugar. Never reach the render code.
38152
- /* istanbul ignore next */ const DescriptionsItem = (props)=>{
38153
- return props.children;
38154
- };
38155
-
38156
- const Cell = (props)=>{
38157
- const { itemPrefixCls, component, span, className, style, labelStyle, contentStyle, bordered, label, content, colon, type, styles, classNames } = props;
38158
- const Component = component;
38159
- const { classNames: contextClassNames, styles: contextStyles } = React.useContext(DescriptionsContext);
38160
- const [mergedClassNames, mergedStyles] = useMergeSemantic([
38161
- contextClassNames,
38162
- classNames
38163
- ], [
38164
- contextStyles,
38165
- styles
38166
- ], {
38167
- props
38168
- });
38169
- const mergedLabelStyle = {
38170
- ...labelStyle,
38171
- ...mergedStyles.label
38172
- };
38173
- const mergedContentStyle = {
38174
- ...contentStyle,
38175
- ...mergedStyles.content
38176
- };
38177
- if (bordered) {
38178
- return /*#__PURE__*/ React.createElement(Component, {
38179
- colSpan: span,
38180
- style: style,
38181
- className: clsx(className, {
38182
- [`${itemPrefixCls}-item-${type}`]: type === 'label' || type === 'content',
38183
- [mergedClassNames.label]: mergedClassNames.label && type === 'label',
38184
- [mergedClassNames.content]: mergedClassNames.content && type === 'content'
38185
- })
38186
- }, isNonNullable(label) && /*#__PURE__*/ React.createElement("span", {
38187
- style: mergedLabelStyle
38188
- }, label), isNonNullable(content) && /*#__PURE__*/ React.createElement("span", {
38189
- style: mergedContentStyle
38190
- }, content));
38191
- }
38192
- return /*#__PURE__*/ React.createElement(Component, {
38193
- className: clsx(`${itemPrefixCls}-item`, className),
38194
- style: style,
38195
- colSpan: span
38196
- }, /*#__PURE__*/ React.createElement("div", {
38197
- className: `${itemPrefixCls}-item-container`
38198
- }, isNonNullable(label) && /*#__PURE__*/ React.createElement("span", {
38199
- style: mergedLabelStyle,
38200
- className: clsx(`${itemPrefixCls}-item-label`, mergedClassNames.label, {
38201
- [`${itemPrefixCls}-item-no-colon`]: !colon
38202
- })
38203
- }, label), isNonNullable(content) && /*#__PURE__*/ React.createElement("span", {
38204
- style: mergedContentStyle,
38205
- className: clsx(`${itemPrefixCls}-item-content`, mergedClassNames.content)
38206
- }, content)));
38207
- };
38208
-
38209
- function renderCells(items, { colon, prefixCls, bordered }, { component, type, showLabel, showContent, labelStyle: rootLabelStyle, contentStyle: rootContentStyle, styles: rootStyles }) {
38210
- return items.map(({ label, children, prefixCls: itemPrefixCls = prefixCls, className, style, labelStyle, contentStyle, span = 1, key, styles, classNames }, index)=>{
38211
- if (typeof component === 'string') {
38212
- return /*#__PURE__*/ React__namespace.createElement(Cell, {
38213
- key: `${type}-${key || index}`,
38214
- className: className,
38215
- style: style,
38216
- classNames: classNames,
38217
- styles: {
38218
- label: {
38219
- ...rootLabelStyle,
38220
- ...rootStyles?.label,
38221
- ...labelStyle,
38222
- ...styles?.label
38223
- },
38224
- content: {
38225
- ...rootContentStyle,
38226
- ...rootStyles?.content,
38227
- ...contentStyle,
38228
- ...styles?.content
38229
- }
38230
- },
38231
- span: span,
38232
- colon: colon,
38233
- component: component,
38234
- itemPrefixCls: itemPrefixCls,
38235
- bordered: bordered,
38236
- label: showLabel ? label : null,
38237
- content: showContent ? children : null,
38238
- type: type
38239
- });
38240
- }
38241
- return [
38242
- /*#__PURE__*/ React__namespace.createElement(Cell, {
38243
- key: `label-${key || index}`,
38244
- className: className,
38245
- style: {
38246
- ...rootLabelStyle,
38247
- ...rootStyles?.label,
38248
- ...style,
38249
- ...labelStyle,
38250
- ...styles?.label
38251
- },
38252
- span: 1,
38253
- colon: colon,
38254
- component: component[0],
38255
- itemPrefixCls: itemPrefixCls,
38256
- bordered: bordered,
38257
- label: label,
38258
- type: "label"
38259
- }),
38260
- /*#__PURE__*/ React__namespace.createElement(Cell, {
38261
- key: `content-${key || index}`,
38262
- className: className,
38263
- style: {
38264
- ...rootContentStyle,
38265
- ...rootStyles?.content,
38266
- ...style,
38267
- ...contentStyle,
38268
- ...styles?.content
38269
- },
38270
- span: span * 2 - 1,
38271
- component: component[1],
38272
- itemPrefixCls: itemPrefixCls,
38273
- bordered: bordered,
38274
- content: children,
38275
- type: "content"
38276
- })
38277
- ];
38278
- });
38279
- }
38280
- const Row = (props)=>{
38281
- const descContext = React__namespace.useContext(DescriptionsContext);
38282
- const { prefixCls, vertical, row, index, bordered } = props;
38283
- if (vertical) {
38284
- return /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/ React__namespace.createElement("tr", {
38285
- key: `label-${index}`,
38286
- className: `${prefixCls}-row`
38287
- }, renderCells(row, props, {
38288
- component: 'th',
38289
- type: 'label',
38290
- showLabel: true,
38291
- ...descContext
38292
- })), /*#__PURE__*/ React__namespace.createElement("tr", {
38293
- key: `content-${index}`,
38294
- className: `${prefixCls}-row`
38295
- }, renderCells(row, props, {
38296
- component: 'td',
38297
- type: 'content',
38298
- showContent: true,
38299
- ...descContext
38300
- })));
38301
- }
38302
- return /*#__PURE__*/ React__namespace.createElement("tr", {
38303
- key: index,
38304
- className: `${prefixCls}-row`
38305
- }, renderCells(row, props, {
38306
- component: bordered ? [
38307
- 'th',
38308
- 'td'
38309
- ] : 'td',
38310
- type: 'item',
38311
- showLabel: true,
38312
- showContent: true,
38313
- ...descContext
38314
- }));
38315
- };
38316
-
38317
- const genBorderedStyle$2 = (token)=>{
38318
- const { componentCls, labelBg } = token;
38319
- return {
38320
- [`&${componentCls}-bordered`]: {
38321
- [`> ${componentCls}-view`]: {
38322
- border: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38323
- '> table': {
38324
- tableLayout: 'auto'
38325
- },
38326
- [`${componentCls}-row`]: {
38327
- borderBottom: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38328
- '&:first-child': {
38329
- '> th:first-child, > td:first-child': {
38330
- borderStartStartRadius: token.borderRadiusLG
38331
- }
38332
- },
38333
- '&:last-child': {
38334
- borderBottom: 'none',
38335
- '> th:first-child, > td:first-child': {
38336
- borderEndStartRadius: token.borderRadiusLG
38337
- }
38338
- },
38339
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38340
- padding: `${cssinjs.unit(token.padding)} ${cssinjs.unit(token.paddingLG)}`,
38341
- borderInlineEnd: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38342
- '&:last-child': {
38343
- borderInlineEnd: 'none'
38344
- }
38345
- },
38346
- [`> ${componentCls}-item-label`]: {
38347
- color: token.colorTextSecondary,
38348
- backgroundColor: labelBg,
38349
- '&::after': {
38350
- display: 'none'
38351
- }
38352
- }
38353
- }
38354
- },
38355
- [`&${componentCls}-middle`]: {
38356
- [`${componentCls}-row`]: {
38357
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38358
- padding: `${cssinjs.unit(token.paddingSM)} ${cssinjs.unit(token.paddingLG)}`
38359
- }
38360
- }
38361
- },
38362
- [`&${componentCls}-small`]: {
38363
- [`${componentCls}-row`]: {
38364
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38365
- padding: `${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.padding)}`
38366
- }
38367
- }
38368
- }
38369
- }
38370
- };
38371
- };
38372
- const genDescriptionStyles = (token)=>{
38373
- const { componentCls, extraColor, itemPaddingBottom, itemPaddingEnd, colonMarginRight, colonMarginLeft, titleMarginBottom } = token;
38374
- return {
38375
- [componentCls]: {
38376
- ...resetComponent(token),
38377
- ...genBorderedStyle$2(token),
38378
- '&-rtl': {
38379
- direction: 'rtl'
38380
- },
38381
- [`${componentCls}-header`]: {
38382
- display: 'flex',
38383
- alignItems: 'center',
38384
- marginBottom: titleMarginBottom
38385
- },
38386
- [`${componentCls}-title`]: {
38387
- ...textEllipsis,
38388
- flex: 'auto',
38389
- color: token.titleColor,
38390
- fontWeight: token.fontWeightStrong,
38391
- fontSize: token.fontSizeLG,
38392
- lineHeight: token.lineHeightLG
38393
- },
38394
- [`${componentCls}-extra`]: {
38395
- marginInlineStart: 'auto',
38396
- color: extraColor,
38397
- fontSize: token.fontSize
38398
- },
38399
- [`${componentCls}-view`]: {
38400
- width: '100%',
38401
- borderRadius: token.borderRadiusLG,
38402
- table: {
38403
- width: '100%',
38404
- tableLayout: 'fixed',
38405
- borderCollapse: 'collapse'
38406
- }
38407
- },
38408
- [`${componentCls}-row`]: {
38409
- '> th, > td': {
38410
- paddingBottom: itemPaddingBottom,
38411
- paddingInlineEnd: itemPaddingEnd
38412
- },
38413
- '> th:last-child, > td:last-child': {
38414
- paddingInlineEnd: 0
38415
- },
38416
- '&:last-child': {
38417
- borderBottom: 'none',
38418
- '> th, > td': {
38419
- paddingBottom: 0
38420
- }
38421
- }
38422
- },
38423
- [`${componentCls}-item-label`]: {
38424
- color: token.labelColor,
38425
- fontWeight: 'normal',
38426
- fontSize: token.fontSize,
38427
- lineHeight: token.lineHeight,
38428
- textAlign: 'start',
38429
- '&::after': {
38430
- content: '":"',
38431
- position: 'relative',
38432
- top: -0.5,
38433
- // magic for position
38434
- marginInline: `${cssinjs.unit(colonMarginLeft)} ${cssinjs.unit(colonMarginRight)}`
38435
- },
38436
- [`&${componentCls}-item-no-colon::after`]: {
38437
- content: '""'
38438
- }
38439
- },
38440
- [`${componentCls}-item-no-label`]: {
38441
- '&::after': {
38442
- margin: 0,
38443
- content: '""'
38444
- }
38445
- },
38446
- [`${componentCls}-item-content`]: {
38447
- display: 'table-cell',
38448
- flex: 1,
38449
- color: token.contentColor,
38450
- fontSize: token.fontSize,
38451
- lineHeight: token.lineHeight,
38452
- wordBreak: 'break-word',
38453
- overflowWrap: 'break-word'
38454
- },
38455
- [`${componentCls}-item`]: {
38456
- paddingBottom: 0,
38457
- verticalAlign: 'top',
38458
- '&-container': {
38459
- display: 'flex',
38460
- [`${componentCls}-item-label`]: {
38461
- display: 'inline-flex',
38462
- alignItems: 'baseline'
38463
- },
38464
- [`${componentCls}-item-content`]: {
38465
- display: 'inline-flex',
38466
- alignItems: 'baseline',
38467
- minWidth: '1em'
38468
- }
38469
- }
38470
- },
38471
- '&-middle': {
38472
- [`${componentCls}-row`]: {
38473
- '> th, > td': {
38474
- paddingBottom: token.paddingSM
38475
- }
38476
- }
38477
- },
38478
- '&-small': {
38479
- [`${componentCls}-row`]: {
38480
- '> th, > td': {
38481
- paddingBottom: token.paddingXS
38482
- }
38483
- }
38484
- }
38485
- }
38486
- };
38487
- };
38488
- const prepareComponentToken$9 = (token)=>({
38489
- labelBg: token.colorFillAlter,
38490
- labelColor: token.colorTextTertiary,
38491
- titleColor: token.colorText,
38492
- titleMarginBottom: token.fontSizeSM * token.lineHeightSM,
38493
- itemPaddingBottom: token.padding,
38494
- itemPaddingEnd: token.padding,
38495
- colonMarginRight: token.marginXS,
38496
- colonMarginLeft: token.marginXXS / 2,
38497
- contentColor: token.colorText,
38498
- extraColor: token.colorText
38499
- });
38500
- // ============================== Export ==============================
38501
- var useStyle$b = genStyleHooks('Descriptions', (token)=>{
38502
- const descriptionToken = cssinjsUtils.mergeToken(token, {});
38503
- return genDescriptionStyles(descriptionToken);
38504
- }, prepareComponentToken$9);
38505
-
38506
- const Descriptions = (props)=>{
38507
- const { prefixCls: customizePrefixCls, title, extra, column, colon = true, bordered, layout, children, className, rootClassName, style, size: customizeSize, labelStyle, contentStyle, styles, items, classNames, ...restProps } = props;
38508
- const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('descriptions');
38509
- const prefixCls = getPrefixCls('descriptions', customizePrefixCls);
38510
- const screens = useBreakpoint();
38511
- // ============================== Warn ==============================
38512
- if (process.env.NODE_ENV !== 'production') {
38513
- const warning = devUseWarning('Descriptions');
38514
- [
38515
- [
38516
- 'labelStyle',
38517
- 'styles.label'
38518
- ],
38519
- [
38520
- 'contentStyle',
38521
- 'styles.content'
38522
- ]
38523
- ].forEach(([deprecatedName, newName])=>{
38524
- warning.deprecated(!(deprecatedName in props), deprecatedName, newName);
38525
- });
38526
- }
38527
- // Column count
38528
- const mergedColumn = React__namespace.useMemo(()=>{
38529
- if (typeof column === 'number') {
38530
- return column;
38531
- }
38532
- return matchScreen(screens, {
38533
- ...DEFAULT_COLUMN_MAP,
38534
- ...column
38535
- }) ?? 3;
38536
- }, [
38537
- screens,
38538
- column
38539
- ]);
38540
- // Items with responsive
38541
- const mergedItems = useItems(screens, items, children);
38542
- const mergedSize = useSize(customizeSize);
38543
- const rows = useRow(mergedColumn, mergedItems);
38544
- const [hashId, cssVarCls] = useStyle$b(prefixCls);
38545
- // =========== Merged Props for Semantic ==========
38546
- const mergedProps = {
38547
- ...props,
38548
- column: mergedColumn,
38549
- items: mergedItems,
38550
- size: mergedSize
38551
- };
38552
- const [mergedClassNames, mergedStyles] = useMergeSemantic([
38553
- contextClassNames,
38554
- classNames
38555
- ], [
38556
- contextStyles,
38557
- styles
38558
- ], {
38559
- props: mergedProps
38560
- });
38561
- // ======================== Render ========================
38562
- const memoizedValue = React__namespace.useMemo(()=>({
38563
- labelStyle,
38564
- contentStyle,
38565
- styles: {
38566
- label: mergedStyles.label,
38567
- content: mergedStyles.content
38568
- },
38569
- classNames: {
38570
- label: mergedClassNames.label,
38571
- content: mergedClassNames.content
38572
- }
38573
- }), [
38574
- labelStyle,
38575
- contentStyle,
38576
- mergedStyles.label,
38577
- mergedStyles.content,
38578
- mergedClassNames.label,
38579
- mergedClassNames.content
38580
- ]);
38581
- return /*#__PURE__*/ React__namespace.createElement(DescriptionsContext.Provider, {
38582
- value: memoizedValue
38583
- }, /*#__PURE__*/ React__namespace.createElement("div", {
38584
- className: clsx(prefixCls, contextClassName, mergedClassNames.root, {
38585
- [`${prefixCls}-${mergedSize}`]: mergedSize && mergedSize !== 'default',
38586
- [`${prefixCls}-bordered`]: !!bordered,
38587
- [`${prefixCls}-rtl`]: direction === 'rtl'
38588
- }, className, rootClassName, hashId, cssVarCls),
38589
- style: {
38590
- ...contextStyle,
38591
- ...mergedStyles.root,
38592
- ...style
38593
- },
38594
- ...restProps
38595
- }, (title || extra) && /*#__PURE__*/ React__namespace.createElement("div", {
38596
- className: clsx(`${prefixCls}-header`, mergedClassNames.header),
38597
- style: mergedStyles.header
38598
- }, title && /*#__PURE__*/ React__namespace.createElement("div", {
38599
- className: clsx(`${prefixCls}-title`, mergedClassNames.title),
38600
- style: mergedStyles.title
38601
- }, title), extra && /*#__PURE__*/ React__namespace.createElement("div", {
38602
- className: clsx(`${prefixCls}-extra`, mergedClassNames.extra),
38603
- style: mergedStyles.extra
38604
- }, extra)), /*#__PURE__*/ React__namespace.createElement("div", {
38605
- className: `${prefixCls}-view`
38606
- }, /*#__PURE__*/ React__namespace.createElement("table", null, /*#__PURE__*/ React__namespace.createElement("tbody", null, rows.map((row, index)=>/*#__PURE__*/ React__namespace.createElement(Row, {
38607
- key: index,
38608
- index: index,
38609
- colon: colon,
38610
- prefixCls: prefixCls,
38611
- vertical: layout === 'vertical',
38612
- bordered: bordered,
38613
- row: row
38614
- })))))));
38615
- };
38616
- if (process.env.NODE_ENV !== 'production') {
38617
- Descriptions.displayName = 'Descriptions';
38618
- }
38619
- Descriptions.Item = DescriptionsItem;
38620
-
38621
37705
  const DrawerPanel = (props)=>{
38622
37706
  const { prefixCls, ariaId, title, footer, extra, closable, loading, onClose, headerStyle, bodyStyle, footerStyle, children, classNames: drawerClassNames, styles: drawerStyles } = props;
38623
37707
  const drawerContext = useComponentConfig('drawer');
@@ -44384,11 +43468,11 @@ const injectSorter = (prefixCls, columns, sorterStates, triggerSorter, defaultSo
44384
43468
  if (typeof showSorterTooltip !== 'boolean' && showSorterTooltip?.target === 'sorter-icon') {
44385
43469
  return /*#__PURE__*/ React__namespace.createElement("div", {
44386
43470
  className: clsx(columnSortersClass, `${columnSortersClass}-tooltip-target-sorter`)
44387
- }, renderColumnTitleWrapper, /*#__PURE__*/ React__namespace.createElement(Tooltip, {
43471
+ }, renderColumnTitleWrapper, /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
44388
43472
  ...tooltipProps
44389
43473
  }, sorter));
44390
43474
  }
44391
- return /*#__PURE__*/ React__namespace.createElement(Tooltip, {
43475
+ return /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
44392
43476
  ...tooltipProps
44393
43477
  }, renderSortTitle);
44394
43478
  }
@@ -47471,7 +46555,7 @@ const CopyBtn = ({ prefixCls, copied, locale, iconOnly, tooltips, icon, tabIndex
47471
46555
  const systemStr = copied ? copiedText : copyText;
47472
46556
  const copyTitle = getNode(tooltipNodes[copied ? 1 : 0], systemStr);
47473
46557
  const ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr;
47474
- return /*#__PURE__*/ React__namespace.createElement(Tooltip, {
46558
+ return /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
47475
46559
  title: copyTitle
47476
46560
  }, /*#__PURE__*/ React__namespace.createElement("button", {
47477
46561
  type: "button",
@@ -47715,7 +46799,7 @@ const EllipsisTooltip = ({ enableEllipsis, isEllipsis, open, children, tooltipPr
47715
46799
  return children;
47716
46800
  }
47717
46801
  const mergedOpen = open && isEllipsis;
47718
- return /*#__PURE__*/ React__namespace.createElement(Tooltip, {
46802
+ return /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
47719
46803
  open: mergedOpen,
47720
46804
  ...tooltipProps
47721
46805
  }, children);
@@ -47969,7 +47053,7 @@ const Base = /*#__PURE__*/ React__namespace.forwardRef((props, ref$1)=>{
47969
47053
  const { icon, tooltip, tabIndex } = editConfig;
47970
47054
  const editTitle = util.toArray(tooltip)[0] || textLocale?.edit;
47971
47055
  const ariaLabel = typeof editTitle === 'string' ? editTitle : '';
47972
- return triggerType.includes('icon') ? /*#__PURE__*/ React__namespace.createElement(Tooltip, {
47056
+ return triggerType.includes('icon') ? /*#__PURE__*/ React__namespace.createElement(Tooltip$1, {
47973
47057
  key: "edit",
47974
47058
  title: tooltip === false ? '' : editTitle
47975
47059
  }, /*#__PURE__*/ React__namespace.createElement("button", {
@@ -48577,7 +47661,10 @@ const JsonTreeViewer = ({ data, maxDepth = 4, initialExpanded = false, expanded
48577
47661
  })()));
48578
47662
  };
48579
47663
 
48580
- const NODE_MAX_WIDTH = 500;
47664
+ /** Max width for rich content (drawer output blocks, etc.) */ const NODE_MAX_WIDTH = 500;
47665
+ /** Compact xyflow node card width range */ const FLOW_NODE_MIN_WIDTH = 176;
47666
+ const FLOW_NODE_MAX_WIDTH = 250;
47667
+ /** Used by auto-layout horizontal spacing (~typical card width between min and max) */ const LAYOUT_NODE_WIDTH = Math.round((FLOW_NODE_MIN_WIDTH + FLOW_NODE_MAX_WIDTH) / 2);
48581
47668
 
48582
47669
  const OutputRenderer = ({ data })=>{
48583
47670
  const [isExpanded, setIsExpanded] = React.useState(false);
@@ -49098,6 +48185,25 @@ const CountUpLatency = ({ value })=>{
49098
48185
  });
49099
48186
  }
49100
48187
  };
48188
+ /** Merged tool internals + first edge detail (same shape ToolNode used on-canvas). */ function buildToolDrawerPayload(nodeData) {
48189
+ const internals = nodeData.details?.internals;
48190
+ const base = internals && typeof internals === "object" ? {
48191
+ ...internals
48192
+ } : {};
48193
+ const edges = nodeData.edgeDetails;
48194
+ if (edges && edges.length > 0) {
48195
+ const d0 = edges[0];
48196
+ return {
48197
+ ...base,
48198
+ input: {
48199
+ ...d0?.input_kwargs ?? {}
48200
+ },
48201
+ output: d0?.output,
48202
+ status: d0?.status
48203
+ };
48204
+ }
48205
+ return Object.keys(base).length > 0 ? base : null;
48206
+ }
49101
48207
  const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49102
48208
  const { theme } = useTheme$1();
49103
48209
  const [selectedRowIndex, setSelectedRowIndex] = React.useState(null);
@@ -49131,12 +48237,16 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49131
48237
  }, [
49132
48238
  nodeData?.details?.internals?.llm_details?.length
49133
48239
  ]);
49134
- const llOverviewDetails = getOverviewLlmDetails(nodeData.details?.internals?.llm_details || []);
49135
- const totalCost = sumTotalCost(nodeData.details?.internals?.llm_details || []);
49136
- const totalInputTokens = sumTotalInputTokens(nodeData.details?.internals?.llm_details || []);
49137
- const totalOutputTokens = sumTotalOutputTokens(nodeData.details?.internals?.llm_details || []);
49138
- const totalLatency = sumTotalLatency(nodeData.details?.internals?.llm_details || []);
49139
- const drawerTitle = /*#__PURE__*/ React.createElement(DrawerTitleContent, null, /*#__PURE__*/ React.createElement(NodeIcon$3, null, getNodeIcon({
48240
+ const nodeType = nodeData.nodeType || "Agent";
48241
+ const llmDetailsList = nodeData.details?.internals?.llm_details || [];
48242
+ const llOverviewDetails = getOverviewLlmDetails(llmDetailsList);
48243
+ const totalCost = sumTotalCost(llmDetailsList);
48244
+ const totalInputTokens = sumTotalInputTokens(llmDetailsList);
48245
+ const totalOutputTokens = sumTotalOutputTokens(llmDetailsList);
48246
+ const totalLatency = sumTotalLatency(llmDetailsList);
48247
+ const toolDrawerPayload = nodeType === "Tool" ? buildToolDrawerPayload(nodeData) : null;
48248
+ const nodeLatencySeconds = nodeData.details?.internals?.latency?.total_time;
48249
+ const drawerTitle = /*#__PURE__*/ React.createElement(DrawerTitleContent, null, /*#__PURE__*/ React.createElement(NodeIcon$2, null, getNodeIcon({
49140
48250
  nodeType: (nodeData.nodeType || "Agent").toLowerCase(),
49141
48251
  modelProvider: llOverviewDetails?.model_provider,
49142
48252
  modelName: llOverviewDetails?.model_name
@@ -49148,7 +48258,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49148
48258
  onClose: onClose,
49149
48259
  closable: {
49150
48260
  closeIcon: /*#__PURE__*/ React.createElement(Button$1, {
49151
- type: "text",
48261
+ type: "link",
49152
48262
  icon: /*#__PURE__*/ React.createElement(X$1, {
49153
48263
  size: 16,
49154
48264
  color: theme.colors.foreground
@@ -49160,7 +48270,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49160
48270
  "aria-label": "Close drawer"
49161
48271
  })
49162
48272
  },
49163
- size: "400px",
48273
+ size: "500px",
49164
48274
  getContainer: ()=>document.body,
49165
48275
  zIndex: 1100,
49166
48276
  "data-testid": "node-details-drawer",
@@ -49176,8 +48286,15 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49176
48286
  }
49177
48287
  }, /*#__PURE__*/ React.createElement(DrawerBodyContent, {
49178
48288
  "data-testid": "node-details-drawer-content"
49179
- }, llOverviewDetails && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(InfoGrid, null, (()=>{
49180
- const llmDetails = nodeData.details?.internals?.llm_details || [];
48289
+ }, nodeType === "Tool" && /*#__PURE__*/ React.createElement(React.Fragment, null, nodeLatencySeconds != null && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(InfoItem, null, /*#__PURE__*/ React.createElement(InfoLabel, null, "Latency"), /*#__PURE__*/ React.createElement(InfoValue, null, formatLatency(nodeLatencySeconds)))), toolDrawerPayload ? /*#__PURE__*/ React.createElement(Section, {
48290
+ "data-testid": "tool-drawer-json"
48291
+ }, /*#__PURE__*/ React.createElement(JsonTreeViewer, {
48292
+ excludeKeys: [
48293
+ "latency"
48294
+ ],
48295
+ data: toolDrawerPayload
48296
+ })) : null), nodeType === "Agent" && !llOverviewDetails && nodeLatencySeconds != null && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(InfoItem, null, /*#__PURE__*/ React.createElement(InfoLabel, null, "Latency"), /*#__PURE__*/ React.createElement(InfoValue, null, formatLatency(nodeLatencySeconds)))), nodeType === "Agent" && llOverviewDetails && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(InfoGrid, null, (()=>{
48297
+ const llmDetails = llmDetailsList;
49181
48298
  const isAggregateSelected = selectedRowIndex === llmDetails.length;
49182
48299
  const selectedDetails = isAggregateSelected ? null // Use aggregate values
49183
48300
  : llmDetails[selectedRowIndex || 0];
@@ -49214,7 +48331,13 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49214
48331
  prefix: "$",
49215
48332
  suffix: " USD"
49216
48333
  }) : "N/A")));
49217
- })())), nodeData.details?.internals?.llm_details?.length > 1 && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(TableWrapper, null, /*#__PURE__*/ React.createElement("table", null, /*#__PURE__*/ React.createElement("thead", null, /*#__PURE__*/ React.createElement("tr", null, /*#__PURE__*/ React.createElement("th", {
48334
+ })())), nodeType === "Agent" && llOverviewDetails && llmDetailsList.length === 1 && /*#__PURE__*/ React.createElement(Section, {
48335
+ "data-testid": "agent-single-llm-messages"
48336
+ }, /*#__PURE__*/ React.createElement(InputArrayRenderer, {
48337
+ input: llOverviewDetails.input || []
48338
+ }), llOverviewDetails.output ? /*#__PURE__*/ React.createElement(OutputRenderer, {
48339
+ data: llOverviewDetails.output
48340
+ }) : null), nodeType === "Agent" && llmDetailsList.length > 1 && /*#__PURE__*/ React.createElement(Section, null, /*#__PURE__*/ React.createElement(TableWrapper, null, /*#__PURE__*/ React.createElement("table", null, /*#__PURE__*/ React.createElement("thead", null, /*#__PURE__*/ React.createElement("tr", null, /*#__PURE__*/ React.createElement("th", {
49218
48341
  style: {
49219
48342
  textAlign: "center"
49220
48343
  }
@@ -49234,7 +48357,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49234
48357
  style: {
49235
48358
  textAlign: "right"
49236
48359
  }
49237
- }, "Latency"))), /*#__PURE__*/ React.createElement("tbody", null, nodeData.details.internals.llm_details.map((details, index)=>/*#__PURE__*/ React.createElement("tr", {
48360
+ }, "Latency"))), /*#__PURE__*/ React.createElement("tbody", null, llmDetailsList.map((details, index)=>/*#__PURE__*/ React.createElement("tr", {
49238
48361
  key: index,
49239
48362
  onClick: ()=>handleShowModelDetails(details, index),
49240
48363
  className: selectedRowIndex === index ? "selected-row" : ""
@@ -49275,7 +48398,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49275
48398
  value: details.latency
49276
48399
  }) : "N/A"))), /*#__PURE__*/ React.createElement("tr", {
49277
48400
  key: "total",
49278
- className: `total-row ${selectedRowIndex === nodeData.details?.internals?.llm_details.length ? "selected-row" : ""}`,
48401
+ className: `total-row ${selectedRowIndex === llmDetailsList.length ? "selected-row" : ""}`,
49279
48402
  onClick: handleShowAggregateDetails
49280
48403
  }, /*#__PURE__*/ React.createElement("td", {
49281
48404
  style: {
@@ -49435,7 +48558,7 @@ const InfoValue = styled.span`
49435
48558
  color: ${(p)=>p.theme?.colors?.foreground ?? "inherit"};
49436
48559
  word-break: break-word;
49437
48560
  `;
49438
- const NodeIcon$3 = styled.div`
48561
+ const NodeIcon$2 = styled.div`
49439
48562
  font-size: ${(p)=>p.theme?.fontSize?.xl ?? "1.25rem"};
49440
48563
  display: flex;
49441
48564
  align-items: center;
@@ -49455,7 +48578,6 @@ const resolveProviderFromModelName = (modelName)=>{
49455
48578
  const { nodeType, modelProvider, modelName, size = 16 } = options ?? {};
49456
48579
  const normalizedNodeType = nodeType?.toLowerCase();
49457
48580
  if (normalizedNodeType === "tool") return "🔧";
49458
- if (normalizedNodeType === "coordinator") return "🎯";
49459
48581
  const normalizedProvider = modelProvider?.toLowerCase();
49460
48582
  const resolvedProvider = !normalizedProvider || normalizedProvider === "unknown" ? resolveProviderFromModelName(modelName) : normalizedProvider;
49461
48583
  if (resolvedProvider === "openai") return /*#__PURE__*/ React.createElement(OpenAIIcon, {
@@ -49531,18 +48653,12 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49531
48653
  primary: "hsl(221.2 83.2% 53.3%)",
49532
48654
  background: "hsl(0 0% 100%)"
49533
48655
  };
49534
- // State for inspection drawer
49535
48656
  const [isDrawerOpen, setIsDrawerOpen] = React.useState(defaultDrawerOpen ?? false);
49536
- const nodeRef = React.useRef(null);
49537
- // Check if this node has any outgoing edges (source edges)
49538
48657
  const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49539
- // Check if this node has any incoming edges (target edges)
49540
48658
  const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49541
48659
  const handleNodeClick = ()=>{
49542
48660
  setIsDrawerOpen(true);
49543
- if (onInspect) {
49544
- onInspect(data);
49545
- }
48661
+ onInspect?.(data);
49546
48662
  };
49547
48663
  const handleCloseDrawer = ()=>{
49548
48664
  setIsDrawerOpen(false);
@@ -49558,12 +48674,8 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49558
48674
  });
49559
48675
  const totalCost = sumTotalCost(data.details?.internals?.llm_details || []);
49560
48676
  const totalCostFormatted = formatCurrency(totalCost);
49561
- const totalCostTooltip = `Total cost: ${formatCurrency(totalCost)} USD`;
49562
- const nodeDetails = getOverviewLlmDetails(data.details?.internals?.llm_details || []);
49563
- const inputArray = nodeDetails?.input || [];
49564
- const output = nodeDetails?.output || null;
49565
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(NodeContainer$2, {
49566
- ref: nodeRef,
48677
+ const providerLine = `${modelName || "—"}`;
48678
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(NodeContainer$1, {
49567
48679
  onClick: handleNodeClick,
49568
48680
  className: "nowheel agent-node"
49569
48681
  }, hasIncomingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
@@ -49577,17 +48689,21 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49577
48689
  cursor: "default"
49578
48690
  },
49579
48691
  isConnectable: false
49580
- }), /*#__PURE__*/ React.createElement(NodeHeader$2, null, /*#__PURE__*/ React.createElement(NodeIconContainer$2, null, /*#__PURE__*/ React.createElement(NodeIcon$2, null, nodeIcon), /*#__PURE__*/ React.createElement(NodeLabel$2, null, nodeLabel)), /*#__PURE__*/ React.createElement(BadgeContainer$2, null, /*#__PURE__*/ React.createElement(Badge, {
49581
- variant: "gray",
49582
- title: modelName || "Unknown"
49583
- }, modelName || "Unknown"), /*#__PURE__*/ React.createElement(Badge, {
49584
- variant: "cost",
49585
- title: totalCostTooltip
49586
- }, totalCostFormatted))), /*#__PURE__*/ React.createElement(NodeContent$2, null, /*#__PURE__*/ React.createElement(InputArrayRenderer, {
49587
- input: inputArray
49588
- }), output ? /*#__PURE__*/ React.createElement(OutputRenderer, {
49589
- data: output
49590
- }) : null), hasOutgoingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
48692
+ }), /*#__PURE__*/ React.createElement(NodeBody$1, null, /*#__PURE__*/ React.createElement(TitleRow$1, null, /*#__PURE__*/ React.createElement(NodeIcon$1, null, nodeIcon), /*#__PURE__*/ React.createElement(NodeLabel$1, {
48693
+ title: nodeLabel
48694
+ }, nodeLabel)), /*#__PURE__*/ React.createElement(MetaLine, {
48695
+ title: providerLine
48696
+ }, /*#__PURE__*/ React.createElement(MetaLineIcon, {
48697
+ "aria-hidden": true
48698
+ }, /*#__PURE__*/ React.createElement(Cpu, {
48699
+ size: 12,
48700
+ strokeWidth: 2
48701
+ })), /*#__PURE__*/ React.createElement(MetaLineText, null, providerLine)), /*#__PURE__*/ React.createElement(CostLine, null, /*#__PURE__*/ React.createElement(CostLineIcon, {
48702
+ "aria-hidden": true
48703
+ }, /*#__PURE__*/ React.createElement(CircleDollarSign, {
48704
+ size: 13,
48705
+ strokeWidth: 2
48706
+ })), totalCostFormatted)), hasOutgoingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
49591
48707
  type: "source",
49592
48708
  position: Position.Bottom,
49593
48709
  style: {
@@ -49607,16 +48723,16 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49607
48723
  }
49608
48724
  })));
49609
48725
  };
49610
- // Styled components
49611
- const NodeContainer$2 = styled.div`
48726
+ const NodeContainer$1 = styled.div`
49612
48727
  border-radius: 0.5rem;
49613
48728
  background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49614
48729
  border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49615
48730
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49616
- min-width: 300px;
49617
- max-width: ${NODE_MAX_WIDTH}px;
48731
+ min-width: ${FLOW_NODE_MIN_WIDTH}px;
48732
+ max-width: ${FLOW_NODE_MAX_WIDTH}px;
49618
48733
  transition: all 0.2s ease-in-out;
49619
48734
  position: relative;
48735
+ cursor: pointer;
49620
48736
 
49621
48737
  &:hover {
49622
48738
  border-color: ${(props)=>props.theme?.colors?.primary || "hsl(221.2 83.2% 53.3%)"};
@@ -49625,68 +48741,98 @@ const NodeContainer$2 = styled.div`
49625
48741
  0 2px 4px -1px rgba(0, 0, 0, 0.06);
49626
48742
  }
49627
48743
  `;
49628
- const NodeHeader$2 = styled.div`
48744
+ const NodeBody$1 = styled.div`
49629
48745
  display: flex;
49630
- justify-content: space-between;
49631
- align-items: center;
49632
- gap: 0.5rem;
49633
- padding: 0.75rem;
49634
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
48746
+ flex-direction: column;
48747
+ gap: 0.35rem;
48748
+ padding: 0.5rem 0.625rem;
49635
48749
  `;
49636
- const NodeIconContainer$2 = styled.div`
48750
+ const TitleRow$1 = styled.div`
49637
48751
  display: flex;
49638
48752
  align-items: center;
49639
- gap: 0.5rem;
48753
+ gap: 0.375rem;
48754
+ min-width: 0;
48755
+ width: 100%;
49640
48756
  `;
49641
- const NodeIcon$2 = styled.div`
49642
- font-size: 1.25rem;
48757
+ const NodeIcon$1 = styled.div`
48758
+ font-size: 1.125rem;
49643
48759
  display: flex;
49644
48760
  align-items: center;
49645
48761
  justify-content: center;
48762
+ flex-shrink: 0;
49646
48763
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49647
48764
  `;
49648
- const NodeLabel$2 = styled.div`
48765
+ const NodeLabel$1 = styled.div`
48766
+ flex: 1 1 0;
48767
+ min-width: 0;
49649
48768
  font-weight: 600;
49650
48769
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49651
- font-size: 0.875rem;
49652
- word-break: break-words;
48770
+ font-size: 0.8125rem;
48771
+ line-height: 1.25;
48772
+ overflow: hidden;
48773
+ text-overflow: ellipsis;
48774
+ white-space: nowrap;
49653
48775
  `;
49654
- const BadgeContainer$2 = styled.div`
48776
+ const MetaLine = styled.div`
49655
48777
  display: flex;
49656
- gap: 0.5rem;
49657
- justify-content: flex-end;
49658
- align-items: center;
48778
+ align-items: flex-start;
48779
+ gap: 0.3rem;
48780
+ font-size: 0.6875rem;
48781
+ line-height: 1.3;
48782
+ color: ${(props)=>props.theme?.colors?.mutedForeground || "hsl(215.4 16.3% 46.9%)"};
49659
48783
  `;
49660
- const NodeContent$2 = styled.div`
49661
- padding: 0.75rem;
48784
+ const MetaLineIcon = styled.span`
48785
+ display: inline-flex;
48786
+ flex-shrink: 0;
48787
+ margin-top: 0.1em;
48788
+ color: inherit;
48789
+ `;
48790
+ const MetaLineText = styled.span`
48791
+ min-width: 0;
48792
+ flex: 1;
48793
+ word-break: break-word;
48794
+ display: -webkit-box;
48795
+ -webkit-line-clamp: 2;
48796
+ -webkit-box-orient: vertical;
48797
+ overflow: hidden;
48798
+ `;
48799
+ const CostLine = styled.div`
49662
48800
  display: flex;
49663
- flex-direction: column;
49664
- align-items: flex-start;
49665
- justify-content: center;
49666
- gap: 0.5rem;
48801
+ align-items: center;
48802
+ gap: 0.3rem;
48803
+ font-color: inherit;
48804
+ font-size: 0.75rem;
48805
+ font-weight: 600;
48806
+ `;
48807
+ const CostLineIcon = styled.span`
48808
+ display: inline-flex;
48809
+ flex-shrink: 0;
48810
+ color: inherit;
49667
48811
  `;
49668
48812
 
49669
- const CoordinatorNode = ({ data, id, onInspect })=>{
48813
+ const ToolNode = ({ data, id, onInspect })=>{
49670
48814
  const { theme } = useTheme$1();
49671
48815
  const themeColors = theme?.colors || {
49672
48816
  primary: "hsl(221.2 83.2% 53.3%)",
49673
48817
  background: "hsl(0 0% 100%)"
49674
48818
  };
49675
- // Check if this node has any outgoing edges (source edges)
48819
+ const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);
49676
48820
  const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49677
- // Check if this node has any incoming edges (target edges)
49678
48821
  const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49679
48822
  const handleNodeClick = ()=>{
49680
- // Console log the node data for Coordinator nodes
49681
- console.log("Coordinator node clicked:", {
49682
- label: data.label,
49683
- nodeType: data.nodeType,
49684
- details: data.details
49685
- });
48823
+ setIsDrawerOpen(true);
48824
+ onInspect?.(data);
49686
48825
  };
49687
- const nodeLabel = data.label || toTitleCase("Coordinator") || "Coordinator";
49688
- return /*#__PURE__*/ React.createElement(NodeContainer$1, {
49689
- onClick: handleNodeClick
48826
+ const handleCloseDrawer = ()=>{
48827
+ setIsDrawerOpen(false);
48828
+ };
48829
+ const nodeLabel = data.label || toTitleCase("Tool") || "Tool";
48830
+ const nodeIcon = getNodeIcon({
48831
+ nodeType: "tool"
48832
+ });
48833
+ return /*#__PURE__*/ React.createElement(NodeContainer, {
48834
+ onClick: handleNodeClick,
48835
+ className: "nowheel"
49690
48836
  }, hasIncomingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
49691
48837
  type: "target",
49692
48838
  position: Position.Top,
@@ -49698,11 +48844,9 @@ const CoordinatorNode = ({ data, id, onInspect })=>{
49698
48844
  cursor: "default"
49699
48845
  },
49700
48846
  isConnectable: false
49701
- }), /*#__PURE__*/ React.createElement(NodeHeader$1, null, /*#__PURE__*/ React.createElement(NodeIconContainer$1, null, /*#__PURE__*/ React.createElement(NodeIcon$1, null, "🎯"), /*#__PURE__*/ React.createElement(NodeLabel$1, null, nodeLabel)), /*#__PURE__*/ React.createElement(BadgeContainer$1, null, /*#__PURE__*/ React.createElement(Badge, {
49702
- variant: "gray"
49703
- }, "Coordinator"))), /*#__PURE__*/ React.createElement(NodeContent$1, null, /*#__PURE__*/ React.createElement(JsonTreeViewer, {
49704
- data: data.details?.internals || {}
49705
- })), hasOutgoingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
48847
+ }), /*#__PURE__*/ React.createElement(NodeBody, null, /*#__PURE__*/ React.createElement(TitleRow, null, /*#__PURE__*/ React.createElement(NodeIcon, null, nodeIcon), /*#__PURE__*/ React.createElement(NodeLabel, {
48848
+ title: nodeLabel
48849
+ }, nodeLabel))), hasOutgoingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
49706
48850
  type: "source",
49707
48851
  position: Position.Bottom,
49708
48852
  style: {
@@ -49713,15 +48857,22 @@ const CoordinatorNode = ({ data, id, onInspect })=>{
49713
48857
  cursor: "default"
49714
48858
  },
49715
48859
  isConnectable: false
48860
+ }), /*#__PURE__*/ React.createElement(NodeDetailsDrawer, {
48861
+ isVisible: isDrawerOpen,
48862
+ onClose: handleCloseDrawer,
48863
+ nodeData: {
48864
+ ...data,
48865
+ id
48866
+ }
49716
48867
  }));
49717
48868
  };
49718
- // Styled components
49719
- const NodeContainer$1 = styled.div`
48869
+ const NodeContainer = styled.div`
49720
48870
  border-radius: 0.5rem;
49721
48871
  background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49722
48872
  border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49723
48873
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49724
- min-width: 300px;
48874
+ min-width: ${FLOW_NODE_MIN_WIDTH}px;
48875
+ max-width: ${FLOW_NODE_MAX_WIDTH}px;
49725
48876
  transition: all 0.2s ease-in-out;
49726
48877
  position: relative;
49727
48878
  cursor: pointer;
@@ -49733,205 +48884,553 @@ const NodeContainer$1 = styled.div`
49733
48884
  0 2px 4px -1px rgba(0, 0, 0, 0.06);
49734
48885
  }
49735
48886
  `;
49736
- const NodeHeader$1 = styled.div`
48887
+ const NodeBody = styled.div`
49737
48888
  display: flex;
49738
- justify-content: space-between;
49739
- align-items: center;
49740
- gap: 0.5rem;
49741
- padding: 0.75rem;
49742
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
48889
+ flex-direction: column;
48890
+ padding: 0.5rem 0.625rem;
49743
48891
  `;
49744
- const NodeIconContainer$1 = styled.div`
48892
+ const TitleRow = styled.div`
49745
48893
  display: flex;
49746
48894
  align-items: center;
49747
- gap: 0.5rem;
48895
+ gap: 0.375rem;
48896
+ min-width: 0;
49748
48897
  `;
49749
- const NodeIcon$1 = styled.div`
49750
- font-size: 1.25rem;
48898
+ const NodeIcon = styled.div`
48899
+ font-size: 1.125rem;
49751
48900
  display: flex;
49752
48901
  align-items: center;
49753
48902
  justify-content: center;
48903
+ flex-shrink: 0;
49754
48904
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49755
48905
  `;
49756
- const NodeLabel$1 = styled.div`
48906
+ const NodeLabel = styled.div`
49757
48907
  font-weight: 600;
49758
48908
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49759
- font-size: 0.875rem;
49760
- word-break: break-words;
48909
+ font-size: 0.8125rem;
48910
+ line-height: 1.25;
48911
+ word-break: break-word;
48912
+ min-width: 0;
49761
48913
  `;
49762
- const BadgeContainer$1 = styled.div`
49763
- display: flex;
49764
- gap: 0.5rem;
49765
- justify-content: flex-end;
49766
- align-items: center;
48914
+
48915
+ const Node$1 = ({ data, id })=>{
48916
+ const nodeType = data.nodeType || "Agent";
48917
+ const onInspect = data.onInspect;
48918
+ switch(nodeType){
48919
+ case "Agent":
48920
+ return /*#__PURE__*/ React.createElement(AgentNode, {
48921
+ data: data,
48922
+ id: id,
48923
+ onInspect: onInspect,
48924
+ defaultDrawerOpen: data.defaultDrawerOpen
48925
+ });
48926
+ case "Tool":
48927
+ return /*#__PURE__*/ React.createElement(ToolNode, {
48928
+ data: data,
48929
+ id: id,
48930
+ onInspect: onInspect
48931
+ });
48932
+ default:
48933
+ return /*#__PURE__*/ React.createElement(AgentNode, {
48934
+ data: data,
48935
+ id: id,
48936
+ onInspect: onInspect,
48937
+ defaultDrawerOpen: data.defaultDrawerOpen
48938
+ });
48939
+ }
48940
+ };
48941
+
48942
+ const TooltipContainer = styled.div`
48943
+ position: relative;
48944
+ display: inline-block;
49767
48945
  `;
49768
- const NodeContent$1 = styled.div`
49769
- padding: 0.75rem;
49770
- display: flex;
49771
- flex-direction: column;
49772
- align-items: flex-start;
49773
- justify-content: center;
49774
- gap: 0.5rem;
48946
+ const TooltipContent = styled.div`
48947
+ position: absolute;
48948
+ z-index: 1000;
48949
+ padding: 8px 12px;
48950
+ font-weight: 400;
48951
+ background-color: ${({ themeColors })=>themeColors.popover};
48952
+ color: ${({ themeColors })=>themeColors.popoverForeground};
48953
+ border: 1px solid ${({ themeColors })=>themeColors.border};
48954
+ border-radius: 6px;
48955
+ font-size: 12px;
48956
+ line-height: 1.4;
48957
+ white-space: nowrap;
48958
+ box-shadow:
48959
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
48960
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
48961
+ opacity: ${({ isVisible })=>isVisible ? 1 : 0};
48962
+ visibility: ${({ isVisible })=>isVisible ? "visible" : "hidden"};
48963
+ transition:
48964
+ opacity 0.15s ease-in-out,
48965
+ visibility 0.15s ease-in-out;
48966
+ pointer-events: none;
48967
+
48968
+ /* Arrow */
48969
+ &::before {
48970
+ content: "";
48971
+ position: absolute;
48972
+ width: 0;
48973
+ height: 0;
48974
+ border: 4px solid transparent;
48975
+ }
48976
+
48977
+ /* Placement-specific positioning and arrow */
48978
+ ${({ placement, themeColors })=>{
48979
+ switch(placement){
48980
+ case "top":
48981
+ return `
48982
+ bottom: 100%;
48983
+ left: 50%;
48984
+ transform: translateX(-50%);
48985
+ margin-bottom: 8px;
48986
+ &::before {
48987
+ top: 100%;
48988
+ left: 50%;
48989
+ transform: translateX(-50%);
48990
+ border-top-color: ${themeColors.border};
48991
+ }
48992
+ &::after {
48993
+ content: "";
48994
+ position: absolute;
48995
+ top: 100%;
48996
+ left: 50%;
48997
+ transform: translateX(-50%);
48998
+ width: 0;
48999
+ height: 0;
49000
+ border: 3px solid transparent;
49001
+ border-top-color: ${themeColors.popover};
49002
+ }
49003
+ `;
49004
+ case "bottom":
49005
+ return `
49006
+ top: 100%;
49007
+ left: 50%;
49008
+ transform: translateX(-50%);
49009
+ margin-top: 8px;
49010
+ &::before {
49011
+ bottom: 100%;
49012
+ left: 50%;
49013
+ transform: translateX(-50%);
49014
+ border-bottom-color: ${themeColors.border};
49015
+ }
49016
+ &::after {
49017
+ content: "";
49018
+ position: absolute;
49019
+ bottom: 100%;
49020
+ left: 50%;
49021
+ transform: translateX(-50%);
49022
+ width: 0;
49023
+ height: 0;
49024
+ border: 3px solid transparent;
49025
+ border-bottom-color: ${themeColors.popover};
49026
+ }
49027
+ `;
49028
+ case "left":
49029
+ return `
49030
+ right: 100%;
49031
+ top: 50%;
49032
+ transform: translateY(-50%);
49033
+ margin-right: 8px;
49034
+ &::before {
49035
+ left: 100%;
49036
+ top: 50%;
49037
+ transform: translateY(-50%);
49038
+ border-left-color: ${themeColors.border};
49039
+ }
49040
+ &::after {
49041
+ content: "";
49042
+ position: absolute;
49043
+ left: 100%;
49044
+ top: 50%;
49045
+ transform: translateY(-50%);
49046
+ width: 0;
49047
+ height: 0;
49048
+ border: 3px solid transparent;
49049
+ border-left-color: ${themeColors.popover};
49050
+ }
49051
+ `;
49052
+ case "right":
49053
+ return `
49054
+ left: 100%;
49055
+ top: 50%;
49056
+ transform: translateY(-50%);
49057
+ margin-left: 8px;
49058
+ &::before {
49059
+ right: 100%;
49060
+ top: 50%;
49061
+ transform: translateY(-50%);
49062
+ border-right-color: ${themeColors.border};
49063
+ }
49064
+ &::after {
49065
+ content: "";
49066
+ position: absolute;
49067
+ right: 100%;
49068
+ top: 50%;
49069
+ transform: translateY(-50%);
49070
+ width: 0;
49071
+ height: 0;
49072
+ border: 3px solid transparent;
49073
+ border-right-color: ${themeColors.popover};
49074
+ }
49075
+ `;
49076
+ case "topLeft":
49077
+ return `
49078
+ bottom: 100%;
49079
+ right: 0;
49080
+ margin-bottom: 8px;
49081
+ &::before {
49082
+ top: 100%;
49083
+ right: 8px;
49084
+ border-top-color: ${themeColors.border};
49085
+ }
49086
+ &::after {
49087
+ content: "";
49088
+ position: absolute;
49089
+ top: 100%;
49090
+ right: 8px;
49091
+ width: 0;
49092
+ height: 0;
49093
+ border: 3px solid transparent;
49094
+ border-top-color: ${themeColors.popover};
49095
+ }
49096
+ `;
49097
+ case "topRight":
49098
+ return `
49099
+ bottom: 100%;
49100
+ left: 0;
49101
+ margin-bottom: 8px;
49102
+ &::before {
49103
+ top: 100%;
49104
+ left: 8px;
49105
+ border-top-color: ${themeColors.border};
49106
+ }
49107
+ &::after {
49108
+ content: "";
49109
+ position: absolute;
49110
+ top: 100%;
49111
+ left: 8px;
49112
+ width: 0;
49113
+ height: 0;
49114
+ border: 3px solid transparent;
49115
+ border-top-color: ${themeColors.popover};
49116
+ }
49117
+ `;
49118
+ case "bottomLeft":
49119
+ return `
49120
+ top: 100%;
49121
+ right: 0;
49122
+ margin-top: 8px;
49123
+ &::before {
49124
+ bottom: 100%;
49125
+ right: 8px;
49126
+ border-bottom-color: ${themeColors.border};
49127
+ }
49128
+ &::after {
49129
+ content: "";
49130
+ position: absolute;
49131
+ bottom: 100%;
49132
+ right: 8px;
49133
+ width: 0;
49134
+ height: 0;
49135
+ border: 3px solid transparent;
49136
+ border-bottom-color: ${themeColors.popover};
49137
+ }
49138
+ `;
49139
+ case "bottomRight":
49140
+ return `
49141
+ top: 100%;
49142
+ left: 0;
49143
+ margin-top: 8px;
49144
+ &::before {
49145
+ bottom: 100%;
49146
+ left: 8px;
49147
+ border-bottom-color: ${themeColors.border};
49148
+ }
49149
+ &::after {
49150
+ content: "";
49151
+ position: absolute;
49152
+ bottom: 100%;
49153
+ left: 8px;
49154
+ width: 0;
49155
+ height: 0;
49156
+ border: 3px solid transparent;
49157
+ border-bottom-color: ${themeColors.popover};
49158
+ }
49159
+ `;
49160
+ case "leftTop":
49161
+ return `
49162
+ right: 100%;
49163
+ bottom: 0;
49164
+ margin-right: 8px;
49165
+ &::before {
49166
+ left: 100%;
49167
+ bottom: 8px;
49168
+ border-left-color: ${themeColors.border};
49169
+ }
49170
+ &::after {
49171
+ content: "";
49172
+ position: absolute;
49173
+ left: 100%;
49174
+ bottom: 8px;
49175
+ width: 0;
49176
+ height: 0;
49177
+ border: 3px solid transparent;
49178
+ border-left-color: ${themeColors.popover};
49179
+ }
49180
+ `;
49181
+ case "leftBottom":
49182
+ return `
49183
+ right: 100%;
49184
+ top: 0;
49185
+ margin-right: 8px;
49186
+ &::before {
49187
+ left: 100%;
49188
+ top: 8px;
49189
+ border-left-color: ${themeColors.border};
49190
+ }
49191
+ &::after {
49192
+ content: "";
49193
+ position: absolute;
49194
+ left: 100%;
49195
+ top: 8px;
49196
+ width: 0;
49197
+ height: 0;
49198
+ border: 3px solid transparent;
49199
+ border-left-color: ${themeColors.popover};
49200
+ }
49201
+ `;
49202
+ case "rightTop":
49203
+ return `
49204
+ left: 100%;
49205
+ bottom: 0;
49206
+ margin-left: 8px;
49207
+ &::before {
49208
+ right: 100%;
49209
+ bottom: 8px;
49210
+ border-right-color: ${themeColors.border};
49211
+ }
49212
+ &::after {
49213
+ content: "";
49214
+ position: absolute;
49215
+ right: 100%;
49216
+ bottom: 8px;
49217
+ width: 0;
49218
+ height: 0;
49219
+ border: 3px solid transparent;
49220
+ border-right-color: ${themeColors.popover};
49221
+ }
49222
+ `;
49223
+ case "rightBottom":
49224
+ return `
49225
+ left: 100%;
49226
+ top: 0;
49227
+ margin-left: 8px;
49228
+ &::before {
49229
+ right: 100%;
49230
+ top: 8px;
49231
+ border-right-color: ${themeColors.border};
49232
+ }
49233
+ &::after {
49234
+ content: "";
49235
+ position: absolute;
49236
+ right: 100%;
49237
+ top: 8px;
49238
+ width: 0;
49239
+ height: 0;
49240
+ border: 3px solid transparent;
49241
+ border-right-color: ${themeColors.popover};
49242
+ }
49243
+ `;
49244
+ default:
49245
+ return `
49246
+ bottom: 100%;
49247
+ left: 50%;
49248
+ transform: translateX(-50%);
49249
+ margin-bottom: 8px;
49250
+ &::before {
49251
+ top: 100%;
49252
+ left: 50%;
49253
+ transform: translateX(-50%);
49254
+ border-top-color: ${themeColors.border};
49255
+ }
49256
+ &::after {
49257
+ content: "";
49258
+ position: absolute;
49259
+ top: 100%;
49260
+ left: 50%;
49261
+ transform: translateX(-50%);
49262
+ width: 0;
49263
+ height: 0;
49264
+ border: 3px solid transparent;
49265
+ border-top-color: ${themeColors.popover};
49266
+ }
49267
+ `;
49268
+ }
49269
+ }}
49775
49270
  `;
49776
-
49777
- const ToolNode = ({ data, id, onInspect })=>{
49271
+ const Tooltip = ({ children, content, placement = "top", delay = 300 })=>{
49778
49272
  const { theme } = useTheme$1();
49779
- const themeColors = theme?.colors || {
49780
- primary: "hsl(221.2 83.2% 53.3%)",
49781
- background: "hsl(0 0% 100%)"
49273
+ const [isVisible, setIsVisible] = React__namespace.useState(false);
49274
+ const timeoutRef = React__namespace.useRef();
49275
+ const showTooltip = ()=>{
49276
+ if (timeoutRef.current) {
49277
+ clearTimeout(timeoutRef.current);
49278
+ }
49279
+ timeoutRef.current = setTimeout(()=>{
49280
+ setIsVisible(true);
49281
+ }, delay);
49782
49282
  };
49783
- // Check if this node has any outgoing edges (source edges)
49784
- const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49785
- // Check if this node has any incoming edges (target edges)
49786
- const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49787
- const handleNodeClick = ()=>{
49788
- if (onInspect) {
49789
- onInspect(data);
49283
+ const hideTooltip = ()=>{
49284
+ if (timeoutRef.current) {
49285
+ clearTimeout(timeoutRef.current);
49790
49286
  }
49287
+ setIsVisible(false);
49791
49288
  };
49792
- const nodeLabel = data.label || toTitleCase("Tool") || "Tool";
49793
- const latency = data.details?.internals?.latency?.total_time;
49794
- let nodeData = null;
49795
- const baseData = data.details?.internals || {};
49796
- if (data.edgeDetails && data.edgeDetails.length > 0) {
49797
- nodeData = {
49798
- ...baseData,
49799
- input: {
49800
- ...data.edgeDetails[0]?.input_kwargs
49801
- },
49802
- output: data.edgeDetails[0]?.output,
49803
- status: data.edgeDetails[0]?.status
49289
+ React__namespace.useEffect(()=>{
49290
+ return ()=>{
49291
+ if (timeoutRef.current) {
49292
+ clearTimeout(timeoutRef.current);
49293
+ }
49804
49294
  };
49805
- }
49806
- return /*#__PURE__*/ React.createElement(NodeContainer, {
49807
- onClick: handleNodeClick,
49808
- className: "nowheel"
49809
- }, hasIncomingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
49810
- type: "target",
49811
- position: Position.Top,
49812
- style: {
49813
- width: "8px",
49814
- height: "8px",
49815
- border: `2px solid ${themeColors.primary}`,
49816
- backgroundColor: themeColors.background,
49817
- cursor: "default"
49818
- },
49819
- isConnectable: false
49820
- }), /*#__PURE__*/ React.createElement(NodeHeader, null, /*#__PURE__*/ React.createElement(NodeIconContainer, null, /*#__PURE__*/ React.createElement(NodeIcon, null, "🔧"), /*#__PURE__*/ React.createElement(NodeLabel, null, nodeLabel)), latency != null && /*#__PURE__*/ React.createElement(BadgeContainer, null, /*#__PURE__*/ React.createElement(Badge, {
49821
- variant: "latency"
49822
- }, formatLatency(latency)))), nodeData && /*#__PURE__*/ React.createElement(NodeContent, {
49823
- className: "nodrag"
49824
- }, /*#__PURE__*/ React.createElement(JsonTreeViewer, {
49825
- excludeKeys: [
49826
- "latency"
49827
- ],
49828
- data: nodeData
49829
- })), hasOutgoingEdges && /*#__PURE__*/ React.createElement(Handle$1, {
49830
- type: "source",
49831
- position: Position.Bottom,
49832
- style: {
49833
- width: "8px",
49834
- height: "8px",
49835
- border: `2px solid ${themeColors.primary}`,
49836
- backgroundColor: themeColors.background,
49837
- cursor: "default"
49838
- },
49839
- isConnectable: false
49840
- }));
49295
+ }, []);
49296
+ return /*#__PURE__*/ React__namespace.createElement(TooltipContainer, {
49297
+ onMouseEnter: showTooltip,
49298
+ onMouseLeave: hideTooltip,
49299
+ onFocus: showTooltip,
49300
+ onBlur: hideTooltip
49301
+ }, children, /*#__PURE__*/ React__namespace.createElement(TooltipContent, {
49302
+ isVisible: isVisible,
49303
+ placement: placement,
49304
+ themeColors: theme.colors,
49305
+ role: "tooltip"
49306
+ }, content));
49841
49307
  };
49842
- // Styled components
49843
- const NodeContainer = styled.div`
49844
- border-radius: 0.5rem;
49845
- background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49846
- border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49847
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49848
- min-width: 300px;
49849
- max-width: ${NODE_MAX_WIDTH}px;
49850
- transition: all 0.2s ease-in-out;
49851
- position: relative;
49852
- cursor: pointer;
49853
49308
 
49854
- &:hover {
49855
- border-color: ${(props)=>props.theme?.colors?.primary || "hsl(221.2 83.2% 53.3%)"};
49856
- box-shadow:
49857
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
49858
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
49859
- }
49860
- `;
49861
- const NodeHeader = styled.div`
49862
- display: flex;
49863
- justify-content: space-between;
49864
- align-items: center;
49865
- gap: 0.5rem;
49866
- padding: 0.75rem;
49867
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49868
- `;
49869
- const NodeIconContainer = styled.div`
49870
- display: flex;
49871
- align-items: center;
49872
- gap: 0.5rem;
49873
- `;
49874
- const NodeIcon = styled.div`
49875
- font-size: 1.25rem;
49876
- display: flex;
49877
- align-items: center;
49878
- justify-content: center;
49879
- color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49880
- `;
49881
- const NodeLabel = styled.div`
49882
- font-weight: 600;
49883
- color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49884
- font-size: 0.875rem;
49885
- word-break: break-words;
49886
- `;
49887
49309
  const BadgeContainer = styled.div`
49888
- display: flex;
49889
- gap: 0.5rem;
49890
- justify-content: flex-end;
49310
+ display: inline-flex;
49891
49311
  align-items: center;
49892
- `;
49893
- const NodeContent = styled.div`
49894
- padding: 0.75rem;
49895
- display: flex;
49896
- flex-direction: column;
49897
- align-items: flex-start;
49898
- justify-content: center;
49899
- gap: 0.5rem;
49900
- `;
49312
+ border-radius: 9999px;
49313
+ border: 1px solid transparent;
49314
+ padding: 0.125rem 0.625rem;
49315
+ font-size: 0.75rem;
49316
+ font-weight: 600;
49317
+ transition: colors 0.2s ease-in-out;
49318
+ outline: none;
49901
49319
 
49902
- const Node$1 = ({ data, id })=>{
49903
- const nodeType = data.nodeType || "Agent";
49904
- const onInspect = data.onInspect; // Extract onInspect from data
49905
- // Route to the appropriate node component based on type
49906
- switch(nodeType){
49907
- case "Agent":
49908
- return /*#__PURE__*/ React.createElement(AgentNode, {
49909
- data: data,
49910
- id: id,
49911
- onInspect: onInspect,
49912
- defaultDrawerOpen: data.defaultDrawerOpen
49913
- });
49914
- case "Tool":
49915
- return /*#__PURE__*/ React.createElement(ToolNode, {
49916
- data: data,
49917
- id: id,
49918
- onInspect: onInspect
49919
- });
49920
- case "Coordinator":
49921
- return /*#__PURE__*/ React.createElement(CoordinatorNode, {
49922
- data: data,
49923
- id: id,
49924
- onInspect: onInspect
49925
- });
49320
+ &:focus {
49321
+ outline: none;
49322
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
49323
+ }
49324
+
49325
+ ${({ variant, themeColors })=>{
49326
+ switch(variant){
49327
+ case "default":
49328
+ return `
49329
+ background-color: ${themeColors.primary};
49330
+ color: ${themeColors.primaryForeground};
49331
+ &:hover {
49332
+ background-color: ${themeColors.primary};
49333
+ opacity: 0.9;
49334
+ }
49335
+ `;
49336
+ case "secondary":
49337
+ return `
49338
+ background-color: ${themeColors.secondary};
49339
+ color: ${themeColors.secondaryForeground};
49340
+ &:hover {
49341
+ background-color: ${themeColors.muted};
49342
+ }
49343
+ `;
49344
+ case "destructive":
49345
+ return `
49346
+ background-color: ${themeColors.destructive};
49347
+ color: ${themeColors.destructiveForeground};
49348
+ &:hover {
49349
+ background-color: ${themeColors.destructive};
49350
+ opacity: 0.9;
49351
+ }
49352
+ `;
49353
+ case "outline":
49354
+ return `
49355
+ background-color: transparent;
49356
+ color: ${themeColors.cardForeground};
49357
+ border-color: ${themeColors.border};
49358
+ `;
49359
+ case "cost":
49360
+ return `
49361
+ background-color: ${themeColors.secondary};
49362
+ color: ${themeColors.secondaryForeground};
49363
+ &:hover {
49364
+ background-color: ${themeColors.muted};
49365
+ }
49366
+ `;
49367
+ case "gray":
49368
+ return `
49369
+ background-color: ${themeColors.secondary};
49370
+ color: ${themeColors.secondaryForeground};
49371
+ &:hover {
49372
+ background-color: ${themeColors.muted};
49373
+ }
49374
+ `;
49375
+ case "latency":
49376
+ return `
49377
+ background-color: ${themeColors.secondary};
49378
+ color: ${themeColors.secondaryForeground};
49379
+ &:hover {
49380
+ background-color: ${themeColors.muted};
49381
+ }
49382
+ `;
49383
+ case "latencyLow":
49384
+ return `
49385
+ background-color: ${themeColors.secondary};
49386
+ color: ${themeColors.secondaryForeground};
49387
+ &:hover {
49388
+ background-color: ${themeColors.muted};
49389
+ }
49390
+ `;
49391
+ case "latencyMedium":
49392
+ return `
49393
+ background-color: ${themeColors.secondary};
49394
+ color: ${themeColors.secondaryForeground};
49395
+ &:hover {
49396
+ background-color: ${themeColors.muted};
49397
+ }
49398
+ `;
49399
+ case "latencyHigh":
49400
+ return `
49401
+ background-color: ${themeColors.destructive};
49402
+ color: ${themeColors.destructiveForeground};
49403
+ &:hover {
49404
+ background-color: ${themeColors.destructive};
49405
+ opacity: 0.9;
49406
+ }
49407
+ `;
49926
49408
  default:
49927
- // Fallback to Agent node for unknown types
49928
- return /*#__PURE__*/ React.createElement(AgentNode, {
49929
- data: data,
49930
- id: id,
49931
- onInspect: onInspect,
49932
- defaultDrawerOpen: data.defaultDrawerOpen
49933
- });
49409
+ return `
49410
+ background-color: ${themeColors.primary};
49411
+ color: ${themeColors.primaryForeground};
49412
+ &:hover {
49413
+ background-color: ${themeColors.primary};
49414
+ opacity: 0.9;
49415
+ }
49416
+ `;
49417
+ }
49418
+ }}
49419
+ `;
49420
+ const Badge = ({ variant = "default", children, title, placement = "top" })=>{
49421
+ const { theme } = useTheme$1();
49422
+ const themeColors = theme.colors;
49423
+ const badgeContent = /*#__PURE__*/ React__namespace.createElement(BadgeContainer, {
49424
+ variant: variant,
49425
+ themeColors: themeColors
49426
+ }, children);
49427
+ if (title) {
49428
+ return /*#__PURE__*/ React__namespace.createElement(Tooltip, {
49429
+ content: title,
49430
+ placement: placement
49431
+ }, badgeContent);
49934
49432
  }
49433
+ return badgeContent;
49935
49434
  };
49936
49435
 
49937
49436
  // Styled Components
@@ -52612,7 +52111,7 @@ SheetDescription.displayName = Description.displayName;
52612
52111
  /**
52613
52112
  * Calculates a clean tree layout: parents centered above children, siblings spaced evenly, no overlap.
52614
52113
  */ const calculateAutoLayout = (nodes, edges, options = {})=>{
52615
- const { minNodeSpacing = 200, containerWidth = 600 } = options;
52114
+ const { minNodeSpacing = 72, containerWidth = 600 } = options;
52616
52115
  // Handle undefined or null nodes
52617
52116
  if (!nodes || nodes.length === 0) {
52618
52117
  return new Map();
@@ -52662,8 +52161,8 @@ SheetDescription.displayName = Description.displayName;
52662
52161
  });
52663
52162
  // Calculate subtree widths for each node (for centering horizontally)
52664
52163
  const subtreeWidth = new Map();
52665
- const nodeWidth = 200; // Approximate node width
52666
- const nodeSpacing = Math.max(250, minNodeSpacing + 50); // Horizontal spacing between nodes (ensures minimum spacing + buffer)
52164
+ const nodeWidth = LAYOUT_NODE_WIDTH;
52165
+ const nodeSpacing = Math.max(8, Math.floor(minNodeSpacing / 8));
52667
52166
  const calcSubtreeWidth = (nodeId)=>{
52668
52167
  const children = childrenMap.get(nodeId) || [];
52669
52168
  if (children.length === 0) {
@@ -52681,8 +52180,8 @@ SheetDescription.displayName = Description.displayName;
52681
52180
  roots.forEach((root)=>calcSubtreeWidth(root.identifier));
52682
52181
  // Assign positions recursively - now top to bottom
52683
52182
  const positions = new Map();
52684
- const levelSpacing = Math.max(400, minNodeSpacing + 200); // Vertical spacing between levels (ensures minimum spacing + buffer)
52685
- const verticalMargin = 100; // Add margin to the top
52183
+ const levelSpacing = Math.max(130, minNodeSpacing + 42);
52184
+ const verticalMargin = 40;
52686
52185
  const assignPositions = (nodeId, xLeft, level)=>{
52687
52186
  const width = subtreeWidth.get(nodeId) || nodeWidth;
52688
52187
  const y = level * levelSpacing + verticalMargin; // Add margin here
@@ -52766,13 +52265,12 @@ SheetDescription.displayName = Description.displayName;
52766
52265
 
52767
52266
  const nodeTypes = {
52768
52267
  Agent: Node$1,
52769
- Tool: Node$1,
52770
- Coordinator: Node$1
52268
+ Tool: Node$1
52771
52269
  };
52772
52270
  const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", height = "100dvh", className = "", defaultZoom = 1, defaultPan = {
52773
52271
  x: 0,
52774
52272
  y: 0
52775
- }, disableAutoFit = true, defaultAutoFitDuration = 1000, defaultAutoFitDelay = 250, showTimeline = false, minNodeSpacing = 300, onInspect, panToNodeId })=>{
52273
+ }, disableAutoFit = true, defaultAutoFitDuration = 1000, defaultAutoFitDelay = 250, showTimeline = false, minNodeSpacing = 72, onInspect, panToNodeId })=>{
52776
52274
  const { theme, isDarkMode } = useTheme$1();
52777
52275
  const themeColors = theme.colors;
52778
52276
  // Helper function to determine if we should apply minimum dimensions
@@ -52964,15 +52462,17 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
52964
52462
  y: 0
52965
52463
  };
52966
52464
  const isActive = node.stamp.step === currentStep;
52465
+ const rawType = node.node_type || "Agent";
52466
+ const resolvedType = rawType === "Coordinator" ? "Agent" : rawType;
52967
52467
  // Extract edge details for Tool nodes
52968
52468
  const edgeDetails = node.node_type === "Tool" ? stepEdges.filter((edge)=>edge.target === node.identifier && edge.details).map((edge)=>edge.details) : undefined;
52969
52469
  return {
52970
52470
  id: node.identifier,
52971
- type: node.node_type || "Agent",
52471
+ type: resolvedType,
52972
52472
  position,
52973
52473
  data: {
52974
52474
  label: node.name || node.node_type,
52975
- nodeType: node.node_type,
52475
+ nodeType: resolvedType,
52976
52476
  details: node.details,
52977
52477
  isActive,
52978
52478
  id: node.identifier,
@@ -53004,7 +52504,6 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
53004
52504
  animated: isActive,
53005
52505
  bidirectional: true,
53006
52506
  style: {
53007
- stroke: isActive ? themeColors.primary : themeColors.mutedForeground,
53008
52507
  strokeWidth: isActive ? 3 : 2
53009
52508
  },
53010
52509
  label: edge.stamp?.identifier ? truncateText(String(edge.stamp.identifier), 50) : undefined,
@@ -53020,9 +52519,7 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
53020
52519
  });
53021
52520
  }, [
53022
52521
  currentStep,
53023
- getEdgesForStep,
53024
- themeColors.primary,
53025
- themeColors.mutedForeground
52522
+ getEdgesForStep
53026
52523
  ]);
53027
52524
  const [nodesState, setNodes, onNodesChange] = useNodesState(nodes);
53028
52525
  const [edgesState, setEdges, onEdgesChange] = useEdgesState(edges);
@@ -112750,7 +112247,328 @@ class ErrorBoundary extends React.Component {
112750
112247
  }
112751
112248
  }
112752
112249
 
112250
+ const MAX_TITLE_LEN = 200;
112251
+ const TOOLBAR_ICON_SIZE = 15;
112252
+ const JsonValueTree = ({ data, className, maxHeight = "auto" })=>{
112253
+ const { theme } = useTheme$1();
112254
+ const { mutedForeground } = theme.colors;
112255
+ const treeData = React.useMemo(()=>buildTreeData(data), [
112256
+ data
112257
+ ]);
112258
+ const defaultExpandedKeys = React.useMemo(()=>collectKeysToDepth(treeData, 2), [
112259
+ treeData
112260
+ ]);
112261
+ const allExpandableKeys = React.useMemo(()=>collectAllExpandableKeys(treeData), [
112262
+ treeData
112263
+ ]);
112264
+ const [expandedKeys, setExpandedKeys] = React.useState(()=>defaultExpandedKeys);
112265
+ const hasBranches = allExpandableKeys.length > 0;
112266
+ const isAllExpanded = hasBranches && allExpandableKeys.every((k)=>expandedKeys.includes(k));
112267
+ React.useEffect(()=>{
112268
+ setExpandedKeys(defaultExpandedKeys);
112269
+ }, [
112270
+ defaultExpandedKeys
112271
+ ]);
112272
+ const handleCopyJson = React.useCallback(async ()=>{
112273
+ try {
112274
+ const text = JSON.stringify(data, null, 2);
112275
+ await navigator.clipboard.writeText(text);
112276
+ staticMethods.success("JSON copied to clipboard");
112277
+ } catch {
112278
+ staticMethods.error("Could not copy to clipboard");
112279
+ }
112280
+ }, [
112281
+ data
112282
+ ]);
112283
+ const handleToggleExpandCollapse = React.useCallback(()=>{
112284
+ if (isAllExpanded) {
112285
+ setExpandedKeys([]);
112286
+ } else {
112287
+ setExpandedKeys(allExpandableKeys);
112288
+ }
112289
+ }, [
112290
+ isAllExpanded,
112291
+ allExpandableKeys
112292
+ ]);
112293
+ return /*#__PURE__*/ React.createElement("div", {
112294
+ className: className,
112295
+ style: {
112296
+ maxHeight,
112297
+ display: "flex",
112298
+ flexDirection: "column",
112299
+ borderRadius: 4,
112300
+ overflow: "hidden"
112301
+ }
112302
+ }, /*#__PURE__*/ React.createElement("div", {
112303
+ style: {
112304
+ display: "flex",
112305
+ justifyContent: "flex-end",
112306
+ alignItems: "center",
112307
+ gap: 2,
112308
+ padding: "4px 6px 2px",
112309
+ flexShrink: 0,
112310
+ background: "transparent"
112311
+ }
112312
+ }, /*#__PURE__*/ React.createElement(Tooltip$1, {
112313
+ title: "Copy JSON"
112314
+ }, /*#__PURE__*/ React.createElement(Button$1, {
112315
+ type: "text",
112316
+ size: "small",
112317
+ "aria-label": "Copy JSON to clipboard",
112318
+ icon: /*#__PURE__*/ React.createElement(Copy, {
112319
+ size: TOOLBAR_ICON_SIZE,
112320
+ color: mutedForeground
112321
+ }),
112322
+ onClick: handleCopyJson
112323
+ })), /*#__PURE__*/ React.createElement(Tooltip$1, {
112324
+ title: isAllExpanded ? "Collapse all" : "Expand all"
112325
+ }, /*#__PURE__*/ React.createElement(Button$1, {
112326
+ type: "text",
112327
+ size: "small",
112328
+ "aria-label": isAllExpanded ? "Collapse all tree nodes" : "Expand all tree nodes",
112329
+ disabled: !hasBranches,
112330
+ icon: isAllExpanded ? /*#__PURE__*/ React.createElement(FoldVertical, {
112331
+ size: TOOLBAR_ICON_SIZE,
112332
+ color: mutedForeground
112333
+ }) : /*#__PURE__*/ React.createElement(UnfoldVertical, {
112334
+ size: TOOLBAR_ICON_SIZE,
112335
+ color: mutedForeground
112336
+ }),
112337
+ onClick: handleToggleExpandCollapse
112338
+ }))), /*#__PURE__*/ React.createElement("div", {
112339
+ style: {
112340
+ flex: 1,
112341
+ minHeight: 0,
112342
+ overflow: "auto",
112343
+ padding: "4px 0"
112344
+ }
112345
+ }, /*#__PURE__*/ React.createElement(Tree, {
112346
+ // No showLine — connector lines look like a floating spine for many top-level fields.
112347
+ showLine: true,
112348
+ blockNode: true,
112349
+ expandAction: "click",
112350
+ selectable: false,
112351
+ showIcon: false,
112352
+ treeData: treeData,
112353
+ expandedKeys: expandedKeys,
112354
+ onExpand: (keys)=>setExpandedKeys(keys),
112355
+ rootStyle: {
112356
+ backgroundColor: "transparent",
112357
+ padding: "0 4px"
112358
+ }
112359
+ })));
112360
+ };
112361
+ function collectKeysToDepth(nodes, maxDepth, depth = 0) {
112362
+ if (depth >= maxDepth) return [];
112363
+ const keys = [];
112364
+ for (const n of nodes){
112365
+ if (n.children && n.children.length > 0) {
112366
+ keys.push(n.key);
112367
+ keys.push(...collectKeysToDepth(n.children, maxDepth, depth + 1));
112368
+ }
112369
+ }
112370
+ return keys;
112371
+ }
112372
+ function collectAllExpandableKeys(nodes) {
112373
+ const keys = [];
112374
+ for (const n of nodes){
112375
+ if (n.children && n.children.length > 0) {
112376
+ keys.push(n.key);
112377
+ keys.push(...collectAllExpandableKeys(n.children));
112378
+ }
112379
+ }
112380
+ return keys;
112381
+ }
112382
+ /**
112383
+ * Object keys A→Z, but any property whose value is an array is listed after all non-array properties
112384
+ * (each block still A→Z). Tree has no built-in sort — this defines `treeData` order.
112385
+ */ function sortObjectEntriesForTree(entries) {
112386
+ return [
112387
+ ...entries
112388
+ ].sort((a, b)=>{
112389
+ const aArr = Array.isArray(a[1]);
112390
+ const bArr = Array.isArray(b[1]);
112391
+ if (aArr !== bArr) {
112392
+ return aArr ? 1 : -1;
112393
+ }
112394
+ return a[0].localeCompare(b[0], undefined, {
112395
+ sensitivity: "base",
112396
+ numeric: true
112397
+ });
112398
+ });
112399
+ }
112400
+ function valueToTreeNodes(value, path) {
112401
+ if (value === null || value === undefined) {
112402
+ return [
112403
+ {
112404
+ key: path,
112405
+ title: formatJsonTreePrimitive(value),
112406
+ isLeaf: true
112407
+ }
112408
+ ];
112409
+ }
112410
+ if (Array.isArray(value)) {
112411
+ if (value.length === 0) {
112412
+ return [
112413
+ {
112414
+ key: `${path}.__empty_arr__`,
112415
+ title: "[] (0 items)",
112416
+ isLeaf: true
112417
+ }
112418
+ ];
112419
+ }
112420
+ return value.map((item, i)=>{
112421
+ const seg = `[${i}]`;
112422
+ const childPath = `${path}.${escapeDotPathSegment(seg)}`;
112423
+ if (item === null || item === undefined || typeof item !== "object") {
112424
+ return {
112425
+ key: childPath,
112426
+ title: `${seg}: ${formatJsonTreePrimitive(item)}`,
112427
+ isLeaf: true
112428
+ };
112429
+ }
112430
+ if (Array.isArray(item) || isPlainObject(item)) {
112431
+ const children = valueToTreeNodes(item, childPath);
112432
+ return {
112433
+ key: childPath,
112434
+ title: `${seg} (${Array.isArray(item) ? `Array(${item.length})` : `Object(${Object.keys(item).length})`})`,
112435
+ children
112436
+ };
112437
+ }
112438
+ return {
112439
+ key: childPath,
112440
+ title: `${seg}: ${formatJsonTreePrimitive(item)}`,
112441
+ isLeaf: true
112442
+ };
112443
+ });
112444
+ }
112445
+ if (isPlainObject(value)) {
112446
+ const entries = sortObjectEntriesForTree(Object.entries(value));
112447
+ if (entries.length === 0) {
112448
+ return [
112449
+ {
112450
+ key: `${path}.__empty_obj__`,
112451
+ title: "{} (0 keys)",
112452
+ isLeaf: true
112453
+ }
112454
+ ];
112455
+ }
112456
+ return entries.map(([k, v])=>{
112457
+ const childPath = `${path}.${escapeDotPathSegment(k)}`;
112458
+ if (v === null || v === undefined || typeof v !== "object") {
112459
+ const text = `${k}: ${formatJsonTreePrimitive(v)}`;
112460
+ const title = text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React.createElement(Tooltip$1, {
112461
+ title: text
112462
+ }, /*#__PURE__*/ React.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text;
112463
+ return {
112464
+ key: childPath,
112465
+ title,
112466
+ isLeaf: true
112467
+ };
112468
+ }
112469
+ if (Array.isArray(v) || isPlainObject(v)) {
112470
+ const children = valueToTreeNodes(v, childPath);
112471
+ const summary = Array.isArray(v) ? `Array(${v.length})` : `Object(${Object.keys(v).length})`;
112472
+ return {
112473
+ key: childPath,
112474
+ title: `${k}: ${summary}`,
112475
+ children
112476
+ };
112477
+ }
112478
+ const text = `${k}: ${formatJsonTreePrimitive(v)}`;
112479
+ return {
112480
+ key: childPath,
112481
+ title: text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React.createElement(Tooltip$1, {
112482
+ title: text
112483
+ }, /*#__PURE__*/ React.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text,
112484
+ isLeaf: true
112485
+ };
112486
+ });
112487
+ }
112488
+ const text = formatJsonTreePrimitive(value);
112489
+ return [
112490
+ {
112491
+ key: path,
112492
+ title: text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React.createElement(Tooltip$1, {
112493
+ title: text
112494
+ }, /*#__PURE__*/ React.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text,
112495
+ isLeaf: true
112496
+ }
112497
+ ];
112498
+ }
112499
+ /** Top-level tree for tabular session output: plain object or array of plain objects. */ function buildTreeData(data) {
112500
+ if (data === null || data === undefined) {
112501
+ return [
112502
+ {
112503
+ key: "root",
112504
+ title: String(data),
112505
+ isLeaf: true
112506
+ }
112507
+ ];
112508
+ }
112509
+ if (Array.isArray(data)) {
112510
+ if (data.length === 0) {
112511
+ return [
112512
+ {
112513
+ key: "$top",
112514
+ title: "Array (0 items)",
112515
+ isLeaf: true
112516
+ }
112517
+ ];
112518
+ }
112519
+ const children = data.map((item, index)=>{
112520
+ const path = `$root[${index}]`;
112521
+ if (!isPlainObject(item)) {
112522
+ return {
112523
+ key: path,
112524
+ title: `[${index}]: ${formatJsonTreePrimitive(item)}`,
112525
+ isLeaf: true
112526
+ };
112527
+ }
112528
+ const itemChildren = valueToTreeNodes(item, path);
112529
+ return {
112530
+ key: path,
112531
+ title: `[${index}] (${Object.keys(item).length} keys)`,
112532
+ children: itemChildren
112533
+ };
112534
+ });
112535
+ return [
112536
+ {
112537
+ key: "$top",
112538
+ title: `Array (${data.length} items)`,
112539
+ children
112540
+ }
112541
+ ];
112542
+ }
112543
+ if (isPlainObject(data)) {
112544
+ const objectKeys = Object.keys(data);
112545
+ if (objectKeys.length === 0) {
112546
+ return [
112547
+ {
112548
+ key: "$top",
112549
+ title: "Object (0 keys)",
112550
+ isLeaf: true
112551
+ }
112552
+ ];
112553
+ }
112554
+ const children = valueToTreeNodes(data, "$root");
112555
+ return [
112556
+ {
112557
+ key: "$top",
112558
+ title: `Object (${objectKeys.length} keys)`,
112559
+ children
112560
+ }
112561
+ ];
112562
+ }
112563
+ return valueToTreeNodes(data, "$root");
112564
+ }
112565
+
112753
112566
  const getNodeLatency = (node)=>node.details?.internals?.latency?.total_time ?? 0;
112567
+ /** Tool/agent failure is carried on the incoming edge's details.status (e.g. Failed), same as flow edges and session I/O. */ function isNodeFailureFromIncomingEdge(run, nodeId) {
112568
+ const incoming = run.edges?.filter((e)=>e.target === nodeId) ?? [];
112569
+ const status = incoming[0]?.details?.status;
112570
+ return Boolean(status && getStatusColor(status) === "error");
112571
+ }
112754
112572
  // Parse tree node key to extract metadata (format: "node::runId::nodeId" to handle dashes in IDs)
112755
112573
  const parseTreeNodeKey = (key)=>{
112756
112574
  if (key.startsWith("flow-")) {
@@ -112860,13 +112678,15 @@ const buildNodeTree = (run)=>{
112860
112678
  const childLatency = children.reduce((s, c)=>s + (c.subtreeLatency ?? 0), 0);
112861
112679
  const subtreeLatency = getNodeLatency(node) + childLatency;
112862
112680
  const isTool = node.node_type === "Tool";
112681
+ const failed = isNodeFailureFromIncomingEdge(run, node.identifier);
112682
+ const iconBg = failed ? "#ff4d4f" : isTool ? "#1890ff" : "#52c41a";
112863
112683
  const icon = /*#__PURE__*/ React.createElement("span", {
112864
112684
  style: {
112865
112685
  display: "block",
112866
112686
  width: 22,
112867
112687
  height: 22,
112868
112688
  borderRadius: 4,
112869
- background: isTool ? "#1890ff" : "#52c41a"
112689
+ background: iconBg
112870
112690
  }
112871
112691
  }, isTool ? /*#__PURE__*/ React.createElement(Wrench, {
112872
112692
  size: 14,
@@ -112998,7 +112818,6 @@ const useShareAgentSession = (session)=>{
112998
112818
  const { Text } = Typography;
112999
112819
  // Shared theme color fallbacks
113000
112820
  const DEFAULT_THEME_COLORS = {
113001
- mutedForeground: "hsl(215.4 16.3% 46.9%)",
113002
112821
  border: "hsl(214.3 31.8% 91.4%)",
113003
112822
  foreground: "hsl(222.2 84% 4.9%)"
113004
112823
  };
@@ -113027,145 +112846,6 @@ const isTabularData = (data)=>{
113027
112846
  }
113028
112847
  return false;
113029
112848
  };
113030
- const ObjectCardRenderer = ({ data, isDarkMode })=>{
113031
- const { theme } = useTheme$1();
113032
- const themeColors = theme?.colors || DEFAULT_THEME_COLORS;
113033
- // Helper to render a value (handles nested objects/arrays)
113034
- const renderValue = (value)=>{
113035
- if (value === null || value === undefined) {
113036
- return /*#__PURE__*/ React.createElement("span", {
113037
- style: {
113038
- color: themeColors.mutedForeground
113039
- }
113040
- }, "null");
113041
- }
113042
- // Handle nested objects
113043
- if (typeof value === "object" && !Array.isArray(value) && value.constructor === Object) {
113044
- const nestedItems = Object.entries(value).map(([key, val])=>({
113045
- key: `nested-${key}`,
113046
- label: key,
113047
- children: renderValue(val)
113048
- }));
113049
- return /*#__PURE__*/ React.createElement(Collapse, {
113050
- items: [
113051
- {
113052
- key: "nested-object",
113053
- label: /*#__PURE__*/ React.createElement("span", {
113054
- style: {
113055
- fontSize: "12px"
113056
- }
113057
- }, "Object (", Object.keys(value).length, " keys)"),
113058
- children: /*#__PURE__*/ React.createElement(Descriptions, {
113059
- column: 1,
113060
- size: "small",
113061
- items: nestedItems,
113062
- style: {
113063
- marginTop: "8px"
113064
- }
113065
- })
113066
- }
113067
- ],
113068
- size: "small",
113069
- style: {
113070
- background: "transparent"
113071
- }
113072
- });
113073
- }
113074
- // Handle arrays
113075
- if (Array.isArray(value)) {
113076
- return /*#__PURE__*/ React.createElement(Collapse, {
113077
- items: [
113078
- {
113079
- key: "nested-array",
113080
- label: /*#__PURE__*/ React.createElement("span", {
113081
- style: {
113082
- fontSize: "12px"
113083
- }
113084
- }, "Array (", value.length, " items)"),
113085
- children: /*#__PURE__*/ React.createElement("div", {
113086
- style: {
113087
- marginTop: "8px"
113088
- }
113089
- }, value.map((item, idx)=>/*#__PURE__*/ React.createElement("div", {
113090
- key: idx,
113091
- style: {
113092
- marginBottom: "8px"
113093
- }
113094
- }, typeof item === "object" && item !== null && !Array.isArray(item) ? /*#__PURE__*/ React.createElement(Descriptions, {
113095
- column: 1,
113096
- size: "small",
113097
- items: Object.entries(item).map(([key, val])=>({
113098
- key: `array-item-${idx}-${key}`,
113099
- label: key,
113100
- children: renderValue(val)
113101
- }))
113102
- }) : /*#__PURE__*/ React.createElement("pre", {
113103
- style: {
113104
- margin: 0,
113105
- padding: "8px",
113106
- background: isDarkMode ? "#1f1f1f" : "#fafafa",
113107
- border: `1px solid ${themeColors.border}`,
113108
- borderRadius: "4px",
113109
- fontSize: "12px",
113110
- whiteSpace: "pre-wrap",
113111
- wordWrap: "break-word"
113112
- }
113113
- }, JSON.stringify(item, null, 2)))))
113114
- }
113115
- ],
113116
- size: "small",
113117
- style: {
113118
- background: "transparent"
113119
- }
113120
- });
113121
- }
113122
- // Handle primitive values
113123
- return /*#__PURE__*/ React.createElement("span", null, String(value));
113124
- };
113125
- // Normalize to array
113126
- const objectsArray = Array.isArray(data) ? data : [
113127
- data
113128
- ];
113129
- return /*#__PURE__*/ React.createElement("div", {
113130
- style: {
113131
- display: "flex",
113132
- flexDirection: "column",
113133
- gap: "12px"
113134
- }
113135
- }, objectsArray.map((obj, index)=>{
113136
- if (!obj || typeof obj !== "object") {
113137
- return null;
113138
- }
113139
- const items = Object.entries(obj).map(([key, value])=>({
113140
- key,
113141
- label: key,
113142
- children: renderValue(value)
113143
- }));
113144
- return /*#__PURE__*/ React.createElement(Card, {
113145
- key: index,
113146
- size: "small",
113147
- style: {
113148
- background: isDarkMode ? "#1f1f1f" : "#fff",
113149
- border: `1px solid ${themeColors.border}`
113150
- },
113151
- bodyStyle: {
113152
- padding: "16px"
113153
- }
113154
- }, /*#__PURE__*/ React.createElement(Descriptions, {
113155
- column: 1,
113156
- size: "small",
113157
- items: items,
113158
- labelStyle: {
113159
- color: themeColors.mutedForeground,
113160
- fontWeight: 500,
113161
- width: "30%"
113162
- },
113163
- contentStyle: {
113164
- color: themeColors.foreground
113165
- }
113166
- }));
113167
- }));
113168
- };
113169
112849
  // Helper function to format output as text
113170
112850
  const formatOutputAsText = (output, toolOutput)=>{
113171
112851
  if (toolOutput !== null && toolOutput !== undefined) {
@@ -113461,9 +113141,8 @@ const NodeDetailsPanel = ({ selectedNode, session, isDarkMode })=>{
113461
113141
  label: /*#__PURE__*/ React.createElement(Text, {
113462
113142
  strong: true
113463
113143
  }, "Outputs"),
113464
- children: hasOutputs ? isToolOutputTabular ? /*#__PURE__*/ React.createElement(ObjectCardRenderer, {
113465
- data: toolOutput,
113466
- isDarkMode: isDarkMode
113144
+ children: hasOutputs ? isToolOutputTabular ? /*#__PURE__*/ React.createElement(JsonValueTree, {
113145
+ data: toolOutput
113467
113146
  }) : /*#__PURE__*/ React.createElement("pre", {
113468
113147
  style: {
113469
113148
  margin: 0,
@@ -113737,7 +113416,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113737
113416
  size: "small"
113738
113417
  })), /*#__PURE__*/ React.createElement(Divider, {
113739
113418
  type: "vertical"
113740
- }), /*#__PURE__*/ React.createElement(Tooltip, {
113419
+ }), /*#__PURE__*/ React.createElement(Tooltip$1, {
113741
113420
  title: "Show Session Details"
113742
113421
  }, /*#__PURE__*/ React.createElement(Button$1, {
113743
113422
  type: "text",
@@ -113746,7 +113425,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113746
113425
  }),
113747
113426
  onClick: ()=>setIsFullScreen(false),
113748
113427
  disabled: !session?.session_id
113749
- }, "Session Details"))) : /*#__PURE__*/ React.createElement(Tooltip, {
113428
+ }, "Session Details"))) : /*#__PURE__*/ React.createElement(Tooltip$1, {
113750
113429
  title: "Open Visualizer"
113751
113430
  }, /*#__PURE__*/ React.createElement(Button$1, {
113752
113431
  type: "text",
@@ -113757,7 +113436,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113757
113436
  disabled: !session?.session_id
113758
113437
  }, "Visualizer")), /*#__PURE__*/ React.createElement(Divider, {
113759
113438
  type: "vertical"
113760
- }), /*#__PURE__*/ React.createElement(Tooltip, {
113439
+ }), /*#__PURE__*/ React.createElement(Tooltip$1, {
113761
113440
  title: "Copy Session ID to Clipboard"
113762
113441
  }, /*#__PURE__*/ React.createElement(Button$1, {
113763
113442
  type: "text",
@@ -113766,7 +113445,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113766
113445
  }),
113767
113446
  onClick: handleCopyId,
113768
113447
  disabled: !session?.session_id
113769
- })), /*#__PURE__*/ React.createElement(Tooltip, {
113448
+ })), /*#__PURE__*/ React.createElement(Tooltip$1, {
113770
113449
  title: "Coming Soon!"
113771
113450
  }, /*#__PURE__*/ React.createElement(Button$1, {
113772
113451
  type: "text",
@@ -114486,7 +114165,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114486
114165
  display: "flex",
114487
114166
  gap: 8
114488
114167
  }
114489
- }, /*#__PURE__*/ React.createElement(Tooltip, {
114168
+ }, /*#__PURE__*/ React.createElement(Tooltip$1, {
114490
114169
  title: "Copy IDs to Clipboard"
114491
114170
  }, /*#__PURE__*/ React.createElement(Button$1, {
114492
114171
  type: "text",
@@ -114495,7 +114174,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114495
114174
  }),
114496
114175
  onClick: handleCopyIds,
114497
114176
  disabled: !evaluationId1 || !evaluationId2
114498
- })), /*#__PURE__*/ React.createElement(Tooltip, {
114177
+ })), /*#__PURE__*/ React.createElement(Tooltip$1, {
114499
114178
  title: "Share"
114500
114179
  }, /*#__PURE__*/ React.createElement(Button$1, {
114501
114180
  type: "text",
@@ -114557,7 +114236,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114557
114236
  gap: 4,
114558
114237
  justifyContent: "space-between"
114559
114238
  }
114560
- }, /*#__PURE__*/ React.createElement("span", null, normalizedEvaluation.name || "Evaluation Details"), normalizedEvaluation.completed_at && /*#__PURE__*/ React.createElement(Tooltip, {
114239
+ }, /*#__PURE__*/ React.createElement("span", null, normalizedEvaluation.name || "Evaluation Details"), normalizedEvaluation.completed_at && /*#__PURE__*/ React.createElement(Tooltip$1, {
114561
114240
  title: formatDateFriendly(normalizedEvaluation.completed_at),
114562
114241
  getPopupContainer: ()=>document.body
114563
114242
  }, /*#__PURE__*/ React.createElement("span", {
@@ -114608,7 +114287,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114608
114287
  style: {
114609
114288
  marginBottom: "24px"
114610
114289
  }
114611
- }, /*#__PURE__*/ React.createElement(Row$1, {
114290
+ }, /*#__PURE__*/ React.createElement(Row, {
114612
114291
  gutter: [
114613
114292
  24,
114614
114293
  16
@@ -114748,7 +114427,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114748
114427
  key: metric.sha || `${metric.name}-${i}`,
114749
114428
  style: tagStyle
114750
114429
  }, metric.name);
114751
- return metric.description ? /*#__PURE__*/ React.createElement(Tooltip, {
114430
+ return metric.description ? /*#__PURE__*/ React.createElement(Tooltip$1, {
114752
114431
  key: metric.sha || `${metric.name}-${i}`,
114753
114432
  title: metric.description,
114754
114433
  getPopupContainer: ()=>document.body
@@ -115010,7 +114689,7 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
115010
114689
  const bVal = b.completed_at ? moment(b.completed_at).unix() : 0;
115011
114690
  return aVal - bVal;
115012
114691
  },
115013
- render: (completedAt)=>completedAt ? /*#__PURE__*/ React.createElement(Tooltip, {
114692
+ render: (completedAt)=>completedAt ? /*#__PURE__*/ React.createElement(Tooltip$1, {
115014
114693
  title: completedAt
115015
114694
  }, /*#__PURE__*/ React.createElement("span", null, formatDateShort(completedAt))) : "-"
115016
114695
  },
@@ -117792,7 +117471,7 @@ const AggregateResultsTable = ({ rawResults = [], aggregateResults, agents, titl
117792
117471
  fontSize: 16,
117793
117472
  fontWeight: 600
117794
117473
  }
117795
- }, resolvedTitle), /*#__PURE__*/ React.createElement(Tooltip, {
117474
+ }, resolvedTitle), /*#__PURE__*/ React.createElement(Tooltip$1, {
117796
117475
  title: llmExpandableKeys.length === 0 ? "No expandable rows" : undefined
117797
117476
  }, /*#__PURE__*/ React.createElement(Button$1, {
117798
117477
  type: "text",
@@ -118222,7 +117901,7 @@ const AggregateResultsTable = ({ rawResults = [], aggregateResults, agents, titl
118222
117901
  fontSize: 16,
118223
117902
  fontWeight: 600
118224
117903
  }
118225
- }, resolvedTitle), /*#__PURE__*/ React.createElement(Tooltip, {
117904
+ }, resolvedTitle), /*#__PURE__*/ React.createElement(Tooltip$1, {
118226
117905
  title: expandableKeys.length === 0 ? "No expandable rows" : undefined
118227
117906
  }, /*#__PURE__*/ React.createElement(Button$1, {
118228
117907
  type: "text",
@@ -118475,7 +118154,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref, onAgentNodeClick }
118475
118154
  background: theme.colors.secondary,
118476
118155
  border: `1px solid ${theme.colors.border}`
118477
118156
  }
118478
- }, /*#__PURE__*/ React.createElement(Row$1, {
118157
+ }, /*#__PURE__*/ React.createElement(Row, {
118479
118158
  gutter: [
118480
118159
  32,
118481
118160
  16
@@ -118514,7 +118193,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref, onAgentNodeClick }
118514
118193
  fontWeight: 600,
118515
118194
  fontSize: 15
118516
118195
  }
118517
- }, completed_at ? /*#__PURE__*/ React.createElement(Tooltip, {
118196
+ }, completed_at ? /*#__PURE__*/ React.createElement(Tooltip$1, {
118518
118197
  title: formatDateFriendly(completed_at)
118519
118198
  }, /*#__PURE__*/ React.createElement("span", null, formatDateRelative(completed_at))) : "-")), /*#__PURE__*/ React.createElement(Col, {
118520
118199
  xs: 24,
@@ -120596,12 +120275,14 @@ exports.createSafeTheme = createSafeTheme;
120596
120275
  exports.darkTheme = darkTheme;
120597
120276
  exports.defaultTheme = defaultTheme$1;
120598
120277
  exports.detectContentType = detectContentType;
120278
+ exports.escapeDotPathSegment = escapeDotPathSegment;
120599
120279
  exports.evaluationsHaveSameMetrics = evaluationsHaveSameMetrics;
120600
120280
  exports.formatCurrency = formatCurrency;
120601
120281
  exports.formatDateFriendly = formatDateFriendly;
120602
120282
  exports.formatDateRelative = formatDateRelative;
120603
120283
  exports.formatDateShort = formatDateShort;
120604
120284
  exports.formatDuration = formatDuration;
120285
+ exports.formatJsonTreePrimitive = formatJsonTreePrimitive;
120605
120286
  exports.formatLatency = formatLatency;
120606
120287
  exports.formatMetricValue = formatMetricValue$1;
120607
120288
  exports.formatNumberWithCommas = formatNumberWithCommas;
@@ -120613,6 +120294,7 @@ exports.getSafeThemeValue = getSafeThemeValue;
120613
120294
  exports.getSpacing = getSpacing;
120614
120295
  exports.getStatusColor = getStatusColor;
120615
120296
  exports.isEvaluationDto = isEvaluationDto;
120297
+ exports.isPlainObject = isPlainObject;
120616
120298
  exports.lightTheme = lightTheme;
120617
120299
  exports.safeStyled = safeStyled;
120618
120300
  exports.safeThemeColor = safeThemeColor;