@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/esm/index.js CHANGED
@@ -29,6 +29,12 @@ import LoadingOutlined from '@ant-design/icons/es/icons/LoadingOutlined';
29
29
  import { Color as Color$1 } from '@rc-component/color-picker';
30
30
  import RightOutlined from '@ant-design/icons/es/icons/RightOutlined';
31
31
  import RcCollapse from '@rc-component/collapse';
32
+ import CheckCircleFilled from '@ant-design/icons/es/icons/CheckCircleFilled';
33
+ import CloseCircleFilled from '@ant-design/icons/es/icons/CloseCircleFilled';
34
+ import ExclamationCircleFilled from '@ant-design/icons/es/icons/ExclamationCircleFilled';
35
+ import InfoCircleFilled from '@ant-design/icons/es/icons/InfoCircleFilled';
36
+ import { Notice, useNotification, NotificationProvider } from '@rc-component/notification';
37
+ import RcTooltip, { Popup } from '@rc-component/tooltip';
32
38
  import RcTree, { TreeNode as TreeNode$1 } from '@rc-component/tree';
33
39
  import FileOutlined from '@ant-design/icons/es/icons/FileOutlined';
34
40
  import FolderOpenOutlined from '@ant-design/icons/es/icons/FolderOpenOutlined';
@@ -39,16 +45,10 @@ import HolderOutlined from '@ant-design/icons/es/icons/HolderOutlined';
39
45
  import CaretDownFilled from '@ant-design/icons/es/icons/CaretDownFilled';
40
46
  import MinusSquareOutlined from '@ant-design/icons/es/icons/MinusSquareOutlined';
41
47
  import PlusSquareOutlined from '@ant-design/icons/es/icons/PlusSquareOutlined';
42
- import CheckCircleFilled from '@ant-design/icons/es/icons/CheckCircleFilled';
43
- import CloseCircleFilled from '@ant-design/icons/es/icons/CloseCircleFilled';
44
- import ExclamationCircleFilled from '@ant-design/icons/es/icons/ExclamationCircleFilled';
45
- import InfoCircleFilled from '@ant-design/icons/es/icons/InfoCircleFilled';
46
- import { Notice, useNotification, NotificationProvider } from '@rc-component/notification';
47
48
  import EditOutlined from '@ant-design/icons/es/icons/EditOutlined';
48
49
  import ResizeObserver$1 from '@rc-component/resize-observer';
49
50
  import '@rc-component/util/es/Dom/canUseDom';
50
51
  import { isStyleSupport } from '@rc-component/util/es/Dom/styleChecker';
51
- import RcTooltip, { Popup } from '@rc-component/tooltip';
52
52
  import EnterOutlined from '@ant-design/icons/es/icons/EnterOutlined';
53
53
  import KeyCode from '@rc-component/util/es/KeyCode';
54
54
  import RcTextArea from '@rc-component/textarea';
@@ -57,9 +57,6 @@ import { triggerFocus } from '@rc-component/util/es/Dom/focus';
57
57
  import CheckOutlined from '@ant-design/icons/es/icons/CheckOutlined';
58
58
  import CopyOutlined from '@ant-design/icons/es/icons/CopyOutlined';
59
59
  import RcSwitch from '@rc-component/switch';
60
- import EllipsisOutlined from '@ant-design/icons/es/icons/EllipsisOutlined';
61
- import PlusOutlined from '@ant-design/icons/es/icons/PlusOutlined';
62
- import RcTabs from '@rc-component/tabs';
63
60
  import RcSelect, { Option, OptGroup } from '@rc-component/select';
64
61
  import DownOutlined from '@ant-design/icons/es/icons/DownOutlined';
65
62
  import SearchOutlined from '@ant-design/icons/es/icons/SearchOutlined';
@@ -70,6 +67,7 @@ import LeftOutlined from '@ant-design/icons/es/icons/LeftOutlined';
70
67
  import RcDropdown from '@rc-component/dropdown';
71
68
  import RcMenu, { Divider as Divider$1, Item as Item$1, useFullPath, SubMenu as SubMenu$1, ItemGroup } from '@rc-component/menu';
72
69
  import BarsOutlined from '@ant-design/icons/es/icons/BarsOutlined';
70
+ import EllipsisOutlined from '@ant-design/icons/es/icons/EllipsisOutlined';
73
71
  import '@rc-component/util/es/Dom/findDOMNode';
74
72
  import { convertChildrenToColumns } from '@rc-component/table/es/hooks/useColumns';
75
73
  import DoubleLeftOutlined from '@ant-design/icons/es/icons/DoubleLeftOutlined';
@@ -78,6 +76,8 @@ import RcPagination from '@rc-component/pagination';
78
76
  import FilterFilled from '@ant-design/icons/es/icons/FilterFilled';
79
77
  import CaretDownOutlined from '@ant-design/icons/es/icons/CaretDownOutlined';
80
78
  import CaretUpOutlined from '@ant-design/icons/es/icons/CaretUpOutlined';
79
+ import PlusOutlined from '@ant-design/icons/es/icons/PlusOutlined';
80
+ import RcTabs from '@rc-component/tabs';
81
81
 
