@railtownai/railtracks-visualizer 0.0.73 → 0.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -3,9 +3,9 @@ import React__default, { useMemo, useState, useCallback, memo, useContext, forwa
3
3
  import { jsxs, Fragment, jsx as jsx$1 } from 'react/jsx-runtime';
4
4
  import * as ReactDOM from 'react-dom';
5
5
  import CountUp from 'react-countup';
6
- import { warning as warning$3, getShadowRoot, updateCSS, pickAttrs, composeRef, raf, useMemo as useMemo$1, isEqual, merge, mergeProps as mergeProps$1, render, unmount, useEvent, supportRef, getNodeRef, isVisible, toArray as toArray$1, omit, useComposeRef, useLayoutEffect as useLayoutEffect$1, useControlledState, supportNodeRef, useId as useId$2, triggerFocus, KeyCode, isStyleSupport } from '@rc-component/util';
6
+ import { warning as warning$3, pickAttrs, composeRef, raf, useMemo as useMemo$1, isEqual, merge, mergeProps as mergeProps$1, render, unmount, useEvent, supportRef, getNodeRef, isVisible, toArray as toArray$1, omit, useComposeRef, useLayoutEffect as useLayoutEffect$1, useControlledState, supportNodeRef, useId as useId$2, triggerFocus, KeyCode, isStyleSupport } from '@rc-component/util';
7
7
  import { createTheme, useCacheToken, Keyframes, unit, useStyleRegister, StyleContext } from '@ant-design/cssinjs';
8
- import { generate as generate$1, presetPrimaryColors, presetPalettes, blue, gold } from '@ant-design/colors';
8
+ import { generate as generate$1, presetPrimaryColors, presetPalettes, gold } from '@ant-design/colors';
9
9
  import { FastColor } from '@ant-design/fast-color';
10
10
  import { UniqueProvider as UniqueProvider$1 } from '@rc-component/trigger';
11
11
  import CSSMotion, { Provider as Provider$2 } from '@rc-component/motion';
@@ -3287,21 +3287,21 @@ const oppositePosition = {
3287
3287
  function getConnectionStatus(isValid) {
3288
3288
  return isValid === null ? null : isValid ? 'valid' : 'invalid';
3289
3289
  }
3290
- /* eslint-disable @typescript-eslint/no-explicit-any */ /**
3290
+ /**
3291
3291
  * Test whether an object is usable as an Edge
3292
3292
  * @public
3293
3293
  * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true
3294
3294
  * @param element - The element to test
3295
3295
  * @returns A boolean indicating whether the element is an Edge
3296
- */ const isEdgeBase = (element)=>'id' in element && 'source' in element && 'target' in element;
3296
+ */ const isEdgeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'source' in element && 'target' in element;
3297
3297
  /**
3298
3298
  * Test whether an object is usable as a Node
3299
3299
  * @public
3300
3300
  * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true
3301
3301
  * @param element - The element to test
3302
3302
  * @returns A boolean indicating whether the element is an Node
3303
- */ const isNodeBase = (element)=>'id' in element && 'position' in element && !('source' in element) && !('target' in element);
3304
- const isInternalNodeBase = (element)=>'id' in element && 'internals' in element && !('source' in element) && !('target' in element);
3303
+ */ const isNodeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'position' in element && !('source' in element) && !('target' in element);
3304
+ const isInternalNodeBase = (element)=>!!element && typeof element === 'object' && 'id' in element && 'internals' in element && !('source' in element) && !('target' in element);
3305
3305
  const getNodePositionWithOrigin = (node, nodeOrigin = [
3306
3306
  0,
3307
3307
  0
@@ -3478,7 +3478,18 @@ function getFitViewNodes(nodeLookup, options) {
3478
3478
  const fitViewNodes = new Map();
3479
3479
  const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node)=>node.id)) : null;
3480
3480
  nodeLookup.forEach((n)=>{
3481
- const isVisible = n.measured.width && n.measured.height && (options?.includeHiddenNodes || !n.hidden);
3481
+ let isVisible;
3482
+ if (options?.includeHiddenNodes) {
3483
+ /*
3484
+ * when hidden nodes are included they were never rendered, so they have no
3485
+ * measured size. Fall back to the declared dimensions (same fallback as
3486
+ * nodeToBox) so a hidden node with an intrinsic size still contributes to
3487
+ * the fit bounds instead of being dropped by a measured-only check. (#5841)
3488
+ */ const { width, height } = getNodeDimensions(n);
3489
+ isVisible = width > 0 && height > 0;
3490
+ } else {
3491
+ isVisible = Boolean(n.measured.width && n.measured.height && !n.hidden);
3492
+ }
3482
3493
  if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {
3483
3494
  fitViewNodes.set(n.id, n);
3484
3495
  }
@@ -4991,7 +5002,10 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
4991
5002
  const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent;
4992
5003
  let { positionAbsolute } = node.internals;
4993
5004
  if (node.parentId && node.extent === 'parent') {
4994
- positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, nodeLookup.get(node.parentId));
5005
+ const parentNode = nodeLookup.get(node.parentId);
5006
+ if (parentNode) {
5007
+ positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, parentNode);
5008
+ }
4995
5009
  } else if (extent) {
4996
5010
  positionAbsolute = clampPosition(positionAbsolute, extent, dimensions);
4997
5011
  }
@@ -5927,11 +5941,11 @@ function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection
5927
5941
  onPanZoomStart?.(event, nextViewport);
5928
5942
  } else {
5929
5943
  onPanZoom?.(event, nextViewport);
5930
- zoomPanValues.panScrollTimeout = setTimeout(()=>{
5931
- onPanZoomEnd?.(event, nextViewport);
5932
- zoomPanValues.isPanScrolling = false;
5933
- }, 150);
5934
5944
  }
5945
+ zoomPanValues.panScrollTimeout = setTimeout(()=>{
5946
+ onPanZoomEnd?.(event, nextViewport);
5947
+ zoomPanValues.isPanScrolling = false;
5948
+ }, 150);
5935
5949
  };
5936
5950
  }
5937
5951
  function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) {
@@ -6070,7 +6084,39 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
6070
6084
  isPanScrolling: false
6071
6085
  };
6072
6086
  const bbox = domNode.getBoundingClientRect();
6073
- const d3ZoomInstance = zoom().scaleExtent([
6087
+ /*
6088
+ * Cache the pane extent and refresh it from a ResizeObserver. Otherwise d3-zoom falls back to its
6089
+ * defaultExtent, which reads clientWidth/clientHeight and forces a synchronous layout while panning
6090
+ * and pinching. The observer is never disconnected on purpose: destroy() also runs to pause zooming
6091
+ * during a user selection, so disconnecting there would leave the cache stale. It becomes unreachable
6092
+ * and is garbage collected with the pane on unmount.
6093
+ */ let cachedExtent = [
6094
+ [
6095
+ 0,
6096
+ 0
6097
+ ],
6098
+ [
6099
+ bbox.width,
6100
+ bbox.height
6101
+ ]
6102
+ ];
6103
+ const extentResizeObserver = typeof ResizeObserver !== 'undefined' ? new ResizeObserver((entries)=>{
6104
+ const entry = entries[0];
6105
+ if (entry) {
6106
+ cachedExtent = [
6107
+ [
6108
+ 0,
6109
+ 0
6110
+ ],
6111
+ [
6112
+ entry.contentRect.width,
6113
+ entry.contentRect.height
6114
+ ]
6115
+ ];
6116
+ }
6117
+ }) : null;
6118
+ extentResizeObserver?.observe(domNode);
6119
+ const d3ZoomInstance = zoom().extent(()=>cachedExtent).scaleExtent([
6074
6120
  minZoom,
6075
6121
  maxZoom
6076
6122
  ]).translateExtent(translateExtent);
@@ -7267,7 +7313,7 @@ function Attribution({ proOptions, position = 'bottom-right' }) {
7267
7313
  })
7268
7314
  });
7269
7315
  }
