@railtownai/railtracks-visualizer 0.0.73 → 0.0.74

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$H = [
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$H);
13057
13139
 
13058
- const __iconNode$C = [
13140
+ const __iconNode$G = [
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$G);
13075
13157
 
13076
- const __iconNode$B = [
13158
+ const __iconNode$F = [
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$F);
13179
+
13180
+ const __iconNode$E = [
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$E);
13125
13229
 
13126
- const __iconNode$A = [
13230
+ const __iconNode$D = [
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$D);
13161
13265
 
13162
- const __iconNode$z = [
13266
+ const __iconNode$C = [
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$C);
13220
13324
 
13221
- const __iconNode$y = [
13325
+ const __iconNode$B = [
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$B);
13231
13335
 
13232
- const __iconNode$x = [
13336
+ const __iconNode$A = [
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$A);
13242
13346
 
13243
- const __iconNode$w = [
13347
+ const __iconNode$z = [
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$z);
13260
13364
 
13261
- const __iconNode$v = [
13365
+ const __iconNode$y = [
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$y);
13278
13382
 
13279
- const __iconNode$u = [
13383
+ const __iconNode$x = [
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$x);
13311
13415
 
13312
- const __iconNode$t = [
13416
+ const __iconNode$w = [
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$w);
13329
13433
 
13330
- const __iconNode$s = [
13434
+ const __iconNode$v = [
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$v);
13453
+
13454
+ const __iconNode$u = [
13331
13455
  [
13332
13456
  "circle",
13333
13457
  {
@@ -13352,7 +13476,54 @@ 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$u);
13480
+
13481
+ const __iconNode$t = [
13482
+ [
13483
+ "circle",
13484
+ {
13485
+ cx: "12",
13486
+ cy: "12",
13487
+ r: "10",
13488
+ key: "1mglay"
13489
+ }
13490
+ ],
13491
+ [
13492
+ "path",
13493
+ {
13494
+ d: "M8 12h8",
13495
+ key: "1wcyev"
13496
+ }
13497
+ ]
13498
+ ];
13499
+ const CircleMinus = createLucideIcon("circle-minus", __iconNode$t);
13500
+
13501
+ const __iconNode$s = [
13502
+ [
13503
+ "circle",
13504
+ {
13505
+ cx: "12",
13506
+ cy: "12",
13507
+ r: "10",
13508
+ key: "1mglay"
13509
+ }
13510
+ ],
13511
+ [
13512
+ "path",
13513
+ {
13514
+ d: "m15 9-6 6",
13515
+ key: "1uzhvr"
13516
+ }
13517
+ ],
13518
+ [
13519
+ "path",
13520
+ {
13521
+ d: "m9 9 6 6",
13522
+ key: "z0biqf"
13523
+ }
13524
+ ]
13525
+ ];
13526
+ const CircleX = createLucideIcon("circle-x", __iconNode$s);
13356
13527
 
13357
13528
  const __iconNode$r = [
13358
13529
  [
@@ -16196,6 +16367,21 @@ const lightTheme = {
16196
16367
  border: "#fca5a5",
16197
16368
  color: "#b91c1c"
16198
16369
  },
16370
+ tagPass: {
16371
+ bg: "#dcfce7",
16372
+ border: "#86efac",
16373
+ color: "#15803d"
16374
+ },
16375
+ tagFail: {
16376
+ bg: "#fee2e2",
16377
+ border: "#fca5a5",
16378
+ color: "#b91c1c"
16379
+ },
16380
+ tagPartial: {
16381
+ bg: "#fef3c7",
16382
+ border: "#fcd34d",
16383
+ color: "#b45309"
16384
+ },
16199
16385
  tagToolLevel1: {
16200
16386
  bg: "#dcfce7",
16201
16387
  color: "#166534"
@@ -16287,6 +16473,21 @@ const lightTheme = {
16287
16473
  border: "hsla(0 84% 55% / 0.35)",
16288
16474
  color: "hsl(0 72% 40%)"
16289
16475
  },
16476
+ tagPass: {
16477
+ bg: "hsla(142 70% 42% / 0.15)",
16478
+ border: "hsla(142 70% 38% / 0.35)",
16479
+ color: "hsl(142 71% 28%)"
16480
+ },
16481
+ tagFail: {
16482
+ bg: "hsla(0 84% 60% / 0.12)",
16483
+ border: "hsla(0 84% 55% / 0.35)",
16484
+ color: "hsl(0 72% 40%)"
16485
+ },
16486
+ tagPartial: {
16487
+ bg: "hsla(38 92% 50% / 0.15)",
16488
+ border: "hsla(38 92% 45% / 0.35)",
16489
+ color: "hsl(32 81% 33%)"
16490
+ },
16290
16491
  tagToolLevel1: {
16291
16492
  bg: "hsla(142 70% 42% / 0.15)",
16292
16493
  color: "hsl(142 71% 28%)"
@@ -16355,6 +16556,21 @@ const lightTheme = {
16355
16556
  border: "hsla(0 72% 42% / 0.35)",
16356
16557
  color: "hsl(0 84% 72%)"
16357
16558
  },
16559
+ tagPass: {
16560
+ bg: "hsla(142 70% 42% / 0.22)",
16561
+ border: "hsla(142 70% 36% / 0.35)",
16562
+ color: "hsl(142 70% 72%)"
16563
+ },
16564
+ tagFail: {
16565
+ bg: "hsla(0 72% 48% / 0.18)",
16566
+ border: "hsla(0 72% 42% / 0.35)",
16567
+ color: "hsl(0 84% 72%)"
16568
+ },
16569
+ tagPartial: {
16570
+ bg: "hsla(38 92% 50% / 0.2)",
16571
+ border: "hsla(38 92% 44% / 0.35)",
16572
+ color: "hsl(43 96% 70%)"
16573
+ },
16358
16574
  tagToolLevel1: {
16359
16575
  bg: "hsla(142 70% 42% / 0.22)",
16360
16576
  color: "hsl(142 70% 72%)"
@@ -16418,6 +16634,21 @@ const darkTheme = {
16418
16634
  border: "hsl(0 72% 35%)",
16419
16635
  color: "hsl(0 84% 60%)"
16420
16636
  },
16637
+ tagPass: {
16638
+ bg: "hsl(142 70% 15%)",
16639
+ border: "hsl(142 70% 35%)",
16640
+ color: "hsl(142 70% 65%)"
16641
+ },
16642
+ tagFail: {
16643
+ bg: "hsl(0 72% 15%)",
16644
+ border: "hsl(0 72% 35%)",
16645
+ color: "hsl(0 84% 60%)"
16646
+ },
16647
+ tagPartial: {
16648
+ bg: "hsl(38 92% 15%)",
16649
+ border: "hsl(38 92% 35%)",
16650
+ color: "hsl(43 96% 62%)"
16651
+ },
16421
16652
  tagToolLevel1: {
16422
16653
  bg: "hsl(142 70% 18%)",
16423
16654
  color: "hsl(142 70% 65%)"
@@ -21986,7 +22217,7 @@ function getFontSizes(base) {
21986
22217
  }));
21987
22218
  }
21988
22219
 
21989
- var version = '6.4.5';
22220
+ var version = '6.5.0';
21990
22221
 
21991
22222
  const defaultPresetColors = {
21992
22223
  blue: '#1677FF',
@@ -22937,11 +23168,157 @@ const useResetIconStyle = (iconPrefixCls, csp)=>{
22937
23168
 
22938
23169
  const IconContext = /*#__PURE__*/ React.createContext({});
22939
23170
 
23171
+ const APPEND_ORDER = 'data-rc-order';
23172
+ const APPEND_PRIORITY = 'data-rc-priority';
23173
+ const MARK_KEY = 'rc-util-key';
23174
+ const containerCache = new Map();
23175
+ function canUseDom() {
23176
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
23177
+ }
23178
+ function contains(root, node) {
23179
+ if (!root || !node) {
23180
+ return false;
23181
+ }
23182
+ if (root.contains) {
23183
+ return root.contains(node);
23184
+ }
23185
+ let current = node;
23186
+ while(current){
23187
+ if (current === root) {
23188
+ return true;
23189
+ }
23190
+ current = current.parentNode;
23191
+ }
23192
+ return false;
23193
+ }
23194
+ function getMark({ mark } = {}) {
23195
+ if (mark) {
23196
+ return mark.startsWith('data-') ? mark : `data-${mark}`;
23197
+ }
23198
+ return MARK_KEY;
23199
+ }
23200
+ function getContainer(option) {
23201
+ if (option.attachTo) {
23202
+ return option.attachTo;
23203
+ }
23204
+ const head = document.querySelector('head');
23205
+ return head || document.body;
23206
+ }
23207
+ function getOrder(prepend) {
23208
+ if (prepend === 'queue') {
23209
+ return 'prependQueue';
23210
+ }
23211
+ return prepend ? 'prepend' : 'append';
23212
+ }
23213
+ function findStyles(container) {
23214
+ return Array.from((containerCache.get(container) || container).children).filter((node)=>node.tagName === 'STYLE');
23215
+ }
23216
+ function injectCSS(css, option = {}) {
23217
+ if (!canUseDom()) {
23218
+ return null;
23219
+ }
23220
+ const { csp, prepend, priority = 0 } = option;
23221
+ const mergedOrder = getOrder(prepend);
23222
+ const isPrependQueue = mergedOrder === 'prependQueue';
23223
+ const styleNode = document.createElement('style');
23224
+ styleNode.setAttribute(APPEND_ORDER, mergedOrder);
23225
+ if (isPrependQueue && priority) {
23226
+ styleNode.setAttribute(APPEND_PRIORITY, `${priority}`);
23227
+ }
23228
+ if (csp?.nonce) {
23229
+ styleNode.nonce = csp.nonce;
23230
+ }
23231
+ styleNode.innerHTML = css;
23232
+ const container = getContainer(option);
23233
+ const { firstChild } = container;
23234
+ if (prepend) {
23235
+ if (isPrependQueue) {
23236
+ const existStyle = (option.styles || findStyles(container)).filter((node)=>{
23237
+ if (![
23238
+ 'prepend',
23239
+ 'prependQueue'
23240
+ ].includes(node.getAttribute(APPEND_ORDER))) {
23241
+ return false;
23242
+ }
23243
+ const nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);
23244
+ return priority >= nodePriority;
23245
+ });
23246
+ if (existStyle.length) {
23247
+ container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
23248
+ return styleNode;
23249
+ }
23250
+ }
23251
+ container.insertBefore(styleNode, firstChild);
23252
+ } else {
23253
+ container.appendChild(styleNode);
23254
+ }
23255
+ return styleNode;
23256
+ }
23257
+ function findExistNode(key, option = {}) {
23258
+ let { styles } = option;
23259
+ styles || (styles = findStyles(getContainer(option)));
23260
+ return styles.find((node)=>node.getAttribute(getMark(option)) === key);
23261
+ }
23262
+ function syncRealContainer(container, option) {
23263
+ const cachedRealContainer = containerCache.get(container);
23264
+ if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
23265
+ const placeholderStyle = injectCSS('', option);
23266
+ if (!placeholderStyle) {
23267
+ return;
23268
+ }
23269
+ const { parentNode } = placeholderStyle;
23270
+ containerCache.set(container, parentNode);
23271
+ container.removeChild(placeholderStyle);
23272
+ }
23273
+ }
23274
+ function updateCSS(css, key, originOption = {}) {
23275
+ if (!canUseDom()) {
23276
+ return null;
23277
+ }
23278
+ const container = getContainer(originOption);
23279
+ const styles = findStyles(container);
23280
+ const option = {
23281
+ ...originOption,
23282
+ styles
23283
+ };
23284
+ syncRealContainer(container, option);
23285
+ const existNode = findExistNode(key, option);
23286
+ if (existNode) {
23287
+ if (option.csp?.nonce && existNode.nonce !== option.csp.nonce) {
23288
+ existNode.nonce = option.csp.nonce;
23289
+ }
23290
+ if (existNode.innerHTML !== css) {
23291
+ existNode.innerHTML = css;
23292
+ }
23293
+ return existNode;
23294
+ }
23295
+ const newNode = injectCSS(css, option);
23296
+ newNode?.setAttribute(getMark(option), key);
23297
+ return newNode;
23298
+ }
23299
+ function getRoot(ele) {
23300
+ return ele?.getRootNode?.();
23301
+ }
23302
+ function getShadowRoot(ele) {
23303
+ const root = getRoot(ele);
23304
+ return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : null;
23305
+ }
23306
+ const warned = {};
23307
+ function warningOnce$1(valid, message) {
23308
+ if (valid || warned[message]) {
23309
+ return;
23310
+ }
23311
+ if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
23312
+ console.error(`Warning: ${message}`);
23313
+ }
23314
+ warned[message] = true;
23315
+ }
23316
+
22940
23317
  function camelCase(input) {
22941
23318
  return input.replace(/-(.)/g, (match, g)=>g.toUpperCase());
22942
23319
  }
22943
23320
  function warning$1(valid, message) {
22944
- util.warning(valid, `[@ant-design/icons] ${message}`);
23321
+ warningOnce$1(valid, `[@ant-design/icons] ${message}`);
22945
23322
  }
22946
23323
  function isIconDefinition(target) {
22947
23324
  return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
@@ -22974,18 +23351,6 @@ function generate(node, key, rootProps) {
22974
23351
  ...rootProps
22975
23352
  }, (node.children || []).map((child, index)=>generate(child, `${key}-${node.tag}-${index}`)));
22976
23353
  }
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
23354
  const iconStyles = `
22990
23355
  .anticon {
22991
23356
  display: inline-flex;
@@ -23042,7 +23407,7 @@ const iconStyles = `
23042
23407
  }
23043
23408
  `;
23044
23409
  const useInsertStyles = (eleRef)=>{
23045
- const { csp, prefixCls, layer } = React.useContext(IconContext);
23410
+ const { csp, prefixCls, layer, zeroRuntime } = React.useContext(IconContext);
23046
23411
  let mergedStyleStr = iconStyles;
23047
23412
  if (prefixCls) {
23048
23413
  mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
@@ -23051,9 +23416,12 @@ const useInsertStyles = (eleRef)=>{
23051
23416
  mergedStyleStr = `@layer ${layer} {\n${mergedStyleStr}\n}`;
23052
23417
  }
23053
23418
  React.useEffect(()=>{
23419
+ if (zeroRuntime) {
23420
+ return;
23421
+ }
23054
23422
  const ele = eleRef.current;
23055
- const shadowRoot = util.getShadowRoot(ele);
23056
- util.updateCSS(mergedStyleStr, '@ant-design-icons', {
23423
+ const shadowRoot = getShadowRoot(ele);
23424
+ updateCSS(mergedStyleStr, '@ant-design-icons', {
23057
23425
  prepend: !layer,
23058
23426
  csp,
23059
23427
  attachTo: shadowRoot
@@ -23061,43 +23429,15 @@ const useInsertStyles = (eleRef)=>{
23061
23429
  }, []);
23062
23430
  };
23063
23431
 
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
23432
  const IconBase = (props)=>{
23080
- const { icon, className, onClick, style, primaryColor, secondaryColor, ...restProps } = props;
23433
+ const { icon, className, onClick, style, primaryColor: _primaryColor, secondaryColor: _secondaryColor, ...restProps } = props;
23081
23434
  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
23435
  useInsertStyles(svgRef);
23090
23436
  warning$1(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);
23091
23437
  if (!isIconDefinition(icon)) {
23092
23438
  return null;
23093
23439
  }
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
- }
23440
+ const target = icon;
23101
23441
  return generate(target.icon, `svg-${target.name}`, {
23102
23442
  className,
23103
23443
  onClick,
@@ -23112,26 +23452,6 @@ const IconBase = (props)=>{
23112
23452
  });
23113
23453
  };
23114
23454
  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
23455
 
23136
23456
  function _extends$v() {
23137
23457
  _extends$v = Object.assign ? Object.assign.bind() : function(target) {
@@ -23147,15 +23467,11 @@ function _extends$v() {
23147
23467
  };
23148
23468
  return _extends$v.apply(this, arguments);
23149
23469
  }
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
23470
  const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23155
23471
  const { // affect outter <i>...</i>
23156
23472
  className, // affect inner <svg>...</svg>
23157
- icon, spin, rotate, tabIndex, onClick, // other
23158
- twoToneColor, ...restProps } = props;
23473
+ icon, spin, rotate, tabIndex, onClick, twoToneColor: _twoToneColor, // other
23474
+ ...restProps } = props;
23159
23475
  const { prefixCls = 'anticon', rootClassName } = React__namespace.useContext(IconContext);
23160
23476
  const classString = clsx(rootClassName, prefixCls, {
23161
23477
  [`${prefixCls}-${icon.name}`]: !!icon.name,
@@ -23169,7 +23485,6 @@ const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23169
23485
  msTransform: `rotate(${rotate}deg)`,
23170
23486
  transform: `rotate(${rotate}deg)`
23171
23487
  } : undefined;
23172
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23173
23488
  return /*#__PURE__*/ React__namespace.createElement("span", _extends$v({
23174
23489
  role: "img",
23175
23490
  "aria-label": icon.name
@@ -23180,13 +23495,9 @@ const Icon = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23180
23495
  className: classString
23181
23496
  }), /*#__PURE__*/ React__namespace.createElement(IconBase, {
23182
23497
  icon: icon,
23183
- primaryColor: primaryColor,
23184
- secondaryColor: secondaryColor,
23185
23498
  style: svgStyle
23186
23499
  }));
23187
23500
  });
23188
- Icon.getTwoToneColor = getTwoToneColor;
23189
- Icon.setTwoToneColor = setTwoToneColor;
23190
23501
  if (process.env.NODE_ENV !== 'production') {
23191
23502
  Icon.displayName = 'AntdIcon';
23192
23503
  }
@@ -23396,6 +23707,13 @@ const mergeStyles = (...styles)=>{
23396
23707
  const useSemanticStyles = (...styles)=>{
23397
23708
  return React__namespace.useMemo(()=>mergeStyles.apply(void 0, styles), [].concat(styles));
23398
23709
  };
23710
+ const useSemanticRootStyle = (style)=>{
23711
+ return React__namespace.useMemo(()=>style ? {
23712
+ root: style
23713
+ } : undefined, [
23714
+ style
23715
+ ]);
23716
+ };
23399
23717
  // =========================== Export ===========================
23400
23718
  const resolveStyleOrClass = (value, info)=>{
23401
23719
  return isFunction$1(value) ? value(info) : value;
@@ -23498,31 +23816,31 @@ const genBaseStyle$7 = (token)=>{
23498
23816
  paddingTop: 0,
23499
23817
  paddingBottom: 0,
23500
23818
  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
23819
  },
23511
- [`${componentCls}-title`]: {
23512
- display: 'block',
23513
- marginBottom: marginXS,
23514
- color: colorTextHeading,
23515
- fontSize: fontSizeLG
23820
+ [`&${componentCls}-with-description`]: {
23821
+ alignItems: 'flex-start',
23822
+ padding: withDescriptionPadding,
23823
+ [`${componentCls}-icon`]: {
23824
+ marginInlineEnd: marginSM,
23825
+ fontSize: withDescriptionIconSize,
23826
+ lineHeight: 0
23827
+ },
23828
+ [`${componentCls}-title`]: {
23829
+ display: 'block',
23830
+ marginBottom: marginXS,
23831
+ color: colorTextHeading,
23832
+ fontSize: fontSizeLG
23833
+ },
23834
+ [`${componentCls}-description`]: {
23835
+ display: 'block',
23836
+ color: colorText
23837
+ }
23516
23838
  },
23517
- [`${componentCls}-description`]: {
23518
- display: 'block',
23519
- color: colorText
23839
+ [`&${componentCls}-banner`]: {
23840
+ marginBottom: 0,
23841
+ border: '0 !important',
23842
+ borderRadius: 0
23520
23843
  }
23521
- },
23522
- [`${componentCls}-banner`]: {
23523
- marginBottom: 0,
23524
- border: '0 !important',
23525
- borderRadius: 0
23526
23844
  }
23527
23845
  };
23528
23846
  };
@@ -23692,12 +24010,16 @@ const Alert$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23692
24010
  showIcon: isShowIcon,
23693
24011
  closable: isClosable
23694
24012
  };
24013
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
24014
+ const styleRoot = useSemanticRootStyle(style);
23695
24015
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
23696
24016
  contextClassNames,
23697
24017
  classNames
23698
24018
  ], [
23699
24019
  contextStyles,
23700
- styles
24020
+ contextStyleRoot,
24021
+ styles,
24022
+ styleRoot
23701
24023
  ], {
23702
24024
  props: mergedProps
23703
24025
  });
@@ -23761,8 +24083,6 @@ const Alert$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
23761
24083
  className: clsx(alertCls, motionClassName),
23762
24084
  style: {
23763
24085
  ...mergedStyles.root,
23764
- ...contextStyle,
23765
- ...style,
23766
24086
  ...motionStyle
23767
24087
  },
23768
24088
  onMouseEnter: onMouseEnter,
@@ -23811,21 +24131,21 @@ function _classCallCheck(a, n) {
23811
24131
  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
23812
24132
  }
23813
24133
 
23814
- function _typeof$1(o) {
24134
+ function _typeof(o) {
23815
24135
  "@babel/helpers - typeof";
23816
- return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24136
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
23817
24137
  return typeof o;
23818
24138
  } : function(o) {
23819
24139
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
23820
- }, _typeof$1(o);
24140
+ }, _typeof(o);
23821
24141
  }
23822
24142
 
23823
24143
  function toPrimitive(t, r) {
23824
- if ("object" != _typeof$1(t) || !t) return t;
24144
+ if ("object" != _typeof(t) || !t) return t;
23825
24145
  var e = t[Symbol.toPrimitive];
23826
24146
  if (void 0 !== e) {
23827
24147
  var i = e.call(t, r);
23828
- if ("object" != _typeof$1(i)) return i;
24148
+ if ("object" != _typeof(i)) return i;
23829
24149
  throw new TypeError("@@toPrimitive must return a primitive value.");
23830
24150
  }
23831
24151
  return (String )(t);
@@ -23833,7 +24153,7 @@ function toPrimitive(t, r) {
23833
24153
 
23834
24154
  function toPropertyKey(t) {
23835
24155
  var i = toPrimitive(t, "string");
23836
- return "symbol" == _typeof$1(i) ? i : i + "";
24156
+ return "symbol" == _typeof(i) ? i : i + "";
23837
24157
  }
23838
24158
 
23839
24159
  function _defineProperties(e, r) {
@@ -23869,7 +24189,7 @@ function _assertThisInitialized(e) {
23869
24189
  }
23870
24190
 
23871
24191
  function _possibleConstructorReturn(t, e) {
23872
- if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e;
24192
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
23873
24193
  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
23874
24194
  return _assertThisInitialized(t);
23875
24195
  }
@@ -24044,71 +24364,15 @@ const locale$4 = {
24044
24364
  page_size: 'Page Size'
24045
24365
  };
24046
24366
 
24047
- var commonLocale = {
24367
+ const commonLocale = {
24048
24368
  yearFormat: 'YYYY',
24049
24369
  dayFormat: 'D',
24050
24370
  cellMeridiemFormat: 'A',
24051
24371
  monthBeforeYear: true
24052
24372
  };
24053
24373
 
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), {}, {
24374
+ const locale$3 = {
24375
+ ...commonLocale,
24112
24376
  locale: 'en_US',
24113
24377
  today: 'Today',
24114
24378
  now: 'Now',
@@ -24132,7 +24396,7 @@ var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24132
24396
  nextDecade: 'Next decade',
24133
24397
  previousCentury: 'Last century',
24134
24398
  nextCentury: 'Next century'
24135
- });
24399
+ };
24136
24400
 
24137
24401
  const locale$2 = {
24138
24402
  placeholder: 'Select time',
@@ -24824,11 +25088,13 @@ const ProviderChildren = (props)=>{
24824
25088
  const memoIconContextValue = React__namespace.useMemo(()=>({
24825
25089
  prefixCls: iconPrefixCls,
24826
25090
  csp,
24827
- layer: layer ? 'antd' : undefined
25091
+ layer: layer ? 'antd' : undefined,
25092
+ zeroRuntime: mergedTheme?.zeroRuntime
24828
25093
  }), [
24829
25094
  iconPrefixCls,
24830
25095
  csp,
24831
- layer
25096
+ layer,
25097
+ mergedTheme?.zeroRuntime
24832
25098
  ]);
24833
25099
  let childNode = /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/ React__namespace.createElement(IconStyle, {
24834
25100
  iconPrefixCls: iconPrefixCls,
@@ -27701,7 +27967,7 @@ const CollapsePanel = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
27701
27967
  });
27702
27968
 
27703
27969
  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;
27970
+ 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
27971
  const borderBase = `${cssinjs.unit(lineWidth)} ${lineType} ${colorBorder}`;
27706
27972
  return {
27707
27973
  [componentCls]: {
@@ -27796,15 +28062,14 @@ const genBaseStyle$6 = (token)=>{
27796
28062
  '&-small': {
27797
28063
  [`> ${componentCls}-item`]: {
27798
28064
  [`> ${componentCls}-header`]: {
27799
- padding: collapseHeaderPaddingSM,
27800
- paddingInlineStart: paddingXS,
28065
+ padding: headerPaddingSM,
27801
28066
  [`> ${componentCls}-expand-icon`]: {
27802
28067
  // Arrow offset
27803
28068
  marginInlineStart: token.calc(paddingSM).sub(paddingXS).equal()
27804
28069
  }
27805
28070
  },
27806
28071
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27807
- padding: paddingSM
28072
+ padding: contentPaddingSM
27808
28073
  }
27809
28074
  }
27810
28075
  },
@@ -27813,8 +28078,7 @@ const genBaseStyle$6 = (token)=>{
27813
28078
  fontSize: fontSizeLG,
27814
28079
  lineHeight: lineHeightLG,
27815
28080
  [`> ${componentCls}-header`]: {
27816
- padding: collapseHeaderPaddingLG,
27817
- paddingInlineStart: padding,
28081
+ padding: headerPaddingLG,
27818
28082
  [`> ${componentCls}-expand-icon`]: {
27819
28083
  height: fontHeightLG,
27820
28084
  // Arrow offset
@@ -27822,7 +28086,7 @@ const genBaseStyle$6 = (token)=>{
27822
28086
  }
27823
28087
  },
27824
28088
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27825
- padding: paddingLG
28089
+ padding: contentPaddingLG
27826
28090
  }
27827
28091
  }
27828
28092
  },
@@ -27911,19 +28175,24 @@ const genGhostStyle = (token)=>{
27911
28175
  }
27912
28176
  };
27913
28177
  };
27914
- const prepareComponentToken$l = (token)=>({
27915
- headerPadding: `${token.paddingSM}px ${token.padding}px`,
28178
+ const prepareComponentToken$l = (token)=>{
28179
+ const componentToken = {
28180
+ headerPadding: `${cssinjs.unit(token.paddingSM)} ${cssinjs.unit(token.padding)}`,
28181
+ headerPaddingSM: `${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingSM)} ${cssinjs.unit(token.paddingXS)} ${cssinjs.unit(token.paddingXS)}`,
28182
+ headerPaddingLG: `${cssinjs.unit(token.padding)} ${cssinjs.unit(token.paddingLG)} ${cssinjs.unit(token.padding)} ${cssinjs.unit(token.padding)}`,
27916
28183
  headerBg: token.colorFillAlter,
27917
- contentPadding: `${token.padding}px 16px`,
28184
+ contentPadding: `${cssinjs.unit(token.padding)} ${cssinjs.unit(16)}`,
27918
28185
  // Fixed Value
28186
+ contentPaddingSM: token.paddingSM,
28187
+ contentPaddingLG: token.paddingLG,
27919
28188
  contentBg: token.colorBgContainer,
27920
- borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
28189
+ borderlessContentPadding: `${cssinjs.unit(token.paddingXXS)} ${cssinjs.unit(16)} ${cssinjs.unit(token.padding)}`,
27921
28190
  borderlessContentBg: 'transparent'
27922
- });
28191
+ };
28192
+ return componentToken;
28193
+ };
27923
28194
  var useStyle$q = genStyleHooks('Collapse', (token)=>{
27924
28195
  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
28196
  collapsePanelBorderRadius: token.borderRadiusLG
27928
28197
  });
27929
28198
  return [
@@ -27950,12 +28219,16 @@ const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
27950
28219
  bordered,
27951
28220
  expandIconPlacement: mergedPlacement
27952
28221
  };
28222
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
28223
+ const styleRoot = useSemanticRootStyle(style);
27953
28224
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
27954
28225
  contextClassNames,
27955
28226
  classNames
27956
28227
  ], [
27957
28228
  contextStyles,
27958
- styles
28229
+ contextStyleRoot,
28230
+ styles,
28231
+ styleRoot
27959
28232
  ], {
27960
28233
  props: mergedProps
27961
28234
  });
@@ -28020,11 +28293,7 @@ const Collapse$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
28020
28293
  expandIcon: renderExpandIcon,
28021
28294
  prefixCls: prefixCls,
28022
28295
  className: collapseClassName,
28023
- style: {
28024
- ...mergedStyles.root,
28025
- ...contextStyle,
28026
- ...style
28027
- },
28296
+ style: mergedStyles.root,
28028
28297
  classNames: mergedClassNames,
28029
28298
  styles: mergedStyles,
28030
28299
  destroyOnHidden: destroyOnHidden ?? destroyInactivePanel
@@ -28429,12 +28698,6 @@ const genSharedButtonStyle = (token)=>{
28429
28698
  },
28430
28699
  // https://github.com/ant-design/ant-design/issues/51380
28431
28700
  [`${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
28701
  '> a': {
28439
28702
  color: 'currentColor'
28440
28703
  },
@@ -29020,12 +29283,16 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29020
29283
  iconPlacement: mergedIconPlacement
29021
29284
  };
29022
29285
  // ========================= Style ==========================
29286
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29287
+ const styleRoot = useSemanticRootStyle(style);
29023
29288
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29024
29289
  _skipSemantic ? undefined : contextClassNames,
29025
29290
  classNames
29026
29291
  ], [
29027
29292
  _skipSemantic ? undefined : contextStyles,
29028
- styles
29293
+ contextStyleRoot,
29294
+ styles,
29295
+ styleRoot
29029
29296
  ], {
29030
29297
  props: mergedProps
29031
29298
  });
@@ -29047,11 +29314,6 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29047
29314
  [`${prefixCls}-rtl`]: direction === 'rtl',
29048
29315
  [`${prefixCls}-icon-end`]: mergedIconPlacement === 'end'
29049
29316
  }, compactItemClassnames, className, rootClassName, contextClassName, mergedClassNames.root);
29050
- const fullStyle = {
29051
- ...mergedStyles.root,
29052
- ...contextStyle,
29053
- ...style
29054
- };
29055
29317
  const iconSharedProps = {
29056
29318
  className: mergedClassNames.icon,
29057
29319
  style: mergedStyles.icon
@@ -29089,7 +29351,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29089
29351
  [`${prefixCls}-disabled`]: mergedDisabled
29090
29352
  }),
29091
29353
  href: mergedDisabled ? undefined : linkButtonRestProps.href,
29092
- style: fullStyle,
29354
+ style: mergedStyles.root,
29093
29355
  onClick: handleClick,
29094
29356
  ref: mergedRef,
29095
29357
  tabIndex: mergedDisabled ? -1 : 0,
@@ -29100,7 +29362,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
29100
29362
  ...rest,
29101
29363
  type: htmlType,
29102
29364
  className: classes,
29103
- style: fullStyle,
29365
+ style: mergedStyles.root,
29104
29366
  onClick: handleClick,
29105
29367
  disabled: mergedDisabled,
29106
29368
  ref: mergedRef
@@ -29728,12 +29990,16 @@ const Skeleton = (props)=>{
29728
29990
  title,
29729
29991
  paragraph
29730
29992
  };
29993
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29994
+ const styleRoot = useSemanticRootStyle(style);
29731
29995
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29732
29996
  contextClassNames,
29733
29997
  classNames
29734
29998
  ], [
29735
29999
  contextStyles,
29736
- styles
30000
+ contextStyleRoot,
30001
+ styles,
30002
+ styleRoot
29737
30003
  ], {
29738
30004
  props: mergedProps
29739
30005
  });
@@ -29802,11 +30068,7 @@ const Skeleton = (props)=>{
29802
30068
  }, mergedClassNames.root, contextClassName, className, rootClassName, hashId, cssVarCls);
29803
30069
  return /*#__PURE__*/ React__namespace.createElement("div", {
29804
30070
  className: cls,
29805
- style: {
29806
- ...mergedStyles.root,
29807
- ...contextStyle,
29808
- ...style
29809
- }
30071
+ style: mergedStyles.root
29810
30072
  }, avatarNode, contentNode);
29811
30073
  }
29812
30074
  return children ?? null;
@@ -30292,12 +30554,16 @@ const Empty = (props)=>{
30292
30554
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
30293
30555
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
30294
30556
  const [hashId, cssVarCls] = useStyle$n(prefixCls);
30557
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
30558
+ const styleRoot = useSemanticRootStyle(style);
30295
30559
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
30296
30560
  contextClassNames,
30297
30561
  classNames
30298
30562
  ], [
30299
30563
  contextStyles,
30300
- styles
30564
+ contextStyleRoot,
30565
+ styles,
30566
+ styleRoot
30301
30567
  ], {
30302
30568
  props
30303
30569
  });
@@ -30332,11 +30598,7 @@ const Empty = (props)=>{
30332
30598
  [`${prefixCls}-normal`]: mergedImage === simpleEmptyImg,
30333
30599
  [`${prefixCls}-rtl`]: direction === 'rtl'
30334
30600
  }, className, rootClassName, mergedClassNames.root),
30335
- style: {
30336
- ...mergedStyles.root,
30337
- ...contextStyle,
30338
- ...style
30339
- },
30601
+ style: mergedStyles.root,
30340
30602
  ...restProps
30341
30603
  }, /*#__PURE__*/ React__namespace.createElement("div", {
30342
30604
  className: clsx(`${prefixCls}-image`, mergedClassNames.image),
@@ -30807,7 +31069,7 @@ const genSelectInputMultipleStyle = (token)=>{
30807
31069
  }
30808
31070
  };
30809
31071
  };
