@railtownai/railtracks-visualizer 0.0.73 → 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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$H = [
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$H);
13036
13118
 
13037
- const __iconNode$C = [
13119
+ const __iconNode$G = [
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$G);
13054
13136
 
13055
- const __iconNode$B = [
13137
+ const __iconNode$F = [
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$F);
13158
+
13159
+ const __iconNode$E = [
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$E);
13104
13208
 
13105
- const __iconNode$A = [
13209
+ const __iconNode$D = [
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$D);
13140
13244
 
13141
- const __iconNode$z = [
13245
+ const __iconNode$C = [
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$C);
13199
13303
 
13200
- const __iconNode$y = [
13304
+ const __iconNode$B = [
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$B);
13210
13314
 
13211
- const __iconNode$x = [
13315
+ const __iconNode$A = [
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$A);
13221
13325
 
13222
- const __iconNode$w = [
13326
+ const __iconNode$z = [
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$z);
13239
13343
 
13240
- const __iconNode$v = [
13344
+ const __iconNode$y = [
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$y);
13257
13361
 
13258
- const __iconNode$u = [
13362
+ const __iconNode$x = [
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$x);
13290
13394
 
13291
- const __iconNode$t = [
13395
+ const __iconNode$w = [
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$w);
13308
13412
 
13309
- const __iconNode$s = [
13413
+ const __iconNode$v = [
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$v);
13432
+
13433
+ const __iconNode$u = [
13310
13434
  [
13311
13435
  "circle",
13312
13436
  {
@@ -13331,7 +13455,54 @@ 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$u);
13459
+
13460
+ const __iconNode$t = [
13461
+ [
13462
+ "circle",
13463
+ {
13464
+ cx: "12",
13465
+ cy: "12",
13466
+ r: "10",
13467
+ key: "1mglay"
13468
+ }
13469
+ ],
13470
+ [
13471
+ "path",
13472
+ {
13473
+ d: "M8 12h8",
13474
+ key: "1wcyev"
13475
+ }
13476
+ ]
13477
+ ];
13478
+ const CircleMinus = createLucideIcon("circle-minus", __iconNode$t);
13479
+
13480
+ const __iconNode$s = [
13481
+ [
13482
+ "circle",
13483
+ {
13484
+ cx: "12",
13485
+ cy: "12",
13486
+ r: "10",
13487
+ key: "1mglay"
13488
+ }
13489
+ ],
13490
+ [
13491
+ "path",
13492
+ {
13493
+ d: "m15 9-6 6",
13494
+ key: "1uzhvr"
13495
+ }
13496
+ ],
13497
+ [
13498
+ "path",
13499
+ {
13500
+ d: "m9 9 6 6",
13501
+ key: "z0biqf"
13502
+ }
13503
+ ]
13504
+ ];
13505
+ const CircleX = createLucideIcon("circle-x", __iconNode$s);
13335
13506
 
13336
13507
  const __iconNode$r = [
13337
13508
  [
@@ -16175,6 +16346,21 @@ const lightTheme = {
16175
16346
  border: "#fca5a5",
16176
16347
  color: "#b91c1c"
16177
16348
  },
16349
+ tagPass: {
16350
+ bg: "#dcfce7",
16351
+ border: "#86efac",
16352
+ color: "#15803d"
16353
+ },
16354
+ tagFail: {
16355
+ bg: "#fee2e2",
16356
+ border: "#fca5a5",
16357
+ color: "#b91c1c"
16358
+ },
16359
+ tagPartial: {
16360
+ bg: "#fef3c7",
16361
+ border: "#fcd34d",
16362
+ color: "#b45309"
16363
+ },
16178
16364
  tagToolLevel1: {
16179
16365
  bg: "#dcfce7",
16180
16366
  color: "#166534"
@@ -16266,6 +16452,21 @@ const lightTheme = {
16266
16452
  border: "hsla(0 84% 55% / 0.35)",
16267
16453
  color: "hsl(0 72% 40%)"
16268
16454
  },
16455
+ tagPass: {
16456
+ bg: "hsla(142 70% 42% / 0.15)",
16457
+ border: "hsla(142 70% 38% / 0.35)",
16458
+ color: "hsl(142 71% 28%)"
16459
+ },
16460
+ tagFail: {
16461
+ bg: "hsla(0 84% 60% / 0.12)",
16462
+ border: "hsla(0 84% 55% / 0.35)",
16463
+ color: "hsl(0 72% 40%)"
16464
+ },
16465
+ tagPartial: {
16466
+ bg: "hsla(38 92% 50% / 0.15)",
16467
+ border: "hsla(38 92% 45% / 0.35)",
16468
+ color: "hsl(32 81% 33%)"
16469
+ },
16269
16470
  tagToolLevel1: {
16270
16471
  bg: "hsla(142 70% 42% / 0.15)",
16271
16472
  color: "hsl(142 71% 28%)"
@@ -16334,6 +16535,21 @@ const lightTheme = {
16334
16535
  border: "hsla(0 72% 42% / 0.35)",
16335
16536
  color: "hsl(0 84% 72%)"
16336
16537
  },
16538
+ tagPass: {
16539
+ bg: "hsla(142 70% 42% / 0.22)",
16540
+ border: "hsla(142 70% 36% / 0.35)",
16541
+ color: "hsl(142 70% 72%)"
16542
+ },
16543
+ tagFail: {
16544
+ bg: "hsla(0 72% 48% / 0.18)",
16545
+ border: "hsla(0 72% 42% / 0.35)",
16546
+ color: "hsl(0 84% 72%)"
16547
+ },
16548
+ tagPartial: {
16549
+ bg: "hsla(38 92% 50% / 0.2)",
16550
+ border: "hsla(38 92% 44% / 0.35)",
16551
+ color: "hsl(43 96% 70%)"
16552
+ },
16337
16553
  tagToolLevel1: {
16338
16554
  bg: "hsla(142 70% 42% / 0.22)",
16339
16555
  color: "hsl(142 70% 72%)"
@@ -16397,6 +16613,21 @@ const darkTheme = {
16397
16613
  border: "hsl(0 72% 35%)",
16398
16614
  color: "hsl(0 84% 60%)"
16399
16615
  },
16616
+ tagPass: {
16617
+ bg: "hsl(142 70% 15%)",
16618
+ border: "hsl(142 70% 35%)",
16619
+ color: "hsl(142 70% 65%)"
16620
+ },
16621
+ tagFail: {
16622
+ bg: "hsl(0 72% 15%)",
16623
+ border: "hsl(0 72% 35%)",
16624
+ color: "hsl(0 84% 60%)"
16625
+ },
16626
+ tagPartial: {
16627
+ bg: "hsl(38 92% 15%)",
16628
+ border: "hsl(38 92% 35%)",
16629
+ color: "hsl(43 96% 62%)"
16630
+ },
16400
16631
  tagToolLevel1: {
16401
16632
  bg: "hsl(142 70% 18%)",
16402
16633
  color: "hsl(142 70% 65%)"
@@ -21965,7 +22196,7 @@ function getFontSizes(base) {
21965
22196
  }));
21966
22197
  }
21967
22198
 
21968
- var version = '6.4.5';
22199
+ var version = '6.5.0';
21969
22200
 
21970
22201
  const defaultPresetColors = {
21971
22202
  blue: '#1677FF',
@@ -22916,11 +23147,157 @@ const useResetIconStyle = (iconPrefixCls, csp)=>{
22916
23147
 
22917
23148
  const IconContext = /*#__PURE__*/ createContext({});
22918
23149
 
23150
+ const APPEND_ORDER = 'data-rc-order';
23151
+ const APPEND_PRIORITY = 'data-rc-priority';
23152
+ const MARK_KEY = 'rc-util-key';
23153
+ const containerCache = new Map();
23154
+ function canUseDom() {
23155
+ return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
23156
+ }
23157
+ function contains(root, node) {
23158
+ if (!root || !node) {
23159
+ return false;
23160
+ }
23161
+ if (root.contains) {
23162
+ return root.contains(node);
23163
+ }
23164
+ let current = node;
23165
+ while(current){
23166
+ if (current === root) {
23167
+ return true;
23168
+ }
23169
+ current = current.parentNode;
23170
+ }
23171
+ return false;
23172
+ }
23173
+ function getMark({ mark } = {}) {
23174
+ if (mark) {
23175
+ return mark.startsWith('data-') ? mark : `data-${mark}`;
23176
+ }
23177
+ return MARK_KEY;
23178
+ }
23179
+ function getContainer(option) {
23180
+ if (option.attachTo) {
23181
+ return option.attachTo;
23182
+ }
23183
+ const head = document.querySelector('head');
23184
+ return head || document.body;
23185
+ }
23186
+ function getOrder(prepend) {
23187
+ if (prepend === 'queue') {
23188
+ return 'prependQueue';
23189
+ }
23190
+ return prepend ? 'prepend' : 'append';
23191
+ }
23192
+ function findStyles(container) {
23193
+ return Array.from((containerCache.get(container) || container).children).filter((node)=>node.tagName === 'STYLE');
23194
+ }
23195
+ function injectCSS(css, option = {}) {
23196
+ if (!canUseDom()) {
23197
+ return null;
23198
+ }
23199
+ const { csp, prepend, priority = 0 } = option;
23200
+ const mergedOrder = getOrder(prepend);
23201
+ const isPrependQueue = mergedOrder === 'prependQueue';
23202
+ const styleNode = document.createElement('style');
23203
+ styleNode.setAttribute(APPEND_ORDER, mergedOrder);
23204
+ if (isPrependQueue && priority) {
23205
+ styleNode.setAttribute(APPEND_PRIORITY, `${priority}`);
23206
+ }
23207
+ if (csp?.nonce) {
23208
+ styleNode.nonce = csp.nonce;
23209
+ }
23210
+ styleNode.innerHTML = css;
23211
+ const container = getContainer(option);
23212
+ const { firstChild } = container;
23213
+ if (prepend) {
23214
+ if (isPrependQueue) {
23215
+ const existStyle = (option.styles || findStyles(container)).filter((node)=>{
23216
+ if (![
23217
+ 'prepend',
23218
+ 'prependQueue'
23219
+ ].includes(node.getAttribute(APPEND_ORDER))) {
23220
+ return false;
23221
+ }
23222
+ const nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);
23223
+ return priority >= nodePriority;
23224
+ });
23225
+ if (existStyle.length) {
23226
+ container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
23227
+ return styleNode;
23228
+ }
23229
+ }
23230
+ container.insertBefore(styleNode, firstChild);
23231
+ } else {
23232
+ container.appendChild(styleNode);
23233
+ }
23234
+ return styleNode;
23235
+ }
23236
+ function findExistNode(key, option = {}) {
23237
+ let { styles } = option;
23238
+ styles || (styles = findStyles(getContainer(option)));
23239
+ return styles.find((node)=>node.getAttribute(getMark(option)) === key);
23240
+ }
23241
+ function syncRealContainer(container, option) {
23242
+ const cachedRealContainer = containerCache.get(container);
23243
+ if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
23244
+ const placeholderStyle = injectCSS('', option);
23245
+ if (!placeholderStyle) {
23246
+ return;
23247
+ }
23248
+ const { parentNode } = placeholderStyle;
23249
+ containerCache.set(container, parentNode);
23250
+ container.removeChild(placeholderStyle);
23251
+ }
23252
+ }
23253
+ function updateCSS(css, key, originOption = {}) {
23254
+ if (!canUseDom()) {
23255
+ return null;
23256
+ }
23257
+ const container = getContainer(originOption);
23258
+ const styles = findStyles(container);
23259
+ const option = {
23260
+ ...originOption,
23261
+ styles
23262
+ };
23263
+ syncRealContainer(container, option);
23264
+ const existNode = findExistNode(key, option);
23265
+ if (existNode) {
23266
+ if (option.csp?.nonce && existNode.nonce !== option.csp.nonce) {
23267
+ existNode.nonce = option.csp.nonce;
23268
+ }
23269
+ if (existNode.innerHTML !== css) {
23270
+ existNode.innerHTML = css;
23271
+ }
23272
+ return existNode;
23273
+ }
23274
+ const newNode = injectCSS(css, option);
23275
+ newNode?.setAttribute(getMark(option), key);
23276
+ return newNode;
23277
+ }
23278
+ function getRoot(ele) {
23279
+ return ele?.getRootNode?.();
23280
+ }
23281
+ function getShadowRoot(ele) {
23282
+ const root = getRoot(ele);
23283
+ return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : null;
23284
+ }
23285
+ const warned = {};
23286
+ function warningOnce$1(valid, message) {
23287
+ if (valid || warned[message]) {
23288
+ return;
23289
+ }
23290
+ if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
23291
+ console.error(`Warning: ${message}`);
23292
+ }
23293
+ warned[message] = true;
23294
+ }
23295
+
22919
23296
  function camelCase(input) {
22920
23297
  return input.replace(/-(.)/g, (match, g)=>g.toUpperCase());
22921
23298
  }
22922
23299
  function warning$1(valid, message) {
22923
- warning$3(valid, `[@ant-design/icons] ${message}`);
23300
+ warningOnce$1(valid, `[@ant-design/icons] ${message}`);
22924
23301
  }
22925
23302
  function isIconDefinition(target) {
22926
23303
  return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
@@ -22953,18 +23330,6 @@ function generate(node, key, rootProps) {
22953
23330
  ...rootProps
22954
23331
  }, (node.children || []).map((child, index)=>generate(child, `${key}-${node.tag}-${index}`)));
22955
23332
  }
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
23333
  const iconStyles = `
22969
23334
  .anticon {
22970
23335
  display: inline-flex;
@@ -23021,7 +23386,7 @@ const iconStyles = `
23021
23386
  }
23022
23387
  `;
23023
23388
  const useInsertStyles = (eleRef)=>{
23024
- const { csp, prefixCls, layer } = useContext(IconContext);
23389
+ const { csp, prefixCls, layer, zeroRuntime } = useContext(IconContext);
23025
23390
  let mergedStyleStr = iconStyles;
23026
23391
  if (prefixCls) {
23027
23392
  mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
@@ -23030,6 +23395,9 @@ const useInsertStyles = (eleRef)=>{
23030
23395
  mergedStyleStr = `@layer ${layer} {\n${mergedStyleStr}\n}`;
23031
23396
  }
23032
23397
  useEffect(()=>{
23398
+ if (zeroRuntime) {
23399
+ return;
23400
+ }
23033
23401
  const ele = eleRef.current;
23034
23402
  const shadowRoot = getShadowRoot(ele);
23035
23403
  updateCSS(mergedStyleStr, '@ant-design-icons', {
@@ -23040,43 +23408,15 @@ const useInsertStyles = (eleRef)=>{
23040
23408
  }, []);
23041
23409
  };
23042
23410
 
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
23411
  const IconBase = (props)=>{
23059
- const { icon, className, onClick, style, primaryColor, secondaryColor, ...restProps } = props;
23412
+ const { icon, className, onClick, style, primaryColor: _primaryColor, secondaryColor: _secondaryColor, ...restProps } = props;
23060
23413
  const svgRef = React.useRef(null);
23061
- let colors = twoToneColorPalette;
23062
- if (primaryColor) {
23063
- colors = {
23064
- primaryColor,
23065
- secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
23066
- };
23067
- }
23068
23414
  useInsertStyles(svgRef);
23069
23415
  warning$1(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);
23070
23416
  if (!isIconDefinition(icon)) {
23071
23417
  return null;
23072
23418
  }
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
- }
23419
+ const target = icon;
23080
23420
  return generate(target.icon, `svg-${target.name}`, {
23081
23421
  className,
23082
23422
  onClick,
@@ -23091,26 +23431,6 @@ const IconBase = (props)=>{
23091
23431
  });
23092
23432
  };
23093
23433
  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
23434
 
23115
23435
  function _extends$v() {
23116
23436
  _extends$v = Object.assign ? Object.assign.bind() : function(target) {
@@ -23126,15 +23446,11 @@ function _extends$v() {
23126
23446
  };
23127
23447
  return _extends$v.apply(this, arguments);
23128
23448
  }
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
23449
  const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23134
23450
  const { // affect outter <i>...</i>
23135
23451
  className, // affect inner <svg>...</svg>
23136
- icon, spin, rotate, tabIndex, onClick, // other
23137
- twoToneColor, ...restProps } = props;
23452
+ icon, spin, rotate, tabIndex, onClick, twoToneColor: _twoToneColor, // other
23453
+ ...restProps } = props;
23138
23454
  const { prefixCls = 'anticon', rootClassName } = React.useContext(IconContext);
23139
23455
  const classString = clsx(rootClassName, prefixCls, {
23140
23456
  [`${prefixCls}-${icon.name}`]: !!icon.name,
@@ -23148,7 +23464,6 @@ const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23148
23464
  msTransform: `rotate(${rotate}deg)`,
23149
23465
  transform: `rotate(${rotate}deg)`
23150
23466
  } : undefined;
23151
- const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
23152
23467
  return /*#__PURE__*/ React.createElement("span", _extends$v({
23153
23468
  role: "img",
23154
23469
  "aria-label": icon.name
@@ -23159,13 +23474,9 @@ const Icon = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23159
23474
  className: classString
23160
23475
  }), /*#__PURE__*/ React.createElement(IconBase, {
23161
23476
  icon: icon,
23162
- primaryColor: primaryColor,
23163
- secondaryColor: secondaryColor,
23164
23477
  style: svgStyle
23165
23478
  }));
23166
23479
  });
23167
- Icon.getTwoToneColor = getTwoToneColor;
23168
- Icon.setTwoToneColor = setTwoToneColor;
23169
23480
  if (process.env.NODE_ENV !== 'production') {
23170
23481
  Icon.displayName = 'AntdIcon';
23171
23482
  }
@@ -23375,6 +23686,13 @@ const mergeStyles = (...styles)=>{
23375
23686
  const useSemanticStyles = (...styles)=>{
23376
23687
  return React.useMemo(()=>mergeStyles.apply(void 0, styles), [].concat(styles));
23377
23688
  };
23689
+ const useSemanticRootStyle = (style)=>{
23690
+ return React.useMemo(()=>style ? {
23691
+ root: style
23692
+ } : undefined, [
23693
+ style
23694
+ ]);
23695
+ };
23378
23696
  // =========================== Export ===========================
23379
23697
  const resolveStyleOrClass = (value, info)=>{
23380
23698
  return isFunction$1(value) ? value(info) : value;
@@ -23477,31 +23795,31 @@ const genBaseStyle$7 = (token)=>{
23477
23795
  paddingTop: 0,
23478
23796
  paddingBottom: 0,
23479
23797
  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
23798
  },
23490
- [`${componentCls}-title`]: {
23491
- display: 'block',
23492
- marginBottom: marginXS,
23493
- color: colorTextHeading,
23494
- fontSize: fontSizeLG
23799
+ [`&${componentCls}-with-description`]: {
23800
+ alignItems: 'flex-start',
23801
+ padding: withDescriptionPadding,
23802
+ [`${componentCls}-icon`]: {
23803
+ marginInlineEnd: marginSM,
23804
+ fontSize: withDescriptionIconSize,
23805
+ lineHeight: 0
23806
+ },
23807
+ [`${componentCls}-title`]: {
23808
+ display: 'block',
23809
+ marginBottom: marginXS,
23810
+ color: colorTextHeading,
23811
+ fontSize: fontSizeLG
23812
+ },
23813
+ [`${componentCls}-description`]: {
23814
+ display: 'block',
23815
+ color: colorText
23816
+ }
23495
23817
  },
23496
- [`${componentCls}-description`]: {
23497
- display: 'block',
23498
- color: colorText
23818
+ [`&${componentCls}-banner`]: {
23819
+ marginBottom: 0,
23820
+ border: '0 !important',
23821
+ borderRadius: 0
23499
23822
  }
23500
- },
23501
- [`${componentCls}-banner`]: {
23502
- marginBottom: 0,
23503
- border: '0 !important',
23504
- borderRadius: 0
23505
23823
  }
23506
23824
  };
23507
23825
  };
@@ -23671,12 +23989,16 @@ const Alert$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23671
23989
  showIcon: isShowIcon,
23672
23990
  closable: isClosable
23673
23991
  };
23992
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
23993
+ const styleRoot = useSemanticRootStyle(style);
23674
23994
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
23675
23995
  contextClassNames,
23676
23996
  classNames
23677
23997
  ], [
23678
23998
  contextStyles,
23679
- styles
23999
+ contextStyleRoot,
24000
+ styles,
24001
+ styleRoot
23680
24002
  ], {
23681
24003
  props: mergedProps
23682
24004
  });
@@ -23740,8 +24062,6 @@ const Alert$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
23740
24062
  className: clsx(alertCls, motionClassName),
23741
24063
  style: {
23742
24064
  ...mergedStyles.root,
23743
- ...contextStyle,
23744
- ...style,
23745
24065
  ...motionStyle
23746
24066
  },
23747
24067
  onMouseEnter: onMouseEnter,
@@ -23790,21 +24110,21 @@ function _classCallCheck(a, n) {
23790
24110
  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
23791
24111
  }
23792
24112
 
23793
- function _typeof$1(o) {
24113
+ function _typeof(o) {
23794
24114
  "@babel/helpers - typeof";
23795
- return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
24115
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
23796
24116
  return typeof o;
23797
24117
  } : function(o) {
23798
24118
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
23799
- }, _typeof$1(o);
24119
+ }, _typeof(o);
23800
24120
  }
23801
24121
 
23802
24122
  function toPrimitive(t, r) {
23803
- if ("object" != _typeof$1(t) || !t) return t;
24123
+ if ("object" != _typeof(t) || !t) return t;
23804
24124
  var e = t[Symbol.toPrimitive];
23805
24125
  if (void 0 !== e) {
23806
24126
  var i = e.call(t, r);
23807
- if ("object" != _typeof$1(i)) return i;
24127
+ if ("object" != _typeof(i)) return i;
23808
24128
  throw new TypeError("@@toPrimitive must return a primitive value.");
23809
24129
  }
23810
24130
  return (String )(t);
@@ -23812,7 +24132,7 @@ function toPrimitive(t, r) {
23812
24132
 
23813
24133
  function toPropertyKey(t) {
23814
24134
  var i = toPrimitive(t, "string");
23815
- return "symbol" == _typeof$1(i) ? i : i + "";
24135
+ return "symbol" == _typeof(i) ? i : i + "";
23816
24136
  }
23817
24137
 
23818
24138
  function _defineProperties(e, r) {
@@ -23848,7 +24168,7 @@ function _assertThisInitialized(e) {
23848
24168
  }
23849
24169
 
23850
24170
  function _possibleConstructorReturn(t, e) {
23851
- if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e;
24171
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
23852
24172
  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
23853
24173
  return _assertThisInitialized(t);
23854
24174
  }
@@ -24023,71 +24343,15 @@ const locale$4 = {
24023
24343
  page_size: 'Page Size'
24024
24344
  };
24025
24345
 
24026
- var commonLocale = {
24346
+ const commonLocale = {
24027
24347
  yearFormat: 'YYYY',
24028
24348
  dayFormat: 'D',
24029
24349
  cellMeridiemFormat: 'A',
24030
24350
  monthBeforeYear: true
24031
24351
  };
24032
24352
 
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), {}, {
24353
+ const locale$3 = {
24354
+ ...commonLocale,
24091
24355
  locale: 'en_US',
24092
24356
  today: 'Today',
24093
24357
  now: 'Now',
@@ -24111,7 +24375,7 @@ var locale$3 = _objectSpread(_objectSpread({}, commonLocale), {}, {
24111
24375
  nextDecade: 'Next decade',
24112
24376
  previousCentury: 'Last century',
24113
24377
  nextCentury: 'Next century'
24114
- });
24378
+ };
24115
24379
 
24116
24380
  const locale$2 = {
24117
24381
  placeholder: 'Select time',
@@ -24803,11 +25067,13 @@ const ProviderChildren = (props)=>{
24803
25067
  const memoIconContextValue = React.useMemo(()=>({
24804
25068
  prefixCls: iconPrefixCls,
24805
25069
  csp,
24806
- layer: layer ? 'antd' : undefined
25070
+ layer: layer ? 'antd' : undefined,
25071
+ zeroRuntime: mergedTheme?.zeroRuntime
24807
25072
  }), [
24808
25073
  iconPrefixCls,
24809
25074
  csp,
24810
- layer
25075
+ layer,
25076
+ mergedTheme?.zeroRuntime
24811
25077
  ]);
24812
25078
  let childNode = /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(IconStyle, {
24813
25079
  iconPrefixCls: iconPrefixCls,
@@ -27680,7 +27946,7 @@ const CollapsePanel = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27680
27946
  });
27681
27947
 
27682
27948
  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;
27949
+ 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
27950
  const borderBase = `${unit(lineWidth)} ${lineType} ${colorBorder}`;
27685
27951
  return {
27686
27952
  [componentCls]: {
@@ -27775,15 +28041,14 @@ const genBaseStyle$6 = (token)=>{
27775
28041
  '&-small': {
27776
28042
  [`> ${componentCls}-item`]: {
27777
28043
  [`> ${componentCls}-header`]: {
27778
- padding: collapseHeaderPaddingSM,
27779
- paddingInlineStart: paddingXS,
28044
+ padding: headerPaddingSM,
27780
28045
  [`> ${componentCls}-expand-icon`]: {
27781
28046
  // Arrow offset
27782
28047
  marginInlineStart: token.calc(paddingSM).sub(paddingXS).equal()
27783
28048
  }
27784
28049
  },
27785
28050
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27786
- padding: paddingSM
28051
+ padding: contentPaddingSM
27787
28052
  }
27788
28053
  }
27789
28054
  },
@@ -27792,8 +28057,7 @@ const genBaseStyle$6 = (token)=>{
27792
28057
  fontSize: fontSizeLG,
27793
28058
  lineHeight: lineHeightLG,
27794
28059
  [`> ${componentCls}-header`]: {
27795
- padding: collapseHeaderPaddingLG,
27796
- paddingInlineStart: padding,
28060
+ padding: headerPaddingLG,
27797
28061
  [`> ${componentCls}-expand-icon`]: {
27798
28062
  height: fontHeightLG,
27799
28063
  // Arrow offset
@@ -27801,7 +28065,7 @@ const genBaseStyle$6 = (token)=>{
27801
28065
  }
27802
28066
  },
27803
28067
  [`> ${componentCls}-panel > ${componentCls}-body`]: {
27804
- padding: paddingLG
28068
+ padding: contentPaddingLG
27805
28069
  }
27806
28070
  }
27807
28071
  },
@@ -27890,19 +28154,24 @@ const genGhostStyle = (token)=>{
27890
28154
  }
27891
28155
  };
27892
28156
  };
27893
- const prepareComponentToken$l = (token)=>({
27894
- headerPadding: `${token.paddingSM}px ${token.padding}px`,
28157
+ const prepareComponentToken$l = (token)=>{
28158
+ const componentToken = {
28159
+ headerPadding: `${unit(token.paddingSM)} ${unit(token.padding)}`,
28160
+ headerPaddingSM: `${unit(token.paddingXS)} ${unit(token.paddingSM)} ${unit(token.paddingXS)} ${unit(token.paddingXS)}`,
28161
+ headerPaddingLG: `${unit(token.padding)} ${unit(token.paddingLG)} ${unit(token.padding)} ${unit(token.padding)}`,
27895
28162
  headerBg: token.colorFillAlter,
27896
- contentPadding: `${token.padding}px 16px`,
28163
+ contentPadding: `${unit(token.padding)} ${unit(16)}`,
27897
28164
  // Fixed Value
28165
+ contentPaddingSM: token.paddingSM,
28166
+ contentPaddingLG: token.paddingLG,
27898
28167
  contentBg: token.colorBgContainer,
27899
- borderlessContentPadding: `${token.paddingXXS}px 16px ${token.padding}px`,
28168
+ borderlessContentPadding: `${unit(token.paddingXXS)} ${unit(16)} ${unit(token.padding)}`,
27900
28169
  borderlessContentBg: 'transparent'
27901
- });
28170
+ };
28171
+ return componentToken;
28172
+ };
27902
28173
  var useStyle$q = genStyleHooks('Collapse', (token)=>{
27903
28174
  const collapseToken = mergeToken(token, {
27904
- collapseHeaderPaddingSM: `${unit(token.paddingXS)} ${unit(token.paddingSM)}`,
27905
- collapseHeaderPaddingLG: `${unit(token.padding)} ${unit(token.paddingLG)}`,
27906
28175
  collapsePanelBorderRadius: token.borderRadiusLG
27907
28176
  });
27908
28177
  return [
@@ -27929,12 +28198,16 @@ const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27929
28198
  bordered,
27930
28199
  expandIconPlacement: mergedPlacement
27931
28200
  };
28201
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
28202
+ const styleRoot = useSemanticRootStyle(style);
27932
28203
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
27933
28204
  contextClassNames,
27934
28205
  classNames
27935
28206
  ], [
27936
28207
  contextStyles,
27937
- styles
28208
+ contextStyleRoot,
28209
+ styles,
28210
+ styleRoot
27938
28211
  ], {
27939
28212
  props: mergedProps
27940
28213
  });
@@ -27999,11 +28272,7 @@ const Collapse = /*#__PURE__*/ React.forwardRef((props, ref)=>{
27999
28272
  expandIcon: renderExpandIcon,
28000
28273
  prefixCls: prefixCls,
28001
28274
  className: collapseClassName,
28002
- style: {
28003
- ...mergedStyles.root,
28004
- ...contextStyle,
28005
- ...style
28006
- },
28275
+ style: mergedStyles.root,
28007
28276
  classNames: mergedClassNames,
28008
28277
  styles: mergedStyles,
28009
28278
  destroyOnHidden: destroyOnHidden ?? destroyInactivePanel
@@ -28408,12 +28677,6 @@ const genSharedButtonStyle = (token)=>{
28408
28677
  },
28409
28678
  // https://github.com/ant-design/ant-design/issues/51380
28410
28679
  [`${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
28680
  '> a': {
28418
28681
  color: 'currentColor'
28419
28682
  },
@@ -28999,12 +29262,16 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
28999
29262
  iconPlacement: mergedIconPlacement
29000
29263
  };
29001
29264
  // ========================= Style ==========================
29265
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29266
+ const styleRoot = useSemanticRootStyle(style);
29002
29267
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29003
29268
  _skipSemantic ? undefined : contextClassNames,
29004
29269
  classNames
29005
29270
  ], [
29006
29271
  _skipSemantic ? undefined : contextStyles,
29007
- styles
29272
+ contextStyleRoot,
29273
+ styles,
29274
+ styleRoot
29008
29275
  ], {
29009
29276
  props: mergedProps
29010
29277
  });
@@ -29026,11 +29293,6 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29026
29293
  [`${prefixCls}-rtl`]: direction === 'rtl',
29027
29294
  [`${prefixCls}-icon-end`]: mergedIconPlacement === 'end'
29028
29295
  }, compactItemClassnames, className, rootClassName, contextClassName, mergedClassNames.root);
29029
- const fullStyle = {
29030
- ...mergedStyles.root,
29031
- ...contextStyle,
29032
- ...style
29033
- };
29034
29296
  const iconSharedProps = {
29035
29297
  className: mergedClassNames.icon,
29036
29298
  style: mergedStyles.icon
@@ -29068,7 +29330,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29068
29330
  [`${prefixCls}-disabled`]: mergedDisabled
29069
29331
  }),
29070
29332
  href: mergedDisabled ? undefined : linkButtonRestProps.href,
29071
- style: fullStyle,
29333
+ style: mergedStyles.root,
29072
29334
  onClick: handleClick,
29073
29335
  ref: mergedRef,
29074
29336
  tabIndex: mergedDisabled ? -1 : 0,
@@ -29079,7 +29341,7 @@ const InternalCompoundedButton = /*#__PURE__*/ React__default.forwardRef((props,
29079
29341
  ...rest,
29080
29342
  type: htmlType,
29081
29343
  className: classes,
29082
- style: fullStyle,
29344
+ style: mergedStyles.root,
29083
29345
  onClick: handleClick,
29084
29346
  disabled: mergedDisabled,
29085
29347
  ref: mergedRef
@@ -29707,12 +29969,16 @@ const Skeleton = (props)=>{
29707
29969
  title,
29708
29970
  paragraph
29709
29971
  };
29972
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
29973
+ const styleRoot = useSemanticRootStyle(style);
29710
29974
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
29711
29975
  contextClassNames,
29712
29976
  classNames
29713
29977
  ], [
29714
29978
  contextStyles,
29715
- styles
29979
+ contextStyleRoot,
29980
+ styles,
29981
+ styleRoot
29716
29982
  ], {
29717
29983
  props: mergedProps
29718
29984
  });
@@ -29781,11 +30047,7 @@ const Skeleton = (props)=>{
29781
30047
  }, mergedClassNames.root, contextClassName, className, rootClassName, hashId, cssVarCls);
29782
30048
  return /*#__PURE__*/ React.createElement("div", {
29783
30049
  className: cls,
29784
- style: {
29785
- ...mergedStyles.root,
29786
- ...contextStyle,
29787
- ...style
29788
- }
30050
+ style: mergedStyles.root
29789
30051
  }, avatarNode, contentNode);
29790
30052
  }
29791
30053
  return children ?? null;
@@ -30271,12 +30533,16 @@ const Empty = (props)=>{
30271
30533
  const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles, image: contextImage } = useComponentConfig('empty');
30272
30534
  const prefixCls = getPrefixCls('empty', customizePrefixCls);
30273
30535
  const [hashId, cssVarCls] = useStyle$n(prefixCls);
30536
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
30537
+ const styleRoot = useSemanticRootStyle(style);
30274
30538
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
30275
30539
  contextClassNames,
30276
30540
  classNames
30277
30541
  ], [
30278
30542
  contextStyles,
30279
- styles
30543
+ contextStyleRoot,
30544
+ styles,
30545
+ styleRoot
30280
30546
  ], {
30281
30547
  props
30282
30548
  });
@@ -30311,11 +30577,7 @@ const Empty = (props)=>{
30311
30577
  [`${prefixCls}-normal`]: mergedImage === simpleEmptyImg,
30312
30578
  [`${prefixCls}-rtl`]: direction === 'rtl'
30313
30579
  }, className, rootClassName, mergedClassNames.root),
30314
- style: {
30315
- ...mergedStyles.root,
30316
- ...contextStyle,
30317
- ...style
30318
- },
30580
+ style: mergedStyles.root,
30319
30581
  ...restProps
30320
30582
  }, /*#__PURE__*/ React.createElement("div", {
30321
30583
  className: clsx(`${prefixCls}-image`, mergedClassNames.image),
@@ -30786,7 +31048,7 @@ const genSelectInputMultipleStyle = (token)=>{
30786
31048
  }
30787
31049
  };
30788
31050
  };
30789
- /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors = {}, warningColors = {}, patchStyle)=>{
31051
+ /** Generate variant-scoped variable styles and status overrides for a Select input */ const genSelectInputVariantStyle = (token, variant, colors, errorColors, warningColors, patchStyle)=>{
30790
31052
  const { componentCls } = token;
30791
31053
  return {
30792
31054
  [`&${componentCls}-${variant}`]: [
@@ -30805,6 +31067,14 @@ const genSelectInputMultipleStyle = (token)=>{
30805
31067
  ]
30806
31068
  };
30807
31069
  };
31070
+ const genSelectInputFocusVisibleStyle = (token, outlineColor)=>({
31071
+ outline: `${unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
31072
+ outlineOffset: unit(token.calc(token.lineWidth).mul(-1).equal()),
31073
+ transition: [
31074
+ `outline-offset`,
31075
+ `outline`
31076
+ ].map((prop)=>`${prop} 0s`).join(', ')
31077
+ });
30808
31078
  const genSelectInputStyle = (token)=>{
30809
31079
  const { componentCls, fontHeight, controlHeight, fontSizeIcon, showArrowPaddingInlineEnd, iconCls, antCls, max, calc } = token;
30810
31080
  const [varName, varRef] = genCssVar(antCls, 'select');
@@ -30980,20 +31250,31 @@ const genSelectInputStyle = (token)=>{
30980
31250
  },
30981
31251
  '&-has-search-value': {
30982
31252
  color: 'transparent',
30983
- [`> :not(${componentCls}-input)`]: {
31253
+ [`> *:not(${componentCls}-input)`]: {
30984
31254
  opacity: 0
30985
31255
  }
30986
31256
  },
30987
31257
  // >>> Value
30988
31258
  '&-value': {
30989
31259
  transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,
30990
- zIndex: 1
31260
+ zIndex: 1,
31261
+ opacity: 1
30991
31262
  }
30992
31263
  },
31264
+ // Dim the selected content while the dropdown is open. Shared by all select-like
31265
+ // components (Select / Cascader / TreeSelect) since they render through the same
31266
+ // `content` structure.
30993
31267
  [`&${componentCls}-open ${componentCls}-content`]: {
30994
- color: token.colorTextPlaceholder,
31268
+ '&-has-value': {
31269
+ opacity: 0.25
31270
+ },
30995
31271
  '&-has-search-value': {
30996
- color: 'transparent'
31272
+ opacity: 1,
31273
+ transition: `opacity ${token.motionDurationMid} ${token.motionEaseInOut}`,
31274
+ color: 'transparent',
31275
+ [`> *:not(${componentCls}-input)`]: {
31276
+ opacity: 0
31277
+ }
30997
31278
  }
30998
31279
  }
30999
31280
  }
@@ -31060,6 +31341,10 @@ const genSelectInputStyle = (token)=>{
31060
31341
  borderActive: 'transparent',
31061
31342
  borderOutline: 'transparent',
31062
31343
  background: 'transparent'
31344
+ }, {}, {}, {
31345
+ [`&:not(${componentCls}-disabled):has(input:focus-visible), &:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.activeBorderColor),
31346
+ [`&${componentCls}-status-error:not(${componentCls}-disabled):has(input:focus-visible), &${componentCls}-status-error:not(${componentCls}-disabled):has(textarea:focus-visible)`]: genSelectInputFocusVisibleStyle(token, token.colorError),
31347
+ [`&${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
31348
  }),
31064
31349
  // Underlined
31065
31350
  genSelectInputVariantStyle(token, 'underlined', {
@@ -31503,12 +31788,16 @@ const InternalSelect = (props, ref)=>{
31503
31788
  disabled: mergedDisabled,
31504
31789
  size: mergedSize
31505
31790
  };
31791
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
31792
+ const styleRoot = useSemanticRootStyle(style);
31506
31793
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
31507
31794
  contextClassNames,
31508
31795
  classNames
31509
31796
  ], [
31510
31797
  contextStyles,
31511
- styles
31798
+ contextStyleRoot,
31799
+ styles,
31800
+ styleRoot
31512
31801
  ], {
31513
31802
  props: mergedProps
31514
31803
  }, {
@@ -31568,11 +31857,7 @@ const InternalSelect = (props, ref)=>{
31568
31857
  styles: mergedStyles,
31569
31858
  showSearch: mergedShowSearch,
31570
31859
  ...selectProps,
31571
- style: {
31572
- ...mergedStyles.root,
31573
- ...contextStyle,
31574
- ...style
31575
- },
31860
+ style: mergedStyles.root,
31576
31861
  popupMatchSelectWidth: mergedPopupMatchSelectWidth,
31577
31862
  transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),
31578
31863
  builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),
@@ -31834,21 +32119,10 @@ function getArrowOffsetToken(options) {
31834
32119
  arrowOffsetVertical
31835
32120
  };
31836
32121
  }
31837
- function isInject(valid, code) {
31838
- if (!valid) {
31839
- return {};
31840
- }
31841
- return code;
31842
- }
31843
32122
  const getArrowStyle = (token, colorBg, options)=>{
31844
32123
  const { componentCls, boxShadowPopoverArrow, arrowOffsetVertical, arrowOffsetHorizontal, antCls } = token;
31845
32124
  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 || {};
32125
+ const { arrowDistance = 0, arrowShadow = true } = options || {};
31852
32126
  return {
31853
32127
  [componentCls]: {
31854
32128
  // ============================ Basic ============================
@@ -31867,131 +32141,123 @@ const getArrowStyle = (token, colorBg, options)=>{
31867
32141
  // ========================== Placement ==========================
31868
32142
  // Here handle the arrow position and rotate stuff
31869
32143
  // >>>>> 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)'
32144
+ [[
32145
+ `&-placement-top > ${componentCls}-arrow`,
32146
+ `&-placement-topLeft > ${componentCls}-arrow`,
32147
+ `&-placement-topRight > ${componentCls}-arrow`
32148
+ ].join(',')]: {
32149
+ bottom: arrowDistance,
32150
+ transform: 'translateY(100%) rotate(180deg)'
32151
+ },
32152
+ [`&-placement-top > ${componentCls}-arrow`]: {
32153
+ left: {
32154
+ _skip_check_: true,
32155
+ value: '50%'
31878
32156
  },
31879
- [`&-placement-top > ${componentCls}-arrow`]: {
32157
+ transform: 'translateX(-50%) translateY(100%) rotate(180deg)'
32158
+ },
32159
+ '&-placement-topLeft': {
32160
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32161
+ [`> ${componentCls}-arrow`]: {
31880
32162
  left: {
31881
32163
  _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
- }
32164
+ value: arrowOffsetHorizontal
31893
32165
  }
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
- }
32166
+ }
32167
+ },
32168
+ '&-placement-topRight': {
32169
+ [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
32170
+ [`> ${componentCls}-arrow`]: {
32171
+ right: {
32172
+ _skip_check_: true,
32173
+ value: arrowOffsetHorizontal
31902
32174
  }
31903
32175
  }
31904
- }),
32176
+ },
31905
32177
  // >>>>> 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%)`
32178
+ [[
32179
+ `&-placement-bottom > ${componentCls}-arrow`,
32180
+ `&-placement-bottomLeft > ${componentCls}-arrow`,
32181
+ `&-placement-bottomRight > ${componentCls}-arrow`
32182
+ ].join(',')]: {
32183
+ top: arrowDistance,
32184
+ transform: `translateY(-100%)`
32185
+ },
32186
+ [`&-placement-bottom > ${componentCls}-arrow`]: {
32187
+ left: {
32188
+ _skip_check_: true,
32189
+ value: '50%'
31914
32190
  },
31915
- [`&-placement-bottom > ${componentCls}-arrow`]: {
32191
+ transform: `translateX(-50%) translateY(-100%)`
32192
+ },
32193
+ '&-placement-bottomLeft': {
32194
+ [varName('arrow-offset-x')]: arrowOffsetHorizontal,
32195
+ [`> ${componentCls}-arrow`]: {
31916
32196
  left: {
31917
32197
  _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
- }
32198
+ value: arrowOffsetHorizontal
31938
32199
  }
31939
32200
  }
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(',')]: {
32201
+ },
32202
+ '&-placement-bottomRight': {
32203
+ [varName('arrow-offset-x')]: `calc(100% - ${unit(arrowOffsetHorizontal)})`,
32204
+ [`> ${componentCls}-arrow`]: {
31948
32205
  right: {
31949
32206
  _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)'
32207
+ value: arrowOffsetHorizontal
32208
+ }
32209
+ }
32210
+ },
32211
+ // >>>>> Left
32212
+ [[
32213
+ `&-placement-left > ${componentCls}-arrow`,
32214
+ `&-placement-leftTop > ${componentCls}-arrow`,
32215
+ `&-placement-leftBottom > ${componentCls}-arrow`
32216
+ ].join(',')]: {
32217
+ right: {
32218
+ _skip_check_: true,
32219
+ value: arrowDistance
31960
32220
  },
31961
- [`&-placement-leftTop > ${componentCls}-arrow`]: {
31962
- top: arrowOffsetVertical
32221
+ transform: 'translateX(100%) rotate(90deg)'
32222
+ },
32223
+ [`&-placement-left > ${componentCls}-arrow`]: {
32224
+ top: {
32225
+ _skip_check_: true,
32226
+ value: '50%'
31963
32227
  },
31964
- [`&-placement-leftBottom > ${componentCls}-arrow`]: {
31965
- bottom: arrowOffsetVertical
31966
- }
31967
- }),
32228
+ transform: 'translateY(-50%) translateX(100%) rotate(90deg)'
32229
+ },
32230
+ [`&-placement-leftTop > ${componentCls}-arrow`]: {
32231
+ top: arrowOffsetVertical
32232
+ },
32233
+ [`&-placement-leftBottom > ${componentCls}-arrow`]: {
32234
+ bottom: arrowOffsetVertical
32235
+ },
31968
32236
  // >>>>> 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)'
32237
+ [[
32238
+ `&-placement-right > ${componentCls}-arrow`,
32239
+ `&-placement-rightTop > ${componentCls}-arrow`,
32240
+ `&-placement-rightBottom > ${componentCls}-arrow`
32241
+ ].join(',')]: {
32242
+ left: {
32243
+ _skip_check_: true,
32244
+ value: arrowDistance
31987
32245
  },
31988
- [`&-placement-rightTop > ${componentCls}-arrow`]: {
31989
- top: arrowOffsetVertical
32246
+ transform: 'translateX(-100%) rotate(-90deg)'
32247
+ },
32248
+ [`&-placement-right > ${componentCls}-arrow`]: {
32249
+ top: {
32250
+ _skip_check_: true,
32251
+ value: '50%'
31990
32252
  },
31991
- [`&-placement-rightBottom > ${componentCls}-arrow`]: {
31992
- bottom: arrowOffsetVertical
31993
- }
31994
- })
32253
+ transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'
32254
+ },
32255
+ [`&-placement-rightTop > ${componentCls}-arrow`]: {
32256
+ top: arrowOffsetVertical
32257
+ },
32258
+ [`&-placement-rightBottom > ${componentCls}-arrow`]: {
32259
+ bottom: arrowOffsetVertical
32260
+ }
31995
32261
  }
31996
32262
  };