7270
- const selector$m = (s)=>{
7316
+ const selector$l = (s)=>{
7271
7317
  const selectedNodes = [];
7272
7318
  const selectedEdges = [];
7273
7319
  for (const [, node] of s.nodeLookup){
@@ -7286,12 +7332,12 @@ const selector$m = (s)=>{
7286
7332
  };
7287
7333
  };
7288
7334
  const selectId = (obj)=>obj.id;
7289
- function areEqual(a, b) {
7335
+ function areEqual$1(a, b) {
7290
7336
  return shallow$1(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) && shallow$1(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId));
7291
7337
  }
7292
7338
  function SelectionListenerInner({ onSelectionChange }) {
7293
7339
  const store = useStoreApi();
7294
- const { selectedNodes, selectedEdges } = useStore(selector$m, areEqual);
7340
+ const { selectedNodes, selectedEdges } = useStore(selector$l, areEqual$1);
7295
7341
  useEffect(()=>{
7296
7342
  const params = {
7297
7343
  nodes: selectedNodes,
@@ -7395,7 +7441,7 @@ const fieldsToTrack = [
7395
7441
  ...reactFlowFieldsToTrack,
7396
7442
  'rfId'
7397
7443
  ];
7398
- const selector$l = (s)=>({
7444
+ const selector$k = (s)=>({
7399
7445
  setNodes: s.setNodes,
7400
7446
  setEdges: s.setEdges,
7401
7447
  setMinZoom: s.setMinZoom,
@@ -7419,7 +7465,7 @@ const initPrevValues = {
7419
7465
  rfId: '1'
7420
7466
  };
7421
7467
  function StoreUpdater(props) {
7422
- const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore(selector$l, shallow$1);
7468
+ const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore(selector$k, shallow$1);
7423
7469
  const store = useStoreApi();
7424
7470
  useEffect(()=>{
7425
7471
  setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);
@@ -8158,7 +8204,7 @@ function useBatchContext() {
8158
8204
  }
8159
8205
  return batchContext;
8160
8206
  }
8161
- const selector$k = (s)=>!!s.panZoom;
8207
+ const selector$j = (s)=>!!s.panZoom;
8162
8208
  /**
8163
8209
  * 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.
8164
8210
  *
@@ -8189,7 +8235,7 @@ const selector$k = (s)=>!!s.panZoom;
8189
8235
  const viewportHelper = useViewportHelper();
8190
8236
  const store = useStoreApi();
8191
8237
  const batchContext = useBatchContext();
8192
- const viewportInitialized = useStore(selector$k);
8238
+ const viewportInitialized = useStore(selector$j);
8193
8239
  const generalHelper = useMemo(()=>{
8194
8240
  const getInternalNode = (id)=>store.getState().nodeLookup.get(id);
8195
8241
  const setNodes = (payload)=>{
@@ -8502,7 +8548,7 @@ const containerStyle = {
8502
8548
  top: 0,
8503
8549
  left: 0
8504
8550
  };
8505
- const selector$j = (s)=>({
8551
+ const selector$i = (s)=>({
8506
8552
  userSelectionActive: s.userSelectionActive,
8507
8553
  lib: s.lib,
8508
8554
  connectionInProgress: s.connection.inProgress
@@ -8510,7 +8556,7 @@ const selector$j = (s)=>({
8510
8556
  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 }) {
8511
8557
  const store = useStoreApi();
8512
8558
  const zoomPane = useRef(null);
8513
- const { userSelectionActive, lib, connectionInProgress } = useStore(selector$j, shallow$1);
8559
+ const { userSelectionActive, lib, connectionInProgress } = useStore(selector$i, shallow$1);
8514
8560
  const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);
8515
8561
  const panZoom = useRef();
8516
8562
  useResizeHandler(zoomPane);
@@ -8619,12 +8665,12 @@ function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true,
8619
8665
  children: children
8620
8666
  });
8621
8667
  }
8622
- const selector$i = (s)=>({
8668
+ const selector$h = (s)=>({
8623
8669
  userSelectionActive: s.userSelectionActive,
8624
8670
  userSelectionRect: s.userSelectionRect
8625
8671
  });
8626
8672
  function UserSelection() {
8627
- const { userSelectionActive, userSelectionRect } = useStore(selector$i, shallow$1);
8673
+ const { userSelectionActive, userSelectionRect } = useStore(selector$h, shallow$1);
8628
8674
  const isActive = userSelectionActive && userSelectionRect;
8629
8675
  if (!isActive) {
8630
8676
  return null;
@@ -8646,7 +8692,7 @@ const wrapHandler = (handler, containerRef)=>{
8646
8692
  handler?.(event);
8647
8693
  };
8648
8694
  };
8649
- const selector$h = (s)=>({
8695
+ const selector$g = (s)=>({
8650
8696
  userSelectionActive: s.userSelectionActive,
8651
8697
  elementsSelectable: s.elementsSelectable,
8652
8698
  dragging: s.paneDragging,
@@ -8656,7 +8702,7 @@ const selector$h = (s)=>({
8656
8702
  function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children }) {
8657
8703
  const autoPanId = useRef(0);
8658
8704
  const store = useStoreApi();
8659
- const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$h, shallow$1);
8705
+ const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$g, shallow$1);
8660
8706
  const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive);
8661
8707
  const container = useRef(null);
8662
8708
  const containerBounds = useRef();
@@ -8942,6 +8988,9 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8942
8988
  const [dragging, setDragging] = useState(false);
8943
8989
  const xyDrag = useRef();
8944
8990
  useEffect(()=>{
8991
+ if (disabled) {
8992
+ return;
8993
+ }
8945
8994
  xyDrag.current = XYDrag({
8946
8995
  getStoreItems: ()=>store.getState(),
8947
8996
  onNodeMouseDown: (id)=>{
@@ -8958,7 +9007,15 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8958
9007
  setDragging(false);
8959
9008
  }
8960
9009
  });
8961
- }, []);
9010
+ return ()=>{
9011
+ xyDrag.current?.destroy();
9012
+ xyDrag.current = undefined;
9013
+ };
9014
+ }, [
9015
+ disabled,
9016
+ store,
9017
+ nodeRef
9018
+ ]);
8962
9019
  useEffect(()=>{
8963
9020
  if (disabled || !nodeRef.current || !xyDrag.current) {
8964
9021
  return;
@@ -8971,9 +9028,6 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
8971
9028
  nodeId,
8972
9029
  nodeClickDistance
8973
9030
  });
8974
- return ()=>{
8975
- xyDrag.current?.destroy();
8976
- };
8977
9031
  }, [
8978
9032
  noDragClassName,
8979
9033
  handleSelector,
@@ -9065,7 +9119,7 @@ NodeIdContext.Consumer;
9065
9119
  const nodeId = useContext(NodeIdContext);
9066
9120
  return nodeId;
9067
9121
  };
9068
- const selector$g = (s)=>({
9122
+ const selector$f = (s)=>({
9069
9123
  connectOnClick: s.connectOnClick,
9070
9124
  noPanClassName: s.noPanClassName,
9071
9125
  rfId: s.rfId
@@ -9075,7 +9129,7 @@ const HandleConfigContext = createContext(null);
9075
9129
  * `connectOnClick`, `noPanClassName` and `rfId` are the same for every handle, so they are
9076
9130
  * shared through context from a single store subscription.
9077
9131
  */ function HandleConfigProvider({ children }) {
9078
- const config = useStore(selector$g, shallow$1);
9132
+ const config = useStore(selector$f, shallow$1);
9079
9133
  return jsx$1(HandleConfigContext.Provider, {
9080
9134
  value: config,
9081
9135
  children: children
@@ -9370,7 +9424,7 @@ function getNodeInlineStyleDimensions(node) {
9370
9424
  height: node.height ?? node.style?.height
9371
9425
  };
9372
9426
  }
9373
- const selector$f = (s)=>{
9427
+ const selector$e = (s)=>{
9374
9428
  const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, {
9375
9429
  filter: (node)=>!!node.selected
9376
9430
  });
@@ -9383,7 +9437,7 @@ const selector$f = (s)=>{
9383
9437
  };
9384
9438
  function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y }) {
9385
9439
  const store = useStoreApi();
9386
- const { width, height, transformString, userSelectionActive } = useStore(selector$f, shallow$1);
9440
+ const { width, height, transformString, userSelectionActive } = useStore(selector$e, shallow$1);
9387
9441
  const moveSelectedNodes = useMoveSelectedNodes();
9388
9442
  const nodeRef = useRef(null);
9389
9443
  useEffect(()=>{
@@ -9439,14 +9493,14 @@ function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboar
9439
9493
  });
9440
9494
  }
9441
9495
  const win = typeof window !== 'undefined' ? window : undefined;
9442
- const selector$e = (s)=>{
9496
+ const selector$d = (s)=>{
9443
9497
  return {
9444
9498
  nodesSelectionActive: s.nodesSelectionActive,
9445
9499
  userSelectionActive: s.userSelectionActive
9446
9500
  };
9447
9501
  };
9448
9502
  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 }) {
9449
- const { nodesSelectionActive, userSelectionActive } = useStore(selector$e, shallow$1);
9503
+ const { nodesSelectionActive, userSelectionActive } = useStore(selector$d, shallow$1);
9450
9504
  const selectionKeyPressed = useKeyPress(selectionKeyCode, {
9451
9505
  target: win
9452
9506
  });
@@ -9512,7 +9566,7 @@ function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPane
9512
9566
  }
9513
9567
  FlowRendererComponent.displayName = 'FlowRenderer';
9514
9568
  const FlowRenderer = memo(FlowRendererComponent);
9515
- const selector$d = (onlyRenderVisible)=>(s)=>{
9569
+ const selector$c = (onlyRenderVisible)=>(s)=>{
9516
9570
  return onlyRenderVisible ? getNodesInside(s.nodeLookup, {
9517
9571
  x: 0,
9518
9572
  y: 0,
@@ -9527,14 +9581,14 @@ const selector$d = (onlyRenderVisible)=>(s)=>{
9527
9581
  * @param onlyRenderVisible
9528
9582
  * @returns array with visible node ids
9529
9583
  */ function useVisibleNodeIds(onlyRenderVisible) {
9530
- const nodeIds = useStore(useCallback(selector$d(onlyRenderVisible), [
9584
+ const nodeIds = useStore(useCallback(selector$c(onlyRenderVisible), [
9531
9585
  onlyRenderVisible
9532
9586
  ]), shallow$1);
9533
9587
  return nodeIds;
9534
9588
  }
9535
- const selector$c = (s)=>s.updateNodeInternals;
9589
+ const selector$b = (s)=>s.updateNodeInternals;
9536
9590
  function useResizeObserver() {
9537
- const updateNodeInternals = useStore(selector$c);
9591
+ const updateNodeInternals = useStore(selector$b);
9538
9592
  const [resizeObserver] = useState(()=>{
9539
9593
  if (typeof ResizeObserver === 'undefined') {
9540
9594
  return null;
@@ -9825,15 +9879,14 @@ function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onC
9825
9879
  });
9826
9880
  }
9827
9881
  var NodeWrapper$1 = memo(NodeWrapper);
9828
- const selector$b = (s)=>({
9829
- nodesDraggable: s.nodesDraggable,
9882
+ const selector$a = (s)=>({
9830
9883
  nodesConnectable: s.nodesConnectable,
9831
9884
  nodesFocusable: s.nodesFocusable,
9832
9885
  elementsSelectable: s.elementsSelectable,
9833
9886
  onError: s.onError
9834
9887
  });
9835
9888
  function NodeRendererComponent(props) {
9836
- const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$b, shallow$1);
9889
+ const { nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$a, shallow$1);
9837
9890
  const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);
9838
9891
  const resizeObserver = useResizeObserver();
9839
9892
  return jsx$1("div", {
@@ -9879,7 +9932,7 @@ function NodeRendererComponent(props) {
9879
9932
  rfId: props.rfId,
9880
9933
  disableKeyboardA11y: props.disableKeyboardA11y,
9881
9934
  resizeObserver: resizeObserver,
9882
- nodesDraggable: nodesDraggable,
9935
+ nodesDraggable: props.nodesDraggable ?? true,
9883
9936
  nodesConnectable: nodesConnectable,
9884
9937
  nodesFocusable: nodesFocusable,
9885
9938
  elementsSelectable: elementsSelectable,
@@ -10858,7 +10911,7 @@ function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectabl
10858
10911
  });
10859
10912
  }
10860
10913
  var EdgeWrapper$1 = memo(EdgeWrapper);
10861
- const selector$a = (s)=>({
10914
+ const selector$9 = (s)=>({
10862
10915
  edgesFocusable: s.edgesFocusable,
10863
10916
  edgesReconnectable: s.edgesReconnectable,
10864
10917
  elementsSelectable: s.elementsSelectable,
@@ -10866,7 +10919,7 @@ const selector$a = (s)=>({
10866
10919
  onError: s.onError
10867
10920
  });
10868
10921
  function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y }) {
10869
- const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$a, shallow$1);
10922
+ const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$9, shallow$1);
10870
10923
  const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
10871
10924
  return jsxs("div", {
10872
10925
  className: "react-flow__edges",
@@ -10903,13 +10956,36 @@ function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements,
10903
10956
  }
10904
10957
  EdgeRendererComponent.displayName = 'EdgeRenderer';
10905
10958
  const EdgeRenderer = memo(EdgeRendererComponent);
10906
- const selector$9 = (s)=>`translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;
10959
+ const toTransformString = (transform)=>`translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})`;
10907
10960
  function Viewport({ children }) {
10908
- const transform = useStore(selector$9);
10961
+ const store = useStoreApi();
10962
+ const viewportRef = useRef(null);
10963
+ // seed the transform for first paint and SSR without subscribing, so we don't re-render on pan/zoom
10964
+ const [initialTransform] = useState(()=>store.getState().transform);
10965
+ // transform changes every pan/zoom frame, so write it to the DOM directly to keep React out of the hot path
10966
+ useIsomorphicLayoutEffect$3(()=>{
10967
+ let prevTransform = null;
10968
+ const applyTransform = ()=>{
10969
+ const transform = store.getState().transform;
10970
+ // store.subscribe fires on every update, so only touch the DOM when x, y or zoom actually changed
10971
+ if (prevTransform && transform[0] === prevTransform[0] && transform[1] === prevTransform[1] && transform[2] === prevTransform[2]) {
10972
+ return;
10973
+ }
10974
+ prevTransform = transform;
10975
+ if (viewportRef.current) {
10976
+ viewportRef.current.style.transform = toTransformString(transform);
10977
+ }
10978
+ };
10979
+ applyTransform();
10980
+ return store.subscribe(applyTransform);
10981
+ }, [
10982
+ store
10983
+ ]);
10909
10984
  return jsx$1("div", {
10985
+ ref: viewportRef,
10910
10986
  className: "react-flow__viewport xyflow__viewport react-flow__container",
10911
10987
  style: {
10912
- transform
10988
+ transform: toTransformString(initialTransform)
10913
10989
  },
10914
10990
  children: children
10915
10991
  });
@@ -11129,7 +11205,7 @@ function useStylesLoadedWarning() {
11129
11205
  }
11130
11206
  }, []);
11131
11207
  }
11132
- 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 }) {
11208
+ 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 }) {
11133
11209
  useNodeOrEdgeTypesWarning(nodeTypes);
11134
11210
  useNodeOrEdgeTypesWarning(edgeTypes);
11135
11211
  useStylesLoadedWarning();
@@ -11216,7 +11292,8 @@ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeC
11216
11292
  noDragClassName: noDragClassName,
11217
11293
  disableKeyboardA11y: disableKeyboardA11y,
11218
11294
  nodeExtent: nodeExtent,
11219
- rfId: rfId
11295
+ rfId: rfId,
11296
+ nodesDraggable: nodesDraggable
11220
11297
  }),
11221
11298
  jsx$1("div", {
11222
11299
  className: "react-flow__viewport-portal"
@@ -11948,7 +12025,8 @@ function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTy
11948
12025
  disableKeyboardA11y: disableKeyboardA11y,
11949
12026
  nodeExtent: nodeExtent,
11950
12027
  viewport: viewport,
11951
- onViewportChange: onViewportChange
12028
+ onViewportChange: onViewportChange,
12029
+ nodesDraggable: nodesDraggable
11952
12030
  }),
11953
12031
  jsx$1(SelectionListener, {
11954
12032
  onSelectionChange: onSelectionChange
@@ -12569,6 +12647,10 @@ const selector$1 = (s)=>{
12569
12647
  ariaLabelConfig: s.ariaLabelConfig
12570
12648
  };
12571
12649
  };
12650
+ const rectEqual = (a, b)=>a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
12651
+ // the selector builds new viewBB/boundingRect objects every call, so the default shallow equality always
12652
+ // treats them as changed; comparing the rects by value lets the minimap skip re-renders when nothing moved
12653
+ 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;
12572
12654
  const ARIA_LABEL_KEY = 'react-flow__minimap-desc';
12573
12655
  function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, /*
12574
12656
  * We need to rename the prop to be `CapitalCase` so that JSX will render it as
@@ -12576,7 +12658,7 @@ function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeCl
12576
12658
  */ nodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5 }) {
12577
12659
  const store = useStoreApi();
12578
12660
  const svg = useRef(null);
12579
- const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, shallow$1);
12661
+ const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, areEqual);
12580
12662
  const elementWidth = style?.width ?? defaultWidth;
12581
12663
  const elementHeight = style?.height ?? defaultHeight;
12582
12664
  const scaledWidth = boundingRect.width / elementWidth;
@@ -12917,11 +12999,11 @@ function styleInject(css, ref) {
12917
12999
  }
12918
13000
  }
12919
13001
 
12920
- 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";
13002
+ 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";
12921
13003
  styleInject(css_248z);
12922
13004
 
12923
13005
  /**
12924
- * @license lucide-react v1.21.0 - ISC
13006
+ * @license lucide-react v1.23.0 - ISC
12925
13007
  *
12926
13008
  * This source code is licensed under the ISC license.
12927
13009
  * See the LICENSE file in the root directory of this source tree.
@@ -12930,14 +13012,14 @@ styleInject(css_248z);
12930
13012
  }).join(" ").trim();
12931
13013
 
12932
13014
  /**
12933
- * @license lucide-react v1.21.0 - ISC
13015
+ * @license lucide-react v1.23.0 - ISC
12934
13016
  *
12935
13017
  * This source code is licensed under the ISC license.
12936
13018
  * See the LICENSE file in the root directory of this source tree.
12937
13019
  */ const toKebabCase = (string)=>string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
12938
13020
 
12939
13021
  /**
12940
- * @license lucide-react v1.21.0 - ISC
13022
+ * @license lucide-react v1.23.0 - ISC
12941
13023
  *
12942
13024
  * This source code is licensed under the ISC license.
12943
13025
  * See the LICENSE file in the root directory of this source tree.
@@ -12949,7 +13031,7 @@ const toPascalCase = (string)=>{
12949
13031
  };
12950
13032
 
12951
13033
  /**
12952
- * @license lucide-react v1.21.0 - ISC
13034
+ * @license lucide-react v1.23.0 - ISC
12953
13035
  *
12954
13036
  * This source code is licensed under the ISC license.
12955
13037
  * See the LICENSE file in the root directory of this source tree.
@@ -12966,7 +13048,7 @@ const toPascalCase = (string)=>{
12966
13048
  };
12967
13049
 
12968
13050
  /**
12969
- * @license lucide-react v1.21.0 - ISC
13051
+ * @license lucide-react v1.23.0 - ISC
12970
13052
  *
12971
13053
  * This source code is licensed under the ISC license.
12972
13054
  * See the LICENSE file in the root directory of this source tree.
@@ -13016,7 +13098,7 @@ const createLucideIcon = (iconName, iconNode)=>{
13016
13098
  return Component;
13017
13099
  };
13018
13100
 
13019
- const __iconNode$D = [
13101
+ const __iconNode$G = [
13020
13102
  [
13021
13103
  "path",
13022
13104
  {
@@ -13032,9 +13114,9 @@ const __iconNode$D = [
13032
13114
  }
13033
13115
  ]
13034
13116
  ];
13035
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$D);
13117
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$G);
13036
13118
 
13037
- const __iconNode$C = [
13119
+ const __iconNode$F = [
13038
13120
  [
13039
13121
  "path",
13040
13122
  {
@@ -13050,9 +13132,31 @@ const __iconNode$C = [
13050
13132
  }
13051
13133
  ]
13052
13134
  ];
13053
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$C);
13135
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$F);
13054
13136
 
13055
- const __iconNode$B = [
13137
+ const __iconNode$E = [
13138
+ [
13139
+ "circle",
13140
+ {
13141
+ cx: "9",
13142
+ cy: "9",
13143
+ r: "7",
13144
+ key: "p2h5vp"
13145
+ }
13146
+ ],
13147
+ [
13148
+ "circle",
13149
+ {
13150
+ cx: "15",
13151
+ cy: "15",
13152
+ r: "7",
13153
+ key: "19ennj"
13154
+ }
13155
+ ]
13156
+ ];
13157
+ const Blend = createLucideIcon("blend", __iconNode$E);
13158
+
13159
+ const __iconNode$D = [
13056
13160
  [
13057
13161
  "path",
13058
13162
  {
@@ -13100,9 +13204,9 @@ const __iconNode$B = [
13100
13204
  }
13101
13205
  ]
13102
13206
  ];
13103
- const Bot = createLucideIcon("bot", __iconNode$B);
13207
+ const Bot = createLucideIcon("bot", __iconNode$D);
13104
13208
 
13105
- const __iconNode$A = [
13209
+ const __iconNode$C = [
13106
13210
  [
13107
13211
  "path",
13108
13212
  {
@@ -13136,9 +13240,9 @@ const __iconNode$A = [
13136
13240
  }
13137
13241
  ]
13138
13242
  ];
13139
- const Calendar = createLucideIcon("calendar", __iconNode$A);
13243
+ const Calendar = createLucideIcon("calendar", __iconNode$C);
13140
13244
 
13141
- const __iconNode$z = [
13245
+ const __iconNode$B = [
13142
13246
  [
13143
13247
  "path",
13144
13248
  {
@@ -13195,9 +13299,9 @@ const __iconNode$z = [
13195
13299
  }
13196
13300
  ]
13197
13301
  ];
13198
- const ChartNetwork = createLucideIcon("chart-network", __iconNode$z);
13302
+ const ChartNetwork = createLucideIcon("chart-network", __iconNode$B);
13199
13303
 
13200
- const __iconNode$y = [
13304
+ const __iconNode$A = [
13201
13305
  [
13202
13306
  "path",
13203
13307
  {
@@ -13206,9 +13310,9 @@ const __iconNode$y = [
13206
13310
  }
13207
13311
  ]
13208
13312
  ];
13209
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$y);
13313
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$A);
13210
13314
 
13211
- const __iconNode$x = [
13315
+ const __iconNode$z = [
13212
13316
  [
13213
13317
  "path",
13214
13318
  {
@@ -13217,9 +13321,9 @@ const __iconNode$x = [
13217
13321
  }
13218
13322
  ]
13219
13323
  ];
13220
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$x);
13324
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$z);
13221
13325
 
13222
- const __iconNode$w = [
13326
+ const __iconNode$y = [
13223
13327
  [
13224
13328
  "path",
13225
13329
  {
@@ -13235,9 +13339,9 @@ const __iconNode$w = [
13235
13339
  }
13236
13340
  ]
13237
13341
  ];
13238
- const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$w);
13342
+ const ChevronsDown = createLucideIcon("chevrons-down", __iconNode$y);
13239
13343
 
13240
- const __iconNode$v = [
13344
+ const __iconNode$x = [
13241
13345
  [
13242
13346
  "path",
13243
13347
  {
@@ -13253,9 +13357,9 @@ const __iconNode$v = [
13253
13357
  }
13254
13358
  ]
13255
13359
  ];
13256
- const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$v);
13360
+ const ChevronsUp = createLucideIcon("chevrons-up", __iconNode$x);
13257
13361
 
13258
- const __iconNode$u = [
13362
+ const __iconNode$w = [
13259
13363
  [
13260
13364
  "circle",
13261
13365
  {
@@ -13286,9 +13390,9 @@ const __iconNode$u = [
13286
13390
  }
13287
13391
  ]
13288
13392
  ];
13289
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$u);
13393
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$w);
13290
13394
 
13291
- const __iconNode$t = [
13395
+ const __iconNode$v = [
13292
13396
  [
13293
13397
  "path",
13294
13398
  {
@@ -13304,9 +13408,29 @@ const __iconNode$t = [
13304
13408
  }
13305
13409
  ]
13306
13410
  ];
13307
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$t);
13411
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$v);
13308
13412
 
13309
- const __iconNode$s = [
13413
+ const __iconNode$u = [
13414
+ [
13415
+ "circle",
13416
+ {
13417
+ cx: "12",
13418
+ cy: "12",
13419
+ r: "10",
13420
+ key: "1mglay"
13421
+ }
13422
+ ],
13423
+ [
13424
+ "path",
13425
+ {
13426
+ d: "m9 12 2 2 4-4",
13427
+ key: "dzmm74"
13428
+ }
13429
+ ]
13430
+ ];
13431
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$u);
13432
+
13433
+ const __iconNode$t = [
13310
13434
  [
13311
13435
  "circle",
13312
13436
  {
@@ -13331,7 +13455,34 @@ const __iconNode$s = [
13331
13455
  }
13332
13456
  ]
13333
13457
  ];
13334
- const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$s);
13458
+ const CircleDollarSign = createLucideIcon("circle-dollar-sign", __iconNode$t);
13459
+
13460
+ const __iconNode$s = [
13461
+ [
13462
+ "circle",
13463
+ {
13464
+ cx: "12",
13465
+ cy: "12",
13466
+ r: "10",
13467
+ key: "1mglay"
13468
+ }
13469
+ ],
13470
+ [
13471
+ "path",
13472
+ {
13473
+ d: "m15 9-6 6",
13474
+ key: "1uzhvr"
13475
+ }
13476
+ ],
13477
+ [
13478
+ "path",
13479
+ {
13480
+ d: "m9 9 6 6",
13481
+ key: "z0biqf"
13482
+ }
13483
+ ]
13484
+ ];
13485
+ const CircleX = createLucideIcon("circle-x", __iconNode$s);
13335
13486
 
13336
13487
  const __iconNode$r = [
13337
13488
  [
@@ -16175,6 +16326,21 @@ const lightTheme = {
16175
16326
  border: "#fca5a5",
16176
16327
  color: "#b91c1c"
16177
16328
  },
16329
+ tagPass: {
16330
+ bg: "#dcfce7",
16331
+ border: "#86efac",
16332
+ color: "#15803d"
16333
+ },
16334
+ tagFail: {
16335
+ bg: "#fee2e2",
16336
+ border: "#fca5a5",
16337
+ color: "#b91c1c"
16338
+ },
16339
+ tagPartial: {
16340
+ bg: "#fef3c7",
16341
+ border: "#fcd34d",
16342
+ color: "#b45309"
16343
+ },
16178
16344
  tagToolLevel1: {
16179
16345
  bg: "#dcfce7",
16180
16346
  color: "#166534"
@@ -16266,6 +16432,21 @@ const lightTheme = {
16266
16432
  border: "hsla(0 84% 55% / 0.35)",
16267
16433
  color: "hsl(0 72% 40%)"
16268
16434
  },
16435
+ tagPass: {
16436
+ bg: "hsla(142 70% 42% / 0.15)",
16437
+ border: "hsla(142 70% 38% / 0.35)",
16438
+ color: "hsl(142 71% 28%)"
16439
+ },
16440
+ tagFail: {
16441
+ bg: "hsla(0 84% 60% / 0.12)",
16442
+ border: "hsla(0 84% 55% / 0.35)",
16443
+ color: "hsl(0 72% 40%)"
16444
+ },
16445
+ tagPartial: {
16446
+ bg: "hsla(38 92% 50% / 0.15)",
16447
+ border: "hsla(38 92% 45% / 0.35)",
16448
+ color: "hsl(32 81% 33%)"
16449
+ },
16269
16450
  tagToolLevel1: {
16270
16451
  bg: "hsla(142 70% 42% / 0.15)",
16271
16452
  color: "hsl(142 71% 28%)"
@@ -16334,6 +16515,21 @@ const lightTheme = {
16334
16515
  border: "hsla(0 72% 42% / 0.35)",
16335
16516
  color: "hsl(0 84% 72%)"
16336
16517
  },
16518
+ tagPass: {
16519
+ bg: "hsla(142 70% 42% / 0.22)",
16520
+ border: "hsla(142 70% 36% / 0.35)",
16521
+ color: "hsl(142 70% 72%)"
16522
+ },
16523
+ tagFail: {
16524
+ bg: "hsla(0 72% 48% / 0.18)",
16525
+ border: "hsla(0 72% 42% / 0.35)",
16526
+ color: "hsl(0 84% 72%)"
16527
+ },
16528
+ tagPartial: {
16529
+ bg: "hsla(38 92% 50% / 0.2)",
16530
+ border: "hsla(38 92% 44% / 0.35)",
16531
+ color: "hsl(43 96% 70%)"
16532
+ },
16337
16533
  tagToolLevel1: {
16338
16534
  bg: "hsla(142 70% 42% / 0.22)",
16339
16535
  color: "hsl(142 70% 72%)"
@@ -16397,6 +16593,21 @@ const darkTheme = {
16397
16593
  border: "hsl(0 72% 35%)",
16398
16594
  color: "hsl(0 84% 60%)"
16399
16595
  },
16596
+ tagPass: {
16597
+ bg: "hsl(142 70% 15%)",
16598
+ border: "hsl(142 70% 35%)",
16599
+ color: "hsl(142 70% 65%)"
16600
+ },
16601
+ tagFail: {
16602
+ bg: "hsl(0 72% 15%)",
16603
+ border: "hsl(0 72% 35%)",
16604
+ color: "hsl(0 84% 60%)"
16605
+ },
16606
+ tagPartial: {
16607
+ bg: "hsl(38 92% 15%)",
16608
+ border: "hsl(38 92% 35%)",
16609
+ color: "hsl(43 96% 62%)"
16610
+ },
16400
16611
  tagToolLevel1: {
16401
16612
  bg: "hsl(142 70% 18%)",
16402
16613
  color: "hsl(142 70% 65%)"
@@ -21965,7 +22176,7 @@ function getFontSizes(base) {
21965
22176
  }));
21966
22177
  }
21967
22178
 
21968
- var version = '6.4.5';
22179
+ var version = '6.5.0';
21969
22180
 
21970
22181
  const defaultPresetColors = {
21971
22182
  blue: '#1677FF',
@@ -22916,11 +23127,157 @@ const useResetIconStyle = (iconPrefixCls, csp)=>{
22916
23127
 
22917
23128
  const IconContext = /*#__PURE__*/ createContext({});
22918
23129
 
23130
+ const APPEND_ORDER = 'data-rc-order';
23131
+ const APPEND_PRIORITY = 'data-rc-priority';
23132
+ const MARK_KEY = 'rc-util-key';
23133
+ const containerCache = new Map();
23134
+ function canUseDom() {
23135
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
23136
+ }
23137
+ function contains(root, node) {
23138
+ if (!root || !node) {
23139
+ return false;
23140
+ }
23141
+ if (root.contains) {
23142
+ return root.contains(node);
23143
+ }
23144
+ let current = node;
23145
+ while(current){
23146
+ if (current === root) {
23147
+ return true;
23148
+ }
23149
+ current = current.parentNode;
23150
+ }
23151
+ return false;
23152
+ }
23153
+ function getMark({ mark } = {}) {
23154
+ if (mark) {
23155
+ return mark.startsWith('data-') ? mark : `data-${mark}`;
23156
+ }
23157
+ return MARK_KEY;
23158
+ }
23159
+ function getContainer(option) {
23160
+ if (option.attachTo) {
23161
+ return option.attachTo;
23162
+ }
23163
+ const head = document.querySelector('head');
23164
+ return head || document.body;
23165
+ }
23166
+ function getOrder(prepend) {
23167
+ if (prepend === 'queue') {
23168
+ return 'prependQueue';
23169
+ }
23170
+ return prepend ? 'prepend' : 'append';
23171
+ }
23172
+ function findStyles(container) {
23173
+ return Array.from((containerCache.get(container) || container).children).filter((node)=>node.tagName === 'STYLE');
23174
+ }
23175
+ function injectCSS(css, option = {}) {
23176
+ if (!canUseDom()) {
23177
+ return null;
23178
+ }
23179
+ const { csp, prepend, priority = 0 } = option;
23180
+ const mergedOrder = getOrder(prepend);
23181
+ const isPrependQueue = mergedOrder === 'prependQueue';
23182
+ const styleNode = document.createElement('style');
23183
+ styleNode.setAttribute(APPEND_ORDER, mergedOrder);
23184
+ if (isPrependQueue && priority) {
23185
+ styleNode.setAttribute(APPEND_PRIORITY, `${priority}`);
23186
+ }
23187
+ if (csp?.nonce) {
23188
+ styleNode.nonce = csp.nonce;
23189
+ }
23190
+ styleNode.innerHTML = css;
23191
+ const container = getContainer(option);
23192
+ const { firstChild } = container;
23193
+ if (prepend) {
23194
+ if (isPrependQueue) {
23195
+ const existStyle = (option.styles || findStyles(container)).filter((node)=>{
23196
+ if (![
23197
+ 'prepend',
23198
+ 'prependQueue'
23199
+ ].includes(node.getAttribute(APPEND_ORDER))) {
23200
+ return false;
23201
+ }
23202
+ const nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);
23203
+ return priority >= nodePriority;
23204
+ });
23205
+ if (existStyle.length) {
23206
+ container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
23207
+ return styleNode;
23208
+ }
23209
+ }
23210
+ container.insertBefore(styleNode, firstChild);
23211
+ } else {
23212
+ container.appendChild(styleNode);
23213
+ }
23214
+ return styleNode;
23215
+ }
23216
+ function findExistNode(key, option = {}) {
23217
+ let { styles } = option;
23218
+ styles || (styles = findStyles(getContainer(option)));
23219
+ return styles.find((node)=>node.getAttribute(getMark(option)) === key);
23220
+ }
23221
+ function syncRealContainer(container, option) {
23222
+ const cachedRealContainer = containerCache.get(container);
23223
+ if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
23224
+ const placeholderStyle = injectCSS('', option);
23225
+ if (!placeholderStyle) {
23226
+ return;
23227
+ }
23228
+ const { parentNode } = placeholderStyle;
23229
+ containerCache.set(container, parentNode);
23230
+ container.removeChild(placeholderStyle);
23231
+ }
23232
+ }
23233
+ function updateCSS(css, key, originOption = {}) {
23234
+ if (!canUseDom()) {
23235
+ return null;
23236
+ }
23237
+ const container = getContainer(originOption);
23238
+ const styles = findStyles(container);
23239
+ const option = {
23240
+ ...originOption,
23241
+ styles
23242
+ };
23243
+ syncRealContainer(container, option);
23244
+ const existNode = findExistNode(key, option);
23245
+ if (existNode) {
23246
+ if (option.csp?.nonce && existNode.nonce !== option.csp.nonce) {
23247
+ existNode.nonce = option.csp.nonce;
23248
+ }
23249
+ if (existNode.innerHTML !== css) {
23250
+ existNode.innerHTML = css;
23251
+ }
23252
+ return existNode;
23253
+ }
23254
+ const newNode = injectCSS(css, option);
23255
+ newNode?.setAttribute(getMark(option), key);
23256
+ return newNode;
23257
+ }
23258
+ function getRoot(ele) {
23259
+ return ele?.getRootNode?.();
23260
+ }
23261
+ function getShadowRoot(ele) {
23262
+ const root = getRoot(ele);
23263
+ return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : null;
23264
+ }
23265
+ const warned = {};
23266
+ function warningOnce$1(valid, message) {
23267
+ if (valid || warned[message]) {
23268
+ return;
23269
+ }
23270
+ if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
23271
+ console.error(`Warning: ${message}`);
23272
+ }
23273
+ warned[message] = true;
23274
+ }
23275
+
22919
23276
  function camelCase(input) {
22920
23277
  return input.replace(/-(.)/g, (match, g)=>g.toUpperCase());
22921
23278
  }
22922
23279
  function warning$1(valid, message) {
22923
- warning$3(valid, `[@ant-design/icons] ${message}`);
23280
+ warningOnce$1(valid, `[@ant-design/icons] ${message}`);
22924
23281
  }
22925
23282
  function isIconDefinition(target) {
22926
23283
  return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
@@ -22953,18 +23310,6 @@ function generate(node, key, rootProps) {
22953
23310
  ...rootProps
22954
23311
  }, (node.children || []).map((child, index)=>generate(child, `${key}-${node.tag}-${index}`)));
22955
23312
  }
22956
- function getSecondaryColor(primaryColor) {
22957
- // choose the second color
22958
- return generate$1(primaryColor)[0];
22959
- }
22960
- function normalizeTwoToneColors(twoToneColor) {
22961
- if (!twoToneColor) {
22962
- return [];
22963
- }
22964
- return Array.isArray(twoToneColor) ? twoToneColor : [
22965
- twoToneColor
22966
- ];
22967
- }
22968
23313
  const iconStyles = `
22969
23314
  .anticon {
22970
23315
  display: inline-flex;
@@ -23021,7 +23366,7 @@ const iconStyles = `
23021
23366
  }
23022
23367
  `;
23023
23368
  const useInsertStyles = (eleRef)=>{
23024
- const { csp, prefixCls, layer } = useContext(IconContext);
23369
+ const { csp, prefixCls, layer, zeroRuntime } = useContext(IconContext);
23025
23370
  let mergedStyleStr = iconStyles;
23026
23371
  if (prefixCls) {
23027
23372
  mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
@@ -23030,6 +23375,9 @@ const useInsertStyles = (eleRef)=>{
23030
23375
  mergedStyleStr = `@layer ${layer} {\n${mergedStyleStr}\n}`;
23031
23376
  }
23032
23377
  useEffect(()=>{
23378
+ if (zeroRuntime) {
23379
+ return;
23380
+ }
23033
23381
  const ele = eleRef.current;
23034
23382
  const shadowRoot = getShadowRoot(ele);
23035
23383
  updateCSS(mergedStyleStr, '@ant-design-icons', {
@@ -23040,43 +23388,15 @@ const useInsertStyles = (eleRef)=>{
23040
23388
  }, []);
23041
23389
  };
23042
23390
 
23043
- const twoToneColorPalette = {
23044
- primaryColor: '#333',
23045
- secondaryColor: '#E6E6E6',
23046
- calculated: false
23047
- };
23048
- function setTwoToneColors({ primaryColor, secondaryColor }) {
23049
- twoToneColorPalette.primaryColor = primaryColor;
23050
- twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);
23051
- twoToneColorPalette.calculated = !!secondaryColor;
23052
- }
23053
- function getTwoToneColors() {
23054
- return {
23055
- ...twoToneColorPalette
23056
- };
23057
- }
23058
23391
  const IconBase = (props)=>{
23059
- const { icon, className, onClick, style, primaryColor, secondaryColor, ...restProps } = props;
23392
+ const { icon, className, onClick, style, primaryColor: _primaryColor, secondaryColor: _secondaryColor, ...restProps } = props;
23060
23393
  const svgRef = React.useRef(null);
23061
- let colors = twoToneColorPalette;
23062
- if (primaryColor) {
23063
- colors = {
23064
- primaryColor,
23065
- secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
23066
- };
23067
- }
23068
23394
  useInsertStyles(svgRef);
23069
23395
  warning$1(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);
23070
23396
  if (!isIconDefinition(icon)) {
23071
23397
  return null;
23072
23398
  }
23073
- let target = icon;
23074
- if (target && typeof target.icon === 'function') {
23075
- target = {
23076
- ...target,
23077
- icon: target.icon(colors.primaryColor, colors.secondaryColor)
23078
- };
23079
- }
23399
+ const target = icon;
23080
23400
  return generate(target.icon, `svg-${target.name}`, {
23081
23401
  className,
23082
23402
  onClick,
@@ -23091,26 +23411,6 @@ const IconBase = (props)=>{
23091
23411
  });
23092
23412
  };
23093
23413
  IconBase.displayName = 'IconReact';
23094
- IconBase.getTwoToneColors = getTwoToneColors;
23095
- IconBase.setTwoToneColors = setTwoToneColors;
23096
-
23097
- function setTwoToneColor(twoToneColor) {
23098
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23099
- return IconBase.setTwoToneColors({
23100
- primaryColor,
23101
- secondaryColor
23102
- });
23103
- }
23104
- function getTwoToneColor() {
23105
- const colors = IconBase.getTwoToneColors();
23106
- if (!colors.calculated) {
23107
- return colors.primaryColor;
23108
- }
23109
- return [
23110
- colors.primaryColor,
23111
- colors.secondaryColor
23112
- ];
23113
- }
23114
23414
 
23115
23415
  function _extends$v() {
23116
23416
  _extends$v = Object.assign ? Object.assign.bind() : function(target) {
@@ -23126,15 +23426,11 @@ function _extends$v() {
23126
23426
  };
23127
23427
  return _extends$v.apply(this, arguments);
23128
23428
  }
23129
- // Initial setting
23130
- // should move it to antd main repo?
23131
- setTwoToneColor(blue.primary);
23132
- // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720
23133
23429
  const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23134
23430
  const { // affect outter <i>...</i>
23135
23431
  className, // affect inner <svg>...</svg>
23136
- icon, spin, rotate, tabIndex, onClick, // other
23137
- twoToneColor, ...restProps } = props;
23432
+ icon, spin, rotate, tabIndex, onClick, twoToneColor: _twoToneColor, // other
23433
+ ...restProps } = props;
23138
23434
  const { prefixCls = 'anticon', rootClassName } = React.useContext(IconContext);
23139
23435
  const classString = clsx(rootClassName, prefixCls, {
23140
23436
  [`${prefixCls}-${icon.name}`]: !!icon.name,
@@ -23148,7 +23444,6 @@ const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23148
23444
  msTransform: `rotate(${rotate}deg)`,
23149
23445
  transform: `rotate(${rotate}deg)`
23150
23446
  } : undefined;
23151
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23152
23447
  return /*#__PURE__*/ React.createElement("span", _extends$v({
23153
23448
  role: "img",
23154
23449
  "aria-label": icon.name
@@ -23159,13 +23454,9 @@ const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23159
23454
  className: classString
23160
23455
  }), /*#__PURE__*/ React.createElement(IconBase, {
23161
23456
  icon: icon,
23162
- primaryColor: primaryColor,
23163
- secondaryColor: secondaryColor,
23164
23457
  style: svgStyle
23165
23458
  }));
23166
23459
  });
23167
- Icon.getTwoToneColor = getTwoToneColor;
23168
- Icon.setTwoToneColor = setTwoToneColor;
23169
23460
  if (process.env.NODE_ENV !== 'production') {
23170
23461
  Icon.displayName = 'AntdIcon';
23171
23462
  }
@@ -23375,6 +23666,13 @@ const mergeStyles = (...styles)=>{
23375
23666
  const useSemanticStyles = (...styles)=>{
23376
23667
  return React.useMemo(()=>mergeStyles.apply(void 0, styles), [].concat(styles));
23377
23668
  };
23669
+ const useSemanticRootStyle = (style)=>{
23670
+ return React.useMemo(()=>style ? {
23671
+ root: style
23672
+ } : undefined, [
23673
+ style
23674
+ ]);
23675
+ };
23378
23676
  // =========================== Export ===========================
23379
23677
  const resolveStyleOrClass = (value, info)=>{
23380
23678
  return isFunction$1(value) ? value(info) : value;
@@ -23477,31 +23775,31 @@ const genBaseStyle$7 = (token)=>{
23477
23775
  paddingTop: 0,
23478
23776
  paddingBottom: 0,
23479
23777
  opacity: 0
23480
- }
23481
- },
23482
- [`${componentCls}-with-description`]: {
23483
- alignItems: 'flex-start',
23484
- padding: withDescriptionPadding,
23485
- [`${componentCls}-icon`]: {
23486
- marginInlineEnd: marginSM,
23487
- fontSize: withDescriptionIconSize,
23488
- lineHeight: 0
23489
23778
  },
23490
- [`${componentCls}-title`]: {
23491
- display: 'block',
23492
- marginBottom: marginXS,
23493
- color: colorTextHeading,
23494
- fontSize: fontSizeLG
23779
+ [`&${componentCls}-with-description`]: {
23780
+ alignItems: 'flex-start',
23781
+ padding: withDescriptionPadding,
23782
+ [`${componentCls}-icon`]: {
23783
+ marginInlineEnd: marginSM,
23784
+ fontSize: withDescriptionIconSize,
23785
+ lineHeight: 0
23786
+ },
23787
+ [`${componentCls}-title`]: {
23788
+ display: 'block',
23789
+ marginBottom: marginXS,
23790
+ color: colorTextHeading,
23791
+ fontSize: fontSizeLG
23792
+ },
23793
+ [`${componentCls}-description`]: {
23794
+ display: 'block',
23795
+ color: colorText
23796
+ }
23495
23797
  },
23496
- [`${componentCls}-description`]: {
23497
- display: 'block',
23498
- color: colorText
23798
+ [`&${componentCls}-banner`]: {
23799
+ marginBottom: 0,
23800
+ border: '0 !important',
23801
+ borderRadius: 0
23499
23802
  }
23500
- },
23501
- [`${componentCls}-banner`]: {
23502
- marginBottom: 0,
23503
- border: '0 !important',
23504
- borderRadius: 0
23505
23803
  }
23506
23804
  };
23507
23805
  };
@@ -23671,12 +23969,16 @@ const Alert$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23671
23969
  showIcon: isShowIcon,
23672
23970
  closable: isClosable
23673
23971
  };
23972
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
23973
+ const styleRoot = useSemanticRootStyle(style);
23674
23974
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
23675
23975
  contextClassNames,
23676
23976
  classNames
23677
23977
  ], [
23678
23978
  contextStyles,
23679
- styles
23979
+ contextStyleRoot,
23980
+ styles,
23981
+ styleRoot
23680
23982
  ], {
23681
23983
  props: mergedProps
23682
23984
  });
@@ -23740,8 +24042,6 @@ const Alert$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23740
24042
  className: clsx(alertCls, motionClassName),
23741
24043
  style: {
23742
24044
  ...mergedStyles.root,
23743
- ...contextStyle,
23744
- ...style,
23745
24045
  ...motionStyle
23746
24046
  },
23747
24047
  onMouseEnter: onMouseEnter,
@@ -23790,21 +24090,21 @@ function _classCallCheck(a, n) {
23790
24090
  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
23791
24091
  }
23792
24092
 
23793
- function _typeof$1(o) {
24093
+ function _typeof(o) {
23794
24094
  "@babel/helpers - typeof";
23795
- return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24095
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
23796
24096
  return typeof o;
23797
24097
  } : function(o) {
23798
24098
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
23799
- }, _typeof$1(o);
24099
+ }, _typeof(o);
23800
24100
  }
23801
24101
 
23802
24102
  function toPrimitive(t, r) {
23803
- if ("object" != _typeof$1(t) || !t) return t;
24103
+ if ("object" != _typeof(t) || !t) return t;
23804
24104
  var e = t[Symbol.toPrimitive];
23805
24105
  if (void 0 !== e) {
23806
24106
  var i = e.call(t, r);
23807
- if ("object" != _typeof$1(i)) return i;
24107
+ if ("object" != _typeof(i)) return i;
23808
24108
  throw new TypeError("@@toPrimitive must return a primitive value.");
23809
24109
  }
23810
24110
  return (String )(t);
@@ -23812,7 +24112,7 @@ function toPrimitive(t, r) {
23812
24112
 
23813
24113
  function toPropertyKey(t) {
23814
24114
  var i = toPrimitive(t, "string");
23815
- return "symbol" == _typeof$1(i) ? i : i + "";
24115
+ return "symbol" == _typeof(i) ? i : i + "";
23816
24116
  }
23817
24117
 
23818
24118
  function _defineProperties(e, r) {
@@ -23848,7 +24148,7 @@ function _assertThisInitialized(e) {
23848
24148
  }
23849
24149
 
23850
24150
  function _possibleConstructorReturn(t, e) {
23851
- if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e;
24151
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
23852
24152
  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
23853
24153
  return _assertThisInitialized(t);
23854
24154
  }
@@ -24023,71 +24323,15 @@ const locale$4 = {
24023
24323
  page_size: 'Page Size'
24024
24324
  };
24025
24325
 
24026
- var commonLocale = {
24326
+ const commonLocale = {
24027
24327
  yearFormat: 'YYYY',
24028
24328
  dayFormat: 'D',
24029
24329
  cellMeridiemFormat: 'A',
24030
24330
  monthBeforeYear: true
24031
24331
  };
24032
24332
 
24033
- function _typeof(o) {
24034
- "@babel/helpers - typeof";
24035
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24036
- return typeof o;
24037
- } : function(o) {
24038
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
24039
- }, _typeof(o);
24040
- }
24041
- function ownKeys(e, r) {
24042
- var t = Object.keys(e);
24043
- if (Object.getOwnPropertySymbols) {
24044
- var o = Object.getOwnPropertySymbols(e);
24045
- r && (o = o.filter(function(r) {
24046
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
24047
- })), t.push.apply(t, o);
24048
- }
24049
- return t;
24050
- }
24051
- function _objectSpread(e) {
24052
- for(var r = 1; r < arguments.length; r++){
24053
- var t = null != arguments[r] ? arguments[r] : {};
24054
- r % 2 ? ownKeys(Object(t), true).forEach(function(r) {
24055
- _defineProperty(e, r, t[r]);
24056
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
24057
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
24058
- });
24059
- }
24060
- return e;
24061
- }
24062
- function _defineProperty(obj, key, value) {
24063
- key = _toPropertyKey(key);
24064
- if (key in obj) {
24065
- Object.defineProperty(obj, key, {
24066
- value: value,
24067
- enumerable: true,
24068
- configurable: true,
24069
- writable: true
24070
- });
24071
- } else {
24072
- obj[key] = value;
24073
- }
24074
- return obj;
24075
- }
24076
- function _toPropertyKey(t) {
24077
- var i = _toPrimitive(t, "string");
24078
- return "symbol" == _typeof(i) ? i : String(i);
24079
- }
24080
- function _toPrimitive(t, r) {
24081
- if ("object" != _typeof(t) || !t) return t;
24082
- var e = t[Symbol.toPrimitive];
24083
- if (void 0 !== e) {
24084
- var i = e.call(t, r);
24085
- if ("object" != _typeof(i)) return i;
24086
- throw new TypeError("@@toPrimitive must return a primitive value.");
24087
- }
24088
- return ("string" === r ? String : Number)(t);
24089
- }
24090
- var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24333
+ const locale$3 = {
24334
+ ...commonLocale,
24091
24335
  locale: 'en_US',
24092
24336
  today: 'Today',
24093
24337
  now: 'Now',
@@ -24111,7 +24355,7 @@ var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24111
24355
  nextDecade: 'Next decade',
24112
24356
  previousCentury: 'Last century',
24113
24357
  nextCentury: 'Next century'
24114
- });
24358
+ };
24115
24359
 
24116
24360
  const locale$2 = {
24117
24361
  placeholder: 'Select time',
@@ -24803,11 +25047,13 @@ const ProviderChildren = (props)=>{
24803
25047
  const memoIconContextValue = React.useMemo(()=>({
24804
25048
  prefixCls: iconPrefixCls,
24805
25049
  csp,
24806
- layer: layer ? 'antd' : undefined
25050
+ layer: layer ? 'antd' : undefined,
25051
+ zeroRuntime: mergedTheme?.zeroRuntime
24807
25052
  }), [
24808
25053
  iconPrefixCls,
24809
25054
  csp,
24810
- layer
25055
+ layer,
25056
+ mergedTheme?.zeroRuntime
24811
25057
  ]);
24812
25058
  let childNode = /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(IconStyle, {
24813
25059
  iconPrefixCls: iconPrefixCls,
@@ -27680,7 +27926,7 @@ const CollapsePanel = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27680
27926
  });
27681
27927
 
27682
27928
  const genBaseStyle$6 = (token)=>{
27683
- 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;
27929
+ 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;
27684
27930
  const borderBase = `${unit(lineWidth)} ${lineType} ${colorBorder}`;
27685
27931
  return {
27686
27932
  [componentCls]: {
@@ -27775,15 +28021,14 @@ const genBaseStyle$6 = (token)=>{
27775
28021
  '&-small': {
27776
28022
  [`> ${componentCls}-item`]: {
27777
28023
  [`> ${componentCls}-header`]: {
27778
- padding: collapseHeaderPaddingSM,
27779
- paddingInlineStart: paddingXS,
28024
+ padding: headerPaddingSM,
27780
28025
  [`> ${componentCls}-expand-icon`]: {
27781
28026
  // Arrow offset
27782
28027
  marginInlineStart: token.calc(paddingSM).sub(paddingXS).equal()
27783
28028
  }
27784
28029
  },
27785
28030
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27786
- padding: paddingSM
28031
+ padding: contentPaddingSM
27787
28032
  }
27788
28033
  }
27789
28034
  },
@@ -27792,8 +28037,7 @@ const genBaseStyle$6 = (token)=>{
27792
28037
  fontSize: fontSizeLG,
27793
28038
  lineHeight: lineHeightLG,
27794
28039
  [`> ${componentCls}-header`]: {
27795
- padding: collapseHeaderPaddingLG,
27796
- paddingInlineStart: padding,
28040
+ padding: headerPaddingLG,
27797
28041
  [`> ${componentCls}-expand-icon`]: {
27798
28042
  height: fontHeightLG,
27799
28043
  // Arrow offset
@@ -27801,7 +28045,7 @@ const genBaseStyle$6 = (token)=>{
27801
28045
  }
27802
28046
  },
27803
28047
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27804
- padding: paddingLG
28048
+ padding: contentPaddingLG
27805
28049
  }
27806
28050
  }
27807
28051
  },
@@ -27890,19 +28134,24 @@ const genGhostStyle = (token)=>{
27890
28134
  }
27891
28135
  };
27892
28136
  };
27893
- const prepareComponentToken$l = (token)=>({
27894
- headerPadding: `${token.paddingSM}px ${token.padding}px`,
28137
+ const prepareComponentToken$l = (token)=>{
28138
+ const componentToken = {
28139
+ headerPadding: `${unit(token.paddingSM)} ${unit(token.padding)}`,
28140
+ headerPaddingSM: `${unit(token.paddingXS)} ${unit(token.paddingSM)} ${unit(token.paddingXS)} ${unit(token.paddingXS)}`,
28141
+ headerPaddingLG: `${unit(token.padding)} ${unit(token.paddingLG)} ${unit(token.padding)} ${unit(token.padding)}`,
27895
28142
  headerBg: token.colorFillAlter,
27896
- contentPadding: `${token.padding}px 16px`,
28143
+ contentPadding: `${unit(token.padding)} ${unit(16)}`,
27897
28144
  // Fixed Value
28145
+ contentPaddingSM: token.paddingSM,
28146
+ contentPaddingLG: token.paddingLG,
27898
28147
  contentBg: token.colorBgContainer,
27899
- borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
28148
+ borderlessContentPadding: `${unit(token.paddingXXS)} ${unit(16)} ${unit(token.padding)}`,
27900
28149
  borderlessContentBg: 'transparent'
27901
- });
28150
+ };
28151
+ return componentToken;
28152
+ };
27902
28153
  var useStyle$q = genStyleHooks('Collapse', (token)=>{
27903
28154
  const collapseToken = mergeToken(token, {
27904
- collapseHeaderPaddingSM: `${unit(token.paddingXS)} ${unit(token.paddingSM)}`,
27905
- collapseHeaderPaddingLG: `${unit(token.padding)} ${unit(token.paddingLG)}`,
27906
28155
  collapsePanelBorderRadius: token.borderRadiusLG
27907
28156
  });
27908
28157
  return [
@@ -27929,12 +28178,16 @@ const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27929
28178
  bordered,
27930
28179
  expandIconPlacement: mergedPlacement
27931
28180
  };
28181
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
28182
+ const styleRoot = useSemanticRootStyle(style);
27932
28183
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
27933
28184
  contextClassNames,
27934
28185
  classNames
27935
28186
  ], [
27936
28187
  contextStyles,
27937
- styles
28188
+ contextStyleRoot,
28189
+ styles,
28190
+ styleRoot
27938
28191
  ], {
27939
28192
  props: mergedProps
27940
28193
  });
@@ -27999,11 +28252,7 @@ const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27999
28252
  expandIcon: renderExpandIcon,
28000
28253
  prefixCls: prefixCls,
28001
28254
  className: collapseClassName,
28002
- style: {
28003
- ...mergedStyles.root,
28004
- ...contextStyle,
28005
- ...style
28006
- },
28255
+ style: mergedStyles.root,
28007
28256
  classNames: mergedClassNames,
28008
28257
  styles: mergedStyles,
28009
28258
  destroyOnHidden: destroyOnHidden ?? destroyInactivePanel
@@ -28408,12 +28657,6 @@ const genSharedButtonStyle = (token)=>{
28408
28657
  },
28409
28658
  // https://github.com/ant-design/ant-design/issues/51380
28410
28659
  [`${componentCls}-icon > svg`]: resetIcon(),
28411
- // https://github.com/ant-design/ant-design/issues/57727
28412
- [`${componentCls}-icon`]: {
28413
- display: 'inline-flex',
28414
- alignItems: 'center',
28415
- justifyContent: 'center'
28416
- },
28417
28660
  '> a': {
28418
28661
  color: 'currentColor'
28419
28662
  },
@@ -28999,12 +29242,16 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
28999
29242
  iconPlacement: mergedIconPlacement
29000
29243
  };
29001
29244
  // ========================= Style ==========================
29245
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29246
+ const styleRoot = useSemanticRootStyle(style);
29002
29247
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29003
29248
  _skipSemantic ? undefined : contextClassNames,
29004
29249
  classNames
29005
29250
  ], [
29006
29251
  _skipSemantic ? undefined : contextStyles,
29007
- styles
29252
+ contextStyleRoot,
29253
+ styles,
29254
+ styleRoot
29008
29255
  ], {
29009
29256
  props: mergedProps
29010
29257
  });
@@ -29026,11 +29273,6 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29026
29273
  [`${prefixCls}-rtl`]: direction === 'rtl',
29027
29274
  [`${prefixCls}-icon-end`]: mergedIconPlacement === 'end'
29028
29275
  }, compactItemClassnames, className, rootClassName, contextClassName, mergedClassNames.root);
29029
- const fullStyle = {
29030
- ...mergedStyles.root,
29031
- ...contextStyle,
29032
- ...style
29033
- };
29034
29276
  const iconSharedProps = {
29035
29277
  className: mergedClassNames.icon,
29036
29278
  style: mergedStyles.icon
@@ -29068,7 +29310,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29068
29310
  [`${prefixCls}-disabled`]: mergedDisabled
29069
29311
  }),
29070
29312
  href: mergedDisabled ? undefined : linkButtonRestProps.href,
29071
- style: fullStyle,
29313
+ style: mergedStyles.root,
29072
29314
  onClick: handleClick,
29073
29315
  ref: mergedRef,
29074
29316
  tabIndex: mergedDisabled ? -1 : 0,
@@ -29079,7 +29321,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29079
29321
  ...rest,
29080
29322
  type: htmlType,
29081
29323
  className: classes,
29082
- style: fullStyle,
29324
+ style: mergedStyles.root,
29083
29325
  onClick: handleClick,
29084
29326
  disabled: mergedDisabled,
29085
29327
  ref: mergedRef
@@ -29707,12 +29949,16 @@ const Skeleton = (props)=>{
29707
29949
  title,
29708
29950
  paragraph
29709
29951
  };
29952
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29953
+ const styleRoot = useSemanticRootStyle(style);
29710
29954
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29711
29955
  contextClassNames,
29712
29956
  classNames
29713
29957
  ], [
29714
29958
  contextStyles,
29715
- styles
29959
+ contextStyleRoot,
29960
+ styles,
29961
+ styleRoot
29716
29962
  ], {
29717
29963
  props: mergedProps
29718
29964
  });
@@ -29781,11 +30027,7 @@ const Skeleton = (props)=>{
29781
30027
  }, mergedClassNames.root, contextClassName, className, rootClassName, hashId, cssVarCls);
29782
30028
  return /*#__PURE__*/ React.createElement("div", {
29783
30029
  className: cls,
29784
- style: {
29785
- ...mergedStyles.root,
29786
- ...contextStyle,
29787
- ...style
29788
- }
30030
+ style: mergedStyles.root
29789
30031
  }, avatarNode, contentNode);
29790
30032
  }
29791
30033
  return children ?? null;
@@ -30271,12 +30513,16 @@ const Empty = (props)=>{
30271
30513
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
30272
30514
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
30273
30515
  const [hashId, cssVarCls] = useStyle$n(prefixCls);
30516
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
30517
+ const styleRoot = useSemanticRootStyle(style);
30274
30518
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
30275
30519
  contextClassNames,
30276
30520
  classNames
30277
30521
  ], [
30278
30522
  contextStyles,
30279
- styles
30523
+ contextStyleRoot,
30524
+ styles,
30525
+ styleRoot
30280
30526
  ], {
30281
30527
  props
30282
30528
  });
@@ -30311,11 +30557,7 @@ const Empty = (props)=>{
30311
30557
  [`${prefixCls}-normal`]: mergedImage === simpleEmptyImg,
30312
30558
  [`${prefixCls}-rtl`]: direction === 'rtl'
30313
30559
  }, className, rootClassName, mergedClassNames.root),
30314
- style: {
30315
- ...mergedStyles.root,
30316
- ...contextStyle,
30317
- ...style
30318
- },
30560
+ style: mergedStyles.root,
30319
30561
  ...restProps
30320
30562
  }, /*#__PURE__*/ React.createElement("div", {
30321
30563
  className: clsx(`${prefixCls}-image`, mergedClassNames.image),
@@ -30786,7 +31028,7 @@ const genSelectInputMultipleStyle = (token)=>{
30786
31028
  }
30787
31029
  };
30788
31030
  };
30789
- /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors = {}, warningColors = {}, patchStyle)=>{
31031
+ /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors, warningColors, patchStyle)=>{
30790
31032
  const { componentCls } = token;
30791
31033
  return {
30792
31034
  [`&${componentCls}-${variant}`]: [
@@ -30805,6 +31047,14 @@ const genSelectInputMultipleStyle = (token)=>{
30805
31047
  ]
30806
31048
  };
30807
31049
  };
31050
+ const genSelectInputFocusVisibleStyle = (token, outlineColor)=>({
31051
+ outline: `${unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
31052
+ outlineOffset: unit(token.calc(token.lineWidth).mul(-1).equal()),
31053
+ transition: [
31054
+ `outline-offset`,
31055
+ `outline`
31056
+ ].map((prop)=>`${prop} 0s`).join(', ')
31057
+ });
30808
31058
  const genSelectInputStyle = (token)=>{
30809
31059
  const { componentCls, fontHeight, controlHeight, fontSizeIcon, showArrowPaddingInlineEnd, iconCls, antCls, max, calc } = token;
30810
31060
  const [varName, varRef] = genCssVar(antCls, 'select');
@@ -30980,20 +31230,31 @@ const genSelectInputStyle = (token)=>{
30980
31230
  },
30981
31231
  '&-has-search-value': {
30982
31232
  color: 'transparent',
30983
- [`> :not(${componentCls}-input)`]: {
31233
+ [`> *:not(${componentCls}-input)`]: {
30984
31234
  opacity: 0
30985
31235
  }
30986
31236
  },
30987
31237
  // >>> Value
30988
31238
  '&-value': {
30989
31239
  transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,
30990
- zIndex: 1
31240
+ zIndex: 1,
31241
+ opacity: 1
30991
31242
  }
30992
31243
  },
31244
+ // Dim the selected content while the dropdown is open. Shared by all select-like
31245
+ // components (Select / Cascader / TreeSelect) since they render through the same
31246
+ // `content` structure.
30993
31247
  [`&${componentCls}-open ${componentCls}-content`]: {
30994
- color: token.colorTextPlaceholder,
31248
+ '&-has-value': {
31249
+ opacity: 0.25
31250
+ },
30995
31251
  '&-has-search-value': {
30996
- color: 'transparent'
31252
+ opacity: 1,
31253
+ transition: `opacity ${token.motionDurationMid} ${token.motionEaseInOut}`,
31254
+ color: 'transparent',
31255
+ [`> *:not(${componentCls}-input)`]: {
31256
+ opacity: 0
31257
+ }
30997
31258
  }
30998
31259
  }
30999
31260
  }
@@ -31060,6 +31321,10 @@ const genSelectInputStyle = (token)=>{
31060
31321
  borderActive: 'transparent',
31061
31322
  borderOutline: 'transparent',
31062
31323
  background: 'transparent'
31324
+ }, {}, {}, {
31325
+ [`&:not(${componentCls}-disabled):has(input:focus-visible), &:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.activeBorderColor),
31326
+ [`&${componentCls}-status-error:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-error:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorError),
31327
+ [`&${componentCls}-status-warning:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-warning:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorWarning)
31063
31328
  }),
31064
31329
  // Underlined
31065
31330
  genSelectInputVariantStyle(token, 'underlined', {
@@ -31503,12 +31768,16 @@ const InternalSelect = (props, ref)=>{
31503
31768
  disabled: mergedDisabled,
31504
31769
  size: mergedSize
31505
31770
  };
31771
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
31772
+ const styleRoot = useSemanticRootStyle(style);
31506
31773
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
31507
31774
  contextClassNames,
31508
31775
  classNames
31509
31776
  ], [
31510
31777
  contextStyles,
31511
- styles
31778
+ contextStyleRoot,
31779
+ styles,
31780
+ styleRoot
31512
31781
  ], {
31513
31782
  props: mergedProps
31514
31783
  }, {
@@ -31568,11 +31837,7 @@ const InternalSelect = (props, ref)=>{
31568
31837
  styles: mergedStyles,
31569
31838
  showSearch: mergedShowSearch,
31570
31839
  ...selectProps,
31571
- style: {
31572
- ...mergedStyles.root,
31573
- ...contextStyle,
31574
- ...style
31575
- },
31840
+ style: mergedStyles.root,
31576
31841
  popupMatchSelectWidth: mergedPopupMatchSelectWidth,
31577
31842
  transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),
31578
31843
  builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
@@ -31834,21 +32099,10 @@ function getArrowOffsetToken(options) {
31834
32099
  arrowOffsetVertical
31835
32100
  };
31836
32101
  }
31837
- function isInject(valid, code) {
31838
- if (!valid) {
31839
- return {};
31840
- }
31841
- return code;
31842
- }
31843
32102
  const getArrowStyle = (token, colorBg, options)=>{
31844
32103
  const { componentCls, boxShadowPopoverArrow, arrowOffsetVertical, arrowOffsetHorizontal, antCls } = token;
31845
32104
  const [varName] = genCssVar(antCls, 'tooltip');
31846
- const { arrowDistance = 0, arrowPlacement = {
31847
- left: true,
31848
- right: true,
31849
- top: true,
31850
- bottom: true
31851
- }, arrowShadow = true } = options || {};
32105
+ const { arrowDistance = 0, arrowShadow = true } = options || {};
31852
32106
  return {
31853
32107
  [componentCls]: {
31854
32108
  // ============================ Basic ============================
@@ -31867,131 +32121,123 @@ const getArrowStyle = (token, colorBg, options)=>{
31867
32121
  // ========================== Placement ==========================
31868
32122
  // Here handle the arrow position and rotate stuff
31869
32123
  // >>>>> Top
31870
- ...isInject(!!arrowPlacement.top, {
31871
- [[
31872
- `&-placement-top > ${componentCls}-arrow`,
31873
- `&-placement-topLeft > ${componentCls}-arrow`,
31874
- `&-placement-topRight > ${componentCls}-arrow`
31875
- ].join(',')]: {
31876
- bottom: arrowDistance,
31877
- transform: 'translateY(100%) rotate(180deg)'
32124
+ [[
32125
+ `&-placement-top > ${componentCls}-arrow`,
32126
+ `&-placement-topLeft > ${componentCls}-arrow`,
32127
+ `&-placement-topRight > ${componentCls}-arrow`
32128
+ ].join(',')]: {
32129
+ bottom: arrowDistance,
32130
+ transform: 'translateY(100%) rotate(180deg)'
32131
+ },
32132
+ [`&-placement-top > ${componentCls}-arrow`]: {
32133
+ left: {
32134
+ _skip_check_: true,
32135
+ value: '50%'
31878
32136
  },
31879
- [`&-placement-top > ${componentCls}-arrow`]: {
32137
+ transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
32138
+ },
32139
+ '&-placement-topLeft': {
32140
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32141
+ [`> ${componentCls}-arrow`]: {
31880
32142
  left: {
31881
32143
  _skip_check_: true,
31882
- value: '50%'
31883
- },
31884
- transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
31885
- },
31886
- '&-placement-topLeft': {
31887
- [varName('arrow-offset-x')]: arrowOffsetHorizontal,
31888
- [`> ${componentCls}-arrow`]: {
31889
- left: {
31890
- _skip_check_: true,
31891
- value: arrowOffsetHorizontal
31892
- }
32144
+ value: arrowOffsetHorizontal
31893
32145
  }
31894
- },
31895
- '&-placement-topRight': {
31896
- [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
31897
- [`> ${componentCls}-arrow`]: {
31898
- right: {
31899
- _skip_check_: true,
31900
- value: arrowOffsetHorizontal
31901
- }
32146
+ }
32147
+ },
32148
+ '&-placement-topRight': {
32149
+ [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
32150
+ [`> ${componentCls}-arrow`]: {
32151
+ right: {
32152
+ _skip_check_: true,
32153
+ value: arrowOffsetHorizontal
31902
32154
  }
31903
32155
  }
31904
- }),
32156
+ },
31905
32157
  // >>>>> Bottom
31906
- ...isInject(!!arrowPlacement.bottom, {
31907
- [[
31908
- `&-placement-bottom > ${componentCls}-arrow`,
31909
- `&-placement-bottomLeft > ${componentCls}-arrow`,
31910
- `&-placement-bottomRight > ${componentCls}-arrow`
31911
- ].join(',')]: {
31912
- top: arrowDistance,
31913
- transform: `translateY(-100%)`
32158
+ [[
32159
+ `&-placement-bottom > ${componentCls}-arrow`,
32160
+ `&-placement-bottomLeft > ${componentCls}-arrow`,
32161
+ `&-placement-bottomRight > ${componentCls}-arrow`
32162
+ ].join(',')]: {
32163
+ top: arrowDistance,
32164
+ transform: `translateY(-100%)`
32165
+ },
32166
+ [`&-placement-bottom > ${componentCls}-arrow`]: {
32167
+ left: {
32168
+ _skip_check_: true,
32169
+ value: '50%'
31914
32170
  },
31915
- [`&-placement-bottom > ${componentCls}-arrow`]: {
32171
+ transform: `translateX(-50%) translateY(-100%)`
32172
+ },
32173
+ '&-placement-bottomLeft': {
32174
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32175
+ [`> ${componentCls}-arrow`]: {
31916
32176
  left: {
31917
32177
  _skip_check_: true,
31918
- value: '50%'
31919
- },
31920
- transform: `translateX(-50%) translateY(-100%)`
31921
- },
31922
- '&-placement-bottomLeft': {
31923
- [varName('arrow-offset-x')]: arrowOffsetHorizontal,
31924
- [`> ${componentCls}-arrow`]: {
31925
- left: {
31926
- _skip_check_: true,
31927
- value: arrowOffsetHorizontal
31928
- }
31929
- }
31930
- },
31931
- '&-placement-bottomRight': {
31932
- [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
31933
- [`> ${componentCls}-arrow`]: {
31934
- right: {
31935
- _skip_check_: true,
31936
- value: arrowOffsetHorizontal
31937
- }
32178
+ value: arrowOffsetHorizontal
31938
32179
  }
31939
32180
  }
31940
- }),
31941
- // >>>>> Left
31942
- ...isInject(!!arrowPlacement.left, {
31943
- [[
31944
- `&-placement-left > ${componentCls}-arrow`,
31945
- `&-placement-leftTop > ${componentCls}-arrow`,
31946
- `&-placement-leftBottom > ${componentCls}-arrow`
31947
- ].join(',')]: {
32181
+ },
32182
+ '&-placement-bottomRight': {
32183
+ [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
32184
+ [`> ${componentCls}-arrow`]: {
31948
32185
  right: {
31949
32186
  _skip_check_: true,
31950
- value: arrowDistance
31951
- },
31952
- transform: 'translateX(100%) rotate(90deg)'
31953
- },
31954
- [`&-placement-left > ${componentCls}-arrow`]: {
31955
- top: {
31956
- _skip_check_: true,
31957
- value: '50%'
31958
- },
31959
- transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32187
+ value: arrowOffsetHorizontal
32188
+ }
32189
+ }
32190
+ },
32191
+ // >>>>> Left
32192
+ [[
32193
+ `&-placement-left > ${componentCls}-arrow`,
32194
+ `&-placement-leftTop > ${componentCls}-arrow`,
32195
+ `&-placement-leftBottom > ${componentCls}-arrow`
32196
+ ].join(',')]: {
32197
+ right: {
32198
+ _skip_check_: true,
32199
+ value: arrowDistance
31960
32200
  },
31961
- [`&-placement-leftTop > ${componentCls}-arrow`]: {
31962
- top: arrowOffsetVertical
32201
+ transform: 'translateX(100%) rotate(90deg)'
32202
+ },
32203
+ [`&-placement-left > ${componentCls}-arrow`]: {
32204
+ top: {
32205
+ _skip_check_: true,
32206
+ value: '50%'
31963
32207
  },
31964
- [`&-placement-leftBottom > ${componentCls}-arrow`]: {
31965
- bottom: arrowOffsetVertical
31966
- }
31967
- }),
32208
+ transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32209
+ },
32210
+ [`&-placement-leftTop > ${componentCls}-arrow`]: {
32211
+ top: arrowOffsetVertical
32212
+ },
32213
+ [`&-placement-leftBottom > ${componentCls}-arrow`]: {
32214
+ bottom: arrowOffsetVertical
32215
+ },
31968
32216
  // >>>>> Right
31969
- ...isInject(!!arrowPlacement.right, {
31970
- [[
31971
- `&-placement-right > ${componentCls}-arrow`,
31972
- `&-placement-rightTop > ${componentCls}-arrow`,
31973
- `&-placement-rightBottom > ${componentCls}-arrow`
31974
- ].join(',')]: {
31975
- left: {
31976
- _skip_check_: true,
31977
- value: arrowDistance
31978
- },
31979
- transform: 'translateX(-100%) rotate(-90deg)'
31980
- },
31981
- [`&-placement-right > ${componentCls}-arrow`]: {
31982
- top: {
31983
- _skip_check_: true,
31984
- value: '50%'
31985
- },
31986
- transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32217
+ [[
32218
+ `&-placement-right > ${componentCls}-arrow`,
32219
+ `&-placement-rightTop > ${componentCls}-arrow`,
32220
+ `&-placement-rightBottom > ${componentCls}-arrow`
32221
+ ].join(',')]: {
32222
+ left: {
32223
+ _skip_check_: true,
32224
+ value: arrowDistance
31987
32225
  },
31988
- [`&-placement-rightTop > ${componentCls}-arrow`]: {
31989
- top: arrowOffsetVertical
32226
+ transform: 'translateX(-100%) rotate(-90deg)'
32227
+ },
32228
+ [`&-placement-right > ${componentCls}-arrow`]: {
32229
+ top: {
32230
+ _skip_check_: true,
32231
+ value: '50%'
31990
32232
  },
31991
- [`&-placement-rightBottom > ${componentCls}-arrow`]: {
31992
- bottom: arrowOffsetVertical
31993
- }
31994
- })
32233
+ transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32234
+ },
32235
+ [`&-placement-rightTop > ${componentCls}-arrow`]: {
32236
+ top: arrowOffsetVertical
32237
+ },
32238
+ [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32239
+ bottom: arrowOffsetVertical
32240
+ }
31995
32241
  }
31996
32242
  };
31997
32243
  };
@@ -33269,7 +33515,7 @@ const generateId = (()=>{
33269
33515
  };
33270
33516
  })();
33271
33517
  const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33272
- 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;
33518
+ 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;
33273
33519
  const { siderHook } = useContext(LayoutContext);
33274
33520
  const [collapsed, setCollapsed] = useState('collapsed' in props ? props.collapsed : defaultCollapsed);
33275
33521
  const [below, setBelow] = useState(false);
@@ -33286,6 +33532,28 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33286
33532
  }
33287
33533
  onCollapse?.(value, type);
33288
33534
  };
33535
+ const semanticProps = {
33536
+ ...props,
33537
+ collapsed,
33538
+ defaultCollapsed,
33539
+ theme,
33540
+ style,
33541
+ collapsible,
33542
+ reverseArrow,
33543
+ width,
33544
+ collapsedWidth,
33545
+ zeroWidthTriggerStyle,
33546
+ breakpoint,
33547
+ onCollapse,
33548
+ onBreakpoint
33549
+ };
33550
+ const [mergedClassNames, mergedStyles] = useMergeSemantic([
33551
+ classNames
33552
+ ], [
33553
+ styles
33554
+ ], {
33555
+ props: semanticProps
33556
+ });
33289
33557
  // =========================== Prefix ===========================
33290
33558
  const { getPrefixCls, direction } = useContext(ConfigContext);
33291
33559
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
@@ -33367,7 +33635,7 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33367
33635
  [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,
33368
33636
  [`${prefixCls}-below`]: !!below,
33369
33637
  [`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth) === 0
33370
- }, className, hashId, cssVarCls);
33638
+ }, className, mergedClassNames.root, hashId, cssVarCls);
33371
33639
  const contextValue = React.useMemo(()=>({
33372
33640
  siderCollapsed: collapsed
33373
33641
  }), [
@@ -33378,10 +33646,14 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33378
33646
  }, /*#__PURE__*/ React.createElement("aside", {
33379
33647
  className: siderCls,
33380
33648
  ...divProps,
33381
- style: divStyle,
33649
+ style: {
33650
+ ...mergedStyles.root,
33651
+ ...divStyle
33652
+ },
33382
33653
  ref: ref
33383
33654
  }, /*#__PURE__*/ React.createElement("div", {
33384
- className: `${prefixCls}-children`
33655
+ className: clsx(`${prefixCls}-children`, mergedClassNames.body),
33656
+ style: mergedStyles.body
33385
33657
  }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null));
33386
33658
  });
33387
33659
  if (process.env.NODE_ENV !== 'production') {
@@ -33488,7 +33760,11 @@ const MenuItem = (props)=>{
33488
33760
  ...firstLevel ? styles?.item : styles?.subMenu?.item,
33489
33761
  ...props.style
33490
33762
  },
33491
- title: typeof title === 'string' ? title : undefined
33763
+ title: typeof title === 'string' ? title : undefined,
33764
+ itemData: props?.itemData ?? {
33765
+ ...props,
33766
+ key: props.eventKey
33767
+ }
33492
33768
  }, cloneElement(icon, (oriProps)=>({
33493
33769
  className: clsx(`${prefixCls}-item-icon`, firstLevel ? classNames?.itemIcon : classNames?.subMenu?.itemIcon, oriProps.className),
33494
33770
  style: {
@@ -34680,12 +34956,16 @@ const InternalMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
34680
34956
  selectable: mergedSelectable,
34681
34957
  theme
34682
34958
  };
34959
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
34960
+ const styleRoot = useSemanticRootStyle(style);
34683
34961
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
34684
34962
  contextClassNames,
34685
34963
  classNames
34686
34964
  ], [
34687
34965
  contextStyles,
34688
- styles
34966
+ contextStyleRoot,
34967
+ styles,
34968
+ styleRoot
34689
34969
  ], {
34690
34970
  props: mergedProps
34691
34971
  }, {
@@ -34775,11 +35055,7 @@ const InternalMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
34775
35055
  onClick: onItemClick,
34776
35056
  ...passedProps,
34777
35057
  inlineCollapsed: mergedInlineCollapsed,
34778
- style: {
34779
- ...mergedStyles.root,
34780
- ...contextStyle,
34781
- ...style
34782
- },
35058
+ style: mergedStyles.root,
34783
35059
  className: menuClassName,
34784
35060
  prefixCls: prefixCls,
34785
35061
  direction: direction,
@@ -34914,18 +35190,39 @@ const genBaseStyle$2 = (token)=>{
34914
35190
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,
34915
35191
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {
34916
35192
  animationName: slideDownOut
35193
+ },
35194
+ [`&${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-right,
35195
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-right,
35196
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightTop,
35197
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightTop,
35198
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightBottom,
35199
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightBottom`]: {
35200
+ animationName: slideLeftIn
35201
+ },
35202
+ [`&${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-left,
35203
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-left,
35204
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftTop,
35205
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftTop,
35206
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftBottom,
35207
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftBottom`]: {
35208
+ animationName: slideRightIn
35209
+ },
35210
+ [`&${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-right,
35211
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightTop,
35212
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightBottom`]: {
35213
+ animationName: slideLeftOut
35214
+ },
35215
+ [`&${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-left,
35216
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftTop,
35217
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftBottom`]: {
35218
+ animationName: slideRightOut
34917
35219
  }
34918
35220
  }
34919
35221
  },
34920
35222
  // =============================================================
34921
35223
  // == Arrow style ==
34922
35224
  // =============================================================
34923
- getArrowStyle(token, colorBgElevated, {
34924
- arrowPlacement: {
34925
- top: true,
34926
- bottom: true
34927
- }
34928
- }),
35225
+ getArrowStyle(token, colorBgElevated),
34929
35226
  {
34930
35227
  // =============================================================
34931
35228
  // == Menu ==
@@ -35085,6 +35382,8 @@ const genBaseStyle$2 = (token)=>{
35085
35382
  [
35086
35383
  initSlideMotion(token, 'slide-up'),
35087
35384
  initSlideMotion(token, 'slide-down'),
35385
+ initSlideMotion(token, 'slide-left'),
35386
+ initSlideMotion(token, 'slide-right'),
35088
35387
  initMoveMotion(token, 'move-up'),
35089
35388
  initMoveMotion(token, 'move-down'),
35090
35389
  initZoomMotion(token, 'zoom-big')
@@ -35161,9 +35460,15 @@ const Dropdown$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
35161
35460
  if (transitionName !== undefined) {
35162
35461
  return transitionName;
35163
35462
  }
35164
- if (placement.includes('top')) {
35463
+ if (placement.startsWith('top')) {
35165
35464
  return `${rootPrefixCls}-slide-down`;
35166
35465
  }
35466
+ if (placement.startsWith('left')) {
35467
+ return `${rootPrefixCls}-slide-right`;
35468
+ }
35469
+ if (placement.startsWith('right')) {
35470
+ return `${rootPrefixCls}-slide-left`;
35471
+ }
35167
35472
  return `${rootPrefixCls}-slide-up`;
35168
35473
  }, [
35169
35474
  getPrefixCls,
@@ -35935,12 +36240,16 @@ const InternalRadio = (props, ref)=>{
35935
36240
  ...radioProps,
35936
36241
  checked: mergedChecked
35937
36242
  };
36243
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
36244
+ const styleRoot = useSemanticRootStyle(style);
35938
36245
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
35939
36246
  contextClassNames,
35940
36247
  classNames
35941
36248
  ], [
35942
36249
  contextStyles,
35943
- styles
36250
+ contextStyleRoot,
36251
+ styles,
36252
+ styleRoot
35944
36253
  ], {
35945
36254
  props: mergedProps
35946
36255
  });
@@ -35959,11 +36268,7 @@ const InternalRadio = (props, ref)=>{
35959
36268
  disabled: radioProps.disabled
35960
36269
  }, /*#__PURE__*/ React.createElement("label", {
35961
36270
  className: wrapperClassString,
35962
- style: {
35963
- ...mergedStyles.root,
35964
- ...contextStyle,
35965
- ...style
35966
- },
36271
+ style: mergedStyles.root,
35967
36272
  onMouseEnter: props.onMouseEnter,
35968
36273
  onMouseLeave: props.onMouseLeave,
35969
36274
  title: title,
@@ -36258,7 +36563,25 @@ const genOutlinedGroupStyle = (token)=>({
36258
36563
  }
36259
36564
  }
36260
36565
  });
36261
- /* ============ Borderless ============ */ const genBorderlessStyle = (token, extraStyles)=>{
36566
+ /* ============ Borderless ============ */ const borderlessFocusVisibleSelector = '&:focus-visible, &:has(input:focus-visible), &:has(textarea:focus-visible)';
36567
+ const genBorderlessFocusVisibleStyle = (token, outlineColor)=>({
36568
+ outline: `${unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
36569
+ outlineOffset: unit(token.calc(token.lineWidth).mul(-1).equal()),
36570
+ transition: [
36571
+ `outline-offset`,
36572
+ `outline`
36573
+ ].map((prop)=>`${prop} 0s`).join(', ')
36574
+ });
36575
+ const genBorderlessStatusStyle = (token, options)=>({
36576
+ '&, & input, & textarea': {
36577
+ color: options.color
36578
+ },
36579
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, options.color),
36580
+ [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {
36581
+ color: options.affixColor
36582
+ }
36583
+ });
36584
+ const genBorderlessStyle = (token, extraStyles)=>{
36262
36585
  const { componentCls } = token;
36263
36586
  return {
36264
36587
  '&-borderless': {
@@ -36276,28 +36599,21 @@ const genOutlinedGroupStyle = (token)=>({
36276
36599
  '&:focus, &:focus-within': {
36277
36600
  outline: 'none'
36278
36601
  },
36602
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, token.activeBorderColor),
36279
36603
  // >>>>> Disabled
36280
36604
  [`&${componentCls}-disabled, &[disabled]`]: {
36281
36605
  color: token.colorTextDisabled,
36282
36606
  cursor: 'not-allowed'
36283
36607
  },
36284
36608
  // >>>>> Status
36285
- [`&${componentCls}-status-error`]: {
36286
- '&, & input, & textarea': {
36287
- color: token.colorError
36288
- },
36289
- [`${componentCls}-prefix, ${componentCls}-suffix`]: {
36290
- color: token.colorErrorAffix
36291
- }
36292
- },
36293
- [`&${componentCls}-status-warning`]: {
36294
- '&, & input, & textarea': {
36295
- color: token.colorWarning
36296
- },
36297
- [`${componentCls}-prefix, ${componentCls}-suffix`]: {
36298
- color: token.colorWarningAffix
36299
- }
36300
- },
36609
+ [`&${componentCls}-status-error`]: genBorderlessStatusStyle(token, {
36610
+ color: token.colorError,
36611
+ affixColor: token.colorErrorAffix
36612
+ }),
36613
+ [`&${componentCls}-status-warning`]: genBorderlessStatusStyle(token, {
36614
+ color: token.colorWarning,
36615
+ affixColor: token.colorWarningAffix
36616
+ }),
36301
36617
  ...extraStyles
36302
36618
  }
36303
36619
  };
@@ -37424,7 +37740,7 @@ const genPositionStyle = (token)=>{
37424
37740
  top: 0
37425
37741
  }
37426
37742
  },
37427
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37743
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37428
37744
  order: 0
37429
37745
  }
37430
37746
  },
@@ -37496,7 +37812,7 @@ const genPositionStyle = (token)=>{
37496
37812
  }
37497
37813
  }
37498
37814
  },
37499
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37815
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37500
37816
  marginLeft: {
37501
37817
  _skip_check_: true,
37502
37818
  value: unit(calc(token.lineWidth).mul(-1).equal())
@@ -37505,7 +37821,7 @@ const genPositionStyle = (token)=>{
37505
37821
  _skip_check_: true,
37506
37822
  value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37507
37823
  },
37508
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37824
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37509
37825
  paddingLeft: {
37510
37826
  _skip_check_: true,
37511
37827
  value: token.paddingLG
@@ -37523,7 +37839,7 @@ const genPositionStyle = (token)=>{
37523
37839
  }
37524
37840
  }
37525
37841
  },
37526
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37842
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37527
37843
  order: 0,
37528
37844
  marginRight: {
37529
37845
  _skip_check_: true,
@@ -37533,7 +37849,7 @@ const genPositionStyle = (token)=>{
37533
37849
  _skip_check_: true,
37534
37850
  value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37535
37851
  },
37536
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37852
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37537
37853
  paddingRight: {
37538
37854
  _skip_check_: true,
37539
37855
  value: token.paddingLG
@@ -37755,7 +38071,7 @@ const genRtlStyle = (token)=>{
37755
38071
  [`> ${componentCls}-nav`]: {
37756
38072
  order: 1
37757
38073
  },
37758
- [`> ${componentCls}-content-holder`]: {
38074
+ [`> ${componentCls}-body-holder`]: {
37759
38075
  order: 0
37760
38076
  }
37761
38077
  },
@@ -37763,7 +38079,7 @@ const genRtlStyle = (token)=>{
37763
38079
  [`> ${componentCls}-nav`]: {
37764
38080
  order: 0
37765
38081
  },
37766
- [`> ${componentCls}-content-holder`]: {
38082
+ [`> ${componentCls}-body-holder`]: {
37767
38083
  order: 1
37768
38084
  }
37769
38085
  },
@@ -37899,16 +38215,16 @@ const genTabsStyle = (token)=>{
37899
38215
  // ============================= Tabs =============================
37900
38216
  ...genTabStyle(token),
37901
38217
  // =========================== TabPanes ===========================
37902
- [`${componentCls}-content`]: {
38218
+ [`${componentCls}-body`]: {
37903
38219
  position: 'relative',
37904
38220
  width: '100%'
37905
38221
  },
37906
- [`${componentCls}-content-holder`]: {
38222
+ [`${componentCls}-body-holder`]: {
37907
38223
  flex: 'auto',
37908
38224
  minWidth: 0,
37909
38225
  minHeight: 0
37910
38226
  },
37911
- [`${componentCls}-tabpane`]: {
38227
+ [`${componentCls}-content`]: {
37912
38228
  ...genFocusStyle(token),
37913
38229
  '&-hidden': {
37914
38230
  display: 'none'
@@ -38066,12 +38382,16 @@ const InternalTabs = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38066
38382
  items: mergedItems
38067
38383
  };
38068
38384
  // ========================= Style ==========================
38385
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38386
+ const styleRoot = useSemanticRootStyle(style);
38069
38387
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38070
38388
  contextClassNames,
38071
38389
  classNames
38072
38390
  ], [
38073
38391
  contextStyles,
38074
- styles
38392
+ contextStyleRoot,
38393
+ styles,
38394
+ styleRoot
38075
38395
  ], {
38076
38396
  props: mergedProps
38077
38397
  }, {
@@ -38100,11 +38420,7 @@ const InternalTabs = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38100
38420
  popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)
38101
38421
  },
38102
38422
  styles: mergedStyles,
38103
- style: {
38104
- ...mergedStyles.root,
38105
- ...contextStyle,
38106
- ...style
38107
- },
38423
+ style: mergedStyles.root,
38108
38424
  editable: editable,
38109
38425
  more: {
38110
38426
  icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/ React.createElement(RefIcon$g, null),
@@ -38498,12 +38814,16 @@ const Card$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38498
38814
  size: mergedSize,
38499
38815
  variant: variant
38500
38816
  };
38817
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38818
+ const styleRoot = useSemanticRootStyle(style);
38501
38819
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38502
38820
  contextClassNames,
38503
38821
  classNames
38504
38822
  ], [
38505
38823
  contextStyles,
38506
- styles
38824
+ contextStyleRoot,
38825
+ styles,
38826
+ styleRoot
38507
38827
  ], {
38508
38828
  props: mergedProps
38509
38829
  });
@@ -38619,9 +38939,7 @@ const Card$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38619
38939
  [`${prefixCls}-rtl`]: direction === 'rtl'
38620
38940
  }, className, rootClassName, hashId, cssVarCls, mergedClassNames.root);
38621
38941
  const mergedStyle = {
38622
- ...mergedStyles.root,
38623
- ...contextStyle,
38624
- ...style
38942
+ ...mergedStyles.root
38625
38943
  };
38626
38944
  return /*#__PURE__*/ React.createElement("div", {
38627
38945
  ref: ref,
@@ -38639,20 +38957,22 @@ const CardMeta = (props)=>{
38639
38957
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('cardMeta');
38640
38958
  const prefixCls = getPrefixCls('card', customizePrefixCls);
38641
38959
  const metaPrefixCls = `${prefixCls}-meta`;
38960
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38961
+ const styleRoot = useSemanticRootStyle(style);
38642
38962
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38643
38963
  contextClassNames,
38644
38964
  cardMetaClassNames
38645
38965
  ], [
38646
38966
  contextStyles,
38647
- styles
38967
+ contextStyleRoot,
38968
+ styles,
38969
+ styleRoot
38648
38970
  ], {
38649
38971
  props
38650
38972
  });
38651
38973
  const rootClassNames = clsx(metaPrefixCls, className, contextClassName, mergedClassNames.root);
38652
38974
  const rootStyles = {
38653
- ...contextStyle,
38654
- ...mergedStyles.root,
38655
- ...style
38975
+ ...mergedStyles.root
38656
38976
  };
38657
38977
  const avatarClassNames = clsx(`${metaPrefixCls}-avatar`, mergedClassNames.avatar);
38658
38978
  const titleClassNames = clsx(`${metaPrefixCls}-title`, mergedClassNames.title);
@@ -38969,12 +39289,16 @@ const InternalCheckbox = (props, ref)=>{
38969
39289
  disabled: mergedDisabled,
38970
39290
  checked: mergedChecked
38971
39291
  };
39292
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
39293
+ const styleRoot = useSemanticRootStyle(style);
38972
39294
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38973
39295
  contextClassNames,
38974
39296
  classNames
38975
39297
  ], [
38976
39298
  contextStyles,
38977
- styles
39299
+ contextStyleRoot,
39300
+ styles,
39301
+ styleRoot
38978
39302
  ], {
38979
39303
  props: mergedProps
38980
39304
  });
@@ -38995,11 +39319,7 @@ const InternalCheckbox = (props, ref)=>{
38995
39319
  disabled: mergedDisabled
38996
39320
  }, /*#__PURE__*/ React.createElement("label", {
38997
39321
  className: classString,
38998
- style: {
38999
- ...mergedStyles.root,
39000
- ...contextStyle,
39001
- ...style
39002
- },
39322
+ style: mergedStyles.root,
39003
39323
  onMouseEnter: onMouseEnter,
39004
39324
  onMouseLeave: onMouseLeave,
39005
39325
  onClick: onLabelClick
@@ -39839,12 +40159,16 @@ const Input = /*#__PURE__*/ forwardRef((props, ref)=>{
39839
40159
  size: mergedSize,
39840
40160
  disabled: mergedDisabled
39841
40161
  };
40162
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
40163
+ const styleRoot = useSemanticRootStyle(style);
39842
40164
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
39843
40165
  contextClassNames,
39844
40166
  classNames
39845
40167
  ], [
39846
40168
  contextStyles,
39847
- styles
40169
+ contextStyleRoot,
40170
+ styles,
40171
+ styleRoot
39848
40172
  ], {
39849
40173
  props: mergedProps
39850
40174
  });
@@ -39894,11 +40218,7 @@ const Input = /*#__PURE__*/ forwardRef((props, ref)=>{
39894
40218
  disabled: mergedDisabled,
39895
40219
  onBlur: handleBlur,
39896
40220
  onFocus: handleFocus,
39897
- style: {
39898
- ...mergedStyles.root,
39899
- ...contextStyle,
39900
- ...style
39901
- },
40221
+ style: mergedStyles.root,
39902
40222
  styles: mergedStyles,
39903
40223
  suffix: suffixNode,
39904
40224
  allowClear: mergedAllowClear,
@@ -41018,12 +41338,16 @@ const TextArea = /*#__PURE__*/ forwardRef((props, ref)=>{
41018
41338
  // ==================== Status ====================
41019
41339
  const { status: contextStatus, hasFeedback, feedbackIcon } = React.useContext(FormItemInputContext);
41020
41340
  const mergedStatus = getMergedStatus(contextStatus, customStatus);
41341
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
41342
+ const styleRoot = useSemanticRootStyle(style);
41021
41343
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
41022
41344
  contextClassNames,
41023
41345
  classNames
41024
41346
  ], [
41025
41347
  contextStyles,
41026
- styles
41348
+ contextStyleRoot,
41349
+ styles,
41350
+ styleRoot
41027
41351
  ], {
41028
41352
  props
41029
41353
  });
@@ -41080,11 +41404,7 @@ const TextArea = /*#__PURE__*/ forwardRef((props, ref)=>{
41080
41404
  return /*#__PURE__*/ React.createElement(TextArea$1, {
41081
41405
  autoComplete: contextAutoComplete,
41082
41406
  ...rest,
41083
- style: {
41084
- ...mergedStyles.root,
41085
- ...contextStyle,
41086
- ...style
41087
- },
41407
+ style: mergedStyles.root,
41088
41408
  styles: mergedStyles,
41089
41409
  disabled: mergedDisabled,
41090
41410
  allowClear: mergedAllowClear,
@@ -41628,6 +41948,14 @@ const Pagination$1 = (props)=>{
41628
41948
  if (allPages - current <= pageBufferSize) {
41629
41949
  left = allPages - pageBufferSize * 2;
41630
41950
  }
41951
+ const hasJumpPrev = !!jumpPrev && current - 1 >= pageBufferSize * 2 && current !== 1 + 2;
41952
+ const hasJumpNext = !!jumpNext && allPages - current >= pageBufferSize * 2 && current !== allPages - 2;
41953
+ if (!showLessItems && hasJumpPrev && right !== allPages) {
41954
+ left += 1;
41955
+ }
41956
+ if (!showLessItems && hasJumpNext && left !== 1) {
41957
+ right -= 1;
41958
+ }
41631
41959
  for(let i = left; i <= right; i += 1){
41632
41960
  pagerList.push(/*#__PURE__*/ React__default.createElement(Pager, _extends$d({}, pagerProps, {
41633
41961
  key: i,
@@ -41635,13 +41963,13 @@ const Pagination$1 = (props)=>{
41635
41963
  active: current === i
41636
41964
  })));
41637
41965
  }
41638
- if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
41966
+ if (hasJumpPrev) {
41639
41967
  pagerList[0] = /*#__PURE__*/ React__default.cloneElement(pagerList[0], {
41640
41968
  className: clsx(`${prefixCls}-item-after-jump-prev`, pagerList[0].props.className)
41641
41969
  });
41642
41970
  pagerList.unshift(jumpPrev);
41643
41971
  }
41644
- if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
41972
+ if (hasJumpNext) {
41645
41973
  const lastOne = pagerList[pagerList.length - 1];
41646
41974
  pagerList[pagerList.length - 1] = /*#__PURE__*/ React__default.cloneElement(lastOne, {
41647
41975
  className: clsx(`${prefixCls}-item-before-jump-next`, lastOne.props.className)
@@ -41961,7 +42289,7 @@ const genPaginationInputVariantStyle = (token)=>{
41961
42289
  };
41962
42290
  };
41963
42291
  const genPaginationJumpStyle = (token)=>{
41964
- const { componentCls, antCls } = token;
42292
+ const { componentCls, iconCls, sizeLG, antCls } = token;
41965
42293
  const [, varRef] = genCssVar(antCls, 'pagination');
41966
42294
  return {
41967
42295
  [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
@@ -41983,18 +42311,19 @@ const genPaginationJumpStyle = (token)=>{
41983
42311
  },
41984
42312
  [`${componentCls}-item-ellipsis`]: {
41985
42313
  position: 'absolute',
41986
- top: 0,
41987
- insetInlineEnd: 0,
41988
- bottom: 0,
41989
- insetInlineStart: 0,
41990
- display: 'block',
42314
+ inset: 0,
42315
+ display: 'inline-flex',
42316
+ justifyContent: 'center',
42317
+ alignItems: 'center',
41991
42318
  margin: 'auto',
41992
42319
  color: token.colorTextDisabled,
41993
- letterSpacing: token.paginationEllipsisLetterSpacing,
41994
42320
  textAlign: 'center',
41995
- textIndent: token.paginationEllipsisTextIndent,
41996
42321
  opacity: 1,
41997
- transition: `all ${token.motionDurationMid}`
42322
+ transition: `all ${token.motionDurationMid}`,
42323
+ [`${iconCls}-ellipsis > svg`]: {
42324
+ width: sizeLG,
42325
+ height: sizeLG
42326
+ }
41998
42327
  }
41999
42328
  },
42000
42329
  '&:hover': {
@@ -42424,12 +42753,16 @@ const Pagination = (props)=>{
42424
42753
  size: mergedSize
42425
42754
  };
42426
42755
  // ========================= Style ==========================
42756
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
42757
+ const styleRoot = useSemanticRootStyle(style);
42427
42758
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
42428
42759
  contextClassNames,
42429
42760
  classNames
42430
42761
  ], [
42431
42762
  contextStyles,
42432
- styles
42763
+ contextStyleRoot,
42764
+ styles,
42765
+ styleRoot
42433
42766
  ], {
42434
42767
  props: mergedProps
42435
42768
  });
@@ -42485,7 +42818,7 @@ const Pagination = (props)=>{
42485
42818
  const iconsProps = React.useMemo(()=>{
42486
42819
  const ellipsis = /*#__PURE__*/ React.createElement("span", {
42487
42820
  className: `${prefixCls}-item-ellipsis`
42488
- }, "\u2022\u2022\u2022");
42821
+ }, /*#__PURE__*/ React.createElement(RefIcon$g, null));
42489
42822
  const prevIcon = /*#__PURE__*/ React.createElement("button", {
42490
42823
  className: `${prefixCls}-item-link`,
42491
42824
  type: "button",
@@ -42534,9 +42867,7 @@ const Pagination = (props)=>{
42534
42867
  [`${prefixCls}-bordered`]: token.wireframe
42535
42868
  }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
42536
42869
  const mergedStyle = {
42537
- ...mergedStyles.root,
42538
- ...contextStyle,
42539
- ...style
42870
+ ...mergedStyles.root
42540
42871
  };
42541
42872
  return /*#__PURE__*/ React.createElement(React.Fragment, null, token.wireframe && /*#__PURE__*/ React.createElement(BorderedStyle, {
42542
42873
  prefixCls: prefixCls
@@ -43583,12 +43914,16 @@ const Statistic = /*#__PURE__*/ React.forwardRef((props, ref)=>{
43583
43914
  loading,
43584
43915
  value
43585
43916
  };
43917
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
43918
+ const styleRoot = useSemanticRootStyle(style);
43586
43919
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
43587
43920
  contextClassNames,
43588
43921
  classNames
43589
43922
  ], [
43590
43923
  contextStyles,
43591
- styles
43924
+ contextStyleRoot,
43925
+ styles,
43926
+ styleRoot
43592
43927
  ], {
43593
43928
  props: mergedProps
43594
43929
  });
@@ -43634,11 +43969,7 @@ const Statistic = /*#__PURE__*/ React.forwardRef((props, ref)=>{
43634
43969
  return /*#__PURE__*/ React.createElement("div", {
43635
43970
  ...restProps,
43636
43971
  className: rootClassNames,
43637
- style: {
43638
- ...mergedStyles.root,
43639
- ...contextStyle,
43640
- ...style
43641
- },
43972
+ style: mergedStyles.root,
43642
43973
  ref: internalRef,
43643
43974
  onMouseEnter: onMouseEnter,
43644
43975
  onMouseLeave: onMouseLeave
@@ -44129,12 +44460,16 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44129
44460
  size: mergedSize,
44130
44461
  disabled: mergedDisabled
44131
44462
  };
44463
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
44464
+ const styleRoot = useSemanticRootStyle(style);
44132
44465
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
44133
44466
  contextClassNames,
44134
44467
  classNames
44135
44468
  ], [
44136
44469
  contextStyles,
44137
- styles
44470
+ contextStyleRoot,
44471
+ styles,
44472
+ styleRoot
44138
44473
  ], {
44139
44474
  props: mergedProps
44140
44475
  });
@@ -44149,11 +44484,6 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44149
44484
  [`${prefixCls}-loading`]: loading,
44150
44485
  [`${prefixCls}-rtl`]: direction === 'rtl'
44151
44486
  }, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
44152
- const mergedStyle = {
44153
- ...mergedStyles.root,
44154
- ...contextStyle,
44155
- ...style
44156
- };
44157
44487
  const changeHandler = (...args)=>{
44158
44488
  setChecked(args[0]);
44159
44489
  onChange?.(...args);
@@ -44169,7 +44499,7 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44169
44499
  onChange: changeHandler,
44170
44500
  prefixCls: prefixCls,
44171
44501
  className: classes,
44172
- style: mergedStyle,
44502
+ style: mergedStyles.root,
44173
44503
  disabled: mergedDisabled,
44174
44504
  ref: ref,
44175
44505
  loadingIcon: loadingIcon
@@ -44569,8 +44899,10 @@ const useSelection = (config, rowSelection)=>{
44569
44899
  const key = getRowKey(record, index);
44570
44900
  const checked = keySet.has(key);
44571
44901
  const checkboxProps = checkboxPropsMap.get(key);
44902
+ const defaultAriaLabel = `Select row ${index + 1}`;
44572
44903
  return {
44573
44904
  node: /*#__PURE__*/ React.createElement(Radio, {
44905
+ "aria-label": defaultAriaLabel,
44574
44906
  ...checkboxProps,
44575
44907
  checked: checked,
44576
44908
  onClick: (e)=>{
@@ -44602,9 +44934,11 @@ const useSelection = (config, rowSelection)=>{
44602
44934
  } else {
44603
44935
  mergedIndeterminate = checkboxProps?.indeterminate ?? indeterminate;
44604
44936
  }
44937
+ const defaultAriaLabel = checked ? `Row ${index + 1} selected` : `Select row ${index + 1}`;
44605
44938
  // Record checked
44606
44939
  return {
44607
44940
  node: /*#__PURE__*/ React.createElement(Checkbox, {
44941
+ "aria-label": defaultAriaLabel,
44608
44942
  ...checkboxProps,
44609
44943
  indeterminate: mergedIndeterminate,
44610
44944
  checked: checked,
@@ -46874,8 +47208,13 @@ const getSortData = (data, sortStates, childrenColumnName)=>{
46874
47208
  });
46875
47209
  };
46876
47210
  const useFilterSorter = (props)=>{
46877
- const { prefixCls, mergedColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
46878
- const [sortStates, setSortStates] = React.useState(()=>collectSortStates(mergedColumns, true));
47211
+ const { prefixCls, mergedColumns, baseColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
47212
+ // Use base (pre-responsive) columns to seed sort states so that
47213
+ // `defaultSortOrder` on a `responsive` column is honored even when the
47214
+ // column is not visible at the current breakpoint.
47215
+ // See: https://github.com/ant-design/ant-design/issues/32847
47216
+ const collectColumns = baseColumns ?? mergedColumns;
47217
+ const [sortStates, setSortStates] = React.useState(()=>collectSortStates(collectColumns, true));
46879
47218
  const getColumnKeys = (columns, pos)=>{
46880
47219
  const newKeys = [];
46881
47220
  columns.forEach((item, index)=>{
@@ -46890,11 +47229,14 @@ const useFilterSorter = (props)=>{
46890
47229
  };
46891
47230
  const mergedSorterStates = React.useMemo(()=>{
46892
47231
  let validate = true;
46893
- const collectedStates = collectSortStates(mergedColumns, false);
47232
+ // Collect controlled `sortOrder` from the full (pre-responsive) column
47233
+ // set so that a controlled `sortOrder` on a hidden responsive column
47234
+ // still applies to the sorted data.
47235
+ const collectedStates = collectSortStates(collectColumns, false);
46894
47236
  // Return if not controlled
46895
47237
  if (!collectedStates.length) {
46896
- const mergedColumnsKeys = getColumnKeys(mergedColumns);
46897
- return sortStates.filter(({ key })=>mergedColumnsKeys.includes(key));
47238
+ const collectColumnsKeys = getColumnKeys(collectColumns);
47239
+ return sortStates.filter(({ key })=>collectColumnsKeys.includes(key));
46898
47240
  }
46899
47241
  const validateStates = [];
46900
47242
  function patchStates(state) {
@@ -46927,7 +47269,7 @@ const useFilterSorter = (props)=>{
46927
47269
  });
46928
47270
  return validateStates;
46929
47271
  }, [
46930
- mergedColumns,
47272
+ collectColumns,
46931
47273
  sortStates
46932
47274
  ]);
46933
47275
  // Get render columns title required props
@@ -47036,6 +47378,10 @@ const genBorderedStyle = (token)=>{
47036
47378
  [`> ${componentCls}-container`]: {
47037
47379
  borderInlineStart: tableBorder,
47038
47380
  borderTop: tableBorder,
47381
+ [`> ${componentCls}-header${componentCls}-sticky-holder`]: {
47382
+ marginTop: calc(lineWidth).mul(-1).equal(),
47383
+ borderTop: tableBorder
47384
+ },
47039
47385
  [`> ${componentCls}-content, > ${componentCls}-header, > ${componentCls}-body, > ${componentCls}-summary`]: {
47040
47386
  '> table': {
47041
47387
  // ============================= Cell =============================
@@ -47052,8 +47398,12 @@ const genBorderedStyle = (token)=>{
47052
47398
  }
47053
47399
  },
47054
47400
  // Fixed right should provides additional border
47401
+ // Only add separator border when there are multiple fixed-right columns
47402
+ // (i.e. fix-right-first is not also fix-right-last), otherwise the
47403
+ // ::after border doubles up with the cell's own borderInlineEnd and
47404
+ // creates a spurious extra vertical line. See #56287.
47055
47405
  '> thead > tr, > tbody > tr, > tfoot > tr': {
47056
- [`> ${componentCls}-cell-fix-right-first::after`]: {
47406
+ [`> ${componentCls}-cell-fix-right-first:not(${componentCls}-cell-fix-right-last)::after`]: {
47057
47407
  borderInlineEnd: tableBorder
47058
47408
  }
47059
47409
  },
@@ -48244,12 +48594,16 @@ const InternalTable = (props, ref)=>{
48244
48594
  size: mergedSize,
48245
48595
  bordered
48246
48596
  };
48597
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
48598
+ const styleRoot = useSemanticRootStyle(style);
48247
48599
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48248
48600
  contextClassNames,
48249
48601
  classNames
48250
48602
  ], [
48251
48603
  contextStyles,
48252
- styles
48604
+ contextStyleRoot,
48605
+ styles,
48606
+ styleRoot
48253
48607
  ], {
48254
48608
  props: mergedProps
48255
48609
  }, {
@@ -48373,6 +48727,11 @@ const InternalTable = (props, ref)=>{
48373
48727
  const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useFilterSorter({
48374
48728
  prefixCls,
48375
48729
  mergedColumns,
48730
+ // Pass `baseColumns` (pre-responsive) so `defaultSortOrder` and controlled
48731
+ // `sortOrder` on a `responsive` column are still honored when the column
48732
+ // is hidden at the current breakpoint.
48733
+ // See: https://github.com/ant-design/ant-design/issues/32847
48734
+ baseColumns,
48376
48735
  onSorterChange,
48377
48736
  sortDirections: sortDirections || [
48378
48737
  'ascend',
@@ -48566,11 +48925,6 @@ const InternalTable = (props, ref)=>{
48566
48925
  const wrappercls = clsx(cssVarCls, rootCls, `${prefixCls}-wrapper`, contextClassName, {
48567
48926
  [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'
48568
48927
  }, className, rootClassName, mergedClassNames.root, hashId);
48569
- const mergedStyle = {
48570
- ...mergedStyles.root,
48571
- ...contextStyle,
48572
- ...style
48573
- };
48574
48928
  // ========== empty ==========
48575
48929
  const mergedEmptyNode = React.useMemo(()=>{
48576
48930
  // When dataSource is null/undefined (detected by reference equality with EMPTY_LIST),
@@ -48617,7 +48971,7 @@ const InternalTable = (props, ref)=>{
48617
48971
  return /*#__PURE__*/ React.createElement("div", {
48618
48972
  ref: rootRef,
48619
48973
  className: wrappercls,
48620
- style: mergedStyle
48974
+ style: mergedStyles.root
48621
48975
  }, /*#__PURE__*/ React.createElement(Spin, {
48622
48976
  spinning: false,
48623
48977
  ...spinProps
@@ -48904,12 +49258,16 @@ const CheckableTagGroup = /*#__PURE__*/ React__default.forwardRef((props, ref)=>
48904
49258
  const rootCls = useCSSVarCls(prefixCls);
48905
49259
  const [hashId, cssVarCls] = useStyle$1(prefixCls, rootCls);
48906
49260
  // ====================== Styles ======================
49261
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
49262
+ const styleRoot = useSemanticRootStyle(style);
48907
49263
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48908
49264
  contextClassNames,
48909
49265
  classNames
48910
49266
  ], [
48911
49267
  contextStyles,
48912
- styles
49268
+ contextStyleRoot,
49269
+ styles,
49270
+ styleRoot
48913
49271
  ], {
48914
49272
  props
48915
49273
  });
@@ -48962,11 +49320,7 @@ const CheckableTagGroup = /*#__PURE__*/ React__default.forwardRef((props, ref)=>
48962
49320
  [`${groupPrefixCls}-disabled`]: disabled,
48963
49321
  [`${groupPrefixCls}-rtl`]: direction === 'rtl'
48964
49322
  }, hashId, cssVarCls, className, mergedClassNames.root),
48965
- style: {
48966
- ...contextStyle,
48967
- ...mergedStyles.root,
48968
- ...style
48969
- },
49323
+ style: mergedStyles.root,
48970
49324
  id: id,
48971
49325
  ref: divRef
48972
49326
  }, parsedOptions.map((option)=>/*#__PURE__*/ React__default.createElement(CheckableTag, {
@@ -53132,6 +53486,28 @@ function useId(deterministicId) {
53132
53486
  return deterministicId || (id ? `radix-${id}` : "");
53133
53487
  }
53134
53488
 
53489
+ // src/use-effect-event.tsx
53490
+ var useReactEffectEvent = React[" useEffectEvent ".trim().toString()];
53491
+ var useReactInsertionEffect = React[" useInsertionEffect ".trim().toString()];
53492
+ function useEffectEvent(callback) {
53493
+ if (typeof useReactEffectEvent === "function") {
53494
+ return useReactEffectEvent(callback);
53495
+ }
53496
+ const ref = React.useRef(()=>{
53497
+ throw new Error("Cannot call an event handler while rendering.");
53498
+ });
53499
+ if (typeof useReactInsertionEffect === "function") {
53500
+ useReactInsertionEffect(()=>{
53501
+ ref.current = callback;
53502
+ });
53503
+ } else {
53504
+ useLayoutEffect2(()=>{
53505
+ ref.current = callback;
53506
+ });
53507
+ }
53508
+ return React.useMemo(()=>(...args)=>ref.current?.(...args), []);
53509
+ }
53510
+
53135
53511
  // src/use-controllable-state.tsx
53136
53512
  var useInsertionEffect = React[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
53137
53513
  function useControllableState$1({ prop, defaultProp, onChange = ()=>{}, caller }) {
@@ -53382,27 +53758,6 @@ function useCallbackRef$2(callback) {
53382
53758
  return React.useMemo(()=>(...args)=>callbackRef.current?.(...args), []);
53383
53759
  }
53384
53760
 
53385
- // src/use-escape-keydown.tsx
53386
- function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
53387
- const onEscapeKeyDown = useCallbackRef$2(onEscapeKeyDownProp);
53388
- React.useEffect(()=>{
53389
- const handleKeyDown = (event)=>{
53390
- if (event.key === "Escape") {
53391
- onEscapeKeyDown(event);
53392
- }
53393
- };
53394
- ownerDocument.addEventListener("keydown", handleKeyDown, {
53395
- capture: true
53396
- });
53397
- return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53398
- capture: true
53399
- });
53400
- }, [
53401
- onEscapeKeyDown,
53402
- ownerDocument
53403
- ]);
53404
- }
53405
-
53406
53761
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
53407
53762
  var CONTEXT_UPDATE = "dismissableLayer.update";
53408
53763
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -53425,7 +53780,7 @@ var DismissableLayer = React.forwardRef((props, forwardedRef)=>{
53425
53780
  const [node, setNode] = React.useState(null);
53426
53781
  const ownerDocument = node?.ownerDocument ?? globalThis?.document;
53427
53782
  const [, force] = React.useState({});
53428
- const composedRefs = useComposedRefs$1(forwardedRef, (node2)=>setNode(node2));
53783
+ const composedRefs = useComposedRefs$1(forwardedRef, setNode);
53429
53784
  const layers = Array.from(context.layers);
53430
53785
  const [highestLayerWithOutsidePointerEventsDisabled] = [
53431
53786
  ...context.layersWithOutsidePointerEventsDisabled
@@ -53466,15 +53821,31 @@ var DismissableLayer = React.forwardRef((props, forwardedRef)=>{
53466
53821
  onInteractOutside?.(event);
53467
53822
  if (!event.defaultPrevented) onDismiss?.();
53468
53823
  }, ownerDocument);
53469
- useEscapeKeydown((event)=>{
53470
- const isHighestLayer = index === context.layers.size - 1;
53471
- if (!isHighestLayer) return;
53824
+ const isHighestLayer = node ? index === layers.length - 1 : false;
53825
+ const handleKeyDown = useEffectEvent((event)=>{
53826
+ if (event.key !== "Escape") {
53827
+ return;
53828
+ }
53472
53829
  onEscapeKeyDown?.(event);
53473
53830
  if (!event.defaultPrevented && onDismiss) {
53474
53831
  event.preventDefault();
53475
53832
  onDismiss();
53476
53833
  }
53477
- }, ownerDocument);
53834
+ });
53835
+ React.useEffect(()=>{
53836
+ if (!isHighestLayer) {
53837
+ return;
53838
+ }
53839
+ ownerDocument.addEventListener("keydown", handleKeyDown, {
53840
+ capture: true
53841
+ });
53842
+ return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53843
+ capture: true
53844
+ });
53845
+ }, [
53846
+ ownerDocument,
53847
+ isHighestLayer
53848
+ ]);
53478
53849
  React.useEffect(()=>{
53479
53850
  if (!node) return;
53480
53851
  if (disableOutsidePointerEvents) {
@@ -53736,7 +54107,7 @@ var FocusScope = React.forwardRef((props, forwardedRef)=>{
53736
54107
  const onMountAutoFocus = useCallbackRef$2(onMountAutoFocusProp);
53737
54108
  const onUnmountAutoFocus = useCallbackRef$2(onUnmountAutoFocusProp);
53738
54109
  const lastFocusedElementRef = React.useRef(null);
53739
- const composedRefs = useComposedRefs$1(forwardedRef, (node)=>setContainer(node));
54110
+ const composedRefs = useComposedRefs$1(forwardedRef, setContainer);
53740
54111
  const focusScope = React.useRef({
53741
54112
  paused: false,
53742
54113
  pause () {
@@ -119540,7 +119911,7 @@ function mergeRefs(...refs) {
119540
119911
  var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
119541
119912
  try {
119542
119913
  if (isBrowser2) {
119543
- window.__reactRouterVersion = "7.18.0";
119914
+ window.__reactRouterVersion = "7.18.1";
119544
119915
  }
119545
119916
  } catch (e) {}
119546
119917
  var Link = React.forwardRef(function LinkWithRef({ onClick, discover = "render", prefetch = "none", relative, reloadDocument, replace: replace2, mask, state, target, to, preventScrollReset, viewTransition, defaultShouldRevalidate, ...rest }, forwardedRef) {
@@ -120409,6 +120780,25 @@ const JUDGE_REASONING_PREFIX = "JudgeReasoning/";
120409
120780
  function metricNameOf$1(agg) {
120410
120781
  return agg.metric?.name ?? agg.name?.replace(/^Aggregate\//, "") ?? "Unknown";
120411
120782
  }
120783
+ /** Category labels are human-authored, so match them case-insensitively and drop blank entries. */ function normalizeCategoryList(list) {
120784
+ return (list ?? []).map((category)=>category.trim().toLowerCase()).filter((category)=>category.length > 0);
120785
+ }
120786
+ /**
120787
+ * Resolve each category the metric declares to a status. Resolution order is fail -> pass -> partial:
120788
+ * a category named in more than one list is a malformed definition, and taking fail first means the
120789
+ * safe reading wins rather than a silent pass. Categories in none of the lists stay unclassified.
120790
+ */ function buildStatusByCategory(metric) {
120791
+ const byCategory = new Map();
120792
+ const assign = (list, status)=>{
120793
+ for (const category of normalizeCategoryList(list)){
120794
+ if (!byCategory.has(category)) byCategory.set(category, status);
120795
+ }
120796
+ };
120797
+ assign(metric?.fail_categories, "fail");
120798
+ assign(metric?.pass_categories, "pass");
120799
+ assign(metric?.partial_categories, "partial");
120800
+ return byCategory;
120801
+ }
120412
120802
  /** Collect the leaf nodes (label + node id) grouped by label. */ function groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey) {
120413
120803
  const byLabel = new Map();
120414
120804
  const seen = new Set();
@@ -120459,6 +120849,8 @@ function metricNameOf$1(agg) {
120459
120849
  const counts = agg.counts ?? {};
120460
120850
  const categories = agg.categories ?? agg.metric?.categories ?? Object.keys(counts);
120461
120851
  const byLabel = groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey);
120852
+ const statusByCategory = buildStatusByCategory(agg.metric);
120853
+ const declaresFailCategories = normalizeCategoryList(agg.metric?.fail_categories).length > 0;
120462
120854
  // Order labels by the metric's category order, then any extras found in the data.
120463
120855
  const orderedLabels = [
120464
120856
  ...categories
@@ -120471,10 +120863,13 @@ function metricNameOf$1(agg) {
120471
120863
  return {
120472
120864
  labelName,
120473
120865
  count: counts[labelName] ?? nodesForLabel.length,
120866
+ status: statusByCategory.get(labelName.trim().toLowerCase()) ?? "unclassified",
120474
120867
  nodes: nodesForLabel
120475
120868
  };
120476
120869
  });
120477
120870
  const total = labels.reduce((sum, l)=>sum + l.count, 0);
120871
+ const failureCount = labels.reduce((sum, l)=>l.status === "fail" ? sum + l.count : sum, 0);
120872
+ const verdict = !declaresFailCategories ? "notGated" : failureCount > 0 ? "failed" : "passed";
120478
120873
  return {
120479
120874
  key: agg.identifier ?? `${metricName}-${index}`,
120480
120875
  metricName,
@@ -120482,6 +120877,10 @@ function metricNameOf$1(agg) {
120482
120877
  mostCommon: agg.most_common_label ?? undefined,
120483
120878
  leastCommon: agg.least_common_label ?? undefined,
120484
120879
  total,
120880
+ scoredCount: total,
120881
+ failureCount,
120882
+ declaresFailCategories,
120883
+ verdict,
120485
120884
  labels
120486
120885
  };
120487
120886
  });
@@ -120617,6 +121016,82 @@ const NodeActions = ({ sessionId, nodeId, onAgentNodeClick, onOpenVisualizer })=
120617
121016
  }), "Visualizer")));
120618
121017
  };
120619
121018
 
121019
+ const STATUS_ICON_SIZE = 12;
121020
+ /**
121021
+ * Icon prefixed to a category's tag. Mirrors the status mapping `SessionStatusIcon` already uses
121022
+ * in sessions.tsx, so the two screens read the same. Unclassified carries none, by design: an
121023
+ * unclassified category has no verdict to state, and a neutral icon would imply one.
121024
+ */ const STATUS_ICON = {
121025
+ pass: CircleCheck,
121026
+ fail: CircleX,
121027
+ partial: Blend,
121028
+ unclassified: null
121029
+ };
121030
+ /**
121031
+ * Short word shown on the collapsed accordion row. Unclassified carries none, for the same reason
121032
+ * it carries no icon: the chip would state a verdict the category does not have.
121033
+ */ const STATUS_CHIP_LABEL = {
121034
+ pass: "Pass",
121035
+ fail: "Fail",
121036
+ partial: "Partial",
121037
+ unclassified: null
121038
+ };
121039
+ /** The neutral outlined treatment: unclassified categories, not-gated metrics, and zero counts. */ function outlinedPalette(theme) {
121040
+ return {
121041
+ bg: "transparent",
121042
+ border: theme.colors.border,
121043
+ color: theme.colors.mutedForeground
121044
+ };
121045
+ }
121046
+ function statusPalette(theme, status) {
121047
+ const outlined = outlinedPalette(theme);
121048
+ switch(status){
121049
+ case "pass":
121050
+ return {
121051
+ bg: theme.colors.tagPass?.bg ?? theme.colors.muted,
121052
+ border: theme.colors.tagPass?.border ?? theme.colors.border,
121053
+ color: theme.colors.tagPass?.color ?? theme.colors.success
121054
+ };
121055
+ case "fail":
121056
+ return {
121057
+ bg: theme.colors.tagFail?.bg ?? theme.colors.muted,
121058
+ border: theme.colors.tagFail?.border ?? theme.colors.border,
121059
+ color: theme.colors.tagFail?.color ?? theme.colors.destructive
121060
+ };
121061
+ case "partial":
121062
+ return {
121063
+ bg: theme.colors.tagPartial?.bg ?? theme.colors.muted,
121064
+ border: theme.colors.tagPartial?.border ?? theme.colors.border,
121065
+ color: theme.colors.tagPartial?.color ?? theme.colors.foreground
121066
+ };
121067
+ default:
121068
+ return outlined;
121069
+ }
121070
+ }
121071
+ /**
121072
+ * Pass rate — the share of scored runs that did *not* fail, so it reads with the ratio beside it
121073
+ * rather than against it. An exact 0%/100% only when exact, so a single failure out of two hundred
121074
+ * does not round up to a clean "100% passed".
121075
+ */ function formatPassRate(failureCount, scoredCount) {
121076
+ const exact = (scoredCount - failureCount) * 100 / scoredCount;
121077
+ const rounded = Math.round(exact);
121078
+ if (rounded === 0 && exact > 0) return "<1%";
121079
+ if (rounded === 100 && exact < 100) return ">99%";
121080
+ return `${rounded}%`;
121081
+ }
121082
+ /**
121083
+ * Whether the most/least common read-outs still say something the verdict pill has not.
121084
+ *
121085
+ * They do not when the result is total — every scored run failed, or none did — nor when every run
121086
+ * landed in one category, which makes "most" and "least" the same label. The ratio half of that
121087
+ * applies only to gated metrics: a not-gated metric has no failures *by definition*, so applying it
121088
+ * there would strip the read-outs from every not-gated card, which is the common case in production.
121089
+ */ function showsDistribution(metric) {
121090
+ const { scoredCount, failureCount, declaresFailCategories, labels } = metric;
121091
+ if (scoredCount === 0) return false;
121092
+ if (declaresFailCategories && (failureCount === 0 || failureCount === scoredCount)) return false;
121093
+ return labels.filter((label)=>label.count > 0).length > 1;
121094
+ }
120620
121095
  const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120621
121096
  const { theme } = useTheme$1();
120622
121097
  const [showReasoning, setShowReasoning] = useState(false);
@@ -120689,14 +121164,63 @@ const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120689
121164
  }
120690
121165
  }, "Reasoning · ", metricName), node.reasoning));
120691
121166
  };
121167
+ /**
121168
+ * The metric's verdict, beside its name: the status icon, then the pass ratio and rate. The ratio's
121169
+ * leading number is what did *not* fail, which folds partials in with the passes, and the percentage
121170
+ * is that same number as a share — the complement of the failure rate the notification prints.
121171
+ *
121172
+ * The verdict is carried by the icon and its colour alone; spelling it out beside a ratio that
121173
+ * already says the same thing only crowded the header. It stays in the tooltip and the accessible
121174
+ * name so nothing is lost to a reader who cannot resolve the icon.
121175
+ *
121176
+ * Renders nothing for a metric that is not gated, or that has nothing scored yet. Neither has a
121177
+ * ratio to state, and a placeholder pill standing in for the absent verdict only invited the
121178
+ * definitional zero failures of a not-gated metric to be read as an earned pass.
121179
+ */ const VerdictPill = ({ metric })=>{
121180
+ const { theme } = useTheme$1();
121181
+ const { verdict, scoredCount, failureCount } = metric;
121182
+ if (verdict === "notGated" || scoredCount === 0) return null;
121183
+ const failed = verdict === "failed";
121184
+ const palette = statusPalette(theme, failed ? "fail" : "pass");
121185
+ const VerdictIcon = failed ? CircleX : CircleCheck;
121186
+ const verdictLabel = failed ? "Failed" : "Passed";
121187
+ const rate = `${scoredCount - failureCount}/${scoredCount} · ${formatPassRate(failureCount, scoredCount)}`;
121188
+ return /*#__PURE__*/ React__default.createElement("span", {
121189
+ title: verdictLabel,
121190
+ style: {
121191
+ display: "inline-flex",
121192
+ alignItems: "center",
121193
+ gap: 6,
121194
+ padding: "3px 9px",
121195
+ borderRadius: 6,
121196
+ fontSize: 11.5,
121197
+ letterSpacing: 0.2,
121198
+ background: palette.bg,
121199
+ color: palette.color,
121200
+ border: `1px solid ${palette.border}`
121201
+ }
121202
+ }, /*#__PURE__*/ React__default.createElement(VerdictIcon, {
121203
+ size: STATUS_ICON_SIZE,
121204
+ role: "img",
121205
+ "aria-label": verdictLabel,
121206
+ style: {
121207
+ flexShrink: 0
121208
+ }
121209
+ }), rate);
121210
+ };
120692
121211
  const LabelPanelHeader = ({ label })=>{
120693
121212
  const { theme } = useTheme$1();
120694
121213
  const isEmpty = label.count === 0;
121214
+ const palette = statusPalette(theme, label.status);
121215
+ const chipLabel = STATUS_CHIP_LABEL[label.status];
121216
+ // A zero-count row keeps its status colour but reads as inactive, matching its disabled state.
121217
+ const dotColor = label.status === "unclassified" ? theme.colors.mutedForeground : palette.color;
120695
121218
  return /*#__PURE__*/ React__default.createElement("div", {
120696
121219
  style: {
120697
121220
  display: "flex",
120698
121221
  alignItems: "center",
120699
- gap: 10
121222
+ gap: 10,
121223
+ opacity: isEmpty ? 0.55 : undefined
120700
121224
  }
120701
121225
  }, /*#__PURE__*/ React__default.createElement("span", {
120702
121226
  style: {
@@ -120704,15 +121228,27 @@ const LabelPanelHeader = ({ label })=>{
120704
121228
  height: 7,
120705
121229
  borderRadius: "50%",
120706
121230
  flexShrink: 0,
120707
- background: isEmpty ? theme.colors.border : theme.colors.primary
121231
+ background: dotColor
120708
121232
  }
120709
121233
  }), /*#__PURE__*/ React__default.createElement("span", {
120710
121234
  style: {
120711
121235
  fontSize: 13,
120712
121236
  fontWeight: 600,
120713
- color: isEmpty ? theme.colors.mutedForeground : undefined
121237
+ color: palette.color
121238
+ }
121239
+ }, label.labelName), chipLabel && /*#__PURE__*/ React__default.createElement("span", {
121240
+ style: {
121241
+ fontSize: 10,
121242
+ letterSpacing: 0.8,
121243
+ textTransform: "uppercase",
121244
+ padding: "1px 6px",
121245
+ borderRadius: 4,
121246
+ flexShrink: 0,
121247
+ background: palette.bg,
121248
+ color: palette.color,
121249
+ border: `1px solid ${palette.border}`
120714
121250
  }
120715
- }, label.labelName), /*#__PURE__*/ React__default.createElement("span", {
121251
+ }, chipLabel), /*#__PURE__*/ React__default.createElement("span", {
120716
121252
  style: {
120717
121253
  marginLeft: "auto",
120718
121254
  fontSize: 12,
@@ -120779,43 +121315,22 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120779
121315
  fontSize: 15,
120780
121316
  fontWeight: 600
120781
121317
  }
120782
- }, metric.metricName), /*#__PURE__*/ React__default.createElement("div", {
120783
- style: {
120784
- display: "flex",
120785
- flexWrap: "wrap",
120786
- gap: 6,
120787
- marginLeft: 4
120788
- }
120789
- }, metric.labels.map((label)=>/*#__PURE__*/ React__default.createElement(Tag, {
120790
- key: label.labelName,
120791
- style: {
120792
- margin: 0,
120793
- borderRadius: 12,
120794
- fontSize: 12,
120795
- ...label.count > 0 ? {
120796
- background: theme.colors.tagLlminference?.bg ?? theme.colors.muted,
120797
- color: theme.colors.tagLlminference?.color ?? theme.colors.foreground,
120798
- border: `1px solid ${theme.colors.tagLlminference?.border ?? theme.colors.border}`
120799
- } : {
120800
- background: "transparent",
120801
- color: theme.colors.mutedForeground,
120802
- border: `1px solid ${theme.colors.border}`
120803
- }
120804
- }
120805
- }, label.labelName, " ", /*#__PURE__*/ React__default.createElement("strong", null, label.count)))), /*#__PURE__*/ React__default.createElement("div", {
121318
+ }, metric.metricName), /*#__PURE__*/ React__default.createElement(VerdictPill, {
121319
+ metric: metric
121320
+ }), /*#__PURE__*/ React__default.createElement("div", {
120806
121321
  style: {
120807
121322
  display: "flex",
120808
121323
  gap: 20,
120809
121324
  marginLeft: "auto",
120810
121325
  flexShrink: 0
120811
121326
  }
120812
- }, /*#__PURE__*/ React__default.createElement(Meta$1, {
121327
+ }, showsDistribution(metric) && /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(Meta$1, {
120813
121328
  label: "Most common",
120814
121329
  value: metric.mostCommon
120815
121330
  }), /*#__PURE__*/ React__default.createElement(Meta$1, {
120816
121331
  label: "Least common",
120817
121332
  value: metric.leastCommon
120818
- }), /*#__PURE__*/ React__default.createElement(Meta$1, {
121333
+ })), /*#__PURE__*/ React__default.createElement(Meta$1, {
120819
121334
  label: "Evaluations",
120820
121335
  value: String(metric.total)
120821
121336
  }))), metric.description && /*#__PURE__*/ React__default.createElement("div", {
@@ -120824,7 +121339,39 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120824
121339
  fontSize: 12,
120825
121340
  color: theme.colors.mutedForeground
120826
121341
  }
120827
- }, metric.description)), /*#__PURE__*/ React__default.createElement(Collapse$1, {
121342
+ }, metric.description), /*#__PURE__*/ React__default.createElement("div", {
121343
+ style: {
121344
+ display: "flex",
121345
+ flexWrap: "wrap",
121346
+ gap: 6,
121347
+ marginTop: 12
121348
+ }
121349
+ }, metric.labels.map((label)=>{
121350
+ const palette = statusPalette(theme, label.status);
121351
+ const StatusIcon = STATUS_ICON[label.status];
121352
+ // "Declared but never scored" stays outlined, but keeps its icon so the row still reads.
121353
+ const filled = label.count > 0 && label.status !== "unclassified";
121354
+ return /*#__PURE__*/ React__default.createElement(Tag, {
121355
+ key: label.labelName,
121356
+ style: {
121357
+ margin: 0,
121358
+ display: "inline-flex",
121359
+ alignItems: "center",
121360
+ gap: 5,
121361
+ borderRadius: 12,
121362
+ fontSize: 12,
121363
+ background: filled ? palette.bg : "transparent",
121364
+ color: filled ? palette.color : theme.colors.mutedForeground,
121365
+ border: `1px solid ${filled ? palette.border : theme.colors.border}`
121366
+ }
121367
+ }, StatusIcon && /*#__PURE__*/ React__default.createElement(StatusIcon, {
121368
+ size: STATUS_ICON_SIZE,
121369
+ "aria-hidden": true,
121370
+ style: {
121371
+ flexShrink: 0
121372
+ }
121373
+ }), /*#__PURE__*/ React__default.createElement("span", null, label.labelName, " ", /*#__PURE__*/ React__default.createElement("strong", null, label.count)));
121374
+ }))), /*#__PURE__*/ React__default.createElement(Collapse$1, {
120828
121375
  items: items,
120829
121376
  bordered: false,
120830
121377
  style: {