@uipath/apollo-react 4.50.0 → 4.52.0

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.
Files changed (113) hide show
  1. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +1 -0
  2. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  3. package/dist/canvas/components/BaseNode/BaseNode.cjs +1 -0
  4. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  5. package/dist/canvas/components/BaseNode/BaseNode.js +1 -0
  6. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +16 -6
  7. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +5 -2
  8. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
  9. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +16 -6
  10. package/dist/canvas/components/ButtonHandle/HandleButton.cjs +21 -10
  11. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts +2 -1
  12. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts.map +1 -1
  13. package/dist/canvas/components/ButtonHandle/HandleButton.js +21 -10
  14. package/dist/canvas/components/ButtonHandle/HandleLabel.cjs +3 -2
  15. package/dist/canvas/components/ButtonHandle/HandleLabel.d.ts +2 -1
  16. package/dist/canvas/components/ButtonHandle/HandleLabel.d.ts.map +1 -1
  17. package/dist/canvas/components/ButtonHandle/HandleLabel.js +3 -2
  18. package/dist/canvas/components/CaseFlow/case-flow.manifest.d.ts +1 -0
  19. package/dist/canvas/components/CaseFlow/case-flow.manifest.d.ts.map +1 -1
  20. package/dist/canvas/components/NodePropertyPanel/ExpressionField.cjs +187 -0
  21. package/dist/canvas/components/NodePropertyPanel/ExpressionField.d.ts +10 -0
  22. package/dist/canvas/components/NodePropertyPanel/ExpressionField.d.ts.map +1 -0
  23. package/dist/canvas/components/NodePropertyPanel/ExpressionField.js +153 -0
  24. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.cjs +16 -12
  25. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.d.ts +1 -1
  26. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.d.ts.map +1 -1
  27. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.js +16 -12
  28. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.types.d.ts +1 -0
  29. package/dist/canvas/components/NodePropertyPanel/NodePropertyPanel.types.d.ts.map +1 -1
  30. package/dist/canvas/components/NodePropertyPanel/index.cjs +5 -1
  31. package/dist/canvas/components/NodePropertyPanel/index.d.ts +2 -0
  32. package/dist/canvas/components/NodePropertyPanel/index.d.ts.map +1 -1
  33. package/dist/canvas/components/NodePropertyPanel/index.js +2 -1
  34. package/dist/canvas/locales/de.cjs +1 -1
  35. package/dist/canvas/locales/de.d.ts.map +1 -1
  36. package/dist/canvas/locales/de.js +1 -1
  37. package/dist/canvas/locales/es-MX.cjs +1 -1
  38. package/dist/canvas/locales/es-MX.d.ts.map +1 -1
  39. package/dist/canvas/locales/es-MX.js +1 -1
  40. package/dist/canvas/locales/es.cjs +1 -1
  41. package/dist/canvas/locales/es.d.ts.map +1 -1
  42. package/dist/canvas/locales/es.js +1 -1
  43. package/dist/canvas/locales/fr.cjs +1 -1
  44. package/dist/canvas/locales/fr.d.ts.map +1 -1
  45. package/dist/canvas/locales/fr.js +1 -1
  46. package/dist/canvas/locales/ja.cjs +1 -1
  47. package/dist/canvas/locales/ja.d.ts.map +1 -1
  48. package/dist/canvas/locales/ja.js +1 -1
  49. package/dist/canvas/locales/ko.cjs +1 -1
  50. package/dist/canvas/locales/ko.d.ts.map +1 -1
  51. package/dist/canvas/locales/ko.js +1 -1
  52. package/dist/canvas/locales/pt-BR.cjs +1 -1
  53. package/dist/canvas/locales/pt-BR.d.ts.map +1 -1
  54. package/dist/canvas/locales/pt-BR.js +1 -1
  55. package/dist/canvas/locales/pt.cjs +1 -1
  56. package/dist/canvas/locales/pt.d.ts.map +1 -1
  57. package/dist/canvas/locales/pt.js +1 -1
  58. package/dist/canvas/locales/tr.cjs +1 -1
  59. package/dist/canvas/locales/tr.d.ts.map +1 -1
  60. package/dist/canvas/locales/tr.js +1 -1
  61. package/dist/canvas/locales/zh-CN.cjs +1 -1
  62. package/dist/canvas/locales/zh-CN.d.ts.map +1 -1
  63. package/dist/canvas/locales/zh-CN.js +1 -1
  64. package/dist/canvas/locales/zh-TW.cjs +1 -1
  65. package/dist/canvas/locales/zh-TW.d.ts.map +1 -1
  66. package/dist/canvas/locales/zh-TW.js +1 -1
  67. package/dist/canvas/schema/node-definition/handle.cjs +8 -0
  68. package/dist/canvas/schema/node-definition/handle.d.ts +17 -0
  69. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  70. package/dist/canvas/schema/node-definition/handle.js +6 -1
  71. package/dist/canvas/schema/node-definition/node-manifest.d.ts +4 -0
  72. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  73. package/dist/canvas/schema/node-instance/node.d.ts +4 -0
  74. package/dist/canvas/schema/node-instance/node.d.ts.map +1 -1
  75. package/dist/canvas/storybook-utils/components/StoryInfoPanel.d.ts +1 -1
  76. package/dist/canvas/storybook-utils/components/StoryInfoPanel.d.ts.map +1 -1
  77. package/dist/canvas/storybook-utils/manifests/index.d.ts +1 -0
  78. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  79. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  80. package/dist/material/components/ap-rich-text-editor/locales/de.cjs +1 -1
  81. package/dist/material/components/ap-rich-text-editor/locales/de.d.ts.map +1 -1
  82. package/dist/material/components/ap-rich-text-editor/locales/de.js +1 -1
  83. package/dist/material/components/ap-rich-text-editor/locales/es-MX.cjs +1 -1
  84. package/dist/material/components/ap-rich-text-editor/locales/es-MX.d.ts.map +1 -1
  85. package/dist/material/components/ap-rich-text-editor/locales/es-MX.js +1 -1
  86. package/dist/material/components/ap-rich-text-editor/locales/es.cjs +1 -1
  87. package/dist/material/components/ap-rich-text-editor/locales/es.d.ts.map +1 -1
  88. package/dist/material/components/ap-rich-text-editor/locales/es.js +1 -1
  89. package/dist/material/components/ap-rich-text-editor/locales/fr.cjs +1 -1
  90. package/dist/material/components/ap-rich-text-editor/locales/fr.d.ts.map +1 -1
  91. package/dist/material/components/ap-rich-text-editor/locales/fr.js +1 -1
  92. package/dist/material/components/ap-rich-text-editor/locales/ja.cjs +1 -1
  93. package/dist/material/components/ap-rich-text-editor/locales/ja.d.ts.map +1 -1
  94. package/dist/material/components/ap-rich-text-editor/locales/ja.js +1 -1
  95. package/dist/material/components/ap-rich-text-editor/locales/ko.cjs +1 -1
  96. package/dist/material/components/ap-rich-text-editor/locales/ko.d.ts.map +1 -1
  97. package/dist/material/components/ap-rich-text-editor/locales/ko.js +1 -1
  98. package/dist/material/components/ap-rich-text-editor/locales/pt-BR.cjs +1 -1
  99. package/dist/material/components/ap-rich-text-editor/locales/pt-BR.d.ts.map +1 -1
  100. package/dist/material/components/ap-rich-text-editor/locales/pt-BR.js +1 -1
  101. package/dist/material/components/ap-rich-text-editor/locales/pt.cjs +1 -1
  102. package/dist/material/components/ap-rich-text-editor/locales/pt.d.ts.map +1 -1
  103. package/dist/material/components/ap-rich-text-editor/locales/pt.js +1 -1
  104. package/dist/material/components/ap-rich-text-editor/locales/tr.cjs +1 -1
  105. package/dist/material/components/ap-rich-text-editor/locales/tr.d.ts.map +1 -1
  106. package/dist/material/components/ap-rich-text-editor/locales/tr.js +1 -1
  107. package/dist/material/components/ap-rich-text-editor/locales/zh-CN.cjs +1 -1
  108. package/dist/material/components/ap-rich-text-editor/locales/zh-CN.d.ts.map +1 -1
  109. package/dist/material/components/ap-rich-text-editor/locales/zh-CN.js +1 -1
  110. package/dist/material/components/ap-rich-text-editor/locales/zh-TW.cjs +1 -1
  111. package/dist/material/components/ap-rich-text-editor/locales/zh-TW.d.ts.map +1 -1
  112. package/dist/material/components/ap-rich-text-editor/locales/zh-TW.js +1 -1
  113. package/package.json +3 -2