31997
32263
  };
@@ -33269,7 +33535,7 @@ const generateId = (()=>{
33269
33535
  };
33270
33536
  })();
33271
33537
  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;
33538
+ 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
33539
  const { siderHook } = useContext(LayoutContext);
33274
33540
  const [collapsed, setCollapsed] = useState('collapsed' in props ? props.collapsed : defaultCollapsed);
33275
33541
  const [below, setBelow] = useState(false);
@@ -33286,6 +33552,28 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33286
33552
  }
33287
33553
  onCollapse?.(value, type);
33288
33554
  };
33555
+ const semanticProps = {
33556
+ ...props,
33557
+ collapsed,
33558
+ defaultCollapsed,
33559
+ theme,
33560
+ style,
33561
+ collapsible,
33562
+ reverseArrow,
33563
+ width,
33564
+ collapsedWidth,
33565
+ zeroWidthTriggerStyle,
33566
+ breakpoint,
33567
+ onCollapse,
33568
+ onBreakpoint
33569
+ };
33570
+ const [mergedClassNames, mergedStyles] = useMergeSemantic([
33571
+ classNames
33572
+ ], [
33573
+ styles
33574
+ ], {
33575
+ props: semanticProps
33576
+ });
33289
33577
  // =========================== Prefix ===========================