30810
- /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors = {}, warningColors = {}, patchStyle)=>{
31072
+ /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors, warningColors, patchStyle)=>{
30811
31073
  const { componentCls } = token;
30812
31074
  return {
30813
31075
  [`&${componentCls}-${variant}`]: [
@@ -30826,6 +31088,14 @@ const genSelectInputMultipleStyle = (token)=>{
30826
31088
  ]
30827
31089
  };
30828
31090
  };
31091
+ const genSelectInputFocusVisibleStyle = (token, outlineColor)=>({
31092
+ outline: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
31093
+ outlineOffset: cssinjs.unit(token.calc(token.lineWidth).mul(-1).equal()),
31094
+ transition: [
31095
+ `outline-offset`,
31096
+ `outline`
31097
+ ].map((prop)=>`${prop} 0s`).join(', ')
31098
+ });
30829
31099
  const genSelectInputStyle = (token)=>{
30830
31100
  const { componentCls, fontHeight, controlHeight, fontSizeIcon, showArrowPaddingInlineEnd, iconCls, antCls, max, calc } = token;
30831
31101
  const [varName, varRef] = genCssVar(antCls, 'select');
@@ -31001,20 +31271,31 @@ const genSelectInputStyle = (token)=>{
31001
31271
  },
31002
31272
  '&-has-search-value': {
31003
31273
  color: 'transparent',
31004
- [`> :not(${componentCls}-input)`]: {
31274
+ [`> *:not(${componentCls}-input)`]: {
31005
31275
  opacity: 0
31006
31276
  }
31007
31277
  },
31008
31278
  // >>> Value
31009
31279
  '&-value': {
31010
31280
  transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,
31011
- zIndex: 1
31281
+ zIndex: 1,
31282
+ opacity: 1
31012
31283
  }
31013
31284
  },
31285
+ // Dim the selected content while the dropdown is open. Shared by all select-like
31286
+ // components (Select / Cascader / TreeSelect) since they render through the same
31287
+ // `content` structure.
31014
31288
  [`&${componentCls}-open ${componentCls}-content`]: {
31015
- color: token.colorTextPlaceholder,
31289
+ '&-has-value': {
31290
+ opacity: 0.25
31291
+ },
31016
31292
  '&-has-search-value': {
31017
- color: 'transparent'
31293
+ opacity: 1,
31294
+ transition: `opacity ${token.motionDurationMid} ${token.motionEaseInOut}`,
31295
+ color: 'transparent',
31296
+ [`> *:not(${componentCls}-input)`]: {
31297
+ opacity: 0
31298
+ }
31018
31299
  }
31019
31300
  }
31020
31301
  }
@@ -31081,6 +31362,10 @@ const genSelectInputStyle = (token)=>{
31081
31362
  borderActive: 'transparent',
31082
31363
  borderOutline: 'transparent',
31083
31364
  background: 'transparent'
31365
+ }, {}, {}, {
31366
+ [`&:not(${componentCls}-disabled):has(input:focus-visible), &:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.activeBorderColor),
31367
+ [`&${componentCls}-status-error:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-error:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorError),
31368
+ [`&${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
31369
  }),
31085
31370
  // Underlined
31086
31371
  genSelectInputVariantStyle(token, 'underlined', {
@@ -31524,12 +31809,16 @@ const InternalSelect = (props, ref)=>{
31524
31809
  disabled: mergedDisabled,
31525
31810
  size: mergedSize
31526
31811
  };
31812
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
31813
+ const styleRoot = useSemanticRootStyle(style);
31527
31814
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
31528
31815
  contextClassNames,
31529
31816
  classNames
31530
31817
  ], [
31531
31818
  contextStyles,
31532
- styles
31819
+ contextStyleRoot,
31820
+ styles,
31821
+ styleRoot
31533
31822
  ], {
31534
31823
  props: mergedProps
31535
31824
  }, {
@@ -31589,11 +31878,7 @@ const InternalSelect = (props, ref)=>{
31589
31878
  styles: mergedStyles,
31590
31879
  showSearch: mergedShowSearch,
31591
31880
  ...selectProps,
31592
- style: {
31593
- ...mergedStyles.root,
31594
- ...contextStyle,
31595
- ...style
31596
- },
31881
+ style: mergedStyles.root,
31597
31882
  popupMatchSelectWidth: mergedPopupMatchSelectWidth,
31598
31883
  transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),
31599
31884
  builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
@@ -31855,21 +32140,10 @@ function getArrowOffsetToken(options) {
31855
32140
  arrowOffsetVertical
31856
32141
  };
31857
32142
  }
31858
- function isInject(valid, code) {
31859
- if (!valid) {
31860
- return {};
31861
- }
31862
- return code;
31863
- }
31864
32143
  const getArrowStyle = (token, colorBg, options)=>{
31865
32144
  const { componentCls, boxShadowPopoverArrow, arrowOffsetVertical, arrowOffsetHorizontal, antCls } = token;
31866
32145
  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 || {};
32146
+ const { arrowDistance = 0, arrowShadow = true } = options || {};
31873
32147
  return {
31874
32148
  [componentCls]: {
31875
32149
  // ============================ Basic ============================
@@ -31888,131 +32162,123 @@ const getArrowStyle = (token, colorBg, options)=>{
31888
32162
  // ========================== Placement ==========================
31889
32163
  // Here handle the arrow position and rotate stuff
31890
32164
  // >>>>> 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)'
32165
+ [[
32166
+ `&-placement-top > ${componentCls}-arrow`,
32167
+ `&-placement-topLeft > ${componentCls}-arrow`,
32168
+ `&-placement-topRight > ${componentCls}-arrow`
32169
+ ].join(',')]: {
32170
+ bottom: arrowDistance,
32171
+ transform: 'translateY(100%) rotate(180deg)'
32172
+ },
32173
+ [`&-placement-top > ${componentCls}-arrow`]: {
32174
+ left: {
32175
+ _skip_check_: true,
32176
+ value: '50%'
31899
32177
  },
31900
- [`&-placement-top > ${componentCls}-arrow`]: {
32178
+ transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
32179
+ },
32180
+ '&-placement-topLeft': {
32181
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32182
+ [`> ${componentCls}-arrow`]: {
31901
32183
  left: {
31902
32184
  _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
- }
32185
+ value: arrowOffsetHorizontal
31914
32186
  }
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
- }
32187
+ }
32188
+ },
32189
+ '&-placement-topRight': {
32190
+ [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
32191
+ [`> ${componentCls}-arrow`]: {
32192
+ right: {
32193
+ _skip_check_: true,
32194
+ value: arrowOffsetHorizontal
31923
32195
  }
31924
32196
  }
31925
- }),
32197
+ },
31926
32198
  // >>>>> 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%)`
32199
+ [[
32200
+ `&-placement-bottom > ${componentCls}-arrow`,
32201
+ `&-placement-bottomLeft > ${componentCls}-arrow`,
32202
+ `&-placement-bottomRight > ${componentCls}-arrow`
32203
+ ].join(',')]: {
32204
+ top: arrowDistance,
32205
+ transform: `translateY(-100%)`
32206
+ },
32207
+ [`&-placement-bottom > ${componentCls}-arrow`]: {
32208
+ left: {
32209
+ _skip_check_: true,
32210
+ value: '50%'
31935
32211
  },
31936
- [`&-placement-bottom > ${componentCls}-arrow`]: {
32212
+ transform: `translateX(-50%) translateY(-100%)`
32213
+ },
32214
+ '&-placement-bottomLeft': {
32215
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32216
+ [`> ${componentCls}-arrow`]: {
31937
32217
  left: {
31938
32218
  _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
- }
32219
+ value: arrowOffsetHorizontal
31959
32220
  }
31960
32221
  }
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(',')]: {
32222
+ },
32223
+ '&-placement-bottomRight': {
32224
+ [varName('arrow-offset-x')]: `calc(100% - ${cssinjs.unit(arrowOffsetHorizontal)})`,
32225
+ [`> ${componentCls}-arrow`]: {
31969
32226
  right: {
31970
32227
  _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)'
32228
+ value: arrowOffsetHorizontal
32229
+ }
32230
+ }
32231
+ },
32232
+ // >>>>> Left
32233
+ [[
32234
+ `&-placement-left > ${componentCls}-arrow`,
32235
+ `&-placement-leftTop > ${componentCls}-arrow`,
32236
+ `&-placement-leftBottom > ${componentCls}-arrow`
32237
+ ].join(',')]: {
32238
+ right: {
32239
+ _skip_check_: true,
32240
+ value: arrowDistance
31981
32241
  },
31982
- [`&-placement-leftTop > ${componentCls}-arrow`]: {
31983
- top: arrowOffsetVertical
32242
+ transform: 'translateX(100%) rotate(90deg)'
32243
+ },
32244
+ [`&-placement-left > ${componentCls}-arrow`]: {
32245
+ top: {
32246
+ _skip_check_: true,
32247
+ value: '50%'
31984
32248
  },
31985
- [`&-placement-leftBottom > ${componentCls}-arrow`]: {
31986
- bottom: arrowOffsetVertical
31987
- }
31988
- }),
32249
+ transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32250
+ },
32251
+ [`&-placement-leftTop > ${componentCls}-arrow`]: {
32252
+ top: arrowOffsetVertical
32253
+ },
32254
+ [`&-placement-leftBottom > ${componentCls}-arrow`]: {
32255
+ bottom: arrowOffsetVertical
32256
+ },
31989
32257
  // >>>>> 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)'
32258
+ [[
32259
+ `&-placement-right > ${componentCls}-arrow`,
32260
+ `&-placement-rightTop > ${componentCls}-arrow`,
32261
+ `&-placement-rightBottom > ${componentCls}-arrow`
32262
+ ].join(',')]: {
32263
+ left: {
32264
+ _skip_check_: true,
32265
+ value: arrowDistance
32008
32266
  },
32009
- [`&-placement-rightTop > ${componentCls}-arrow`]: {
32010
- top: arrowOffsetVertical
32267
+ transform: 'translateX(-100%) rotate(-90deg)'
32268
+ },
32269
+ [`&-placement-right > ${componentCls}-arrow`]: {
32270
+ top: {
32271
+ _skip_check_: true,
32272
+ value: '50%'
32011
32273
  },
32012
- [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32013
- bottom: arrowOffsetVertical
32014
- }
32015
- })
32274
+ transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32275
+ },
32276
+ [`&-placement-rightTop > ${componentCls}-arrow`]: {
32277
+ top: arrowOffsetVertical
32278
+ },
32279
+ [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32280
+ bottom: arrowOffsetVertical
32281
+ }
32016
32282
  }