@@ -50,6 +50,7 @@ export declare const agentFlowManifest: {
50
50
  itemVar?: string | undefined;
51
51
  indexVar?: string | undefined;
52
52
  showButton?: boolean | undefined;
53
+ labelVisibility?: "always" | "hover" | undefined;
53
54
  constraints?: {
54
55
  maxConnections?: number | undefined;
55
56
  minConnections?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AgentCanvas/agent-flow.manifest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAmBjD,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,YAsDzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,YAqDrC,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,YAwBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,YAwBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAwBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa7B,CAAC"}
1
+ {"version":3,"file":"agent-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AgentCanvas/agent-flow.manifest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAmBjD,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,YAsDzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,YAqDrC,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,YAwBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,YAwBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAwBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa7B,CAAC"}
@@ -157,6 +157,7 @@ const BaseNodeComponent = (props)=>{
157
157
  label: h.label,
158
158
  visible: h.visible,
159
159
  showButton: h.showButton,
160
+ labelVisibility: h.labelVisibility,
160
161
  constraints: h.constraints
161
162
  })),
162
163
  visible: group.visible
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AA4ChF,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAysB1B,eAAO,MAAM,QAAQ,8CAnqBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAmqBmB,CAAC"}
1
+ {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AA4ChF,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AA0sB1B,eAAO,MAAM,QAAQ,8CApqBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAoqBmB,CAAC"}
@@ -129,6 +129,7 @@ const BaseNodeComponent = (props)=>{
129
129
  label: h.label,
130
130
  visible: h.visible,
131
131
  showButton: h.showButton,
132
+ labelVisibility: h.labelVisibility,
132
133
  constraints: h.constraints
133
134
  })),
