@railtownai/railtracks-visualizer 0.0.73 → 0.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -3308,21 +3308,21 @@ const oppositePosition = {
3308
3308
  function getConnectionStatus(isValid) {
3309
3309
  return isValid === null ? null : isValid ? 'valid' : 'invalid';
3310
3310
  }
3311
- /* eslint-disable @typescript-eslint/no-explicit-any */ /**
3311
+ /**
3312
3312
  * Test whether an object is usable as an Edge
3313
3313
  * @public
3314
3314
  * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true
3315
3315
  * @param element - The element to test
3316
3316
  * @returns A boolean indicating whether the element is an Edge
3317
- */ const isEdgeBase = (element)=>'id' in element && 'source' in element && 'target' in element;
3317
+ */ const isEdgeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'source' in element && 'target' in element;
3318
3318
  /**
3319
3319
  * Test whether an object is usable as a Node
3320
3320
  * @public
3321
3321
  * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true
3322
3322
  * @param element - The element to test
3323
3323
  * @returns A boolean indicating whether the element is an Node
3324
- */ const isNodeBase = (element)=>'id' in element && 'position' in element && !('source' in element) && !('target' in element);
3325
- const isInternalNodeBase = (element)=>'id' in element && 'internals' in element && !('source' in element) && !('target' in element);
3324
+ */ const isNodeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'position' in element && !('source' in element) && !('target' in element);
3325
+ const isInternalNodeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'internals' in element && !('source' in element) && !('target' in element);
3326
3326
  const getNodePositionWithOrigin = (node, nodeOrigin = [
3327
3327
  0,
3328
3328
  0
@@ -3499,7 +3499,18 @@ function getFitViewNodes(nodeLookup, options) {
3499
3499
  const fitViewNodes = new Map();
3500
3500
  const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node)=>node.id)) : null;
3501
3501
  nodeLookup.forEach((n)=>{
3502
- const isVisible = n.measured.width && n.measured.height && (options?.includeHiddenNodes || !n.hidden);
3502
+ let isVisible;
3503
+ if (options?.includeHiddenNodes) {
3504
+ /*
3505
+ * when hidden nodes are included they were never rendered, so they have no
3506
+ * measured size. Fall back to the declared dimensions (same fallback as
3507
+ * nodeToBox) so a hidden node with an intrinsic size still contributes to
3508
+ * the fit bounds instead of being dropped by a measured-only check. (#5841)
3509
+ */ const { width, height } = getNodeDimensions(n);
3510
+ isVisible = width > 0 && height > 0;
3511
+ } else {
3512
+ isVisible = Boolean(n.measured.width && n.measured.height && !n.hidden);
3513
+ }
3503
3514
  if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {
3504
3515
  fitViewNodes.set(n.id, n);
3505
3516
  }
@@ -5012,7 +5023,10 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
5012
5023
  const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent;
5013
5024
  let { positionAbsolute } = node.internals;
5014
5025
  if (node.parentId && node.extent === 'parent') {
5015
- positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, nodeLookup.get(node.parentId));
5026
+ const parentNode = nodeLookup.get(node.parentId);
5027
+ if (parentNode) {
5028
+ positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, parentNode);
5029
+ }
5016
5030
  } else if (extent) {
5017
5031
  positionAbsolute = clampPosition(positionAbsolute, extent, dimensions);
5018
5032
  }
@@ -5948,11 +5962,11 @@ function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection
5948
5962
  onPanZoomStart?.(event, nextViewport);
5949
5963
  } else {
5950
5964
  onPanZoom?.(event, nextViewport);
5951
- zoomPanValues.panScrollTimeout = setTimeout(()=>{
5952
- onPanZoomEnd?.(event, nextViewport);
5953
- zoomPanValues.isPanScrolling = false;
5954
- }, 150);
5955
5965
  }
5966
+ zoomPanValues.panScrollTimeout = setTimeout(()=>{
5967
+ onPanZoomEnd?.(event, nextViewport);
5968
+ zoomPanValues.isPanScrolling = false;
5969
+ }, 150);
5956
5970
  };
5957
5971
  }
5958
5972
  function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) {
@@ -6091,7 +6105,39 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
6091
6105
  isPanScrolling: false
6092
6106
  };
6093
6107
  const bbox = domNode.getBoundingClientRect();
6094
- const d3ZoomInstance = zoom().scaleExtent([
6108
+ /*
6109
+ * Cache the pane extent and refresh it from a ResizeObserver. Otherwise d3-zoom falls back to its
6110
+ * defaultExtent, which reads clientWidth/clientHeight and forces a synchronous layout while panning
6111
+ * and pinching. The observer is never disconnected on purpose: destroy() also runs to pause zooming
6112
+ * during a user selection, so disconnecting there would leave the cache stale. It becomes unreachable
6113
+ * and is garbage collected with the pane on unmount.
6114
+ */ let cachedExtent = [
6115
+ [
6116
+ 0,
6117
+ 0
6118
+ ],
6119
+ [
6120
+ bbox.width,
6121
+ bbox.height
6122
+ ]
6123
+ ];
6124
+ const extentResizeObserver = typeof ResizeObserver !== 'undefined' ? new ResizeObserver((entries)=>{
6125
+ const entry = entries[0];
6126
+ if (entry) {
6127
+ cachedExtent = [
6128
+ [
6129
+ 0,
6130
+ 0
6131
+ ],
6132
+ [
6133
+ entry.contentRect.width,
6134
+ entry.contentRect.height
6135
+ ]
6136
+ ];
6137
+ }
6138
+ }) : null;
6139
+ extentResizeObserver?.observe(domNode);
6140
+ const d3ZoomInstance = zoom().extent(()=>cachedExtent).scaleExtent([
6095
6141
  minZoom,
6096
6142
  maxZoom
6097
6143
  ]).translateExtent(translateExtent);
@@ -7288,7 +7334,7 @@ function Attribution({ proOptions, position = 'bottom-right' }) {
7288
7334
  })
7289
7335
  });
7290
7336
  }