32017
32283
  };
32018
32284
  };
@@ -33290,7 +33556,7 @@ const generateId = (()=>{
33290
33556
  };
33291
33557
  })();
33292
33558
  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;
33559
+ 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
33560
  const { siderHook } = React.useContext(LayoutContext);
33295
33561
  const [collapsed, setCollapsed] = React.useState('collapsed' in props ? props.collapsed : defaultCollapsed);
33296
33562
  const [below, setBelow] = React.useState(false);
@@ -33307,6 +33573,28 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33307
33573
  }
33308
33574
  onCollapse?.(value, type);
33309
33575
  };
33576
+ const semanticProps = {
33577
+ ...props,
33578
+ collapsed,
33579
+ defaultCollapsed,
33580
+ theme,
33581
+ style,
33582
+ collapsible,
33583
+ reverseArrow,
33584
+ width,
33585
+ collapsedWidth,
33586
+ zeroWidthTriggerStyle,
33587
+ breakpoint,
33588
+ onCollapse,
33589
+ onBreakpoint
33590
+ };
33591
+ const [mergedClassNames, mergedStyles] = useMergeSemantic([
33592
+ classNames
33593
+ ], [
33594
+ styles
33595
+ ], {
33596
+ props: semanticProps
33597
+ });
33310
33598
  // =========================== Prefix ===========================