134
135
  visible: group.visible
@@ -39,7 +39,7 @@ const external_HandleButton_cjs_namespaceObject = require("./HandleButton.cjs");
39
39
  const external_HandleLabel_cjs_namespaceObject = require("./HandleLabel.cjs");
40
40
  const external_HandleNotch_cjs_namespaceObject = require("./HandleNotch.cjs");
41
41
  const external_useButtonHandleSizeAndPosition_cjs_namespaceObject = require("./useButtonHandleSizeAndPosition.cjs");
42
- const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = position, handleType, label, labelIcon, labelBackgroundColor, visible = true, showButton = true, selected = false, index = 0, total = 1, onAction, onMouseEnter, onMouseLeave, showNotches = true, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction = false })=>{
42
+ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = position, handleType, label, labelIcon, labelBackgroundColor, visible = true, labelVisible, labelVisibility, showButton = true, selected = false, index = 0, total = 1, onAction, onMouseEnter, onMouseLeave, showNotches = true, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction = false })=>{
43
43
  const handleRef = (0, external_react_namespaceObject.useRef)(null);
44
44
  const [isHovered, setIsHovered] = (0, external_react_namespaceObject.useState)(false);
45
45
  const isVertical = position === react_cjs_namespaceObject.Position.Top || position === react_cjs_namespaceObject.Position.Bottom;
@@ -107,6 +107,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
107
107
  const markAsHovered = (0, external_react_namespaceObject.useCallback)(()=>setIsHovered(true), []);
108
108
  const unmarkAsHovered = (0, external_react_namespaceObject.useCallback)(()=>setIsHovered(false), []);
109
109
  const showActionButton = !!onAction && 'source' === type;
110
+ const resolvedLabelVisible = labelVisible ?? visible;
111
+ const keepButtonMounted = 'hover' === labelVisibility;
110
112
  const { width: handleWidth, height: handleHeight, top, bottom, left, right, transform } = (0, external_useButtonHandleSizeAndPosition_cjs_namespaceObject.useButtonHandleSizeAndPosition)({
111
113
  position,
112
114
  positionPercent,
@@ -137,6 +139,7 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
137
139
  label: label,
138
140
  labelIcon: labelIcon,
139
141
  labelBackgroundColor: labelBackgroundColor,
142
+ labelVisible: resolvedLabelVisible,
140
143
  layout: layout
141
144
  }),
142
145
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.Handle, {
@@ -152,7 +155,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
152
155
  }),
153
156
  showActionButton ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_HandleButton_cjs_namespaceObject.HandleButton, {
154
157
  visible: showButton,
155
- labelVisible: visible,
158
+ labelVisible: resolvedLabelVisible,
159
+ keepButtonMounted: keepButtonMounted,
156
160
  position: connectionPosition,
157
161
  onAction: handleButtonClick,
158
162
  onMouseEnter: handleButtonMouseEnter,
@@ -198,7 +202,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
198
202
  }),
199
203
  showActionButton ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_HandleButton_cjs_namespaceObject.HandleButton, {
200
204
  visible: showButton,
201
- labelVisible: visible,
205
+ labelVisible: resolvedLabelVisible,
206
+ keepButtonMounted: keepButtonMounted,
202
207
  position: position,
203
208
  onAction: handleButtonClick,
204
209
  onMouseEnter: handleButtonMouseEnter,
@@ -212,15 +217,17 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
212
217
  position: position,
213
218
  backgroundColor: labelBackgroundColor,
214
219
  label: label,
215
- labelIcon: labelIcon
220
+ labelIcon: labelIcon,
221
+ visible: resolvedLabelVisible
216
222
  })