82
82
  function cc(names) {
83
83
  if (typeof names === "string" || typeof names === "number") return "" + names;
@@ -12903,7 +12903,7 @@ const createLucideIcon = (iconName, iconNode)=>{
12903
12903
  return Component;
12904
12904
  };
12905
12905
 
12906
- const __iconNode$u = [
12906
+ const __iconNode$x = [
12907
12907
  [
12908
12908
  "path",
12909
12909
  {
@@ -12919,9 +12919,9 @@ const __iconNode$u = [
12919
12919
  }
12920
12920
  ]
12921
12921
  ];
12922
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$u);
12922
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$x);
12923
12923
 
12924
- const __iconNode$t = [
12924
+ const __iconNode$w = [
12925
12925
  [
12926
12926
  "path",
12927
12927
  {
@@ -12937,9 +12937,9 @@ const __iconNode$t = [
12937
12937
  }
12938
12938
  ]
12939
12939
  ];
12940
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$t);
12940
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$w);
12941
12941
 
12942
- const __iconNode$s = [
12942
+ const __iconNode$v = [
12943
12943
  [
12944
12944
  "path",
12945
12945
  {
@@ -12987,9 +12987,9 @@ const __iconNode$s = [
12987
12987
  }
12988
12988
  ]
12989
12989
  ];
12990
- const Bot = createLucideIcon("bot", __iconNode$s);
12990
+ const Bot = createLucideIcon("bot", __iconNode$v);
12991
12991
 
12992
- const __iconNode$r = [
12992
+ const __iconNode$u = [
12993
12993
  [
12994
12994
  "path",
12995
12995
  {
@@ -13023,9 +13023,9 @@ const __iconNode$r = [
13023
13023
  }
13024
13024
  ]
13025
13025
  ];
13026
- const Calendar = createLucideIcon("calendar", __iconNode$r);
13026
+ const Calendar = createLucideIcon("calendar", __iconNode$u);
13027
13027
 
13028
- const __iconNode$q = [
13028
+ const __iconNode$t = [
13029
13029
  [
13030
13030
  "path",
13031
13031
  {
@@ -13082,9 +13082,9 @@ const __iconNode$q = [
13082
13082
  }
13083
13083
  ]
13084
13084
  ];
13085
- const ChartNetwork = createLucideIcon("chart-network", __iconNode$q);
13085
+ const ChartNetwork = createLucideIcon("chart-network", __iconNode$t);
13086
13086
 
13087
- const __iconNode$p = [
13087
+ const __iconNode$s = [
13088
13088
  [
13089
13089
  "path",
13090
13090
  {
@@ -13093,9 +13093,9 @@ const __iconNode$p = [
13093
13093
  }
13094
13094
  ]
13095
13095
  ];
13096
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$p);
13096
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$s);
13097
13097
 
13098
- const __iconNode$o = [
13098
+ const __iconNode$r = [
13099
13099
  [
13100
13100
  "path",
13101
13101
  {
@@ -13104,9 +13104,9 @@ const __iconNode$o = [
13104
13104
  }
13105
13105
  ]
13106
13106
  ];
13107
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$o);
13107
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$r);
13108
13108
 
13109
- const __iconNode$n = [
13109
+ const __iconNode$q = [
13110
13110
  [
13111
13111
  "path",
13112
13112
  {
@@ -13122,9 +13122,9 @@ const __iconNode$n = [
13122
13122
  }
13123
13123
  ]
13124
13124
  ];
13125
- const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$n);
13125
+ const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$q);
13126
13126
 
13127
- const __iconNode$m = [
13127
+ const __iconNode$p = [
13128
13128
  [
13129
13129
  "path",
13130
13130
  {
@@ -13140,9 +13140,9 @@ const __iconNode$m = [
13140
13140
  }
13141
13141
  ]
13142
13142
  ];
13143
- const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$m);
13143
+ const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$p);
13144
13144
 
13145
- const __iconNode$l = [
13145
+ const __iconNode$o = [
13146
13146
  [
13147
13147
  "circle",
13148
13148
  {
@@ -13173,9 +13173,9 @@ const __iconNode$l = [
13173
13173
  }
13174
13174
  ]
13175
13175
  ];
13176
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$l);
13176
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$o);
13177
13177
 
13178
- const __iconNode$k = [
13178
+ const __iconNode$n = [
13179
13179
  [
13180
13180
  "path",
13181
13181
  {
@@ -13191,9 +13191,36 @@ const __iconNode$k = [
13191
13191
  }
13192
13192
  ]
13193
13193
  ];
13194
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$k);
13194
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$n);
13195
13195
 
13196
- const __iconNode$j = [
13196
+ const __iconNode$m = [
13197
+ [
13198
+ "circle",
13199
+ {
13200
+ cx: "12",
13201
+ cy: "12",
13202
+ r: "10",
13203
+ key: "1mglay"
13204
+ }
13205
+ ],
13206
+ [
13207
+ "path",
13208
+ {
13209
+ d: "M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",
13210
+ key: "1h4pet"
13211
+ }
13212
+ ],
13213
+ [
13214
+ "path",
13215
+ {
13216
+ d: "M12 18V6",
13217
+ key: "zqpxq5"
13218
+ }
13219
+ ]
13220
+ ];
13221
+ const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$m);
13222
+
13223
+ const __iconNode$l = [
13197
13224
  [
13198
13225
  "circle",
13199
13226
  {
@@ -13211,9 +13238,9 @@ const __iconNode$j = [
13211
13238
  }
13212
13239
  ]
13213
13240
  ];
13214
- const Clock = createLucideIcon("clock", __iconNode$j);
13241
+ const Clock = createLucideIcon("clock", __iconNode$l);
13215
13242
 
13216
- const __iconNode$i = [
13243
+ const __iconNode$k = [
13217
13244
  [
13218
13245
  "path",
13219
13246
  {
@@ -13229,9 +13256,9 @@ const __iconNode$i = [
13229
13256
  }
13230
13257
  ]
13231
13258
  ];
13232
- const CloudLightning = createLucideIcon("cloud-lightning", __iconNode$i);
13259
+ const CloudLightning = createLucideIcon("cloud-lightning", __iconNode$k);
13233
13260
 
13234
- const __iconNode$h = [
13261
+ const __iconNode$j = [
13235
13262
  [
13236
13263
  "rect",
13237
13264
  {
@@ -13252,9 +13279,9 @@ const __iconNode$h = [
13252
13279
  }
13253
13280
  ]
13254
13281
  ];
13255
- const Copy = createLucideIcon("copy", __iconNode$h);
13282
+ const Copy = createLucideIcon("copy", __iconNode$j);
13256
13283
 
13257
- const __iconNode$g = [
13284
+ const __iconNode$i = [
13258
13285
  [
13259
13286
  "path",
13260
13287
  {
@@ -13362,9 +13389,9 @@ const __iconNode$g = [
13362
13389
  }
13363
13390
  ]
13364
13391
  ];
13365
- const Cpu = createLucideIcon("cpu", __iconNode$g);
13392
+ const Cpu = createLucideIcon("cpu", __iconNode$i);
13366
13393
 
13367
- const __iconNode$f = [
13394
+ const __iconNode$h = [
13368
13395
  [
13369
13396
  "line",
13370
13397
  {
@@ -13383,9 +13410,9 @@ const __iconNode$f = [
13383
13410
  }
13384
13411
  ]
13385
13412
  ];
13386
- const DollarSign = createLucideIcon("dollar-sign", __iconNode$f);
13413
+ const DollarSign = createLucideIcon("dollar-sign", __iconNode$h);
13387
13414
 
13388
- const __iconNode$e = [
13415
+ const __iconNode$g = [
13389
13416
  [
13390
13417
  "path",
13391
13418
  {
@@ -13415,9 +13442,9 @@ const __iconNode$e = [
13415
13442
  }
13416
13443
  ]
13417
13444
  ];
13418
- const FileInput = createLucideIcon("file-input", __iconNode$e);
13445
+ const FileInput = createLucideIcon("file-input", __iconNode$g);
13419
13446
 
13420
- const __iconNode$d = [
13447
+ const __iconNode$f = [
13421
13448
  [
13422
13449
  "path",
13423
13450
  {
@@ -13447,9 +13474,69 @@ const __iconNode$d = [
13447
13474
  }
13448
13475
  ]
13449
13476
  ];
13450
- const FileOutput = createLucideIcon("file-output", __iconNode$d);
13477
+ const FileOutput = createLucideIcon("file-output", __iconNode$f);
13451
13478
 
13452
- const __iconNode$c = [
13479
+ const __iconNode$e = [
13480
+ [
13481
+ "path",
13482
+ {
13483
+ d: "M12 22v-6",
13484
+ key: "6o8u61"
13485
+ }
13486
+ ],
13487
+ [
13488
+ "path",
13489
+ {
13490
+ d: "M12 8V2",
13491
+ key: "1wkif3"
13492
+ }
13493
+ ],
13494
+ [
13495
+ "path",
13496
+ {
13497
+ d: "M4 12H2",
13498
+ key: "rhcxmi"
13499
+ }
13500
+ ],
13501
+ [
13502
+ "path",
13503
+ {
13504
+ d: "M10 12H8",
13505
+ key: "s88cx1"
13506
+ }
13507
+ ],
13508
+ [
13509
+ "path",
13510
+ {
13511
+ d: "M16 12h-2",
13512
+ key: "10asgb"
13513
+ }
13514
+ ],
13515
+ [
13516
+ "path",
13517
+ {
13518
+ d: "M22 12h-2",
13519
+ key: "14jgyd"
13520
+ }
13521
+ ],
13522
+ [
13523
+ "path",
13524
+ {
13525
+ d: "m15 19-3-3-3 3",
13526
+ key: "e37ymu"
13527
+ }
13528
+ ],
13529
+ [
13530
+ "path",
13531
+ {
13532
+ d: "m15 5-3 3-3-3",
13533
+ key: "19d6lf"
13534
+ }
13535
+ ]
13536
+ ];
13537
+ const FoldVertical = createLucideIcon("fold-vertical", __iconNode$e);
13538
+
13539
+ const __iconNode$d = [
13453
13540
  [
13454
13541
  "line",
13455
13542
  {
@@ -13491,9 +13578,9 @@ const __iconNode$c = [
13491
13578
  }
13492
13579
  ]
13493
13580
  ];
13494
- const Hash = createLucideIcon("hash", __iconNode$c);
13581
+ const Hash = createLucideIcon("hash", __iconNode$d);
13495
13582
 
13496
- const __iconNode$b = [
13583
+ const __iconNode$c = [
13497
13584
  [
13498
13585
  "circle",
13499
13586
  {
@@ -13518,9 +13605,9 @@ const __iconNode$b = [
13518
13605
  }
13519
13606
  ]
13520
13607
  ];
13521
- const Info = createLucideIcon("info", __iconNode$b);
13608
+ const Info = createLucideIcon("info", __iconNode$c);
13522
13609
 
13523
- const __iconNode$a = [
13610
+ const __iconNode$b = [
13524
13611
  [
13525
13612
  "path",
13526
13613
  {
@@ -13557,9 +13644,9 @@ const __iconNode$a = [
13557
13644
  }
13558
13645
  ]
13559
13646
  ];
13560
- const ListChecks = createLucideIcon("list-checks", __iconNode$a);
13647
+ const ListChecks = createLucideIcon("list-checks", __iconNode$b);
13561
13648
 
13562
- const __iconNode$9 = [
13649
+ const __iconNode$a = [
13563
13650
  [
13564
13651
  "path",
13565
13652
  {
@@ -13575,9 +13662,9 @@ const __iconNode$9 = [
13575
13662
  }
13576
13663
  ]
13577
13664
  ];
13578
- const MessagesSquare = createLucideIcon("messages-square", __iconNode$9);
13665
+ const MessagesSquare = createLucideIcon("messages-square", __iconNode$a);
13579
13666
 
13580
- const __iconNode$8 = [
13667
+ const __iconNode$9 = [
13581
13668
  [
13582
13669
  "path",
13583
13670
  {
@@ -13586,9 +13673,9 @@ const __iconNode$8 = [
13586
13673
  }
13587
13674
  ]
13588
13675
  ];
13589
- const MessageSquare = createLucideIcon("message-square", __iconNode$8);
13676
+ const MessageSquare = createLucideIcon("message-square", __iconNode$9);
13590
13677
 
13591
- const __iconNode$7 = [
13678
+ const __iconNode$8 = [
13592
13679
  [
13593
13680
  "rect",
13594
13681
  {
@@ -13608,9 +13695,9 @@ const __iconNode$7 = [
13608
13695
  }
13609
13696
  ]
13610
13697
  ];
13611
- const PanelLeft = createLucideIcon("panel-left", __iconNode$7);
13698
+ const PanelLeft = createLucideIcon("panel-left", __iconNode$8);
13612
13699
 
13613
- const __iconNode$6 = [
13700
+ const __iconNode$7 = [
13614
13701
  [
13615
13702
  "path",
13616
13703
  {
@@ -13640,9 +13727,9 @@ const __iconNode$6 = [
13640
13727
  }
13641
13728
  ]
13642
13729
  ];
13643
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$6);
13730
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$7);
13644
13731
 
13645
- const __iconNode$5 = [
13732
+ const __iconNode$6 = [
13646
13733
  [
13647
13734
  "path",
13648
13735
  {
@@ -13679,9 +13766,9 @@ const __iconNode$5 = [
13679
13766
  }
13680
13767
  ]
13681
13768
  ];
13682
- const Scale = createLucideIcon("scale", __iconNode$5);
13769
+ const Scale = createLucideIcon("scale", __iconNode$6);
13683
13770
 
13684
- const __iconNode$4 = [
13771
+ const __iconNode$5 = [
13685
13772
  [
13686
13773
  "path",
13687
13774
  {
@@ -13704,9 +13791,9 @@ const __iconNode$4 = [
13704
13791
  }
13705
13792
  ]
13706
13793
  ];
13707
- const Share = createLucideIcon("share", __iconNode$4);
13794
+ const Share = createLucideIcon("share", __iconNode$5);
13708
13795
 
13709
- const __iconNode$3 = [
13796
+ const __iconNode$4 = [
13710
13797
  [
13711
13798
  "circle",
13712
13799
  {
@@ -13735,9 +13822,9 @@ const __iconNode$3 = [
13735
13822
  }
13736
13823
  ]
13737
13824
  ];
13738
- const Target = createLucideIcon("target", __iconNode$3);
13825
+ const Target = createLucideIcon("target", __iconNode$4);
13739
13826
 
13740
- const __iconNode$2 = [
13827
+ const __iconNode$3 = [
13741
13828
  [
13742
13829
  "line",
13743
13830
  {
@@ -13768,7 +13855,67 @@ const __iconNode$2 = [
13768
13855
  }
13769
13856
  ]
13770
13857
  ];
13771
- const Timer = createLucideIcon("timer", __iconNode$2);
13858
+ const Timer = createLucideIcon("timer", __iconNode$3);
13859
+
13860
+ const __iconNode$2 = [
13861
+ [
13862
+ "path",
13863
+ {
13864
+ d: "M12 22v-6",
13865
+ key: "6o8u61"
13866
+ }
13867
+ ],
13868
+ [
13869
+ "path",
13870
+ {
13871
+ d: "M12 8V2",
13872
+ key: "1wkif3"
13873
+ }
13874
+ ],
13875
+ [
13876
+ "path",
13877
+ {
13878
+ d: "M4 12H2",
13879
+ key: "rhcxmi"
13880
+ }
13881
+ ],
13882
+ [
13883
+ "path",
13884
+ {
13885
+ d: "M10 12H8",
13886
+ key: "s88cx1"
13887
+ }
13888
+ ],
13889
+ [
13890
+ "path",
13891
+ {
13892
+ d: "M16 12h-2",
13893
+ key: "10asgb"
13894
+ }
13895
+ ],
13896
+ [
13897
+ "path",
13898
+ {
13899
+ d: "M22 12h-2",
13900
+ key: "14jgyd"
13901
+ }
13902
+ ],
13903
+ [
13904
+ "path",
13905
+ {
13906
+ d: "m15 19-3 3-3-3",
13907
+ key: "11eu04"
13908
+ }
13909
+ ],
13910
+ [
13911
+ "path",
13912
+ {
13913
+ d: "m15 5-3-3-3 3",
13914
+ key: "itvq4r"
13915
+ }
13916
+ ]
13917
+ ];
13918
+ const UnfoldVertical = createLucideIcon("unfold-vertical", __iconNode$2);
13772
13919
 
13773
13920
  const __iconNode$1 = [
13774
13921
  [
@@ -15953,19 +16100,18 @@ const useComponentTheme = (themeProp)=>{
15953
16100
  return themeProp || contextTheme;
15954
16101
  };
15955
16102
 
15956
- const Edge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style = {}, markerEnd, bidirectional = false, data, clientToSvgCoords, svgRef })=>{
16103
+ const Edge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, animated = false, style = {}, markerEnd, bidirectional = false, data, clientToSvgCoords, svgRef })=>{
15957
16104
  const [isHovered, setIsHovered] = useState(false);
15958
16105
  const { theme } = useTheme$1();
15959
16106
  const themeColors = theme.colors;
15960
- // Function to determine stroke color based on edge status and theme
15961
16107
  const getStrokeColor = ()=>{
15962
16108
  const status = data?.details?.status;
15963
- data?.details?.output;
15964
- // Check for error indicators
15965
- const hasError = status === "Failed";
15966
- if (hasError) {
16109
+ if (status === "Failed") {
15967
16110
  return themeColors.destructive;
15968
16111
  }
16112
+ if (animated) {
16113
+ return themeColors.primary;
16114
+ }
15969
16115
  return themeColors.mutedForeground;
15970
16116
  };
15971
16117
  const [edgePath] = useMemo(()=>{
@@ -20853,6 +20999,25 @@ function cn(...inputs) {
20853
20999
  }
20854
21000
  return text.substring(0, maxLength - 3) + "...";
20855
21001
  }
21002
+ /**
21003
+ * True for plain object literals (own enumerable keys, not arrays, Date, etc.).
21004
+ */ function isPlainObject(value) {
21005
+ return value !== null && typeof value === "object" && !Array.isArray(value) && value.constructor === Object;
21006
+ }
21007
+ /**
21008
+ * Escapes `\` and `.` in a segment so dot-delimited path keys stay unambiguous (e.g. JSON tree UIs).
21009
+ */ function escapeDotPathSegment(segment) {
21010
+ return segment.replace(/\\/g, "\\\\").replace(/\./g, "\\.");
21011
+ }
21012
+ /**
21013
+ * Compact JSON-like string for tree / debug views: strings use JSON quoting; null and undefined as words.
21014
+ */ function formatJsonTreePrimitive(value) {
21015
+ if (value === null) return "null";
21016
+ if (value === undefined) return "undefined";
21017
+ if (typeof value === "string") return JSON.stringify(value);
21018
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
21019
+ return String(value);
21020
+ }
20856
21021
  /**
20857
21022
  * Styled-components utility for conditional styling
20858
21023
  * @param condition - The condition to check
@@ -21128,500 +21293,6 @@ const AppleIcon = ({ width = "1.5rem", height = "1.5rem" })=>/*#__PURE__*/ React
21128
21293
  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"
21129
21294
  }));
21130
21295
 
21131
- const TooltipContainer = styled.div`
21132
- position: relative;
21133
- display: inline-block;
21134
- `;
21135
- const TooltipContent = styled.div`
21136
- position: absolute;
21137
- z-index: 1000;
21138
- padding: 8px 12px;
21139
- font-weight: 400;
21140
- background-color: ${({ themeColors })=>themeColors.popover};
21141
- color: ${({ themeColors })=>themeColors.popoverForeground};
21142
- border: 1px solid ${({ themeColors })=>themeColors.border};
21143
- border-radius: 6px;
21144
- font-size: 12px;
21145
- line-height: 1.4;
21146
- white-space: nowrap;
21147
- box-shadow:
21148
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
21149
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
21150
- opacity: ${({ isVisible })=>isVisible ? 1 : 0};
21151
- visibility: ${({ isVisible })=>isVisible ? "visible" : "hidden"};
21152
- transition:
21153
- opacity 0.15s ease-in-out,
21154
- visibility 0.15s ease-in-out;
21155
- pointer-events: none;
21156
-
21157
- /* Arrow */
21158
- &::before {
21159
- content: "";
21160
- position: absolute;
21161
- width: 0;
21162
- height: 0;
21163
- border: 4px solid transparent;
21164
- }
21165
-
21166
- /* Placement-specific positioning and arrow */
21167
- ${({ placement, themeColors })=>{
21168
- switch(placement){
21169
- case "top":
21170
- return `
21171
- bottom: 100%;
21172
- left: 50%;
21173
- transform: translateX(-50%);
21174
- margin-bottom: 8px;
21175
- &::before {
21176
- top: 100%;
21177
- left: 50%;
21178
- transform: translateX(-50%);
21179
- border-top-color: ${themeColors.border};
21180
- }
21181
- &::after {
21182
- content: "";
21183
- position: absolute;
21184
- top: 100%;
21185
- left: 50%;
21186
- transform: translateX(-50%);
21187
- width: 0;
21188
- height: 0;
21189
- border: 3px solid transparent;
21190
- border-top-color: ${themeColors.popover};
21191
- }
21192
- `;
21193
- case "bottom":
21194
- return `
21195
- top: 100%;
21196
- left: 50%;
21197
- transform: translateX(-50%);
21198
- margin-top: 8px;
21199
- &::before {
21200
- bottom: 100%;
21201
- left: 50%;
21202
- transform: translateX(-50%);
21203
- border-bottom-color: ${themeColors.border};
21204
- }
21205
- &::after {
21206
- content: "";
21207
- position: absolute;
21208
- bottom: 100%;
21209
- left: 50%;
21210
- transform: translateX(-50%);
21211
- width: 0;
21212
- height: 0;
21213
- border: 3px solid transparent;
21214
- border-bottom-color: ${themeColors.popover};
21215
- }
21216
- `;
21217
- case "left":
21218
- return `
21219
- right: 100%;
21220
- top: 50%;
21221
- transform: translateY(-50%);
21222
- margin-right: 8px;
21223
- &::before {
21224
- left: 100%;
21225
- top: 50%;
21226
- transform: translateY(-50%);
21227
- border-left-color: ${themeColors.border};
21228
- }
21229
- &::after {
21230
- content: "";
21231
- position: absolute;
21232
- left: 100%;
21233
- top: 50%;
21234
- transform: translateY(-50%);
21235
- width: 0;
21236
- height: 0;
21237
- border: 3px solid transparent;
21238
- border-left-color: ${themeColors.popover};
21239
- }
21240
- `;
21241
- case "right":
21242
- return `
21243
- left: 100%;
21244
- top: 50%;
21245
- transform: translateY(-50%);
21246
- margin-left: 8px;
21247
- &::before {
21248
- right: 100%;
21249
- top: 50%;
21250
- transform: translateY(-50%);
21251
- border-right-color: ${themeColors.border};
21252
- }
21253
- &::after {
21254
- content: "";
21255
- position: absolute;
21256
- right: 100%;
21257
- top: 50%;
21258
- transform: translateY(-50%);
21259
- width: 0;
21260
- height: 0;
21261
- border: 3px solid transparent;
21262
- border-right-color: ${themeColors.popover};
21263
- }
21264
- `;
21265
- case "topLeft":
21266
- return `
21267
- bottom: 100%;
21268
- right: 0;
21269
- margin-bottom: 8px;
21270
- &::before {
21271
- top: 100%;
21272
- right: 8px;
21273
- border-top-color: ${themeColors.border};
21274
- }
21275
- &::after {
21276
- content: "";
21277
- position: absolute;
21278
- top: 100%;
21279
- right: 8px;
21280
- width: 0;
21281
- height: 0;
21282
- border: 3px solid transparent;
21283
- border-top-color: ${themeColors.popover};
21284
- }
21285
- `;
21286
- case "topRight":
21287
- return `
21288
- bottom: 100%;
21289
- left: 0;
21290
- margin-bottom: 8px;
21291
- &::before {
21292
- top: 100%;
21293
- left: 8px;
21294
- border-top-color: ${themeColors.border};
21295
- }
21296
- &::after {
21297
- content: "";
21298
- position: absolute;
21299
- top: 100%;
21300
- left: 8px;
21301
- width: 0;
21302
- height: 0;
21303
- border: 3px solid transparent;
21304
- border-top-color: ${themeColors.popover};
21305
- }
21306
- `;
21307
- case "bottomLeft":
21308
- return `
21309
- top: 100%;
21310
- right: 0;
21311
- margin-top: 8px;
21312
- &::before {
21313
- bottom: 100%;
21314
- right: 8px;
21315
- border-bottom-color: ${themeColors.border};
21316
- }
21317
- &::after {
21318
- content: "";
21319
- position: absolute;
21320
- bottom: 100%;
21321
- right: 8px;
21322
- width: 0;
21323
- height: 0;
21324
- border: 3px solid transparent;
21325
- border-bottom-color: ${themeColors.popover};
21326
- }
21327
- `;
21328
- case "bottomRight":
21329
- return `
21330
- top: 100%;
21331
- left: 0;
21332
- margin-top: 8px;
21333
- &::before {
21334
- bottom: 100%;
21335
- left: 8px;
21336
- border-bottom-color: ${themeColors.border};
21337
- }
21338
- &::after {
21339
- content: "";
21340
- position: absolute;
21341
- bottom: 100%;
21342
- left: 8px;
21343
- width: 0;
21344
- height: 0;
21345
- border: 3px solid transparent;
21346
- border-bottom-color: ${themeColors.popover};
21347
- }
21348
- `;
21349
- case "leftTop":
21350
- return `
21351
- right: 100%;
21352
- bottom: 0;
21353
- margin-right: 8px;
21354
- &::before {
21355
- left: 100%;
21356
- bottom: 8px;
21357
- border-left-color: ${themeColors.border};
21358
- }
21359
- &::after {
21360
- content: "";
21361
- position: absolute;
21362
- left: 100%;
21363
- bottom: 8px;
21364
- width: 0;
21365
- height: 0;
21366
- border: 3px solid transparent;
21367
- border-left-color: ${themeColors.popover};
21368
- }
21369
- `;
21370
- case "leftBottom":
21371
- return `
21372
- right: 100%;
21373
- top: 0;
21374
- margin-right: 8px;
21375
- &::before {
21376
- left: 100%;
21377
- top: 8px;
21378
- border-left-color: ${themeColors.border};
21379
- }
21380
- &::after {
21381
- content: "";
21382
- position: absolute;
21383
- left: 100%;
21384
- top: 8px;
21385
- width: 0;
21386
- height: 0;
21387
- border: 3px solid transparent;
21388
- border-left-color: ${themeColors.popover};
21389
- }
21390
- `;
21391
- case "rightTop":
21392
- return `
21393
- left: 100%;
21394
- bottom: 0;
21395
- margin-left: 8px;
21396
- &::before {
21397
- right: 100%;
21398
- bottom: 8px;
21399
- border-right-color: ${themeColors.border};
21400
- }
21401
- &::after {
21402
- content: "";
21403
- position: absolute;
21404
- right: 100%;
21405
- bottom: 8px;
21406
- width: 0;
21407
- height: 0;
21408
- border: 3px solid transparent;
21409
- border-right-color: ${themeColors.popover};
21410
- }
21411
- `;
21412
- case "rightBottom":
21413
- return `
21414
- left: 100%;
21415
- top: 0;
21416
- margin-left: 8px;
21417
- &::before {
21418
- right: 100%;
21419
- top: 8px;
21420
- border-right-color: ${themeColors.border};
21421
- }
21422
- &::after {
21423
- content: "";
21424
- position: absolute;
21425
- right: 100%;
21426
- top: 8px;
21427
- width: 0;
21428
- height: 0;
21429
- border: 3px solid transparent;
21430
- border-right-color: ${themeColors.popover};
21431
- }
21432
- `;
21433
- default:
21434
- return `
21435
- bottom: 100%;
21436
- left: 50%;
21437
- transform: translateX(-50%);
21438
- margin-bottom: 8px;
21439
- &::before {
21440
- top: 100%;
21441
- left: 50%;
21442
- transform: translateX(-50%);
21443
- border-top-color: ${themeColors.border};
21444
- }
21445
- &::after {
21446
- content: "";
21447
- position: absolute;
21448
- top: 100%;
21449
- left: 50%;
21450
- transform: translateX(-50%);
21451
- width: 0;
21452
- height: 0;
21453
- border: 3px solid transparent;
21454
- border-top-color: ${themeColors.popover};
21455
- }
21456
- `;
21457
- }
21458
- }}
21459
- `;
21460
- const Tooltip$1 = ({ children, content, placement = "top", delay = 300 })=>{
21461
- const { theme } = useTheme$1();
21462
- const [isVisible, setIsVisible] = React.useState(false);
21463
- const timeoutRef = React.useRef();
21464
- const showTooltip = ()=>{
21465
- if (timeoutRef.current) {
21466
- clearTimeout(timeoutRef.current);
21467
- }
21468
- timeoutRef.current = setTimeout(()=>{
21469
- setIsVisible(true);
21470
- }, delay);
21471
- };
21472
- const hideTooltip = ()=>{
21473
- if (timeoutRef.current) {
21474
- clearTimeout(timeoutRef.current);
21475
- }
21476
- setIsVisible(false);
21477
- };
21478
- React.useEffect(()=>{
21479
- return ()=>{
21480
- if (timeoutRef.current) {
21481
- clearTimeout(timeoutRef.current);
21482
- }
21483
- };
21484
- }, []);
21485
- return /*#__PURE__*/ React.createElement(TooltipContainer, {
21486
- onMouseEnter: showTooltip,
21487
- onMouseLeave: hideTooltip,
21488
- onFocus: showTooltip,
21489
- onBlur: hideTooltip
21490
- }, children, /*#__PURE__*/ React.createElement(TooltipContent, {
21491
- isVisible: isVisible,
21492
- placement: placement,
21493
- themeColors: theme.colors,
21494
- role: "tooltip"
21495
- }, content));
21496
- };
21497
-
21498
- const BadgeContainer$3 = styled.div`
21499
- display: inline-flex;
21500
- align-items: center;
21501
- border-radius: 9999px;
21502
- border: 1px solid transparent;
21503
- padding: 0.125rem 0.625rem;
21504
- font-size: 0.75rem;
21505
- font-weight: 600;
21506
- transition: colors 0.2s ease-in-out;
21507
- outline: none;
21508
-
21509
- &:focus {
21510
- outline: none;
21511
- box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
21512
- }
21513
-
21514
- ${({ variant, themeColors })=>{
21515
- switch(variant){
21516
- case "default":
21517
- return `
21518
- background-color: ${themeColors.primary};
21519
- color: ${themeColors.primaryForeground};
21520
- &:hover {
21521
- background-color: ${themeColors.primary};
21522
- opacity: 0.9;
21523
- }
21524
- `;
21525
- case "secondary":
21526
- return `
21527
- background-color: ${themeColors.secondary};
21528
- color: ${themeColors.secondaryForeground};
21529
- &:hover {
21530
- background-color: ${themeColors.muted};
21531
- }
21532
- `;
21533
- case "destructive":
21534
- return `
21535
- background-color: ${themeColors.destructive};
21536
- color: ${themeColors.destructiveForeground};
21537
- &:hover {
21538
- background-color: ${themeColors.destructive};
21539
- opacity: 0.9;
21540
- }
21541
- `;
21542
- case "outline":
21543
- return `
21544
- background-color: transparent;
21545
- color: ${themeColors.cardForeground};
21546
- border-color: ${themeColors.border};
21547
- `;
21548
- case "cost":
21549
- return `
21550
- background-color: ${themeColors.secondary};
21551
- color: ${themeColors.secondaryForeground};
21552
- &:hover {
21553
- background-color: ${themeColors.muted};
21554
- }
21555
- `;
21556
- case "gray":
21557
- return `
21558
- background-color: ${themeColors.secondary};
21559
- color: ${themeColors.secondaryForeground};
21560
- &:hover {
21561
- background-color: ${themeColors.muted};
21562
- }
21563
- `;
21564
- case "latency":
21565
- return `
21566
- background-color: ${themeColors.secondary};
21567
- color: ${themeColors.secondaryForeground};
21568
- &:hover {
21569
- background-color: ${themeColors.muted};
21570
- }
21571
- `;
21572
- case "latencyLow":
21573
- return `
21574
- background-color: ${themeColors.secondary};
21575
- color: ${themeColors.secondaryForeground};
21576
- &:hover {
21577
- background-color: ${themeColors.muted};
21578
- }
21579
- `;
21580
- case "latencyMedium":
21581
- return `
21582
- background-color: ${themeColors.secondary};
21583
- color: ${themeColors.secondaryForeground};
21584
- &:hover {
21585
- background-color: ${themeColors.muted};
21586
- }
21587
- `;
21588
- case "latencyHigh":
21589
- return `
21590
- background-color: ${themeColors.destructive};
21591
- color: ${themeColors.destructiveForeground};
21592
- &:hover {
21593
- background-color: ${themeColors.destructive};
21594
- opacity: 0.9;
21595
- }
21596
- `;
21597
- default:
21598
- return `
21599
- background-color: ${themeColors.primary};
21600
- color: ${themeColors.primaryForeground};
21601
- &:hover {
21602
- background-color: ${themeColors.primary};
21603
- opacity: 0.9;
21604
- }
21605
- `;
21606
- }
21607
- }}
21608
- `;
21609
- const Badge = ({ variant = "default", children, title, placement = "top" })=>{
21610
- const { theme } = useTheme$1();
21611
- const themeColors = theme.colors;
21612
- const badgeContent = /*#__PURE__*/ React.createElement(BadgeContainer$3, {
21613
- variant: variant,
21614
- themeColors: themeColors
21615
- }, children);
21616
- if (title) {
21617
- return /*#__PURE__*/ React.createElement(Tooltip$1, {
21618
- content: title,
21619
- placement: placement
21620
- }, badgeContent);
21621
- }
21622
- return badgeContent;
21623
- };
21624
-
21625
21296
  function noop$2() {}
21626
21297
  const { resetWarned: rcResetWarned } = warning$2;
21627
21298
  let deprecatedWarnList = null;
@@ -23648,7 +23319,7 @@ const genActionStyle = (token)=>{
23648
23319
  }
23649
23320
  };
23650
23321
  };
23651
- const prepareComponentToken$n = (token)=>{
23322
+ const prepareComponentToken$m = (token)=>{
23652
23323
  const paddingHorizontal = 12; // Fixed value here.
23653
23324
  return {
23654
23325
  withDescriptionIconSize: token.fontSizeHeading3,
@@ -23656,11 +23327,11 @@ const prepareComponentToken$n = (token)=>{
23656
23327
  withDescriptionPadding: `${token.paddingMD}px ${token.paddingContentHorizontalLG}px`
23657
23328
  };
23658
23329
  };
23659
- var useStyle$u = genStyleHooks('Alert', (token)=>[
23330
+ var useStyle$t = genStyleHooks('Alert', (token)=>[
23660
23331
  genBaseStyle$6(token),
23661
23332
  genTypeStyle(token),
23662
23333
  genActionStyle(token)
23663
- ], prepareComponentToken$n);
23334
+ ], prepareComponentToken$m);
23664
23335
 
23665
23336
  const IconNode = (props)=>{
23666
23337
  const { icon, type, className, style, successIcon, infoIcon, warningIcon, errorIcon } = props;
@@ -23712,7 +23383,7 @@ const Alert$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23712
23383
  }));
23713
23384
  const { getPrefixCls, direction, closable: contextClosable, closeIcon: contextCloseIcon, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, successIcon, infoIcon, warningIcon, errorIcon } = useComponentConfig('alert');
23714
23385
  const prefixCls = getPrefixCls('alert', customizePrefixCls);
23715
- const [hashId, cssVarCls] = useStyle$u(prefixCls);
23386
+ const [hashId, cssVarCls] = useStyle$t(prefixCls);
23716
23387
  const { onClose: closableOnClose, afterClose: closableAfterClose } = closable && typeof closable === 'object' ? closable : {};
23717
23388
  const handleClose = (e)=>{
23718
23389
  setClosed(true);
@@ -24752,19 +24423,19 @@ const genMessageStyle = (token)=>{
24752
24423
  }
24753
24424
  ];
24754
24425
  };
24755
- const prepareComponentToken$m = (token)=>({
24426
+ const prepareComponentToken$l = (token)=>({
24756
24427
  zIndexPopup: token.zIndexPopupBase + CONTAINER_MAX_OFFSET + 10,
24757
24428
  contentBg: token.colorBgElevated,
24758
24429
  contentPadding: `${(token.controlHeightLG - token.fontSize * token.lineHeight) / 2}px ${token.paddingSM}px`
24759
24430
  });
24760
24431
  // ============================== Export ==============================
24761
- var useStyle$t = genStyleHooks('Message', (token)=>{
24432
+ var useStyle$s = genStyleHooks('Message', (token)=>{
24762
24433
  // Gen-style functions here
24763
24434
  const combinedToken = mergeToken(token, {
24764
24435
  height: 150
24765
24436
  });
24766
24437
  return genMessageStyle(combinedToken);
24767
- }, prepareComponentToken$m);
24438
+ }, prepareComponentToken$l);
24768
24439
 
24769
24440
  const TypeIcon = {
24770
24441
  info: /*#__PURE__*/ React.createElement(InfoCircleFilled, null),
@@ -24798,7 +24469,7 @@ const PureContent = (props)=>{
24798
24469
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('message');
24799
24470
  const prefixCls = staticPrefixCls || getPrefixCls('message');
24800
24471
  const rootCls = useCSSVarCls(prefixCls);
24801
- const [hashId, cssVarCls] = useStyle$t(prefixCls, rootCls);
24472
+ const [hashId, cssVarCls] = useStyle$s(prefixCls, rootCls);
24802
24473
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
24803
24474
  contextClassNames,
24804
24475
  messageClassNames
@@ -24853,7 +24524,7 @@ const DEFAULT_OFFSET = 8;
24853
24524
  const DEFAULT_DURATION = 3;
24854
24525
  const Wrapper = ({ children, prefixCls })=>{
24855
24526
  const rootCls = useCSSVarCls(prefixCls);
24856
- const [hashId, cssVarCls] = useStyle$t(prefixCls, rootCls);
24527
+ const [hashId, cssVarCls] = useStyle$s(prefixCls, rootCls);
24857
24528
  return /*#__PURE__*/ React.createElement(NotificationProvider, {
24858
24529
  classNames: {
24859
24530
  list: clsx(hashId, cssVarCls, rootCls)
@@ -25131,7 +24802,7 @@ const genWaveStyle = (token)=>{
25131
24802
  }
25132
24803
  };
25133
24804
  };
25134
- var useStyle$s = genComponentStyleHook('Wave', genWaveStyle);
24805
+ var useStyle$r = genComponentStyleHook('Wave', genWaveStyle);
25135
24806
 
25136
24807
  const TARGET_CLS = `${defaultPrefixCls}-wave-target`;
25137
24808
 
@@ -25306,7 +24977,7 @@ const Wave = (props)=>{
25306
24977
  const containerRef = useRef(null);
25307
24978
  // ============================== Style ===============================
25308
24979
  const prefixCls = getPrefixCls('wave');
25309
- const hashId = useStyle$s(prefixCls);
24980
+ const hashId = useStyle$r(prefixCls);
25310
24981
  // =============================== Wave ===============================
25311
24982
  const showWave = useWave(containerRef, clsx(prefixCls, hashId), component, colorSource);
25312
24983
  // ============================== Effect ==============================
@@ -25384,7 +25055,7 @@ const genSpaceCompactStyle = (token)=>{
25384
25055
  };
25385
25056
  };
25386
25057
  // ============================== Export ==============================
25387
- var useStyle$r = genStyleHooks([
25058
+ var useStyle$q = genStyleHooks([
25388
25059
  'Space',
25389
25060
  'Compact'
25390
25061
  ], genSpaceCompactStyle, ()=>({}), {
@@ -25443,7 +25114,7 @@ const Compact$1 = (props)=>{
25443
25114
  const [mergedOrientation, mergedVertical] = useOrientation(orientation, vertical, direction);
25444
25115
  const mergedSize = useSize((ctx)=>size ?? ctx);
25445
25116
  const prefixCls = getPrefixCls('space-compact', customizePrefixCls);
25446
- const [hashId] = useStyle$r(prefixCls);
25117
+ const [hashId] = useStyle$q(prefixCls);
25447
25118
  const clx = clsx(prefixCls, hashId, {
25448
25119
  [`${prefixCls}-rtl`]: directionConfig === 'rtl',
25449
25120
  [`${prefixCls}-block`]: block,
@@ -26658,7 +26329,7 @@ const genGhostStyle = (token)=>{
26658
26329
  }
26659
26330
  };
26660
26331
  };
26661
- const prepareComponentToken$l = (token)=>({
26332
+ const prepareComponentToken$k = (token)=>({
26662
26333
  headerPadding: `${token.paddingSM}px ${token.padding}px`,
26663
26334
  headerBg: token.colorFillAlter,
26664
26335
  contentPadding: `${token.padding}px 16px`,
@@ -26667,7 +26338,7 @@ const prepareComponentToken$l = (token)=>({
26667
26338
  borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
26668
26339
  borderlessContentBg: 'transparent'
26669
26340
  });
26670
- var useStyle$q = genStyleHooks('Collapse', (token)=>{
26341
+ var useStyle$p = genStyleHooks('Collapse', (token)=>{
26671
26342
  const collapseToken = mergeToken(token, {
26672
26343
  collapseHeaderPaddingSM: `${unit(token.paddingXS)} ${unit(token.paddingSM)}`,
26673
26344
  collapseHeaderPaddingLG: `${unit(token.padding)} ${unit(token.paddingLG)}`,
@@ -26680,7 +26351,7 @@ var useStyle$q = genStyleHooks('Collapse', (token)=>{
26680
26351
  genArrowStyle(collapseToken),
26681
26352
  genCollapseMotion(collapseToken)
26682
26353
  ];
26683
- }, prepareComponentToken$l);
26354
+ }, prepareComponentToken$k);
26684
26355
 
26685
26356
  const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
26686
26357
  const { getPrefixCls, direction, expandIcon: contextExpandIcon, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('collapse');
@@ -26688,7 +26359,7 @@ const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
26688
26359
  const mergedSize = useSize((ctx)=>customizeSize ?? ctx ?? 'middle');
26689
26360
  const prefixCls = getPrefixCls('collapse', customizePrefixCls);
26690
26361
  const rootPrefixCls = getPrefixCls();
26691
- const [hashId, cssVarCls] = useStyle$q(prefixCls);
26362
+ const [hashId, cssVarCls] = useStyle$p(prefixCls);
26692
26363
  const mergedPlacement = expandIconPlacement ?? expandIconPosition ?? 'start';
26693
26364
  // =========== Merged Props for Semantic ===========
26694
26365
  const mergedProps = {
@@ -26811,7 +26482,7 @@ const prepareToken$2 = (token)=>{
26811
26482
  });
26812
26483
  return buttonToken;
26813
26484
  };
26814
- const prepareComponentToken$k = (token)=>{
26485
+ const prepareComponentToken$j = (token)=>{
26815
26486
  const contentFontSize = token.contentFontSize ?? token.fontSize;
26816
26487
  const contentFontSizeSM = token.contentFontSizeSM ?? token.fontSize;
26817
26488
  const contentFontSizeLG = token.contentFontSizeLG ?? token.fontSizeLG;
@@ -27321,7 +26992,7 @@ const genBlockButtonStyle = (token)=>{
27321
26992
  };
27322
26993
  };
27323
26994
  // ============================== Export ==============================
27324
- var useStyle$p = genStyleHooks('Button', (token)=>{
26995
+ var useStyle$o = genStyleHooks('Button', (token)=>{
27325
26996
  const buttonToken = prepareToken$2(token);
27326
26997
  return [
27327
26998
  // Shared
@@ -27337,7 +27008,7 @@ var useStyle$p = genStyleHooks('Button', (token)=>{
27337
27008
  // Button Group
27338
27009
  genGroupStyle$1(buttonToken)
27339
27010
  ];
27340
- }, prepareComponentToken$k, {
27011
+ }, prepareComponentToken$j, {
27341
27012
  unitless: {
27342
27013
  fontWeight: true,
27343
27014
  contentLineHeight: true,
@@ -27521,7 +27192,7 @@ var Compact = genSubStyleComponent([
27521
27192
  genCompactItemVerticalStyle(buttonToken),
27522
27193
  genButtonCompactStyle(buttonToken)
27523
27194
  ];
27524
- }, prepareComponentToken$k);
27195
+ }, prepareComponentToken$j);
27525
27196
 
27526
27197
  function getLoadingConfig(loading) {
27527
27198
  if (typeof loading === 'object' && loading) {
@@ -27629,7 +27300,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
27629
27300
  const mergedColorText = isDanger ? 'dangerous' : mergedColor;
27630
27301
  const mergedInsertSpace = autoInsertSpace ?? contextAutoInsertSpace ?? true;
27631
27302
  const prefixCls = getPrefixCls('btn', customizePrefixCls);
27632
- const [hashId, cssVarCls] = useStyle$p(prefixCls);
27303
+ const [hashId, cssVarCls] = useStyle$o(prefixCls);
27633
27304
  const disabled = useContext(DisabledContext);
27634
27305
  const mergedDisabled = customDisabled ?? disabled;
27635
27306
  const groupSize = useContext(GroupSizeContext);
@@ -28199,7 +27870,7 @@ const genBaseStyle$4 = (token)=>{
28199
27870
  };
28200
27871
  };
28201
27872
  // ============================== Export ==============================
28202
- const prepareComponentToken$j = (token)=>{
27873
+ const prepareComponentToken$i = (token)=>{
28203
27874
  const { colorFillContent, colorFill } = token;
28204
27875
  const gradientFromColor = colorFillContent;
28205
27876
  const gradientToColor = colorFill;
@@ -28214,7 +27885,7 @@ const prepareComponentToken$j = (token)=>{
28214
27885
  paragraphLiHeight: token.controlHeight / 2
28215
27886
  };
28216
27887
  };
28217
- var useStyle$o = genStyleHooks('Skeleton', (token)=>{
27888
+ var useStyle$n = genStyleHooks('Skeleton', (token)=>{
28218
27889
  const { componentCls, calc } = token;
28219
27890
  const skeletonToken = mergeToken(token, {
28220
27891
  skeletonAvatarCls: `${componentCls}-avatar`,
@@ -28231,7 +27902,7 @@ var useStyle$o = genStyleHooks('Skeleton', (token)=>{
28231
27902
  skeletonLoadingMotionDuration: '1.4s'
28232
27903
  });
28233
27904
  return genBaseStyle$4(skeletonToken);
28234
- }, prepareComponentToken$j, {
27905
+ }, prepareComponentToken$i, {
28235
27906
  deprecatedTokens: [
28236
27907
  [
28237
27908
  'color',
@@ -28248,7 +27919,7 @@ const SkeletonAvatar = (props)=>{
28248
27919
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, active, style, styles, shape = 'circle', size = 'default', ...rest } = props;
28249
27920
  const { getPrefixCls } = React.useContext(ConfigContext);
28250
27921
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28251
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27922
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28252
27923
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28253
27924
  [`${prefixCls}-active`]: active
28254
27925
  }, classNames?.root, className, rootClassName, hashId, cssVarCls);
@@ -28272,7 +27943,7 @@ const SkeletonButton = (props)=>{
28272
27943
  const { prefixCls: customizePrefixCls, className, rootClassName, classNames, active, style, styles, block = false, size = 'default', ...rest } = props;
28273
27944
  const { getPrefixCls } = React.useContext(ConfigContext);
28274
27945
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28275
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27946
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28276
27947
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28277
27948
  [`${prefixCls}-active`]: active,
28278
27949
  [`${prefixCls}-block`]: block
@@ -28296,7 +27967,7 @@ const SkeletonNode = (props)=>{
28296
27967
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, internalClassName, style, styles, active, children } = props;
28297
27968
  const { getPrefixCls } = React.useContext(ConfigContext);
28298
27969
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28299
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
27970
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28300
27971
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28301
27972
  [`${prefixCls}-active`]: active
28302
27973
  }, hashId, classNames?.root, className, rootClassName, cssVarCls);
@@ -28332,7 +28003,7 @@ const SkeletonInput = (props)=>{
28332
28003
  const { prefixCls: customizePrefixCls, className, classNames, rootClassName, active, block, style, styles, size = 'default', ...rest } = props;
28333
28004
  const { getPrefixCls } = React.useContext(ConfigContext);
28334
28005
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28335
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
28006
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28336
28007
  const cls = clsx(prefixCls, `${prefixCls}-element`, {
28337
28008
  [`${prefixCls}-active`]: active,
28338
28009
  [`${prefixCls}-block`]: block
@@ -28440,7 +28111,7 @@ const Skeleton = (props)=>{
28440
28111
  const { prefixCls: customizePrefixCls, loading, className, rootClassName, classNames, style, styles, children, avatar = false, title = true, paragraph = true, active, round } = props;
28441
28112
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('skeleton');
28442
28113
  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
28443
- const [hashId, cssVarCls] = useStyle$o(prefixCls);
28114
+ const [hashId, cssVarCls] = useStyle$n(prefixCls);
28444
28115
  const mergedProps = {
28445
28116
  ...props,
28446
28117
  avatar,
@@ -28966,7 +28637,7 @@ const genSharedEmptyStyle = (token)=>{
28966
28637
  };
28967
28638
  };
28968
28639
  // ============================== Export ==============================
28969
- var useStyle$n = genStyleHooks('Empty', (token)=>{
28640
+ var useStyle$m = genStyleHooks('Empty', (token)=>{
28970
28641
  const { componentCls, controlHeightLG, calc } = token;
28971
28642
  const emptyToken = mergeToken(token, {
28972
28643
  emptyImgCls: `${componentCls}-img`,
@@ -28983,7 +28654,7 @@ const Empty = (props)=>{
28983
28654
  const { className, rootClassName, prefixCls: customizePrefixCls, image, description, children, imageStyle, style, classNames, styles, ...restProps } = props;
28984
28655
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
28985
28656
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
28986
- const [hashId, cssVarCls] = useStyle$n(prefixCls);
28657
+ const [hashId, cssVarCls] = useStyle$m(prefixCls);
28987
28658
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
28988
28659
  contextClassNames,
28989
28660
  classNames
@@ -29775,7 +29446,7 @@ const genSelectInputStyle = (token)=>{
29775
29446
  };
29776
29447
  };
29777
29448
 
29778
- const prepareComponentToken$i = (token)=>{
29449
+ const prepareComponentToken$h = (token)=>{
29779
29450
  const { fontSize, lineHeight, lineWidth, controlHeight, controlHeightSM, controlHeightLG, paddingXXS, controlPaddingHorizontal, zIndexPopupBase, colorText, fontWeightStrong, controlItemBgActive, controlItemBgHover, colorBgContainer, colorFillSecondary, colorBgContainerDisabled, colorTextDisabled, colorPrimaryHover, colorPrimary, controlOutline } = token;
29780
29451
  // Item height default use `controlHeight - 2 * paddingXXS`,
29781
29452
  // but some case `paddingXXS=0`.
@@ -29943,7 +29614,7 @@ var useSelectStyle = genStyleHooks('Select', (token, { rootPrefixCls })=>{
29943
29614
  genSelectStyle(selectToken),
29944
29615
  genSelectInputStyle(selectToken)
29945
29616
  ];
29946
- }, prepareComponentToken$i, {
29617
+ }, prepareComponentToken$h, {
29947
29618
  unitless: {
29948
29619
  optionLineHeight: true,
29949
29620
  optionSelectedFontWeight: true
@@ -30261,16 +29932,6 @@ const getResponsiveMap = (token)=>({
30261
29932
  });
30262
29933
  return token;
30263
29934
  };
30264
- const matchScreen = (screens, screenSizes)=>{
30265
- if (!screenSizes) {
30266
- return;
30267
- }
30268
- for (const breakpoint of responsiveArray){
30269
- if (screens[breakpoint] && screenSizes?.[breakpoint] !== undefined) {
30270
- return screenSizes[breakpoint];
30271
- }
30272
- }
30273
- };
30274
29935
  const useResponsiveObserver = ()=>{
30275
29936
  const [, token] = useToken();
30276
29937
  const responsiveMap = getResponsiveMap(validateBreakpoints(token));
@@ -30984,7 +30645,7 @@ const genTooltipStyle = (token)=>{
30984
30645
  ];
30985
30646
  };
30986
30647
  // ============================== Export ==============================
30987
- const prepareComponentToken$h = (token)=>({
30648
+ const prepareComponentToken$g = (token)=>({
30988
30649
  zIndexPopup: token.zIndexPopupBase + 70,
30989
30650
  maxWidth: 250,
30990
30651
  ...getArrowOffsetToken({
@@ -30995,7 +30656,7 @@ const prepareComponentToken$h = (token)=>({
30995
30656
  borderRadiusOuter: Math.min(token.borderRadiusOuter, 4)
30996
30657
  }))
30997
30658
  });
30998
- var useStyle$m = ((prefixCls, rootCls, injectStyle = true)=>{
30659
+ var useStyle$l = ((prefixCls, rootCls, injectStyle = true)=>{
30999
30660
  const useStyle = genStyleHooks('Tooltip', (token)=>{
31000
30661
  const { borderRadius, colorTextLightSolid, colorBgSpotlight, maxWidth } = token;
31001
30662
  const TooltipToken = mergeToken(token, {
@@ -31009,7 +30670,7 @@ var useStyle$m = ((prefixCls, rootCls, injectStyle = true)=>{
31009
30670
  genTooltipStyle(TooltipToken),
31010
30671
  initZoomMotion(token, 'zoom-big-fast')
31011
30672
  ];
31012
- }, prepareComponentToken$h, {
30673
+ }, prepareComponentToken$g, {
31013
30674
  resetStyle: false,
31014
30675
  // Popover use Tooltip as internal component. We do not need to handle this.
31015
30676
  injectStyle
@@ -31068,7 +30729,7 @@ const parseColor = (rootPrefixCls, prefixCls, color)=>{
31068
30729
  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);
31069
30730
  const rootPrefixCls = getPrefixCls();
31070
30731
  const rootCls = useCSSVarCls(prefixCls);
31071
- const [hashId, cssVarCls] = useStyle$m(prefixCls, rootCls);
30732
+ const [hashId, cssVarCls] = useStyle$l(prefixCls, rootCls);
31072
30733
  // Color
31073
30734
  const colorInfo = parseColor(rootPrefixCls, prefixCls, color);
31074
30735
  const arrowContentStyle = colorInfo.arrowStyle;
@@ -31230,7 +30891,7 @@ const InternalTooltip = /*#__PURE__*/ React.forwardRef((props, ref)=>{
31230
30891
  const childCls = !childProps.className || typeof childProps.className === 'string' ? clsx(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className;
31231
30892
  // Style
31232
30893
  const rootCls = useCSSVarCls(prefixCls);
31233
- const [hashId, cssVarCls] = useStyle$m(prefixCls, rootCls, !injectFromPopover);
30894
+ const [hashId, cssVarCls] = useStyle$l(prefixCls, rootCls, !injectFromPopover);
31234
30895
  // Color
31235
30896
  const colorInfo = parseColor(rootPrefixCls, prefixCls, color);
31236
30897
  const arrowContentStyle = colorInfo.arrowStyle;
@@ -31294,12 +30955,12 @@ const InternalTooltip = /*#__PURE__*/ React.forwardRef((props, ref)=>{
31294
30955
  value: contextZIndex
31295
30956
  }, content);
31296
30957
  });
31297
- const Tooltip = InternalTooltip;
30958
+ const Tooltip$1 = InternalTooltip;
31298
30959
  if (process.env.NODE_ENV !== 'production') {
31299
- Tooltip.displayName = 'Tooltip';
30960
+ Tooltip$1.displayName = 'Tooltip';
31300
30961
  }
31301
- Tooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$2;
31302
- Tooltip.UniqueProvider = UniqueProvider;
30962
+ Tooltip$1._InternalPanelDoNotUseOrYouWillBeFired = PurePanel$2;
30963
+ Tooltip$1.UniqueProvider = UniqueProvider;
31303
30964
 
31304
30965
  const isPrimitive = (value)=>typeof value !== 'object' && typeof value !== 'function' || value === null;
31305
30966
 
@@ -31368,7 +31029,7 @@ const genLayoutStyle = (token)=>{
31368
31029
  }
31369
31030
  };
31370
31031
  };
31371
- const prepareComponentToken$g = (token)=>{
31032
+ const prepareComponentToken$f = (token)=>{
31372
31033
  const { colorBgLayout, controlHeight, controlHeightLG, colorText, controlHeightSM, marginXXS, colorTextLightSolid, colorBgContainer } = token;
31373
31034
  const paddingInline = controlHeightLG * 1.25;
31374
31035
  return {
@@ -31409,7 +31070,7 @@ const DEPRECATED_TOKENS = [
31409
31070
  'triggerBg'
31410
31071
  ]
31411
31072
  ];
31412
- genStyleHooks('Layout', genLayoutStyle, prepareComponentToken$g, {
31073
+ genStyleHooks('Layout', genLayoutStyle, prepareComponentToken$f, {
31413
31074
  deprecatedTokens: DEPRECATED_TOKENS
31414
31075
  });
31415
31076
 
@@ -31503,10 +31164,10 @@ const genSiderStyle = (token)=>{
31503
31164
  }
31504
31165
  };
31505
31166
  };
31506
- var useStyle$l = genStyleHooks([
31167
+ var useStyle$k = genStyleHooks([
31507
31168
  'Layout',
31508
31169
  'Sider'
31509
- ], genSiderStyle, prepareComponentToken$g, {
31170
+ ], genSiderStyle, prepareComponentToken$f, {
31510
31171
  deprecatedTokens: DEPRECATED_TOKENS
31511
31172
  });
31512
31173
 
@@ -31549,7 +31210,7 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
31549
31210
  // =========================== Prefix ===========================
31550
31211
  const { getPrefixCls, direction } = useContext(ConfigContext);
31551
31212
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
31552
- const [hashId, cssVarCls] = useStyle$l(prefixCls);
31213
+ const [hashId, cssVarCls] = useStyle$k(prefixCls);
31553
31214
  // ========================= Responsive =========================
31554
31215
  const responsiveHandlerRef = useRef(null);
31555
31216
  responsiveHandlerRef.current = (mql)=>{
@@ -31744,7 +31405,7 @@ const MenuItem = (props)=>{
31744
31405
  const resolvedClassNames = tooltipConfig.classNames(info);
31745
31406
  return mergeTooltipRootClassName(resolvedClassNames);
31746
31407
  } : mergeTooltipRootClassName(tooltipConfig?.classNames);
31747
- returnNode = /*#__PURE__*/ React.createElement(Tooltip, {
31408
+ returnNode = /*#__PURE__*/ React.createElement(Tooltip$1, {
31748
31409
  ...tooltipProps,
31749
31410
  placement: mergedTooltipPlacement,
31750
31411
  classNames: mergedTooltipClassNames
@@ -32541,7 +32202,7 @@ const getBaseStyle = (token)=>{
32541
32202
  }
32542
32203
  ];
32543
32204
  };
32544
- const prepareComponentToken$f = (token)=>{
32205
+ const prepareComponentToken$e = (token)=>{
32545
32206
  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;
32546
32207
  const activeBarWidth = token.activeBarWidth ?? 0;
32547
32208
  const activeBarBorderWidth = token.activeBarBorderWidth ?? lineWidth;
@@ -32635,7 +32296,7 @@ const prepareComponentToken$f = (token)=>{
32635
32296
  };
32636
32297
  };
32637
32298
  // ============================== Export ==============================
32638
- var useStyle$k = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32299
+ var useStyle$j = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32639
32300
  const useStyle = genStyleHooks('Menu', (token)=>{
32640
32301
  const { colorBgElevated, controlHeightLG, fontSize, darkItemColor, darkDangerItemColor, darkItemBg, darkSubMenuItemBg, darkItemSelectedColor, darkItemSelectedBg, darkDangerItemSelectedBg, darkItemHoverBg, darkGroupTitleColor, darkItemHoverColor, darkItemDisabledColor, darkDangerItemHoverColor, darkDangerItemSelectedColor, darkDangerItemActiveBg, popupBg, darkPopupBg } = token;
32641
32302
  const menuArrowSize = token.calc(fontSize).div(7).mul(5).equal();
@@ -32695,7 +32356,7 @@ var useStyle$k = ((prefixCls, rootCls = prefixCls, injectStyle = true)=>{
32695
32356
  initSlideMotion(menuToken, 'slide-down'),
32696
32357
  initZoomMotion(menuToken, 'zoom-big')
32697
32358
  ];
32698
- }, prepareComponentToken$f, {
32359
+ }, prepareComponentToken$e, {
32699
32360
  deprecatedTokens: [
32700
32361
  [
32701
32362
  'colorGroupTitle',
@@ -32933,7 +32594,7 @@ const InternalMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
32933
32594
  };
32934
32595
  const prefixCls = getPrefixCls('menu', customizePrefixCls || overrideObj.prefixCls);
32935
32596
  const rootCls = useCSSVarCls(prefixCls);
32936
- const [hashId, cssVarCls] = useStyle$k(prefixCls, rootCls, !override);
32597
+ const [hashId, cssVarCls] = useStyle$j(prefixCls, rootCls, !override);
32937
32598
  const menuClassName = clsx(`${prefixCls}-${theme}`, contextClassName, className);
32938
32599
  // ====================== ExpandIcon ========================
32939
32600
  const mergedExpandIcon = React.useMemo(()=>{
@@ -33320,7 +32981,7 @@ const genBaseStyle$2 = (token)=>{
33320
32981
  ];
33321
32982
  };
33322
32983
  // ============================== Export ==============================
33323
- const prepareComponentToken$e = (token)=>({
32984
+ const prepareComponentToken$d = (token)=>({
33324
32985
  zIndexPopup: token.zIndexPopupBase + 50,
33325
32986
  paddingBlock: (token.controlHeight - token.fontSize * token.lineHeight) / 2,
33326
32987
  ...getArrowOffsetToken({
@@ -33329,7 +32990,7 @@ const prepareComponentToken$e = (token)=>({
33329
32990
  }),
33330
32991
  ...getArrowToken(token)
33331
32992
  });
33332
- var useStyle$j = genStyleHooks('Dropdown', (token)=>{
32993
+ var useStyle$i = genStyleHooks('Dropdown', (token)=>{
33333
32994
  const { marginXXS, sizePopupArrow, paddingXXS, componentCls } = token;
33334
32995
  const dropdownToken = mergeToken(token, {
33335
32996
  menuCls: `${componentCls}-menu`,
@@ -33340,7 +33001,7 @@ var useStyle$j = genStyleHooks('Dropdown', (token)=>{
33340
33001
  genBaseStyle$2(dropdownToken),
33341
33002
  genStatusStyle(dropdownToken)
33342
33003
  ];
33343
- }, prepareComponentToken$e, {
33004
+ }, prepareComponentToken$d, {
33344
33005
  resetStyle: false
33345
33006
  });
33346
33007
 
@@ -33412,7 +33073,7 @@ const Dropdown$1 = (props)=>{
33412
33073
  ]);
33413
33074
  const prefixCls = getPrefixCls('dropdown', customizePrefixCls);
33414
33075
  const rootCls = useCSSVarCls(prefixCls);
33415
- const [hashId, cssVarCls] = useStyle$j(prefixCls, rootCls);
33076
+ const [hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
33416
33077
  const [, token] = useToken();
33417
33078
  const child = React.Children.only(isPrimitive(children) ? /*#__PURE__*/ React.createElement("span", null, children) : children);
33418
33079
  const popupTrigger = cloneElement(child, {
@@ -33975,7 +33636,7 @@ const getRadioButtonStyle = (token)=>{
33975
33636
  };
33976
33637
  };
33977
33638
  // ============================== Export ==============================
33978
- const prepareComponentToken$d = (token)=>{
33639
+ const prepareComponentToken$c = (token)=>{
33979
33640
  const { wireframe, padding, marginXS, lineWidth, fontSizeLG, colorText, colorBgContainer, colorTextDisabled, controlItemBgActiveDisabled, colorTextLightSolid, colorPrimary, colorPrimaryHover, colorPrimaryActive, colorWhite } = token;
33980
33641
  const dotPadding = 4; // Fixed value
33981
33642
  const radioSize = fontSizeLG;
@@ -34002,7 +33663,7 @@ const prepareComponentToken$d = (token)=>{
34002
33663
  radioBgColor: wireframe ? colorBgContainer : colorPrimary
34003
33664
  };
34004
33665
  };
34005
- var useStyle$i = genStyleHooks('Radio', (token)=>{
33666
+ var useStyle$h = genStyleHooks('Radio', (token)=>{
34006
33667
  const { controlOutline, controlOutlineWidth } = token;
34007
33668
  const radioFocusShadow = `0 0 0 ${unit(controlOutlineWidth)} ${controlOutline}`;
34008
33669
  const radioButtonFocusShadow = radioFocusShadow;
@@ -34015,7 +33676,7 @@ var useStyle$i = genStyleHooks('Radio', (token)=>{
34015
33676
  getRadioBasicStyle(radioToken),
34016
33677
  getRadioButtonStyle(radioToken)
34017
33678
  ];
34018
- }, prepareComponentToken$d, {
33679
+ }, prepareComponentToken$c, {
34019
33680
  unitless: {
34020
33681
  radioSize: true,
34021
33682
  dotSize: true
@@ -34043,7 +33704,7 @@ const InternalRadio = (props, ref)=>{
34043
33704
  const prefixCls = isButtonType ? `${radioPrefixCls}-button` : radioPrefixCls;
34044
33705
  // Style
34045
33706
  const rootCls = useCSSVarCls(radioPrefixCls);
34046
- const [hashId, cssVarCls] = useStyle$i(radioPrefixCls, rootCls);
33707
+ const [hashId, cssVarCls] = useStyle$h(radioPrefixCls, rootCls);
34047
33708
  const radioProps = {
34048
33709
  ...restProps
34049
33710
  };
@@ -34142,7 +33803,7 @@ const RadioGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
34142
33803
  const groupPrefixCls = `${prefixCls}-group`;
34143
33804
  // Style
34144
33805
  const rootCls = useCSSVarCls(prefixCls);
34145
- const [hashId, cssVarCls] = useStyle$i(prefixCls, rootCls);
33806
+ const [hashId, cssVarCls] = useStyle$h(prefixCls, rootCls);
34146
33807
  let childrenToRender = children;
34147
33808
  // 如果存在 options, 优先使用
34148
33809
  if (options && options.length > 0) {
@@ -35106,7 +34767,7 @@ const useSharedStyle = genStyleHooks([
35106
34767
  }, initComponentToken$1, {
35107
34768
  resetFont: false
35108
34769
  });
35109
- var useStyle$h = genStyleHooks([
34770
+ var useStyle$g = genStyleHooks([
35110
34771
  'Input',
35111
34772
  'Component'
35112
34773
  ], (token)=>{
@@ -35992,7 +35653,7 @@ const genTabsStyle = (token)=>{
35992
35653
  }
35993
35654
  };
35994
35655
  };
35995
- const prepareComponentToken$c = (token)=>{
35656
+ const prepareComponentToken$b = (token)=>{
35996
35657
  const { cardHeight, cardHeightSM, cardHeightLG, controlHeight, controlHeightLG } = token;
35997
35658
  const mergedCardHeight = cardHeight || controlHeightLG;
35998
35659
  const mergedCardHeightSM = cardHeightSM || controlHeight;
@@ -36033,7 +35694,7 @@ const prepareComponentToken$c = (token)=>{
36033
35694
  };
36034
35695
  };
36035
35696
  // ============================== Export ==============================
36036
- var useStyle$g = genStyleHooks('Tabs', (token)=>{
35697
+ var useStyle$f = genStyleHooks('Tabs', (token)=>{
36037
35698
  const tabsToken = mergeToken(token, {
36038
35699
  // `cardPadding` is empty by default, so we could calculate with dynamic `cardHeight`
36039
35700
  tabsCardPadding: token.cardPadding,
@@ -36052,7 +35713,7 @@ var useStyle$g = genStyleHooks('Tabs', (token)=>{
36052
35713
  genTabsStyle(tabsToken),
36053
35714
  genMotionStyle$1(tabsToken)
36054
35715
  ];
36055
- }, prepareComponentToken$c);
35716
+ }, prepareComponentToken$b);
36056
35717
 
36057
35718
  const TabPane = ()=>null;
36058
35719
  if (process.env.NODE_ENV !== 'production') {
@@ -36066,7 +35727,7 @@ const InternalTabs = /*#__PURE__*/ React.forwardRef((props, ref)=>{
36066
35727
  const { tabs } = React.useContext(ConfigContext);
36067
35728
  const prefixCls = getPrefixCls('tabs', customizePrefixCls);
36068
35729
  const rootCls = useCSSVarCls(prefixCls);
36069
- const [hashId, cssVarCls] = useStyle$g(prefixCls, rootCls);
35730
+ const [hashId, cssVarCls] = useStyle$f(prefixCls, rootCls);
36070
35731
  const tabsRef = React.useRef(null);
36071
35732
  React.useImperativeHandle(ref, ()=>({
36072
35733
  nativeElement: tabsRef.current
@@ -36498,7 +36159,7 @@ const genCardSizeStyle = (token)=>{
36498
36159
  }
36499
36160
  };
36500
36161
  };
36501
- const prepareComponentToken$b = (token)=>({
36162
+ const prepareComponentToken$a = (token)=>({
36502
36163
  headerBg: 'transparent',
36503
36164
  headerFontSize: token.fontSizeLG,
36504
36165
  headerFontSizeSM: token.fontSize,
@@ -36515,7 +36176,7 @@ const prepareComponentToken$b = (token)=>({
36515
36176
  headerPadding: token.headerPadding ?? token.paddingLG
36516
36177
  });
36517
36178
  // ============================== Export ==============================
36518
- var useStyle$f = genStyleHooks('Card', (token)=>{
36179
+ var useStyle$e = genStyleHooks('Card', (token)=>{
36519
36180
  const cardToken = mergeToken(token, {
36520
36181
  cardShadow: token.boxShadowCard,
36521
36182
  cardHeadPadding: token.padding,
@@ -36528,7 +36189,7 @@ var useStyle$f = genStyleHooks('Card', (token)=>{
36528
36189
  // Size
36529
36190
  genCardSizeStyle(cardToken)
36530
36191
  ];
36531
- }, prepareComponentToken$b);
36192
+ }, prepareComponentToken$a);
36532
36193
 
36533
36194
  const ActionNode = (props)=>{
36534
36195
  const { actionClasses, actions = [], actionStyle } = props;
@@ -36599,7 +36260,7 @@ const Card$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
36599
36260
  children
36600
36261
  ]);
36601
36262
  const prefixCls = getPrefixCls('card', customizePrefixCls);
36602
- const [hashId, cssVarCls] = useStyle$f(prefixCls);
36263
+ const [hashId, cssVarCls] = useStyle$e(prefixCls);
36603
36264
  const loadingBlock = /*#__PURE__*/ React.createElement(Skeleton, {
36604
36265
  loading: true,
36605
36266
  active: true,
@@ -36955,7 +36616,7 @@ function getStyle(prefixCls, token) {
36955
36616
  });
36956
36617
  return genCheckboxStyle(checkboxToken);
36957
36618
  }
36958
- var useStyle$e = genStyleHooks('Checkbox', (token, { prefixCls })=>[
36619
+ var useStyle$d = genStyleHooks('Checkbox', (token, { prefixCls })=>[
36959
36620
  getStyle(prefixCls, token)
36960
36621
  ]);
36961
36622
 
@@ -37019,7 +36680,7 @@ const InternalCheckbox = (props, ref)=>{
37019
36680
  // ============================== Style ===============================
37020
36681
  const prefixCls = getPrefixCls('checkbox', customizePrefixCls);
37021
36682
  const rootCls = useCSSVarCls(prefixCls);
37022
- const [hashId, cssVarCls] = useStyle$e(prefixCls, rootCls);
36683
+ const [hashId, cssVarCls] = useStyle$d(prefixCls, rootCls);
37023
36684
  const checkboxProps = {
37024
36685
  ...restProps
37025
36686
  };
@@ -37137,7 +36798,7 @@ const CheckboxGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
37137
36798
  const prefixCls = getPrefixCls('checkbox', customizePrefixCls);
37138
36799
  const groupPrefixCls = `${prefixCls}-group`;
37139
36800
  const rootCls = useCSSVarCls(prefixCls);
37140
- const [hashId, cssVarCls] = useStyle$e(prefixCls, rootCls);
36801
+ const [hashId, cssVarCls] = useStyle$d(prefixCls, rootCls);
37141
36802
  const domProps = omit(restProps, [
37142
36803
  'value',
37143
36804
  'disabled'
@@ -37347,7 +37008,7 @@ function useMergedPropByScreen(oriProp, screen) {
37347
37008
  ]);
37348
37009
  return prop;
37349
37010
  }
37350
- const Row$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
37011
+ const Row = /*#__PURE__*/ React.forwardRef((props, ref)=>{
37351
37012
  const { prefixCls: customizePrefixCls, justify, align, className, style, children, gutter = 0, wrap, ...others } = props;
37352
37013
  const { getPrefixCls, direction } = React.useContext(ConfigContext);
37353
37014
  const screens = useBreakpoint(true, null);
@@ -37396,7 +37057,7 @@ const Row$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
37396
37057
  }, children));
37397
37058
  });
37398
37059
  if (process.env.NODE_ENV !== 'production') {
37399
- Row$1.displayName = 'Row';
37060
+ Row.displayName = 'Row';
37400
37061
  }
37401
37062
 
37402
37063
  // ============================== Size ================================
@@ -37557,13 +37218,13 @@ const genSharedDividerStyle = (token)=>{
37557
37218
  }
37558
37219
  };
37559
37220
  };
37560
- const prepareComponentToken$a = (token)=>({
37221
+ const prepareComponentToken$9 = (token)=>({
37561
37222
  textPaddingInline: '1em',
37562
37223
  orientationMargin: 0.05,
37563
37224
  verticalMarginInline: token.marginXS
37564
37225
  });
37565
37226
  // ============================== Export ==============================
37566
- var useStyle$d = genStyleHooks('Divider', (token)=>{
37227
+ var useStyle$c = genStyleHooks('Divider', (token)=>{
37567
37228
  const dividerToken = mergeToken(token, {
37568
37229
  dividerHorizontalWithTextGutterMargin: token.margin,
37569
37230
  sizePaddingEdgeHorizontal: 0
@@ -37572,7 +37233,7 @@ var useStyle$d = genStyleHooks('Divider', (token)=>{
37572
37233
  genSharedDividerStyle(dividerToken),
37573
37234
  genSizeDividerStyle(dividerToken)
37574
37235
  ];
37575
- }, prepareComponentToken$a, {
37236
+ }, prepareComponentToken$9, {
37576
37237
  unitless: {
37577
37238
  orientationMargin: true
37578
37239
  }
@@ -37594,7 +37255,7 @@ const Divider = (props)=>{
37594
37255
  const { prefixCls: customizePrefixCls, type, orientation, vertical, titlePlacement, orientationMargin, className, rootClassName, children, dashed, variant = 'solid', plain, style, size: customSize, classNames, styles, ...restProps } = props;
37595
37256
  const prefixCls = getPrefixCls('divider', customizePrefixCls);
37596
37257
  const railCls = `${prefixCls}-rail`;
37597
- const [hashId, cssVarCls] = useStyle$d(prefixCls);
37258
+ const [hashId, cssVarCls] = useStyle$c(prefixCls);
37598
37259
  const sizeFullName = useSize(customSize);
37599
37260
  const sizeCls = sizeClassNameMap[sizeFullName];
37600
37261
  const hasChildren = !!children;
@@ -37812,7 +37473,7 @@ const genSpaceAddonStyle = (token)=>{
37812
37473
  };
37813
37474
  };
37814
37475
  // ============================== Export ==============================
37815
- var useStyle$c = genStyleHooks([
37476
+ var useStyle$b = genStyleHooks([
37816
37477
  'Space',
37817
37478
  'Addon'
37818
37479
  ], (token)=>[
@@ -37826,7 +37487,7 @@ const SpaceAddon = /*#__PURE__*/ React__default.forwardRef((props, ref)=>{
37826
37487
  const { className, children, style, prefixCls: customizePrefixCls, variant = 'outlined', disabled, status, ...restProps } = props;
37827
37488
  const { getPrefixCls, direction: directionConfig } = React__default.useContext(ConfigContext);
37828
37489
  const prefixCls = getPrefixCls('space-addon', customizePrefixCls);
37829
- const [hashId, cssVarCls] = useStyle$c(prefixCls);
37490
+ const [hashId, cssVarCls] = useStyle$b(prefixCls);
37830
37491
  const { compactItemClassnames, compactSize } = useCompactItemContext(prefixCls, directionConfig);
37831
37492
  const statusCls = getStatusClassNames(prefixCls, status);
37832
37493
  const classes = clsx(prefixCls, hashId, compactItemClassnames, cssVarCls, `${prefixCls}-variant-${variant}`, statusCls, {
@@ -37906,7 +37567,7 @@ const Input = /*#__PURE__*/ forwardRef((props, ref)=>{
37906
37567
  // Style
37907
37568
  const rootCls = useCSSVarCls(prefixCls);
37908
37569
  const [hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);
37909
- useStyle$h(prefixCls, rootCls);
37570
+ useStyle$g(prefixCls, rootCls);
37910
37571
  // ===================== Compact Item =====================
37911
37572
  const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);
37912
37573
  // ===================== Size =====================
@@ -38021,583 +37682,6 @@ if (process.env.NODE_ENV !== 'production') {
38021
37682
  Input.displayName = 'Input';
38022
37683
  }
38023
37684
 
38024
- const DEFAULT_COLUMN_MAP = {
38025
- xxxl: 4,
38026
- xxl: 3,
38027
- xl: 3,
38028
- lg: 3,
38029
- md: 3,
38030
- sm: 2,
38031
- xs: 1
38032
- };
38033
-
38034
- const DescriptionsContext = /*#__PURE__*/ React__default.createContext(null);
38035
-
38036
- // Convert children into items
38037
- const transChildren2Items = (childNodes)=>toArray$1(childNodes).map((node)=>({
38038
- ...node?.props,
38039
- key: node.key
38040
- }));
38041
- function useItems(screens, items, children) {
38042
- const mergedItems = React.useMemo(()=>// Take `items` first or convert `children` into items
38043
- items || transChildren2Items(children), [
38044
- items,
38045
- children
38046
- ]);
38047
- const responsiveItems = React.useMemo(()=>mergedItems.map(({ span, ...restItem })=>{
38048
- if (span === 'filled') {
38049
- return {
38050
- ...restItem,
38051
- filled: true
38052
- };
38053
- }
38054
- return {
38055
- ...restItem,
38056
- span: typeof span === 'number' ? span : matchScreen(screens, span)
38057
- };
38058
- }), [
38059
- mergedItems,
38060
- screens
38061
- ]);
38062
- return responsiveItems;
38063
- }
38064
-
38065
- // Calculate the sum of span in a row
38066
- function getCalcRows(rowItems, mergedColumn) {
38067
- let rows = [];
38068
- let tmpRow = [];
38069
- let exceed = false;
38070
- let count = 0;
38071
- rowItems.filter((n)=>n).forEach((rowItem)=>{
38072
- const { filled, ...restItem } = rowItem;
38073
- if (filled) {
38074
- tmpRow.push(restItem);
38075
- rows.push(tmpRow);
38076
- // reset
38077
- tmpRow = [];
38078
- count = 0;
38079
- return;
38080
- }
38081
- const restSpan = mergedColumn - count;
38082
- count += rowItem.span || 1;
38083
- if (count >= mergedColumn) {
38084
- if (count > mergedColumn) {
38085
- exceed = true;
38086
- tmpRow.push({
38087
- ...restItem,
38088
- span: restSpan
38089
- });
38090
- } else {
38091
- tmpRow.push(restItem);
38092
- }
38093
- rows.push(tmpRow);
38094
- // reset
38095
- tmpRow = [];
38096
- count = 0;
38097
- } else {
38098
- tmpRow.push(restItem);
38099
- }
38100
- });
38101
- if (tmpRow.length > 0) {
38102
- rows.push(tmpRow);
38103
- }
38104
- rows = rows.map((rows)=>{
38105
- const count = rows.reduce((acc, item)=>acc + (item.span || 1), 0);
38106
- if (count < mergedColumn) {
38107
- // If the span of the last element in the current row is less than the column, then add its span to the remaining columns
38108
- const last = rows[rows.length - 1];
38109
- last.span = mergedColumn - (count - (last.span || 1));
38110
- return rows;
38111
- }
38112
- return rows;
38113
- });
38114
- return [
38115
- rows,
38116
- exceed
38117
- ];
38118
- }
38119
- const useRow = (mergedColumn, items)=>{
38120
- const [rows, exceed] = useMemo(()=>getCalcRows(items, mergedColumn), [
38121
- items,
38122
- mergedColumn
38123
- ]);
38124
- if (process.env.NODE_ENV !== 'production') {
38125
- const warning = devUseWarning('Descriptions');
38126
- process.env.NODE_ENV !== "production" ? warning(!exceed, 'usage', 'Sum of column `span` in a line not match `column` of Descriptions.') : void 0;
38127
- }
38128
- return rows;
38129
- };
38130
-
38131
- // JSX Structure Syntactic Sugar. Never reach the render code.
38132
- /* istanbul ignore next */ const DescriptionsItem = (props)=>{
38133
- return props.children;
38134
- };
38135
-
38136
- const Cell = (props)=>{
38137
- const { itemPrefixCls, component, span, className, style, labelStyle, contentStyle, bordered, label, content, colon, type, styles, classNames } = props;
38138
- const Component = component;
38139
- const { classNames: contextClassNames, styles: contextStyles } = React__default.useContext(DescriptionsContext);
38140
- const [mergedClassNames, mergedStyles] = useMergeSemantic([
38141
- contextClassNames,
38142
- classNames
38143
- ], [
38144
- contextStyles,
38145
- styles
38146
- ], {
38147
- props
38148
- });
38149
- const mergedLabelStyle = {
38150
- ...labelStyle,
38151
- ...mergedStyles.label
38152
- };
38153
- const mergedContentStyle = {
38154
- ...contentStyle,
38155
- ...mergedStyles.content
38156
- };
38157
- if (bordered) {
38158
- return /*#__PURE__*/ React__default.createElement(Component, {
38159
- colSpan: span,
38160
- style: style,
38161
- className: clsx(className, {
38162
- [`${itemPrefixCls}-item-${type}`]: type === 'label' || type === 'content',
38163
- [mergedClassNames.label]: mergedClassNames.label && type === 'label',
38164
- [mergedClassNames.content]: mergedClassNames.content && type === 'content'
38165
- })
38166
- }, isNonNullable(label) && /*#__PURE__*/ React__default.createElement("span", {
38167
- style: mergedLabelStyle
38168
- }, label), isNonNullable(content) && /*#__PURE__*/ React__default.createElement("span", {
38169
- style: mergedContentStyle
38170
- }, content));
38171
- }
38172
- return /*#__PURE__*/ React__default.createElement(Component, {
38173
- className: clsx(`${itemPrefixCls}-item`, className),
38174
- style: style,
38175
- colSpan: span
38176
- }, /*#__PURE__*/ React__default.createElement("div", {
38177
- className: `${itemPrefixCls}-item-container`
38178
- }, isNonNullable(label) && /*#__PURE__*/ React__default.createElement("span", {
38179
- style: mergedLabelStyle,
38180
- className: clsx(`${itemPrefixCls}-item-label`, mergedClassNames.label, {
38181
- [`${itemPrefixCls}-item-no-colon`]: !colon
38182
- })
38183
- }, label), isNonNullable(content) && /*#__PURE__*/ React__default.createElement("span", {
38184
- style: mergedContentStyle,
38185
- className: clsx(`${itemPrefixCls}-item-content`, mergedClassNames.content)
38186
- }, content)));
38187
- };
38188
-
38189
- function renderCells(items, { colon, prefixCls, bordered }, { component, type, showLabel, showContent, labelStyle: rootLabelStyle, contentStyle: rootContentStyle, styles: rootStyles }) {
38190
- return items.map(({ label, children, prefixCls: itemPrefixCls = prefixCls, className, style, labelStyle, contentStyle, span = 1, key, styles, classNames }, index)=>{
38191
- if (typeof component === 'string') {
38192
- return /*#__PURE__*/ React.createElement(Cell, {
38193
- key: `${type}-${key || index}`,
38194
- className: className,
38195
- style: style,
38196
- classNames: classNames,
38197
- styles: {
38198
- label: {
38199
- ...rootLabelStyle,
38200
- ...rootStyles?.label,
38201
- ...labelStyle,
38202
- ...styles?.label
38203
- },
38204
- content: {
38205
- ...rootContentStyle,
38206
- ...rootStyles?.content,
38207
- ...contentStyle,
38208
- ...styles?.content
38209
- }
38210
- },
38211
- span: span,
38212
- colon: colon,
38213
- component: component,
38214
- itemPrefixCls: itemPrefixCls,
38215
- bordered: bordered,
38216
- label: showLabel ? label : null,
38217
- content: showContent ? children : null,
38218
- type: type
38219
- });
38220
- }
38221
- return [
38222
- /*#__PURE__*/ React.createElement(Cell, {
38223
- key: `label-${key || index}`,
38224
- className: className,
38225
- style: {
38226
- ...rootLabelStyle,
38227
- ...rootStyles?.label,
38228
- ...style,
38229
- ...labelStyle,
38230
- ...styles?.label
38231
- },
38232
- span: 1,
38233
- colon: colon,
38234
- component: component[0],
38235
- itemPrefixCls: itemPrefixCls,
38236
- bordered: bordered,
38237
- label: label,
38238
- type: "label"
38239
- }),
38240
- /*#__PURE__*/ React.createElement(Cell, {
38241
- key: `content-${key || index}`,
38242
- className: className,
38243
- style: {
38244
- ...rootContentStyle,
38245
- ...rootStyles?.content,
38246
- ...style,
38247
- ...contentStyle,
38248
- ...styles?.content
38249
- },
38250
- span: span * 2 - 1,
38251
- component: component[1],
38252
- itemPrefixCls: itemPrefixCls,
38253
- bordered: bordered,
38254
- content: children,
38255
- type: "content"
38256
- })
38257
- ];
38258
- });
38259
- }
38260
- const Row = (props)=>{
38261
- const descContext = React.useContext(DescriptionsContext);
38262
- const { prefixCls, vertical, row, index, bordered } = props;
38263
- if (vertical) {
38264
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("tr", {
38265
- key: `label-${index}`,
38266
- className: `${prefixCls}-row`
38267
- }, renderCells(row, props, {
38268
- component: 'th',
38269
- type: 'label',
38270
- showLabel: true,
38271
- ...descContext
38272
- })), /*#__PURE__*/ React.createElement("tr", {
38273
- key: `content-${index}`,
38274
- className: `${prefixCls}-row`
38275
- }, renderCells(row, props, {
38276
- component: 'td',
38277
- type: 'content',
38278
- showContent: true,
38279
- ...descContext
38280
- })));
38281
- }
38282
- return /*#__PURE__*/ React.createElement("tr", {
38283
- key: index,
38284
- className: `${prefixCls}-row`
38285
- }, renderCells(row, props, {
38286
- component: bordered ? [
38287
- 'th',
38288
- 'td'
38289
- ] : 'td',
38290
- type: 'item',
38291
- showLabel: true,
38292
- showContent: true,
38293
- ...descContext
38294
- }));
38295
- };
38296
-
38297
- const genBorderedStyle$2 = (token)=>{
38298
- const { componentCls, labelBg } = token;
38299
- return {
38300
- [`&${componentCls}-bordered`]: {
38301
- [`> ${componentCls}-view`]: {
38302
- border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38303
- '> table': {
38304
- tableLayout: 'auto'
38305
- },
38306
- [`${componentCls}-row`]: {
38307
- borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38308
- '&:first-child': {
38309
- '> th:first-child, > td:first-child': {
38310
- borderStartStartRadius: token.borderRadiusLG
38311
- }
38312
- },
38313
- '&:last-child': {
38314
- borderBottom: 'none',
38315
- '> th:first-child, > td:first-child': {
38316
- borderEndStartRadius: token.borderRadiusLG
38317
- }
38318
- },
38319
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38320
- padding: `${unit(token.padding)} ${unit(token.paddingLG)}`,
38321
- borderInlineEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,
38322
- '&:last-child': {
38323
- borderInlineEnd: 'none'
38324
- }
38325
- },
38326
- [`> ${componentCls}-item-label`]: {
38327
- color: token.colorTextSecondary,
38328
- backgroundColor: labelBg,
38329
- '&::after': {
38330
- display: 'none'
38331
- }
38332
- }
38333
- }
38334
- },
38335
- [`&${componentCls}-middle`]: {
38336
- [`${componentCls}-row`]: {
38337
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38338
- padding: `${unit(token.paddingSM)} ${unit(token.paddingLG)}`
38339
- }
38340
- }
38341
- },
38342
- [`&${componentCls}-small`]: {
38343
- [`${componentCls}-row`]: {
38344
- [`> ${componentCls}-item-label, > ${componentCls}-item-content`]: {
38345
- padding: `${unit(token.paddingXS)} ${unit(token.padding)}`
38346
- }
38347
- }
38348
- }
38349
- }
38350
- };
38351
- };
38352
- const genDescriptionStyles = (token)=>{
38353
- const { componentCls, extraColor, itemPaddingBottom, itemPaddingEnd, colonMarginRight, colonMarginLeft, titleMarginBottom } = token;
38354
- return {
38355
- [componentCls]: {
38356
- ...resetComponent(token),
38357
- ...genBorderedStyle$2(token),
38358
- '&-rtl': {
38359
- direction: 'rtl'
38360
- },
38361
- [`${componentCls}-header`]: {
38362
- display: 'flex',
38363
- alignItems: 'center',
38364
- marginBottom: titleMarginBottom
38365
- },
38366
- [`${componentCls}-title`]: {
38367
- ...textEllipsis,
38368
- flex: 'auto',
38369
- color: token.titleColor,
38370
- fontWeight: token.fontWeightStrong,
38371
- fontSize: token.fontSizeLG,
38372
- lineHeight: token.lineHeightLG
38373
- },
38374
- [`${componentCls}-extra`]: {
38375
- marginInlineStart: 'auto',
38376
- color: extraColor,
38377
- fontSize: token.fontSize
38378
- },
38379
- [`${componentCls}-view`]: {
38380
- width: '100%',
38381
- borderRadius: token.borderRadiusLG,
38382
- table: {
38383
- width: '100%',
38384
- tableLayout: 'fixed',
38385
- borderCollapse: 'collapse'
38386
- }
38387
- },
38388
- [`${componentCls}-row`]: {
38389
- '> th, > td': {
38390
- paddingBottom: itemPaddingBottom,
38391
- paddingInlineEnd: itemPaddingEnd
38392
- },
38393
- '> th:last-child, > td:last-child': {
38394
- paddingInlineEnd: 0
38395
- },
38396
- '&:last-child': {
38397
- borderBottom: 'none',
38398
- '> th, > td': {
38399
- paddingBottom: 0
38400
- }
38401
- }
38402
- },
38403
- [`${componentCls}-item-label`]: {
38404
- color: token.labelColor,
38405
- fontWeight: 'normal',
38406
- fontSize: token.fontSize,
38407
- lineHeight: token.lineHeight,
38408
- textAlign: 'start',
38409
- '&::after': {
38410
- content: '":"',
38411
- position: 'relative',
38412
- top: -0.5,
38413
- // magic for position
38414
- marginInline: `${unit(colonMarginLeft)} ${unit(colonMarginRight)}`
38415
- },
38416
- [`&${componentCls}-item-no-colon::after`]: {
38417
- content: '""'
38418
- }
38419
- },
38420
- [`${componentCls}-item-no-label`]: {
38421
- '&::after': {
38422
- margin: 0,
38423
- content: '""'
38424
- }
38425
- },
38426
- [`${componentCls}-item-content`]: {
38427
- display: 'table-cell',
38428
- flex: 1,
38429
- color: token.contentColor,
38430
- fontSize: token.fontSize,
38431
- lineHeight: token.lineHeight,
38432
- wordBreak: 'break-word',
38433
- overflowWrap: 'break-word'
38434
- },
38435
- [`${componentCls}-item`]: {
38436
- paddingBottom: 0,
38437
- verticalAlign: 'top',
38438
- '&-container': {
38439
- display: 'flex',
38440
- [`${componentCls}-item-label`]: {
38441
- display: 'inline-flex',
38442
- alignItems: 'baseline'
38443
- },
38444
- [`${componentCls}-item-content`]: {
38445
- display: 'inline-flex',
38446
- alignItems: 'baseline',
38447
- minWidth: '1em'
38448
- }
38449
- }
38450
- },
38451
- '&-middle': {
38452
- [`${componentCls}-row`]: {
38453
- '> th, > td': {
38454
- paddingBottom: token.paddingSM
38455
- }
38456
- }
38457
- },
38458
- '&-small': {
38459
- [`${componentCls}-row`]: {
38460
- '> th, > td': {
38461
- paddingBottom: token.paddingXS
38462
- }
38463
- }
38464
- }
38465
- }
38466
- };
38467
- };
38468
- const prepareComponentToken$9 = (token)=>({
38469
- labelBg: token.colorFillAlter,
38470
- labelColor: token.colorTextTertiary,
38471
- titleColor: token.colorText,
38472
- titleMarginBottom: token.fontSizeSM * token.lineHeightSM,
38473
- itemPaddingBottom: token.padding,
38474
- itemPaddingEnd: token.padding,
38475
- colonMarginRight: token.marginXS,
38476
- colonMarginLeft: token.marginXXS / 2,
38477
- contentColor: token.colorText,
38478
- extraColor: token.colorText
38479
- });
38480
- // ============================== Export ==============================
38481
- var useStyle$b = genStyleHooks('Descriptions', (token)=>{
38482
- const descriptionToken = mergeToken(token, {});
38483
- return genDescriptionStyles(descriptionToken);
38484
- }, prepareComponentToken$9);
38485
-
38486
- const Descriptions = (props)=>{
38487
- const { prefixCls: customizePrefixCls, title, extra, column, colon = true, bordered, layout, children, className, rootClassName, style, size: customizeSize, labelStyle, contentStyle, styles, items, classNames, ...restProps } = props;
38488
- const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('descriptions');
38489
- const prefixCls = getPrefixCls('descriptions', customizePrefixCls);
38490
- const screens = useBreakpoint();
38491
- // ============================== Warn ==============================
38492
- if (process.env.NODE_ENV !== 'production') {
38493
- const warning = devUseWarning('Descriptions');
38494
- [
38495
- [
38496
- 'labelStyle',
38497
- 'styles.label'
38498
- ],
38499
- [
38500
- 'contentStyle',
38501
- 'styles.content'
38502
- ]
38503
- ].forEach(([deprecatedName, newName])=>{
38504
- warning.deprecated(!(deprecatedName in props), deprecatedName, newName);
38505
- });
38506
- }
38507
- // Column count
38508
- const mergedColumn = React.useMemo(()=>{
38509
- if (typeof column === 'number') {
38510
- return column;
38511
- }
38512
- return matchScreen(screens, {
38513
- ...DEFAULT_COLUMN_MAP,
38514
- ...column
38515
- }) ?? 3;
38516
- }, [
38517
- screens,
38518
- column
38519
- ]);
38520
- // Items with responsive
38521
- const mergedItems = useItems(screens, items, children);
38522
- const mergedSize = useSize(customizeSize);
38523
- const rows = useRow(mergedColumn, mergedItems);
38524
- const [hashId, cssVarCls] = useStyle$b(prefixCls);
38525
- // =========== Merged Props for Semantic ==========
38526
- const mergedProps = {
38527
- ...props,
38528
- column: mergedColumn,
38529
- items: mergedItems,
38530
- size: mergedSize
38531
- };
38532
- const [mergedClassNames, mergedStyles] = useMergeSemantic([
38533
- contextClassNames,
38534
- classNames
38535
- ], [
38536
- contextStyles,
38537
- styles
38538
- ], {
38539
- props: mergedProps
38540
- });
38541
- // ======================== Render ========================
38542
- const memoizedValue = React.useMemo(()=>({
38543
- labelStyle,
38544
- contentStyle,
38545
- styles: {
38546
- label: mergedStyles.label,
38547
- content: mergedStyles.content
38548
- },
38549
- classNames: {
38550
- label: mergedClassNames.label,
38551
- content: mergedClassNames.content
38552
- }
38553
- }), [
38554
- labelStyle,
38555
- contentStyle,
38556
- mergedStyles.label,
38557
- mergedStyles.content,
38558
- mergedClassNames.label,
38559
- mergedClassNames.content
38560
- ]);
38561
- return /*#__PURE__*/ React.createElement(DescriptionsContext.Provider, {
38562
- value: memoizedValue
38563
- }, /*#__PURE__*/ React.createElement("div", {
38564
- className: clsx(prefixCls, contextClassName, mergedClassNames.root, {
38565
- [`${prefixCls}-${mergedSize}`]: mergedSize && mergedSize !== 'default',
38566
- [`${prefixCls}-bordered`]: !!bordered,
38567
- [`${prefixCls}-rtl`]: direction === 'rtl'
38568
- }, className, rootClassName, hashId, cssVarCls),
38569
- style: {
38570
- ...contextStyle,
38571
- ...mergedStyles.root,
38572
- ...style
38573
- },
38574
- ...restProps
38575
- }, (title || extra) && /*#__PURE__*/ React.createElement("div", {
38576
- className: clsx(`${prefixCls}-header`, mergedClassNames.header),
38577
- style: mergedStyles.header
38578
- }, title && /*#__PURE__*/ React.createElement("div", {
38579
- className: clsx(`${prefixCls}-title`, mergedClassNames.title),
38580
- style: mergedStyles.title
38581
- }, title), extra && /*#__PURE__*/ React.createElement("div", {
38582
- className: clsx(`${prefixCls}-extra`, mergedClassNames.extra),
38583
- style: mergedStyles.extra
38584
- }, extra)), /*#__PURE__*/ React.createElement("div", {
38585
- className: `${prefixCls}-view`
38586
- }, /*#__PURE__*/ React.createElement("table", null, /*#__PURE__*/ React.createElement("tbody", null, rows.map((row, index)=>/*#__PURE__*/ React.createElement(Row, {
38587
- key: index,
38588
- index: index,
38589
- colon: colon,
38590
- prefixCls: prefixCls,
38591
- vertical: layout === 'vertical',
38592
- bordered: bordered,
38593
- row: row
38594
- })))))));
38595
- };
38596
- if (process.env.NODE_ENV !== 'production') {
38597
- Descriptions.displayName = 'Descriptions';
38598
- }
38599
- Descriptions.Item = DescriptionsItem;
38600
-
38601
37685
  const DrawerPanel = (props)=>{
38602
37686
  const { prefixCls, ariaId, title, footer, extra, closable, loading, onClose, headerStyle, bodyStyle, footerStyle, children, classNames: drawerClassNames, styles: drawerStyles } = props;
38603
37687
  const drawerContext = useComponentConfig('drawer');
@@ -44364,11 +43448,11 @@ const injectSorter = (prefixCls, columns, sorterStates, triggerSorter, defaultSo
44364
43448
  if (typeof showSorterTooltip !== 'boolean' && showSorterTooltip?.target === 'sorter-icon') {
44365
43449
  return /*#__PURE__*/ React.createElement("div", {
44366
43450
  className: clsx(columnSortersClass, `${columnSortersClass}-tooltip-target-sorter`)
44367
- }, renderColumnTitleWrapper, /*#__PURE__*/ React.createElement(Tooltip, {
43451
+ }, renderColumnTitleWrapper, /*#__PURE__*/ React.createElement(Tooltip$1, {
44368
43452
  ...tooltipProps
44369
43453
  }, sorter));
44370
43454
  }
44371
- return /*#__PURE__*/ React.createElement(Tooltip, {
43455
+ return /*#__PURE__*/ React.createElement(Tooltip$1, {
44372
43456
  ...tooltipProps
44373
43457
  }, renderSortTitle);
44374
43458
  }
@@ -47451,7 +46535,7 @@ const CopyBtn = ({ prefixCls, copied, locale, iconOnly, tooltips, icon, tabIndex
47451
46535
  const systemStr = copied ? copiedText : copyText;
47452
46536
  const copyTitle = getNode(tooltipNodes[copied ? 1 : 0], systemStr);
47453
46537
  const ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr;
47454
- return /*#__PURE__*/ React.createElement(Tooltip, {
46538
+ return /*#__PURE__*/ React.createElement(Tooltip$1, {
47455
46539
  title: copyTitle
47456
46540
  }, /*#__PURE__*/ React.createElement("button", {
47457
46541
  type: "button",
@@ -47695,7 +46779,7 @@ const EllipsisTooltip = ({ enableEllipsis, isEllipsis, open, children, tooltipPr
47695
46779
  return children;
47696
46780
  }
47697
46781
  const mergedOpen = open && isEllipsis;
47698
- return /*#__PURE__*/ React.createElement(Tooltip, {
46782
+ return /*#__PURE__*/ React.createElement(Tooltip$1, {
47699
46783
  open: mergedOpen,
47700
46784
  ...tooltipProps
47701
46785
  }, children);
@@ -47949,7 +47033,7 @@ const Base = /*#__PURE__*/ React.forwardRef((props, ref)=>{
47949
47033
  const { icon, tooltip, tabIndex } = editConfig;
47950
47034
  const editTitle = toArray$1(tooltip)[0] || textLocale?.edit;
47951
47035
  const ariaLabel = typeof editTitle === 'string' ? editTitle : '';
47952
- return triggerType.includes('icon') ? /*#__PURE__*/ React.createElement(Tooltip, {
47036
+ return triggerType.includes('icon') ? /*#__PURE__*/ React.createElement(Tooltip$1, {
47953
47037
  key: "edit",
47954
47038
  title: tooltip === false ? '' : editTitle
47955
47039
  }, /*#__PURE__*/ React.createElement("button", {
@@ -48557,7 +47641,10 @@ const JsonTreeViewer = ({ data, maxDepth = 4, initialExpanded = false, expanded
48557
47641
  })()));
48558
47642
  };
48559
47643
 
48560
- const NODE_MAX_WIDTH = 500;
47644
+ /** Max width for rich content (drawer output blocks, etc.) */ const NODE_MAX_WIDTH = 500;
47645
+ /** Compact xyflow node card width range */ const FLOW_NODE_MIN_WIDTH = 176;
47646
+ const FLOW_NODE_MAX_WIDTH = 250;
47647
+ /** 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);
48561
47648
 
48562
47649
  const OutputRenderer = ({ data })=>{
48563
47650
  const [isExpanded, setIsExpanded] = useState(false);
@@ -49078,6 +48165,25 @@ const CountUpLatency = ({ value })=>{
49078
48165
  });
49079
48166
  }
49080
48167
  };
48168
+ /** Merged tool internals + first edge detail (same shape ToolNode used on-canvas). */ function buildToolDrawerPayload(nodeData) {
48169
+ const internals = nodeData.details?.internals;
48170
+ const base = internals && typeof internals === "object" ? {
48171
+ ...internals
48172
+ } : {};
48173
+ const edges = nodeData.edgeDetails;
48174
+ if (edges && edges.length > 0) {
48175
+ const d0 = edges[0];
48176
+ return {
48177
+ ...base,
48178
+ input: {
48179
+ ...d0?.input_kwargs ?? {}
48180
+ },
48181
+ output: d0?.output,
48182
+ status: d0?.status
48183
+ };
48184
+ }
48185
+ return Object.keys(base).length > 0 ? base : null;
48186
+ }
49081
48187
  const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49082
48188
  const { theme } = useTheme$1();
49083
48189
  const [selectedRowIndex, setSelectedRowIndex] = useState(null);
@@ -49111,12 +48217,16 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49111
48217
  }, [
49112
48218
  nodeData?.details?.internals?.llm_details?.length
49113
48219
  ]);
49114
- const llOverviewDetails = getOverviewLlmDetails(nodeData.details?.internals?.llm_details || []);
49115
- const totalCost = sumTotalCost(nodeData.details?.internals?.llm_details || []);
49116
- const totalInputTokens = sumTotalInputTokens(nodeData.details?.internals?.llm_details || []);
49117
- const totalOutputTokens = sumTotalOutputTokens(nodeData.details?.internals?.llm_details || []);
49118
- const totalLatency = sumTotalLatency(nodeData.details?.internals?.llm_details || []);
49119
- const drawerTitle = /*#__PURE__*/ React__default.createElement(DrawerTitleContent, null, /*#__PURE__*/ React__default.createElement(NodeIcon$3, null, getNodeIcon({
48220
+ const nodeType = nodeData.nodeType || "Agent";
48221
+ const llmDetailsList = nodeData.details?.internals?.llm_details || [];
48222
+ const llOverviewDetails = getOverviewLlmDetails(llmDetailsList);
48223
+ const totalCost = sumTotalCost(llmDetailsList);
48224
+ const totalInputTokens = sumTotalInputTokens(llmDetailsList);
48225
+ const totalOutputTokens = sumTotalOutputTokens(llmDetailsList);
48226
+ const totalLatency = sumTotalLatency(llmDetailsList);
48227
+ const toolDrawerPayload = nodeType === "Tool" ? buildToolDrawerPayload(nodeData) : null;
48228
+ const nodeLatencySeconds = nodeData.details?.internals?.latency?.total_time;
48229
+ const drawerTitle = /*#__PURE__*/ React__default.createElement(DrawerTitleContent, null, /*#__PURE__*/ React__default.createElement(NodeIcon$2, null, getNodeIcon({
49120
48230
  nodeType: (nodeData.nodeType || "Agent").toLowerCase(),
49121
48231
  modelProvider: llOverviewDetails?.model_provider,
49122
48232
  modelName: llOverviewDetails?.model_name
@@ -49128,7 +48238,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49128
48238
  onClose: onClose,
49129
48239
  closable: {
49130
48240
  closeIcon: /*#__PURE__*/ React__default.createElement(Button$1, {
49131
- type: "text",
48241
+ type: "link",
49132
48242
  icon: /*#__PURE__*/ React__default.createElement(X$1, {
49133
48243
  size: 16,
49134
48244
  color: theme.colors.foreground
@@ -49140,7 +48250,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49140
48250
  "aria-label": "Close drawer"
49141
48251
  })
49142
48252
  },
49143
- size: "400px",
48253
+ size: "500px",
49144
48254
  getContainer: ()=>document.body,
49145
48255
  zIndex: 1100,
49146
48256
  "data-testid": "node-details-drawer",
@@ -49156,8 +48266,15 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49156
48266
  }
49157
48267
  }, /*#__PURE__*/ React__default.createElement(DrawerBodyContent, {
49158
48268
  "data-testid": "node-details-drawer-content"
49159
- }, llOverviewDetails && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(InfoGrid, null, (()=>{
49160
- const llmDetails = nodeData.details?.internals?.llm_details || [];
48269
+ }, nodeType === "Tool" && /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, nodeLatencySeconds != null && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(InfoItem, null, /*#__PURE__*/ React__default.createElement(InfoLabel, null, "Latency"), /*#__PURE__*/ React__default.createElement(InfoValue, null, formatLatency(nodeLatencySeconds)))), toolDrawerPayload ? /*#__PURE__*/ React__default.createElement(Section, {
48270
+ "data-testid": "tool-drawer-json"
48271
+ }, /*#__PURE__*/ React__default.createElement(JsonTreeViewer, {
48272
+ excludeKeys: [
48273
+ "latency"
48274
+ ],
48275
+ data: toolDrawerPayload
48276
+ })) : null), nodeType === "Agent" && !llOverviewDetails && nodeLatencySeconds != null && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(InfoItem, null, /*#__PURE__*/ React__default.createElement(InfoLabel, null, "Latency"), /*#__PURE__*/ React__default.createElement(InfoValue, null, formatLatency(nodeLatencySeconds)))), nodeType === "Agent" && llOverviewDetails && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(InfoGrid, null, (()=>{
48277
+ const llmDetails = llmDetailsList;
49161
48278
  const isAggregateSelected = selectedRowIndex === llmDetails.length;
49162
48279
  const selectedDetails = isAggregateSelected ? null // Use aggregate values
49163
48280
  : llmDetails[selectedRowIndex || 0];
@@ -49194,7 +48311,13 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49194
48311
  prefix: "$",
49195
48312
  suffix: " USD"
49196
48313
  }) : "N/A")));
49197
- })())), nodeData.details?.internals?.llm_details?.length > 1 && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(TableWrapper, null, /*#__PURE__*/ React__default.createElement("table", null, /*#__PURE__*/ React__default.createElement("thead", null, /*#__PURE__*/ React__default.createElement("tr", null, /*#__PURE__*/ React__default.createElement("th", {
48314
+ })())), nodeType === "Agent" && llOverviewDetails && llmDetailsList.length === 1 && /*#__PURE__*/ React__default.createElement(Section, {
48315
+ "data-testid": "agent-single-llm-messages"
48316
+ }, /*#__PURE__*/ React__default.createElement(InputArrayRenderer, {
48317
+ input: llOverviewDetails.input || []
48318
+ }), llOverviewDetails.output ? /*#__PURE__*/ React__default.createElement(OutputRenderer, {
48319
+ data: llOverviewDetails.output
48320
+ }) : null), nodeType === "Agent" && llmDetailsList.length > 1 && /*#__PURE__*/ React__default.createElement(Section, null, /*#__PURE__*/ React__default.createElement(TableWrapper, null, /*#__PURE__*/ React__default.createElement("table", null, /*#__PURE__*/ React__default.createElement("thead", null, /*#__PURE__*/ React__default.createElement("tr", null, /*#__PURE__*/ React__default.createElement("th", {
49198
48321
  style: {
49199
48322
  textAlign: "center"
49200
48323
  }
@@ -49214,7 +48337,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49214
48337
  style: {
49215
48338
  textAlign: "right"
49216
48339
  }
49217
- }, "Latency"))), /*#__PURE__*/ React__default.createElement("tbody", null, nodeData.details.internals.llm_details.map((details, index)=>/*#__PURE__*/ React__default.createElement("tr", {
48340
+ }, "Latency"))), /*#__PURE__*/ React__default.createElement("tbody", null, llmDetailsList.map((details, index)=>/*#__PURE__*/ React__default.createElement("tr", {
49218
48341
  key: index,
49219
48342
  onClick: ()=>handleShowModelDetails(details, index),
49220
48343
  className: selectedRowIndex === index ? "selected-row" : ""
@@ -49255,7 +48378,7 @@ const NodeDetailsDrawer = ({ isVisible, onClose, nodeData })=>{
49255
48378
  value: details.latency
49256
48379
  }) : "N/A"))), /*#__PURE__*/ React__default.createElement("tr", {
49257
48380
  key: "total",
49258
- className: `total-row ${selectedRowIndex === nodeData.details?.internals?.llm_details.length ? "selected-row" : ""}`,
48381
+ className: `total-row ${selectedRowIndex === llmDetailsList.length ? "selected-row" : ""}`,
49259
48382
  onClick: handleShowAggregateDetails
49260
48383
  }, /*#__PURE__*/ React__default.createElement("td", {
49261
48384
  style: {
@@ -49415,7 +48538,7 @@ const InfoValue = styled.span`
49415
48538
  color: ${(p)=>p.theme?.colors?.foreground ?? "inherit"};
49416
48539
  word-break: break-word;
49417
48540
  `;
49418
- const NodeIcon$3 = styled.div`
48541
+ const NodeIcon$2 = styled.div`
49419
48542
  font-size: ${(p)=>p.theme?.fontSize?.xl ?? "1.25rem"};
49420
48543
  display: flex;
49421
48544
  align-items: center;
@@ -49435,7 +48558,6 @@ const resolveProviderFromModelName = (modelName)=>{
49435
48558
  const { nodeType, modelProvider, modelName, size = 16 } = options ?? {};
49436
48559
  const normalizedNodeType = nodeType?.toLowerCase();
49437
48560
  if (normalizedNodeType === "tool") return "🔧";
49438
- if (normalizedNodeType === "coordinator") return "🎯";
49439
48561
  const normalizedProvider = modelProvider?.toLowerCase();
49440
48562
  const resolvedProvider = !normalizedProvider || normalizedProvider === "unknown" ? resolveProviderFromModelName(modelName) : normalizedProvider;
49441
48563
  if (resolvedProvider === "openai") return /*#__PURE__*/ React__default.createElement(OpenAIIcon, {
@@ -49511,18 +48633,12 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49511
48633
  primary: "hsl(221.2 83.2% 53.3%)",
49512
48634
  background: "hsl(0 0% 100%)"
49513
48635
  };
49514
- // State for inspection drawer
49515
48636
  const [isDrawerOpen, setIsDrawerOpen] = useState(defaultDrawerOpen ?? false);
49516
- const nodeRef = useRef(null);
49517
- // Check if this node has any outgoing edges (source edges)
49518
48637
  const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49519
- // Check if this node has any incoming edges (target edges)
49520
48638
  const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49521
48639
  const handleNodeClick = ()=>{
49522
48640
  setIsDrawerOpen(true);
49523
- if (onInspect) {
49524
- onInspect(data);
49525
- }
48641
+ onInspect?.(data);
49526
48642
  };
49527
48643
  const handleCloseDrawer = ()=>{
49528
48644
  setIsDrawerOpen(false);
@@ -49538,12 +48654,8 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49538
48654
  });
49539
48655
  const totalCost = sumTotalCost(data.details?.internals?.llm_details || []);
49540
48656
  const totalCostFormatted = formatCurrency(totalCost);
49541
- const totalCostTooltip = `Total cost: ${formatCurrency(totalCost)} USD`;
49542
- const nodeDetails = getOverviewLlmDetails(data.details?.internals?.llm_details || []);
49543
- const inputArray = nodeDetails?.input || [];
49544
- const output = nodeDetails?.output || null;
49545
- return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(NodeContainer$2, {
49546
- ref: nodeRef,
48657
+ const providerLine = `${modelName || "—"}`;
48658
+ return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(NodeContainer$1, {
49547
48659
  onClick: handleNodeClick,
49548
48660
  className: "nowheel agent-node"
49549
48661
  }, hasIncomingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
@@ -49557,17 +48669,21 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49557
48669
  cursor: "default"
49558
48670
  },
49559
48671
  isConnectable: false
49560
- }), /*#__PURE__*/ React__default.createElement(NodeHeader$2, null, /*#__PURE__*/ React__default.createElement(NodeIconContainer$2, null, /*#__PURE__*/ React__default.createElement(NodeIcon$2, null, nodeIcon), /*#__PURE__*/ React__default.createElement(NodeLabel$2, null, nodeLabel)), /*#__PURE__*/ React__default.createElement(BadgeContainer$2, null, /*#__PURE__*/ React__default.createElement(Badge, {
49561
- variant: "gray",
49562
- title: modelName || "Unknown"
49563
- }, modelName || "Unknown"), /*#__PURE__*/ React__default.createElement(Badge, {
49564
- variant: "cost",
49565
- title: totalCostTooltip
49566
- }, totalCostFormatted))), /*#__PURE__*/ React__default.createElement(NodeContent$2, null, /*#__PURE__*/ React__default.createElement(InputArrayRenderer, {
49567
- input: inputArray
49568
- }), output ? /*#__PURE__*/ React__default.createElement(OutputRenderer, {
49569
- data: output
49570
- }) : null), hasOutgoingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
48672
+ }), /*#__PURE__*/ React__default.createElement(NodeBody$1, null, /*#__PURE__*/ React__default.createElement(TitleRow$1, null, /*#__PURE__*/ React__default.createElement(NodeIcon$1, null, nodeIcon), /*#__PURE__*/ React__default.createElement(NodeLabel$1, {
48673
+ title: nodeLabel
48674
+ }, nodeLabel)), /*#__PURE__*/ React__default.createElement(MetaLine, {
48675
+ title: providerLine
48676
+ }, /*#__PURE__*/ React__default.createElement(MetaLineIcon, {
48677
+ "aria-hidden": true
48678
+ }, /*#__PURE__*/ React__default.createElement(Cpu, {
48679
+ size: 12,
48680
+ strokeWidth: 2
48681
+ })), /*#__PURE__*/ React__default.createElement(MetaLineText, null, providerLine)), /*#__PURE__*/ React__default.createElement(CostLine, null, /*#__PURE__*/ React__default.createElement(CostLineIcon, {
48682
+ "aria-hidden": true
48683
+ }, /*#__PURE__*/ React__default.createElement(CircleDollarSign, {
48684
+ size: 13,
48685
+ strokeWidth: 2
48686
+ })), totalCostFormatted)), hasOutgoingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
49571
48687
  type: "source",
49572
48688
  position: Position.Bottom,
49573
48689
  style: {
@@ -49587,16 +48703,16 @@ const AgentNode = ({ data, id, onInspect, defaultDrawerOpen })=>{
49587
48703
  }
49588
48704
  })));
49589
48705
  };
49590
- // Styled components
49591
- const NodeContainer$2 = styled.div`
48706
+ const NodeContainer$1 = styled.div`
49592
48707
  border-radius: 0.5rem;
49593
48708
  background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49594
48709
  border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49595
48710
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49596
- min-width: 300px;
49597
- max-width: ${NODE_MAX_WIDTH}px;
48711
+ min-width: ${FLOW_NODE_MIN_WIDTH}px;
48712
+ max-width: ${FLOW_NODE_MAX_WIDTH}px;
49598
48713
  transition: all 0.2s ease-in-out;
49599
48714
  position: relative;
48715
+ cursor: pointer;
49600
48716
 
49601
48717
  &:hover {
49602
48718
  border-color: ${(props)=>props.theme?.colors?.primary || "hsl(221.2 83.2% 53.3%)"};
@@ -49605,68 +48721,98 @@ const NodeContainer$2 = styled.div`
49605
48721
  0 2px 4px -1px rgba(0, 0, 0, 0.06);
49606
48722
  }
49607
48723
  `;
49608
- const NodeHeader$2 = styled.div`
48724
+ const NodeBody$1 = styled.div`
49609
48725
  display: flex;
49610
- justify-content: space-between;
49611
- align-items: center;
49612
- gap: 0.5rem;
49613
- padding: 0.75rem;
49614
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
48726
+ flex-direction: column;
48727
+ gap: 0.35rem;
48728
+ padding: 0.5rem 0.625rem;
49615
48729
  `;
49616
- const NodeIconContainer$2 = styled.div`
48730
+ const TitleRow$1 = styled.div`
49617
48731
  display: flex;
49618
48732
  align-items: center;
49619
- gap: 0.5rem;
48733
+ gap: 0.375rem;
48734
+ min-width: 0;
48735
+ width: 100%;
49620
48736
  `;
49621
- const NodeIcon$2 = styled.div`
49622
- font-size: 1.25rem;
48737
+ const NodeIcon$1 = styled.div`
48738
+ font-size: 1.125rem;
49623
48739
  display: flex;
49624
48740
  align-items: center;
49625
48741
  justify-content: center;
48742
+ flex-shrink: 0;
49626
48743
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49627
48744
  `;
49628
- const NodeLabel$2 = styled.div`
48745
+ const NodeLabel$1 = styled.div`
48746
+ flex: 1 1 0;
48747
+ min-width: 0;
49629
48748
  font-weight: 600;
49630
48749
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49631
- font-size: 0.875rem;
49632
- word-break: break-words;
48750
+ font-size: 0.8125rem;
48751
+ line-height: 1.25;
48752
+ overflow: hidden;
48753
+ text-overflow: ellipsis;
48754
+ white-space: nowrap;
49633
48755
  `;
49634
- const BadgeContainer$2 = styled.div`
48756
+ const MetaLine = styled.div`
49635
48757
  display: flex;
49636
- gap: 0.5rem;
49637
- justify-content: flex-end;
49638
- align-items: center;
48758
+ align-items: flex-start;
48759
+ gap: 0.3rem;
48760
+ font-size: 0.6875rem;
48761
+ line-height: 1.3;
48762
+ color: ${(props)=>props.theme?.colors?.mutedForeground || "hsl(215.4 16.3% 46.9%)"};
49639
48763
  `;
49640
- const NodeContent$2 = styled.div`
49641
- padding: 0.75rem;
48764
+ const MetaLineIcon = styled.span`
48765
+ display: inline-flex;
48766
+ flex-shrink: 0;
48767
+ margin-top: 0.1em;
48768
+ color: inherit;
48769
+ `;
48770
+ const MetaLineText = styled.span`
48771
+ min-width: 0;
48772
+ flex: 1;
48773
+ word-break: break-word;
48774
+ display: -webkit-box;
48775
+ -webkit-line-clamp: 2;
48776
+ -webkit-box-orient: vertical;
48777
+ overflow: hidden;
48778
+ `;
48779
+ const CostLine = styled.div`
49642
48780
  display: flex;
49643
- flex-direction: column;
49644
- align-items: flex-start;
49645
- justify-content: center;
49646
- gap: 0.5rem;
48781
+ align-items: center;
48782
+ gap: 0.3rem;
48783
+ font-color: inherit;
48784
+ font-size: 0.75rem;
48785
+ font-weight: 600;
48786
+ `;
48787
+ const CostLineIcon = styled.span`
48788
+ display: inline-flex;
48789
+ flex-shrink: 0;
48790
+ color: inherit;
49647
48791
  `;
49648
48792
 
49649
- const CoordinatorNode = ({ data, id, onInspect })=>{
48793
+ const ToolNode = ({ data, id, onInspect })=>{
49650
48794
  const { theme } = useTheme$1();
49651
48795
  const themeColors = theme?.colors || {
49652
48796
  primary: "hsl(221.2 83.2% 53.3%)",
49653
48797
  background: "hsl(0 0% 100%)"
49654
48798
  };
49655
- // Check if this node has any outgoing edges (source edges)
48799
+ const [isDrawerOpen, setIsDrawerOpen] = useState(false);
49656
48800
  const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49657
- // Check if this node has any incoming edges (target edges)
49658
48801
  const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49659
48802
  const handleNodeClick = ()=>{
49660
- // Console log the node data for Coordinator nodes
49661
- console.log("Coordinator node clicked:", {
49662
- label: data.label,
49663
- nodeType: data.nodeType,
49664
- details: data.details
49665
- });
48803
+ setIsDrawerOpen(true);
48804
+ onInspect?.(data);
49666
48805
  };
49667
- const nodeLabel = data.label || toTitleCase("Coordinator") || "Coordinator";
49668
- return /*#__PURE__*/ React__default.createElement(NodeContainer$1, {
49669
- onClick: handleNodeClick
48806
+ const handleCloseDrawer = ()=>{
48807
+ setIsDrawerOpen(false);
48808
+ };
48809
+ const nodeLabel = data.label || toTitleCase("Tool") || "Tool";
48810
+ const nodeIcon = getNodeIcon({
48811
+ nodeType: "tool"
48812
+ });
48813
+ return /*#__PURE__*/ React__default.createElement(NodeContainer, {
48814
+ onClick: handleNodeClick,
48815
+ className: "nowheel"
49670
48816
  }, hasIncomingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
49671
48817
  type: "target",
49672
48818
  position: Position.Top,
@@ -49678,11 +48824,9 @@ const CoordinatorNode = ({ data, id, onInspect })=>{
49678
48824
  cursor: "default"
49679
48825
  },
49680
48826
  isConnectable: false
49681
- }), /*#__PURE__*/ React__default.createElement(NodeHeader$1, null, /*#__PURE__*/ React__default.createElement(NodeIconContainer$1, null, /*#__PURE__*/ React__default.createElement(NodeIcon$1, null, "🎯"), /*#__PURE__*/ React__default.createElement(NodeLabel$1, null, nodeLabel)), /*#__PURE__*/ React__default.createElement(BadgeContainer$1, null, /*#__PURE__*/ React__default.createElement(Badge, {
49682
- variant: "gray"
49683
- }, "Coordinator"))), /*#__PURE__*/ React__default.createElement(NodeContent$1, null, /*#__PURE__*/ React__default.createElement(JsonTreeViewer, {
49684
- data: data.details?.internals || {}
49685
- })), hasOutgoingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
48827
+ }), /*#__PURE__*/ React__default.createElement(NodeBody, null, /*#__PURE__*/ React__default.createElement(TitleRow, null, /*#__PURE__*/ React__default.createElement(NodeIcon, null, nodeIcon), /*#__PURE__*/ React__default.createElement(NodeLabel, {
48828
+ title: nodeLabel
48829
+ }, nodeLabel))), hasOutgoingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
49686
48830
  type: "source",
49687
48831
  position: Position.Bottom,
49688
48832
  style: {
@@ -49693,15 +48837,22 @@ const CoordinatorNode = ({ data, id, onInspect })=>{
49693
48837
  cursor: "default"
49694
48838
  },
49695
48839
  isConnectable: false
48840
+ }), /*#__PURE__*/ React__default.createElement(NodeDetailsDrawer, {
48841
+ isVisible: isDrawerOpen,
48842
+ onClose: handleCloseDrawer,
48843
+ nodeData: {
48844
+ ...data,
48845
+ id
48846
+ }
49696
48847
  }));
49697
48848
  };
49698
- // Styled components
49699
- const NodeContainer$1 = styled.div`
48849
+ const NodeContainer = styled.div`
49700
48850
  border-radius: 0.5rem;
49701
48851
  background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49702
48852
  border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49703
48853
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49704
- min-width: 300px;
48854
+ min-width: ${FLOW_NODE_MIN_WIDTH}px;
48855
+ max-width: ${FLOW_NODE_MAX_WIDTH}px;
49705
48856
  transition: all 0.2s ease-in-out;
49706
48857
  position: relative;
49707
48858
  cursor: pointer;
@@ -49713,205 +48864,553 @@ const NodeContainer$1 = styled.div`
49713
48864
  0 2px 4px -1px rgba(0, 0, 0, 0.06);
49714
48865
  }
49715
48866
  `;
49716
- const NodeHeader$1 = styled.div`
48867
+ const NodeBody = styled.div`
49717
48868
  display: flex;
49718
- justify-content: space-between;
49719
- align-items: center;
49720
- gap: 0.5rem;
49721
- padding: 0.75rem;
49722
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
48869
+ flex-direction: column;
48870
+ padding: 0.5rem 0.625rem;
49723
48871
  `;
49724
- const NodeIconContainer$1 = styled.div`
48872
+ const TitleRow = styled.div`
49725
48873
  display: flex;
49726
48874
  align-items: center;
49727
- gap: 0.5rem;
48875
+ gap: 0.375rem;
48876
+ min-width: 0;
49728
48877
  `;
49729
- const NodeIcon$1 = styled.div`
49730
- font-size: 1.25rem;
48878
+ const NodeIcon = styled.div`
48879
+ font-size: 1.125rem;
49731
48880
  display: flex;
49732
48881
  align-items: center;
49733
48882
  justify-content: center;
48883
+ flex-shrink: 0;
49734
48884
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49735
48885
  `;
49736
- const NodeLabel$1 = styled.div`
48886
+ const NodeLabel = styled.div`
49737
48887
  font-weight: 600;
49738
48888
  color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49739
- font-size: 0.875rem;
49740
- word-break: break-words;
48889
+ font-size: 0.8125rem;
48890
+ line-height: 1.25;
48891
+ word-break: break-word;
48892
+ min-width: 0;
49741
48893
  `;
49742
- const BadgeContainer$1 = styled.div`
49743
- display: flex;
49744
- gap: 0.5rem;
49745
- justify-content: flex-end;
49746
- align-items: center;
48894
+
48895
+ const Node$1 = ({ data, id })=>{
48896
+ const nodeType = data.nodeType || "Agent";
48897
+ const onInspect = data.onInspect;
48898
+ switch(nodeType){
48899
+ case "Agent":
48900
+ return /*#__PURE__*/ React__default.createElement(AgentNode, {
48901
+ data: data,
48902
+ id: id,
48903
+ onInspect: onInspect,
48904
+ defaultDrawerOpen: data.defaultDrawerOpen
48905
+ });
48906
+ case "Tool":
48907
+ return /*#__PURE__*/ React__default.createElement(ToolNode, {
48908
+ data: data,
48909
+ id: id,
48910
+ onInspect: onInspect
48911
+ });
48912
+ default:
48913
+ return /*#__PURE__*/ React__default.createElement(AgentNode, {
48914
+ data: data,
48915
+ id: id,
48916
+ onInspect: onInspect,
48917
+ defaultDrawerOpen: data.defaultDrawerOpen
48918
+ });
48919
+ }
48920
+ };
48921
+
48922
+ const TooltipContainer = styled.div`
48923
+ position: relative;
48924
+ display: inline-block;
49747
48925
  `;
49748
- const NodeContent$1 = styled.div`
49749
- padding: 0.75rem;
49750
- display: flex;
49751
- flex-direction: column;
49752
- align-items: flex-start;
49753
- justify-content: center;
49754
- gap: 0.5rem;
48926
+ const TooltipContent = styled.div`
48927
+ position: absolute;
48928
+ z-index: 1000;
48929
+ padding: 8px 12px;
48930
+ font-weight: 400;
48931
+ background-color: ${({ themeColors })=>themeColors.popover};
48932
+ color: ${({ themeColors })=>themeColors.popoverForeground};
48933
+ border: 1px solid ${({ themeColors })=>themeColors.border};
48934
+ border-radius: 6px;
48935
+ font-size: 12px;
48936
+ line-height: 1.4;
48937
+ white-space: nowrap;
48938
+ box-shadow:
48939
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
48940
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
48941
+ opacity: ${({ isVisible })=>isVisible ? 1 : 0};
48942
+ visibility: ${({ isVisible })=>isVisible ? "visible" : "hidden"};
48943
+ transition:
48944
+ opacity 0.15s ease-in-out,
48945
+ visibility 0.15s ease-in-out;
48946
+ pointer-events: none;
48947
+
48948
+ /* Arrow */
48949
+ &::before {
48950
+ content: "";
48951
+ position: absolute;
48952
+ width: 0;
48953
+ height: 0;
48954
+ border: 4px solid transparent;
48955
+ }
48956
+
48957
+ /* Placement-specific positioning and arrow */
48958
+ ${({ placement, themeColors })=>{
48959
+ switch(placement){
48960
+ case "top":
48961
+ return `
48962
+ bottom: 100%;
48963
+ left: 50%;
48964
+ transform: translateX(-50%);
48965
+ margin-bottom: 8px;
48966
+ &::before {
48967
+ top: 100%;
48968
+ left: 50%;
48969
+ transform: translateX(-50%);
48970
+ border-top-color: ${themeColors.border};
48971
+ }
48972
+ &::after {
48973
+ content: "";
48974
+ position: absolute;
48975
+ top: 100%;
48976
+ left: 50%;
48977
+ transform: translateX(-50%);
48978
+ width: 0;
48979
+ height: 0;
48980
+ border: 3px solid transparent;
48981
+ border-top-color: ${themeColors.popover};
48982
+ }
48983
+ `;
48984
+ case "bottom":
48985
+ return `
48986
+ top: 100%;
48987
+ left: 50%;
48988
+ transform: translateX(-50%);
48989
+ margin-top: 8px;
48990
+ &::before {
48991
+ bottom: 100%;
48992
+ left: 50%;
48993
+ transform: translateX(-50%);
48994
+ border-bottom-color: ${themeColors.border};
48995
+ }
48996
+ &::after {
48997
+ content: "";
48998
+ position: absolute;
48999
+ bottom: 100%;
49000
+ left: 50%;
49001
+ transform: translateX(-50%);
49002
+ width: 0;
49003
+ height: 0;
49004
+ border: 3px solid transparent;
49005
+ border-bottom-color: ${themeColors.popover};
49006
+ }
49007
+ `;
49008
+ case "left":
49009
+ return `
49010
+ right: 100%;
49011
+ top: 50%;
49012
+ transform: translateY(-50%);
49013
+ margin-right: 8px;
49014
+ &::before {
49015
+ left: 100%;
49016
+ top: 50%;
49017
+ transform: translateY(-50%);
49018
+ border-left-color: ${themeColors.border};
49019
+ }
49020
+ &::after {
49021
+ content: "";
49022
+ position: absolute;
49023
+ left: 100%;
49024
+ top: 50%;
49025
+ transform: translateY(-50%);
49026
+ width: 0;
49027
+ height: 0;
49028
+ border: 3px solid transparent;
49029
+ border-left-color: ${themeColors.popover};
49030
+ }
49031
+ `;
49032
+ case "right":
49033
+ return `
49034
+ left: 100%;
49035
+ top: 50%;
49036
+ transform: translateY(-50%);
49037
+ margin-left: 8px;
49038
+ &::before {
49039
+ right: 100%;
49040
+ top: 50%;
49041
+ transform: translateY(-50%);
49042
+ border-right-color: ${themeColors.border};
49043
+ }
49044
+ &::after {
49045
+ content: "";
49046
+ position: absolute;
49047
+ right: 100%;
49048
+ top: 50%;
49049
+ transform: translateY(-50%);
49050
+ width: 0;
49051
+ height: 0;
49052
+ border: 3px solid transparent;
49053
+ border-right-color: ${themeColors.popover};
49054
+ }
49055
+ `;
49056
+ case "topLeft":
49057
+ return `
49058
+ bottom: 100%;
49059
+ right: 0;
49060
+ margin-bottom: 8px;
49061
+ &::before {
49062
+ top: 100%;
49063
+ right: 8px;
49064
+ border-top-color: ${themeColors.border};
49065
+ }
49066
+ &::after {
49067
+ content: "";
49068
+ position: absolute;
49069
+ top: 100%;
49070
+ right: 8px;
49071
+ width: 0;
49072
+ height: 0;
49073
+ border: 3px solid transparent;
49074
+ border-top-color: ${themeColors.popover};
49075
+ }
49076
+ `;
49077
+ case "topRight":
49078
+ return `
49079
+ bottom: 100%;
49080
+ left: 0;
49081
+ margin-bottom: 8px;
49082
+ &::before {
49083
+ top: 100%;
49084
+ left: 8px;
49085
+ border-top-color: ${themeColors.border};
49086
+ }
49087
+ &::after {
49088
+ content: "";
49089
+ position: absolute;
49090
+ top: 100%;
49091
+ left: 8px;
49092
+ width: 0;
49093
+ height: 0;
49094
+ border: 3px solid transparent;
49095
+ border-top-color: ${themeColors.popover};
49096
+ }
49097
+ `;
49098
+ case "bottomLeft":
49099
+ return `
49100
+ top: 100%;
49101
+ right: 0;
49102
+ margin-top: 8px;
49103
+ &::before {
49104
+ bottom: 100%;
49105
+ right: 8px;
49106
+ border-bottom-color: ${themeColors.border};
49107
+ }
49108
+ &::after {
49109
+ content: "";
49110
+ position: absolute;
49111
+ bottom: 100%;
49112
+ right: 8px;
49113
+ width: 0;
49114
+ height: 0;
49115
+ border: 3px solid transparent;
49116
+ border-bottom-color: ${themeColors.popover};
49117
+ }
49118
+ `;
49119
+ case "bottomRight":
49120
+ return `
49121
+ top: 100%;
49122
+ left: 0;
49123
+ margin-top: 8px;
49124
+ &::before {
49125
+ bottom: 100%;
49126
+ left: 8px;
49127
+ border-bottom-color: ${themeColors.border};
49128
+ }
49129
+ &::after {
49130
+ content: "";
49131
+ position: absolute;
49132
+ bottom: 100%;
49133
+ left: 8px;
49134
+ width: 0;
49135
+ height: 0;
49136
+ border: 3px solid transparent;
49137
+ border-bottom-color: ${themeColors.popover};
49138
+ }
49139
+ `;
49140
+ case "leftTop":
49141
+ return `
49142
+ right: 100%;
49143
+ bottom: 0;
49144
+ margin-right: 8px;
49145
+ &::before {
49146
+ left: 100%;
49147
+ bottom: 8px;
49148
+ border-left-color: ${themeColors.border};
49149
+ }
49150
+ &::after {
49151
+ content: "";
49152
+ position: absolute;
49153
+ left: 100%;
49154
+ bottom: 8px;
49155
+ width: 0;
49156
+ height: 0;
49157
+ border: 3px solid transparent;
49158
+ border-left-color: ${themeColors.popover};
49159
+ }
49160
+ `;
49161
+ case "leftBottom":
49162
+ return `
49163
+ right: 100%;
49164
+ top: 0;
49165
+ margin-right: 8px;
49166
+ &::before {
49167
+ left: 100%;
49168
+ top: 8px;
49169
+ border-left-color: ${themeColors.border};
49170
+ }
49171
+ &::after {
49172
+ content: "";
49173
+ position: absolute;
49174
+ left: 100%;
49175
+ top: 8px;
49176
+ width: 0;
49177
+ height: 0;
49178
+ border: 3px solid transparent;
49179
+ border-left-color: ${themeColors.popover};
49180
+ }
49181
+ `;
49182
+ case "rightTop":
49183
+ return `
49184
+ left: 100%;
49185
+ bottom: 0;
49186
+ margin-left: 8px;
49187
+ &::before {
49188
+ right: 100%;
49189
+ bottom: 8px;
49190
+ border-right-color: ${themeColors.border};
49191
+ }
49192
+ &::after {
49193
+ content: "";
49194
+ position: absolute;
49195
+ right: 100%;
49196
+ bottom: 8px;
49197
+ width: 0;
49198
+ height: 0;
49199
+ border: 3px solid transparent;
49200
+ border-right-color: ${themeColors.popover};
49201
+ }
49202
+ `;
49203
+ case "rightBottom":
49204
+ return `
49205
+ left: 100%;
49206
+ top: 0;
49207
+ margin-left: 8px;
49208
+ &::before {
49209
+ right: 100%;
49210
+ top: 8px;
49211
+ border-right-color: ${themeColors.border};
49212
+ }
49213
+ &::after {
49214
+ content: "";
49215
+ position: absolute;
49216
+ right: 100%;
49217
+ top: 8px;
49218
+ width: 0;
49219
+ height: 0;
49220
+ border: 3px solid transparent;
49221
+ border-right-color: ${themeColors.popover};
49222
+ }
49223
+ `;
49224
+ default:
49225
+ return `
49226
+ bottom: 100%;
49227
+ left: 50%;
49228
+ transform: translateX(-50%);
49229
+ margin-bottom: 8px;
49230
+ &::before {
49231
+ top: 100%;
49232
+ left: 50%;
49233
+ transform: translateX(-50%);
49234
+ border-top-color: ${themeColors.border};
49235
+ }
49236
+ &::after {
49237
+ content: "";
49238
+ position: absolute;
49239
+ top: 100%;
49240
+ left: 50%;
49241
+ transform: translateX(-50%);
49242
+ width: 0;
49243
+ height: 0;
49244
+ border: 3px solid transparent;
49245
+ border-top-color: ${themeColors.popover};
49246
+ }
49247
+ `;
49248
+ }
49249
+ }}
49755
49250
  `;
49756
-
49757
- const ToolNode = ({ data, id, onInspect })=>{
49251
+ const Tooltip = ({ children, content, placement = "top", delay = 300 })=>{
49758
49252
  const { theme } = useTheme$1();
49759
- const themeColors = theme?.colors || {
49760
- primary: "hsl(221.2 83.2% 53.3%)",
49761
- background: "hsl(0 0% 100%)"
49253
+ const [isVisible, setIsVisible] = React.useState(false);
49254
+ const timeoutRef = React.useRef();
49255
+ const showTooltip = ()=>{
49256
+ if (timeoutRef.current) {
49257
+ clearTimeout(timeoutRef.current);
49258
+ }
49259
+ timeoutRef.current = setTimeout(()=>{
49260
+ setIsVisible(true);
49261
+ }, delay);
49762
49262
  };
49763
- // Check if this node has any outgoing edges (source edges)
49764
- const hasOutgoingEdges = data.edges?.some((edge)=>edge.source === id) || false;
49765
- // Check if this node has any incoming edges (target edges)
49766
- const hasIncomingEdges = data.edges?.some((edge)=>edge.target === id) || false;
49767
- const handleNodeClick = ()=>{
49768
- if (onInspect) {
49769
- onInspect(data);
49263
+ const hideTooltip = ()=>{
49264
+ if (timeoutRef.current) {
49265
+ clearTimeout(timeoutRef.current);
49770
49266
  }
49267
+ setIsVisible(false);
49771
49268
  };
49772
- const nodeLabel = data.label || toTitleCase("Tool") || "Tool";
49773
- const latency = data.details?.internals?.latency?.total_time;
49774
- let nodeData = null;
49775
- const baseData = data.details?.internals || {};
49776
- if (data.edgeDetails && data.edgeDetails.length > 0) {
49777
- nodeData = {
49778
- ...baseData,
49779
- input: {
49780
- ...data.edgeDetails[0]?.input_kwargs
49781
- },
49782
- output: data.edgeDetails[0]?.output,
49783
- status: data.edgeDetails[0]?.status
49269
+ React.useEffect(()=>{
49270
+ return ()=>{
49271
+ if (timeoutRef.current) {
49272
+ clearTimeout(timeoutRef.current);
49273
+ }
49784
49274
  };
49785
- }
49786
- return /*#__PURE__*/ React__default.createElement(NodeContainer, {
49787
- onClick: handleNodeClick,
49788
- className: "nowheel"
49789
- }, hasIncomingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
49790
- type: "target",
49791
- position: Position.Top,
49792
- style: {
49793
- width: "8px",
49794
- height: "8px",
49795
- border: `2px solid ${themeColors.primary}`,
49796
- backgroundColor: themeColors.background,
49797
- cursor: "default"
49798
- },
49799
- isConnectable: false
49800
- }), /*#__PURE__*/ React__default.createElement(NodeHeader, null, /*#__PURE__*/ React__default.createElement(NodeIconContainer, null, /*#__PURE__*/ React__default.createElement(NodeIcon, null, "🔧"), /*#__PURE__*/ React__default.createElement(NodeLabel, null, nodeLabel)), latency != null && /*#__PURE__*/ React__default.createElement(BadgeContainer, null, /*#__PURE__*/ React__default.createElement(Badge, {
49801
- variant: "latency"
49802
- }, formatLatency(latency)))), nodeData && /*#__PURE__*/ React__default.createElement(NodeContent, {
49803
- className: "nodrag"
49804
- }, /*#__PURE__*/ React__default.createElement(JsonTreeViewer, {
49805
- excludeKeys: [
49806
- "latency"
49807
- ],
49808
- data: nodeData
49809
- })), hasOutgoingEdges && /*#__PURE__*/ React__default.createElement(Handle$1, {
49810
- type: "source",
49811
- position: Position.Bottom,
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
- }));
49275
+ }, []);
49276
+ return /*#__PURE__*/ React.createElement(TooltipContainer, {
49277
+ onMouseEnter: showTooltip,
49278
+ onMouseLeave: hideTooltip,
49279
+ onFocus: showTooltip,
49280
+ onBlur: hideTooltip
49281
+ }, children, /*#__PURE__*/ React.createElement(TooltipContent, {
49282
+ isVisible: isVisible,
49283
+ placement: placement,
49284
+ themeColors: theme.colors,
49285
+ role: "tooltip"
49286
+ }, content));
49821
49287
  };
49822
- // Styled components
49823
- const NodeContainer = styled.div`
49824
- border-radius: 0.5rem;
49825
- background-color: ${(props)=>props.theme?.colors?.card || "hsl(0 0% 100%)"};
49826
- border: 2px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49827
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
49828
- min-width: 300px;
49829
- max-width: ${NODE_MAX_WIDTH}px;
49830
- transition: all 0.2s ease-in-out;
49831
- position: relative;
49832
- cursor: pointer;
49833
49288
 
49834
- &:hover {
49835
- border-color: ${(props)=>props.theme?.colors?.primary || "hsl(221.2 83.2% 53.3%)"};
49836
- box-shadow:
49837
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
49838
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
49839
- }
49840
- `;
49841
- const NodeHeader = styled.div`
49842
- display: flex;
49843
- justify-content: space-between;
49844
- align-items: center;
49845
- gap: 0.5rem;
49846
- padding: 0.75rem;
49847
- border-bottom: 1px solid ${(props)=>props.theme?.colors?.border || "hsl(214.3 31.8% 91.4%)"};
49848
- `;
49849
- const NodeIconContainer = styled.div`
49850
- display: flex;
49851
- align-items: center;
49852
- gap: 0.5rem;
49853
- `;
49854
- const NodeIcon = styled.div`
49855
- font-size: 1.25rem;
49856
- display: flex;
49857
- align-items: center;
49858
- justify-content: center;
49859
- color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49860
- `;
49861
- const NodeLabel = styled.div`
49862
- font-weight: 600;
49863
- color: ${(props)=>props.theme?.colors?.foreground || "hsl(222.2 84% 4.9%)"};
49864
- font-size: 0.875rem;
49865
- word-break: break-words;
49866
- `;
49867
49289
  const BadgeContainer = styled.div`
49868
- display: flex;
49869
- gap: 0.5rem;
49870
- justify-content: flex-end;
49290
+ display: inline-flex;
49871
49291
  align-items: center;
49872
- `;
49873
- const NodeContent = styled.div`
49874
- padding: 0.75rem;
49875
- display: flex;
49876
- flex-direction: column;
49877
- align-items: flex-start;
49878
- justify-content: center;
49879
- gap: 0.5rem;
49880
- `;
49292
+ border-radius: 9999px;
49293
+ border: 1px solid transparent;
49294
+ padding: 0.125rem 0.625rem;
49295
+ font-size: 0.75rem;
49296
+ font-weight: 600;
49297
+ transition: colors 0.2s ease-in-out;
49298
+ outline: none;
49881
49299
 
49882
- const Node$1 = ({ data, id })=>{
49883
- const nodeType = data.nodeType || "Agent";
49884
- const onInspect = data.onInspect; // Extract onInspect from data
49885
- // Route to the appropriate node component based on type
49886
- switch(nodeType){
49887
- case "Agent":
49888
- return /*#__PURE__*/ React__default.createElement(AgentNode, {
49889
- data: data,
49890
- id: id,
49891
- onInspect: onInspect,
49892
- defaultDrawerOpen: data.defaultDrawerOpen
49893
- });
49894
- case "Tool":
49895
- return /*#__PURE__*/ React__default.createElement(ToolNode, {
49896
- data: data,
49897
- id: id,
49898
- onInspect: onInspect
49899
- });
49900
- case "Coordinator":
49901
- return /*#__PURE__*/ React__default.createElement(CoordinatorNode, {
49902
- data: data,
49903
- id: id,
49904
- onInspect: onInspect
49905
- });
49300
+ &:focus {
49301
+ outline: none;
49302
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
49303
+ }
49304
+
49305
+ ${({ variant, themeColors })=>{
49306
+ switch(variant){
49307
+ case "default":
49308
+ return `
49309
+ background-color: ${themeColors.primary};
49310
+ color: ${themeColors.primaryForeground};
49311
+ &:hover {
49312
+ background-color: ${themeColors.primary};
49313
+ opacity: 0.9;
49314
+ }
49315
+ `;
49316
+ case "secondary":
49317
+ return `
49318
+ background-color: ${themeColors.secondary};
49319
+ color: ${themeColors.secondaryForeground};
49320
+ &:hover {
49321
+ background-color: ${themeColors.muted};
49322
+ }
49323
+ `;
49324
+ case "destructive":
49325
+ return `
49326
+ background-color: ${themeColors.destructive};
49327
+ color: ${themeColors.destructiveForeground};
49328
+ &:hover {
49329
+ background-color: ${themeColors.destructive};
49330
+ opacity: 0.9;
49331
+ }
49332
+ `;
49333
+ case "outline":
49334
+ return `
49335
+ background-color: transparent;
49336
+ color: ${themeColors.cardForeground};
49337
+ border-color: ${themeColors.border};
49338
+ `;
49339
+ case "cost":
49340
+ return `
49341
+ background-color: ${themeColors.secondary};
49342
+ color: ${themeColors.secondaryForeground};
49343
+ &:hover {
49344
+ background-color: ${themeColors.muted};
49345
+ }
49346
+ `;
49347
+ case "gray":
49348
+ return `
49349
+ background-color: ${themeColors.secondary};
49350
+ color: ${themeColors.secondaryForeground};
49351
+ &:hover {
49352
+ background-color: ${themeColors.muted};
49353
+ }
49354
+ `;
49355
+ case "latency":
49356
+ return `
49357
+ background-color: ${themeColors.secondary};
49358
+ color: ${themeColors.secondaryForeground};
49359
+ &:hover {
49360
+ background-color: ${themeColors.muted};
49361
+ }
49362
+ `;
49363
+ case "latencyLow":
49364
+ return `
49365
+ background-color: ${themeColors.secondary};
49366
+ color: ${themeColors.secondaryForeground};
49367
+ &:hover {
49368
+ background-color: ${themeColors.muted};
49369
+ }
49370
+ `;
49371
+ case "latencyMedium":
49372
+ return `
49373
+ background-color: ${themeColors.secondary};
49374
+ color: ${themeColors.secondaryForeground};
49375
+ &:hover {
49376
+ background-color: ${themeColors.muted};
49377
+ }
49378
+ `;
49379
+ case "latencyHigh":
49380
+ return `
49381
+ background-color: ${themeColors.destructive};
49382
+ color: ${themeColors.destructiveForeground};
49383
+ &:hover {
49384
+ background-color: ${themeColors.destructive};
49385
+ opacity: 0.9;
49386
+ }
49387
+ `;
49906
49388
  default:
49907
- // Fallback to Agent node for unknown types
49908
- return /*#__PURE__*/ React__default.createElement(AgentNode, {
49909
- data: data,
49910
- id: id,
49911
- onInspect: onInspect,
49912
- defaultDrawerOpen: data.defaultDrawerOpen
49913
- });
49389
+ return `
49390
+ background-color: ${themeColors.primary};
49391
+ color: ${themeColors.primaryForeground};
49392
+ &:hover {
49393
+ background-color: ${themeColors.primary};
49394
+ opacity: 0.9;
49395
+ }
49396
+ `;
49397
+ }
49398
+ }}
49399
+ `;
49400
+ const Badge = ({ variant = "default", children, title, placement = "top" })=>{
49401
+ const { theme } = useTheme$1();
49402
+ const themeColors = theme.colors;
49403
+ const badgeContent = /*#__PURE__*/ React.createElement(BadgeContainer, {
49404
+ variant: variant,
49405
+ themeColors: themeColors
49406
+ }, children);
49407
+ if (title) {
49408
+ return /*#__PURE__*/ React.createElement(Tooltip, {
49409
+ content: title,
49410
+ placement: placement
49411
+ }, badgeContent);
49914
49412
  }
49413
+ return badgeContent;
49915
49414
  };
49916
49415
 
49917
49416
  // Styled Components
@@ -52592,7 +52091,7 @@ SheetDescription.displayName = Description.displayName;
52592
52091
  /**
52593
52092
  * Calculates a clean tree layout: parents centered above children, siblings spaced evenly, no overlap.
52594
52093
  */ const calculateAutoLayout = (nodes, edges, options = {})=>{
52595
- const { minNodeSpacing = 200, containerWidth = 600 } = options;
52094
+ const { minNodeSpacing = 72, containerWidth = 600 } = options;
52596
52095
  // Handle undefined or null nodes
52597
52096
  if (!nodes || nodes.length === 0) {
52598
52097
  return new Map();
@@ -52642,8 +52141,8 @@ SheetDescription.displayName = Description.displayName;
52642
52141
  });
52643
52142
  // Calculate subtree widths for each node (for centering horizontally)
52644
52143
  const subtreeWidth = new Map();
52645
- const nodeWidth = 200; // Approximate node width
52646
- const nodeSpacing = Math.max(250, minNodeSpacing + 50); // Horizontal spacing between nodes (ensures minimum spacing + buffer)
52144
+ const nodeWidth = LAYOUT_NODE_WIDTH;
52145
+ const nodeSpacing = Math.max(8, Math.floor(minNodeSpacing / 8));
52647
52146
  const calcSubtreeWidth = (nodeId)=>{
52648
52147
  const children = childrenMap.get(nodeId) || [];
52649
52148
  if (children.length === 0) {
@@ -52661,8 +52160,8 @@ SheetDescription.displayName = Description.displayName;
52661
52160
  roots.forEach((root)=>calcSubtreeWidth(root.identifier));
52662
52161
  // Assign positions recursively - now top to bottom
52663
52162
  const positions = new Map();
52664
- const levelSpacing = Math.max(400, minNodeSpacing + 200); // Vertical spacing between levels (ensures minimum spacing + buffer)
52665
- const verticalMargin = 100; // Add margin to the top
52163
+ const levelSpacing = Math.max(130, minNodeSpacing + 42);
52164
+ const verticalMargin = 40;
52666
52165
  const assignPositions = (nodeId, xLeft, level)=>{
52667
52166
  const width = subtreeWidth.get(nodeId) || nodeWidth;
52668
52167
  const y = level * levelSpacing + verticalMargin; // Add margin here
@@ -52746,13 +52245,12 @@ SheetDescription.displayName = Description.displayName;
52746
52245
 
52747
52246
  const nodeTypes = {
52748
52247
  Agent: Node$1,
52749
- Tool: Node$1,
52750
- Coordinator: Node$1
52248
+ Tool: Node$1
52751
52249
  };
52752
52250
  const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", height = "100dvh", className = "", defaultZoom = 1, defaultPan = {
52753
52251
  x: 0,
52754
52252
  y: 0
52755
- }, disableAutoFit = true, defaultAutoFitDuration = 1000, defaultAutoFitDelay = 250, showTimeline = false, minNodeSpacing = 300, onInspect, panToNodeId })=>{
52253
+ }, disableAutoFit = true, defaultAutoFitDuration = 1000, defaultAutoFitDelay = 250, showTimeline = false, minNodeSpacing = 72, onInspect, panToNodeId })=>{
52756
52254
  const { theme, isDarkMode } = useTheme$1();
52757
52255
  const themeColors = theme.colors;
52758
52256
  // Helper function to determine if we should apply minimum dimensions
@@ -52944,15 +52442,17 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
52944
52442
  y: 0
52945
52443
  };
52946
52444
  const isActive = node.stamp.step === currentStep;
52445
+ const rawType = node.node_type || "Agent";
52446
+ const resolvedType = rawType === "Coordinator" ? "Agent" : rawType;
52947
52447
  // Extract edge details for Tool nodes
52948
52448
  const edgeDetails = node.node_type === "Tool" ? stepEdges.filter((edge)=>edge.target === node.identifier && edge.details).map((edge)=>edge.details) : undefined;
52949
52449
  return {
52950
52450
  id: node.identifier,
52951
- type: node.node_type || "Agent",
52451
+ type: resolvedType,
52952
52452
  position,
52953
52453
  data: {
52954
52454
  label: node.name || node.node_type,
52955
- nodeType: node.node_type,
52455
+ nodeType: resolvedType,
52956
52456
  details: node.details,
52957
52457
  isActive,
52958
52458
  id: node.identifier,
@@ -52984,7 +52484,6 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
52984
52484
  animated: isActive,
52985
52485
  bidirectional: true,
52986
52486
  style: {
52987
- stroke: isActive ? themeColors.primary : themeColors.mutedForeground,
52988
52487
  strokeWidth: isActive ? 3 : 2
52989
52488
  },
52990
52489
  label: edge.stamp?.identifier ? truncateText(String(edge.stamp.identifier), 50) : undefined,
@@ -53000,9 +52499,7 @@ const AgenticFlowVisualizer = ({ flowData: propFlowData, width = "100dvw", heigh
53000
52499
  });
53001
52500
  }, [
53002
52501
  currentStep,
53003
- getEdgesForStep,
53004
- themeColors.primary,
53005
- themeColors.mutedForeground
52502
+ getEdgesForStep
53006
52503
  ]);
53007
52504
  const [nodesState, setNodes, onNodesChange] = useNodesState(nodes);
53008
52505
  const [edgesState, setEdges, onEdgesChange] = useEdgesState(edges);
@@ -112730,7 +112227,328 @@ class ErrorBoundary extends Component {
112730
112227
  }
112731
112228
  }
112732
112229
 
112230
+ const MAX_TITLE_LEN = 200;
112231
+ const TOOLBAR_ICON_SIZE = 15;
112232
+ const JsonValueTree = ({ data, className, maxHeight = "auto" })=>{
112233
+ const { theme } = useTheme$1();
112234
+ const { mutedForeground } = theme.colors;
112235
+ const treeData = useMemo(()=>buildTreeData(data), [
112236
+ data
112237
+ ]);
112238
+ const defaultExpandedKeys = useMemo(()=>collectKeysToDepth(treeData, 2), [
112239
+ treeData
112240
+ ]);
112241
+ const allExpandableKeys = useMemo(()=>collectAllExpandableKeys(treeData), [
112242
+ treeData
112243
+ ]);
112244
+ const [expandedKeys, setExpandedKeys] = useState(()=>defaultExpandedKeys);
112245
+ const hasBranches = allExpandableKeys.length > 0;
112246
+ const isAllExpanded = hasBranches && allExpandableKeys.every((k)=>expandedKeys.includes(k));
112247
+ useEffect(()=>{
112248
+ setExpandedKeys(defaultExpandedKeys);
112249
+ }, [
112250
+ defaultExpandedKeys
112251
+ ]);
112252
+ const handleCopyJson = useCallback(async ()=>{
112253
+ try {
112254
+ const text = JSON.stringify(data, null, 2);
112255
+ await navigator.clipboard.writeText(text);
112256
+ staticMethods.success("JSON copied to clipboard");
112257
+ } catch {
112258
+ staticMethods.error("Could not copy to clipboard");
112259
+ }
112260
+ }, [
112261
+ data
112262
+ ]);
112263
+ const handleToggleExpandCollapse = useCallback(()=>{
112264
+ if (isAllExpanded) {
112265
+ setExpandedKeys([]);
112266
+ } else {
112267
+ setExpandedKeys(allExpandableKeys);
112268
+ }
112269
+ }, [
112270
+ isAllExpanded,
112271
+ allExpandableKeys
112272
+ ]);
112273
+ return /*#__PURE__*/ React__default.createElement("div", {
112274
+ className: className,
112275
+ style: {
112276
+ maxHeight,
112277
+ display: "flex",
112278
+ flexDirection: "column",
112279
+ borderRadius: 4,
112280
+ overflow: "hidden"
112281
+ }
112282
+ }, /*#__PURE__*/ React__default.createElement("div", {
112283
+ style: {
112284
+ display: "flex",
112285
+ justifyContent: "flex-end",
112286
+ alignItems: "center",
112287
+ gap: 2,
112288
+ padding: "4px 6px 2px",
112289
+ flexShrink: 0,
112290
+ background: "transparent"
112291
+ }
112292
+ }, /*#__PURE__*/ React__default.createElement(Tooltip$1, {
112293
+ title: "Copy JSON"
112294
+ }, /*#__PURE__*/ React__default.createElement(Button$1, {
112295
+ type: "text",
112296
+ size: "small",
112297
+ "aria-label": "Copy JSON to clipboard",
112298
+ icon: /*#__PURE__*/ React__default.createElement(Copy, {
112299
+ size: TOOLBAR_ICON_SIZE,
112300
+ color: mutedForeground
112301
+ }),
112302
+ onClick: handleCopyJson
112303
+ })), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
112304
+ title: isAllExpanded ? "Collapse all" : "Expand all"
112305
+ }, /*#__PURE__*/ React__default.createElement(Button$1, {
112306
+ type: "text",
112307
+ size: "small",
112308
+ "aria-label": isAllExpanded ? "Collapse all tree nodes" : "Expand all tree nodes",
112309
+ disabled: !hasBranches,
112310
+ icon: isAllExpanded ? /*#__PURE__*/ React__default.createElement(FoldVertical, {
112311
+ size: TOOLBAR_ICON_SIZE,
112312
+ color: mutedForeground
112313
+ }) : /*#__PURE__*/ React__default.createElement(UnfoldVertical, {
112314
+ size: TOOLBAR_ICON_SIZE,
112315
+ color: mutedForeground
112316
+ }),
112317
+ onClick: handleToggleExpandCollapse
112318
+ }))), /*#__PURE__*/ React__default.createElement("div", {
112319
+ style: {
112320
+ flex: 1,
112321
+ minHeight: 0,
112322
+ overflow: "auto",
112323
+ padding: "4px 0"
112324
+ }
112325
+ }, /*#__PURE__*/ React__default.createElement(Tree, {
112326
+ // No showLine — connector lines look like a floating spine for many top-level fields.
112327
+ showLine: true,
112328
+ blockNode: true,
112329
+ expandAction: "click",
112330
+ selectable: false,
112331
+ showIcon: false,
112332
+ treeData: treeData,
112333
+ expandedKeys: expandedKeys,
112334
+ onExpand: (keys)=>setExpandedKeys(keys),
112335
+ rootStyle: {
112336
+ backgroundColor: "transparent",
112337
+ padding: "0 4px"
112338
+ }
112339
+ })));
112340
+ };
112341
+ function collectKeysToDepth(nodes, maxDepth, depth = 0) {
112342
+ if (depth >= maxDepth) return [];
112343
+ const keys = [];
112344
+ for (const n of nodes){
112345
+ if (n.children && n.children.length > 0) {
112346
+ keys.push(n.key);
112347
+ keys.push(...collectKeysToDepth(n.children, maxDepth, depth + 1));
112348
+ }
112349
+ }
112350
+ return keys;
112351
+ }
112352
+ function collectAllExpandableKeys(nodes) {
112353
+ const keys = [];
112354
+ for (const n of nodes){
112355
+ if (n.children && n.children.length > 0) {
112356
+ keys.push(n.key);
112357
+ keys.push(...collectAllExpandableKeys(n.children));
112358
+ }
112359
+ }
112360
+ return keys;
112361
+ }
112362
+ /**
112363
+ * Object keys A→Z, but any property whose value is an array is listed after all non-array properties
112364
+ * (each block still A→Z). Tree has no built-in sort — this defines `treeData` order.
112365
+ */ function sortObjectEntriesForTree(entries) {
112366
+ return [
112367
+ ...entries
112368
+ ].sort((a, b)=>{
112369
+ const aArr = Array.isArray(a[1]);
112370
+ const bArr = Array.isArray(b[1]);
112371
+ if (aArr !== bArr) {
112372
+ return aArr ? 1 : -1;
112373
+ }
112374
+ return a[0].localeCompare(b[0], undefined, {
112375
+ sensitivity: "base",
112376
+ numeric: true
112377
+ });
112378
+ });
112379
+ }
112380
+ function valueToTreeNodes(value, path) {
112381
+ if (value === null || value === undefined) {
112382
+ return [
112383
+ {
112384
+ key: path,
112385
+ title: formatJsonTreePrimitive(value),
112386
+ isLeaf: true
112387
+ }
112388
+ ];
112389
+ }
112390
+ if (Array.isArray(value)) {
112391
+ if (value.length === 0) {
112392
+ return [
112393
+ {
112394
+ key: `${path}.__empty_arr__`,
112395
+ title: "[] (0 items)",
112396
+ isLeaf: true
112397
+ }
112398
+ ];
112399
+ }
112400
+ return value.map((item, i)=>{
112401
+ const seg = `[${i}]`;
112402
+ const childPath = `${path}.${escapeDotPathSegment(seg)}`;
112403
+ if (item === null || item === undefined || typeof item !== "object") {
112404
+ return {
112405
+ key: childPath,
112406
+ title: `${seg}: ${formatJsonTreePrimitive(item)}`,
112407
+ isLeaf: true
112408
+ };
112409
+ }
112410
+ if (Array.isArray(item) || isPlainObject(item)) {
112411
+ const children = valueToTreeNodes(item, childPath);
112412
+ return {
112413
+ key: childPath,
112414
+ title: `${seg} (${Array.isArray(item) ? `Array(${item.length})` : `Object(${Object.keys(item).length})`})`,
112415
+ children
112416
+ };
112417
+ }
112418
+ return {
112419
+ key: childPath,
112420
+ title: `${seg}: ${formatJsonTreePrimitive(item)}`,
112421
+ isLeaf: true
112422
+ };
112423
+ });
112424
+ }
112425
+ if (isPlainObject(value)) {
112426
+ const entries = sortObjectEntriesForTree(Object.entries(value));
112427
+ if (entries.length === 0) {
112428
+ return [
112429
+ {
112430
+ key: `${path}.__empty_obj__`,
112431
+ title: "{} (0 keys)",
112432
+ isLeaf: true
112433
+ }
112434
+ ];
112435
+ }
112436
+ return entries.map(([k, v])=>{
112437
+ const childPath = `${path}.${escapeDotPathSegment(k)}`;
112438
+ if (v === null || v === undefined || typeof v !== "object") {
112439
+ const text = `${k}: ${formatJsonTreePrimitive(v)}`;
112440
+ const title = text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
112441
+ title: text
112442
+ }, /*#__PURE__*/ React__default.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text;
112443
+ return {
112444
+ key: childPath,
112445
+ title,
112446
+ isLeaf: true
112447
+ };
112448
+ }
112449
+ if (Array.isArray(v) || isPlainObject(v)) {
112450
+ const children = valueToTreeNodes(v, childPath);
112451
+ const summary = Array.isArray(v) ? `Array(${v.length})` : `Object(${Object.keys(v).length})`;
112452
+ return {
112453
+ key: childPath,
112454
+ title: `${k}: ${summary}`,
112455
+ children
112456
+ };
112457
+ }
112458
+ const text = `${k}: ${formatJsonTreePrimitive(v)}`;
112459
+ return {
112460
+ key: childPath,
112461
+ title: text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
112462
+ title: text
112463
+ }, /*#__PURE__*/ React__default.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text,
112464
+ isLeaf: true
112465
+ };
112466
+ });
112467
+ }
112468
+ const text = formatJsonTreePrimitive(value);
112469
+ return [
112470
+ {
112471
+ key: path,
112472
+ title: text.length > MAX_TITLE_LEN ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
112473
+ title: text
112474
+ }, /*#__PURE__*/ React__default.createElement("span", null, text.slice(0, MAX_TITLE_LEN), "…")) : text,
112475
+ isLeaf: true
112476
+ }
112477
+ ];
112478
+ }
112479
+ /** Top-level tree for tabular session output: plain object or array of plain objects. */ function buildTreeData(data) {
112480
+ if (data === null || data === undefined) {
112481
+ return [
112482
+ {
112483
+ key: "root",
112484
+ title: String(data),
112485
+ isLeaf: true
112486
+ }
112487
+ ];
112488
+ }
112489
+ if (Array.isArray(data)) {
112490
+ if (data.length === 0) {
112491
+ return [
112492
+ {
112493
+ key: "$top",
112494
+ title: "Array (0 items)",
112495
+ isLeaf: true
112496
+ }
112497
+ ];
112498
+ }
112499
+ const children = data.map((item, index)=>{
112500
+ const path = `$root[${index}]`;
112501
+ if (!isPlainObject(item)) {
112502
+ return {
112503
+ key: path,
112504
+ title: `[${index}]: ${formatJsonTreePrimitive(item)}`,
112505
+ isLeaf: true
112506
+ };
112507
+ }
112508
+ const itemChildren = valueToTreeNodes(item, path);
112509
+ return {
112510
+ key: path,
112511
+ title: `[${index}] (${Object.keys(item).length} keys)`,
112512
+ children: itemChildren
112513
+ };
112514
+ });
112515
+ return [
112516
+ {
112517
+ key: "$top",
112518
+ title: `Array (${data.length} items)`,
112519
+ children
112520
+ }
112521
+ ];
112522
+ }
112523
+ if (isPlainObject(data)) {
112524
+ const objectKeys = Object.keys(data);
112525
+ if (objectKeys.length === 0) {
112526
+ return [
112527
+ {
112528
+ key: "$top",
112529
+ title: "Object (0 keys)",
112530
+ isLeaf: true
112531
+ }
112532
+ ];
112533
+ }
112534
+ const children = valueToTreeNodes(data, "$root");
112535
+ return [
112536
+ {
112537
+ key: "$top",
112538
+ title: `Object (${objectKeys.length} keys)`,
112539
+ children
112540
+ }
112541
+ ];
112542
+ }
112543
+ return valueToTreeNodes(data, "$root");
112544
+ }
112545
+
112733
112546
  const getNodeLatency = (node)=>node.details?.internals?.latency?.total_time ?? 0;
112547
+ /** 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) {
112548
+ const incoming = run.edges?.filter((e)=>e.target === nodeId) ?? [];
112549
+ const status = incoming[0]?.details?.status;
112550
+ return Boolean(status && getStatusColor(status) === "error");
112551
+ }
112734
112552
  // Parse tree node key to extract metadata (format: "node::runId::nodeId" to handle dashes in IDs)
112735
112553
  const parseTreeNodeKey = (key)=>{
112736
112554
  if (key.startsWith("flow-")) {
@@ -112840,13 +112658,15 @@ const buildNodeTree = (run)=>{
112840
112658
  const childLatency = children.reduce((s, c)=>s + (c.subtreeLatency ?? 0), 0);
112841
112659
  const subtreeLatency = getNodeLatency(node) + childLatency;
112842
112660
  const isTool = node.node_type === "Tool";
112661
+ const failed = isNodeFailureFromIncomingEdge(run, node.identifier);
112662
+ const iconBg = failed ? "#ff4d4f" : isTool ? "#1890ff" : "#52c41a";
112843
112663
  const icon = /*#__PURE__*/ React__default.createElement("span", {
112844
112664
  style: {
112845
112665
  display: "block",
112846
112666
  width: 22,
112847
112667
  height: 22,
112848
112668
  borderRadius: 4,
112849
- background: isTool ? "#1890ff" : "#52c41a"
112669
+ background: iconBg
112850
112670
  }
112851
112671
  }, isTool ? /*#__PURE__*/ React__default.createElement(Wrench, {
112852
112672
  size: 14,
@@ -112978,7 +112798,6 @@ const useShareAgentSession = (session)=>{
112978
112798
  const { Text } = Typography;
112979
112799
  // Shared theme color fallbacks
112980
112800
  const DEFAULT_THEME_COLORS = {
112981
- mutedForeground: "hsl(215.4 16.3% 46.9%)",
112982
112801
  border: "hsl(214.3 31.8% 91.4%)",
112983
112802
  foreground: "hsl(222.2 84% 4.9%)"
112984
112803
  };
@@ -113007,145 +112826,6 @@ const isTabularData = (data)=>{
113007
112826
  }
113008
112827
  return false;
113009
112828
  };
113010
- const ObjectCardRenderer = ({ data, isDarkMode })=>{
113011
- const { theme } = useTheme$1();
113012
- const themeColors = theme?.colors || DEFAULT_THEME_COLORS;
113013
- // Helper to render a value (handles nested objects/arrays)
113014
- const renderValue = (value)=>{
113015
- if (value === null || value === undefined) {
113016
- return /*#__PURE__*/ React__default.createElement("span", {
113017
- style: {
113018
- color: themeColors.mutedForeground
113019
- }
113020
- }, "null");
113021
- }
113022
- // Handle nested objects
113023
- if (typeof value === "object" && !Array.isArray(value) && value.constructor === Object) {
113024
- const nestedItems = Object.entries(value).map(([key, val])=>({
113025
- key: `nested-${key}`,
113026
- label: key,
113027
- children: renderValue(val)
113028
- }));
113029
- return /*#__PURE__*/ React__default.createElement(Collapse$1, {
113030
- items: [
113031
- {
113032
- key: "nested-object",
113033
- label: /*#__PURE__*/ React__default.createElement("span", {
113034
- style: {
113035
- fontSize: "12px"
113036
- }
113037
- }, "Object (", Object.keys(value).length, " keys)"),
113038
- children: /*#__PURE__*/ React__default.createElement(Descriptions, {
113039
- column: 1,
113040
- size: "small",
113041
- items: nestedItems,
113042
- style: {
113043
- marginTop: "8px"
113044
- }
113045
- })
113046
- }
113047
- ],
113048
- size: "small",
113049
- style: {
113050
- background: "transparent"
113051
- }
113052
- });
113053
- }
113054
- // Handle arrays
113055
- if (Array.isArray(value)) {
113056
- return /*#__PURE__*/ React__default.createElement(Collapse$1, {
113057
- items: [
113058
- {
113059
- key: "nested-array",
113060
- label: /*#__PURE__*/ React__default.createElement("span", {
113061
- style: {
113062
- fontSize: "12px"
113063
- }
113064
- }, "Array (", value.length, " items)"),
113065
- children: /*#__PURE__*/ React__default.createElement("div", {
113066
- style: {
113067
- marginTop: "8px"
113068
- }
113069
- }, value.map((item, idx)=>/*#__PURE__*/ React__default.createElement("div", {
113070
- key: idx,
113071
- style: {
113072
- marginBottom: "8px"
113073
- }
113074
- }, typeof item === "object" && item !== null && !Array.isArray(item) ? /*#__PURE__*/ React__default.createElement(Descriptions, {
113075
- column: 1,
113076
- size: "small",
113077
- items: Object.entries(item).map(([key, val])=>({
113078
- key: `array-item-${idx}-${key}`,
113079
- label: key,
113080
- children: renderValue(val)
113081
- }))
113082
- }) : /*#__PURE__*/ React__default.createElement("pre", {
113083
- style: {
113084
- margin: 0,
113085
- padding: "8px",
113086
- background: isDarkMode ? "#1f1f1f" : "#fafafa",
113087
- border: `1px solid ${themeColors.border}`,
113088
- borderRadius: "4px",
113089
- fontSize: "12px",
113090
- whiteSpace: "pre-wrap",
113091
- wordWrap: "break-word"
113092
- }
113093
- }, JSON.stringify(item, null, 2)))))
113094
- }
113095
- ],
113096
- size: "small",
113097
- style: {
113098
- background: "transparent"
113099
- }
113100
- });
113101
- }
113102
- // Handle primitive values
113103
- return /*#__PURE__*/ React__default.createElement("span", null, String(value));
113104
- };
113105
- // Normalize to array
113106
- const objectsArray = Array.isArray(data) ? data : [
113107
- data
113108
- ];
113109
- return /*#__PURE__*/ React__default.createElement("div", {
113110
- style: {
113111
- display: "flex",
113112
- flexDirection: "column",
113113
- gap: "12px"
113114
- }
113115
- }, objectsArray.map((obj, index)=>{
113116
- if (!obj || typeof obj !== "object") {
113117
- return null;
113118
- }
113119
- const items = Object.entries(obj).map(([key, value])=>({
113120
- key,
113121
- label: key,
113122
- children: renderValue(value)
113123
- }));
113124
- return /*#__PURE__*/ React__default.createElement(Card, {
113125
- key: index,
113126
- size: "small",
113127
- style: {
113128
- background: isDarkMode ? "#1f1f1f" : "#fff",
113129
- border: `1px solid ${themeColors.border}`
113130
- },
113131
- bodyStyle: {
113132
- padding: "16px"
113133
- }
113134
- }, /*#__PURE__*/ React__default.createElement(Descriptions, {
113135
- column: 1,
113136
- size: "small",
113137
- items: items,
113138
- labelStyle: {
113139
- color: themeColors.mutedForeground,
113140
- fontWeight: 500,
113141
- width: "30%"
113142
- },
113143
- contentStyle: {
113144
- color: themeColors.foreground
113145
- }
113146
- }));
113147
- }));
113148
- };
113149
112829
  // Helper function to format output as text
113150
112830
  const formatOutputAsText = (output, toolOutput)=>{
113151
112831
  if (toolOutput !== null && toolOutput !== undefined) {
@@ -113441,9 +113121,8 @@ const NodeDetailsPanel = ({ selectedNode, session, isDarkMode })=>{
113441
113121
  label: /*#__PURE__*/ React__default.createElement(Text, {
113442
113122
  strong: true
113443
113123
  }, "Outputs"),
113444
- children: hasOutputs ? isToolOutputTabular ? /*#__PURE__*/ React__default.createElement(ObjectCardRenderer, {
113445
- data: toolOutput,
113446
- isDarkMode: isDarkMode
113124
+ children: hasOutputs ? isToolOutputTabular ? /*#__PURE__*/ React__default.createElement(JsonValueTree, {
113125
+ data: toolOutput
113447
113126
  }) : /*#__PURE__*/ React__default.createElement("pre", {
113448
113127
  style: {
113449
113128
  margin: 0,
@@ -113717,7 +113396,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113717
113396
  size: "small"
113718
113397
  })), /*#__PURE__*/ React__default.createElement(Divider, {
113719
113398
  type: "vertical"
113720
- }), /*#__PURE__*/ React__default.createElement(Tooltip, {
113399
+ }), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
113721
113400
  title: "Show Session Details"
113722
113401
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
113723
113402
  type: "text",
@@ -113726,7 +113405,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113726
113405
  }),
113727
113406
  onClick: ()=>setIsFullScreen(false),
113728
113407
  disabled: !session?.session_id
113729
- }, "Session Details"))) : /*#__PURE__*/ React__default.createElement(Tooltip, {
113408
+ }, "Session Details"))) : /*#__PURE__*/ React__default.createElement(Tooltip$1, {
113730
113409
  title: "Open Visualizer"
113731
113410
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
113732
113411
  type: "text",
@@ -113737,7 +113416,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113737
113416
  disabled: !session?.session_id
113738
113417
  }, "Visualizer")), /*#__PURE__*/ React__default.createElement(Divider, {
113739
113418
  type: "vertical"
113740
- }), /*#__PURE__*/ React__default.createElement(Tooltip, {
113419
+ }), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
113741
113420
  title: "Copy Session ID to Clipboard"
113742
113421
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
113743
113422
  type: "text",
@@ -113746,7 +113425,7 @@ const SessionDetails = ({ session, open, onClose, initialNodeId, initialRunId, l
113746
113425
  }),
113747
113426
  onClick: handleCopyId,
113748
113427
  disabled: !session?.session_id
113749
- })), /*#__PURE__*/ React__default.createElement(Tooltip, {
113428
+ })), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
113750
113429
  title: "Coming Soon!"
113751
113430
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
113752
113431
  type: "text",
@@ -114466,7 +114145,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114466
114145
  display: "flex",
114467
114146
  gap: 8
114468
114147
  }
114469
- }, /*#__PURE__*/ React__default.createElement(Tooltip, {
114148
+ }, /*#__PURE__*/ React__default.createElement(Tooltip$1, {
114470
114149
  title: "Copy IDs to Clipboard"
114471
114150
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
114472
114151
  type: "text",
@@ -114475,7 +114154,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114475
114154
  }),
114476
114155
  onClick: handleCopyIds,
114477
114156
  disabled: !evaluationId1 || !evaluationId2
114478
- })), /*#__PURE__*/ React__default.createElement(Tooltip, {
114157
+ })), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
114479
114158
  title: "Share"
114480
114159
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
114481
114160
  type: "text",
@@ -114537,7 +114216,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114537
114216
  gap: 4,
114538
114217
  justifyContent: "space-between"
114539
114218
  }
114540
- }, /*#__PURE__*/ React__default.createElement("span", null, normalizedEvaluation.name || "Evaluation Details"), normalizedEvaluation.completed_at && /*#__PURE__*/ React__default.createElement(Tooltip, {
114219
+ }, /*#__PURE__*/ React__default.createElement("span", null, normalizedEvaluation.name || "Evaluation Details"), normalizedEvaluation.completed_at && /*#__PURE__*/ React__default.createElement(Tooltip$1, {
114541
114220
  title: formatDateFriendly(normalizedEvaluation.completed_at),
114542
114221
  getPopupContainer: ()=>document.body
114543
114222
  }, /*#__PURE__*/ React__default.createElement("span", {
@@ -114588,7 +114267,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114588
114267
  style: {
114589
114268
  marginBottom: "24px"
114590
114269
  }
114591
- }, /*#__PURE__*/ React__default.createElement(Row$1, {
114270
+ }, /*#__PURE__*/ React__default.createElement(Row, {
114592
114271
  gutter: [
114593
114272
  24,
114594
114273
  16
@@ -114728,7 +114407,7 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114728
114407
  key: metric.sha || `${metric.name}-${i}`,
114729
114408
  style: tagStyle
114730
114409
  }, metric.name);
114731
- return metric.description ? /*#__PURE__*/ React__default.createElement(Tooltip, {
114410
+ return metric.description ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
114732
114411
  key: metric.sha || `${metric.name}-${i}`,
114733
114412
  title: metric.description,
114734
114413
  getPopupContainer: ()=>document.body
@@ -114990,7 +114669,7 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
114990
114669
  const bVal = b.completed_at ? moment(b.completed_at).unix() : 0;
114991
114670
  return aVal - bVal;
114992
114671
  },
114993
- render: (completedAt)=>completedAt ? /*#__PURE__*/ React__default.createElement(Tooltip, {
114672
+ render: (completedAt)=>completedAt ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
114994
114673
  title: completedAt
114995
114674
  }, /*#__PURE__*/ React__default.createElement("span", null, formatDateShort(completedAt))) : "-"
114996
114675
  },
@@ -117772,7 +117451,7 @@ const AggregateResultsTable = ({ rawResults = [], aggregateResults, agents, titl
117772
117451
  fontSize: 16,
117773
117452
  fontWeight: 600
117774
117453
  }
117775
- }, resolvedTitle), /*#__PURE__*/ React__default.createElement(Tooltip, {
117454
+ }, resolvedTitle), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
117776
117455
  title: llmExpandableKeys.length === 0 ? "No expandable rows" : undefined
117777
117456
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
117778
117457
  type: "text",
@@ -118202,7 +117881,7 @@ const AggregateResultsTable = ({ rawResults = [], aggregateResults, agents, titl
118202
117881
  fontSize: 16,
118203
117882
  fontWeight: 600
118204
117883
  }
118205
- }, resolvedTitle), /*#__PURE__*/ React__default.createElement(Tooltip, {
117884
+ }, resolvedTitle), /*#__PURE__*/ React__default.createElement(Tooltip$1, {
118206
117885
  title: expandableKeys.length === 0 ? "No expandable rows" : undefined
118207
117886
  }, /*#__PURE__*/ React__default.createElement(Button$1, {
118208
117887
  type: "text",
@@ -118455,7 +118134,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref, onAgentNodeClick }
118455
118134
  background: theme.colors.secondary,
118456
118135
  border: `1px solid ${theme.colors.border}`
118457
118136
  }
118458
- }, /*#__PURE__*/ React__default.createElement(Row$1, {
118137
+ }, /*#__PURE__*/ React__default.createElement(Row, {
118459
118138
  gutter: [
118460
118139
  32,
118461
118140
  16
@@ -118494,7 +118173,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref, onAgentNodeClick }
118494
118173
  fontWeight: 600,
118495
118174
  fontSize: 15
118496
118175
  }
118497
- }, completed_at ? /*#__PURE__*/ React__default.createElement(Tooltip, {
118176
+ }, completed_at ? /*#__PURE__*/ React__default.createElement(Tooltip$1, {
118498
118177
  title: formatDateFriendly(completed_at)
118499
118178
  }, /*#__PURE__*/ React__default.createElement("span", null, formatDateRelative(completed_at))) : "-")), /*#__PURE__*/ React__default.createElement(Col, {
118500
118179
  xs: 24,
@@ -120544,4 +120223,4 @@ const GlobalStyles = ()=>{
120544
120223
  return getSafeColor(props.theme, path, fallback);
120545
120224
  };
120546
120225
 
120547
- export { AgenticFlowVisualizer, AnthropicIcon, AppleIcon, Badge, Drawer, Edge, EvaluationDetailsDrawer, EvaluationsCompareDrawer, EvaluationsComparePage, EvaluationsCompareView, EvaluationsErrorCard, EvaluationsTable, EvaluatorResult, GlobalStyles, GoogleIcon, JsonTreeViewer, Node$1 as Node, OllamaIcon, OpenAIIcon, SafeThemeProvider, SessionDetails, Sheet, ThemeProvider, Timeline, Visualizer, calculateAutoLayout, cn, conditionalStyle, createSafeTheme, darkTheme, defaultTheme$1 as defaultTheme, detectContentType, evaluationsHaveSameMetrics, formatCurrency, formatDateFriendly, formatDateRelative, formatDateShort, formatDuration, formatLatency, formatMetricValue$1 as formatMetricValue, formatNumberWithCommas, formatToolCalls, getColor, getSafeColor, getSafeSpacing, getSafeThemeValue, getSpacing, getStatusColor, isEvaluationDto, lightTheme, safeStyled, safeThemeColor, safeThemeSpacing, safeThemeValue, toTitleCase, transformEvaluation, truncateText, useComponentTheme, useSafeTheme, useTheme$1 as useTheme, useThemeValue };
120226
+ export { AgenticFlowVisualizer, AnthropicIcon, AppleIcon, Badge, Drawer, Edge, EvaluationDetailsDrawer, EvaluationsCompareDrawer, EvaluationsComparePage, EvaluationsCompareView, EvaluationsErrorCard, EvaluationsTable, EvaluatorResult, GlobalStyles, GoogleIcon, JsonTreeViewer, Node$1 as Node, OllamaIcon, OpenAIIcon, SafeThemeProvider, SessionDetails, Sheet, ThemeProvider, Timeline, Visualizer, calculateAutoLayout, cn, conditionalStyle, createSafeTheme, darkTheme, defaultTheme$1 as defaultTheme, detectContentType, escapeDotPathSegment, evaluationsHaveSameMetrics, formatCurrency, formatDateFriendly, formatDateRelative, formatDateShort, formatDuration, formatJsonTreePrimitive, formatLatency, formatMetricValue$1 as formatMetricValue, formatNumberWithCommas, formatToolCalls, getColor, getSafeColor, getSafeSpacing, getSafeThemeValue, getSpacing, getStatusColor, isEvaluationDto, isPlainObject, lightTheme, safeStyled, safeThemeColor, safeThemeSpacing, safeThemeValue, toTitleCase, transformEvaluation, truncateText, useComponentTheme, useSafeTheme, useTheme$1 as useTheme, useThemeValue };