33311
33599
  const { getPrefixCls, direction } = React.useContext(ConfigContext);
33312
33600
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
@@ -33388,7 +33676,7 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33388
33676
  [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,
33389
33677
  [`${prefixCls}-below`]: !!below,
33390
33678
  [`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth) === 0
33391
- }, className, hashId, cssVarCls);
33679
+ }, className, mergedClassNames.root, hashId, cssVarCls);
33392
33680
  const contextValue = React__namespace.useMemo(()=>({
33393
33681
  siderCollapsed: collapsed
33394
33682
  }), [
@@ -33399,10 +33687,14 @@ const Sider = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
33399
33687
  }, /*#__PURE__*/ React__namespace.createElement("aside", {
33400
33688
  className: siderCls,
33401
33689
  ...divProps,
33402
- style: divStyle,
33690
+ style: {
33691
+ ...mergedStyles.root,
33692
+ ...divStyle
33693
+ },
33403
33694
  ref: ref
33404
33695
  }, /*#__PURE__*/ React__namespace.createElement("div", {
33405
- className: `${prefixCls}-children`
33696
+ className: clsx(`${prefixCls}-children`, mergedClassNames.body),
33697
+ style: mergedStyles.body
33406
33698
  }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null));
33407
33699
  });
33408
33700
  if (process.env.NODE_ENV !== 'production') {
@@ -33509,7 +33801,11 @@ const MenuItem = (props)=>{
33509
33801
  ...firstLevel ? styles?.item : styles?.subMenu?.item,
33510
33802
  ...props.style
33511
33803
  },
33512
- title: typeof title === 'string' ? title : undefined
33804
+ title: typeof title === 'string' ? title : undefined,
33805
+ itemData: props?.itemData ?? {
33806
+ ...props,
33807
+ key: props.eventKey
33808
+ }
33513
33809
  }, cloneElement(icon, (oriProps)=>({
33514
33810
  className: clsx(`${prefixCls}-item-icon`, firstLevel ? classNames?.itemIcon : classNames?.subMenu?.itemIcon, oriProps.className),
33515
33811
  style: {
@@ -34701,12 +34997,16 @@ const InternalMenu = /*#__PURE__*/ React.forwardRef((props, ref)=>{
34701
34997
  selectable: mergedSelectable,
34702
34998
  theme
34703
34999
  };
35000
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
35001
+ const styleRoot = useSemanticRootStyle(style);
34704
35002
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
34705
35003
  contextClassNames,
34706
35004
  classNames
34707
35005
  ], [
34708
35006
  contextStyles,
34709
- styles
35007
+ contextStyleRoot,
35008
+ styles,
35009
+ styleRoot
34710
35010
  ], {
34711
35011
  props: mergedProps
34712
35012
  }, {
@@ -34796,11 +35096,7 @@ const InternalMenu = /*#__PURE__*/ React.forwardRef((props, ref)=>{
34796
35096
  onClick: onItemClick,
34797
35097
  ...passedProps,
34798
35098
  inlineCollapsed: mergedInlineCollapsed,
34799
- style: {
34800
- ...mergedStyles.root,
34801
- ...contextStyle,
34802
- ...style
34803
- },
35099
+ style: mergedStyles.root,
34804
35100
  className: menuClassName,
34805
35101
  prefixCls: prefixCls,
34806
35102
  direction: direction,
@@ -34935,18 +35231,39 @@ const genBaseStyle$2 = (token)=>{
34935
35231
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,
34936
35232
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {
34937
35233
  animationName: slideDownOut
35234
+ },
35235
+ [`&${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-right,
35236
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-right,
35237
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightTop,
35238
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightTop,
35239
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightBottom,
35240
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightBottom`]: {
35241
+ animationName: slideLeftIn
35242
+ },
35243
+ [`&${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-left,
35244
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-left,
35245
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftTop,
35246
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftTop,
35247
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftBottom,
35248
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftBottom`]: {
35249
+ animationName: slideRightIn
35250
+ },
35251
+ [`&${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-right,
35252
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightTop,
35253
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightBottom`]: {
35254
+ animationName: slideLeftOut
35255
+ },
35256
+ [`&${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-left,
35257
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftTop,
35258
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftBottom`]: {
35259
+ animationName: slideRightOut
34938
35260
  }
34939
35261
  }
34940
35262
  },
34941
35263
  // =============================================================
34942
35264
  // == Arrow style ==
34943
35265
  // =============================================================
34944
- getArrowStyle(token, colorBgElevated, {
34945
- arrowPlacement: {
34946
- top: true,
34947
- bottom: true
34948
- }
34949
- }),
35266
+ getArrowStyle(token, colorBgElevated),
34950
35267
  {
34951
35268
  // =============================================================
34952
35269
  // == Menu ==
@@ -35106,6 +35423,8 @@ const genBaseStyle$2 = (token)=>{
35106
35423
  [
35107
35424
  initSlideMotion(token, 'slide-up'),
35108
35425
  initSlideMotion(token, 'slide-down'),
35426
+ initSlideMotion(token, 'slide-left'),
35427
+ initSlideMotion(token, 'slide-right'),
35109
35428
  initMoveMotion(token, 'move-up'),
35110
35429
  initMoveMotion(token, 'move-down'),
35111
35430
  initZoomMotion(token, 'zoom-big')
@@ -35182,9 +35501,15 @@ const Dropdown$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
35182
35501
  if (transitionName !== undefined) {
35183
35502
  return transitionName;
35184
35503
  }
35185
- if (placement.includes('top')) {
35504
+ if (placement.startsWith('top')) {
35186
35505
  return `${rootPrefixCls}-slide-down`;
35187
35506
  }
35507
+ if (placement.startsWith('left')) {
35508
+ return `${rootPrefixCls}-slide-right`;
35509
+ }
35510
+ if (placement.startsWith('right')) {
35511
+ return `${rootPrefixCls}-slide-left`;
35512
+ }
35188
35513
  return `${rootPrefixCls}-slide-up`;
35189
35514
  }, [
35190
35515
  getPrefixCls,
@@ -35956,12 +36281,16 @@ const InternalRadio = (props, ref)=>{
35956
36281
  ...radioProps,
35957
36282
  checked: mergedChecked
35958
36283
  };
36284
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
36285
+ const styleRoot = useSemanticRootStyle(style);
35959
36286
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
35960
36287
  contextClassNames,
35961
36288
  classNames
35962
36289
  ], [
35963
36290
  contextStyles,
35964
- styles
36291
+ contextStyleRoot,
36292
+ styles,
36293
+ styleRoot
35965
36294
  ], {
35966
36295
  props: mergedProps
35967
36296
  });
@@ -35980,11 +36309,7 @@ const InternalRadio = (props, ref)=>{
35980
36309
  disabled: radioProps.disabled
35981
36310
  }, /*#__PURE__*/ React__namespace.createElement("label", {
35982
36311
  className: wrapperClassString,
35983
- style: {
35984
- ...mergedStyles.root,
35985
- ...contextStyle,
35986
- ...style
35987
- },
36312
+ style: mergedStyles.root,
35988
36313
  onMouseEnter: props.onMouseEnter,
35989
36314
  onMouseLeave: props.onMouseLeave,
35990
36315
  title: title,
@@ -36279,7 +36604,25 @@ const genOutlinedGroupStyle = (token)=>({
36279
36604
  }
36280
36605
  }
36281
36606
  });
36282
- /* ============ Borderless ============ */ const genBorderlessStyle = (token, extraStyles)=>{
36607
+ /* ============ Borderless ============ */ const borderlessFocusVisibleSelector = '&:focus-visible, &:has(input:focus-visible), &:has(textarea:focus-visible)';
36608
+ const genBorderlessFocusVisibleStyle = (token, outlineColor)=>({
36609
+ outline: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
36610
+ outlineOffset: cssinjs.unit(token.calc(token.lineWidth).mul(-1).equal()),
36611
+ transition: [
36612
+ `outline-offset`,
36613
+ `outline`
36614
+ ].map((prop)=>`${prop} 0s`).join(', ')
36615
+ });
36616
+ const genBorderlessStatusStyle = (token, options)=>({
36617
+ '&, & input, & textarea': {
36618
+ color: options.color
36619
+ },
36620
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, options.color),
36621
+ [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {
36622
+ color: options.affixColor
36623
+ }
36624
+ });
36625
+ const genBorderlessStyle = (token, extraStyles)=>{
36283
36626
  const { componentCls } = token;
36284
36627
  return {
36285
36628
  '&-borderless': {
@@ -36297,28 +36640,21 @@ const genOutlinedGroupStyle = (token)=>({
36297
36640
  '&:focus, &:focus-within': {
36298
36641
  outline: 'none'
36299
36642
  },
36643
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, token.activeBorderColor),
36300
36644
  // >>>>> Disabled
36301
36645
  [`&${componentCls}-disabled, &[disabled]`]: {
36302
36646
  color: token.colorTextDisabled,
36303
36647
  cursor: 'not-allowed'
36304
36648
  },
36305
36649
  // >>>>> 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
- },
36650
+ [`&${componentCls}-status-error`]: genBorderlessStatusStyle(token, {
36651
+ color: token.colorError,
36652
+ affixColor: token.colorErrorAffix
36653
+ }),
36654
+ [`&${componentCls}-status-warning`]: genBorderlessStatusStyle(token, {
36655
+ color: token.colorWarning,
36656
+ affixColor: token.colorWarningAffix
36657
+ }),
36322
36658
  ...extraStyles
36323
36659
  }
36324
36660
  };
@@ -37445,7 +37781,7 @@ const genPositionStyle = (token)=>{
37445
37781
  top: 0
37446
37782
  }
37447
37783
  },
37448
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37784
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37449
37785
  order: 0
37450
37786
  }
37451
37787
  },
@@ -37517,7 +37853,7 @@ const genPositionStyle = (token)=>{
37517
37853
  }
37518
37854
  }
37519
37855
  },
37520
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37856
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37521
37857
  marginLeft: {
37522
37858
  _skip_check_: true,
37523
37859
  value: cssinjs.unit(calc(token.lineWidth).mul(-1).equal())
@@ -37526,7 +37862,7 @@ const genPositionStyle = (token)=>{
37526
37862
  _skip_check_: true,
37527
37863
  value: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37528
37864
  },
37529
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37865
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37530
37866
  paddingLeft: {
37531
37867
  _skip_check_: true,
37532
37868
  value: token.paddingLG
@@ -37544,7 +37880,7 @@ const genPositionStyle = (token)=>{
37544
37880
  }
37545
37881
  }
37546
37882
  },
37547
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37883
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37548
37884
  order: 0,
37549
37885
  marginRight: {
37550
37886
  _skip_check_: true,
@@ -37554,7 +37890,7 @@ const genPositionStyle = (token)=>{
37554
37890
  _skip_check_: true,
37555
37891
  value: `${cssinjs.unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37556
37892
  },
37557
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37893
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37558
37894
  paddingRight: {
37559
37895
  _skip_check_: true,
37560
37896
  value: token.paddingLG
@@ -37776,7 +38112,7 @@ const genRtlStyle = (token)=>{
37776
38112
  [`> ${componentCls}-nav`]: {
37777
38113
  order: 1
37778
38114
  },
37779
- [`> ${componentCls}-content-holder`]: {
38115
+ [`> ${componentCls}-body-holder`]: {
37780
38116
  order: 0
37781
38117
  }
37782
38118
  },
@@ -37784,7 +38120,7 @@ const genRtlStyle = (token)=>{
37784
38120
  [`> ${componentCls}-nav`]: {
37785
38121
  order: 0
37786
38122
  },
37787
- [`> ${componentCls}-content-holder`]: {
38123
+ [`> ${componentCls}-body-holder`]: {
37788
38124
  order: 1
37789
38125
  }
37790
38126
  },
@@ -37920,16 +38256,16 @@ const genTabsStyle = (token)=>{
37920
38256
  // ============================= Tabs =============================
37921
38257
  ...genTabStyle(token),
37922
38258
  // =========================== TabPanes ===========================
37923
- [`${componentCls}-content`]: {
38259
+ [`${componentCls}-body`]: {
37924
38260
  position: 'relative',
37925
38261
  width: '100%'
37926
38262
  },
37927
- [`${componentCls}-content-holder`]: {
38263
+ [`${componentCls}-body-holder`]: {
37928
38264
  flex: 'auto',
37929
38265
  minWidth: 0,
37930
38266
  minHeight: 0
37931
38267
  },
37932
- [`${componentCls}-tabpane`]: {
38268
+ [`${componentCls}-content`]: {
37933
38269
  ...genFocusStyle(token),
37934
38270
  '&-hidden': {
37935
38271
  display: 'none'
@@ -38087,12 +38423,16 @@ const InternalTabs = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38087
38423
  items: mergedItems
38088
38424
  };
38089
38425
  // ========================= Style ==========================
38426
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38427
+ const styleRoot = useSemanticRootStyle(style);
38090
38428
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38091
38429
  contextClassNames,
38092
38430
  classNames
38093
38431
  ], [
38094
38432
  contextStyles,
38095
- styles
38433
+ contextStyleRoot,
38434
+ styles,
38435
+ styleRoot
38096
38436
  ], {
38097
38437
  props: mergedProps
38098
38438
  }, {
@@ -38121,11 +38461,7 @@ const InternalTabs = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38121
38461
  popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)
38122
38462
  },
38123
38463
  styles: mergedStyles,
38124
- style: {
38125
- ...mergedStyles.root,
38126
- ...contextStyle,
38127
- ...style
38128
- },
38464
+ style: mergedStyles.root,
38129
38465
  editable: editable,
38130
38466
  more: {
38131
38467
  icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/ React__namespace.createElement(RefIcon$g, null),
@@ -38519,12 +38855,16 @@ const Card$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38519
38855
  size: mergedSize,
38520
38856
  variant: variant
38521
38857
  };
38858
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38859
+ const styleRoot = useSemanticRootStyle(style);
38522
38860
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38523
38861
  contextClassNames,
38524
38862
  classNames
38525
38863
  ], [
38526
38864
  contextStyles,
38527
- styles
38865
+ contextStyleRoot,
38866
+ styles,
38867
+ styleRoot
38528
38868
  ], {
38529
38869
  props: mergedProps
38530
38870
  });
@@ -38640,9 +38980,7 @@ const Card$1 = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
38640
38980
  [`${prefixCls}-rtl`]: direction === 'rtl'
38641
38981
  }, className, rootClassName, hashId, cssVarCls, mergedClassNames.root);
38642
38982
  const mergedStyle = {
38643
- ...mergedStyles.root,
38644
- ...contextStyle,
38645
- ...style
38983
+ ...mergedStyles.root
38646
38984
  };
38647
38985
  return /*#__PURE__*/ React__namespace.createElement("div", {
38648
38986
  ref: ref,
@@ -38660,20 +38998,22 @@ const CardMeta = (props)=>{
38660
38998
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('cardMeta');
38661
38999
  const prefixCls = getPrefixCls('card', customizePrefixCls);
38662
39000
  const metaPrefixCls = `${prefixCls}-meta`;
39001
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
39002
+ const styleRoot = useSemanticRootStyle(style);
38663
39003
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38664
39004
  contextClassNames,
38665
39005
  cardMetaClassNames
38666
39006
  ], [
38667
39007
  contextStyles,
38668
- styles
39008
+ contextStyleRoot,
39009
+ styles,
39010
+ styleRoot
38669
39011
  ], {
38670
39012
  props
38671
39013
  });
38672
39014
  const rootClassNames = clsx(metaPrefixCls, className, contextClassName, mergedClassNames.root);
38673
39015
  const rootStyles = {
38674
- ...contextStyle,
38675
- ...mergedStyles.root,
38676
- ...style
39016
+ ...mergedStyles.root
38677
39017
  };
38678
39018
  const avatarClassNames = clsx(`${metaPrefixCls}-avatar`, mergedClassNames.avatar);
38679
39019
  const titleClassNames = clsx(`${metaPrefixCls}-title`, mergedClassNames.title);
@@ -38990,12 +39330,16 @@ const InternalCheckbox = (props, ref)=>{
38990
39330
  disabled: mergedDisabled,
38991
39331
  checked: mergedChecked
38992
39332
  };
39333
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
39334
+ const styleRoot = useSemanticRootStyle(style);
38993
39335
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38994
39336
  contextClassNames,
38995
39337
  classNames
38996
39338
  ], [
38997
39339
  contextStyles,
38998
- styles
39340
+ contextStyleRoot,
39341
+ styles,
39342
+ styleRoot
38999
39343
  ], {
39000
39344
  props: mergedProps
39001
39345
  });
@@ -39016,11 +39360,7 @@ const InternalCheckbox = (props, ref)=>{
39016
39360
  disabled: mergedDisabled
39017
39361
  }, /*#__PURE__*/ React__namespace.createElement("label", {
39018
39362
  className: classString,
39019
- style: {
39020
- ...mergedStyles.root,
39021
- ...contextStyle,
39022
- ...style
39023
- },
39363
+ style: mergedStyles.root,
39024
39364
  onMouseEnter: onMouseEnter,
39025
39365
  onMouseLeave: onMouseLeave,
39026
39366
  onClick: onLabelClick
@@ -39860,12 +40200,16 @@ const Input = /*#__PURE__*/ React.forwardRef((props, ref)=>{
39860
40200
  size: mergedSize,
39861
40201
  disabled: mergedDisabled
39862
40202
  };
40203
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
40204
+ const styleRoot = useSemanticRootStyle(style);
39863
40205
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
39864
40206
  contextClassNames,
39865
40207
  classNames
39866
40208
  ], [
39867
40209
  contextStyles,
39868
- styles
40210
+ contextStyleRoot,
40211
+ styles,
40212
+ styleRoot
39869
40213
  ], {
39870
40214
  props: mergedProps
39871
40215
  });
@@ -39915,11 +40259,7 @@ const Input = /*#__PURE__*/ React.forwardRef((props, ref)=>{
39915
40259
  disabled: mergedDisabled,
39916
40260
  onBlur: handleBlur,
39917
40261
  onFocus: handleFocus,
39918
- style: {
39919
- ...mergedStyles.root,
39920
- ...contextStyle,
39921
- ...style
39922
- },
40262
+ style: mergedStyles.root,
39923
40263
  styles: mergedStyles,
39924
40264
  suffix: suffixNode,
39925
40265
  allowClear: mergedAllowClear,
@@ -41039,12 +41379,16 @@ const TextArea = /*#__PURE__*/ React.forwardRef((props, ref)=>{
41039
41379
  // ==================== Status ====================
41040
41380
  const { status: contextStatus, hasFeedback, feedbackIcon } = React__namespace.useContext(FormItemInputContext);
41041
41381
  const mergedStatus = getMergedStatus(contextStatus, customStatus);
41382
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
41383
+ const styleRoot = useSemanticRootStyle(style);
41042
41384
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
41043
41385
  contextClassNames,
41044
41386
  classNames
41045
41387
  ], [
41046
41388
  contextStyles,
41047
- styles
41389
+ contextStyleRoot,
41390
+ styles,
41391
+ styleRoot
41048
41392
  ], {
41049
41393
  props
41050
41394
  });
@@ -41101,11 +41445,7 @@ const TextArea = /*#__PURE__*/ React.forwardRef((props, ref)=>{
41101
41445
  return /*#__PURE__*/ React__namespace.createElement(RcInput.TextArea, {
41102
41446
  autoComplete: contextAutoComplete,
41103
41447
  ...rest,
41104
- style: {
41105
- ...mergedStyles.root,
41106
- ...contextStyle,
41107
- ...style
41108
- },
41448
+ style: mergedStyles.root,
41109
41449
  styles: mergedStyles,
41110
41450
  disabled: mergedDisabled,
41111
41451
  allowClear: mergedAllowClear,
@@ -41649,6 +41989,14 @@ const Pagination$1 = (props)=>{
41649
41989
  if (allPages - current <= pageBufferSize) {
41650
41990
  left = allPages - pageBufferSize * 2;
41651
41991
  }
41992
+ const hasJumpPrev = !!jumpPrev && current - 1 >= pageBufferSize * 2 && current !== 1 + 2;
41993
+ const hasJumpNext = !!jumpNext && allPages - current >= pageBufferSize * 2 && current !== allPages - 2;
41994
+ if (!showLessItems && hasJumpPrev && right !== allPages) {
41995
+ left += 1;
41996
+ }
41997
+ if (!showLessItems && hasJumpNext && left !== 1) {
41998
+ right -= 1;
41999
+ }
41652
42000
  for(let i = left; i <= right; i += 1){
41653
42001
  pagerList.push(/*#__PURE__*/ React.createElement(Pager, _extends$d({}, pagerProps, {
41654
42002
  key: i,
@@ -41656,13 +42004,13 @@ const Pagination$1 = (props)=>{
41656
42004
  active: current === i
41657
42005
  })));
41658
42006
  }
41659
- if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
42007
+ if (hasJumpPrev) {
41660
42008
  pagerList[0] = /*#__PURE__*/ React.cloneElement(pagerList[0], {
41661
42009
  className: clsx(`${prefixCls}-item-after-jump-prev`, pagerList[0].props.className)
41662
42010
  });
41663
42011
  pagerList.unshift(jumpPrev);
41664
42012
  }
41665
- if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
42013
+ if (hasJumpNext) {
41666
42014
  const lastOne = pagerList[pagerList.length - 1];
41667
42015
  pagerList[pagerList.length - 1] = /*#__PURE__*/ React.cloneElement(lastOne, {
41668
42016
  className: clsx(`${prefixCls}-item-before-jump-next`, lastOne.props.className)
@@ -41982,7 +42330,7 @@ const genPaginationInputVariantStyle = (token)=>{
41982
42330
  };
41983
42331
  };
41984
42332
  const genPaginationJumpStyle = (token)=>{
41985
- const { componentCls, antCls } = token;
42333
+ const { componentCls, iconCls, sizeLG, antCls } = token;
41986
42334
  const [, varRef] = genCssVar(antCls, 'pagination');
41987
42335
  return {
41988
42336
  [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
@@ -42004,18 +42352,19 @@ const genPaginationJumpStyle = (token)=>{
42004
42352
  },
42005
42353
  [`${componentCls}-item-ellipsis`]: {
42006
42354
  position: 'absolute',
42007
- top: 0,
42008
- insetInlineEnd: 0,
42009
- bottom: 0,
42010
- insetInlineStart: 0,
42011
- display: 'block',
42355
+ inset: 0,
42356
+ display: 'inline-flex',
42357
+ justifyContent: 'center',
42358
+ alignItems: 'center',
42012
42359
  margin: 'auto',
42013
42360
  color: token.colorTextDisabled,
42014
- letterSpacing: token.paginationEllipsisLetterSpacing,
42015
42361
  textAlign: 'center',
42016
- textIndent: token.paginationEllipsisTextIndent,
42017
42362
  opacity: 1,
42018
- transition: `all ${token.motionDurationMid}`
42363
+ transition: `all ${token.motionDurationMid}`,
42364
+ [`${iconCls}-ellipsis > svg`]: {
42365
+ width: sizeLG,
42366
+ height: sizeLG
42367
+ }
42019
42368
  }
42020
42369
  },
42021
42370
  '&:hover': {
@@ -42445,12 +42794,16 @@ const Pagination = (props)=>{
42445
42794
  size: mergedSize
42446
42795
  };
42447
42796
  // ========================= Style ==========================
42797
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
42798
+ const styleRoot = useSemanticRootStyle(style);
42448
42799
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
42449
42800
  contextClassNames,
42450
42801
  classNames
42451
42802
  ], [
42452
42803
  contextStyles,
42453
- styles
42804
+ contextStyleRoot,
42805
+ styles,
42806
+ styleRoot
42454
42807
  ], {
42455
42808
  props: mergedProps
42456
42809
  });
@@ -42506,7 +42859,7 @@ const Pagination = (props)=>{
42506
42859
  const iconsProps = React__namespace.useMemo(()=>{
42507
42860
  const ellipsis = /*#__PURE__*/ React__namespace.createElement("span", {
42508
42861
  className: `${prefixCls}-item-ellipsis`
42509
- }, "\u2022\u2022\u2022");
42862
+ }, /*#__PURE__*/ React__namespace.createElement(RefIcon$g, null));
42510
42863
  const prevIcon = /*#__PURE__*/ React__namespace.createElement("button", {
42511
42864
  className: `${prefixCls}-item-link`,
42512
42865
  type: "button",
@@ -42555,9 +42908,7 @@ const Pagination = (props)=>{
42555
42908
  [`${prefixCls}-bordered`]: token.wireframe
42556
42909
  }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
42557
42910
  const mergedStyle = {
42558
- ...mergedStyles.root,
42559
- ...contextStyle,
42560
- ...style
42911
+ ...mergedStyles.root
42561
42912
  };
42562
42913
  return /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, token.wireframe && /*#__PURE__*/ React__namespace.createElement(BorderedStyle, {
42563
42914
  prefixCls: prefixCls
@@ -43604,12 +43955,16 @@ const Statistic = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
43604
43955
  loading,
43605
43956
  value
43606
43957
  };
43958
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
43959
+ const styleRoot = useSemanticRootStyle(style);
43607
43960
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
43608
43961
  contextClassNames,
43609
43962
  classNames
43610
43963
  ], [
43611
43964
  contextStyles,
43612
- styles
43965
+ contextStyleRoot,
43966
+ styles,
43967
+ styleRoot
43613
43968
  ], {
43614
43969
  props: mergedProps
43615
43970
  });
@@ -43655,11 +44010,7 @@ const Statistic = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
43655
44010
  return /*#__PURE__*/ React__namespace.createElement("div", {
43656
44011
  ...restProps,
43657
44012
  className: rootClassNames,
43658
- style: {
43659
- ...mergedStyles.root,
43660
- ...contextStyle,
43661
- ...style
43662
- },
44013
+ style: mergedStyles.root,
43663
44014
  ref: internalRef,
43664
44015
  onMouseEnter: onMouseEnter,
43665
44016
  onMouseLeave: onMouseLeave
@@ -44150,12 +44501,16 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44150
44501
  size: mergedSize,
44151
44502
  disabled: mergedDisabled
44152
44503
  };
44504
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
44505
+ const styleRoot = useSemanticRootStyle(style);
44153
44506
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
44154
44507
  contextClassNames,
44155
44508
  classNames
44156
44509
  ], [
44157
44510
  contextStyles,
44158
- styles
44511
+ contextStyleRoot,
44512
+ styles,
44513
+ styleRoot
44159
44514
  ], {
44160
44515
  props: mergedProps
44161
44516
  });
@@ -44170,11 +44525,6 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44170
44525
  [`${prefixCls}-loading`]: loading,
44171
44526
  [`${prefixCls}-rtl`]: direction === 'rtl'
44172
44527
  }, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
44173
- const mergedStyle = {
44174
- ...mergedStyles.root,
44175
- ...contextStyle,
44176
- ...style
44177
- };
44178
44528
  const changeHandler = (...args)=>{
44179
44529
  setChecked(args[0]);
44180
44530
  onChange?.(...args);
@@ -44190,7 +44540,7 @@ const InternalSwitch = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
44190
44540
  onChange: changeHandler,
44191
44541
  prefixCls: prefixCls,
44192
44542
  className: classes,
44193
- style: mergedStyle,
44543
+ style: mergedStyles.root,
44194
44544
  disabled: mergedDisabled,
44195
44545
  ref: ref,
44196
44546
  loadingIcon: loadingIcon
@@ -44590,8 +44940,10 @@ const useSelection = (config, rowSelection)=>{
44590
44940
  const key = getRowKey(record, index);
44591
44941
  const checked = keySet.has(key);
44592
44942
  const checkboxProps = checkboxPropsMap.get(key);
44943
+ const defaultAriaLabel = `Select row ${index + 1}`;
44593
44944
  return {
44594
44945
  node: /*#__PURE__*/ React__namespace.createElement(Radio, {
44946
+ "aria-label": defaultAriaLabel,
44595
44947
  ...checkboxProps,
44596
44948
  checked: checked,
44597
44949
  onClick: (e)=>{
@@ -44623,9 +44975,11 @@ const useSelection = (config, rowSelection)=>{
44623
44975
  } else {
44624
44976
  mergedIndeterminate = checkboxProps?.indeterminate ?? indeterminate;
44625
44977
  }
44978
+ const defaultAriaLabel = checked ? `Row ${index + 1} selected` : `Select row ${index + 1}`;
44626
44979
  // Record checked
44627
44980
  return {
44628
44981
  node: /*#__PURE__*/ React__namespace.createElement(Checkbox, {
44982
+ "aria-label": defaultAriaLabel,
44629
44983
  ...checkboxProps,
44630
44984
  indeterminate: mergedIndeterminate,
44631
44985
  checked: checked,
@@ -46895,8 +47249,13 @@ const getSortData = (data, sortStates, childrenColumnName)=>{
46895
47249
  });
46896
47250
  };
46897
47251
  const useFilterSorter = (props)=>{
46898
- const { prefixCls, mergedColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
46899
- const [sortStates, setSortStates] = React__namespace.useState(()=>collectSortStates(mergedColumns, true));
47252
+ const { prefixCls, mergedColumns, baseColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
47253
+ // Use base (pre-responsive) columns to seed sort states so that
47254
+ // `defaultSortOrder` on a `responsive` column is honored even when the
47255
+ // column is not visible at the current breakpoint.
47256
+ // See: https://github.com/ant-design/ant-design/issues/32847
47257
+ const collectColumns = baseColumns ?? mergedColumns;
47258
+ const [sortStates, setSortStates] = React__namespace.useState(()=>collectSortStates(collectColumns, true));
46900
47259
  const getColumnKeys = (columns, pos)=>{
46901
47260
  const newKeys = [];
46902
47261
  columns.forEach((item, index)=>{
@@ -46911,11 +47270,14 @@ const useFilterSorter = (props)=>{
46911
47270
  };
46912
47271
  const mergedSorterStates = React__namespace.useMemo(()=>{
46913
47272
  let validate = true;
46914
- const collectedStates = collectSortStates(mergedColumns, false);
47273
+ // Collect controlled `sortOrder` from the full (pre-responsive) column
47274
+ // set so that a controlled `sortOrder` on a hidden responsive column
47275
+ // still applies to the sorted data.
47276
+ const collectedStates = collectSortStates(collectColumns, false);
46915
47277
  // Return if not controlled
46916
47278
  if (!collectedStates.length) {
46917
- const mergedColumnsKeys = getColumnKeys(mergedColumns);
46918
- return sortStates.filter(({ key })=>mergedColumnsKeys.includes(key));
47279
+ const collectColumnsKeys = getColumnKeys(collectColumns);
47280
+ return sortStates.filter(({ key })=>collectColumnsKeys.includes(key));
46919
47281
  }
46920
47282
  const validateStates = [];
46921
47283
  function patchStates(state) {
@@ -46948,7 +47310,7 @@ const useFilterSorter = (props)=>{
46948
47310
  });
46949
47311
  return validateStates;
46950
47312
  }, [
46951
- mergedColumns,
47313
+ collectColumns,
46952
47314
  sortStates
46953
47315
  ]);
46954
47316
  // Get render columns title required props
@@ -47057,6 +47419,10 @@ const genBorderedStyle = (token)=>{
47057
47419
  [`> ${componentCls}-container`]: {
47058
47420
  borderInlineStart: tableBorder,
47059
47421
  borderTop: tableBorder,
47422
+ [`> ${componentCls}-header${componentCls}-sticky-holder`]: {
47423
+ marginTop: calc(lineWidth).mul(-1).equal(),
47424
+ borderTop: tableBorder
47425
+ },
47060
47426
  [`> ${componentCls}-content, > ${componentCls}-header, > ${componentCls}-body, > ${componentCls}-summary`]: {
47061
47427
  '> table': {
47062
47428
  // ============================= Cell =============================
@@ -47073,8 +47439,12 @@ const genBorderedStyle = (token)=>{
47073
47439
  }
47074
47440
  },
47075
47441
  // Fixed right should provides additional border
47442
+ // Only add separator border when there are multiple fixed-right columns
47443
+ // (i.e. fix-right-first is not also fix-right-last), otherwise the
47444
+ // ::after border doubles up with the cell's own borderInlineEnd and
47445
+ // creates a spurious extra vertical line. See #56287.
47076
47446
  '> thead > tr, > tbody > tr, > tfoot > tr': {
47077
- [`> ${componentCls}-cell-fix-right-first::after`]: {
47447
+ [`> ${componentCls}-cell-fix-right-first:not(${componentCls}-cell-fix-right-last)::after`]: {
47078
47448
  borderInlineEnd: tableBorder
47079
47449
  }
47080
47450
  },
@@ -48265,12 +48635,16 @@ const InternalTable$1 = (props, ref)=>{
48265
48635
  size: mergedSize,
48266
48636
  bordered
48267
48637
  };
48638
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
48639
+ const styleRoot = useSemanticRootStyle(style);
48268
48640
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48269
48641
  contextClassNames,
48270
48642
  classNames
48271
48643
  ], [
48272
48644
  contextStyles,
48273
- styles
48645
+ contextStyleRoot,
48646
+ styles,
48647
+ styleRoot
48274
48648
  ], {
48275
48649
  props: mergedProps
48276
48650
  }, {
@@ -48394,6 +48768,11 @@ const InternalTable$1 = (props, ref)=>{
48394
48768
  const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useFilterSorter({
48395
48769
  prefixCls,
48396
48770
  mergedColumns,
48771
+ // Pass `baseColumns` (pre-responsive) so `defaultSortOrder` and controlled
48772
+ // `sortOrder` on a `responsive` column are still honored when the column
48773
+ // is hidden at the current breakpoint.
48774
+ // See: https://github.com/ant-design/ant-design/issues/32847
48775
+ baseColumns,
48397
48776
  onSorterChange,
48398
48777
  sortDirections: sortDirections || [
48399
48778
  'ascend',
@@ -48587,11 +48966,6 @@ const InternalTable$1 = (props, ref)=>{
48587
48966
  const wrappercls = clsx(cssVarCls, rootCls, `${prefixCls}-wrapper`, contextClassName, {
48588
48967
  [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'
48589
48968
  }, className, rootClassName, mergedClassNames.root, hashId);
48590
- const mergedStyle = {
48591
- ...mergedStyles.root,
48592
- ...contextStyle,
48593
- ...style
48594
- };
48595
48969
  // ========== empty ==========
48596
48970
  const mergedEmptyNode = React__namespace.useMemo(()=>{
48597
48971
  // When dataSource is null/undefined (detected by reference equality with EMPTY_LIST),
@@ -48638,7 +49012,7 @@ const InternalTable$1 = (props, ref)=>{
48638
49012
  return /*#__PURE__*/ React__namespace.createElement("div", {
48639
49013
  ref: rootRef,
48640
49014
  className: wrappercls,
48641
- style: mergedStyle
49015
+ style: mergedStyles.root
48642
49016
  }, /*#__PURE__*/ React__namespace.createElement(Spin, {
48643
49017
  spinning: false,
48644
49018
  ...spinProps
@@ -48925,12 +49299,16 @@ const CheckableTagGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
48925
49299
  const rootCls = useCSSVarCls(prefixCls);
48926
49300
  const [hashId, cssVarCls] = useStyle$1(prefixCls, rootCls);
48927
49301
  // ====================== Styles ======================
49302
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
49303
+ const styleRoot = useSemanticRootStyle(style);
48928
49304
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48929
49305
  contextClassNames,
48930
49306
  classNames
48931
49307
  ], [
48932
49308
  contextStyles,
48933
- styles
49309
+ contextStyleRoot,
49310
+ styles,
49311
+ styleRoot
48934
49312
  ], {
48935
49313
  props
48936
49314
  });
@@ -48983,11 +49361,7 @@ const CheckableTagGroup = /*#__PURE__*/ React.forwardRef((props, ref)=>{
48983
49361
  [`${groupPrefixCls}-disabled`]: disabled,
48984
49362
  [`${groupPrefixCls}-rtl`]: direction === 'rtl'
48985
49363
  }, hashId, cssVarCls, className, mergedClassNames.root),
48986
- style: {
48987
- ...contextStyle,
48988
- ...mergedStyles.root,
48989
- ...style
48990
- },
49364
+ style: mergedStyles.root,
48991
49365
  id: id,
48992
49366
  ref: divRef
48993
49367
  }, parsedOptions.map((option)=>/*#__PURE__*/ React.createElement(CheckableTag, {
@@ -53153,6 +53527,28 @@ function useId(deterministicId) {
53153
53527
  return deterministicId || (id ? `radix-${id}` : "");
53154
53528
  }
53155
53529
 
53530
+ // src/use-effect-event.tsx
53531
+ var useReactEffectEvent = React__namespace[" useEffectEvent ".trim().toString()];
53532
+ var useReactInsertionEffect = React__namespace[" useInsertionEffect ".trim().toString()];
53533
+ function useEffectEvent(callback) {
53534
+ if (typeof useReactEffectEvent === "function") {
53535
+ return useReactEffectEvent(callback);
53536
+ }
53537
+ const ref = React__namespace.useRef(()=>{
53538
+ throw new Error("Cannot call an event handler while rendering.");
53539
+ });
53540
+ if (typeof useReactInsertionEffect === "function") {
53541
+ useReactInsertionEffect(()=>{
53542
+ ref.current = callback;
53543
+ });
53544
+ } else {
53545
+ useLayoutEffect2(()=>{
53546
+ ref.current = callback;
53547
+ });
53548
+ }
53549
+ return React__namespace.useMemo(()=>(...args)=>ref.current?.(...args), []);
53550
+ }
53551
+
53156
53552
  // src/use-controllable-state.tsx
53157
53553
  var useInsertionEffect = React__namespace[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
53158
53554
  function useControllableState$1({ prop, defaultProp, onChange = ()=>{}, caller }) {
@@ -53403,27 +53799,6 @@ function useCallbackRef$2(callback) {
53403
53799
  return React__namespace.useMemo(()=>(...args)=>callbackRef.current?.(...args), []);
53404
53800
  }
53405
53801
 
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
53802
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
53428
53803
  var CONTEXT_UPDATE = "dismissableLayer.update";
53429
53804
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -53446,7 +53821,7 @@ var DismissableLayer = React__namespace.forwardRef((props, forwardedRef)=>{
53446
53821
  const [node, setNode] = React__namespace.useState(null);
53447
53822
  const ownerDocument = node?.ownerDocument ?? globalThis?.document;
53448
53823
  const [, force] = React__namespace.useState({});
53449
- const composedRefs = useComposedRefs$1(forwardedRef, (node2)=>setNode(node2));
53824
+ const composedRefs = useComposedRefs$1(forwardedRef, setNode);
53450
53825
  const layers = Array.from(context.layers);
53451
53826
  const [highestLayerWithOutsidePointerEventsDisabled] = [
53452
53827
  ...context.layersWithOutsidePointerEventsDisabled
@@ -53487,15 +53862,31 @@ var DismissableLayer = React__namespace.forwardRef((props, forwardedRef)=>{
53487
53862
  onInteractOutside?.(event);
53488
53863
  if (!event.defaultPrevented) onDismiss?.();
53489
53864
  }, ownerDocument);
53490
- useEscapeKeydown((event)=>{
53491
- const isHighestLayer = index === context.layers.size - 1;
53492
- if (!isHighestLayer) return;
53865
+ const isHighestLayer = node ? index === layers.length - 1 : false;
53866
+ const handleKeyDown = useEffectEvent((event)=>{
53867
+ if (event.key !== "Escape") {
53868
+ return;
53869
+ }
53493
53870
  onEscapeKeyDown?.(event);
53494
53871
  if (!event.defaultPrevented && onDismiss) {
53495
53872
  event.preventDefault();
53496
53873
  onDismiss();
53497
53874
  }
53498
- }, ownerDocument);
53875
+ });
53876
+ React__namespace.useEffect(()=>{
53877
+ if (!isHighestLayer) {
53878
+ return;
53879
+ }
53880
+ ownerDocument.addEventListener("keydown", handleKeyDown, {
53881
+ capture: true
53882
+ });
53883
+ return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53884
+ capture: true
53885
+ });
53886
+ }, [
53887
+ ownerDocument,
53888
+ isHighestLayer
53889
+ ]);
53499
53890
  React__namespace.useEffect(()=>{
53500
53891
  if (!node) return;
53501
53892
  if (disableOutsidePointerEvents) {
@@ -53757,7 +54148,7 @@ var FocusScope = React__namespace.forwardRef((props, forwardedRef)=>{
53757
54148
  const onMountAutoFocus = useCallbackRef$2(onMountAutoFocusProp);
53758
54149
  const onUnmountAutoFocus = useCallbackRef$2(onUnmountAutoFocusProp);
53759
54150
  const lastFocusedElementRef = React__namespace.useRef(null);
53760
- const composedRefs = useComposedRefs$1(forwardedRef, (node)=>setContainer(node));
54151
+ const composedRefs = useComposedRefs$1(forwardedRef, setContainer);
53761
54152
  const focusScope = React__namespace.useRef({
53762
54153
  paused: false,
53763
54154
  pause () {
@@ -119561,7 +119952,7 @@ function mergeRefs(...refs) {
119561
119952
  var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
119562
119953
  try {
119563
119954
  if (isBrowser2) {
119564
- window.__reactRouterVersion = "7.18.0";
119955
+ window.__reactRouterVersion = "7.18.1";
119565
119956
  }
119566
119957
  } catch (e) {}
119567
119958
  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 +120821,25 @@ const JUDGE_REASONING_PREFIX = "JudgeReasoning/";
120430
120821
  function metricNameOf$1(agg) {
120431
120822
  return agg.metric?.name ?? agg.name?.replace(/^Aggregate\//, "") ?? "Unknown";
120432
120823
  }
120824
+ /** Category labels are human-authored, so match them case-insensitively and drop blank entries. */ function normalizeCategoryList(list) {
120825
+ return (list ?? []).map((category)=>category.trim().toLowerCase()).filter((category)=>category.length > 0);
120826
+ }
120827
+ /**
120828
+ * Resolve each category the metric declares to a status. Resolution order is fail -> pass -> partial:
120829
+ * a category named in more than one list is a malformed definition, and taking fail first means the
120830
+ * safe reading wins rather than a silent pass. Categories in none of the lists stay unclassified.
120831
+ */ function buildStatusByCategory(metric) {
120832
+ const byCategory = new Map();
120833
+ const assign = (list, status)=>{
120834
+ for (const category of normalizeCategoryList(list)){
120835
+ if (!byCategory.has(category)) byCategory.set(category, status);
120836
+ }
120837
+ };
120838
+ assign(metric?.fail_categories, "fail");
120839
+ assign(metric?.pass_categories, "pass");
120840
+ assign(metric?.partial_categories, "partial");
120841
+ return byCategory;
120842
+ }
120433
120843
  /** Collect the leaf nodes (label + node id) grouped by label. */ function groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey) {
120434
120844
  const byLabel = new Map();
120435
120845
  const seen = new Set();
@@ -120480,6 +120890,8 @@ function metricNameOf$1(agg) {
120480
120890
  const counts = agg.counts ?? {};
120481
120891
  const categories = agg.categories ?? agg.metric?.categories ?? Object.keys(counts);
120482
120892
  const byLabel = groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey);
120893
+ const statusByCategory = buildStatusByCategory(agg.metric);
120894
+ const declaresFailCategories = normalizeCategoryList(agg.metric?.fail_categories).length > 0;
120483
120895
  // Order labels by the metric's category order, then any extras found in the data.
120484
120896
  const orderedLabels = [
120485
120897
  ...categories
@@ -120492,10 +120904,13 @@ function metricNameOf$1(agg) {
120492
120904
  return {
120493
120905
  labelName,
120494
120906
  count: counts[labelName] ?? nodesForLabel.length,
120907
+ status: statusByCategory.get(labelName.trim().toLowerCase()) ?? "unclassified",
120495
120908
  nodes: nodesForLabel
120496
120909
  };
120497
120910
  });
120498
120911
  const total = labels.reduce((sum, l)=>sum + l.count, 0);
120912
+ const failureCount = labels.reduce((sum, l)=>l.status === "fail" ? sum + l.count : sum, 0);
120913
+ const verdict = !declaresFailCategories ? "notGated" : failureCount > 0 ? "failed" : "passed";
120499
120914
  return {
120500
120915
  key: agg.identifier ?? `${metricName}-${index}`,
120501
120916
  metricName,
@@ -120503,6 +120918,10 @@ function metricNameOf$1(agg) {
120503
120918
  mostCommon: agg.most_common_label ?? undefined,
120504
120919
  leastCommon: agg.least_common_label ?? undefined,
120505
120920
  total,
120921
+ scoredCount: total,
120922
+ failureCount,
120923
+ declaresFailCategories,
120924
+ verdict,
120506
120925
  labels
120507
120926
  };
120508
120927
  });
@@ -120638,6 +121057,78 @@ const NodeActions = ({ sessionId, nodeId, onAgentNodeClick, onOpenVisualizer })=
120638
121057
  }), "Visualizer")));
120639
121058
  };
120640
121059
 
121060
+ const STATUS_ICON_SIZE = 12;
121061
+ /**
121062
+ * Icon prefixed to a category's tag. Mirrors the status mapping `SessionStatusIcon` already uses
121063
+ * in sessions.tsx, so the two screens read the same. Unclassified carries none, by design: an
121064
+ * unclassified category has no verdict to state, and a neutral icon would imply one.
121065
+ */ const STATUS_ICON = {
121066
+ pass: CircleCheck,
121067
+ fail: CircleX,
121068
+ partial: Blend,
121069
+ unclassified: null
121070
+ };
121071
+ /** Short word shown on the collapsed accordion row. */ const STATUS_CHIP_LABEL = {
121072
+ pass: "Pass",
121073
+ fail: "Fail",
121074
+ partial: "Partial",
121075
+ unclassified: "Unclassified"
121076
+ };
121077
+ /** The neutral outlined treatment: unclassified categories, not-gated metrics, and zero counts. */ function outlinedPalette(theme) {
121078
+ return {
121079
+ bg: "transparent",
121080
+ border: theme.colors.border,
121081
+ color: theme.colors.mutedForeground
121082
+ };
121083
+ }
121084
+ function statusPalette(theme, status) {
121085
+ const outlined = outlinedPalette(theme);
121086
+ switch(status){
121087
+ case "pass":
121088
+ return {
121089
+ bg: theme.colors.tagPass?.bg ?? theme.colors.muted,
121090
+ border: theme.colors.tagPass?.border ?? theme.colors.border,
121091
+ color: theme.colors.tagPass?.color ?? theme.colors.success
121092
+ };
121093
+ case "fail":
121094
+ return {
121095
+ bg: theme.colors.tagFail?.bg ?? theme.colors.muted,
121096
+ border: theme.colors.tagFail?.border ?? theme.colors.border,
121097
+ color: theme.colors.tagFail?.color ?? theme.colors.destructive
121098
+ };
121099
+ case "partial":
121100
+ return {
121101
+ bg: theme.colors.tagPartial?.bg ?? theme.colors.muted,
121102
+ border: theme.colors.tagPartial?.border ?? theme.colors.border,
121103
+ color: theme.colors.tagPartial?.color ?? theme.colors.foreground
121104
+ };
121105
+ default:
121106
+ return outlined;
121107
+ }
121108
+ }
121109
+ /**
121110
+ * Failure rate, formatted the way the notification formats it: an exact 0%/100% only when exact,
121111
+ * so a single failure out of two hundred does not round down to a clean "0% failed".
121112
+ */ function formatFailureRate(failureCount, scoredCount) {
121113
+ const exact = failureCount * 100 / scoredCount;
121114
+ const rounded = Math.round(exact);
121115
+ if (rounded === 0 && exact > 0) return "<1%";
121116
+ if (rounded === 100 && exact < 100) return ">99%";
121117
+ return `${rounded}%`;
121118
+ }
121119
+ /**
121120
+ * Whether the most/least common read-outs still say something the verdict pill has not.
121121
+ *
121122
+ * They do not when the result is total — every scored run failed, or none did — nor when every run
121123
+ * landed in one category, which makes "most" and "least" the same label. The ratio half of that
121124
+ * applies only to gated metrics: a not-gated metric has no failures *by definition*, so applying it
121125
+ * there would strip the read-outs from every not-gated card, which is the common case in production.
121126
+ */ function showsDistribution(metric) {
121127
+ const { scoredCount, failureCount, declaresFailCategories, labels } = metric;
121128
+ if (scoredCount === 0) return false;
121129
+ if (declaresFailCategories && (failureCount === 0 || failureCount === scoredCount)) return false;
121130
+ return labels.filter((label)=>label.count > 0).length > 1;
121131
+ }
120641
121132
  const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120642
121133
  const { theme } = useTheme$1();
120643
121134
  const [showReasoning, setShowReasoning] = React.useState(false);
@@ -120710,14 +121201,64 @@ const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120710
121201
  }
120711
121202
  }, "Reasoning · ", metricName), node.reasoning));
120712
121203
  };
121204
+ /**
121205
+ * The metric's verdict, beside its name. The ratio's leading number is what did *not* fail,
121206
+ * which folds partials in with the passes — the same reading the notification prints.
121207
+ */ const VerdictPill = ({ metric })=>{
121208
+ const { theme } = useTheme$1();
121209
+ const { verdict, scoredCount, failureCount } = metric;
121210
+ const palette = verdict === "failed" ? statusPalette(theme, "fail") : verdict === "passed" ? statusPalette(theme, "pass") : outlinedPalette(theme);
121211
+ const VerdictIcon = verdict === "failed" ? CircleX : verdict === "passed" ? CircleCheck : CircleMinus;
121212
+ const text = verdict === "failed" ? "Failed" : verdict === "passed" ? "Passed" : "Not gated";
121213
+ // Nothing scored yet, and a passing metric, both show the pill without a failure percentage.
121214
+ let rate;
121215
+ if (scoredCount > 0 && verdict === "failed") {
121216
+ rate = `${scoredCount - failureCount}/${scoredCount} · ${formatFailureRate(failureCount, scoredCount)}`;
121217
+ } else if (scoredCount > 0 && verdict === "passed") {
121218
+ rate = `${scoredCount}/${scoredCount}`;
121219
+ }
121220
+ return /*#__PURE__*/ React.createElement("span", {
121221
+ style: {
121222
+ display: "inline-flex",
121223
+ alignItems: "center",
121224
+ gap: 6,
121225
+ padding: "3px 9px",
121226
+ borderRadius: 6,
121227
+ fontSize: 11.5,
121228
+ fontWeight: 700,
121229
+ letterSpacing: 0.6,
121230
+ textTransform: "uppercase",
121231
+ background: palette.bg,
121232
+ color: palette.color,
121233
+ border: `1px solid ${palette.border}`
121234
+ }
121235
+ }, /*#__PURE__*/ React.createElement(VerdictIcon, {
121236
+ size: STATUS_ICON_SIZE,
121237
+ "aria-hidden": true,
121238
+ style: {
121239
+ flexShrink: 0
121240
+ }
121241
+ }), text, rate && /*#__PURE__*/ React.createElement("span", {
121242
+ style: {
121243
+ fontWeight: 400,
121244
+ letterSpacing: 0.2,
121245
+ opacity: 0.9,
121246
+ textTransform: "none"
121247
+ }
121248
+ }, rate));
121249
+ };
120713
121250
  const LabelPanelHeader = ({ label })=>{
120714
121251
  const { theme } = useTheme$1();
120715
121252
  const isEmpty = label.count === 0;
121253
+ const palette = statusPalette(theme, label.status);
121254
+ // A zero-count row keeps its status colour but reads as inactive, matching its disabled state.
121255
+ const dotColor = label.status === "unclassified" ? theme.colors.mutedForeground : palette.color;
120716
121256
  return /*#__PURE__*/ React.createElement("div", {
120717
121257
  style: {
120718
121258
  display: "flex",
120719
121259
  alignItems: "center",
120720
- gap: 10
121260
+ gap: 10,
121261
+ opacity: isEmpty ? 0.55 : undefined
120721
121262
  }
120722
121263
  }, /*#__PURE__*/ React.createElement("span", {
120723
121264
  style: {
@@ -120725,15 +121266,27 @@ const LabelPanelHeader = ({ label })=>{
120725
121266
  height: 7,
120726
121267
  borderRadius: "50%",
120727
121268
  flexShrink: 0,
120728
- background: isEmpty ? theme.colors.border : theme.colors.primary
121269
+ background: dotColor
120729
121270
  }
120730
121271
  }), /*#__PURE__*/ React.createElement("span", {
120731
121272
  style: {
120732
121273
  fontSize: 13,
120733
121274
  fontWeight: 600,
120734
- color: isEmpty ? theme.colors.mutedForeground : undefined
121275
+ color: palette.color
120735
121276
  }
120736
121277
  }, label.labelName), /*#__PURE__*/ React.createElement("span", {
121278
+ style: {
121279
+ fontSize: 10,
121280
+ letterSpacing: 0.8,
121281
+ textTransform: "uppercase",
121282
+ padding: "1px 6px",
121283
+ borderRadius: 4,
121284
+ flexShrink: 0,
121285
+ background: palette.bg,
121286
+ color: palette.color,
121287
+ border: `1px solid ${palette.border}`
121288
+ }
121289
+ }, STATUS_CHIP_LABEL[label.status]), /*#__PURE__*/ React.createElement("span", {
120737
121290
  style: {
120738
121291
  marginLeft: "auto",
120739
121292
  fontSize: 12,
@@ -120800,43 +121353,22 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120800
121353
  fontSize: 15,
120801
121354
  fontWeight: 600
120802
121355
  }
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", {
121356
+ }, metric.metricName), /*#__PURE__*/ React.createElement(VerdictPill, {
121357
+ metric: metric
121358
+ }), /*#__PURE__*/ React.createElement("div", {
120827
121359
  style: {
120828
121360
  display: "flex",
120829
121361
  gap: 20,
120830
121362
  marginLeft: "auto",
120831
121363
  flexShrink: 0
120832
121364
  }
120833
- }, /*#__PURE__*/ React.createElement(Meta$1, {
121365
+ }, showsDistribution(metric) && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Meta$1, {
120834
121366
  label: "Most common",
120835
121367
  value: metric.mostCommon
120836
121368
  }), /*#__PURE__*/ React.createElement(Meta$1, {
120837
121369
  label: "Least common",
120838
121370
  value: metric.leastCommon
120839
- }), /*#__PURE__*/ React.createElement(Meta$1, {
121371
+ })), /*#__PURE__*/ React.createElement(Meta$1, {
120840
121372
  label: "Evaluations",
120841
121373
  value: String(metric.total)
120842
121374
  }))), metric.description && /*#__PURE__*/ React.createElement("div", {
@@ -120845,7 +121377,39 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120845
121377
  fontSize: 12,
120846
121378
  color: theme.colors.mutedForeground
120847
121379
  }
120848
- }, metric.description)), /*#__PURE__*/ React.createElement(Collapse, {
121380
+ }, metric.description), /*#__PURE__*/ React.createElement("div", {
121381
+ style: {
121382
+ display: "flex",
121383
+ flexWrap: "wrap",
121384
+ gap: 6,
121385
+ marginTop: 12
121386
+ }
121387
+ }, metric.labels.map((label)=>{
121388
+ const palette = statusPalette(theme, label.status);
121389
+ const StatusIcon = STATUS_ICON[label.status];
121390
+ // "Declared but never scored" stays outlined, but keeps its icon so the row still reads.
121391
+ const filled = label.count > 0 && label.status !== "unclassified";
121392
+ return /*#__PURE__*/ React.createElement(Tag, {
121393
+ key: label.labelName,
121394
+ style: {
121395
+ margin: 0,
121396
+ display: "inline-flex",
121397
+ alignItems: "center",
121398
+ gap: 5,
121399
+ borderRadius: 12,
121400
+ fontSize: 12,
121401
+ background: filled ? palette.bg : "transparent",
121402
+ color: filled ? palette.color : theme.colors.mutedForeground,
121403
+ border: `1px solid ${filled ? palette.border : theme.colors.border}`
121404
+ }
121405
+ }, StatusIcon && /*#__PURE__*/ React.createElement(StatusIcon, {
121406
+ size: STATUS_ICON_SIZE,
121407
+ "aria-hidden": true,
121408
+ style: {
121409
+ flexShrink: 0
121410
+ }
121411
+ }), /*#__PURE__*/ React.createElement("span", null, label.labelName, " ", /*#__PURE__*/ React.createElement("strong", null, label.count)));
121412
+ }))), /*#__PURE__*/ React.createElement(Collapse, {
120849
121413
  items: items,
120850
121414
  bordered: false,
120851
121415
  style: {