217
223
  ]
218
224
  });
219
225
  };
220
226
  const ButtonHandle = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(ButtonHandleBase);
221
- function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, layout }) {
227
+ function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, labelVisible = true, layout }) {
222
228
  const labelElement = label ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
223
- className: (0, CssUtil_cjs_namespaceObject.cx)('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
229
+ "aria-hidden": labelVisible ? void 0 : true,
230
+ className: (0, CssUtil_cjs_namespaceObject.cx)('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted transition-opacity duration-250', labelVisible ? 'opacity-100' : 'opacity-0'),
224
231
  style: labelBackgroundColor ? {
225
232
  backgroundColor: labelBackgroundColor
226
233
  } : void 0,
@@ -266,6 +273,7 @@ const ButtonHandlesBase = ({ nodeId, handles, position, connectionPosition = pos
266
273
  }),
267
274
  visibleHandles.map((handle, index)=>{
268
275
  const handleVisible = handle.showHandle ?? visible;
276
+ const labelVisible = handleVisible && ('hover' !== handle.labelVisibility || selected || hovered);
269
277
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ButtonHandle, {
270
278
  id: handle.id,
271
279
  nodeId: nodeId,
@@ -276,10 +284,12 @@ const ButtonHandlesBase = ({ nodeId, handles, position, connectionPosition = pos
276
284
  label: handle.label,
277
285
  labelIcon: handle.labelIcon,
278
286
  labelBackgroundColor: handle.labelBackgroundColor,
287
+ labelVisibility: handle.labelVisibility,
279
288
  index: index,
280
289
  total: visibleHandles.length,
281
290
  selected: selected,
282
291
  visible: handleVisible,
292
+ labelVisible: labelVisible,
283
293
  showButton: finalSelected && handleVisible && handle.showButton,
284
294
  onAction: handle.onAction,
285
295
  onMouseEnter: handle.onMouseEnter,
@@ -1,5 +1,5 @@
1
1
  import { Position } from '../../xyflow/react.ts';
2
- import type { HandleConfigurationSpecificPosition } from '../../schema/node-definition/handle';
2
+ import type { HandleConfigurationSpecificPosition, HandleLabelVisibility } from '../../schema/node-definition/handle';
3
3
  import { type HandleType } from './HandleNotch';
4
4
  export interface HandleActionEvent {
5
5
  handleId: string;
@@ -25,6 +25,8 @@ type ButtonHandleProps = {
25
25
  labelIcon?: React.ReactNode;
26
26
  labelBackgroundColor?: string;
27
27
  visible?: boolean;
28
+ labelVisible?: boolean;
29
+ labelVisibility?: HandleLabelVisibility;
28
30
  showButton?: boolean;
29
31
  selected?: boolean;
30
32
  index?: number;
@@ -38,7 +40,7 @@ type ButtonHandleProps = {
38
40
  nodeHeight?: number;
39
41
  portalAction?: boolean;
40
42
  };
41
- export declare const ButtonHandle: import("react").MemoExoticComponent<({ id, nodeId, type, position, connectionPosition, handleType, label, labelIcon, labelBackgroundColor, visible, showButton, selected, index, total, onAction, onMouseEnter, onMouseLeave, showNotches, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction, }: ButtonHandleProps) => import("react/jsx-runtime").JSX.Element>;
43
+ export declare const ButtonHandle: import("react").MemoExoticComponent<({ id, nodeId, type, position, connectionPosition, handleType, label, labelIcon, labelBackgroundColor, visible, labelVisible, labelVisibility, showButton, selected, index, total, onAction, onMouseEnter, onMouseLeave, showNotches, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction, }: ButtonHandleProps) => import("react/jsx-runtime").JSX.Element>;
42
44
  export interface ButtonHandleConfig {
43
45
  id: string;
44
46
  type: 'source' | 'target';
@@ -47,6 +49,7 @@ export interface ButtonHandleConfig {
47
49
  labelIcon?: React.ReactNode;
48
50
  showButton?: boolean;
49
51
  labelBackgroundColor?: string;
52
+ labelVisibility?: HandleLabelVisibility;
50
53
  visible?: boolean;
51
54
  showHandle?: boolean;
52
55
  onAction?: (event: HandleActionEvent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonHandle.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/ButtonHandle.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ButtonHandle.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/ButtonHandle.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { HandleButton, HandleHoverBridge } from "./HandleButton.js";
10
10
  import { HandleLabel } from "./HandleLabel.js";
11
11
  import { HandleNotch } from "./HandleNotch.js";
12
12
  import { useButtonHandleSizeAndPosition } from "./useButtonHandleSizeAndPosition.js";
13
- const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = position, handleType, label, labelIcon, labelBackgroundColor, visible = true, showButton = true, selected = false, index = 0, total = 1, onAction, onMouseEnter, onMouseLeave, showNotches = true, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction = false })=>{
13
+ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = position, handleType, label, labelIcon, labelBackgroundColor, visible = true, labelVisible, labelVisibility, showButton = true, selected = false, index = 0, total = 1, onAction, onMouseEnter, onMouseLeave, showNotches = true, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction = false })=>{
14
14
  const handleRef = useRef(null);
15
15
  const [isHovered, setIsHovered] = useState(false);
16
16
  const isVertical = position === Position.Top || position === Position.Bottom;
@@ -78,6 +78,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
78
78
  const markAsHovered = useCallback(()=>setIsHovered(true), []);
79
79
  const unmarkAsHovered = useCallback(()=>setIsHovered(false), []);
80
80
  const showActionButton = !!onAction && 'source' === type;
81
+ const resolvedLabelVisible = labelVisible ?? visible;
82
+ const keepButtonMounted = 'hover' === labelVisibility;
81
83
  const { width: handleWidth, height: handleHeight, top, bottom, left, right, transform } = useButtonHandleSizeAndPosition({
82
84
  position,
83
85
  positionPercent,
@@ -108,6 +110,7 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
108
110
  label: label,
109
111
  labelIcon: labelIcon,
110
112
  labelBackgroundColor: labelBackgroundColor,
113
+ labelVisible: resolvedLabelVisible,
111
114
  layout: layout
112
115
  }),
113
116
  /*#__PURE__*/ jsx(Handle, {
@@ -123,7 +126,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
123
126
  }),
124
127
  showActionButton ? /*#__PURE__*/ jsx(HandleButton, {
125
128
  visible: showButton,
126
- labelVisible: visible,
129
+ labelVisible: resolvedLabelVisible,
130
+ keepButtonMounted: keepButtonMounted,
127
131
  position: connectionPosition,
128
132
  onAction: handleButtonClick,
129
133
  onMouseEnter: handleButtonMouseEnter,
@@ -169,7 +173,8 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
169
173
  }),
170
174
  showActionButton ? /*#__PURE__*/ jsx(HandleButton, {
171
175
  visible: showButton,
172
- labelVisible: visible,
176
+ labelVisible: resolvedLabelVisible,
177
+ keepButtonMounted: keepButtonMounted,
173
178
  position: position,
174
179
  onAction: handleButtonClick,
175
180
  onMouseEnter: handleButtonMouseEnter,
@@ -183,15 +188,17 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
183
188
  position: position,
184
189
  backgroundColor: labelBackgroundColor,
185
190
  label: label,
186
- labelIcon: labelIcon
191
+ labelIcon: labelIcon,
192
+ visible: resolvedLabelVisible
187
193
  })
188
194
  ]
189
195
  });
190
196
  };
191
197
  const ButtonHandle = /*#__PURE__*/ memo(ButtonHandleBase);
192
- function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, layout }) {
198
+ function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, labelVisible = true, layout }) {
193
199
  const labelElement = label ? /*#__PURE__*/ jsxs("div", {
194
- className: cx('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
200
+ "aria-hidden": labelVisible ? void 0 : true,
201
+ className: cx('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted transition-opacity duration-250', labelVisible ? 'opacity-100' : 'opacity-0'),
195
202
  style: labelBackgroundColor ? {
196
203
  backgroundColor: labelBackgroundColor
197
204
  } : void 0,
@@ -237,6 +244,7 @@ const ButtonHandlesBase = ({ nodeId, handles, position, connectionPosition = pos
237
244
  }),
238
245
  visibleHandles.map((handle, index)=>{
239
246
  const handleVisible = handle.showHandle ?? visible;
247
+ const labelVisible = handleVisible && ('hover' !== handle.labelVisibility || selected || hovered);
240
248
  return /*#__PURE__*/ jsx(ButtonHandle, {
241
249
  id: handle.id,
242
250
  nodeId: nodeId,
@@ -247,10 +255,12 @@ const ButtonHandlesBase = ({ nodeId, handles, position, connectionPosition = pos
247
255
  label: handle.label,
248
256
  labelIcon: handle.labelIcon,
249
257
  labelBackgroundColor: handle.labelBackgroundColor,
258
+ labelVisibility: handle.labelVisibility,
250
259
  index: index,
251
260
  total: visibleHandles.length,
252
261
  selected: selected,
253
262
  visible: handleVisible,
263
+ labelVisible: labelVisible,
254
264
  showButton: finalSelected && handleVisible && handle.showButton,
255
265
  onAction: handle.onAction,
256
266
  onMouseEnter: handle.onMouseEnter,
@@ -42,7 +42,7 @@ const BUTTON_POSITION = {
42
42
  [react_cjs_namespaceObject.Position.Right]: 'flex-row left-full top-1/2 -translate-y-1/2'
43
43
  };
44
44
  const DRAG_THRESHOLD = 5;
45
- const HandleButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({ visible, labelVisible, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal })=>{
45
+ const HandleButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({ visible, labelVisible, keepButtonMounted = false, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal })=>{
46
46
  const didDragRef = (0, external_react_namespaceObject.useRef)(false);
47
47
  const teardownRef = (0, external_react_namespaceObject.useRef)(null);
48
48
  (0, external_react_namespaceObject.useEffect)(()=>()=>teardownRef.current?.(), []);
@@ -90,17 +90,27 @@ const HandleButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({ v
90
90
  document.addEventListener('pointercancel', cleanup);
91
91
  teardownRef.current = cleanup;
92
92
  }, []);
93
+ const addButton = keepButtonMounted ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasInlineButton_cjs_namespaceObject.CanvasInlineButton, {
94
+ "aria-label": "Add node",
95
+ "aria-hidden": visible ? void 0 : true,
96
+ disabled: visible ? void 0 : true,
97
+ onClick: handleClick,
98
+ onPointerDown: handlePointerDown,
99
+ onMouseEnter: onMouseEnter,
100
+ onMouseLeave: onMouseLeave,
101
+ className: (0, CssUtil_cjs_namespaceObject.cx)('nodrag nopan transition-opacity duration-250', visible ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0 disabled:opacity-0')
102
+ }) : visible && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasInlineButton_cjs_namespaceObject.CanvasInlineButton, {
103
+ "aria-label": "Add node",
104
+ onClick: handleClick,
105
+ onPointerDown: handlePointerDown,
106
+ onMouseEnter: onMouseEnter,
107
+ onMouseLeave: onMouseLeave,
108
+ className: "nodrag nopan pointer-events-auto animate-fade-in"
109
+ });
93
110
  const content = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
94
111
  className: (0, CssUtil_cjs_namespaceObject.cx)('absolute flex items-center pointer-events-none', BUTTON_POSITION[position]),
95
112
  children: [
96
- visible && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasInlineButton_cjs_namespaceObject.CanvasInlineButton, {
97
- "aria-label": "Add node",
98
- onClick: handleClick,
99
- onPointerDown: handlePointerDown,
100
- onMouseEnter: onMouseEnter,
101
- onMouseLeave: onMouseLeave,
102
- className: "nodrag nopan pointer-events-auto animate-fade-in"
103
- }),
113
+ addButton,
104
114
  label && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(InlineLabel, {
105
115
  label: label,
106
116
  labelIcon: labelIcon,
@@ -109,7 +119,7 @@ const HandleButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({ v
109
119
  })
110
120
  ]
111
121
  });
112
- const shouldRenderPortal = Boolean(visible || label && labelVisible);
122
+ const shouldRenderPortal = Boolean(keepButtonMounted || visible || label && labelVisible);
113
123
  if (portal) {
114
124
  if (!shouldRenderPortal) return null;
115
125
  const { nodeId, ...anchor } = portal;
@@ -123,6 +133,7 @@ const HandleButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({ v
123
133
  return content;
124
134
  });
125
135
  const InlineLabel = ({ label, labelIcon, backgroundColor, visible = true })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
136
+ "aria-hidden": visible ? void 0 : true,
126
137
  className: (0, CssUtil_cjs_namespaceObject.cx)('px-1.5 py-0.5 rounded-sm whitespace-nowrap select-none transition-opacity duration-250 z-10', visible ? 'opacity-100' : 'opacity-0'),
127
138
  style: backgroundColor ? {
128
139
  backgroundColor
@@ -7,9 +7,10 @@ export type HandleButtonPortal = {
7
7
  height: number;
8
8
  transform: string;
9
9
  };
10
- export declare const HandleButton: import("react").MemoExoticComponent<({ visible, labelVisible, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal, }: {
10
+ export declare const HandleButton: import("react").MemoExoticComponent<({ visible, labelVisible, keepButtonMounted, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal, }: {
11
11
  visible?: boolean;
12
12
  labelVisible?: boolean;
13
+ keepButtonMounted?: boolean;
13
14
  position: Position;
14
15
  onAction: (event: React.MouseEvent) => void;
15
16
  onMouseEnter?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"HandleButton.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/HandleButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAepE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAUF,eAAO,MAAM,YAAY,8KAapB;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,oDAqHF,CAAC;AA0CF,eAAO,MAAM,iBAAiB,8DACJ;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,oDAOlE,CAAC"}
1
+ {"version":3,"file":"HandleButton.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/HandleButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAepE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAUF,eAAO,MAAM,YAAY,iMAcpB;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IAMvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,oDA6IF,CAAC;AA2CF,eAAO,MAAM,iBAAiB,8DACJ;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,oDAOlE,CAAC"}
@@ -13,7 +13,7 @@ const BUTTON_POSITION = {
13
13
  [Position.Right]: 'flex-row left-full top-1/2 -translate-y-1/2'
14
14
  };
15
15
  const DRAG_THRESHOLD = 5;
16
- const HandleButton = /*#__PURE__*/ memo(({ visible, labelVisible, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal })=>{
16
+ const HandleButton = /*#__PURE__*/ memo(({ visible, labelVisible, keepButtonMounted = false, position, onAction, onMouseEnter, onMouseLeave, handleRef, label, labelIcon, labelBackgroundColor, portal })=>{
17
17
  const didDragRef = useRef(false);
18
18
  const teardownRef = useRef(null);
19
19
  useEffect(()=>()=>teardownRef.current?.(), []);
@@ -61,17 +61,27 @@ const HandleButton = /*#__PURE__*/ memo(({ visible, labelVisible, position, onAc
61
61
  document.addEventListener('pointercancel', cleanup);
62
62
  teardownRef.current = cleanup;
63
63
  }, []);
64
+ const addButton = keepButtonMounted ? /*#__PURE__*/ jsx(CanvasInlineButton, {
65
+ "aria-label": "Add node",
66
+ "aria-hidden": visible ? void 0 : true,
67
+ disabled: visible ? void 0 : true,
68
+ onClick: handleClick,
69
+ onPointerDown: handlePointerDown,
70
+ onMouseEnter: onMouseEnter,
71
+ onMouseLeave: onMouseLeave,
72
+ className: cx('nodrag nopan transition-opacity duration-250', visible ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0 disabled:opacity-0')
73
+ }) : visible && /*#__PURE__*/ jsx(CanvasInlineButton, {
74
+ "aria-label": "Add node",
75
+ onClick: handleClick,
76
+ onPointerDown: handlePointerDown,
77
+ onMouseEnter: onMouseEnter,
78
+ onMouseLeave: onMouseLeave,
79
+ className: "nodrag nopan pointer-events-auto animate-fade-in"
80
+ });
64
81
  const content = /*#__PURE__*/ jsxs("div", {
65
82
  className: cx('absolute flex items-center pointer-events-none', BUTTON_POSITION[position]),
66
83
  children: [
67
- visible && /*#__PURE__*/ jsx(CanvasInlineButton, {
68
- "aria-label": "Add node",
69
- onClick: handleClick,
70
- onPointerDown: handlePointerDown,
71
- onMouseEnter: onMouseEnter,
72
- onMouseLeave: onMouseLeave,
73
- className: "nodrag nopan pointer-events-auto animate-fade-in"
74
- }),
84
+ addButton,
75
85
  label && /*#__PURE__*/ jsx(InlineLabel, {
76
86
  label: label,
77
87
  labelIcon: labelIcon,
@@ -80,7 +90,7 @@ const HandleButton = /*#__PURE__*/ memo(({ visible, labelVisible, position, onAc
80
90
  })
81
91
  ]
82
92
  });
83
- const shouldRenderPortal = Boolean(visible || label && labelVisible);
93
+ const shouldRenderPortal = Boolean(keepButtonMounted || visible || label && labelVisible);
84
94
  if (portal) {
85
95
  if (!shouldRenderPortal) return null;
86
96
  const { nodeId, ...anchor } = portal;
@@ -94,6 +104,7 @@ const HandleButton = /*#__PURE__*/ memo(({ visible, labelVisible, position, onAc
94
104
  return content;
95
105
  });
96
106
  const InlineLabel = ({ label, labelIcon, backgroundColor, visible = true })=>/*#__PURE__*/ jsx("div", {
107
+ "aria-hidden": visible ? void 0 : true,
97
108
  className: cx('px-1.5 py-0.5 rounded-sm whitespace-nowrap select-none transition-opacity duration-250 z-10', visible ? 'opacity-100' : 'opacity-0'),
98
109
  style: backgroundColor ? {
99
110
  backgroundColor
@@ -40,8 +40,9 @@ const LABEL_POSITION = {
40
40
  [react_cjs_namespaceObject.Position.Left]: 'right-[calc(100%+4px)] top-1/2 -translate-y-1/2',
41
41
  [react_cjs_namespaceObject.Position.Right]: 'left-[calc(100%+4px)] top-1/2 -translate-y-1/2'
42
42
  };
43
- const HandleLabel = ({ position, backgroundColor, label, labelIcon, shouldTruncate })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
44
- className: (0, CssUtil_cjs_namespaceObject.cx)('absolute px-1.5 py-0.5 rounded-sm z-1 whitespace-nowrap select-none', LABEL_POSITION[position], shouldTruncate && 'max-w-[50px] overflow-hidden'),
43
+ const HandleLabel = ({ position, backgroundColor, label, labelIcon, shouldTruncate, visible = true })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
44
+ "aria-hidden": visible ? void 0 : true,
45
+ className: (0, CssUtil_cjs_namespaceObject.cx)('absolute px-1.5 py-0.5 rounded-sm z-1 whitespace-nowrap select-none transition-opacity duration-250', visible ? 'opacity-100' : 'opacity-0 pointer-events-none', LABEL_POSITION[position], shouldTruncate && 'max-w-[50px] overflow-hidden'),
45
46
  style: backgroundColor ? {
46
47
  backgroundColor
47
48
  } : void 0,
@@ -2,11 +2,12 @@ import { Position } from '../../xyflow/react.ts';
2
2
  export declare const LABEL_SHADOW_STYLE: {
3
3
  readonly textShadow: "0 0 4px var(--canvas-background), 0 0 4px var(--canvas-background)";
4
4
  };
5
- export declare const HandleLabel: ({ position, backgroundColor, label, labelIcon, shouldTruncate, }: {
5
+ export declare const HandleLabel: ({ position, backgroundColor, label, labelIcon, shouldTruncate, visible, }: {
6
6
  position: Position;
7
7
  backgroundColor?: string;
8
8
  label: string;
9
9
  labelIcon?: React.ReactNode;
10
10
  shouldTruncate?: boolean;
11
+ visible?: boolean;
11
12
  }) => import("react/jsx-runtime").JSX.Element;
12
13
  //# sourceMappingURL=HandleLabel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HandleLabel.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/HandleLabel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAGpE,eAAO,MAAM,kBAAkB;;CAErB,CAAC;AASX,eAAO,MAAM,WAAW,GAAI,kEAMzB;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,4CAsBA,CAAC"}
1
+ {"version":3,"file":"HandleLabel.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ButtonHandle/HandleLabel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAGpE,eAAO,MAAM,kBAAkB;;CAErB,CAAC;AASX,eAAO,MAAM,WAAW,GAAI,2EAOzB;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,4CAwBA,CAAC"}
@@ -11,8 +11,9 @@ const LABEL_POSITION = {
11
11
  [Position.Left]: 'right-[calc(100%+4px)] top-1/2 -translate-y-1/2',
12
12
  [Position.Right]: 'left-[calc(100%+4px)] top-1/2 -translate-y-1/2'
13
13
  };
14
- const HandleLabel = ({ position, backgroundColor, label, labelIcon, shouldTruncate })=>/*#__PURE__*/ jsx("div", {
15
- className: cx('absolute px-1.5 py-0.5 rounded-sm z-1 whitespace-nowrap select-none', LABEL_POSITION[position], shouldTruncate && 'max-w-[50px] overflow-hidden'),
14
+ const HandleLabel = ({ position, backgroundColor, label, labelIcon, shouldTruncate, visible = true })=>/*#__PURE__*/ jsx("div", {
15
+ "aria-hidden": visible ? void 0 : true,
16
+ className: cx('absolute px-1.5 py-0.5 rounded-sm z-1 whitespace-nowrap select-none transition-opacity duration-250', visible ? 'opacity-100' : 'opacity-0 pointer-events-none', LABEL_POSITION[position], shouldTruncate && 'max-w-[50px] overflow-hidden'),
16
17
  style: backgroundColor ? {
17
18
  backgroundColor
18
19
  } : void 0,
@@ -43,6 +43,7 @@ export declare const caseFlowManifest: {
43
43
  itemVar?: string | undefined;
44
44
  indexVar?: string | undefined;
45
45
  showButton?: boolean | undefined;
46
+ labelVisibility?: "always" | "hover" | undefined;
46
47
  constraints?: {
47
48
  maxConnections?: number | undefined;
48
49
  minConnections?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"case-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/CaseFlow/case-flow.manifest.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAUhD,CAAC;AAMF,eAAO,MAAM,6BAA6B,EAAE,YA2D3C,CAAC;AAMF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI5B,CAAC"}
1
+ {"version":3,"file":"case-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/CaseFlow/case-flow.manifest.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAUhD,CAAC;AAMF,eAAO,MAAM,6BAA6B,EAAE,YA2D3C,CAAC;AAMF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI5B,CAAC"}