33290
33578
  const { getPrefixCls, direction } = useContext(ConfigContext);
33291
33579
  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);
@@ -33367,7 +33655,7 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33367
33655
  [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,
33368
33656
  [`${prefixCls}-below`]: !!below,
33369
33657
  [`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth) === 0
33370
- }, className, hashId, cssVarCls);
33658
+ }, className, mergedClassNames.root, hashId, cssVarCls);
33371
33659
  const contextValue = React.useMemo(()=>({
33372
33660
  siderCollapsed: collapsed
33373
33661
  }), [
@@ -33378,10 +33666,14 @@ const Sider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
33378
33666
  }, /*#__PURE__*/ React.createElement("aside", {
33379
33667
  className: siderCls,
33380
33668
  ...divProps,
33381
- style: divStyle,
33669
+ style: {
33670
+ ...mergedStyles.root,
33671
+ ...divStyle
33672
+ },
33382
33673
  ref: ref
33383
33674
  }, /*#__PURE__*/ React.createElement("div", {
33384
- className: `${prefixCls}-children`
33675
+ className: clsx(`${prefixCls}-children`, mergedClassNames.body),
33676
+ style: mergedStyles.body
33385
33677
  }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null));
33386
33678
  });
33387
33679
  if (process.env.NODE_ENV !== 'production') {
@@ -33488,7 +33780,11 @@ const MenuItem = (props)=>{
33488
33780
  ...firstLevel ? styles?.item : styles?.subMenu?.item,
33489
33781
  ...props.style
33490
33782
  },
33491
- title: typeof title === 'string' ? title : undefined
33783
+ title: typeof title === 'string' ? title : undefined,
33784
+ itemData: props?.itemData ?? {
33785
+ ...props,
33786
+ key: props.eventKey
33787
+ }
33492
33788
  }, cloneElement(icon, (oriProps)=>({
33493
33789
  className: clsx(`${prefixCls}-item-icon`, firstLevel ? classNames?.itemIcon : classNames?.subMenu?.itemIcon, oriProps.className),
33494
33790
  style: {
@@ -34680,12 +34976,16 @@ const InternalMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
34680
34976
  selectable: mergedSelectable,
34681
34977
  theme
34682
34978
  };
34979
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
34980
+ const styleRoot = useSemanticRootStyle(style);
34683
34981
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
34684
34982
  contextClassNames,
34685
34983
  classNames
34686
34984
  ], [
34687
34985
  contextStyles,
34688
- styles
34986
+ contextStyleRoot,
34987
+ styles,
34988
+ styleRoot
34689
34989
  ], {
34690
34990
  props: mergedProps
34691
34991
  }, {
@@ -34775,11 +35075,7 @@ const InternalMenu = /*#__PURE__*/ forwardRef((props, ref)=>{
34775
35075
  onClick: onItemClick,
34776
35076
  ...passedProps,
34777
35077
  inlineCollapsed: mergedInlineCollapsed,
34778
- style: {
34779
- ...mergedStyles.root,
34780
- ...contextStyle,
34781
- ...style
34782
- },
35078
+ style: mergedStyles.root,
34783
35079
  className: menuClassName,
34784
35080
  prefixCls: prefixCls,
34785
35081
  direction: direction,
@@ -34914,18 +35210,39 @@ const genBaseStyle$2 = (token)=>{
34914
35210
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top,
34915
35211
  &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: {
34916
35212
  animationName: slideDownOut
35213
+ },
35214
+ [`&${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-right,
35215
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-right,
35216
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightTop,
35217
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightTop,
35218
+ &${antCls}-slide-right-enter${antCls}-slide-right-enter-active${componentCls}-placement-rightBottom,
35219
+ &${antCls}-slide-right-appear${antCls}-slide-right-appear-active${componentCls}-placement-rightBottom`]: {
35220
+ animationName: slideLeftIn
35221
+ },
35222
+ [`&${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-left,
35223
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-left,
35224
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftTop,
35225
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftTop,
35226
+ &${antCls}-slide-left-enter${antCls}-slide-left-enter-active${componentCls}-placement-leftBottom,
35227
+ &${antCls}-slide-left-appear${antCls}-slide-left-appear-active${componentCls}-placement-leftBottom`]: {
35228
+ animationName: slideRightIn
35229
+ },
35230
+ [`&${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-right,
35231
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightTop,
35232
+ &${antCls}-slide-right-leave${antCls}-slide-right-leave-active${componentCls}-placement-rightBottom`]: {
35233
+ animationName: slideLeftOut
35234
+ },
35235
+ [`&${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-left,
35236
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftTop,
35237
+ &${antCls}-slide-left-leave${antCls}-slide-left-leave-active${componentCls}-placement-leftBottom`]: {
35238
+ animationName: slideRightOut
34917
35239
  }
34918
35240
  }
34919
35241
  },
34920
35242
  // =============================================================
34921
35243
  // == Arrow style ==
34922
35244
  // =============================================================
34923
- getArrowStyle(token, colorBgElevated, {
34924
- arrowPlacement: {
34925
- top: true,
34926
- bottom: true
34927
- }
34928
- }),
35245
+ getArrowStyle(token, colorBgElevated),
34929
35246
  {
34930
35247
  // =============================================================
34931
35248
  // == Menu ==
@@ -35085,6 +35402,8 @@ const genBaseStyle$2 = (token)=>{
35085
35402
  [
35086
35403
  initSlideMotion(token, 'slide-up'),
35087
35404
  initSlideMotion(token, 'slide-down'),
35405
+ initSlideMotion(token, 'slide-left'),
35406
+ initSlideMotion(token, 'slide-right'),
35088
35407
  initMoveMotion(token, 'move-up'),
35089
35408
  initMoveMotion(token, 'move-down'),
35090
35409
  initZoomMotion(token, 'zoom-big')
@@ -35161,9 +35480,15 @@ const Dropdown$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
35161
35480
  if (transitionName !== undefined) {
35162
35481
  return transitionName;
35163
35482
  }
35164
- if (placement.includes('top')) {
35483
+ if (placement.startsWith('top')) {
35165
35484
  return `${rootPrefixCls}-slide-down`;
35166
35485
  }
35486
+ if (placement.startsWith('left')) {
35487
+ return `${rootPrefixCls}-slide-right`;
35488
+ }
35489
+ if (placement.startsWith('right')) {
35490
+ return `${rootPrefixCls}-slide-left`;
35491
+ }
35167
35492
  return `${rootPrefixCls}-slide-up`;
35168
35493
  }, [
35169
35494
  getPrefixCls,
@@ -35935,12 +36260,16 @@ const InternalRadio = (props, ref)=>{
35935
36260
  ...radioProps,
35936
36261
  checked: mergedChecked
35937
36262
  };
36263
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
36264
+ const styleRoot = useSemanticRootStyle(style);
35938
36265
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
35939
36266
  contextClassNames,
35940
36267
  classNames
35941
36268
  ], [
35942
36269
  contextStyles,
35943
- styles
36270
+ contextStyleRoot,
36271
+ styles,
36272
+ styleRoot
35944
36273
  ], {
35945
36274
  props: mergedProps
35946
36275
  });
@@ -35959,11 +36288,7 @@ const InternalRadio = (props, ref)=>{
35959
36288
  disabled: radioProps.disabled
35960
36289
  }, /*#__PURE__*/ React.createElement("label", {
35961
36290
  className: wrapperClassString,
35962
- style: {
35963
- ...mergedStyles.root,
35964
- ...contextStyle,
35965
- ...style
35966
- },
36291
+ style: mergedStyles.root,
35967
36292
  onMouseEnter: props.onMouseEnter,
35968
36293
  onMouseLeave: props.onMouseLeave,
35969
36294
  title: title,
@@ -36258,7 +36583,25 @@ const genOutlinedGroupStyle = (token)=>({
36258
36583
  }
36259
36584
  }
36260
36585
  });
36261
- /* ============ Borderless ============ */ const genBorderlessStyle = (token, extraStyles)=>{
36586
+ /* ============ Borderless ============ */ const borderlessFocusVisibleSelector = '&:focus-visible, &:has(input:focus-visible), &:has(textarea:focus-visible)';
36587
+ const genBorderlessFocusVisibleStyle = (token, outlineColor)=>({
36588
+ outline: `${unit(token.lineWidth)} ${token.lineType} ${outlineColor}`,
36589
+ outlineOffset: unit(token.calc(token.lineWidth).mul(-1).equal()),
36590
+ transition: [
36591
+ `outline-offset`,
36592
+ `outline`
36593
+ ].map((prop)=>`${prop} 0s`).join(', ')
36594
+ });
36595
+ const genBorderlessStatusStyle = (token, options)=>({
36596
+ '&, & input, & textarea': {
36597
+ color: options.color
36598
+ },
36599
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, options.color),
36600
+ [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {
36601
+ color: options.affixColor
36602
+ }
36603
+ });
36604
+ const genBorderlessStyle = (token, extraStyles)=>{
36262
36605
  const { componentCls } = token;
36263
36606
  return {
36264
36607
  '&-borderless': {
@@ -36276,28 +36619,21 @@ const genOutlinedGroupStyle = (token)=>({
36276
36619
  '&:focus, &:focus-within': {
36277
36620
  outline: 'none'
36278
36621
  },
36622
+ [borderlessFocusVisibleSelector]: genBorderlessFocusVisibleStyle(token, token.activeBorderColor),
36279
36623
  // >>>>> Disabled
36280
36624
  [`&${componentCls}-disabled, &[disabled]`]: {
36281
36625
  color: token.colorTextDisabled,
36282
36626
  cursor: 'not-allowed'
36283
36627
  },
36284
36628
  // >>>>> 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
- },
36629
+ [`&${componentCls}-status-error`]: genBorderlessStatusStyle(token, {
36630
+ color: token.colorError,
36631
+ affixColor: token.colorErrorAffix
36632
+ }),
36633
+ [`&${componentCls}-status-warning`]: genBorderlessStatusStyle(token, {
36634
+ color: token.colorWarning,
36635
+ affixColor: token.colorWarningAffix
36636
+ }),
36301
36637
  ...extraStyles
36302
36638
  }
36303
36639
  };
@@ -37424,7 +37760,7 @@ const genPositionStyle = (token)=>{
37424
37760
  top: 0
37425
37761
  }
37426
37762
  },
37427
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37763
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37428
37764
  order: 0
37429
37765
  }
37430
37766
  },
@@ -37496,7 +37832,7 @@ const genPositionStyle = (token)=>{
37496
37832
  }
37497
37833
  }
37498
37834
  },
37499
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37835
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37500
37836
  marginLeft: {
37501
37837
  _skip_check_: true,
37502
37838
  value: unit(calc(token.lineWidth).mul(-1).equal())
@@ -37505,7 +37841,7 @@ const genPositionStyle = (token)=>{
37505
37841
  _skip_check_: true,
37506
37842
  value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37507
37843
  },
37508
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37844
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37509
37845
  paddingLeft: {
37510
37846
  _skip_check_: true,
37511
37847
  value: token.paddingLG
@@ -37523,7 +37859,7 @@ const genPositionStyle = (token)=>{
37523
37859
  }
37524
37860
  }
37525
37861
  },
37526
- [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: {
37862
+ [`> ${componentCls}-body-holder, > div > ${componentCls}-body-holder`]: {
37527
37863
  order: 0,
37528
37864
  marginRight: {
37529
37865
  _skip_check_: true,
@@ -37533,7 +37869,7 @@ const genPositionStyle = (token)=>{
37533
37869
  _skip_check_: true,
37534
37870
  value: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`
37535
37871
  },
37536
- [`> ${componentCls}-content > ${componentCls}-tabpane`]: {
37872
+ [`> ${componentCls}-body > ${componentCls}-content`]: {
37537
37873
  paddingRight: {
37538
37874
  _skip_check_: true,
37539
37875
  value: token.paddingLG
@@ -37755,7 +38091,7 @@ const genRtlStyle = (token)=>{
37755
38091
  [`> ${componentCls}-nav`]: {
37756
38092
  order: 1
37757
38093
  },
37758
- [`> ${componentCls}-content-holder`]: {
38094
+ [`> ${componentCls}-body-holder`]: {
37759
38095
  order: 0
37760
38096
  }
37761
38097
  },
@@ -37763,7 +38099,7 @@ const genRtlStyle = (token)=>{
37763
38099
  [`> ${componentCls}-nav`]: {
37764
38100
  order: 0
37765
38101
  },
37766
- [`> ${componentCls}-content-holder`]: {
38102
+ [`> ${componentCls}-body-holder`]: {
37767
38103
  order: 1
37768
38104
  }
37769
38105
  },
@@ -37899,16 +38235,16 @@ const genTabsStyle = (token)=>{
37899
38235
  // ============================= Tabs =============================
37900
38236
  ...genTabStyle(token),
37901
38237
  // =========================== TabPanes ===========================
37902
- [`${componentCls}-content`]: {
38238
+ [`${componentCls}-body`]: {
37903
38239
  position: 'relative',
37904
38240
  width: '100%'
37905
38241
  },
37906
- [`${componentCls}-content-holder`]: {
38242
+ [`${componentCls}-body-holder`]: {
37907
38243
  flex: 'auto',
37908
38244
  minWidth: 0,
37909
38245
  minHeight: 0
37910
38246
  },
37911
- [`${componentCls}-tabpane`]: {
38247
+ [`${componentCls}-content`]: {
37912
38248
  ...genFocusStyle(token),
37913
38249
  '&-hidden': {
37914
38250
  display: 'none'
@@ -38066,12 +38402,16 @@ const InternalTabs = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38066
38402
  items: mergedItems
38067
38403
  };
38068
38404
  // ========================= Style ==========================
38405
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38406
+ const styleRoot = useSemanticRootStyle(style);
38069
38407
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38070
38408
  contextClassNames,
38071
38409
  classNames
38072
38410
  ], [
38073
38411
  contextStyles,
38074
- styles
38412
+ contextStyleRoot,
38413
+ styles,
38414
+ styleRoot
38075
38415
  ], {
38076
38416
  props: mergedProps
38077
38417
  }, {
@@ -38100,11 +38440,7 @@ const InternalTabs = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38100
38440
  popup: clsx(popupClassName, hashId, cssVarCls, rootCls, mergedClassNames.popup?.root)
38101
38441
  },
38102
38442
  styles: mergedStyles,
38103
- style: {
38104
- ...mergedStyles.root,
38105
- ...contextStyle,
38106
- ...style
38107
- },
38443
+ style: mergedStyles.root,
38108
38444
  editable: editable,
38109
38445
  more: {
38110
38446
  icon: tabs?.more?.icon ?? tabs?.moreIcon ?? moreIcon ?? /*#__PURE__*/ React.createElement(RefIcon$g, null),
@@ -38498,12 +38834,16 @@ const Card$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38498
38834
  size: mergedSize,
38499
38835
  variant: variant
38500
38836
  };
38837
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38838
+ const styleRoot = useSemanticRootStyle(style);
38501
38839
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38502
38840
  contextClassNames,
38503
38841
  classNames
38504
38842
  ], [
38505
38843
  contextStyles,
38506
- styles
38844
+ contextStyleRoot,
38845
+ styles,
38846
+ styleRoot
38507
38847
  ], {
38508
38848
  props: mergedProps
38509
38849
  });
@@ -38619,9 +38959,7 @@ const Card$1 = /*#__PURE__*/ React.forwardRef((props, ref)=>{
38619
38959
  [`${prefixCls}-rtl`]: direction === 'rtl'
38620
38960
  }, className, rootClassName, hashId, cssVarCls, mergedClassNames.root);
38621
38961
  const mergedStyle = {
38622
- ...mergedStyles.root,
38623
- ...contextStyle,
38624
- ...style
38962
+ ...mergedStyles.root
38625
38963
  };
38626
38964
  return /*#__PURE__*/ React.createElement("div", {
38627
38965
  ref: ref,
@@ -38639,20 +38977,22 @@ const CardMeta = (props)=>{
38639
38977
  const { getPrefixCls, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = useComponentConfig('cardMeta');
38640
38978
  const prefixCls = getPrefixCls('card', customizePrefixCls);
38641
38979
  const metaPrefixCls = `${prefixCls}-meta`;
38980
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
38981
+ const styleRoot = useSemanticRootStyle(style);
38642
38982
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38643
38983
  contextClassNames,
38644
38984
  cardMetaClassNames
38645
38985
  ], [
38646
38986
  contextStyles,
38647
- styles
38987
+ contextStyleRoot,
38988
+ styles,
38989
+ styleRoot
38648
38990
  ], {
38649
38991
  props
38650
38992
  });
38651
38993
  const rootClassNames = clsx(metaPrefixCls, className, contextClassName, mergedClassNames.root);
38652
38994
  const rootStyles = {
38653
- ...contextStyle,
38654
- ...mergedStyles.root,
38655
- ...style
38995
+ ...mergedStyles.root
38656
38996
  };
38657
38997
  const avatarClassNames = clsx(`${metaPrefixCls}-avatar`, mergedClassNames.avatar);
38658
38998
  const titleClassNames = clsx(`${metaPrefixCls}-title`, mergedClassNames.title);
@@ -38969,12 +39309,16 @@ const InternalCheckbox = (props, ref)=>{
38969
39309
  disabled: mergedDisabled,
38970
39310
  checked: mergedChecked
38971
39311
  };
39312
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
39313
+ const styleRoot = useSemanticRootStyle(style);
38972
39314
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
38973
39315
  contextClassNames,
38974
39316
  classNames
38975
39317
  ], [
38976
39318
  contextStyles,
38977
- styles
39319
+ contextStyleRoot,
39320
+ styles,
39321
+ styleRoot
38978
39322
  ], {
38979
39323
  props: mergedProps
38980
39324
  });
@@ -38995,11 +39339,7 @@ const InternalCheckbox = (props, ref)=>{
38995
39339
  disabled: mergedDisabled
38996
39340
  }, /*#__PURE__*/ React.createElement("label", {
38997
39341
  className: classString,
38998
- style: {
38999
- ...mergedStyles.root,
39000
- ...contextStyle,
39001
- ...style
39002
- },
39342
+ style: mergedStyles.root,
39003
39343
  onMouseEnter: onMouseEnter,
39004
39344
  onMouseLeave: onMouseLeave,
39005
39345
  onClick: onLabelClick
@@ -39839,12 +40179,16 @@ const Input = /*#__PURE__*/ forwardRef((props, ref)=>{
39839
40179
  size: mergedSize,
39840
40180
  disabled: mergedDisabled
39841
40181
  };
40182
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
40183
+ const styleRoot = useSemanticRootStyle(style);
39842
40184
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
39843
40185
  contextClassNames,
39844
40186
  classNames
39845
40187
  ], [
39846
40188
  contextStyles,
39847
- styles
40189
+ contextStyleRoot,
40190
+ styles,
40191
+ styleRoot
39848
40192
  ], {
39849
40193
  props: mergedProps
39850
40194
  });
@@ -39894,11 +40238,7 @@ const Input = /*#__PURE__*/ forwardRef((props, ref)=>{
39894
40238
  disabled: mergedDisabled,
39895
40239
  onBlur: handleBlur,
39896
40240
  onFocus: handleFocus,
39897
- style: {
39898
- ...mergedStyles.root,
39899
- ...contextStyle,
39900
- ...style
39901
- },
40241
+ style: mergedStyles.root,
39902
40242
  styles: mergedStyles,
39903
40243
  suffix: suffixNode,
39904
40244
  allowClear: mergedAllowClear,
@@ -41018,12 +41358,16 @@ const TextArea = /*#__PURE__*/ forwardRef((props, ref)=>{
41018
41358
  // ==================== Status ====================
41019
41359
  const { status: contextStatus, hasFeedback, feedbackIcon } = React.useContext(FormItemInputContext);
41020
41360
  const mergedStatus = getMergedStatus(contextStatus, customStatus);
41361
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
41362
+ const styleRoot = useSemanticRootStyle(style);
41021
41363
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
41022
41364
  contextClassNames,
41023
41365
  classNames
41024
41366
  ], [
41025
41367
  contextStyles,
41026
- styles
41368
+ contextStyleRoot,
41369
+ styles,
41370
+ styleRoot
41027
41371
  ], {
41028
41372
  props
41029
41373
  });
@@ -41080,11 +41424,7 @@ const TextArea = /*#__PURE__*/ forwardRef((props, ref)=>{
41080
41424
  return /*#__PURE__*/ React.createElement(TextArea$1, {
41081
41425
  autoComplete: contextAutoComplete,
41082
41426
  ...rest,
41083
- style: {
41084
- ...mergedStyles.root,
41085
- ...contextStyle,
41086
- ...style
41087
- },
41427
+ style: mergedStyles.root,
41088
41428
  styles: mergedStyles,
41089
41429
  disabled: mergedDisabled,
41090
41430
  allowClear: mergedAllowClear,
@@ -41628,6 +41968,14 @@ const Pagination$1 = (props)=>{
41628
41968
  if (allPages - current <= pageBufferSize) {
41629
41969
  left = allPages - pageBufferSize * 2;
41630
41970
  }
41971
+ const hasJumpPrev = !!jumpPrev && current - 1 >= pageBufferSize * 2 && current !== 1 + 2;
41972
+ const hasJumpNext = !!jumpNext && allPages - current >= pageBufferSize * 2 && current !== allPages - 2;
41973
+ if (!showLessItems && hasJumpPrev && right !== allPages) {
41974
+ left += 1;
41975
+ }
41976
+ if (!showLessItems && hasJumpNext && left !== 1) {
41977
+ right -= 1;
41978
+ }
41631
41979
  for(let i = left; i <= right; i += 1){
41632
41980
  pagerList.push(/*#__PURE__*/ React__default.createElement(Pager, _extends$d({}, pagerProps, {
41633
41981
  key: i,
@@ -41635,13 +41983,13 @@ const Pagination$1 = (props)=>{
41635
41983
  active: current === i
41636
41984
  })));
41637
41985
  }
41638
- if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
41986
+ if (hasJumpPrev) {
41639
41987
  pagerList[0] = /*#__PURE__*/ React__default.cloneElement(pagerList[0], {
41640
41988
  className: clsx(`${prefixCls}-item-after-jump-prev`, pagerList[0].props.className)
41641
41989
  });
41642
41990
  pagerList.unshift(jumpPrev);
41643
41991
  }
41644
- if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
41992
+ if (hasJumpNext) {
41645
41993
  const lastOne = pagerList[pagerList.length - 1];
41646
41994
  pagerList[pagerList.length - 1] = /*#__PURE__*/ React__default.cloneElement(lastOne, {
41647
41995
  className: clsx(`${prefixCls}-item-before-jump-next`, lastOne.props.className)
@@ -41961,7 +42309,7 @@ const genPaginationInputVariantStyle = (token)=>{
41961
42309
  };
41962
42310
  };
41963
42311
  const genPaginationJumpStyle = (token)=>{
41964
- const { componentCls, antCls } = token;
42312
+ const { componentCls, iconCls, sizeLG, antCls } = token;
41965
42313
  const [, varRef] = genCssVar(antCls, 'pagination');
41966
42314
  return {
41967
42315
  [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
@@ -41983,18 +42331,19 @@ const genPaginationJumpStyle = (token)=>{
41983
42331
  },
41984
42332
  [`${componentCls}-item-ellipsis`]: {
41985
42333
  position: 'absolute',
41986
- top: 0,
41987
- insetInlineEnd: 0,
41988
- bottom: 0,
41989
- insetInlineStart: 0,
41990
- display: 'block',
42334
+ inset: 0,
42335
+ display: 'inline-flex',
42336
+ justifyContent: 'center',
42337
+ alignItems: 'center',
41991
42338
  margin: 'auto',
41992
42339
  color: token.colorTextDisabled,
41993
- letterSpacing: token.paginationEllipsisLetterSpacing,
41994
42340
  textAlign: 'center',
41995
- textIndent: token.paginationEllipsisTextIndent,
41996
42341
  opacity: 1,
41997
- transition: `all ${token.motionDurationMid}`
42342
+ transition: `all ${token.motionDurationMid}`,
42343
+ [`${iconCls}-ellipsis > svg`]: {
42344
+ width: sizeLG,
42345
+ height: sizeLG
42346
+ }
41998
42347
  }
41999
42348
  },
42000
42349
  '&:hover': {
@@ -42424,12 +42773,16 @@ const Pagination = (props)=>{
42424
42773
  size: mergedSize
42425
42774
  };
42426
42775
  // ========================= Style ==========================
42776
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
42777
+ const styleRoot = useSemanticRootStyle(style);
42427
42778
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
42428
42779
  contextClassNames,
42429
42780
  classNames
42430
42781
  ], [
42431
42782
  contextStyles,
42432
- styles
42783
+ contextStyleRoot,
42784
+ styles,
42785
+ styleRoot
42433
42786
  ], {
42434
42787
  props: mergedProps
42435
42788
  });
@@ -42485,7 +42838,7 @@ const Pagination = (props)=>{
42485
42838
  const iconsProps = React.useMemo(()=>{
42486
42839
  const ellipsis = /*#__PURE__*/ React.createElement("span", {
42487
42840
  className: `${prefixCls}-item-ellipsis`
42488
- }, "\u2022\u2022\u2022");
42841
+ }, /*#__PURE__*/ React.createElement(RefIcon$g, null));
42489
42842
  const prevIcon = /*#__PURE__*/ React.createElement("button", {
42490
42843
  className: `${prefixCls}-item-link`,
42491
42844
  type: "button",
@@ -42534,9 +42887,7 @@ const Pagination = (props)=>{
42534
42887
  [`${prefixCls}-bordered`]: token.wireframe
42535
42888
  }, contextClassName, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
42536
42889
  const mergedStyle = {
42537
- ...mergedStyles.root,
42538
- ...contextStyle,
42539
- ...style
42890
+ ...mergedStyles.root
42540
42891
  };
42541
42892
  return /*#__PURE__*/ React.createElement(React.Fragment, null, token.wireframe && /*#__PURE__*/ React.createElement(BorderedStyle, {
42542
42893
  prefixCls: prefixCls
@@ -43583,12 +43934,16 @@ const Statistic = /*#__PURE__*/ React.forwardRef((props, ref)=>{
43583
43934
  loading,
43584
43935
  value
43585
43936
  };
43937
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
43938
+ const styleRoot = useSemanticRootStyle(style);
43586
43939
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
43587
43940
  contextClassNames,
43588
43941
  classNames
43589
43942
  ], [
43590
43943
  contextStyles,
43591
- styles
43944
+ contextStyleRoot,
43945
+ styles,
43946
+ styleRoot
43592
43947
  ], {
43593
43948
  props: mergedProps
43594
43949
  });
@@ -43634,11 +43989,7 @@ const Statistic = /*#__PURE__*/ React.forwardRef((props, ref)=>{
43634
43989
  return /*#__PURE__*/ React.createElement("div", {
43635
43990
  ...restProps,
43636
43991
  className: rootClassNames,
43637
- style: {
43638
- ...mergedStyles.root,
43639
- ...contextStyle,
43640
- ...style
43641
- },
43992
+ style: mergedStyles.root,
43642
43993
  ref: internalRef,
43643
43994
  onMouseEnter: onMouseEnter,
43644
43995
  onMouseLeave: onMouseLeave
@@ -44129,12 +44480,16 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44129
44480
  size: mergedSize,
44130
44481
  disabled: mergedDisabled
44131
44482
  };
44483
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
44484
+ const styleRoot = useSemanticRootStyle(style);
44132
44485
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
44133
44486
  contextClassNames,
44134
44487
  classNames
44135
44488
  ], [
44136
44489
  contextStyles,
44137
- styles
44490
+ contextStyleRoot,
44491
+ styles,
44492
+ styleRoot
44138
44493
  ], {
44139
44494
  props: mergedProps
44140
44495
  });
@@ -44149,11 +44504,6 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44149
44504
  [`${prefixCls}-loading`]: loading,
44150
44505
  [`${prefixCls}-rtl`]: direction === 'rtl'
44151
44506
  }, className, rootClassName, mergedClassNames.root, hashId, cssVarCls);
44152
- const mergedStyle = {
44153
- ...mergedStyles.root,
44154
- ...contextStyle,
44155
- ...style
44156
- };
44157
44507
  const changeHandler = (...args)=>{
44158
44508
  setChecked(args[0]);
44159
44509
  onChange?.(...args);
@@ -44169,7 +44519,7 @@ const InternalSwitch = /*#__PURE__*/ React.forwardRef((props, ref)=>{
44169
44519
  onChange: changeHandler,
44170
44520
  prefixCls: prefixCls,
44171
44521
  className: classes,
44172
- style: mergedStyle,
44522
+ style: mergedStyles.root,
44173
44523
  disabled: mergedDisabled,
44174
44524
  ref: ref,
44175
44525
  loadingIcon: loadingIcon
@@ -44569,8 +44919,10 @@ const useSelection = (config, rowSelection)=>{
44569
44919
  const key = getRowKey(record, index);
44570
44920
  const checked = keySet.has(key);
44571
44921
  const checkboxProps = checkboxPropsMap.get(key);
44922
+ const defaultAriaLabel = `Select row ${index + 1}`;
44572
44923
  return {
44573
44924
  node: /*#__PURE__*/ React.createElement(Radio, {
44925
+ "aria-label": defaultAriaLabel,
44574
44926
  ...checkboxProps,
44575
44927
  checked: checked,
44576
44928
  onClick: (e)=>{
@@ -44602,9 +44954,11 @@ const useSelection = (config, rowSelection)=>{
44602
44954
  } else {
44603
44955
  mergedIndeterminate = checkboxProps?.indeterminate ?? indeterminate;
44604
44956
  }
44957
+ const defaultAriaLabel = checked ? `Row ${index + 1} selected` : `Select row ${index + 1}`;
44605
44958
  // Record checked
44606
44959
  return {
44607
44960
  node: /*#__PURE__*/ React.createElement(Checkbox, {
44961
+ "aria-label": defaultAriaLabel,
44608
44962
  ...checkboxProps,
44609
44963
  indeterminate: mergedIndeterminate,
44610
44964
  checked: checked,
@@ -46874,8 +47228,13 @@ const getSortData = (data, sortStates, childrenColumnName)=>{
46874
47228
  });
46875
47229
  };
46876
47230
  const useFilterSorter = (props)=>{
46877
- const { prefixCls, mergedColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
46878
- const [sortStates, setSortStates] = React.useState(()=>collectSortStates(mergedColumns, true));
47231
+ const { prefixCls, mergedColumns, baseColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange, globalLocale } = props;
47232
+ // Use base (pre-responsive) columns to seed sort states so that
47233
+ // `defaultSortOrder` on a `responsive` column is honored even when the
47234
+ // column is not visible at the current breakpoint.
47235
+ // See: https://github.com/ant-design/ant-design/issues/32847
47236
+ const collectColumns = baseColumns ?? mergedColumns;
47237
+ const [sortStates, setSortStates] = React.useState(()=>collectSortStates(collectColumns, true));
46879
47238
  const getColumnKeys = (columns, pos)=>{
46880
47239
  const newKeys = [];
46881
47240
  columns.forEach((item, index)=>{
@@ -46890,11 +47249,14 @@ const useFilterSorter = (props)=>{
46890
47249
  };
46891
47250
  const mergedSorterStates = React.useMemo(()=>{
46892
47251
  let validate = true;
46893
- const collectedStates = collectSortStates(mergedColumns, false);
47252
+ // Collect controlled `sortOrder` from the full (pre-responsive) column
47253
+ // set so that a controlled `sortOrder` on a hidden responsive column
47254
+ // still applies to the sorted data.
47255
+ const collectedStates = collectSortStates(collectColumns, false);
46894
47256
  // Return if not controlled
46895
47257
  if (!collectedStates.length) {
46896
- const mergedColumnsKeys = getColumnKeys(mergedColumns);
46897
- return sortStates.filter(({ key })=>mergedColumnsKeys.includes(key));
47258
+ const collectColumnsKeys = getColumnKeys(collectColumns);
47259
+ return sortStates.filter(({ key })=>collectColumnsKeys.includes(key));
46898
47260
  }
46899
47261
  const validateStates = [];
46900
47262
  function patchStates(state) {
@@ -46927,7 +47289,7 @@ const useFilterSorter = (props)=>{
46927
47289
  });
46928
47290
  return validateStates;
46929
47291
  }, [
46930
- mergedColumns,
47292
+ collectColumns,
46931
47293
  sortStates
46932
47294
  ]);
46933
47295
  // Get render columns title required props
@@ -47036,6 +47398,10 @@ const genBorderedStyle = (token)=>{
47036
47398
  [`> ${componentCls}-container`]: {
47037
47399
  borderInlineStart: tableBorder,
47038
47400
  borderTop: tableBorder,
47401
+ [`> ${componentCls}-header${componentCls}-sticky-holder`]: {
47402
+ marginTop: calc(lineWidth).mul(-1).equal(),
47403
+ borderTop: tableBorder
47404
+ },
47039
47405
  [`> ${componentCls}-content, > ${componentCls}-header, > ${componentCls}-body, > ${componentCls}-summary`]: {
47040
47406
  '> table': {
47041
47407
  // ============================= Cell =============================
@@ -47052,8 +47418,12 @@ const genBorderedStyle = (token)=>{
47052
47418
  }
47053
47419
  },
47054
47420
  // Fixed right should provides additional border
47421
+ // Only add separator border when there are multiple fixed-right columns
47422
+ // (i.e. fix-right-first is not also fix-right-last), otherwise the
47423
+ // ::after border doubles up with the cell's own borderInlineEnd and
47424
+ // creates a spurious extra vertical line. See #56287.
47055
47425
  '> thead > tr, > tbody > tr, > tfoot > tr': {
47056
- [`> ${componentCls}-cell-fix-right-first::after`]: {
47426
+ [`> ${componentCls}-cell-fix-right-first:not(${componentCls}-cell-fix-right-last)::after`]: {
47057
47427
  borderInlineEnd: tableBorder
47058
47428
  }
47059
47429
  },
@@ -48244,12 +48614,16 @@ const InternalTable = (props, ref)=>{
48244
48614
  size: mergedSize,
48245
48615
  bordered
48246
48616
  };
48617
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
48618
+ const styleRoot = useSemanticRootStyle(style);
48247
48619
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48248
48620
  contextClassNames,
48249
48621
  classNames
48250
48622
  ], [
48251
48623
  contextStyles,
48252
- styles
48624
+ contextStyleRoot,
48625
+ styles,
48626
+ styleRoot
48253
48627
  ], {
48254
48628
  props: mergedProps
48255
48629
  }, {
@@ -48373,6 +48747,11 @@ const InternalTable = (props, ref)=>{
48373
48747
  const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = useFilterSorter({
48374
48748
  prefixCls,
48375
48749
  mergedColumns,
48750
+ // Pass `baseColumns` (pre-responsive) so `defaultSortOrder` and controlled
48751
+ // `sortOrder` on a `responsive` column are still honored when the column
48752
+ // is hidden at the current breakpoint.
48753
+ // See: https://github.com/ant-design/ant-design/issues/32847
48754
+ baseColumns,
48376
48755
  onSorterChange,
48377
48756
  sortDirections: sortDirections || [
48378
48757
  'ascend',
@@ -48566,11 +48945,6 @@ const InternalTable = (props, ref)=>{
48566
48945
  const wrappercls = clsx(cssVarCls, rootCls, `${prefixCls}-wrapper`, contextClassName, {
48567
48946
  [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'
48568
48947
  }, className, rootClassName, mergedClassNames.root, hashId);
48569
- const mergedStyle = {
48570
- ...mergedStyles.root,
48571
- ...contextStyle,
48572
- ...style
48573
- };
48574
48948
  // ========== empty ==========
48575
48949
  const mergedEmptyNode = React.useMemo(()=>{
48576
48950
  // When dataSource is null/undefined (detected by reference equality with EMPTY_LIST),
@@ -48617,7 +48991,7 @@ const InternalTable = (props, ref)=>{
48617
48991
  return /*#__PURE__*/ React.createElement("div", {
48618
48992
  ref: rootRef,
48619
48993
  className: wrappercls,
48620
- style: mergedStyle
48994
+ style: mergedStyles.root
48621
48995
  }, /*#__PURE__*/ React.createElement(Spin, {
48622
48996
  spinning: false,
48623
48997
  ...spinProps
@@ -48904,12 +49278,16 @@ const CheckableTagGroup = /*#__PURE__*/ React__default.forwardRef((props, ref)=>
48904
49278
  const rootCls = useCSSVarCls(prefixCls);
48905
49279
  const [hashId, cssVarCls] = useStyle$1(prefixCls, rootCls);
48906
49280
  // ====================== Styles ======================
49281
+ const contextStyleRoot = useSemanticRootStyle(contextStyle);
49282
+ const styleRoot = useSemanticRootStyle(style);
48907
49283
  const [mergedClassNames, mergedStyles] = useMergeSemantic([
48908
49284
  contextClassNames,
48909
49285
  classNames
48910
49286
  ], [
48911
49287
  contextStyles,
48912
- styles
49288
+ contextStyleRoot,
49289
+ styles,
49290
+ styleRoot
48913
49291
  ], {
48914
49292
  props
48915
49293
  });
@@ -48962,11 +49340,7 @@ const CheckableTagGroup = /*#__PURE__*/ React__default.forwardRef((props, ref)=>
48962
49340
  [`${groupPrefixCls}-disabled`]: disabled,
48963
49341
  [`${groupPrefixCls}-rtl`]: direction === 'rtl'
48964
49342
  }, hashId, cssVarCls, className, mergedClassNames.root),
48965
- style: {
48966
- ...contextStyle,
48967
- ...mergedStyles.root,
48968
- ...style
48969
- },
49343
+ style: mergedStyles.root,
48970
49344
  id: id,
48971
49345
  ref: divRef
48972
49346
  }, parsedOptions.map((option)=>/*#__PURE__*/ React__default.createElement(CheckableTag, {
@@ -53132,6 +53506,28 @@ function useId(deterministicId) {
53132
53506
  return deterministicId || (id ? `radix-${id}` : "");
53133
53507
  }
53134
53508
 
53509
+ // src/use-effect-event.tsx
53510
+ var useReactEffectEvent = React[" useEffectEvent ".trim().toString()];
53511
+ var useReactInsertionEffect = React[" useInsertionEffect ".trim().toString()];
53512
+ function useEffectEvent(callback) {
53513
+ if (typeof useReactEffectEvent === "function") {
53514
+ return useReactEffectEvent(callback);
53515
+ }
53516
+ const ref = React.useRef(()=>{
53517
+ throw new Error("Cannot call an event handler while rendering.");
53518
+ });
53519
+ if (typeof useReactInsertionEffect === "function") {
53520
+ useReactInsertionEffect(()=>{
53521
+ ref.current = callback;
53522
+ });
53523
+ } else {
53524
+ useLayoutEffect2(()=>{
53525
+ ref.current = callback;
53526
+ });
53527
+ }
53528
+ return React.useMemo(()=>(...args)=>ref.current?.(...args), []);
53529
+ }
53530
+
53135
53531
  // src/use-controllable-state.tsx
53136
53532
  var useInsertionEffect = React[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
53137
53533
  function useControllableState$1({ prop, defaultProp, onChange = ()=>{}, caller }) {
@@ -53382,27 +53778,6 @@ function useCallbackRef$2(callback) {
53382
53778
  return React.useMemo(()=>(...args)=>callbackRef.current?.(...args), []);
53383
53779
  }
53384
53780
 
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
53781
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
53407
53782
  var CONTEXT_UPDATE = "dismissableLayer.update";
53408
53783
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -53425,7 +53800,7 @@ var DismissableLayer = React.forwardRef((props, forwardedRef)=>{
53425
53800
  const [node, setNode] = React.useState(null);
53426
53801
  const ownerDocument = node?.ownerDocument ?? globalThis?.document;
53427
53802
  const [, force] = React.useState({});
53428
- const composedRefs = useComposedRefs$1(forwardedRef, (node2)=>setNode(node2));
53803
+ const composedRefs = useComposedRefs$1(forwardedRef, setNode);
53429
53804
  const layers = Array.from(context.layers);
53430
53805
  const [highestLayerWithOutsidePointerEventsDisabled] = [
53431
53806
  ...context.layersWithOutsidePointerEventsDisabled
@@ -53466,15 +53841,31 @@ var DismissableLayer = React.forwardRef((props, forwardedRef)=>{
53466
53841
  onInteractOutside?.(event);
53467
53842
  if (!event.defaultPrevented) onDismiss?.();
53468
53843
  }, ownerDocument);
53469
- useEscapeKeydown((event)=>{
53470
- const isHighestLayer = index === context.layers.size - 1;
53471
- if (!isHighestLayer) return;
53844
+ const isHighestLayer = node ? index === layers.length - 1 : false;
53845
+ const handleKeyDown = useEffectEvent((event)=>{
53846
+ if (event.key !== "Escape") {
53847
+ return;
53848
+ }
53472
53849
  onEscapeKeyDown?.(event);
53473
53850
  if (!event.defaultPrevented && onDismiss) {
53474
53851
  event.preventDefault();
53475
53852
  onDismiss();
53476
53853
  }
53477
- }, ownerDocument);
53854
+ });
53855
+ React.useEffect(()=>{
53856
+ if (!isHighestLayer) {
53857
+ return;
53858
+ }
53859
+ ownerDocument.addEventListener("keydown", handleKeyDown, {
53860
+ capture: true
53861
+ });
53862
+ return ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
53863
+ capture: true
53864
+ });
53865
+ }, [
53866
+ ownerDocument,
53867
+ isHighestLayer
53868
+ ]);
53478
53869
  React.useEffect(()=>{
53479
53870
  if (!node) return;
53480
53871
  if (disableOutsidePointerEvents) {
@@ -53736,7 +54127,7 @@ var FocusScope = React.forwardRef((props, forwardedRef)=>{
53736
54127
  const onMountAutoFocus = useCallbackRef$2(onMountAutoFocusProp);
53737
54128
  const onUnmountAutoFocus = useCallbackRef$2(onUnmountAutoFocusProp);
53738
54129
  const lastFocusedElementRef = React.useRef(null);
53739
- const composedRefs = useComposedRefs$1(forwardedRef, (node)=>setContainer(node));
54130
+ const composedRefs = useComposedRefs$1(forwardedRef, setContainer);
53740
54131
  const focusScope = React.useRef({
53741
54132
  paused: false,
53742
54133
  pause () {
@@ -119540,7 +119931,7 @@ function mergeRefs(...refs) {
119540
119931
  var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
119541
119932
  try {
119542
119933
  if (isBrowser2) {
119543
- window.__reactRouterVersion = "7.18.0";
119934
+ window.__reactRouterVersion = "7.18.1";
119544
119935
  }
119545
119936
  } catch (e) {}
119546
119937
  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 +120800,25 @@ const JUDGE_REASONING_PREFIX = "JudgeReasoning/";
120409
120800
  function metricNameOf$1(agg) {
120410
120801
  return agg.metric?.name ?? agg.name?.replace(/^Aggregate\//, "") ?? "Unknown";
120411
120802
  }
120803
+ /** Category labels are human-authored, so match them case-insensitively and drop blank entries. */ function normalizeCategoryList(list) {
120804
+ return (list ?? []).map((category)=>category.trim().toLowerCase()).filter((category)=>category.length > 0);
120805
+ }
120806
+ /**
120807
+ * Resolve each category the metric declares to a status. Resolution order is fail -> pass -> partial:
120808
+ * a category named in more than one list is a malformed definition, and taking fail first means the
120809
+ * safe reading wins rather than a silent pass. Categories in none of the lists stay unclassified.
120810
+ */ function buildStatusByCategory(metric) {
120811
+ const byCategory = new Map();
120812
+ const assign = (list, status)=>{
120813
+ for (const category of normalizeCategoryList(list)){
120814
+ if (!byCategory.has(category)) byCategory.set(category, status);
120815
+ }
120816
+ };
120817
+ assign(metric?.fail_categories, "fail");
120818
+ assign(metric?.pass_categories, "pass");
120819
+ assign(metric?.partial_categories, "partial");
120820
+ return byCategory;
120821
+ }
120412
120822
  /** Collect the leaf nodes (label + node id) grouped by label. */ function groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey) {
120413
120823
  const byLabel = new Map();
120414
120824
  const seen = new Set();
@@ -120459,6 +120869,8 @@ function metricNameOf$1(agg) {
120459
120869
  const counts = agg.counts ?? {};
120460
120870
  const categories = agg.categories ?? agg.metric?.categories ?? Object.keys(counts);
120461
120871
  const byLabel = groupNodesByLabel(agg, nodes, rawResults, metricName, sessionByNodeId, reasoningByKey);
120872
+ const statusByCategory = buildStatusByCategory(agg.metric);
120873
+ const declaresFailCategories = normalizeCategoryList(agg.metric?.fail_categories).length > 0;
120462
120874
  // Order labels by the metric's category order, then any extras found in the data.
120463
120875
  const orderedLabels = [
120464
120876
  ...categories
@@ -120471,10 +120883,13 @@ function metricNameOf$1(agg) {
120471
120883
  return {
120472
120884
  labelName,
120473
120885
  count: counts[labelName] ?? nodesForLabel.length,
120886
+ status: statusByCategory.get(labelName.trim().toLowerCase()) ?? "unclassified",
120474
120887
  nodes: nodesForLabel
120475
120888
  };
120476
120889
  });
120477
120890
  const total = labels.reduce((sum, l)=>sum + l.count, 0);
120891
+ const failureCount = labels.reduce((sum, l)=>l.status === "fail" ? sum + l.count : sum, 0);
120892
+ const verdict = !declaresFailCategories ? "notGated" : failureCount > 0 ? "failed" : "passed";
120478
120893
  return {
120479
120894
  key: agg.identifier ?? `${metricName}-${index}`,
120480
120895
  metricName,
@@ -120482,6 +120897,10 @@ function metricNameOf$1(agg) {
120482
120897
  mostCommon: agg.most_common_label ?? undefined,
120483
120898
  leastCommon: agg.least_common_label ?? undefined,
120484
120899
  total,
120900
+ scoredCount: total,
120901
+ failureCount,
120902
+ declaresFailCategories,
120903
+ verdict,
120485
120904
  labels
120486
120905
  };
120487
120906
  });
@@ -120617,6 +121036,78 @@ const NodeActions = ({ sessionId, nodeId, onAgentNodeClick, onOpenVisualizer })=
120617
121036
  }), "Visualizer")));
120618
121037
  };
120619
121038
 
121039
+ const STATUS_ICON_SIZE = 12;
121040
+ /**
121041
+ * Icon prefixed to a category's tag. Mirrors the status mapping `SessionStatusIcon` already uses
121042
+ * in sessions.tsx, so the two screens read the same. Unclassified carries none, by design: an
121043
+ * unclassified category has no verdict to state, and a neutral icon would imply one.
121044
+ */ const STATUS_ICON = {
121045
+ pass: CircleCheck,
121046
+ fail: CircleX,
121047
+ partial: Blend,
121048
+ unclassified: null
121049
+ };
121050
+ /** Short word shown on the collapsed accordion row. */ const STATUS_CHIP_LABEL = {
121051
+ pass: "Pass",
121052
+ fail: "Fail",
121053
+ partial: "Partial",
121054
+ unclassified: "Unclassified"
121055
+ };
121056
+ /** The neutral outlined treatment: unclassified categories, not-gated metrics, and zero counts. */ function outlinedPalette(theme) {
121057
+ return {
121058
+ bg: "transparent",
121059
+ border: theme.colors.border,
121060
+ color: theme.colors.mutedForeground
121061
+ };
121062
+ }
121063
+ function statusPalette(theme, status) {
121064
+ const outlined = outlinedPalette(theme);
121065
+ switch(status){
121066
+ case "pass":
121067
+ return {
121068
+ bg: theme.colors.tagPass?.bg ?? theme.colors.muted,
121069
+ border: theme.colors.tagPass?.border ?? theme.colors.border,
121070
+ color: theme.colors.tagPass?.color ?? theme.colors.success
121071
+ };
121072
+ case "fail":
121073
+ return {
121074
+ bg: theme.colors.tagFail?.bg ?? theme.colors.muted,
121075
+ border: theme.colors.tagFail?.border ?? theme.colors.border,
121076
+ color: theme.colors.tagFail?.color ?? theme.colors.destructive
121077
+ };
121078
+ case "partial":
121079
+ return {
121080
+ bg: theme.colors.tagPartial?.bg ?? theme.colors.muted,
121081
+ border: theme.colors.tagPartial?.border ?? theme.colors.border,
121082
+ color: theme.colors.tagPartial?.color ?? theme.colors.foreground
121083
+ };
121084
+ default:
121085
+ return outlined;
121086
+ }
121087
+ }
121088
+ /**
121089
+ * Failure rate, formatted the way the notification formats it: an exact 0%/100% only when exact,
121090
+ * so a single failure out of two hundred does not round down to a clean "0% failed".
121091
+ */ function formatFailureRate(failureCount, scoredCount) {
121092
+ const exact = failureCount * 100 / scoredCount;
121093
+ const rounded = Math.round(exact);
121094
+ if (rounded === 0 && exact > 0) return "<1%";
121095
+ if (rounded === 100 && exact < 100) return ">99%";
121096
+ return `${rounded}%`;
121097
+ }
121098
+ /**
121099
+ * Whether the most/least common read-outs still say something the verdict pill has not.
121100
+ *
121101
+ * They do not when the result is total — every scored run failed, or none did — nor when every run
121102
+ * landed in one category, which makes "most" and "least" the same label. The ratio half of that
121103
+ * applies only to gated metrics: a not-gated metric has no failures *by definition*, so applying it
121104
+ * there would strip the read-outs from every not-gated card, which is the common case in production.
121105
+ */ function showsDistribution(metric) {
121106
+ const { scoredCount, failureCount, declaresFailCategories, labels } = metric;
121107
+ if (scoredCount === 0) return false;
121108
+ if (declaresFailCategories && (failureCount === 0 || failureCount === scoredCount)) return false;
121109
+ return labels.filter((label)=>label.count > 0).length > 1;
121110
+ }
120620
121111
  const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120621
121112
  const { theme } = useTheme$1();
120622
121113
  const [showReasoning, setShowReasoning] = useState(false);
@@ -120689,14 +121180,64 @@ const NodeRow$1 = ({ node, metricName, onAgentNodeClick, onOpenVisualizer })=>{
120689
121180
  }
120690
121181
  }, "Reasoning · ", metricName), node.reasoning));
120691
121182
  };
121183
+ /**
121184
+ * The metric's verdict, beside its name. The ratio's leading number is what did *not* fail,
121185
+ * which folds partials in with the passes — the same reading the notification prints.
121186
+ */ const VerdictPill = ({ metric })=>{
121187
+ const { theme } = useTheme$1();
121188
+ const { verdict, scoredCount, failureCount } = metric;
121189
+ const palette = verdict === "failed" ? statusPalette(theme, "fail") : verdict === "passed" ? statusPalette(theme, "pass") : outlinedPalette(theme);
121190
+ const VerdictIcon = verdict === "failed" ? CircleX : verdict === "passed" ? CircleCheck : CircleMinus;
121191
+ const text = verdict === "failed" ? "Failed" : verdict === "passed" ? "Passed" : "Not gated";
121192
+ // Nothing scored yet, and a passing metric, both show the pill without a failure percentage.
121193
+ let rate;
121194
+ if (scoredCount > 0 && verdict === "failed") {
121195
+ rate = `${scoredCount - failureCount}/${scoredCount} · ${formatFailureRate(failureCount, scoredCount)}`;
121196
+ } else if (scoredCount > 0 && verdict === "passed") {
121197
+ rate = `${scoredCount}/${scoredCount}`;
121198
+ }
121199
+ return /*#__PURE__*/ React__default.createElement("span", {
121200
+ style: {
121201
+ display: "inline-flex",
121202
+ alignItems: "center",
121203
+ gap: 6,
121204
+ padding: "3px 9px",
121205
+ borderRadius: 6,
121206
+ fontSize: 11.5,
121207
+ fontWeight: 700,
121208
+ letterSpacing: 0.6,
121209
+ textTransform: "uppercase",
121210
+ background: palette.bg,
121211
+ color: palette.color,
121212
+ border: `1px solid ${palette.border}`
121213
+ }
121214
+ }, /*#__PURE__*/ React__default.createElement(VerdictIcon, {
121215
+ size: STATUS_ICON_SIZE,
121216
+ "aria-hidden": true,
121217
+ style: {
121218
+ flexShrink: 0
121219
+ }
121220
+ }), text, rate && /*#__PURE__*/ React__default.createElement("span", {
121221
+ style: {
121222
+ fontWeight: 400,
121223
+ letterSpacing: 0.2,
121224
+ opacity: 0.9,
121225
+ textTransform: "none"
121226
+ }
121227
+ }, rate));
121228
+ };
120692
121229
  const LabelPanelHeader = ({ label })=>{
120693
121230
  const { theme } = useTheme$1();
120694
121231
  const isEmpty = label.count === 0;
121232
+ const palette = statusPalette(theme, label.status);
121233
+ // A zero-count row keeps its status colour but reads as inactive, matching its disabled state.
121234
+ const dotColor = label.status === "unclassified" ? theme.colors.mutedForeground : palette.color;
120695
121235
  return /*#__PURE__*/ React__default.createElement("div", {
120696
121236
  style: {
120697
121237
  display: "flex",
120698
121238
  alignItems: "center",
120699
- gap: 10
121239
+ gap: 10,
121240
+ opacity: isEmpty ? 0.55 : undefined
120700
121241
  }
120701
121242
  }, /*#__PURE__*/ React__default.createElement("span", {
120702
121243
  style: {
@@ -120704,15 +121245,27 @@ const LabelPanelHeader = ({ label })=>{
120704
121245
  height: 7,
120705
121246
  borderRadius: "50%",
120706
121247
  flexShrink: 0,
120707
- background: isEmpty ? theme.colors.border : theme.colors.primary
121248
+ background: dotColor
120708
121249
  }
120709
121250
  }), /*#__PURE__*/ React__default.createElement("span", {
120710
121251
  style: {
120711
121252
  fontSize: 13,
120712
121253
  fontWeight: 600,
120713
- color: isEmpty ? theme.colors.mutedForeground : undefined
121254
+ color: palette.color
120714
121255
  }
120715
121256
  }, label.labelName), /*#__PURE__*/ React__default.createElement("span", {
121257
+ style: {
121258
+ fontSize: 10,
121259
+ letterSpacing: 0.8,
121260
+ textTransform: "uppercase",
121261
+ padding: "1px 6px",
121262
+ borderRadius: 4,
121263
+ flexShrink: 0,
121264
+ background: palette.bg,
121265
+ color: palette.color,
121266
+ border: `1px solid ${palette.border}`
121267
+ }
121268
+ }, STATUS_CHIP_LABEL[label.status]), /*#__PURE__*/ React__default.createElement("span", {
120716
121269
  style: {
120717
121270
  marginLeft: "auto",
120718
121271
  fontSize: 12,
@@ -120779,43 +121332,22 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120779
121332
  fontSize: 15,
120780
121333
  fontWeight: 600
120781
121334
  }
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", {
121335
+ }, metric.metricName), /*#__PURE__*/ React__default.createElement(VerdictPill, {
121336
+ metric: metric
121337
+ }), /*#__PURE__*/ React__default.createElement("div", {
120806
121338
  style: {
120807
121339
  display: "flex",
120808
121340
  gap: 20,
120809
121341
  marginLeft: "auto",
120810
121342
  flexShrink: 0
120811
121343
  }
120812
- }, /*#__PURE__*/ React__default.createElement(Meta$1, {
121344
+ }, showsDistribution(metric) && /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(Meta$1, {
120813
121345
  label: "Most common",
120814
121346
  value: metric.mostCommon
120815
121347
  }), /*#__PURE__*/ React__default.createElement(Meta$1, {
120816
121348
  label: "Least common",
120817
121349
  value: metric.leastCommon
120818
- }), /*#__PURE__*/ React__default.createElement(Meta$1, {
121350
+ })), /*#__PURE__*/ React__default.createElement(Meta$1, {
120819
121351
  label: "Evaluations",
120820
121352
  value: String(metric.total)
120821
121353
  }))), metric.description && /*#__PURE__*/ React__default.createElement("div", {
@@ -120824,7 +121356,39 @@ const MetricCard$1 = ({ metric, icon: Icon, onAgentNodeClick, onOpenVisualizer }
120824
121356
  fontSize: 12,
120825
121357
  color: theme.colors.mutedForeground
120826
121358
  }
120827
- }, metric.description)), /*#__PURE__*/ React__default.createElement(Collapse$1, {
121359
+ }, metric.description), /*#__PURE__*/ React__default.createElement("div", {
121360
+ style: {
121361
+ display: "flex",
121362
+ flexWrap: "wrap",
121363
+ gap: 6,
121364
+ marginTop: 12
121365
+ }
121366
+ }, metric.labels.map((label)=>{
121367
+ const palette = statusPalette(theme, label.status);
121368
+ const StatusIcon = STATUS_ICON[label.status];
121369
+ // "Declared but never scored" stays outlined, but keeps its icon so the row still reads.
121370
+ const filled = label.count > 0 && label.status !== "unclassified";
121371
+ return /*#__PURE__*/ React__default.createElement(Tag, {
121372
+ key: label.labelName,
121373
+ style: {
121374
+ margin: 0,
121375
+ display: "inline-flex",
121376
+ alignItems: "center",
121377
+ gap: 5,
121378
+ borderRadius: 12,
121379
+ fontSize: 12,
121380
+ background: filled ? palette.bg : "transparent",
121381
+ color: filled ? palette.color : theme.colors.mutedForeground,
121382
+ border: `1px solid ${filled ? palette.border : theme.colors.border}`
121383
+ }
121384
+ }, StatusIcon && /*#__PURE__*/ React__default.createElement(StatusIcon, {
121385
+ size: STATUS_ICON_SIZE,
121386
+ "aria-hidden": true,
121387
+ style: {
121388
+ flexShrink: 0
121389
+ }
121390
+ }), /*#__PURE__*/ React__default.createElement("span", null, label.labelName, " ", /*#__PURE__*/ React__default.createElement("strong", null, label.count)));
121391
+ }))), /*#__PURE__*/ React__default.createElement(Collapse$1, {
120828
121392
  items: items,
120829
121393
  bordered: false,
120830
121394
  style: {