7291
- const selector$m = (s)=>{
7337
+ const selector$l = (s)=>{
7292
7338
  const selectedNodes = [];
7293
7339
  const selectedEdges = [];
7294
7340
  for (const [, node] of s.nodeLookup){
@@ -7307,12 +7353,12 @@ const selector$m = (s)=>{
7307
7353
  };
7308
7354
  };
7309
7355
  const selectId = (obj)=>obj.id;
7310
- function areEqual(a, b) {
7356
+ function areEqual$1(a, b) {
7311
7357
  return shallow$1(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) && shallow$1(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId));
7312
7358
  }
7313
7359
  function SelectionListenerInner({ onSelectionChange }) {
7314
7360
  const store = useStoreApi();
7315
- const { selectedNodes, selectedEdges } = useStore(selector$m, areEqual);
7361
+ const { selectedNodes, selectedEdges } = useStore(selector$l, areEqual$1);
7316
7362
  React.useEffect(()=>{
7317
7363
  const params = {
7318
7364
  nodes: selectedNodes,
@@ -7416,7 +7462,7 @@ const fieldsToTrack = [
7416
7462
  ...reactFlowFieldsToTrack,
7417
7463
  'rfId'
7418
7464
  ];
7419
- const selector$l = (s)=>({
7465
+ const selector$k = (s)=>({
7420
7466
  setNodes: s.setNodes,
7421
7467
  setEdges: s.setEdges,
7422
7468
  setMinZoom: s.setMinZoom,
@@ -7440,7 +7486,7 @@ const initPrevValues = {
7440
7486
  rfId: '1'
7441
7487
  };
7442
7488
  function StoreUpdater(props) {
7443
- const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore(selector$l, shallow$1);
7489
+ const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore(selector$k, shallow$1);
7444
7490
  const store = useStoreApi();
7445
7491
  React.useEffect(()=>{
7446
7492
  setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);
@@ -8179,7 +8225,7 @@ function useBatchContext() {
8179
8225
  }
8180
8226
  return batchContext;
8181
8227
  }
8182
- const selector$k = (s)=>!!s.panZoom;
8228
+ const selector$j = (s)=>!!s.panZoom;
8183
8229
  /**
8184
8230
  * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow.
8185
8231
  *
@@ -8210,7 +8256,7 @@ const selector$k = (s)=>!!s.panZoom;
8210
8256
  const viewportHelper = useViewportHelper();
8211
8257
  const store = useStoreApi();
8212
8258
  const batchContext = useBatchContext();
8213
- const viewportInitialized = useStore(selector$k);
8259
+ const viewportInitialized = useStore(selector$j);
8214
8260
  const generalHelper = React.useMemo(()=>{
8215
8261
  const getInternalNode = (id)=>store.getState().nodeLookup.get(id);
8216
8262
  const setNodes = (payload)=>{
@@ -8523,7 +8569,7 @@ const containerStyle = {
8523
8569
  top: 0,
8524
8570
  left: 0
8525
8571
  };
8526
- const selector$j = (s)=>({
8572
+ const selector$i = (s)=>({
8527
8573
  userSelectionActive: s.userSelectionActive,
8528
8574
  lib: s.lib,
8529
8575
  connectionInProgress: s.connection.inProgress
@@ -8531,7 +8577,7 @@ const selector$j = (s)=>({
8531
8577
  function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag }) {
8532
8578
  const store = useStoreApi();
8533
8579
  const zoomPane = React.useRef(null);
8534
- const { userSelectionActive, lib, connectionInProgress } = useStore(selector$j, shallow$1);
8580
+ const { userSelectionActive, lib, connectionInProgress } = useStore(selector$i, shallow$1);
8535
8581
  const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);
8536
8582
  const panZoom = React.useRef();
8537
8583
  useResizeHandler(zoomPane);
@@ -8640,12 +8686,12 @@ function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true,
8640
8686
  children: children
8641
8687
  });
8642
8688
  }
8643
- const selector$i = (s)=>({
8689
+ const selector$h = (s)=>({
8644
8690
  userSelectionActive: s.userSelectionActive,
8645
8691
  userSelectionRect: s.userSelectionRect
8646
8692
  });
8647
8693
  function UserSelection() {
8648
- const { userSelectionActive, userSelectionRect } = useStore(selector$i, shallow$1);
8694
+ const { userSelectionActive, userSelectionRect } = useStore(selector$h, shallow$1);
8649
8695
  const isActive = userSelectionActive && userSelectionRect;
8650
8696
  if (!isActive) {
8651
8697
  return null;
@@ -8667,7 +8713,7 @@ const wrapHandler = (handler, containerRef)=>{
8667
8713
  handler?.(event);
8668
8714
  };
8669
8715
  };
8670
- const selector$h = (s)=>({
8716
+ const selector$g = (s)=>({
8671
8717
  userSelectionActive: s.userSelectionActive,
8672
8718
  elementsSelectable: s.elementsSelectable,
8673
8719
  dragging: s.paneDragging,
@@ -8677,7 +8723,7 @@ const selector$h = (s)=>({
8677
8723
  function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children }) {
8678
8724
  const autoPanId = React.useRef(0);
8679
8725
  const store = useStoreApi();
8680
- const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$h, shallow$1);
8726
+ const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$g, shallow$1);
8681
8727
  const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive);
8682
8728
  const container = React.useRef(null);
8683
8729
  const containerBounds = React.useRef();
@@ -8963,6 +9009,9 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8963
9009
  const [dragging, setDragging] = React.useState(false);
8964
9010
  const xyDrag = React.useRef();
8965
9011
  React.useEffect(()=>{
9012
+ if (disabled) {
9013
+ return;
9014
+ }
8966
9015
  xyDrag.current = XYDrag({
8967
9016
  getStoreItems: ()=>store.getState(),
8968
9017
  onNodeMouseDown: (id)=>{
@@ -8979,7 +9028,15 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8979
9028
  setDragging(false);
8980
9029
  }
8981
9030
  });
8982
- }, []);
9031
+ return ()=>{
9032
+ xyDrag.current?.destroy();
9033
+ xyDrag.current = undefined;
9034
+ };
9035
+ }, [
9036
+ disabled,
9037
+ store,
9038
+ nodeRef
9039
+ ]);
8983
9040
  React.useEffect(()=>{
8984
9041
  if (disabled || !nodeRef.current || !xyDrag.current) {
8985
9042
  return;
@@ -8992,9 +9049,6 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8992
9049
  nodeId,
8993
9050
  nodeClickDistance
8994
9051
  });
8995
- return ()=>{
8996
- xyDrag.current?.destroy();
8997
- };
8998
9052
  }, [
8999
9053
  noDragClassName,
9000
9054
  handleSelector,
@@ -9086,7 +9140,7 @@ NodeIdContext.Consumer;
9086
9140
  const nodeId = React.useContext(NodeIdContext);
9087
9141
  return nodeId;
9088
9142
  };
9089
- const selector$g = (s)=>({
9143
+ const selector$f = (s)=>({
9090
9144
  connectOnClick: s.connectOnClick,
9091
9145
  noPanClassName: s.noPanClassName,
9092
9146
  rfId: s.rfId
@@ -9096,7 +9150,7 @@ const HandleConfigContext = React.createContext(null);
9096
9150
  * `connectOnClick`, `noPanClassName` and `rfId` are the same for every handle, so they are
9097
9151
  * shared through context from a single store subscription.
9098
9152
  */ function HandleConfigProvider({ children }) {
9099
- const config = useStore(selector$g, shallow$1);
9153
+ const config = useStore(selector$f, shallow$1);
9100
9154
  return jsxRuntime.jsx(HandleConfigContext.Provider, {
9101
9155
  value: config,
9102
9156
  children: children
@@ -9391,7 +9445,7 @@ function getNodeInlineStyleDimensions(node) {
9391
9445
  height: node.height ?? node.style?.height
9392
9446
  };
9393
9447
  }
9394
- const selector$f = (s)=>{
9448
+ const selector$e = (s)=>{
9395
9449
  const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, {
9396
9450
  filter: (node)=>!!node.selected
9397
9451
  });
@@ -9404,7 +9458,7 @@ const selector$f = (s)=>{
9404
9458
  };
9405
9459
  function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y }) {
9406
9460
  const store = useStoreApi();
9407
- const { width, height, transformString, userSelectionActive } = useStore(selector$f, shallow$1);
9461
+ const { width, height, transformString, userSelectionActive } = useStore(selector$e, shallow$1);
9408
9462
  const moveSelectedNodes = useMoveSelectedNodes();
9409
9463
  const nodeRef = React.useRef(null);
9410
9464
  React.useEffect(()=>{
@@ -9460,14 +9514,14 @@ function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboar
9460
9514
  });
9461
9515
  }
9462
9516
  const win = typeof window !== 'undefined' ? window : undefined;
9463
- const selector$e = (s)=>{
9517
+ const selector$d = (s)=>{
9464
9518
  return {
9465
9519
  nodesSelectionActive: s.nodesSelectionActive,
9466
9520
  userSelectionActive: s.userSelectionActive
9467
9521
  };
9468
9522
  };
9469
9523
  function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport }) {
9470
- const { nodesSelectionActive, userSelectionActive } = useStore(selector$e, shallow$1);
9524
+ const { nodesSelectionActive, userSelectionActive } = useStore(selector$d, shallow$1);
9471
9525
  const selectionKeyPressed = useKeyPress(selectionKeyCode, {
9472
9526
  target: win
9473
9527
  });
@@ -9533,7 +9587,7 @@ function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPane
9533
9587
  }
9534
9588
  FlowRendererComponent.displayName = 'FlowRenderer';
9535
9589
  const FlowRenderer = React.memo(FlowRendererComponent);
9536
- const selector$d = (onlyRenderVisible)=>(s)=>{
9590
+ const selector$c = (onlyRenderVisible)=>(s)=>{
9537
9591
  return onlyRenderVisible ? getNodesInside(s.nodeLookup, {
9538
9592
  x: 0,
9539
9593
  y: 0,
@@ -9548,14 +9602,14 @@ const selector$d = (onlyRenderVisible)=>(s)=>{
9548
9602
  * @param onlyRenderVisible
9549
9603
  * @returns array with visible node ids
9550
9604
  */ function useVisibleNodeIds(onlyRenderVisible) {
9551
- const nodeIds = useStore(React.useCallback(selector$d(onlyRenderVisible), [
9605
+ const nodeIds = useStore(React.useCallback(selector$c(onlyRenderVisible), [
9552
9606
  onlyRenderVisible
9553
9607
  ]), shallow$1);
9554
9608
  return nodeIds;
9555
9609
  }
9556
- const selector$c = (s)=>s.updateNodeInternals;
9610
+ const selector$b = (s)=>s.updateNodeInternals;
9557
9611
  function useResizeObserver() {
9558
- const updateNodeInternals = useStore(selector$c);
9612
+ const updateNodeInternals = useStore(selector$b);
9559
9613
  const [resizeObserver] = React.useState(()=>{
9560
9614
  if (typeof ResizeObserver === 'undefined') {
9561
9615
  return null;
@@ -9846,15 +9900,14 @@ function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onC
9846
9900
  });
9847
9901
  }
9848
9902
  var NodeWrapper$1 = React.memo(NodeWrapper);
9849
- const selector$b = (s)=>({
9850
- nodesDraggable: s.nodesDraggable,
9903
+ const selector$a = (s)=>({
9851
9904
  nodesConnectable: s.nodesConnectable,
9852
9905
  nodesFocusable: s.nodesFocusable,
9853
9906
  elementsSelectable: s.elementsSelectable,
9854
9907
  onError: s.onError
9855
9908
  });
9856
9909
  function NodeRendererComponent(props) {
9857
- const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$b, shallow$1);
9910
+ const { nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$a, shallow$1);
9858
9911
  const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);
9859
9912
  const resizeObserver = useResizeObserver();
9860
9913
  return jsxRuntime.jsx("div", {
@@ -9900,7 +9953,7 @@ function NodeRendererComponent(props) {
9900
9953
  rfId: props.rfId,
9901
9954
  disableKeyboardA11y: props.disableKeyboardA11y,
9902
9955
  resizeObserver: resizeObserver,
9903
- nodesDraggable: nodesDraggable,
9956
+ nodesDraggable: props.nodesDraggable ?? true,
9904
9957
  nodesConnectable: nodesConnectable,
9905
9958
  nodesFocusable: nodesFocusable,
9906
9959
  elementsSelectable: elementsSelectable,
@@ -10879,7 +10932,7 @@ function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectabl
10879
10932
  });
10880
10933
  }
10881
10934
  var EdgeWrapper$1 = React.memo(EdgeWrapper);
10882
- const selector$a = (s)=>({
10935
+ const selector$9 = (s)=>({
10883
10936
  edgesFocusable: s.edgesFocusable,
10884
10937
  edgesReconnectable: s.edgesReconnectable,
10885
10938
  elementsSelectable: s.elementsSelectable,
@@ -10887,7 +10940,7 @@ const selector$a = (s)=>({
10887
10940
  onError: s.onError
10888
10941
  });
10889
10942
  function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y }) {
10890
- const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$a, shallow$1);
10943
+ const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$9, shallow$1);
10891
10944
  const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
10892
10945
  return jsxRuntime.jsxs("div", {
10893
10946
  className: "react-flow__edges",
@@ -10924,13 +10977,36 @@ function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements,
10924
10977
  }
10925
10978
  EdgeRendererComponent.displayName = 'EdgeRenderer';
10926
10979
  const EdgeRenderer = React.memo(EdgeRendererComponent);
10927
- const selector$9 = (s)=>`translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;
10980
+ const toTransformString = (transform)=>`translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})`;
10928
10981
  function Viewport({ children }) {
10929
- const transform = useStore(selector$9);
10982
+ const store = useStoreApi();
10983
+ const viewportRef = React.useRef(null);
10984
+ // seed the transform for first paint and SSR without subscribing, so we don't re-render on pan/zoom
10985
+ const [initialTransform] = React.useState(()=>store.getState().transform);
10986
+ // transform changes every pan/zoom frame, so write it to the DOM directly to keep React out of the hot path
10987
+ useIsomorphicLayoutEffect$3(()=>{
10988
+ let prevTransform = null;
10989
+ const applyTransform = ()=>{
10990
+ const transform = store.getState().transform;
10991
+ // store.subscribe fires on every update, so only touch the DOM when x, y or zoom actually changed
10992
+ if (prevTransform && transform[0] === prevTransform[0] && transform[1] === prevTransform[1] && transform[2] === prevTransform[2]) {
10993
+ return;
10994
+ }
10995
+ prevTransform = transform;
10996
+ if (viewportRef.current) {
10997
+ viewportRef.current.style.transform = toTransformString(transform);
10998
+ }
10999
+ };
11000
+ applyTransform();
11001
+ return store.subscribe(applyTransform);
11002
+ }, [
11003
+ store
11004
+ ]);
10930
11005
  return jsxRuntime.jsx("div", {
11006
+ ref: viewportRef,
10931
11007
  className: "react-flow__viewport xyflow__viewport react-flow__container",
10932
11008
  style: {
10933
- transform
11009
+ transform: toTransformString(initialTransform)
10934
11010
  },
10935
11011
  children: children
10936
11012
  });
@@ -11150,7 +11226,7 @@ function useStylesLoadedWarning() {
11150
11226
  }
11151
11227
  }, []);
11152
11228
  }
11153
- function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange }) {
11229
+ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, nodesDraggable }) {
11154
11230
  useNodeOrEdgeTypesWarning(nodeTypes);
11155
11231
  useNodeOrEdgeTypesWarning(edgeTypes);
11156
11232
  useStylesLoadedWarning();
@@ -11237,7 +11313,8 @@ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeC
11237
11313
  noDragClassName: noDragClassName,
11238
11314
  disableKeyboardA11y: disableKeyboardA11y,
11239
11315
  nodeExtent: nodeExtent,
11240
- rfId: rfId
11316
+ rfId: rfId,
11317
+ nodesDraggable: nodesDraggable
11241
11318
  }),
11242
11319
  jsxRuntime.jsx("div", {
11243
11320
  className: "react-flow__viewport-portal"
@@ -11969,7 +12046,8 @@ function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTy
11969
12046
  disableKeyboardA11y: disableKeyboardA11y,
11970
12047
  nodeExtent: nodeExtent,
11971
12048
  viewport: viewport,
11972
- onViewportChange: onViewportChange
12049
+ onViewportChange: onViewportChange,
12050
+ nodesDraggable: nodesDraggable
11973
12051
  }),
11974
12052
  jsxRuntime.jsx(SelectionListener, {
11975
12053
  onSelectionChange: onSelectionChange
@@ -12590,6 +12668,10 @@ const selector$1 = (s)=>{
12590
12668
  ariaLabelConfig: s.ariaLabelConfig
12591
12669
  };
12592
12670
  };
12671
+ const rectEqual = (a, b)=>a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
12672
+ // the selector builds new viewBB/boundingRect objects every call, so the default shallow equality always
12673
+ // treats them as changed; comparing the rects by value lets the minimap skip re-renders when nothing moved
12674
+ const areEqual = (a, b)=>rectEqual(a.viewBB, b.viewBB) && rectEqual(a.boundingRect, b.boundingRect) && a.rfId === b.rfId && a.panZoom === b.panZoom && a.translateExtent === b.translateExtent && a.flowWidth === b.flowWidth && a.flowHeight === b.flowHeight && a.ariaLabelConfig === b.ariaLabelConfig;
12593
12675
  const ARIA_LABEL_KEY = 'react-flow__minimap-desc';
12594
12676
  function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, /*
12595
12677
  * We need to rename the prop to be `CapitalCase` so that JSX will render it as
@@ -12597,7 +12679,7 @@ function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeCl
12597
12679
  */ nodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5 }) {
12598
12680
  const store = useStoreApi();
12599
12681
  const svg = React.useRef(null);
12600
- const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, shallow$1);
12682
+ const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, areEqual);
12601
12683
  const elementWidth = style?.width ?? defaultWidth;
12602
12684
  const elementHeight = style?.height ?? defaultHeight;
12603
12685
  const scaledWidth = boundingRect.width / elementWidth;
@@ -12938,11 +13020,11 @@ function styleInject(css, ref) {
12938
13020
  }
12939
13021
  }
12940
13022
 
12941
- var css_248z = "/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n";
13023
+ var css_248z = "/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #555;\n --xy-background-pattern-lines-color-default: #333;\n --xy-background-pattern-cross-color-default: #333;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n";
12942
13024
  styleInject(css_248z);
12943
13025
 
12944
13026
  /**
12945
- * @license lucide-react v1.21.0 - ISC
13027
+ * @license lucide-react v1.23.0 - ISC
12946
13028
  *
12947
13029
  * This source code is licensed under the ISC license.
12948
13030
  * See the LICENSE file in the root directory of this source tree.
@@ -12951,14 +13033,14 @@ styleInject(css_248z);
12951
13033
  }).join(" ").trim();
12952
13034
 
12953
13035
  /**
12954
- * @license lucide-react v1.21.0 - ISC
13036
+ * @license lucide-react v1.23.0 - ISC
12955
13037
  *
12956
13038
  * This source code is licensed under the ISC license.
12957
13039
  * See the LICENSE file in the root directory of this source tree.
12958
13040
  */ const toKebabCase = (string)=>string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
12959
13041
 
12960
13042
  /**
12961
- * @license lucide-react v1.21.0 - ISC
13043
+ * @license lucide-react v1.23.0 - ISC
12962
13044
  *
12963
13045
  * This source code is licensed under the ISC license.
12964
13046
  * See the LICENSE file in the root directory of this source tree.
@@ -12970,7 +13052,7 @@ const toPascalCase = (string)=>{
12970
13052
  };
12971
13053
 
12972
13054
  /**
12973
- * @license lucide-react v1.21.0 - ISC
13055
+ * @license lucide-react v1.23.0 - ISC
12974
13056
  *
12975
13057
  * This source code is licensed under the ISC license.
12976
13058
  * See the LICENSE file in the root directory of this source tree.
@@ -12987,7 +13069,7 @@ const toPascalCase = (string)=>{
12987
13069
  };
12988
13070
 
12989
13071
  /**
12990
- * @license lucide-react v1.21.0 - ISC
13072
+ * @license lucide-react v1.23.0 - ISC
12991
13073
  *
12992
13074
  * This source code is licensed under the ISC license.
12993
13075
  * See the LICENSE file in the root directory of this source tree.
@@ -13037,7 +13119,7 @@ const createLucideIcon = (iconName, iconNode)=>{
13037
13119
  return Component;
13038
13120
  };
13039
13121
 
13040
- const __iconNode$D = [
13122
+ const __iconNode$G = [
13041
13123
  [
13042
13124
  "path",
13043
13125
  {
@@ -13053,9 +13135,9 @@ const __iconNode$D = [
13053
13135
  }
13054
13136
  ]
13055
13137
  ];
13056
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$D);
13138
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$G);
13057
13139
 
13058
- const __iconNode$C = [
13140
+ const __iconNode$F = [
13059
13141
  [
13060
13142
  "path",
13061
13143
  {
@@ -13071,9 +13153,31 @@ const __iconNode$C = [
13071
13153
  }
13072
13154
  ]
13073
13155
  ];
13074
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$C);
13156
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$F);
13075
13157
 
13076
- const __iconNode$B = [
13158
+ const __iconNode$E = [
13159
+ [
13160
+ "circle",
13161
+ {
13162
+ cx: "9",
13163
+ cy: "9",
13164
+ r: "7",
13165
+ key: "p2h5vp"
13166
+ }
13167
+ ],
13168
+ [
13169
+ "circle",
13170
+ {
13171
+ cx: "15",
13172
+ cy: "15",
13173
+ r: "7",
13174
+ key: "19ennj"
13175
+ }
13176
+ ]
13177
+ ];
13178
+ const Blend = createLucideIcon("blend", __iconNode$E);
13179
+
13180
+ const __iconNode$D = [
13077
13181
  [
13078
13182
  "path",
13079
13183
  {
@@ -13121,9 +13225,9 @@ const __iconNode$B = [
13121
13225
  }
13122
13226
  ]
13123
13227
  ];
13124
- const Bot = createLucideIcon("bot", __iconNode$B);
13228
+ const Bot = createLucideIcon("bot", __iconNode$D);
13125
13229
 
13126
- const __iconNode$A = [
13230
+ const __iconNode$C = [
13127
13231
  [
13128
13232
  "path",
13129
13233
  {
@@ -13157,9 +13261,9 @@ const __iconNode$A = [
13157
13261
  }
13158
13262
  ]
13159
13263
  ];
13160
- const Calendar = createLucideIcon("calendar", __iconNode$A);
13264
+ const Calendar = createLucideIcon("calendar", __iconNode$C);
13161
13265
 
13162
- const __iconNode$z = [
13266
+ const __iconNode$B = [
13163
13267
  [
13164
13268
  "path",
13165
13269
  {
@@ -13216,9 +13320,9 @@ const __iconNode$z = [
13216
13320
  }
13217
13321
  ]
13218
13322
  ];
13219
- const ChartNetwork = createLucideIcon("chart-network", __iconNode$z);
13323
+ const ChartNetwork = createLucideIcon("chart-network", __iconNode$B);
13220
13324
 
13221
- const __iconNode$y = [
13325
+ const __iconNode$A = [
13222
13326
  [
13223
13327
  "path",
13224
13328
  {
@@ -13227,9 +13331,9 @@ const __iconNode$y = [
13227
13331
  }
13228
13332
  ]
13229
13333
  ];
13230
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$y);
13334
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$A);
13231
13335
 
13232
- const __iconNode$x = [
13336
+ const __iconNode$z = [
13233
13337
  [
13234
13338
  "path",
13235
13339
  {
@@ -13238,9 +13342,9 @@ const __iconNode$x = [
13238
13342
  }
13239
13343
  ]
13240
13344
  ];
13241
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$x);
13345
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$z);
13242
13346
 
13243
- const __iconNode$w = [
13347
+ const __iconNode$y = [
13244
13348
  [
13245
13349
  "path",
13246
13350
  {
@@ -13256,9 +13360,9 @@ const __iconNode$w = [
13256
13360
  }
13257
13361
  ]
13258
13362
  ];
13259
- const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$w);
13363
+ const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$y);
13260
13364
 
13261
- const __iconNode$v = [
13365
+ const __iconNode$x = [
13262
13366
  [
13263
13367
  "path",
13264
13368
  {
@@ -13274,9 +13378,9 @@ const __iconNode$v = [
13274
13378
  }
13275
13379
  ]
13276
13380
  ];
13277
- const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$v);
13381
+ const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$x);
13278
13382
 
13279
- const __iconNode$u = [
13383
+ const __iconNode$w = [
13280
13384
  [
13281
13385
  "circle",
13282
13386
  {
@@ -13307,9 +13411,9 @@ const __iconNode$u = [
13307
13411
  }
13308
13412
  ]
13309
13413
  ];
13310
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$u);
13414
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$w);
13311
13415
 
13312
- const __iconNode$t = [
13416
+ const __iconNode$v = [
13313
13417
  [
13314
13418
  "path",
13315
13419
  {
@@ -13325,9 +13429,29 @@ const __iconNode$t = [
13325
13429
  }
13326
13430
  ]
13327
13431
  ];
13328
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$t);
13432
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$v);
13329
13433
 
13330
- const __iconNode$s = [
13434
+ const __iconNode$u = [
13435
+ [
13436
+ "circle",
13437
+ {
13438
+ cx: "12",
13439
+ cy: "12",
13440
+ r: "10",
13441
+ key: "1mglay"
13442
+ }
13443
+ ],
13444
+ [
13445
+ "path",
13446
+ {
13447
+ d: "m9 12 2 2 4-4",
13448
+ key: "dzmm74"
13449
+ }
13450
+ ]
13451
+ ];
13452
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$u);
13453
+
13454
+ const __iconNode$t = [
13331
13455
  [
13332
13456
  "circle",
13333
13457
  {
@@ -13352,7 +13476,34 @@ const __iconNode$s = [
13352
13476
  }
13353
13477
  ]
13354
13478
  ];
13355
- const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$s);
13479
+ const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$t);
13480
+
13481
+ const __iconNode$s = [
13482
+ [
13483
+ "circle",
13484
+ {
13485
+ cx: "12",
13486
+ cy: "12",
13487
+ r: "10",
13488
+ key: "1mglay"
13489
+ }
13490
+ ],
13491
+ [
13492
+ "path",
13493
+ {
13494
+ d: "m15 9-6 6",
13495
+ key: "1uzhvr"
13496
+ }
13497
+ ],
13498
+ [
13499
+ "path",
13500
+ {
13501
+ d: "m9 9 6 6",
13502
+ key: "z0biqf"
13503
+ }
13504
+ ]
13505
+ ];
13506
+ const CircleX = createLucideIcon("circle-x", __iconNode$s);
13356
13507
 
13357
13508
  const __iconNode$r = [
13358
13509
  [
@@ -16196,6 +16347,21 @@ const lightTheme = {
16196
16347
  border: "#fca5a5",
16197
16348
  color: "#b91c1c"
16198
16349
  },
16350
+ tagPass: {
16351
+ bg: "#dcfce7",
16352
+ border: "#86efac",
16353
+ color: "#15803d"
16354
+ },
16355
+ tagFail: {
16356
+ bg: "#fee2e2",
16357
+ border: "#fca5a5",
16358
+ color: "#b91c1c"
16359
+ },
16360
+ tagPartial: {
16361
+ bg: "#fef3c7",
16362
+ border: "#fcd34d",
16363
+ color: "#b45309"
16364
+ },
16199
16365
  tagToolLevel1: {
16200
16366
  bg: "#dcfce7",
16201
16367
  color: "#166534"
@@ -16287,6 +16453,21 @@ const lightTheme = {
16287
16453
  border: "hsla(0 84% 55% / 0.35)",
16288
16454
  color: "hsl(0 72% 40%)"
16289
16455
  },
16456
+ tagPass: {
16457
+ bg: "hsla(142 70% 42% / 0.15)",
16458
+ border: "hsla(142 70% 38% / 0.35)",
16459
+ color: "hsl(142 71% 28%)"
16460
+ },
16461
+ tagFail: {
16462
+ bg: "hsla(0 84% 60% / 0.12)",
16463
+ border: "hsla(0 84% 55% / 0.35)",
16464
+ color: "hsl(0 72% 40%)"
16465
+ },
16466
+ tagPartial: {
16467
+ bg: "hsla(38 92% 50% / 0.15)",
16468
+ border: "hsla(38 92% 45% / 0.35)",
16469
+ color: "hsl(32 81% 33%)"
16470
+ },
16290
16471
  tagToolLevel1: {
16291
16472
  bg: "hsla(142 70% 42% / 0.15)",
16292
16473
  color: "hsl(142 71% 28%)"
@@ -16355,6 +16536,21 @@ const lightTheme = {
16355
16536
  border: "hsla(0 72% 42% / 0.35)",
16356
16537
  color: "hsl(0 84% 72%)"
16357
16538
  },
16539
+ tagPass: {
16540
+ bg: "hsla(142 70% 42% / 0.22)",
16541
+ border: "hsla(142 70% 36% / 0.35)",
16542
+ color: "hsl(142 70% 72%)"
16543
+ },
16544
+ tagFail: {
16545
+ bg: "hsla(0 72% 48% / 0.18)",
16546
+ border: "hsla(0 72% 42% / 0.35)",
16547
+ color: "hsl(0 84% 72%)"
16548
+ },
16549
+ tagPartial: {
16550
+ bg: "hsla(38 92% 50% / 0.2)",
16551
+ border: "hsla(38 92% 44% / 0.35)",
16552
+ color: "hsl(43 96% 70%)"
16553
+ },
16358
16554
  tagToolLevel1: {
16359
16555
  bg: "hsla(142 70% 42% / 0.22)",
16360
16556
  color: "hsl(142 70% 72%)"
@@ -16418,6 +16614,21 @@ const darkTheme = {
16418
16614
  border: "hsl(0 72% 35%)",
16419
16615
  color: "hsl(0 84% 60%)"
16420
16616
  },
16617
+ tagPass: {
16618
+ bg: "hsl(142 70% 15%)",
16619
+ border: "hsl(142 70% 35%)",
16620
+ color: "hsl(142 70% 65%)"
16621
+ },
16622
+ tagFail: {
16623
+ bg: "hsl(0 72% 15%)",
16624
+ border: "hsl(0 72% 35%)",
16625
+ color: "hsl(0 84% 60%)"
16626
+ },
16627
+ tagPartial: {
16628
+ bg: "hsl(38 92% 15%)",
16629
+ border: "hsl(38 92% 35%)",
16630
+ color: "hsl(43 96% 62%)"
16631
+ },
16421
16632
  tagToolLevel1: {
16422
16633
  bg: "hsl(142 70% 18%)",
16423
16634
  color: "hsl(142 70% 65%)"
@@ -21986,7 +22197,7 @@ function getFontSizes(base) {
21986
22197
  }));
21987
22198
  }
21988
22199
 
21989
- var version = '6.4.5';
22200
+ var version = '6.5.0';
21990
22201
 
21991
22202
  const defaultPresetColors = {
21992
22203
  blue: '#1677FF',
@@ -22937,11 +23148,157 @@ const useResetIconStyle = (iconPrefixCls, csp)=>{
22937
23148
 
22938
23149
  const IconContext = /*#__PURE__*/ React.createContext({});
22939
23150
 
23151
+ const APPEND_ORDER = 'data-rc-order';
23152
+ const APPEND_PRIORITY = 'data-rc-priority';
23153
+ const MARK_KEY = 'rc-util-key';
23154
+ const containerCache = new Map();
23155
+ function canUseDom() {
23156
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
23157
+ }
23158
+ function contains(root, node) {
23159
+ if (!root || !node) {
23160
+ return false;
23161
+ }
23162
+ if (root.contains) {
23163
+ return root.contains(node);
23164
+ }
23165
+ let current = node;
23166
+ while(current){
23167
+ if (current === root) {
23168
+ return true;
23169
+ }
23170
+ current = current.parentNode;
23171
+ }
23172
+ return false;
23173
+ }
23174
+ function getMark({ mark } = {}) {
23175
+ if (mark) {
23176
+ return mark.startsWith('data-') ? mark : `data-${mark}`;
23177
+ }
23178
+ return MARK_KEY;
23179
+ }
23180
+ function getContainer(option) {
23181
+ if (option.attachTo) {
23182
+ return option.attachTo;
23183
+ }
23184
+ const head = document.querySelector('head');
23185
+ return head || document.body;
23186
+ }
23187
+ function getOrder(prepend) {
23188
+ if (prepend === 'queue') {
23189
+ return 'prependQueue';
23190
+ }
23191
+ return prepend ? 'prepend' : 'append';
23192
+ }
23193
+ function findStyles(container) {
23194
+ return Array.from((containerCache.get(container) || container).children).filter((node)=>node.tagName === 'STYLE');
23195
+ }
23196
+ function injectCSS(css, option = {}) {
23197
+ if (!canUseDom()) {
23198
+ return null;
23199
+ }
23200
+ const { csp, prepend, priority = 0 } = option;
23201
+ const mergedOrder = getOrder(prepend);
23202
+ const isPrependQueue = mergedOrder === 'prependQueue';
23203
+ const styleNode = document.createElement('style');
23204
+ styleNode.setAttribute(APPEND_ORDER, mergedOrder);
23205
+ if (isPrependQueue && priority) {
23206
+ styleNode.setAttribute(APPEND_PRIORITY, `${priority}`);
23207
+ }
23208
+ if (csp?.nonce) {
23209
+ styleNode.nonce = csp.nonce;
23210
+ }
23211
+ styleNode.innerHTML = css;
23212
+ const container = getContainer(option);
23213
+ const { firstChild } = container;
23214
+ if (prepend) {
23215
+ if (isPrependQueue) {
23216
+ const existStyle = (option.styles || findStyles(container)).filter((node)=>{
23217
+ if (![
23218
+ 'prepend',
23219
+ 'prependQueue'
23220
+ ].includes(node.getAttribute(APPEND_ORDER))) {
23221
+ return false;
23222
+ }
23223
+ const nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);
23224
+ return priority >= nodePriority;
23225
+ });
23226
+ if (existStyle.length) {
23227
+ container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
23228
+ return styleNode;
23229
+ }
23230
+ }
23231
+ container.insertBefore(styleNode, firstChild);
23232
+ } else {
23233
+ container.appendChild(styleNode);
23234
+ }
23235
+ return styleNode;
23236
+ }
23237
+ function findExistNode(key, option = {}) {
23238
+ let { styles } = option;
23239
+ styles || (styles = findStyles(getContainer(option)));
23240
+ return styles.find((node)=>node.getAttribute(getMark(option)) === key);
23241
+ }
23242
+ function syncRealContainer(container, option) {
23243
+ const cachedRealContainer = containerCache.get(container);
23244
+ if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
23245
+ const placeholderStyle = injectCSS('', option);
23246
+ if (!placeholderStyle) {
23247
+ return;
23248
+ }
23249
+ const { parentNode } = placeholderStyle;
23250
+ containerCache.set(container, parentNode);
23251
+ container.removeChild(placeholderStyle);
23252
+ }
23253
+ }
23254
+ function updateCSS(css, key, originOption = {}) {
23255
+ if (!canUseDom()) {
23256
+ return null;
23257
+ }
23258
+ const container = getContainer(originOption);
23259
+ const styles = findStyles(container);
23260
+ const option = {
23261
+ ...originOption,
23262
+ styles
23263
+ };
23264
+ syncRealContainer(container, option);
23265
+ const existNode = findExistNode(key, option);
23266
+ if (existNode) {
23267
+ if (option.csp?.nonce && existNode.nonce !== option.csp.nonce) {
23268
+ existNode.nonce = option.csp.nonce;
23269
+ }
23270
+ if (existNode.innerHTML !== css) {
23271
+ existNode.innerHTML = css;
23272
+ }
23273
+ return existNode;
23274
+ }
23275
+ const newNode = injectCSS(css, option);
23276
+ newNode?.setAttribute(getMark(option), key);
23277
+ return newNode;
23278
+ }
23279
+ function getRoot(ele) {
23280
+ return ele?.getRootNode?.();
23281
+ }
23282
+ function getShadowRoot(ele) {
23283
+ const root = getRoot(ele);
23284
+ return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : null;
23285
+ }
23286
+ const warned = {};
23287
+ function warningOnce$1(valid, message) {
23288
+ if (valid || warned[message]) {
23289
+ return;
23290
+ }
23291
+ if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
23292
+ console.error(`Warning: ${message}`);
23293
+ }
23294
+ warned[message] = true;
23295
+ }
23296
+
22940
23297
  function camelCase(input) {
22941
23298
  return input.replace(/-(.)/g, (match, g)=>g.toUpperCase());
22942
23299
  }
22943
23300
  function warning$1(valid, message) {
22944
- util.warning(valid, `[@ant-design/icons] ${message}`);
23301
+ warningOnce$1(valid, `[@ant-design/icons] ${message}`);
22945
23302
  }
22946
23303
  function isIconDefinition(target) {
22947
23304
  return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
@@ -22974,18 +23331,6 @@ function generate(node, key, rootProps) {
22974
23331
  ...rootProps
22975
23332
  }, (node.children || []).map((child, index)=>generate(child, `${key}-${node.tag}-${index}`)));
22976
23333
  }
22977
- function getSecondaryColor(primaryColor) {
22978
- // choose the second color
22979
- return colors.generate(primaryColor)[0];
22980
- }
22981
- function normalizeTwoToneColors(twoToneColor) {
22982
- if (!twoToneColor) {
22983
- return [];
22984
- }
22985
- return Array.isArray(twoToneColor) ? twoToneColor : [
22986
- twoToneColor
22987
- ];
22988
- }
22989
23334
  const iconStyles = `
22990
23335
  .anticon {
22991
23336
  display: inline-flex;
@@ -23042,7 +23387,7 @@ const iconStyles = `
23042
23387
  }
23043
23388
  `;
23044
23389
  const useInsertStyles = (eleRef)=>{
23045
- const { csp, prefixCls, layer } = React.useContext(IconContext);
23390
+ const { csp, prefixCls, layer, zeroRuntime } = React.useContext(IconContext);
23046
23391
  let mergedStyleStr = iconStyles;
23047
23392
  if (prefixCls) {
23048
23393
  mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
@@ -23051,9 +23396,12 @@ const useInsertStyles = (eleRef)=>{
23051
23396
  mergedStyleStr = `@layer ${layer} {\n${mergedStyleStr}\n}`;
23052
23397
  }
23053
23398
  React.useEffect(()=>{
23399
+ if (zeroRuntime) {
23400
+ return;
23401
+ }
23054
23402
  const ele = eleRef.current;
23055
- const shadowRoot = util.getShadowRoot(ele);
23056
- util.updateCSS(mergedStyleStr, '@ant-design-icons', {
23403
+ const shadowRoot = getShadowRoot(ele);
23404
+ updateCSS(mergedStyleStr, '@ant-design-icons', {
23057
23405
  prepend: !layer,
23058
23406
  csp,
23059
23407
  attachTo: shadowRoot
@@ -23061,43 +23409,15 @@ const useInsertStyles = (eleRef)=>{
23061
23409
  }, []);
23062
23410
  };
23063
23411
 
23064
- const twoToneColorPalette = {
23065
- primaryColor: '#333',
23066
- secondaryColor: '#E6E6E6',
23067
- calculated: false
23068
- };
23069
- function setTwoToneColors({ primaryColor, secondaryColor }) {
23070
- twoToneColorPalette.primaryColor = primaryColor;
23071
- twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);
23072
- twoToneColorPalette.calculated = !!secondaryColor;
23073
- }
23074
- function getTwoToneColors() {
23075
- return {
23076
- ...twoToneColorPalette
23077
- };
23078
- }
23079
23412
  const IconBase = (props)=>{
23080
- const { icon, className, onClick, style, primaryColor, secondaryColor, ...restProps } = props;
23413
+ const { icon, className, onClick, style, primaryColor: _primaryColor, secondaryColor: _secondaryColor, ...restProps } = props;
23081
23414
  const svgRef = React__namespace.useRef(null);
23082
- let colors = twoToneColorPalette;
23083
- if (primaryColor) {
23084
- colors = {
23085
- primaryColor,
23086
- secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
23087
- };
23088
- }
23089
23415
  useInsertStyles(svgRef);
23090
23416
  warning$1(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);
23091
23417
  if (!isIconDefinition(icon)) {
23092
23418
  return null;
23093
23419
  }
23094
- let target = icon;
23095
- if (target && typeof target.icon === 'function') {
23096
- target = {
23097
- ...target,
23098
- icon: target.icon(colors.primaryColor, colors.secondaryColor)
23099
- };
23100
- }
23420
+ const target = icon;
23101
23421
  return generate(target.icon, `svg-${target.name}`, {
23102
23422
  className,
23103
23423
  onClick,
@@ -23112,26 +23432,6 @@ const IconBase = (props)=>{
23112
23432
  });
23113
23433
  };
23114
23434
  IconBase.displayName = 'IconReact';
23115
- IconBase.getTwoToneColors = getTwoToneColors;
23116
- IconBase.setTwoToneColors = setTwoToneColors;
23117
-
23118
- function setTwoToneColor(twoToneColor) {
23119
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23120
- return IconBase.setTwoToneColors({
23121
- primaryColor,
23122
- secondaryColor
23123
- });
23124
- }
23125
- function getTwoToneColor() {
23126
- const colors = IconBase.getTwoToneColors();
23127
- if (!colors.calculated) {
23128
- return colors.primaryColor;
23129
- }
23130
- return [
23131
- colors.primaryColor,
23132
- colors.secondaryColor
23133
- ];
23134
- }
23135
23435
 
23136
23436
  function _extends$v() {
23137
23437
  _extends$v = Object.assign ? Object.assign.bind() : function(target) {
@@ -23147,15 +23447,11 @@ function _extends$v() {
23147
23447
  };
23148
23448
  return _extends$v.apply(this, arguments);
23149
23449
  }
23150
- // Initial setting
23151
- // should move it to antd main repo?
23152
- setTwoToneColor(colors.blue.primary);
23153
- // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720
23154
23450
  const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23155
23451
  const { // affect outter <i>...</i>
23156
23452
  className, // affect inner <svg>...</svg>
23157
- icon, spin, rotate, tabIndex, onClick, // other
23158
- twoToneColor, ...restProps } = props;
23453
+ icon, spin, rotate, tabIndex, onClick, twoToneColor: _twoToneColor, // other
23454
+ ...restProps } = props;
23159
23455
  const { prefixCls = 'anticon', rootClassName } = React__namespace.useContext(IconContext);
23160
23456
  const classString = clsx(rootClassName, prefixCls, {
23161
23457
  [`${prefixCls}-${icon.name}`]: !!icon.name,
@@ -23169,7 +23465,6 @@ const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23169
23465
  msTransform: `rotate(${rotate}deg)`,
23170
23466
  transform: `rotate(${rotate}deg)`
23171
23467
  } : undefined;
23172
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23173
23468
  return /*#__PURE__*/ React__namespace.createElement("span", _extends$v({
23174
23469
  role: "img",
23175
23470
  "aria-label": icon.name
@@ -23180,13 +23475,9 @@ const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23180
23475
  className: classString
23181
23476
  }), /*#__PURE__*/ React__namespace.createElement(IconBase, {
23182
23477
  icon: icon,
23183
- primaryColor: primaryColor,
23184
- secondaryColor: secondaryColor,
23185
23478
  style: svgStyle
23186
23479
  }));
23187
23480
  });
23188
- Icon.getTwoToneColor = getTwoToneColor;
23189
- Icon.setTwoToneColor = setTwoToneColor;
23190
23481
  if (process.env.NODE_ENV !== 'production') {
23191
23482
  Icon.displayName = 'AntdIcon';
23192
23483
  }
@@ -23396,6 +23687,13 @@ const mergeStyles = (...styles)=>{
23396
23687
  const useSemanticStyles = (...styles)=>{
23397
23688
  return React__namespace.useMemo(()=>mergeStyles.apply(void 0, styles), [].concat(styles));
23398
23689
  };
23690
+ const useSemanticRootStyle = (style)=>{
23691
+ return React__namespace.useMemo(()=>style ? {
23692
+ root: style
23693
+ } : undefined, [
23694
+ style
23695
+ ]);
23696
+ };
23399
23697
  // =========================== Export ===========================
23400
23698
  const resolveStyleOrClass = (value, info)=>{
23401
23699
  return isFunction$1(value) ? value(info) : value;
@@ -23498,31 +23796,31 @@ const genBaseStyle$7 = (token)=>{
23498
23796
  paddingTop: 0,
23499
23797
  paddingBottom: 0,
23500
23798
  opacity: 0
23501
- }
23502
- },
23503
- [`${componentCls}-with-description`]: {
23504
- alignItems: 'flex-start',
23505
- padding: withDescriptionPadding,
23506
- [`${componentCls}-icon`]: {
23507
- marginInlineEnd: marginSM,
23508
- fontSize: withDescriptionIconSize,
23509
- lineHeight: 0
23510
23799
  },
23511
- [`${componentCls}-title`]: {
23512
- display: 'block',
23513
- marginBottom: marginXS,
23514
- color: colorTextHeading,
23515
- fontSize: fontSizeLG
23800
+ [`&${componentCls}-with-description`]: {
23801
+ alignItems: 'flex-start',
23802
+ padding: withDescriptionPadding,
23803
+ [`${componentCls}-icon`]: {
23804
+ marginInlineEnd: marginSM,
23805
+ fontSize: withDescriptionIconSize,
23806
+ lineHeight: 0
23807
+ },
23808
+ [`${componentCls}-title`]: {
23809
+ display: 'block',
23810
+ marginBottom: marginXS,
23811
+ color: colorTextHeading,
23812
+ fontSize: fontSizeLG
23813
+ },
23814
+ [`${componentCls}-description`]: {
23815
+ display: 'block',
23816
+ color: colorText
23817
+ }
23516
23818
  },
23517
- [`${componentCls}-description`]: {
23518
- display: 'block',
23519
- color: colorText
23819
+ [`&${componentCls}-banner`]: {
23820
+ marginBottom: 0,
23821
+ border: '0 !important',
23822
+ borderRadius: 0
23520
23823
  }
23521
- },
23522
- [`${componentCls}-banner`]: {
23523
- marginBottom: 0,
23524
- border: '0 !important',
23525
- borderRadius: 0
23526
23824
  }
23527
23825
  };
23528
23826
  };
@@ -23692,12 +23990,16 @@ const Alert$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23692
23990
  showIcon: isShowIcon,
23693
23991
  closable: isClosable
23694
23992
  };
23993
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
23994
+ const styleRoot = useSemanticRootStyle(style);
23695
23995
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
23696
23996
  contextClassNames,
23697
23997
  classNames
23698
23998
  ], [
23699
23999
  contextStyles,
23700
- styles
24000
+ contextStyleRoot,
24001
+ styles,
24002
+ styleRoot
23701
24003
  ], {
23702
24004
  props: mergedProps
23703
24005
  });
@@ -23761,8 +24063,6 @@ const Alert$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23761
24063
  className: clsx(alertCls, motionClassName),
23762
24064
  style: {
23763
24065
  ...mergedStyles.root,
23764
- ...contextStyle,
23765
- ...style,
23766
24066
  ...motionStyle
23767
24067
  },
23768
24068
  onMouseEnter: onMouseEnter,
@@ -23811,21 +24111,21 @@ function _classCallCheck(a, n) {
23811
24111
  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
23812
24112
  }
23813
24113
 
23814
- function _typeof$1(o) {
24114
+ function _typeof(o) {
23815
24115
  "@babel/helpers - typeof";
23816
- return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24116
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
23817
24117
  return typeof o;
23818
24118
  } : function(o) {
23819
24119
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
23820
- }, _typeof$1(o);
24120
+ }, _typeof(o);
23821
24121
  }
23822
24122
 
23823
24123
  function toPrimitive(t, r) {
23824
- if ("object" != _typeof$1(t) || !t) return t;
24124
+ if ("object" != _typeof(t) || !t) return t;
23825
24125
  var e = t[Symbol.toPrimitive];
23826
24126
  if (void 0 !== e) {
23827
24127
  var i = e.call(t, r);
23828
- if ("object" != _typeof$1(i)) return i;
24128
+ if ("object" != _typeof(i)) return i;
23829
24129
  throw new TypeError("@@toPrimitive must return a primitive value.");
23830
24130
  }
23831
24131
  return (String )(t);
@@ -23833,7 +24133,7 @@ function toPrimitive(t, r) {
23833
24133
 
23834
24134
  function toPropertyKey(t) {
23835
24135
  var i = toPrimitive(t, "string");
23836
- return "symbol" == _typeof$1(i) ? i : i + "";
24136
+ return "symbol" == _typeof(i) ? i : i + "";
23837
24137
  }
23838
24138
 
23839
24139
  function _defineProperties(e, r) {
@@ -23869,7 +24169,7 @@ function _assertThisInitialized(e) {
23869
24169
  }
23870
24170
 
23871
24171
  function _possibleConstructorReturn(t, e) {
23872
- if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e;
24172
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
23873
24173
  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
23874
24174
  return _assertThisInitialized(t);
23875
24175
  }
@@ -24044,71 +24344,15 @@ const locale$4 = {
24044
24344
  page_size: 'Page Size'
24045
24345
  };
24046
24346
 
24047
- var commonLocale = {
24347
+ const commonLocale = {
24048
24348
  yearFormat: 'YYYY',
24049
24349
  dayFormat: 'D',
24050
24350
  cellMeridiemFormat: 'A',
24051
24351
  monthBeforeYear: true
24052
24352
  };
24053
24353
 
24054
- function _typeof(o) {
24055
- "@babel/helpers - typeof";
24056
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24057
- return typeof o;
24058
- } : function(o) {
24059
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
24060
- }, _typeof(o);
24061
- }
24062
- function ownKeys(e, r) {
24063
- var t = Object.keys(e);
24064
- if (Object.getOwnPropertySymbols) {
24065
- var o = Object.getOwnPropertySymbols(e);
24066
- r && (o = o.filter(function(r) {
24067
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
24068
- })), t.push.apply(t, o);
24069
- }
24070
- return t;
24071
- }
24072
- function _objectSpread(e) {
24073
- for(var r = 1; r < arguments.length; r++){
24074
- var t = null != arguments[r] ? arguments[r] : {};
24075
- r % 2 ? ownKeys(Object(t), true).forEach(function(r) {
24076
- _defineProperty(e, r, t[r]);
24077
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
24078
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
24079
- });
24080
- }
24081
- return e;
24082
- }
24083
- function _defineProperty(obj, key, value) {
24084
- key = _toPropertyKey(key);
24085
- if (key in obj) {
24086
- Object.defineProperty(obj, key, {
24087
- value: value,
24088
- enumerable: true,
24089
- configurable: true,
24090
- writable: true
24091
- });
24092
- } else {
24093
- obj[key] = value;
24094
- }
24095
- return obj;
24096
- }
24097
- function _toPropertyKey(t) {
24098
- var i = _toPrimitive(t, "string");
24099
- return "symbol" == _typeof(i) ? i : String(i);
24100
- }
24101
- function _toPrimitive(t, r) {
24102
- if ("object" != _typeof(t) || !t) return t;
24103
- var e = t[Symbol.toPrimitive];
24104
- if (void 0 !== e) {
24105
- var i = e.call(t, r);
24106
- if ("object" != _typeof(i)) return i;
24107
- throw new TypeError("@@toPrimitive must return a primitive value.");
24108
- }
24109
- return ("string" === r ? String : Number)(t);
24110
- }
24111
- var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24354
+ const locale$3 = {
24355
+ ...commonLocale,
24112
24356
  locale: 'en_US',
24113
24357
  today: 'Today',
24114
24358
  now: 'Now',
@@ -24132,7 +24376,7 @@ var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24132
24376
  nextDecade: 'Next decade',
24133
24377
  previousCentury: 'Last century',
24134
24378
  nextCentury: 'Next century'
24135
- });
24379
+ };
24136
24380
 
24137
24381
  const locale$2 = {
24138
24382
  placeholder: 'Select time',
@@ -24824,11 +25068,13 @@ const ProviderChildren = (props)=>{
24824
25068
  const memoIconContextValue = React__namespace.useMemo(()=>({
24825
25069
  prefixCls: iconPrefixCls,
24826
25070
  csp,
24827
- layer: layer ? 'antd' : undefined
25071
+ layer: layer ? 'antd' : undefined,
25072
+ zeroRuntime: mergedTheme?.zeroRuntime
24828
25073
  }), [
24829
25074
  iconPrefixCls,
24830
25075
  csp,
24831
- layer
25076
+ layer,
25077
+ mergedTheme?.zeroRuntime
24832
25078
  ]);
24833
25079
  let childNode = /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/ React__namespace.createElement(IconStyle, {
24834
25080
  iconPrefixCls: iconPrefixCls,
@@ -27701,7 +27947,7 @@ const CollapsePanel = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
27701
27947
  });
27702
27948
 
27703
27949
  const genBaseStyle$6 = (token)=>{
27704
- const { componentCls, contentBg, padding, headerBg, headerPadding, collapseHeaderPaddingSM, collapseHeaderPaddingLG, collapsePanelBorderRadius, lineWidth, lineType, colorBorder, colorText, colorTextHeading, colorTextDisabled, fontSizeLG, lineHeight, lineHeightLG, marginSM, paddingSM, paddingLG, paddingXS, motionDurationSlow, fontSizeIcon, contentPadding, fontHeight, fontHeightLG } = token;
27950
+ const { componentCls, contentBg, padding, headerBg, headerPadding, headerPaddingSM, headerPaddingLG, collapsePanelBorderRadius, lineWidth, lineType, colorBorder, colorText, colorTextHeading, colorTextDisabled, fontSizeLG, lineHeight, lineHeightLG, marginSM, paddingSM, paddingLG, paddingXS, motionDurationSlow, fontSizeIcon, contentPadding, contentPaddingSM, contentPaddingLG, fontHeight, fontHeightLG } = token;
27705
27951
  const borderBase = `${cssinjs.unit(lineWidth)} ${lineType} ${colorBorder}`;
27706
27952
  return {
27707
27953
  [componentCls]: {
@@ -27796,15 +28042,14 @@ const genBaseStyle$6 = (token)=>{
27796
28042
  '&-small': {
27797
28043
  [`> ${componentCls}-item`]: {
27798
28044
  [`> ${componentCls}-header`]: {
27799
- padding: collapseHeaderPaddingSM,
27800
- paddingInlineStart: paddingXS,
28045
+ padding: headerPaddingSM,
27801
28046
  [`> ${componentCls}-expand-icon`]: {
27802
28047
  // Arrow offset
27803
28048
  marginInlineStart: token.calc(paddingSM).sub(paddingXS).equal()
27804
28049
  }
27805
28050
  },
27806
28051
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27807
- padding: paddingSM
28052
+ padding: contentPaddingSM
27808
28053
  }
27809
28054
  }
27810
28055
  },
@@ -27813,8 +28058,7 @@ const genBaseStyle$6 = (token)=>{
27813
28058
  fontSize: fontSizeLG,
27814
28059
  lineHeight: lineHeightLG,
27815
28060
  [`> ${componentCls}-header`]: {
27816
- padding: collapseHeaderPaddingLG,
27817
- paddingInlineStart: padding,
28061
+ padding: headerPaddingLG,
27818
28062
  [`> ${componentCls}-expand-icon`]: {
27819
28063
  height: fontHeightLG,
27820
28064
  // Arrow offset
@@ -27822,7 +28066,7 @@ const genBaseStyle$6 = (token)=>{
27822
28066
  }
27823
28067
  },
27824
28068
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27825
- padding: paddingLG
28069
+ padding: contentPaddingLG
27826
28070
  }
27827
28071
  }
27828
28072
  },
@@ -27911,19 +28155,24 @@ const genGhostStyle = (token)=>{
27911
28155
  }
27912
28156
  };
27913
28157
  };
27914
- const prepareComponentToken$l = (token)=>({
27915
- headerPadding: `${token.paddingSM}px ${token.padding}px`,
28158
+ const prepareComponentToken$l = (token)=>{
28159
+ const componentToken = {
28160
+ headerPadding: `${cssinjs.unit(token.paddingSM)} ${cssinjs.unit(token.padding)}`,
28161
+ headerPaddingSM: `${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingSM)} ${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingXS)}`,
28162
+ headerPaddingLG: `${cssinjs.unit(token.padding)} ${cssinjs.unit(token.paddingLG)} ${cssinjs.unit(token.padding)} ${cssinjs.unit(token.padding)}`,
27916
28163
  headerBg: token.colorFillAlter,
27917
- contentPadding: `${token.padding}px 16px`,
28164
+ contentPadding: `${cssinjs.unit(token.padding)} ${cssinjs.unit(16)}`,
27918
28165
  // Fixed Value
28166
+ contentPaddingSM: token.paddingSM,
28167
+ contentPaddingLG: token.paddingLG,
27919
28168
  contentBg: token.colorBgContainer,
27920
- borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
28169
+ borderlessContentPadding: `${cssinjs.unit(token.paddingXXS)} ${cssinjs.unit(16)} ${cssinjs.unit(token.padding)}`,
27921
28170
  borderlessContentBg: 'transparent'
27922
- });
28171
+ };
28172
+ return componentToken;
28173
+ };
27923
28174
  var useStyle$q = genStyleHooks('Collapse', (token)=>{
27924
28175
  const collapseToken = cssinjsUtils.mergeToken(token, {
27925
- collapseHeaderPaddingSM: `${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingSM)}`,
27926
- collapseHeaderPaddingLG: `${cssinjs.unit(token.padding)} ${cssinjs.unit(token.paddingLG)}`,
27927
28176
  collapsePanelBorderRadius: token.borderRadiusLG
27928
28177
  });
27929
28178
  return [
@@ -27950,12 +28199,16 @@ const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
27950
28199
  bordered,
27951
28200
  expandIconPlacement: mergedPlacement
27952
28201
  };
28202
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
28203
+ const styleRoot = useSemanticRootStyle(style);
27953
28204
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
27954
28205
  contextClassNames,
27955
28206
  classNames
27956
28207
  ], [
27957
28208
  contextStyles,
27958
- styles
28209
+ contextStyleRoot,
28210
+ styles,
28211
+ styleRoot
27959
28212
  ], {
27960
28213
  props: mergedProps
27961
28214
  });
@@ -28020,11 +28273,7 @@ const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
28020
28273
  expandIcon: renderExpandIcon,
28021
28274
  prefixCls: prefixCls,
28022
28275
  className: collapseClassName,
28023
- style: {
28024
- ...mergedStyles.root,
28025
- ...contextStyle,
28026
- ...style
28027
- },
28276
+ style: mergedStyles.root,
28028
28277
  classNames: mergedClassNames,
28029
28278
  styles: mergedStyles,
28030
28279
  destroyOnHidden: destroyOnHidden ?? destroyInactivePanel
@@ -28429,12 +28678,6 @@ const genSharedButtonStyle = (token)=>{
28429
28678
  },
28430
28679
  // https://github.com/ant-design/ant-design/issues/51380
28431
28680
  [`${componentCls}-icon > svg`]: resetIcon(),
28432
- // https://github.com/ant-design/ant-design/issues/57727
28433
- [`${componentCls}-icon`]: {
28434
- display: 'inline-flex',
28435
- alignItems: 'center',
28436
- justifyContent: 'center'
28437
- },
28438
28681
  '> a': {
28439
28682
  color: 'currentColor'
28440
28683
  },
@@ -29020,12 +29263,16 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29020
29263
  iconPlacement: mergedIconPlacement
29021
29264
  };
29022
29265
  // ========================= Style ==========================
29266
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29267
+ const styleRoot = useSemanticRootStyle(style);
29023
29268
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29024
29269
  _skipSemantic ? undefined : contextClassNames,
29025
29270
  classNames
29026
29271
  ], [
29027
29272
  _skipSemantic ? undefined : contextStyles,
29028
- styles
29273
+ contextStyleRoot,
29274
+ styles,
29275
+ styleRoot
29029
29276
  ], {
29030
29277
  props: mergedProps
29031
29278
  });
@@ -29047,11 +29294,6 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29047
29294
  [`${prefixCls}-rtl`]: direction === 'rtl',
29048
29295
  [`${prefixCls}-icon-end`]: mergedIconPlacement === 'end'
29049
29296
  }, compactItemClassnames, className, rootClassName, contextClassName, mergedClassNames.root);
29050
- const fullStyle = {
29051
- ...mergedStyles.root,
29052
- ...contextStyle,
29053
- ...style
29054
- };
29055
29297
  const iconSharedProps = {
29056
29298
  className: mergedClassNames.icon,
29057
29299
  style: mergedStyles.icon
@@ -29089,7 +29331,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29089
29331
  [`${prefixCls}-disabled`]: mergedDisabled
29090
29332
  }),
29091
29333
  href: mergedDisabled ? undefined : linkButtonRestProps.href,
29092
- style: fullStyle,
29334
+ style: mergedStyles.root,
29093
29335
  onClick: handleClick,
29094
29336
  ref: mergedRef,
29095
29337
  tabIndex: mergedDisabled ? -1 : 0,
@@ -29100,7 +29342,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29100
29342
  ...rest,
29101
29343
  type: htmlType,
29102
29344
  className: classes,
29103
- style: fullStyle,
29345
+ style: mergedStyles.root,
29104
29346
  onClick: handleClick,
29105
29347
  disabled: mergedDisabled,
29106
29348
  ref: mergedRef
@@ -29728,12 +29970,16 @@ const Skeleton = (props)=>{
29728
29970
  title,
29729
29971
  paragraph
29730
29972
  };
29973
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29974
+ const styleRoot = useSemanticRootStyle(style);
29731
29975
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29732
29976
  contextClassNames,
29733
29977
  classNames
29734
29978
  ], [
29735
29979
  contextStyles,
29736
- styles
29980
+ contextStyleRoot,
29981
+ styles,
29982
+ styleRoot
29737
29983
  ], {
29738
29984
  props: mergedProps
29739
29985
  });
@@ -29802,11 +30048,7 @@ const Skeleton = (props)=>{
29802
30048
  }, mergedClassNames.root, contextClassName, className, rootClassName, hashId, cssVarCls);
29803
30049
  return /*#__PURE__*/ React__namespace.createElement("div", {
29804
30050
  className: cls,
29805
- style: {
29806
- ...mergedStyles.root,
29807
- ...contextStyle,
29808
- ...style
29809
- }
30051
+ style: mergedStyles.root
29810
30052
  }, avatarNode, contentNode);
29811
30053
  }
29812
30054
  return children ?? null;
@@ -30292,12 +30534,16 @@ const Empty = (props)=>{
30292
30534
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
30293
30535
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
30294
30536
  const [hashId, cssVarCls] = useStyle$n(prefixCls);
30537
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
30538
+ const styleRoot = useSemanticRootStyle(style);
30295
30539
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
30296
30540
  contextClassNames,
30297
30541
  classNames
30298
30542
  ], [
30299
30543
  contextStyles,
30300
- styles
30544
+ contextStyleRoot,
30545
+ styles,
30546
+ styleRoot
30301
30547
  ], {
30302
30548
  props
30303
30549
  });
@@ -30332,11 +30578,7 @@ const Empty = (props)=>{
30332
30578
  [`${prefixCls}-normal`]: mergedImage === simpleEmptyImg,
30333
30579
  [`${prefixCls}-rtl`]: direction === 'rtl'
30334
30580
  }, className, rootClassName, mergedClassNames.root),
30335
- style: {
30336
- ...mergedStyles.root,
30337
- ...contextStyle,
30338
- ...style
30339
- },
30581
+ style: mergedStyles.root,
30340
30582
  ...restProps
30341
30583
  }, /*#__PURE__*/ React__namespace.createElement("div", {
30342
30584
  className: clsx(`${prefixCls}-image`, mergedClassNames.image),
@@ -30807,7 +31049,7 @@ const genSelectInputMultipleStyle = (token)=>{
30807
31049
  }
30808
31050
  };
30809
31051
  };
30810
- /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors = {}, warningColors = {}, patchStyle)=>{
31052
+ /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors, warningColors, patchStyle)=>{
30811
31053
  const { componentCls } = token;
30812
31054
  return {
30813
31055
  [`&${componentCls}-${variant}`]: [
@@ -30826,6 +31068,14 @@ const genSelectInputMultipleStyle = (token)=>{
30826
31068
  ]
30827
31069
  };
30828
31070
  };
31071
+ const genSelectInputFocusVisibleStyle = (token, outlineColor)=>({
31072
+ outline: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
31073
+ outlineOffset: cssinjs.unit(token.calc(token.lineWidth).mul(-1).equal()),
31074
+ transition: [
31075
+ `outline-offset`,
31076
+ `outline`
31077
+ ].map((prop)=>`${prop} 0s`).join(', ')
31078
+ });
30829
31079
  const genSelectInputStyle = (token)=>{
30830
31080
  const { componentCls, fontHeight, controlHeight, fontSizeIcon, showArrowPaddingInlineEnd, iconCls, antCls, max, calc } = token;
30831
31081
  const [varName, varRef] = genCssVar(antCls, 'select');
@@ -31001,20 +31251,31 @@ const genSelectInputStyle = (token)=>{
31001
31251
  },
31002
31252
  '&-has-search-value': {
31003
31253
  color: 'transparent',
31004
- [`> :not(${componentCls}-input)`]: {
31254
+ [`> *:not(${componentCls}-input)`]: {
31005
31255
  opacity: 0
31006
31256
  }
31007
31257
  },
31008
31258
  // >>> Value
31009
31259
  '&-value': {
31010
31260
  transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,
31011
- zIndex: 1
31261
+ zIndex: 1,
31262
+ opacity: 1
31012
31263
  }
31013
31264
  },
31265
+ // Dim the selected content while the dropdown is open. Shared by all select-like
31266
+ // components (Select / Cascader / TreeSelect) since they render through the same
31267
+ // `content` structure.
31014
31268
  [`&${componentCls}-open ${componentCls}-content`]: {
31015
- color: token.colorTextPlaceholder,
31269
+ '&-has-value': {
31270
+ opacity: 0.25
31271
+ },
31016
31272
  '&-has-search-value': {
31017
- color: 'transparent'
31273
+ opacity: 1,
31274
+ transition: `opacity ${token.motionDurationMid} ${token.motionEaseInOut}`,
31275
+ color: 'transparent',
31276
+ [`> *:not(${componentCls}-input)`]: {
31277
+ opacity: 0
31278
+ }
31018
31279
  }
31019
31280
  }
31020
31281
  }
@@ -31081,6 +31342,10 @@ const genSelectInputStyle = (token)=>{
31081
31342
  borderActive: 'transparent',
31082
31343
  borderOutline: 'transparent',
31083
31344
  background: 'transparent'
31345
+ }, {}, {}, {
31346
+ [`&:not(${componentCls}-disabled):has(input:focus-visible), &:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.activeBorderColor),
31347
+ [`&${componentCls}-status-error:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-error:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorError),
31348
+ [`&${componentCls}-status-warning:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-warning:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorWarning)
31084
31349
  }),
31085
31350
  // Underlined
31086
31351
  genSelectInputVariantStyle(token, 'underlined', {
@@ -31524,12 +31789,16 @@ const InternalSelect = (props, ref)=>{
31524
31789
  disabled: mergedDisabled,
31525
31790
  size: mergedSize
31526
31791
  };
31792
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
31793
+ const styleRoot = useSemanticRootStyle(style);
31527
31794
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
31528
31795
  contextClassNames,
31529
31796
  classNames
31530
31797
  ], [
31531
31798
  contextStyles,
31532
- styles
31799
+ contextStyleRoot,
31800
+ styles,
31801
+ styleRoot
31533
31802
  ], {
31534
31803
  props: mergedProps
31535
31804
  }, {
@@ -31589,11 +31858,7 @@ const InternalSelect = (props, ref)=>{
31589
31858
  styles: mergedStyles,
31590
31859
  showSearch: mergedShowSearch,
31591
31860
  ...selectProps,
31592
- style: {
31593
- ...mergedStyles.root,
31594
- ...contextStyle,
31595
- ...style
31596
- },
31861
+ style: mergedStyles.root,
31597
31862
  popupMatchSelectWidth: mergedPopupMatchSelectWidth,
31598
31863
  transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),
31599
31864
  builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
@@ -31855,21 +32120,10 @@ function getArrowOffsetToken(options) {
31855
32120
  arrowOffsetVertical
31856
32121
  };
31857
32122
  }
31858
- function isInject(valid, code) {
31859
- if (!valid) {
31860
- return {};
31861
- }
31862
- return code;
31863
- }
31864
32123
  const getArrowStyle = (token, colorBg, options)=>{
31865
32124
  const { componentCls, boxShadowPopoverArrow, arrowOffsetVertical, arrowOffsetHorizontal, antCls } = token;
31866
32125
  const [varName] = genCssVar(antCls, 'tooltip');
31867
- const { arrowDistance = 0, arrowPlacement = {
31868
- left: true,
31869
- right: true,
31870
- top: true,
31871
- bottom: true
31872
- }, arrowShadow = true } = options || {};
32126
+ const { arrowDistance = 0, arrowShadow = true } = options || {};
31873
32127
  return {
31874
32128
  [componentCls]: {
31875
32129
  // ============================ Basic ============================
@@ -31888,131 +32142,123 @@ const getArrowStyle = (token, colorBg, options)=>{
31888
32142
  // ========================== Placement ==========================
31889
32143
  // Here handle the arrow position and rotate stuff
31890
32144
  // >>>>> Top
31891
- ...isInject(!!arrowPlacement.top, {
31892
- [[
31893
- `&-placement-top > ${componentCls}-arrow`,
31894
- `&-placement-topLeft > ${componentCls}-arrow`,
31895
- `&-placement-topRight > ${componentCls}-arrow`
31896
- ].join(',')]: {
31897
- bottom: arrowDistance,
31898
- transform: 'translateY(100%) rotate(180deg)'
32145
+ [[
32146
+ `&-placement-top > ${componentCls}-arrow`,
32147
+ `&-placement-topLeft > ${componentCls}-arrow`,
32148
+ `&-placement-topRight > ${componentCls}-arrow`
32149
+ ].join(',')]: {
32150
+ bottom: arrowDistance,
32151
+ transform: 'translateY(100%) rotate(180deg)'
32152
+ },
32153
+ [`&-placement-top > ${componentCls}-arrow`]: {
32154
+ left: {
32155
+ _skip_check_: true,
32156
+ value: '50%'
31899
32157
  },
31900
- [`&-placement-top > ${componentCls}-arrow`]: {
32158
+ transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
32159
+ },
32160
+ '&-placement-topLeft': {
32161
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32162
+ [`> ${componentCls}-arrow`]: {
31901
32163
  left: {
31902
32164
  _skip_check_: true,
31903
- value: '50%'
31904
- },
31905
- transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
31906
- },
31907
- '&-placement-topLeft': {
31908
- [varName('arrow-offset-x')]: arrowOffsetHorizontal,
31909
- [`> ${componentCls}-arrow`]: {
31910
- left: {
31911
- _skip_check_: true,
31912
- value: arrowOffsetHorizontal
31913
- }
32165
+ value: arrowOffsetHorizontal
31914
32166
  }
31915
- },
31916
- '&-placement-topRight': {
31917
- [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
31918
- [`> ${componentCls}-arrow`]: {
31919
- right: {
31920
- _skip_check_: true,
31921
- value: arrowOffsetHorizontal
31922
- }
32167
+ }
32168
+ },
32169
+ '&-placement-topRight': {
32170
+ [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
32171
+ [`> ${componentCls}-arrow`]: {
32172
+ right: {
32173
+ _skip_check_: true,
32174
+ value: arrowOffsetHorizontal
31923
32175
  }
31924
32176
  }
31925
- }),
32177
+ },
31926
32178
  // >>>>> Bottom
31927
- ...isInject(!!arrowPlacement.bottom, {
31928
- [[
31929
- `&-placement-bottom > ${componentCls}-arrow`,
31930
- `&-placement-bottomLeft > ${componentCls}-arrow`,
31931
- `&-placement-bottomRight > ${componentCls}-arrow`
31932
- ].join(',')]: {
31933
- top: arrowDistance,
31934
- transform: `translateY(-100%)`
32179
+ [[
32180
+ `&-placement-bottom > ${componentCls}-arrow`,
32181
+ `&-placement-bottomLeft > ${componentCls}-arrow`,
32182
+ `&-placement-bottomRight > ${componentCls}-arrow`
32183
+ ].join(',')]: {
32184
+ top: arrowDistance,
32185
+ transform: `translateY(-100%)`
32186
+ },
32187
+ [`&-placement-bottom > ${componentCls}-arrow`]: {
32188
+ left: {
32189
+ _skip_check_: true,
32190
+ value: '50%'
31935
32191
  },
31936
- [`&-placement-bottom > ${componentCls}-arrow`]: {
32192
+ transform: `translateX(-50%) translateY(-100%)`
32193
+ },
32194
+ '&-placement-bottomLeft': {
32195
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32196
+ [`> ${componentCls}-arrow`]: {
31937
32197
  left: {
31938
32198
  _skip_check_: true,
31939
- value: '50%'
31940
- },
31941
- transform: `translateX(-50%) translateY(-100%)`
31942
- },
31943
- '&-placement-bottomLeft': {
31944
- [varName('arrow-offset-x')]: arrowOffsetHorizontal,
31945
- [`> ${componentCls}-arrow`]: {
31946
- left: {
31947
- _skip_check_: true,
31948
- value: arrowOffsetHorizontal
31949
- }
31950
- }
31951
- },
31952
- '&-placement-bottomRight': {
31953
- [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
31954
- [`> ${componentCls}-arrow`]: {
31955
- right: {
31956
- _skip_check_: true,
31957
- value: arrowOffsetHorizontal
31958
- }
32199
+ value: arrowOffsetHorizontal
31959
32200
  }
31960
32201
  }
31961
- }),
31962
- // >>>>> Left
31963
- ...isInject(!!arrowPlacement.left, {
31964
- [[
31965
- `&-placement-left > ${componentCls}-arrow`,
31966
- `&-placement-leftTop > ${componentCls}-arrow`,
31967
- `&-placement-leftBottom > ${componentCls}-arrow`
31968
- ].join(',')]: {
32202
+ },
32203
+ '&-placement-bottomRight': {
32204
+ [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
32205
+ [`> ${componentCls}-arrow`]: {
31969
32206
  right: {
31970
32207
  _skip_check_: true,
31971
- value: arrowDistance
31972
- },
31973
- transform: 'translateX(100%) rotate(90deg)'
31974
- },
31975
- [`&-placement-left > ${componentCls}-arrow`]: {
31976
- top: {
31977
- _skip_check_: true,
31978
- value: '50%'
31979
- },
31980
- transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32208
+ value: arrowOffsetHorizontal
32209
+ }
32210
+ }
32211
+ },
32212
+ // >>>>> Left
32213
+ [[
32214
+ `&-placement-left > ${componentCls}-arrow`,
32215
+ `&-placement-leftTop > ${componentCls}-arrow`,
32216
+ `&-placement-leftBottom > ${componentCls}-arrow`
32217
+ ].join(',')]: {
32218
+ right: {
32219
+ _skip_check_: true,
32220
+ value: arrowDistance
31981
32221
  },
31982
- [`&-placement-leftTop > ${componentCls}-arrow`]: {
31983
- top: arrowOffsetVertical
32222
+ transform: 'translateX(100%) rotate(90deg)'
32223
+ },
32224
+ [`&-placement-left > ${componentCls}-arrow`]: {
32225
+ top: {
32226
+ _skip_check_: true,
32227
+ value: '50%'
31984
32228
  },
31985
- [`&-placement-leftBottom > ${componentCls}-arrow`]: {
31986
- bottom: arrowOffsetVertical
31987
- }
31988
- }),
32229
+ transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32230
+ },
32231
+ [`&-placement-leftTop > ${componentCls}-arrow`]: {
32232
+ top: arrowOffsetVertical
32233
+ },
32234
+ [`&-placement-leftBottom > ${componentCls}-arrow`]: {
32235
+ bottom: arrowOffsetVertical
32236
+ },
31989
32237
  // >>>>> Right
31990
- ...isInject(!!arrowPlacement.right, {
31991
- [[
31992
- `&-placement-right > ${componentCls}-arrow`,
31993
- `&-placement-rightTop > ${componentCls}-arrow`,
31994
- `&-placement-rightBottom > ${componentCls}-arrow`
31995
- ].join(',')]: {
31996
- left: {
31997
- _skip_check_: true,
31998
- value: arrowDistance
31999
- },
32000
- transform: 'translateX(-100%) rotate(-90deg)'
32001
- },
32002
- [`&-placement-right > ${componentCls}-arrow`]: {
32003
- top: {
32004
- _skip_check_: true,
32005
- value: '50%'
32006
- },
32007
- transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32238
+ [[
32239
+ `&-placement-right > ${componentCls}-arrow`,
32240
+ `&-placement-rightTop > ${componentCls}-arrow`,
32241
+ `&-placement-rightBottom > ${componentCls}-arrow`
32242
+ ].join(',')]: {
32243
+ left: {
32244
+ _skip_check_: true,
32245
+ value: arrowDistance
32008
32246
  },
32009
- [`&-placement-rightTop > ${componentCls}-arrow`]: {
32010
- top: arrowOffsetVertical
32247
+ transform: 'translateX(-100%) rotate(-90deg)'
32248
+ },
32249
+ [`&-placement-right > ${componentCls}-arrow`]: {
32250
+ top: {
32251
+ _skip_check_: true,
32252
+ value: '50%'
32011
32253
  },
32012
- [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32013
- bottom: arrowOffsetVertical
32014
- }
32015
- })
32254
+ transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32255
+ },
32256
+ [`&-placement-rightTop > ${componentCls}-arrow`]: {
32257
+ top: arrowOffsetVertical
32258
+ },
32259
+ [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32260
+ bottom: arrowOffsetVertical
32261
+ }
32016
32262
  }
32017
32263
  };
32018
32264
  };
@@ -33290,7 +33536,7 @@ const generateId = (()=>{
33290
33536
  };
33291
33537
  })();
33292
33538
  const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33293
- const { prefixCls: customizePrefixCls, className, trigger, children, defaultCollapsed = false, theme = 'dark', style = {}, collapsible = false, reverseArrow = false, width = 200, collapsedWidth = 80, zeroWidthTriggerStyle, breakpoint, onCollapse, onBreakpoint, ...otherProps } = props;
33539
+ const { prefixCls: customizePrefixCls, className, trigger, children, defaultCollapsed = false, theme = 'dark', style = {}, collapsible = false, reverseArrow = false, width = 200, collapsedWidth = 80, zeroWidthTriggerStyle, breakpoint, onCollapse, onBreakpoint, classNames, styles, ...otherProps } = props;
33294
33540
  const { siderHook } = React.useContext(LayoutContext);
33295
33541
  const [collapsed, setCollapsed] = React.useState('collapsed' in props ? props.collapsed : defaultCollapsed);
33296
33542
  const [below, setBelow] = React.useState(false);
@@ -33307,6 +33553,28 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33307
33553
  }
33308
33554
  onCollapse?.(value, type);
33309
33555
  };
33556
+ const semanticProps = {
33557
+ ...props,
33558
+ collapsed,
33559
+ defaultCollapsed,
33560
+ theme,
33561
+ style,
33562
+ collapsible,
33563
+ reverseArrow,
33564
+ width,
33565
+ collapsedWidth,
33566
+ zeroWidthTriggerStyle,
33567
+ breakpoint,
33568
+ onCollapse,
33569
+ onBreakpoint
33570
+ };
33571
+ const [mergedClassNames, mergedStyles] = useMergeSemantic([
33572
+ classNames
33573
+ ], [
33574
+ styles
33575
+ ], {
33576
+ props: semanticProps
33577
+ });
33310
33578
  // =========================== Prefix ===========================
33311
33579
  const { getPrefixCls, direction } = React.useContext(ConfigContext);
33312
33580
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
@@ -33388,7 +33656,7 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33388
33656
  [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,
33389
33657
  [`${prefixCls}-below`]: !!below,
33390
33658
  [`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth) === 0
33391
- }, className, hashId, cssVarCls);
33659
+ }, className, mergedClassNames.root, hashId, cssVarCls);
33392
33660
  const contextValue = React__namespace.useMemo(()=>({
33393
33661
  siderCollapsed: collapsed
33394
33662
  }), [
@@ -33399,10 +33667,14 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33399
33667
  }, /*#__PURE__*/ React__namespace.createElement("aside", {
33400
33668
  className: siderCls,
33401
33669
  ...divProps,
33402
- style: divStyle,
33670
+ style: {
33671
+ ...mergedStyles.root,
33672
+ ...divStyle
33673
+ },
33403
33674
  ref: ref
33404
33675
  }, /*#__PURE__*/ React__namespace.createElement("div", {
33405
- className: `${prefixCls}-children`
33676
+ className: clsx(`${prefixCls}-children`, mergedClassNames.body),
33677
+ style: mergedStyles.body
33406
33678
  }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null));
33407
33679
  });
33408
33680
  if (process.env.NODE_ENV !== 'production') {
@@ -33509,7 +33781,11 @@ const MenuItem = (props)=>{
33509
33781
  ...firstLevel ? styles?.item : styles?.subMenu?.item,
33510
33782
  ...props.style
33511
33783
  },
33512
- title: typeof title === 'string' ? title : undefined
33784
+ title: typeof title === 'string' ? title : undefined,
33785
+ itemData: props?.itemData ?? {
33786
+ ...props,
33787
+ key: props.eventKey
33788
+ }
33513
33789
  }, cloneElement(icon, (oriProps)=>({
33514
33790
  className: clsx(`${prefixCls}-item-icon`, firstLevel ? classNames?.itemIcon : classNames?.subMenu?.itemIcon, oriProps.className),
33515
33791
  style: {
@@ -34701,12 +34977,16 @@ const InternalMenu = /*#__PURE__*/ React.forwardRef((props, ref)=>{
34701
34977
  selectable: mergedSelectable,
34702
34978
  theme
34703
34979
  };
34980
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
34981
+ const styleRoot = useSemanticRootStyle(style);
34704
34982
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
34705
34983
  contextClassNames,
34706
34984
  classNames
34707
34985
  ], [
34708
34986
  contextStyles,
34709
- styles
34987
+ contextStyleRoot,
34988
+ styles,
34989
+ styleRoot
34710
34990
  ], {
34711
34991
  props: mergedProps
34712
34992
  }, {
@@ -34796,11 +35076,7 @@ const InternalMenu = /*#__PURE__*/ React.forwardRef((props, ref)=>{
34796
35076
  onClick: onItemClick,
34797
35077
  ...passedProps,
34798
35078
  inlineCollapsed: mergedInlineCollapsed,
34799
- style: {
34800
- ...mergedStyles.root,
34801
- ...contextStyle,
34802
- ...style
34803
- },
35079
+ style: mergedStyles.root,
34804
35080
  className: menuClassName,
34805
35081
  prefixCls: prefixCls,
34806
35082
  direction: direction,
@@ -34935,18 +35211,39 @@ const genBaseStyle$2 = (token)=>{
34935
35211
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,
34936
35212
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {
34937
35213
  animationName: slideDownOut
35214
+ },
35215
+ [`&${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-right,
35216
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-right,
35217
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightTop,
35218
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightTop,
35219
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightBottom,
35220
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightBottom`]: {
35221
+ animationName: slideLeftIn
35222
+ },
35223
+ [`&${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-left,
35224
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-left,
35225
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftTop,
35226
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftTop,
35227
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftBottom,
35228
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftBottom`]: {
35229
+ animationName: slideRightIn
35230
+ },
35231
+ [`&${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-right,
35232
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightTop,
35233
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightBottom`]: {
35234
+ animationName: slideLeftOut
35235
+ },
35236
+ [`&${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-left,
35237
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftTop,
35238
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftBottom`]: {
35239
+ animationName: slideRightOut
34938
35240
  }
34939
35241
  }
34940
35242
  },
34941
35243
  // =============================================================
34942
35244
  // == Arrow style ==
34943
35245
  // =============================================================
34944
- getArrowStyle(token, colorBgElevated, {
34945
- arrowPlacement: {
34946
- top: true,
34947
- bottom: true
34948
- }
34949
- }),
35246
+ getArrowStyle(token, colorBgElevated),
34950
35247
  {
34951
35248
  // =============================================================
34952
35249
  // == Menu ==
@@ -35106,6 +35403,8 @@ const genBaseStyle$2 = (token)=>{
35106
35403
  [
35107
35404
  initSlideMotion(token, 'slide-up'),
35108
35405
  initSlideMotion(token, 'slide-down'),
35406
+ initSlideMotion(token, 'slide-left'),
35407
+ initSlideMotion(token, 'slide-right'),
35109
35408
  initMoveMotion(token, 'move-up'),
35110
35409
  initMoveMotion(token, 'move-down'),
35111
35410
  initZoomMotion(token, 'zoom-big')
@@ -35182,9 +35481,15 @@ const Dropdown$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
35182
35481
  if (transitionName !== undefined) {
35183
35482
  return transitionName;
35184
35483
  }
35185
- if (placement.includes('top')) {
35484
+ if (placement.startsWith('top')) {
35186
35485
  return `${rootPrefixCls}-slide-down`;
35187
35486
  }
35487
+ if (placement.startsWith('left')) {
35488
+ return `${rootPrefixCls}-slide-right`;
35489
+ }
35490
+ if (placement.startsWith('right')) {
35491
+ return `${rootPrefixCls}-slide-left`;
35492
+ }
35188
35493
  return `${rootPrefixCls}-slide-up`;
35189
35494
  }, [
35190
35495
  getPrefixCls,
@@ -35956,12 +36261,16 @@ const InternalRadio = (props, ref)=>{
35956
36261
  ...radioProps,
35957
36262
  checked: mergedChecked
35958
36263
  };
36264
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
36265
+ const styleRoot = useSemanticRootStyle(style);
35959
36266
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
35960
36267
  contextClassNames,
35961
36268
  classNames
35962
36269
  ], [
35963
36270
  contextStyles,
35964
- styles
36271
+ contextStyleRoot,
36272
+ styles,
36273
+ styleRoot
35965
36274
  ], {
35966
36275
  props: mergedProps
35967
36276
  });
@@ -35980,11 +36289,7 @@ const InternalRadio = (props, ref)=>{
35980
36289
  disabled: radioProps.disabled
35981
36290
  }, /*#__PURE__*/ React__namespace.createElement("label", {
35982
36291
  className: wrapperClassString,
35983
- style: {
35984
- ...mergedStyles.root,
35985
- ...contextStyle,
35986
- ...style
35987
- },
36292
+ style: mergedStyles.root,
35988
36293
  onMouseEnter: props.onMouseEnter,
35989
36294
  onMouseLeave: props.onMouseLeave,
35990
36295
  title: title,
@@ -36279,7 +36584,25 @@ const genOutlinedGroupStyle = (token)=>({
36279
36584
  }
36280
36585
  }
36281
36586
  });
36282
- /* ============ Borderless ============ */ const genBorderlessStyle = (token, extraStyles)=>{
36587
+ /* ============ Borderless ============ */ const borderlessFocusVisibleSelector = '&:focus-visible, &:has(input:focus-visible), &:has(textarea:focus-visible)';
36588
+ const genBorderlessFocusVisibleStyle = (token, outlineColor)=>({
36589
+ outline: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
36590
+ outlineOffset: cssinjs.unit(token.calc(token.lineWidth).mul(-1).equal()),
36591
+ transition: [
36592
+ `outline-offset`,
36593
+ `outline`
36594
+ ].map((prop)=>`${prop} 0s`).join(', ')
36595
+ });
36596
+ const genBorderlessStatusStyle = (token, options)=>({
36597
+ '&, & input, & textarea': {
36598
+ color: options.color
36599
+ },
36600
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, options.color),
36601
+ [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {
36602
+ color: options.affixColor
36603
+ }
36604
+ });
36605
+ const genBorderlessStyle = (token, extraStyles)=>{
36283
36606
  const { componentCls } = token;
36284
36607
  return {
36285
36608
  '&-borderless': {
@@ -36297,28 +36620,21 @@ const genOutlinedGroupStyle = (token)=>({
36297
36620
  '&:focus, &:focus-within': {
36298
36621
  outline: 'none'
36299
36622
  },
36623
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, token.activeBorderColor),
36300
36624
  // >>>>> Disabled
36301
36625
  [`&${componentCls}-disabled, &[disabled]`]: {
36302
36626
  color: token.colorTextDisabled,
36303
36627
  cursor: 'not-allowed'
36304
36628
  },
36305
36629
  // >>>>> Status
36306
- [`&${componentCls}-status-error`]: {
36307
- '&, & input, & textarea': {
36308
- color: token.colorError
36309
- },
36310
- [`${componentCls}-prefix, ${componentCls}-suffix`]: {
36311
- color: token.colorErrorAffix
36312
- }
36313
- },
36314
- [`&${componentCls}-status-warning`]: {
36315
- '&, & input, & textarea': {
36316
- color: token.colorWarning
36317
- },
36318
- [`${componentCls}-prefix, ${componentCls}-suffix`]: {
36319
- color: token.colorWarningAffix
36320
- }
36321
- },
36630
+ [`&${componentCls}-status-error`]: genBorderlessStatusStyle(token, {
36631
+ color: token.colorError,
36632
+ affixColor: token.colorErrorAffix
36633
+ }),
36634
+ [`&${componentCls}-status-warning`]: genBorderlessStatusStyle(token, {
36635
+ color: token.colorWarning,
36636
+ affixColor: token.colorWarningAffix
36637
+ }),
36322
36638
  ...extraStyles
36323
36639
  }
36324
36640
  };
@@ -37445,7 +37761,7 @@ const genPositionStyle = (token)=>{
37445
37761
  top: 0
37446
37762
  }
37447
37763
  },
37448
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37764
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37449
37765
  order: 0
37450
37766
  }
37451
37767
  },
@@ -37517,7 +37833,7 @@ const genPositionStyle = (token)=>{
37517
37833
  }
37518
37834
  }
37519
37835
  },
37520
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37836
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37521
37837
  marginLeft: {
37522
37838
  _skip_check_: true,
37523
37839
  value: cssinjs.unit(calc(token.lineWidth).mul(-1).equal())
@@ -37526,7 +37842,7 @@ const genPositionStyle = (token)=>{
37526
37842
  _skip_check_: true,
37527
37843
  value: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37528
37844
  },
37529
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37845
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37530
37846
  paddingLeft: {
37531
37847
  _skip_check_: true,
37532
37848
  value: token.paddingLG
@@ -37544,7 +37860,7 @@ const genPositionStyle = (token)=>{
37544
37860
  }
37545
37861
  }
37546
37862
  },
37547
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37863
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37548
37864
  order: 0,
37549
37865
  marginRight: {
37550
37866
  _skip_check_: true,
@@ -37554,7 +37870,7 @@ const genPositionStyle = (token)=>{
37554
37870
  _skip_check_: true,
37555
37871
  value: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37556
37872
  },
37557
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37873
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37558
37874
  paddingRight: {
37559
37875
  _skip_check_: true,
37560
37876
  value: token.paddingLG
@@ -37776,7 +38092,7 @@ const genRtlStyle = (token)=>{
37776
38092
  [`> ${componentCls}-nav`]: {
37777
38093
  order: 1
37778
38094
  },
37779
- [`> ${componentCls}-content-holder`]: {
38095
+ [`> ${componentCls}-body-holder`]: {
37780
38096
  order: 0
37781
38097
  }
37782
38098
  },
@@ -37784,7 +38100,7 @@ const genRtlStyle = (token)=>{
37784
38100
  [`> ${componentCls}-nav`]: {
37785
38101
  order: 0
37786
38102
  },
37787
- [`> ${componentCls}-content-holder`]: {
38103
+ [`> ${componentCls}-body-holder`]: {
37788
38104
  order: 1
37789
38105
  }
37790
38106
  },
@@ -37920,16 +38236,16 @@ const genTabsStyle = (token)=>{
37920
38236
  // ============================= Tabs =============================
37921
38237
  ...genTabStyle(token),
37922
38238
  // =========================== TabPanes ===========================
37923
- [`${componentCls}-content`]: {
38239
+ [`${componentCls}-body`]: {
37924
38240
  position: 'relative',
37925
38241
  width: '100%'
37926
38242
  },
37927
- [`${componentCls}-content-holder`]: {
38243
+ [`${componentCls}-body-holder`]: {
37928
38244
  flex: 'auto',
37929
38245
  minWidth: 0,
37930
38246
  minHeight: 0
37931
38247
  },
37932
- [`${componentCls}-tabpane`]: {
38248
+ [`${componentCls}-content`]: {
37933
38249
  ...genFocusStyle(token),
37934
38250
  '&-hidden': {
37935
38251
  display: 'none'
@@ -38087,12 +38403,16 @@ const InternalTabs = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38087
38403
  items: mergedItems
38088
38404
  };
38089
38405
  // ========================= Style ==========================
38406
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38407
+ const styleRoot = useSemanticRootStyle(style);
38090
38408
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38091
38409
  contextClassNames,
38092
38410
  classNames
38093
38411
  ], [
38094
38412
  contextStyles,
38095
- styles
38413
+ contextStyleRoot,
38414
+ styles,
38415
+ styleRoot
38096
38416
  ], {
38097
38417
  props: mergedProps
38098
38418
  }, {
@@ -38121,11 +38441,7 @@ const InternalTabs = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38121
38441
  popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)
38122
38442
  },
38123
38443
  styles: mergedStyles,
38124
- style: {
38125
- ...mergedStyles.root,
38126
- ...contextStyle,
38127
- ...style
38128
- },
38444
+ style: mergedStyles.root,
38129
38445
  editable: editable,
38130
38446
  more: {
38131
38447
  icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/ React__namespace.createElement(RefIcon$g, null),
@@ -38519,12 +38835,16 @@ const Card$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38519
38835
  size: mergedSize,
38520
38836
  variant: variant
38521
38837
  };
38838
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38839
+ const styleRoot = useSemanticRootStyle(style);
38522
38840
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38523
38841
  contextClassNames,
38524
38842
  classNames
38525
38843
  ], [
38526
38844
  contextStyles,
38527
- styles
38845
+ contextStyleRoot,
38846
+ styles,
38847
+ styleRoot
38528
38848
  ], {
38529
38849
  props: mergedProps
38530
38850
  });
@@ -38640,9 +38960,7 @@ const Card$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38640
38960
  [`${prefixCls}-rtl`]: direction === 'rtl'
38641
38961
  }, className, rootClassName, hashId, cssVarCls, mergedClassNames.root);
38642
38962
  const mergedStyle = {
38643
- ...mergedStyles.root,
38644
- ...contextStyle,
38645
- ...style
38963
+ ...mergedStyles.root
38646
38964
  };
38647
38965
  return /*#__PURE__*/ React__namespace.createElement("div", {
38648
38966
  ref: ref,
@@ -38660,20 +38978,22 @@ const CardMeta = (props)=>{
38660
38978
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('cardMeta');
38661
38979
  const prefixCls = getPrefixCls('card', customizePrefixCls);
38662
38980
  const metaPrefixCls = `${prefixCls}-meta`;
38981
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38982
+ const styleRoot = useSemanticRootStyle(style);
38663
38983
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38664
38984
  contextClassNames,
38665
38985
  cardMetaClassNames
38666
38986
  ], [
38667
38987
  contextStyles,
38668
- styles
38988
+ contextStyleRoot,
38989
+ styles,
38990
+ styleRoot
38669
38991
  ], {
38670
38992
  props
38671
38993
  });
38672
38994
  const rootClassNames = clsx(metaPrefixCls, className, contextClassName, mergedClassNames.root);
38673
38995
  const rootStyles = {
38674
- ...contextStyle,
38675
- ...mergedStyles.root,
38676
- ...style
38996
+ ...mergedStyles.root
38677
38997
  };
38678
38998
  const avatarClassNames = clsx(`${metaPrefixCls}-avatar`, mergedClassNames.avatar);
38679
38999
  const titleClassNames = clsx(`${metaPrefixCls}-title`, mergedClassNames.title);
@@ -38990,12 +39310,16 @@ const InternalCheckbox = (props, ref)=>{
38990
39310
  disabled: mergedDisabled,
38991
39311
  checked: mergedChecked
38992
39312
  };
39313
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
39314
+ const styleRoot = useSemanticRootStyle(style);
38993
39315
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38994
39316
  contextClassNames,
38995
39317
  classNames
38996
39318
  ], [
38997
39319
  contextStyles,
38998
- styles
39320
+ contextStyleRoot,
39321
+ styles,
39322
+ styleRoot
38999
39323
  ], {
39000
39324
  props: mergedProps
39001
39325
  });
@@ -39016,11 +39340,7 @@ const InternalCheckbox = (props, ref)=>{
39016
39340
  disabled: mergedDisabled
39017
39341
  }, /*#__PURE__*/ React__namespace.createElement("label", {
39018
39342
  className: classString,
39019
- style: {
39020
- ...mergedStyles.root,
39021
- ...contextStyle,
39022
- ...style
39023
- },
39343
+ style: mergedStyles.root,
39024
39344
  onMouseEnter: onMouseEnter,
39025
39345
  onMouseLeave: onMouseLeave,
39026
39346
  onClick: onLabelClick
@@ -39860,12 +40180,16 @@ const Input = /*#__PURE__*/ React.forwardRef((props, ref)=>{
39860
40180
  size: mergedSize,
39861
40181
  disabled: mergedDisabled
39862
40182
  };
40183
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
40184
+ const styleRoot = useSemanticRootStyle(style);
39863
40185
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
39864
40186
  contextClassNames,
39865
40187
  classNames
39866
40188
  ], [
39867
40189
  contextStyles,
39868
- styles
40190
+ contextStyleRoot,
40191
+ styles,
40192
+ styleRoot
39869
40193
  ], {
39870
40194
  props: mergedProps
39871
40195
  });
@@ -39915,11 +40239,7 @@ const Input = /*#__PURE__*/ React.forwardRef((props, ref)=>{
39915
40239
  disabled: mergedDisabled,
39916
40240
  onBlur: handleBlur,
39917
40241
  onFocus: handleFocus,
39918
- style: {
39919
- ...mergedStyles.root,
39920
- ...contextStyle,
39921
- ...style
39922
- },
40242
+ style: mergedStyles.root,
39923
40243
  styles: mergedStyles,
39924
40244
  suffix: suffixNode,
39925
40245
  allowClear: mergedAllowClear,
@@ -41039,12 +41359,16 @@ const TextArea = /*#__PURE__*/ React.forwardRef((props, ref)=>{
41039
41359
  // ==================== Status ====================
41040
41360
  const { status: contextStatus, hasFeedback, feedbackIcon } = React__namespace.useContext(FormItemInputContext);
41041
41361
  const mergedStatus = getMergedStatus(contextStatus, customStatus);
41362
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
41363
+ const styleRoot = useSemanticRootStyle(style);
41042
41364
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
41043
41365
  contextClassNames,
41044
41366
  classNames
41045
41367
  ], [
41046
41368
  contextStyles,
41047
- styles
41369
+ contextStyleRoot,
41370
+ styles,
41371
+ styleRoot
41048
41372
  ], {
41049
41373
  props
41050
41374
  });
@@ -41101,11 +41425,7 @@ const TextArea = /*#__PURE__*/ React.forwardRef((props, ref)=>{
41101
41425
  return /*#__PURE__*/ React__namespace.createElement(RcInput.TextArea, {
41102
41426
  autoComplete: contextAutoComplete,
41103
41427
  ...rest,
41104
- style: {
41105
- ...mergedStyles.root,
41106
- ...contextStyle,
41107
- ...style
41108
- },
41428
+ style: mergedStyles.root,
41109
41429
  styles: mergedStyles,
41110
41430
  disabled: mergedDisabled,
41111
41431
  allowClear: mergedAllowClear,
@@ -41649,6 +41969,14 @@ const Pagination$1 = (props)=>{
41649
41969
  if (allPages - current <= pageBufferSize) {
41650
41970
  left = allPages - pageBufferSize * 2;
41651
41971
  }
41972
+ const hasJumpPrev = !!jumpPrev && current - 1 >= pageBufferSize * 2 && current !== 1 + 2;
41973
+ const hasJumpNext = !!jumpNext && allPages - current >= pageBufferSize * 2 && current !== allPages - 2;
41974
+ if (!showLessItems && hasJumpPrev && right !== allPages) {
41975
+ left += 1;
41976
+ }
41977
+ if (!showLessItems && hasJumpNext && left !== 1) {
41978
+ right -= 1;
41979
+ }
41652
41980
  for(let i = left; i <= right; i += 1){
41653
41981
  pagerList.push(/*#__PURE__*/ React.createElement(Pager, _extends$d({}, pagerProps, {
41654
41982
  key: i,
@@ -41656,13 +41984,13 @@ const Pagination$1 = (props)=>{
41656
41984
  active: current === i
41657
41985
  })));
41658
41986
  }
41659
- if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
41987
+ if (hasJumpPrev) {
41660
41988
  pagerList[0] = /*#__PURE__*/ React.cloneElement(pagerList[0], {
41661
41989
  className: clsx(`${prefixCls}-item-after-jump-prev`, pagerList[0].props.className)
41662
41990
  });
41663
41991
  pagerList.unshift(jumpPrev);
41664
41992
  }
41665
- if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
41993
+ if (hasJumpNext) {
41666
41994
  const lastOne = pagerList[pagerList.length - 1];
41667
41995
  pagerList[pagerList.length - 1] = /*#__PURE__*/ React.cloneElement(lastOne, {
41668
41996
  className: clsx(`${prefixCls}-item-before-jump-next`, lastOne.props.className)
@@ -41982,7 +42310,7 @@ const genPaginationInputVariantStyle = (token)=>{
41982
42310
  };
41983
42311
  };
41984
42312
  const genPaginationJumpStyle = (token)=>{
41985
- const { componentCls, antCls } = token;
42313
+ const { componentCls, iconCls, sizeLG, antCls } = token;
41986
42314
  const [, varRef] = genCssVar(antCls, 'pagination');
41987
42315
  return {
41988
42316
  [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
@@ -42004,18 +42332,19 @@ const genPaginationJumpStyle = (token)=>{
42004
42332
  },
42005
42333
  [`${componentCls}-item-ellipsis`]: {
42006
42334
  position: 'absolute',
42007
- top: 0,
42008
- insetInlineEnd: 0,
42009
- bottom: 0,
42010
- insetInlineStart: 0,
42011
- display: 'block',
42335
+ inset: 0,
42336
+ display: 'inline-flex',
42337
+ justifyContent: 'center',
42338
+ alignItems: 'center',
42012
42339
  margin: 'auto',
42013
42340
  color: token.colorTextDisabled,
42014
- letterSpacing: token.paginationEllipsisLetterSpacing,
42015
42341
  textAlign: 'center',
42016
- textIndent: token.paginationEllipsisTextIndent,
42017
42342
  opacity: 1,
42018
- transition: `all ${token.motionDurationMid}`
42343
+ transition: `all ${token.motionDurationMid}`,
42344
+ [`${iconCls}-ellipsis > svg`]: {
42345
+ width: sizeLG,
42346
+ height: sizeLG
42347
+ }
42019
42348
  }
42020
42349
  },
42021
42350
  '&:hover': {
@@ -42445,12 +42774,16 @@ const Pagination = (props)=>{
42445
42774
  size: mergedSize
42446
42775
  };
42447
42776
  // ========================= Style ==========================
42777
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
42778
+ const styleRoot = useSemanticRootStyle(style);
42448
42779
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
42449
42780
  contextClassNames,
42450
42781
  classNames
42451
42782
  ], [
42452
42783
  contextStyles,
42453
- styles
42784
+ contextStyleRoot,
42785
+ styles,
42786
+ styleRoot
42454
42787
  ], {
42455
42788
  props: mergedProps
42456
42789
  });
@@ -42506,7 +42839,7 @@ const Pagination = (props)=>{
42506
42839
  const iconsProps = React__namespace.useMemo(()=>{
42507
42840
  const ellipsis = /*#__PURE__*/ React__namespace.createElement("span", {
42508
42841
  className: `${prefixCls}-item-ellipsis`
42509
- }, "\u2022\u2022\u2022");
42842
+ }, /*#__PURE__*/ React__namespace.createElement(RefIcon$g, null));
42510
42843
  const prevIcon = /*#__PURE__*/ React__namespace.createElement("button", {
42511
42844
  className: `${prefixCls}-item-link`,
42512
42845
  type: "button",
@@ -42555,9 +42888,7 @@ const Pagination = (props)=>{
42555
42888
  [`${prefixCls}-bordered`]: token.wireframe
42556
42889
  }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
42557
42890
  const mergedStyle = {
42558
- ...mergedStyles.root,
42559
- ...contextStyle,
42560
- ...style
42891
+ ...mergedStyles.root
42561
42892
  };
42562
42893
  return /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, token.wireframe && /*#__PURE__*/ React__namespace.createElement(BorderedStyle, {
42563
42894
  prefixCls: prefixCls
@@ -43604,12 +43935,16 @@ const Statistic = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
43604
43935
  loading,
43605
43936
  value
43606
43937
  };
43938
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
43939
+ const styleRoot = useSemanticRootStyle(style);
43607
43940
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
43608
43941
  contextClassNames,
43609
43942
  classNames
43610
43943
  ], [
43611
43944
  contextStyles,
43612
- styles
43945
+ contextStyleRoot,
43946
+ styles,
43947
+ styleRoot
43613
43948
  ], {
43614
43949
  props: mergedProps
43615
43950
  });
@@ -43655,11 +43990,7 @@ const Statistic = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
43655
43990
  return /*#__PURE__*/ React__namespace.createElement("div", {
43656
43991
  ...restProps,
43657
43992
  className: rootClassNames,
43658
- style: {
43659
- ...mergedStyles.root,
43660
- ...contextStyle,
43661
- ...style
43662
- },
43993
+ style: mergedStyles.root,
43663
43994
  ref: internalRef,
43664
43995
  onMouseEnter: onMouseEnter,
43665
43996
  onMouseLeave: onMouseLeave
@@ -44150,12 +44481,16 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44150
44481
  size: mergedSize,
44151
44482
  disabled: mergedDisabled
44152
44483
  };
44484
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
44485
+ const styleRoot = useSemanticRootStyle(style);
44153
44486
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
44154
44487
  contextClassNames,
44155
44488
  classNames
44156
44489
  ], [
44157
44490
  contextStyles,
44158
- styles
44491
+ contextStyleRoot,
44492
+ styles,
44493
+ styleRoot
44159
44494
  ], {
44160
44495
  props: mergedProps
44161
44496
  });
@@ -44170,11 +44505,6 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44170
44505
  [`${prefixCls}-loading`]: loading,
44171
44506
  [`${prefixCls}-rtl`]: direction === 'rtl'
44172
44507
  }, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
44173
- const mergedStyle = {
44174
- ...mergedStyles.root,
44175
- ...contextStyle,
44176
- ...style
44177
- };
44178
44508
  const changeHandler = (...args)=>{
44179
44509
  setChecked(args[0]);
44180
44510
  onChange?.(...args);
@@ -44190,7 +44520,7 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44190
44520
  onChange: changeHandler,
44191
44521
  prefixCls: prefixCls,
44192
44522
  className: classes,
44193
- style: mergedStyle,
44523
+ style: mergedStyles.root,
44194
44524
  disabled: mergedDisabled,
44195
44525
  ref: ref,
44196
44526
  loadingIcon: loadingIcon
@@ -44590,8 +44920,10 @@ const useSelection = (config, rowSelection)=>{
44590
44920
  const key = getRowKey(record, index);
44591
44921
  const checked = keySet.has(key);
44592
44922
  const checkboxProps = checkboxPropsMap.get(key);
44923
+ const defaultAriaLabel = `Select row ${index + 1}`;
44593
44924
  return {
44594
44925
  node: /*#__PURE__*/ React__namespace.createElement(Radio, {
44926
+ "aria-label": defaultAriaLabel,
44595
44927
  ...checkboxProps,
44596
44928
  checked: checked,
44597
44929
  onClick: (e)=>{
@@ -44623,9 +44955,11 @@ const useSelection = (config, rowSelection)=>{
44623
44955
  } else {
44624
44956
  mergedIndeterminate = checkboxProps?.indeterminate ?? indeterminate;
44625
44957
  }
44958
+ const defaultAriaLabel = checked ? `Row ${index + 1} selected` : `Select row ${index + 1}`;
44626
44959
  // Record checked
44627
44960
  return {
44628
44961
  node: /*#__PURE__*/ React__namespace.createElement(Checkbox, {
44962
+ "aria-label": defaultAriaLabel,
44629
44963
  ...checkboxProps,
44630
44964
  indeterminate: mergedIndeterminate,
44631
44965
  checked: checked,
@@ -46895,8 +47229,13 @@ const getSortData = (data, sortStates, childrenColumnName)=>{
46895
47229
  });
46896
47230
  };
46897
47231
  const useFilterSorter = (props)=>{
46898
- const { prefixCls, mergedColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
46899
- const [sortStates, setSortStates] = React__namespace.useState(()=>collectSortStates(mergedColumns, true));
47232
+ const { prefixCls, mergedColumns, baseColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
47233
+ // Use base (pre-responsive) columns to seed sort states so that
47234
+ // `defaultSortOrder` on a `responsive` column is honored even when the
47235
+ // column is not visible at the current breakpoint.
47236
+ // See: https://github.com/ant-design/ant-design/issues/32847
47237
+ const collectColumns = baseColumns ?? mergedColumns;
47238
+ const [sortStates, setSortStates] = React__namespace.useState(()=>collectSortStates(collectColumns, true));
46900
47239
  const getColumnKeys = (columns, pos)=>{
46901
47240
  const newKeys = [];
46902
47241
  columns.forEach((item, index)=>{
@@ -46911,11 +47250,14 @@ const useFilterSorter = (props)=>{
46911
47250
  };
46912
47251
  const mergedSorterStates = React__namespace.useMemo(()=>{
46913
47252
  let validate = true;
46914
- const collectedStates = collectSortStates(mergedColumns, false);
47253
+ // Collect controlled `sortOrder` from the full (pre-responsive) column
47254
+ // set so that a controlled `sortOrder` on a hidden responsive column
47255
+ // still applies to the sorted data.
47256
+ const collectedStates = collectSortStates(collectColumns, false);
46915
47257
  // Return if not controlled
46916
47258
  if (!collectedStates.length) {
46917
- const mergedColumnsKeys = getColumnKeys(mergedColumns);
46918
- return sortStates.filter(({ key })=>mergedColumnsKeys.includes(key));
47259
+ const collectColumnsKeys = getColumnKeys(collectColumns);
47260
+ return sortStates.filter(({ key })=>collectColumnsKeys.includes(key));
46919
47261
  }
46920
47262
  const validateStates = [];
46921
47263
  function patchStates(state) {
@@ -46948,7 +47290,7 @@ const useFilterSorter = (props)=>{
46948
47290
  });
46949
47291
  return validateStates;
46950
47292
  }, [
46951
- mergedColumns,
47293
+ collectColumns,
46952
47294
  sortStates
46953
47295
  ]);
46954
47296
  // Get render columns title required props
@@ -47057,6 +47399,10 @@ const genBorderedStyle = (token)=>{
47057
47399
  [`> ${componentCls}-container`]: {
47058
47400
  borderInlineStart: tableBorder,
47059
47401
  borderTop: tableBorder,
47402
+ [`> ${componentCls}-header${componentCls}-sticky-holder`]: {
47403
+ marginTop: calc(lineWidth).mul(-1).equal(),
47404
+ borderTop: tableBorder
47405
+ },
47060
47406
  [`> ${componentCls}-content, > ${componentCls}-header, > ${componentCls}-body, > ${componentCls}-summary`]: {
47061
47407
  '> table': {
47062
47408
  // ============================= Cell =============================
@@ -47073,8 +47419,12 @@ const genBorderedStyle = (token)=>{
47073
47419
  }
47074
47420
  },
47075
47421
  // Fixed right should provides additional border
47422
+ // Only add separator border when there are multiple fixed-right columns
47423
+ // (i.e. fix-right-first is not also fix-right-last), otherwise the
47424
+ // ::after border doubles up with the cell's own borderInlineEnd and
47425
+ // creates a spurious extra vertical line. See #56287.
47076
47426
  '> thead > tr, > tbody > tr, > tfoot > tr': {
47077
- [`> ${componentCls}-cell-fix-right-first::after`]: {
47427
+ [`> ${componentCls}-cell-fix-right-first:not(${componentCls}-cell-fix-right-last)::after`]: {
47078
47428
  borderInlineEnd: tableBorder
47079
47429
  }
47080
47430
  },
@@ -48265,12 +48615,16 @@ const InternalTable$1 = (props, ref)=>{
48265
48615
  size: mergedSize,
48266
48616
  bordered
48267
48617
  };
48618
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
48619
+ const styleRoot = useSemanticRootStyle(style);
48268
48620
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48269
48621
  contextClassNames,
48270
48622
  classNames
48271
48623
  ], [
48272
48624
  contextStyles,
48273
- styles
48625
+ contextStyleRoot,
48626
+ styles,
48627
+ styleRoot
48274
48628
  ], {
48275
48629
  props: mergedProps
48276
48630
  }, {
@@ -48394,6 +48748,11 @@ const InternalTable$1 = (props, ref)=>{
48394
48748
  const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useFilterSorter({
48395
48749
  prefixCls,
48396
48750
  mergedColumns,
48751
+ // Pass `baseColumns` (pre-responsive) so `defaultSortOrder` and controlled
48752
+ // `sortOrder` on a `responsive` column are still honored when the column
48753
+ // is hidden at the current breakpoint.
48754
+ // See: https://github.com/ant-design/ant-design/issues/32847
48755
+ baseColumns,
48397
48756
  onSorterChange,
48398
48757
  sortDirections: sortDirections || [
48399
48758
  'ascend',
@@ -48587,11 +48946,6 @@ const InternalTable$1 = (props, ref)=>{
48587
48946
  const wrappercls = clsx(cssVarCls, rootCls, `${prefixCls}-wrapper`, contextClassName, {
48588
48947
  [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'
48589
48948
  }, className, rootClassName, mergedClassNames.root, hashId);
48590
- const mergedStyle = {
48591
- ...mergedStyles.root,
48592
- ...contextStyle,
48593
- ...style
48594
- };
48595
48949
  // ========== empty ==========
48596
48950
  const mergedEmptyNode = React__namespace.useMemo(()=>{
48597
48951
  // When dataSource is null/undefined (detected by reference equality with EMPTY_LIST),
@@ -48638,7 +48992,7 @@ const InternalTable$1 = (props, ref)=>{
48638
48992
  return /*#__PURE__*/ React__namespace.createElement("div", {
48639
48993
  ref: rootRef,
48640
48994
  className: wrappercls,
48641
- style: mergedStyle
48995
+ style: mergedStyles.root
48642
48996
  }, /*#__PURE__*/ React__namespace.createElement(Spin, {
48643
48997
  spinning: false,
48644
48998
  ...spinProps
@@ -48925,12 +49279,16 @@ const CheckableTagGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
48925
49279
  const rootCls = useCSSVarCls(prefixCls);
48926
49280
  const [hashId, cssVarCls] = useStyle$1(prefixCls, rootCls);
48927
49281
  // ====================== Styles ======================
49282
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
49283
+ const styleRoot = useSemanticRootStyle(style);
48928
49284
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48929
49285
  contextClassNames,
48930
49286
  classNames
48931
49287
  ], [
48932
49288
  contextStyles,
48933
- styles
49289
+ contextStyleRoot,
49290
+ styles,
49291
+ styleRoot
48934
49292
  ], {
48935
49293
  props
48936
49294
  });
@@ -48983,11 +49341,7 @@ const CheckableTagGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
48983
49341
  [`${groupPrefixCls}-disabled`]: disabled,
48984
49342
  [`${groupPrefixCls}-rtl`]: direction === 'rtl'
48985
49343
  }, hashId, cssVarCls, className, mergedClassNames.root),
48986
- style: {
48987
- ...contextStyle,
48988
- ...mergedStyles.root,
48989
- ...style
48990
- },
49344
+ style: mergedStyles.root,
48991
49345
  id: id,
48992
49346
  ref: divRef
48993
49347
  }, parsedOptions.map((option)=>/*#__PURE__*/ React.createElement(CheckableTag, {
@@ -53153,6 +53507,28 @@ function useId(deterministicId) {
53153
53507
  return deterministicId || (id ? `radix-${id}` : "");
53154
53508
  }
53155
53509
 
53510
+ // src/use-effect-event.tsx
53511
+ var useReactEffectEvent = React__namespace[" useEffectEvent ".trim().toString()];
53512
+ var useReactInsertionEffect = React__namespace[" useInsertionEffect ".trim().toString()];
53513
+ function useEffectEvent(callback) {
53514
+ if (typeof useReactEffectEvent === "function") {
53515
+ return useReactEffectEvent(callback);
53516
+ }
53517
+ const ref = React__namespace.useRef(()=>{
53518
+ throw new Error("Cannot call an event handler while rendering.");
53519
+ });
53520
+ if (typeof useReactInsertionEffect === "function") {
53521
+ useReactInsertionEffect(()=>{
53522
+ ref.current = callback;
53523
+ });
53524
+ } else {
53525
+ useLayoutEffect2(()=>{
53526
+ ref.current = callback;
53527
+ });
53528
+ }
53529
+ return React__namespace.useMemo(()=>(...args)=>ref.current?.(...args), []);
53530
+ }
53531
+
53156
53532
  // src/use-controllable-state.tsx
53157
53533
  var useInsertionEffect = React__namespace[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
53158
53534
  function useControllableState$1({ prop, defaultProp, onChange = ()=>{}, caller }) {
@@ -53403,27 +53779,6 @@ function useCallbackRef$2(callback) {
53403
53779
  return React__namespace.useMemo(()=>(...args)=>callbackRef.current?.(...args), []);
53404
53780
  }
53405
53781
 
53406
- // src/use-escape-keydown.tsx
53407
- function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
53408
- const onEscapeKeyDown = useCallbackRef$2(onEscapeKeyDownProp);
53409
- React__namespace.useEffect(()=>{
53410
- const handleKeyDown = (event)=>{
53411
- if (event.key === "Escape") {
53412
- onEscapeKeyDown(event);
53413
- }
53414
- };
53415
- ownerDocument.addEventListener("keydown", handleKeyDown, {
53416
- capture: true
53417
- });
53418
- return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53419
- capture: true
53420
- });
53421
- }, [
53422
- onEscapeKeyDown,
53423
- ownerDocument
53424
- ]);
53425
- }
53426
-
53427
53782
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
53428
53783
  var CONTEXT_UPDATE = "dismissableLayer.update";
53429
53784
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -53446,7 +53801,7 @@ var DismissableLayer = React__namespace.forwardRef((props, forwardedRef)=>{
53446
53801
  const [node, setNode] = React__namespace.useState(null);
53447
53802
  const ownerDocument = node?.ownerDocument ?? globalThis?.document;
53448
53803
  const [, force] = React__namespace.useState({});
53449
- const composedRefs = useComposedRefs$1(forwardedRef, (node2)=>setNode(node2));
53804
+ const composedRefs = useComposedRefs$1(forwardedRef, setNode);
53450
53805
  const layers = Array.from(context.layers);
53451
53806
  const [highestLayerWithOutsidePointerEventsDisabled] = [
53452
53807
  ...context.layersWithOutsidePointerEventsDisabled
@@ -53487,15 +53842,31 @@ var DismissableLayer = React__namespace.forwardRef((props, forwardedRef)=>{
53487
53842
  onInteractOutside?.(event);
53488
53843
  if (!event.defaultPrevented) onDismiss?.();
53489
53844
  }, ownerDocument);
53490
- useEscapeKeydown((event)=>{
53491
- const isHighestLayer = index === context.layers.size - 1;
53492
- if (!isHighestLayer) return;
53845
+ const isHighestLayer = node ? index === layers.length - 1 : false;
53846
+ const handleKeyDown = useEffectEvent((event)=>{
53847
+ if (event.key !== "Escape") {
53848
+ return;
53849
+ }
53493
53850
  onEscapeKeyDown?.(event);
53494
53851
  if (!event.defaultPrevented && onDismiss) {
53495
53852
  event.preventDefault();
53496
53853
  onDismiss();
53497
53854
  }
53498
- }, ownerDocument);
53855
+ });
53856
+ React__namespace.useEffect(()=>{
53857
+ if (!isHighestLayer) {
53858
+ return;
53859
+ }
53860
+ ownerDocument.addEventListener("keydown", handleKeyDown, {
53861
+ capture: true
53862
+ });
53863
+ return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53864
+ capture: true
53865
+ });
53866
+ }, [
53867
+ ownerDocument,
53868
+ isHighestLayer
53869
+ ]);
53499
53870
  React__namespace.useEffect(()=>{
53500
53871
  if (!node) return;
53501
53872
  if (disableOutsidePointerEvents) {
@@ -53757,7 +54128,7 @@ var FocusScope = React__namespace.forwardRef((props, forwardedRef)=>{
53757
54128
  const onMountAutoFocus = useCallbackRef$2(onMountAutoFocusProp);
53758
54129
  const onUnmountAutoFocus = useCallbackRef$2(onUnmountAutoFocusProp);
53759
54130
  const lastFocusedElementRef = React__namespace.useRef(null);
53760
- const composedRefs = useComposedRefs$1(forwardedRef, (node)=>setContainer(node));
54131
+ const composedRefs = useComposedRefs$1(forwardedRef, setContainer);
53761
54132
  const focusScope = React__namespace.useRef({
53762
54133
  paused: false,
53763
54134
  pause () {
@@ -119561,7 +119932,7 @@ function mergeRefs(...refs) {
119561
119932
  var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
119562
119933
  try {
119563
119934
  if (isBrowser2) {
119564
- window.__reactRouterVersion = "7.18.0";
119935
+ window.__reactRouterVersion = "7.18.1";
119565
119936
  }
119566
119937
  } catch (e) {}
119567
119938
  var Link = React__namespace.forwardRef(function LinkWithRef({ onClick, discover = "render", prefetch = "none", relative, reloadDocument, replace: replace2, mask, state, target, to, preventScrollReset, viewTransition, defaultShouldRevalidate, ...rest }, forwardedRef) {
@@ -120430,6 +120801,25 @@ const JUDGE_REASONING_PREFIX = "JudgeReasoning/";
120430
120801
  function metricNameOf$1(agg) {
120431
120802
  return agg.metric?.name ?? agg.name?.replace(/^Aggregate\//, "") ?? "Unknown";
120432
120803
  }
120804
+ /** Category labels are human-authored, so match them case-insensitively and drop blank entries. */ function normalizeCategoryList(list) {
120805
+ return (list ?? []).map((category)=>category.trim().toLowerCase()).filter((category)=>category.length > 0);
120806
+ }
120807
+ /**
120808
+ * Resolve each category the metric declares to a status. Resolution order is fail -> pass -> partial:
120809
+ * a category named in more than one list is a malformed definition, and taking fail first means the
120810
+ * safe reading wins rather than a silent pass. Categories in none of the lists stay unclassified.
120811
+ */ function buildStatusByCategory(metric) {
120812
+ const byCategory = new Map();
120813
+ const assign = (list, status)=>{
120814
+ for (const category of normalizeCategoryList(list)){
120815
+ if (!byCategory.has(category)) byCategory.set(category, status);
120816
+ }
120817
+ };
120818
+ assign(metric?.fail_categories, "fail");
120819
+ assign(metric?.pass_categories, "pass");
120820
+ assign(metric?.partial_categories, "partial");
120821
+ return byCategory;
120822
+ }
120433
120823
  /** Collect the leaf nodes (label + node id) grouped by label. */ function groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey) {
120434
120824
  const byLabel = new Map();
120435
120825
  const seen = new Set();
@@ -120480,6 +120870,8 @@ function metricNameOf$1(agg) {
120480
120870
  const counts = agg.counts ?? {};
120481
120871
  const categories = agg.categories ?? agg.metric?.categories ?? Object.keys(counts);
120482
120872
  const byLabel = groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey);
120873
+ const statusByCategory = buildStatusByCategory(agg.metric);
120874
+ const declaresFailCategories = normalizeCategoryList(agg.metric?.fail_categories).length > 0;
120483
120875
  // Order labels by the metric's category order, then any extras found in the data.
120484
120876
  const orderedLabels = [
120485
120877
  ...categories
@@ -120492,10 +120884,13 @@ function metricNameOf$1(agg) {
120492
120884
  return {
120493
120885
  labelName,
120494
120886
  count: counts[labelName] ?? nodesForLabel.length,
120887
+ status: statusByCategory.get(labelName.trim().toLowerCase()) ?? "unclassified",
120495
120888
  nodes: nodesForLabel
120496
120889
  };
120497
120890
  });
120498
120891
  const total = labels.reduce((sum, l)=>sum + l.count, 0);
120892
+ const failureCount = labels.reduce((sum, l)=>l.status === "fail" ? sum + l.count : sum, 0);
120893
+ const verdict = !declaresFailCategories ? "notGated" : failureCount > 0 ? "failed" : "passed";
120499
120894
  return {
120500
120895
  key: agg.identifier ?? `${metricName}-${index}`,
120501
120896
  metricName,
@@ -120503,6 +120898,10 @@ function metricNameOf$1(agg) {
120503
120898
  mostCommon: agg.most_common_label ?? undefined,
120504
120899
  leastCommon: agg.least_common_label ?? undefined,
120505
120900
  total,
120901
+ scoredCount: total,
120902
+ failureCount,
120903
+ declaresFailCategories,
120904
+ verdict,
120506
120905
  labels
120507
120906
  };
120508
120907
  });
@@ -120638,6 +121037,82 @@ const NodeActions = ({ sessionId, nodeId, onAgentNodeClick, onOpenVisualizer })=
120638
121037
  }), "Visualizer")));
120639
121038
  };
120640
121039
 
121040
+ const STATUS_ICON_SIZE = 12;
121041
+ /**
121042
+ * Icon prefixed to a category's tag. Mirrors the status mapping `SessionStatusIcon` already uses
121043
+ * in sessions.tsx, so the two screens read the same. Unclassified carries none, by design: an
121044
+ * unclassified category has no verdict to state, and a neutral icon would imply one.
121045
+ */ const STATUS_ICON = {
121046
+ pass: CircleCheck,
121047
+ fail: CircleX,
121048
+ partial: Blend,
121049
+ unclassified: null
121050
+ };
121051
+ /**
121052
+ * Short word shown on the collapsed accordion row. Unclassified carries none, for the same reason
121053
+ * it carries no icon: the chip would state a verdict the category does not have.
121054
+ */ const STATUS_CHIP_LABEL = {
121055
+ pass: "Pass",
121056
+ fail: "Fail",
121057
+ partial: "Partial",
121058
+ unclassified: null
121059
+ };
121060
+ /** The neutral outlined treatment: unclassified categories, not-gated metrics, and zero counts. */ function outlinedPalette(theme) {
121061
+ return {
121062
+ bg: "transparent",
121063
+ border: theme.colors.border,
121064
+ color: theme.colors.mutedForeground
121065
+ };
121066
+ }
121067
+ function statusPalette(theme, status) {
121068
+ const outlined = outlinedPalette(theme);
121069
+ switch(status){
121070
+ case "pass":
121071
+ return {
121072
+ bg: theme.colors.tagPass?.bg ?? theme.colors.muted,
121073
+ border: theme.colors.tagPass?.border ?? theme.colors.border,
121074
+ color: theme.colors.tagPass?.color ?? theme.colors.success
121075
+ };
121076
+ case "fail":
121077
+ return {
121078
+ bg: theme.colors.tagFail?.bg ?? theme.colors.muted,
121079
+ border: theme.colors.tagFail?.border ?? theme.colors.border,
121080
+ color: theme.colors.tagFail?.color ?? theme.colors.destructive
121081
+ };
121082
+ case "partial":
121083
+ return {
121084
+ bg: theme.colors.tagPartial?.bg ?? theme.colors.muted,
121085
+ border: theme.colors.tagPartial?.border ?? theme.colors.border,
121086
+ color: theme.colors.tagPartial?.color ?? theme.colors.foreground
121087
+ };
121088
+ default:
121089
+ return outlined;
121090
+ }
121091
+ }
121092
+ /**
121093
+ * Pass rate — the share of scored runs that did *not* fail, so it reads with the ratio beside it
121094
+ * rather than against it. An exact 0%/100% only when exact, so a single failure out of two hundred
121095
+ * does not round up to a clean "100% passed".
121096
+ */ function formatPassRate(failureCount, scoredCount) {
121097
+ const exact = (scoredCount - failureCount) * 100 / scoredCount;
121098
+ const rounded = Math.round(exact);
121099
+ if (rounded === 0 && exact > 0) return "<1%";
121100
+ if (rounded === 100 && exact < 100) return ">99%";
121101
+ return `${rounded}%`;
121102
+ }
121103
+ /**
121104
+ * Whether the most/least common read-outs still say something the verdict pill has not.
121105
+ *
121106
+ * They do not when the result is total — every scored run failed, or none did — nor when every run
121107
+ * landed in one category, which makes "most" and "least" the same label. The ratio half of that
121108
+ * applies only to gated metrics: a not-gated metric has no failures *by definition*, so applying it
121109
+ * there would strip the read-outs from every not-gated card, which is the common case in production.
121110
+ */ function showsDistribution(metric) {
121111
+ const { scoredCount, failureCount, declaresFailCategories, labels } = metric;
121112
+ if (scoredCount === 0) return false;
121113
+ if (declaresFailCategories && (failureCount === 0 || failureCount === scoredCount)) return false;
121114
+ return labels.filter((label)=>label.count > 0).length > 1;
121115
+ }
120641
121116
  const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120642
121117
  const { theme } = useTheme$1();
120643
121118
  const [showReasoning, setShowReasoning] = React.useState(false);
@@ -120710,14 +121185,63 @@ const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120710
121185
  }
120711
121186
  }, "Reasoning · ", metricName), node.reasoning));
120712
121187
  };
121188
+ /**
121189
+ * The metric's verdict, beside its name: the status icon, then the pass ratio and rate. The ratio's
121190
+ * leading number is what did *not* fail, which folds partials in with the passes, and the percentage
121191
+ * is that same number as a share — the complement of the failure rate the notification prints.
121192
+ *
121193
+ * The verdict is carried by the icon and its colour alone; spelling it out beside a ratio that
121194
+ * already says the same thing only crowded the header. It stays in the tooltip and the accessible
121195
+ * name so nothing is lost to a reader who cannot resolve the icon.
121196
+ *
121197
+ * Renders nothing for a metric that is not gated, or that has nothing scored yet. Neither has a
121198
+ * ratio to state, and a placeholder pill standing in for the absent verdict only invited the
121199
+ * definitional zero failures of a not-gated metric to be read as an earned pass.
121200
+ */ const VerdictPill = ({ metric })=>{
121201
+ const { theme } = useTheme$1();
121202
+ const { verdict, scoredCount, failureCount } = metric;
121203
+ if (verdict === "notGated" || scoredCount === 0) return null;
121204
+ const failed = verdict === "failed";
121205
+ const palette = statusPalette(theme, failed ? "fail" : "pass");
121206
+ const VerdictIcon = failed ? CircleX : CircleCheck;
121207
+ const verdictLabel = failed ? "Failed" : "Passed";
121208
+ const rate = `${scoredCount - failureCount}/${scoredCount} · ${formatPassRate(failureCount, scoredCount)}`;
121209
+ return /*#__PURE__*/ React.createElement("span", {
121210
+ title: verdictLabel,
121211
+ style: {
121212
+ display: "inline-flex",
121213
+ alignItems: "center",
121214
+ gap: 6,
121215
+ padding: "3px 9px",
121216
+ borderRadius: 6,
121217
+ fontSize: 11.5,
121218
+ letterSpacing: 0.2,
121219
+ background: palette.bg,
121220
+ color: palette.color,
121221
+ border: `1px solid ${palette.border}`
121222
+ }
121223
+ }, /*#__PURE__*/ React.createElement(VerdictIcon, {
121224
+ size: STATUS_ICON_SIZE,
121225
+ role: "img",
121226
+ "aria-label": verdictLabel,
121227
+ style: {
121228
+ flexShrink: 0
121229
+ }
121230
+ }), rate);
121231
+ };
120713
121232
  const LabelPanelHeader = ({ label })=>{
120714
121233
  const { theme } = useTheme$1();
120715
121234
  const isEmpty = label.count === 0;
121235
+ const palette = statusPalette(theme, label.status);
121236
+ const chipLabel = STATUS_CHIP_LABEL[label.status];
121237
+ // A zero-count row keeps its status colour but reads as inactive, matching its disabled state.
121238
+ const dotColor = label.status === "unclassified" ? theme.colors.mutedForeground : palette.color;
120716
121239
  return /*#__PURE__*/ React.createElement("div", {
120717
121240
  style: {
120718
121241
  display: "flex",
120719
121242
  alignItems: "center",
120720
- gap: 10
121243
+ gap: 10,
121244
+ opacity: isEmpty ? 0.55 : undefined
120721
121245
  }
120722
121246
  }, /*#__PURE__*/ React.createElement("span", {
120723
121247
  style: {
@@ -120725,15 +121249,27 @@ const LabelPanelHeader = ({ label })=>{
120725
121249
  height: 7,
120726
121250
  borderRadius: "50%",
120727
121251
  flexShrink: 0,
120728
- background: isEmpty ? theme.colors.border : theme.colors.primary
121252
+ background: dotColor
120729
121253
  }
120730
121254
  }), /*#__PURE__*/ React.createElement("span", {
120731
121255
  style: {
120732
121256
  fontSize: 13,
120733
121257
  fontWeight: 600,
120734
- color: isEmpty ? theme.colors.mutedForeground : undefined
121258
+ color: palette.color
121259
+ }
121260
+ }, label.labelName), chipLabel && /*#__PURE__*/ React.createElement("span", {
121261
+ style: {
121262
+ fontSize: 10,
121263
+ letterSpacing: 0.8,
121264
+ textTransform: "uppercase",
121265
+ padding: "1px 6px",
121266
+ borderRadius: 4,
121267
+ flexShrink: 0,
121268
+ background: palette.bg,
121269
+ color: palette.color,
121270
+ border: `1px solid ${palette.border}`
120735
121271
  }
120736
- }, label.labelName), /*#__PURE__*/ React.createElement("span", {
121272
+ }, chipLabel), /*#__PURE__*/ React.createElement("span", {
120737
121273
  style: {
120738
121274
  marginLeft: "auto",
120739
121275
  fontSize: 12,
@@ -120800,43 +121336,22 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120800
121336
  fontSize: 15,
120801
121337
  fontWeight: 600
120802
121338
  }
120803
- }, metric.metricName), /*#__PURE__*/ React.createElement("div", {
120804
- style: {
120805
- display: "flex",
120806
- flexWrap: "wrap",
120807
- gap: 6,
120808
- marginLeft: 4
120809
- }
120810
- }, metric.labels.map((label)=>/*#__PURE__*/ React.createElement(Tag, {
120811
- key: label.labelName,
120812
- style: {
120813
- margin: 0,
120814
- borderRadius: 12,
120815
- fontSize: 12,
120816
- ...label.count > 0 ? {
120817
- background: theme.colors.tagLlminference?.bg ?? theme.colors.muted,
120818
- color: theme.colors.tagLlminference?.color ?? theme.colors.foreground,
120819
- border: `1px solid ${theme.colors.tagLlminference?.border ?? theme.colors.border}`
120820
- } : {
120821
- background: "transparent",
120822
- color: theme.colors.mutedForeground,
120823
- border: `1px solid ${theme.colors.border}`
120824
- }
120825
- }
120826
- }, label.labelName, " ", /*#__PURE__*/ React.createElement("strong", null, label.count)))), /*#__PURE__*/ React.createElement("div", {
121339
+ }, metric.metricName), /*#__PURE__*/ React.createElement(VerdictPill, {
121340
+ metric: metric
121341
+ }), /*#__PURE__*/ React.createElement("div", {
120827
121342
  style: {
120828
121343
  display: "flex",
120829
121344
  gap: 20,
120830
121345
  marginLeft: "auto",
120831
121346
  flexShrink: 0
120832
121347
  }
120833
- }, /*#__PURE__*/ React.createElement(Meta$1, {
121348
+ }, showsDistribution(metric) && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Meta$1, {
120834
121349
  label: "Most common",
120835
121350
  value: metric.mostCommon
120836
121351
  }), /*#__PURE__*/ React.createElement(Meta$1, {
120837
121352
  label: "Least common",
120838
121353
  value: metric.leastCommon
120839
- }), /*#__PURE__*/ React.createElement(Meta$1, {
121354
+ })), /*#__PURE__*/ React.createElement(Meta$1, {
120840
121355
  label: "Evaluations",
120841
121356
  value: String(metric.total)
120842
121357
  }))), metric.description && /*#__PURE__*/ React.createElement("div", {
@@ -120845,7 +121360,39 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120845
121360
  fontSize: 12,
120846
121361
  color: theme.colors.mutedForeground
120847
121362
  }
120848
- }, metric.description)), /*#__PURE__*/ React.createElement(Collapse, {
121363
+ }, metric.description), /*#__PURE__*/ React.createElement("div", {
121364
+ style: {
121365
+ display: "flex",
121366
+ flexWrap: "wrap",
121367
+ gap: 6,
121368
+ marginTop: 12
121369
+ }
121370
+ }, metric.labels.map((label)=>{
121371
+ const palette = statusPalette(theme, label.status);
121372
+ const StatusIcon = STATUS_ICON[label.status];
121373
+ // "Declared but never scored" stays outlined, but keeps its icon so the row still reads.
121374
+ const filled = label.count > 0 && label.status !== "unclassified";
121375
+ return /*#__PURE__*/ React.createElement(Tag, {
121376
+ key: label.labelName,
121377
+ style: {
121378
+ margin: 0,
121379
+ display: "inline-flex",
121380
+ alignItems: "center",
121381
+ gap: 5,
121382
+ borderRadius: 12,
121383
+ fontSize: 12,
121384
+ background: filled ? palette.bg : "transparent",
121385
+ color: filled ? palette.color : theme.colors.mutedForeground,
121386
+ border: `1px solid ${filled ? palette.border : theme.colors.border}`
121387
+ }
121388
+ }, StatusIcon && /*#__PURE__*/ React.createElement(StatusIcon, {
121389
+ size: STATUS_ICON_SIZE,
121390
+ "aria-hidden": true,
121391
+ style: {
121392
+ flexShrink: 0
121393
+ }
121394
+ }), /*#__PURE__*/ React.createElement("span", null, label.labelName, " ", /*#__PURE__*/ React.createElement("strong", null, label.count)));
121395
+ }))), /*#__PURE__*/ React.createElement(Collapse, {
120849
121396
  items: items,
120850
121397
  bordered: false,
120851
121398
  style: {