@angflow/angular 0.0.13 → 0.0.15

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 (191) hide show
  1. package/README.md +14 -4
  2. package/dist/base.css +416 -411
  3. package/dist/esm/lib/agent/agent-bridge.service.d.ts +70 -0
  4. package/dist/esm/lib/agent/agent-bridge.service.d.ts.map +1 -0
  5. package/dist/esm/lib/agent/agent-bridge.service.js +331 -0
  6. package/dist/esm/lib/agent/agent-bridge.service.js.map +1 -0
  7. package/dist/esm/lib/agent/index.d.ts +7 -0
  8. package/dist/esm/lib/agent/index.d.ts.map +1 -0
  9. package/dist/esm/lib/agent/index.js +6 -0
  10. package/dist/esm/lib/agent/index.js.map +1 -0
  11. package/dist/esm/lib/agent/provide-agent-bridge.d.ts +27 -0
  12. package/dist/esm/lib/agent/provide-agent-bridge.d.ts.map +1 -0
  13. package/dist/esm/lib/agent/provide-agent-bridge.js +27 -0
  14. package/dist/esm/lib/agent/provide-agent-bridge.js.map +1 -0
  15. package/dist/esm/lib/agent/tool-schemas.d.ts +10 -0
  16. package/dist/esm/lib/agent/tool-schemas.d.ts.map +1 -0
  17. package/dist/esm/lib/agent/tool-schemas.js +234 -0
  18. package/dist/esm/lib/agent/tool-schemas.js.map +1 -0
  19. package/dist/esm/lib/agent/transports/websocket.d.ts +39 -0
  20. package/dist/esm/lib/agent/transports/websocket.d.ts.map +1 -0
  21. package/dist/esm/lib/agent/transports/websocket.js +95 -0
  22. package/dist/esm/lib/agent/transports/websocket.js.map +1 -0
  23. package/dist/esm/lib/agent/transports/window.d.ts +29 -0
  24. package/dist/esm/lib/agent/transports/window.d.ts.map +1 -0
  25. package/dist/esm/lib/agent/transports/window.js +65 -0
  26. package/dist/esm/lib/agent/transports/window.js.map +1 -0
  27. package/dist/esm/lib/agent/types.d.ts +66 -0
  28. package/dist/esm/lib/agent/types.d.ts.map +1 -0
  29. package/dist/esm/lib/agent/types.js +9 -0
  30. package/dist/esm/lib/agent/types.js.map +1 -0
  31. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts +4 -0
  32. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts.map +1 -1
  33. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.js +24 -20
  34. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.js.map +1 -1
  35. package/dist/esm/lib/components/attribution/attribution.component.d.ts +4 -0
  36. package/dist/esm/lib/components/attribution/attribution.component.d.ts.map +1 -1
  37. package/dist/esm/lib/components/attribution/attribution.component.js +22 -18
  38. package/dist/esm/lib/components/attribution/attribution.component.js.map +1 -1
  39. package/dist/esm/lib/components/background/background.component.d.ts +20 -0
  40. package/dist/esm/lib/components/background/background.component.d.ts.map +1 -1
  41. package/dist/esm/lib/components/background/background.component.js +159 -140
  42. package/dist/esm/lib/components/background/background.component.js.map +1 -1
  43. package/dist/esm/lib/components/connection-line/connection-line.component.d.ts +7 -0
  44. package/dist/esm/lib/components/connection-line/connection-line.component.d.ts.map +1 -1
  45. package/dist/esm/lib/components/connection-line/connection-line.component.js +7 -0
  46. package/dist/esm/lib/components/connection-line/connection-line.component.js.map +1 -1
  47. package/dist/esm/lib/components/controls/controls.component.d.ts +21 -0
  48. package/dist/esm/lib/components/controls/controls.component.d.ts.map +1 -1
  49. package/dist/esm/lib/components/controls/controls.component.js +21 -1
  50. package/dist/esm/lib/components/controls/controls.component.js.map +1 -1
  51. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts +4 -0
  52. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts.map +1 -1
  53. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.js +4 -0
  54. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.js.map +1 -1
  55. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts +14 -2
  56. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts.map +1 -1
  57. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js +12 -0
  58. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js.map +1 -1
  59. package/dist/esm/lib/components/edges/base-edge.component.d.ts +23 -0
  60. package/dist/esm/lib/components/edges/base-edge.component.d.ts.map +1 -1
  61. package/dist/esm/lib/components/edges/base-edge.component.js +63 -40
  62. package/dist/esm/lib/components/edges/base-edge.component.js.map +1 -1
  63. package/dist/esm/lib/components/edges/bezier-edge.component.d.ts +4 -0
  64. package/dist/esm/lib/components/edges/bezier-edge.component.d.ts.map +1 -1
  65. package/dist/esm/lib/components/edges/bezier-edge.component.js +4 -0
  66. package/dist/esm/lib/components/edges/bezier-edge.component.js.map +1 -1
  67. package/dist/esm/lib/components/edges/edge-text.component.d.ts +4 -0
  68. package/dist/esm/lib/components/edges/edge-text.component.d.ts.map +1 -1
  69. package/dist/esm/lib/components/edges/edge-text.component.js +30 -26
  70. package/dist/esm/lib/components/edges/edge-text.component.js.map +1 -1
  71. package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts +4 -0
  72. package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts.map +1 -1
  73. package/dist/esm/lib/components/edges/simple-bezier-edge.component.js +4 -0
  74. package/dist/esm/lib/components/edges/simple-bezier-edge.component.js.map +1 -1
  75. package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts +1 -0
  76. package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts.map +1 -1
  77. package/dist/esm/lib/components/edges/smooth-step-edge.component.js +1 -0
  78. package/dist/esm/lib/components/edges/smooth-step-edge.component.js.map +1 -1
  79. package/dist/esm/lib/components/edges/step-edge.component.d.ts +1 -0
  80. package/dist/esm/lib/components/edges/step-edge.component.d.ts.map +1 -1
  81. package/dist/esm/lib/components/edges/step-edge.component.js +1 -0
  82. package/dist/esm/lib/components/edges/step-edge.component.js.map +1 -1
  83. package/dist/esm/lib/components/edges/straight-edge.component.d.ts +1 -0
  84. package/dist/esm/lib/components/edges/straight-edge.component.d.ts.map +1 -1
  85. package/dist/esm/lib/components/edges/straight-edge.component.js +1 -0
  86. package/dist/esm/lib/components/edges/straight-edge.component.js.map +1 -1
  87. package/dist/esm/lib/components/handle/handle.component.d.ts +20 -1
  88. package/dist/esm/lib/components/handle/handle.component.d.ts.map +1 -1
  89. package/dist/esm/lib/components/handle/handle.component.js +25 -2
  90. package/dist/esm/lib/components/handle/handle.component.js.map +1 -1
  91. package/dist/esm/lib/components/minimap/minimap.component.d.ts +34 -0
  92. package/dist/esm/lib/components/minimap/minimap.component.d.ts.map +1 -1
  93. package/dist/esm/lib/components/minimap/minimap.component.js +30 -4
  94. package/dist/esm/lib/components/minimap/minimap.component.js.map +1 -1
  95. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts +14 -0
  96. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts.map +1 -1
  97. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js +14 -0
  98. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js.map +1 -1
  99. package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts +29 -0
  100. package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts.map +1 -1
  101. package/dist/esm/lib/components/node-resizer/node-resizer.component.js +153 -124
  102. package/dist/esm/lib/components/node-resizer/node-resizer.component.js.map +1 -1
  103. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts +21 -1
  104. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts.map +1 -1
  105. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js +21 -1
  106. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js.map +1 -1
  107. package/dist/esm/lib/components/nodes/default-node.component.d.ts +4 -0
  108. package/dist/esm/lib/components/nodes/default-node.component.d.ts.map +1 -1
  109. package/dist/esm/lib/components/nodes/default-node.component.js +13 -9
  110. package/dist/esm/lib/components/nodes/default-node.component.js.map +1 -1
  111. package/dist/esm/lib/components/nodes/group-node.component.d.ts +5 -0
  112. package/dist/esm/lib/components/nodes/group-node.component.d.ts.map +1 -1
  113. package/dist/esm/lib/components/nodes/group-node.component.js +5 -0
  114. package/dist/esm/lib/components/nodes/group-node.component.js.map +1 -1
  115. package/dist/esm/lib/components/nodes/input-node.component.d.ts +4 -0
  116. package/dist/esm/lib/components/nodes/input-node.component.d.ts.map +1 -1
  117. package/dist/esm/lib/components/nodes/input-node.component.js +11 -7
  118. package/dist/esm/lib/components/nodes/input-node.component.js.map +1 -1
  119. package/dist/esm/lib/components/nodes/output-node.component.d.ts +4 -0
  120. package/dist/esm/lib/components/nodes/output-node.component.d.ts.map +1 -1
  121. package/dist/esm/lib/components/nodes/output-node.component.js +11 -7
  122. package/dist/esm/lib/components/nodes/output-node.component.js.map +1 -1
  123. package/dist/esm/lib/components/panel/panel.component.d.ts +12 -0
  124. package/dist/esm/lib/components/panel/panel.component.d.ts.map +1 -1
  125. package/dist/esm/lib/components/panel/panel.component.js +12 -0
  126. package/dist/esm/lib/components/panel/panel.component.js.map +1 -1
  127. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts +5 -0
  128. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts.map +1 -1
  129. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.js +5 -0
  130. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.js.map +1 -1
  131. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts.map +1 -1
  132. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js +35 -3
  133. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js.map +1 -1
  134. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts +158 -5
  135. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts.map +1 -1
  136. package/dist/esm/lib/container/ng-flow/ng-flow.component.js +167 -28
  137. package/dist/esm/lib/container/ng-flow/ng-flow.component.js.map +1 -1
  138. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts +2 -0
  139. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts.map +1 -1
  140. package/dist/esm/lib/container/node-renderer/node-renderer.component.js +40 -2
  141. package/dist/esm/lib/container/node-renderer/node-renderer.component.js.map +1 -1
  142. package/dist/esm/lib/container/pane/pane.component.d.ts +0 -1
  143. package/dist/esm/lib/container/pane/pane.component.d.ts.map +1 -1
  144. package/dist/esm/lib/container/pane/pane.component.js +18 -25
  145. package/dist/esm/lib/container/pane/pane.component.js.map +1 -1
  146. package/dist/esm/lib/container/viewport/viewport.component.d.ts +4 -0
  147. package/dist/esm/lib/container/viewport/viewport.component.d.ts.map +1 -1
  148. package/dist/esm/lib/container/viewport/viewport.component.js +4 -0
  149. package/dist/esm/lib/container/viewport/viewport.component.js.map +1 -1
  150. package/dist/esm/lib/directives/drag.directive.d.ts +17 -0
  151. package/dist/esm/lib/directives/drag.directive.d.ts.map +1 -1
  152. package/dist/esm/lib/directives/drag.directive.js +17 -0
  153. package/dist/esm/lib/directives/drag.directive.js.map +1 -1
  154. package/dist/esm/lib/directives/key-handler.directive.d.ts +13 -0
  155. package/dist/esm/lib/directives/key-handler.directive.d.ts.map +1 -1
  156. package/dist/esm/lib/directives/key-handler.directive.js +13 -0
  157. package/dist/esm/lib/directives/key-handler.directive.js.map +1 -1
  158. package/dist/esm/lib/public-api.d.ts +2 -0
  159. package/dist/esm/lib/public-api.d.ts.map +1 -1
  160. package/dist/esm/lib/public-api.js +4 -0
  161. package/dist/esm/lib/public-api.js.map +1 -1
  162. package/dist/esm/lib/services/flow-store.service.d.ts +3 -0
  163. package/dist/esm/lib/services/flow-store.service.d.ts.map +1 -1
  164. package/dist/esm/lib/services/flow-store.service.js +3 -0
  165. package/dist/esm/lib/services/flow-store.service.js.map +1 -1
  166. package/dist/esm/lib/services/ng-flow.service.d.ts +82 -0
  167. package/dist/esm/lib/services/ng-flow.service.d.ts.map +1 -1
  168. package/dist/esm/lib/services/ng-flow.service.js +114 -30
  169. package/dist/esm/lib/services/ng-flow.service.js.map +1 -1
  170. package/dist/esm/lib/services/tokens.d.ts +23 -0
  171. package/dist/esm/lib/services/tokens.d.ts.map +1 -1
  172. package/dist/esm/lib/services/tokens.js +22 -0
  173. package/dist/esm/lib/services/tokens.js.map +1 -1
  174. package/dist/esm/lib/types/edges.d.ts +6 -5
  175. package/dist/esm/lib/types/edges.d.ts.map +1 -1
  176. package/dist/esm/lib/types/nodes.d.ts +46 -3
  177. package/dist/esm/lib/types/nodes.d.ts.map +1 -1
  178. package/dist/esm/lib/utils/changes.d.ts +20 -0
  179. package/dist/esm/lib/utils/changes.d.ts.map +1 -1
  180. package/dist/esm/lib/utils/changes.js +20 -0
  181. package/dist/esm/lib/utils/changes.js.map +1 -1
  182. package/dist/esm/lib/utils/index.d.ts +1 -0
  183. package/dist/esm/lib/utils/index.d.ts.map +1 -1
  184. package/dist/esm/lib/utils/index.js +1 -0
  185. package/dist/esm/lib/utils/index.js.map +1 -1
  186. package/dist/esm/lib/utils/inject-ng-flow-node.d.ts +20 -0
  187. package/dist/esm/lib/utils/inject-ng-flow-node.d.ts.map +1 -0
  188. package/dist/esm/lib/utils/inject-ng-flow-node.js +28 -0
  189. package/dist/esm/lib/utils/inject-ng-flow-node.js.map +1 -0
  190. package/dist/style.css +416 -411
  191. package/package.json +6 -6
package/dist/style.css CHANGED
@@ -905,489 +905,494 @@ svg.xy-flow__connectionline {
905
905
  }
906
906
 
907
907
 
908
- /*
909
- * @angflow/angular — Complete stylesheet
910
- *
911
- * Import this once in your app's global styles:
912
- * @import '@angflow/angular/styles/ng-flow.css';
913
- *
914
- * Or in angular.json:
915
- * "styles": ["node_modules/@angflow/angular/styles/ng-flow.css"]
916
- */
917
-
918
- /* ── CSS Custom Properties (theme defaults) ─────────────────────── */
919
- .xy-flow {
920
- direction: ltr;
921
-
922
- /* Edges */
923
- --xy-edge-stroke-default: #999;
924
- --xy-edge-stroke-width-default: 1.5;
925
- --xy-edge-stroke-selected-default: #555;
926
-
927
- /* Connection line */
928
- --xy-connectionline-stroke-default: #555;
929
- --xy-connectionline-stroke-width-default: 2;
930
-
931
- /* Attribution */
932
- --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);
933
-
934
- /* Minimap */
935
- --xy-minimap-background-color-default: #fff;
936
- --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);
937
- --xy-minimap-mask-stroke-color-default: transparent;
938
- --xy-minimap-mask-stroke-width-default: 1;
939
- --xy-minimap-node-background-color-default: #e2e2e2;
940
- --xy-minimap-node-stroke-color-default: transparent;
941
- --xy-minimap-node-stroke-width-default: 2;
942
-
943
- /* Background */
944
- --xy-background-color-default: #fafafa;
945
- --xy-background-pattern-dots-color-default: #91919a;
946
- --xy-background-pattern-lines-color-default: #eee;
947
- --xy-background-pattern-cross-color-default: #e2e2e2;
948
-
949
- /* Nodes */
950
- --xy-node-color-default: inherit;
951
- --xy-node-border-default: 1px solid #1a192b;
952
- --xy-node-background-color-default: #fff;
953
- --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
954
- --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
955
- --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;
956
- --xy-node-border-radius-default: 3px;
957
-
958
- /* Handles */
959
- --xy-handle-background-color-default: #1a192b;
960
- --xy-handle-border-color-default: #fff;
961
-
962
- /* Selection */
963
- --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);
964
- --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);
965
-
966
- /* Controls */
967
- --xy-controls-button-background-color-default: #fefefe;
968
- --xy-controls-button-background-color-hover-default: #f4f4f4;
969
- --xy-controls-button-color-default: inherit;
970
- --xy-controls-button-border-color-default: #eee;
971
- --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
972
-
973
- /* Edge labels */
974
- --xy-edge-label-background-color-default: #ffffff;
975
- --xy-edge-label-color-default: inherit;
976
-
977
- background-color: var(--xy-background-color, var(--xy-background-color-default));
908
+ /*
909
+ * @angflow/angular — Complete stylesheet
910
+ *
911
+ * Import this once in your app's global styles:
912
+ * @import '@angflow/angular/styles/ng-flow.css';
913
+ *
914
+ * Or in angular.json:
915
+ * "styles": ["node_modules/@angflow/angular/styles/ng-flow.css"]
916
+ */
917
+
918
+ /* ── CSS Custom Properties (theme defaults) ─────────────────────── */
919
+ .xy-flow {
920
+ direction: ltr;
921
+
922
+ /* Edges */
923
+ --xy-edge-stroke-default: #999;
924
+ --xy-edge-stroke-width-default: 1.5;
925
+ --xy-edge-stroke-selected-default: #555;
926
+
927
+ /* Connection line */
928
+ --xy-connectionline-stroke-default: #555;
929
+ --xy-connectionline-stroke-width-default: 2;
930
+
931
+ /* Attribution */
932
+ --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);
933
+
934
+ /* Minimap */
935
+ --xy-minimap-background-color-default: #fff;
936
+ --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);
937
+ --xy-minimap-mask-stroke-color-default: transparent;
938
+ --xy-minimap-mask-stroke-width-default: 1;
939
+ --xy-minimap-node-background-color-default: #e2e2e2;
940
+ --xy-minimap-node-stroke-color-default: transparent;
941
+ --xy-minimap-node-stroke-width-default: 2;
942
+
943
+ /* Background */
944
+ --xy-background-color-default: #fafafa;
945
+ --xy-background-pattern-dots-color-default: #91919a;
946
+ --xy-background-pattern-lines-color-default: #eee;
947
+ --xy-background-pattern-cross-color-default: #e2e2e2;
948
+
949
+ /* Nodes */
950
+ --xy-node-color-default: inherit;
951
+ --xy-node-border-default: 1px solid #1a192b;
952
+ --xy-node-background-color-default: #fff;
953
+ --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
954
+ --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
955
+ --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;
956
+ --xy-node-border-radius-default: 3px;
957
+
958
+ /* Handles */
959
+ --xy-handle-background-color-default: #1a192b;
960
+ --xy-handle-border-color-default: #fff;
961
+
962
+ /* Selection */
963
+ --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);
964
+ --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);
965
+
966
+ /* Controls */
967
+ --xy-controls-button-background-color-default: #fefefe;
968
+ --xy-controls-button-background-color-hover-default: #f4f4f4;
969
+ --xy-controls-button-color-default: inherit;
970
+ --xy-controls-button-border-color-default: #eee;
971
+ --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
972
+
973
+ /* Edge labels */
974
+ --xy-edge-label-background-color-default: #ffffff;
975
+ --xy-edge-label-color-default: inherit;
976
+
977
+ background-color: var(--xy-background-color, var(--xy-background-color-default));
978
978
  }
979
-
980
-
981
- /* Dark mode */
982
- .xy-flow.dark {
983
- --xy-edge-stroke-default: #3e3e3e;
984
- --xy-edge-stroke-selected-default: #727272;
985
- --xy-node-color-default: #f8f8f8;
986
- --xy-node-border-default: 1px solid #3c3c3c;
987
- --xy-node-background-color-default: #1e1e1e;
988
- --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);
989
- --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;
990
- --xy-handle-background-color-default: #bebebe;
991
- --xy-handle-border-color-default: #1e1e1e;
992
- --xy-background-color-default: #141414;
993
- --xy-background-pattern-dots-color-default: #777;
994
- --xy-background-pattern-lines-color-default: #777;
995
- --xy-background-pattern-cross-color-default: #777;
996
- --xy-minimap-background-color-default: #141414;
997
- --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);
998
- --xy-minimap-node-background-color-default: #2b2b2b;
999
- --xy-controls-button-background-color-default: #2b2b2b;
1000
- --xy-controls-button-background-color-hover-default: #3e3e3e;
1001
- --xy-controls-button-color-default: #f8f8f8;
1002
- --xy-controls-button-border-color-default: #5b5b5b;
1003
- --xy-edge-label-background-color-default: #141414;
1004
- --xy-edge-label-color-default: #f8f8f8;
979
+
980
+
981
+ /* Dark mode */
982
+ .xy-flow.dark {
983
+ --xy-edge-stroke-default: #3e3e3e;
984
+ --xy-edge-stroke-selected-default: #727272;
985
+ --xy-node-color-default: #f8f8f8;
986
+ --xy-node-border-default: 1px solid #3c3c3c;
987
+ --xy-node-background-color-default: #1e1e1e;
988
+ --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);
989
+ --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;
990
+ --xy-handle-background-color-default: #bebebe;
991
+ --xy-handle-border-color-default: #1e1e1e;
992
+ --xy-background-color-default: #141414;
993
+ --xy-background-pattern-dots-color-default: #777;
994
+ --xy-background-pattern-lines-color-default: #777;
995
+ --xy-background-pattern-cross-color-default: #777;
996
+ --xy-minimap-background-color-default: #141414;
997
+ --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);
998
+ --xy-minimap-node-background-color-default: #2b2b2b;
999
+ --xy-controls-button-background-color-default: #2b2b2b;
1000
+ --xy-controls-button-background-color-hover-default: #3e3e3e;
1001
+ --xy-controls-button-color-default: #f8f8f8;
1002
+ --xy-controls-button-border-color-default: #5b5b5b;
1003
+ --xy-edge-label-background-color-default: #141414;
1004
+ --xy-edge-label-color-default: #f8f8f8;
1005
1005
  }
1006
-
1007
-
1008
- /* ── Layout ─────────────────────────────────────────────────────── */
1009
- .xy-flow__container {
1010
- position: absolute;
1011
- width: 100%;
1012
- height: 100%;
1013
- top: 0;
1014
- left: 0;
1006
+
1007
+
1008
+ /* ── Layout ─────────────────────────────────────────────────────── */
1009
+ .xy-flow__container {
1010
+ position: absolute;
1011
+ width: 100%;
1012
+ height: 100%;
1013
+ top: 0;
1014
+ left: 0;
1015
1015
  }
1016
-
1017
-
1018
- .xy-flow__pane {
1019
- z-index: 1;
1020
- cursor: default;
1016
+
1017
+
1018
+ .xy-flow__pane {
1019
+ z-index: 1;
1020
+ cursor: default;
1021
1021
  }
1022
-
1022
+
1023
1023
  .xy-flow__pane.selection { cursor: pointer; }
1024
-
1025
-
1026
- .xy-flow__viewport {
1027
- transform-origin: 0 0;
1028
- z-index: 2;
1029
- pointer-events: none;
1024
+
1025
+
1026
+ .xy-flow__viewport {
1027
+ transform-origin: 0 0;
1028
+ z-index: 2;
1029
+ pointer-events: none;
1030
1030
  }
1031
-
1032
-
1031
+
1032
+
1033
1033
  .xy-flow__renderer { z-index: 4; }
1034
-
1034
+
1035
1035
  .xy-flow__selection { z-index: 6; }
1036
-
1037
-
1038
- /* ── Edges ──────────────────────────────────────────────────────── */
1039
- .xy-flow__edge-path {
1040
- stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1041
- stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));
1042
- fill: none;
1036
+
1037
+
1038
+ /* ── Edges ──────────────────────────────────────────────────────── */
1039
+ .xy-flow__edge-path {
1040
+ stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1041
+ stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));
1042
+ fill: none;
1043
1043
  }
1044
-
1045
-
1046
- .xy-flow__connection-path {
1047
- stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));
1048
- stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));
1049
- fill: none;
1044
+
1045
+
1046
+ .xy-flow__connection-path {
1047
+ stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));
1048
+ stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));
1049
+ fill: none;
1050
1050
  }
1051
-
1052
-
1051
+
1052
+
1053
1053
  .xy-flow .xy-flow__edges { position: absolute; }
1054
-
1055
- .xy-flow .xy-flow__edges svg {
1056
- overflow: visible;
1057
- position: absolute;
1058
- pointer-events: none;
1054
+
1055
+ .xy-flow .xy-flow__edges svg {
1056
+ overflow: visible;
1057
+ position: absolute;
1058
+ pointer-events: none;
1059
1059
  }
1060
-
1061
-
1060
+
1061
+
1062
1062
  .xy-flow__edge { pointer-events: visibleStroke; }
1063
-
1063
+
1064
1064
  .xy-flow__edge.selectable { cursor: pointer; }
1065
-
1066
- .xy-flow__edge.animated path {
1067
- stroke-dasharray: 5;
1068
- animation: xy-flow-dashdraw 0.5s linear infinite;
1065
+
1066
+ .xy-flow__edge.animated path {
1067
+ stroke-dasharray: 5;
1068
+ animation: xy-flow-dashdraw 0.5s linear infinite;
1069
1069
  }
1070
-
1071
- .xy-flow__edge.animated path.xy-flow__edge-interaction {
1072
- stroke-dasharray: none;
1073
- animation: none;
1070
+
1071
+ .xy-flow__edge.animated path.xy-flow__edge-interaction {
1072
+ stroke-dasharray: none;
1073
+ animation: none;
1074
1074
  }
1075
-
1076
- .xy-flow__edge.selected .xy-flow__edge-path,
1077
- .xy-flow__edge.selectable:focus .xy-flow__edge-path,
1078
- .xy-flow__edge.selectable:focus-visible .xy-flow__edge-path {
1079
- stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));
1075
+
1076
+ .xy-flow__edge.selected .xy-flow__edge-path,
1077
+ .xy-flow__edge.selectable:focus .xy-flow__edge-path,
1078
+ .xy-flow__edge.selectable:focus-visible .xy-flow__edge-path {
1079
+ stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));
1080
1080
  }
1081
-
1082
-
1081
+
1082
+
1083
1083
  .xy-flow__edge-textwrapper { pointer-events: all; }
1084
-
1084
+
1085
1085
  .xy-flow__edge-text { pointer-events: none; user-select: none; }
1086
-
1087
-
1088
- .xy-flow__arrowhead polyline {
1089
- stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1086
+
1087
+
1088
+ .xy-flow__arrowhead polyline {
1089
+ stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1090
1090
  }
1091
-
1092
- .xy-flow__arrowhead polyline.arrowclosed {
1093
- fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1091
+
1092
+ .xy-flow__arrowhead polyline.arrowclosed {
1093
+ fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
1094
1094
  }
1095
-
1096
-
1095
+
1096
+
1097
1097
  .xy-flow__connection { pointer-events: none; }
1098
-
1099
- svg.xy-flow__connectionline {
1100
- z-index: 1001;
1101
- overflow: visible;
1102
- position: absolute;
1098
+
1099
+ svg.xy-flow__connectionline {
1100
+ z-index: 1001;
1101
+ overflow: visible;
1102
+ position: absolute;
1103
1103
  }
1104
-
1105
-
1106
- @keyframes xy-flow-dashdraw {
1107
- from { stroke-dashoffset: 10; }
1104
+
1105
+
1106
+ @keyframes xy-flow-dashdraw {
1107
+ from { stroke-dashoffset: 10; }
1108
1108
  }
1109
-
1110
-
1111
- /* ── Nodes ──────────────────────────────────────────────────────── */
1112
- .xy-flow__nodes {
1113
- pointer-events: none;
1114
- transform-origin: 0 0;
1109
+
1110
+
1111
+ /* ── Nodes ──────────────────────────────────────────────────────── */
1112
+ .xy-flow__nodes {
1113
+ pointer-events: none;
1114
+ transform-origin: 0 0;
1115
1115
  }
1116
-
1117
-
1118
- .xy-flow__node {
1119
- position: absolute;
1120
- user-select: none;
1121
- pointer-events: all;
1122
- transform-origin: 0 0;
1123
- box-sizing: border-box;
1124
- cursor: default;
1116
+
1117
+
1118
+ .xy-flow__node {
1119
+ position: absolute;
1120
+ user-select: none;
1121
+ pointer-events: all;
1122
+ transform-origin: 0 0;
1123
+ box-sizing: border-box;
1124
+ cursor: default;
1125
1125
  }
1126
-
1126
+
1127
1127
  .xy-flow__node.selectable { cursor: pointer; }
1128
-
1129
- .xy-flow__node.selectable:hover {
1130
- box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
1128
+
1129
+ .xy-flow__node.connection-target {
1130
+ outline: 2px dashed var(--xy-connection-target-outline-color, #3b82f6);
1131
+ outline-offset: 4px;
1131
1132
  }
1132
-
1133
- .xy-flow__node.selectable.selected,
1134
- .xy-flow__node.selectable:focus,
1135
- .xy-flow__node.selectable:focus-visible {
1136
- box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
1137
- outline: none;
1133
+
1134
+ .xy-flow__node.selectable:hover {
1135
+ box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
1138
1136
  }
1139
-
1140
-
1141
- .xy-flow__node-input,
1142
- .xy-flow__node-default,
1143
- .xy-flow__node-output,
1144
- .xy-flow__node-group {
1145
- padding: 10px;
1146
- border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
1147
- width: 150px;
1148
- font-size: 12px;
1149
- color: var(--xy-node-color, var(--xy-node-color-default));
1150
- text-align: center;
1151
- border: var(--xy-node-border, var(--xy-node-border-default));
1152
- background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
1137
+
1138
+ .xy-flow__node.selectable.selected,
1139
+ .xy-flow__node.selectable:focus,
1140
+ .xy-flow__node.selectable:focus-visible {
1141
+ box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
1142
+ outline: none;
1153
1143
  }
1154
-
1155
-
1156
- .xy-flow__node-group {
1157
- background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
1144
+
1145
+
1146
+ .xy-flow__node-input,
1147
+ .xy-flow__node-default,
1148
+ .xy-flow__node-output,
1149
+ .xy-flow__node-group {
1150
+ padding: 10px;
1151
+ border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
1152
+ width: 150px;
1153
+ font-size: 12px;
1154
+ color: var(--xy-node-color, var(--xy-node-color-default));
1155
+ text-align: center;
1156
+ border: var(--xy-node-border, var(--xy-node-border-default));
1157
+ background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
1158
1158
  }
1159
-
1160
-
1161
- .xy-flow__nodesselection {
1162
- z-index: 3;
1163
- transform-origin: left top;
1164
- pointer-events: none;
1159
+
1160
+
1161
+ .xy-flow__node-group {
1162
+ background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
1165
1163
  }
1166
-
1167
- .xy-flow__nodesselection-rect {
1168
- position: absolute;
1169
- pointer-events: all;
1170
- cursor: grab;
1164
+
1165
+
1166
+ .xy-flow__nodesselection {
1167
+ z-index: 3;
1168
+ transform-origin: left top;
1169
+ pointer-events: none;
1171
1170
  }
1172
-
1173
-
1174
- /* ── Handles ────────────────────────────────────────────────────── */
1175
- .xy-flow__handle {
1176
- position: absolute;
1177
- pointer-events: none;
1178
- min-width: 5px;
1179
- min-height: 5px;
1180
- width: 8px;
1181
- height: 8px;
1182
- background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
1183
- border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
1184
- border-radius: 100%;
1171
+
1172
+ .xy-flow__nodesselection-rect {
1173
+ position: absolute;
1174
+ pointer-events: all;
1175
+ cursor: grab;
1185
1176
  }
1186
-
1177
+
1178
+
1179
+ /* ── Handles ────────────────────────────────────────────────────── */
1180
+ .xy-flow__handle {
1181
+ position: absolute;
1182
+ pointer-events: none;
1183
+ min-width: 5px;
1184
+ min-height: 5px;
1185
+ width: 8px;
1186
+ height: 8px;
1187
+ background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
1188
+ border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
1189
+ border-radius: 100%;
1190
+ }
1191
+
1187
1192
  .xy-flow__handle.connectingfrom { pointer-events: all; }
1188
-
1193
+
1189
1194
  .xy-flow__handle.connectionindicator { pointer-events: all; }
1190
-
1195
+
1191
1196
  .xy-flow__handle-bottom { top: auto; left: 50%; bottom: 0; transform: translate(-50%, 50%); }
1192
-
1197
+
1193
1198
  .xy-flow__handle-top { top: 0; left: 50%; transform: translate(-50%, -50%); }
1194
-
1199
+
1195
1200
  .xy-flow__handle-left { top: 50%; left: 0; transform: translate(-50%, -50%); }
1196
-
1201
+
1197
1202
  .xy-flow__handle-right { top: 50%; right: 0; transform: translate(50%, -50%); }
1198
-
1199
-
1200
- /* ── Selection box ──────────────────────────────────────────────── */
1201
- .xy-flow__selection,
1202
- .xy-flow__nodesselection-rect {
1203
- background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
1204
- border: var(--xy-selection-border, var(--xy-selection-border-default));
1203
+
1204
+
1205
+ /* ── Selection box ──────────────────────────────────────────────── */
1206
+ .xy-flow__selection,
1207
+ .xy-flow__nodesselection-rect {
1208
+ background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
1209
+ border: var(--xy-selection-border, var(--xy-selection-border-default));
1205
1210
  }
1206
-
1207
- .xy-flow__nodesselection-rect:focus,
1211
+
1212
+ .xy-flow__nodesselection-rect:focus,
1208
1213
  .xy-flow__nodesselection-rect:focus-visible { outline: none; }
1209
-
1210
-
1211
- /* ── Panels ─────────────────────────────────────────────────────── */
1212
- .xy-flow__panel {
1213
- position: absolute;
1214
- z-index: 5;
1215
- margin: 15px;
1214
+
1215
+
1216
+ /* ── Panels ─────────────────────────────────────────────────────── */
1217
+ .xy-flow__panel {
1218
+ position: absolute;
1219
+ z-index: 5;
1220
+ margin: 15px;
1216
1221
  }
1217
-
1222
+
1218
1223
  .xy-flow__panel.top { top: 0; }
1219
-
1224
+
1220
1225
  .xy-flow__panel.bottom { bottom: 0; }
1221
-
1226
+
1222
1227
  .xy-flow__panel.left { left: 0; }
1223
-
1228
+
1224
1229
  .xy-flow__panel.right { right: 0; }
1225
-
1226
- .xy-flow__panel.top.center, .xy-flow__panel.bottom.center {
1227
- left: 50%;
1228
- transform: translateX(-15px) translateX(-50%);
1230
+
1231
+ .xy-flow__panel.top.center, .xy-flow__panel.bottom.center {
1232
+ left: 50%;
1233
+ transform: translateX(-15px) translateX(-50%);
1229
1234
  }
1230
-
1231
- .xy-flow__panel.left.center, .xy-flow__panel.right.center {
1232
- top: 50%;
1233
- transform: translateY(-15px) translateY(-50%);
1235
+
1236
+ .xy-flow__panel.left.center, .xy-flow__panel.right.center {
1237
+ top: 50%;
1238
+ transform: translateY(-15px) translateY(-50%);
1234
1239
  }
1235
-
1236
-
1240
+
1241
+
1237
1242
  .xy-flow__pane.selection .xy-flow__panel { pointer-events: none; }
1238
-
1239
-
1240
- /* ── Controls ───────────────────────────────────────────────────── */
1241
- .xy-flow__controls {
1242
- display: flex;
1243
- flex-direction: column;
1244
- box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
1243
+
1244
+
1245
+ /* ── Controls ───────────────────────────────────────────────────── */
1246
+ .xy-flow__controls {
1247
+ display: flex;
1248
+ flex-direction: column;
1249
+ box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
1245
1250
  }
1246
-
1247
- .xy-flow__controls-button {
1248
- display: flex;
1249
- justify-content: center;
1250
- align-items: center;
1251
- height: 26px;
1252
- width: 26px;
1253
- padding: 4px;
1254
- border: none;
1255
- background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
1256
- border-bottom: 1px solid var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default));
1257
- color: var(--xy-controls-button-color, var(--xy-controls-button-color-default));
1258
- cursor: pointer;
1259
- user-select: none;
1251
+
1252
+ .xy-flow__controls-button {
1253
+ display: flex;
1254
+ justify-content: center;
1255
+ align-items: center;
1256
+ height: 26px;
1257
+ width: 26px;
1258
+ padding: 4px;
1259
+ border: none;
1260
+ background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
1261
+ border-bottom: 1px solid var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default));
1262
+ color: var(--xy-controls-button-color, var(--xy-controls-button-color-default));
1263
+ cursor: pointer;
1264
+ user-select: none;
1260
1265
  }
1261
-
1262
- .xy-flow__controls-button:hover {
1263
- background: var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default));
1266
+
1267
+ .xy-flow__controls-button:hover {
1268
+ background: var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default));
1264
1269
  }
1265
-
1270
+
1266
1271
  .xy-flow__controls-button:disabled { pointer-events: none; }
1267
-
1272
+
1268
1273
  .xy-flow__controls-button:disabled svg { fill-opacity: 0.4; }
1269
-
1270
- .xy-flow__controls-button svg {
1271
- width: 100%;
1272
- max-width: 12px;
1273
- max-height: 12px;
1274
- fill: currentColor;
1274
+
1275
+ .xy-flow__controls-button svg {
1276
+ width: 100%;
1277
+ max-width: 12px;
1278
+ max-height: 12px;
1279
+ fill: currentColor;
1275
1280
  }
1276
-
1281
+
1277
1282
  .xy-flow__controls-button:last-child { border-bottom: none; }
1278
-
1279
-
1280
- /* ── Minimap ────────────────────────────────────────────────────── */
1281
- .xy-flow__minimap {
1282
- background: var(--xy-minimap-background-color, var(--xy-minimap-background-color-default));
1283
+
1284
+
1285
+ /* ── Minimap ────────────────────────────────────────────────────── */
1286
+ .xy-flow__minimap {
1287
+ background: var(--xy-minimap-background-color, var(--xy-minimap-background-color-default));
1283
1288
  }
1284
-
1289
+
1285
1290
  .xy-flow__minimap-svg { display: block; }
1286
-
1287
- .xy-flow__minimap-mask {
1288
- fill: var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default));
1289
- stroke: var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default));
1290
- stroke-width: var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default));
1291
+
1292
+ .xy-flow__minimap-mask {
1293
+ fill: var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default));
1294
+ stroke: var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default));
1295
+ stroke-width: var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default));
1291
1296
  }
1292
-
1293
- .xy-flow__minimap-node {
1294
- fill: var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default));
1295
- stroke: var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default));
1296
- stroke-width: var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default));
1297
+
1298
+ .xy-flow__minimap-node {
1299
+ fill: var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default));
1300
+ stroke: var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default));
1301
+ stroke-width: var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default));
1297
1302
  }
1298
-
1299
-
1300
- /* ── Background ─────────────────────────────────────────────────── */
1303
+
1304
+
1305
+ /* ── Background ─────────────────────────────────────────────────── */
1301
1306
  .xy-flow__background { pointer-events: none; z-index: -1; }
1302
-
1303
- .xy-flow__background-pattern.dots {
1304
- fill: var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default));
1307
+
1308
+ .xy-flow__background-pattern.dots {
1309
+ fill: var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default));
1305
1310
  }
1306
-
1307
- .xy-flow__background-pattern.lines {
1308
- stroke: var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default));
1311
+
1312
+ .xy-flow__background-pattern.lines {
1313
+ stroke: var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default));
1309
1314
  }
1310
-
1311
- .xy-flow__background-pattern.cross {
1312
- stroke: var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default));
1315
+
1316
+ .xy-flow__background-pattern.cross {
1317
+ stroke: var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default));
1313
1318
  }
1314
-
1315
-
1316
- /* ── Edge labels / portals ──────────────────────────────────────── */
1317
- .ng-flow__edge-textbg {
1318
- fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
1319
+
1320
+
1321
+ /* ── Edge labels / portals ──────────────────────────────────────── */
1322
+ .ng-flow__edge-textbg {
1323
+ fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
1319
1324
  }
1320
-
1321
- .ng-flow__edge-text {
1322
- fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
1325
+
1326
+ .ng-flow__edge-text {
1327
+ fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
1323
1328
  }
1324
-
1325
-
1326
- .xy-flow__edgelabel-renderer {
1327
- position: absolute;
1328
- width: 100%;
1329
- height: 100%;
1330
- pointer-events: none;
1331
- user-select: none;
1332
- left: 0;
1333
- top: 0;
1329
+
1330
+
1331
+ .xy-flow__edgelabel-renderer {
1332
+ position: absolute;
1333
+ width: 100%;
1334
+ height: 100%;
1335
+ pointer-events: none;
1336
+ user-select: none;
1337
+ left: 0;
1338
+ top: 0;
1334
1339
  }
1335
-
1336
-
1337
- .xy-flow__viewport-portal {
1338
- position: absolute;
1339
- width: 100%;
1340
- height: 100%;
1341
- left: 0;
1342
- top: 0;
1343
- user-select: none;
1340
+
1341
+
1342
+ .xy-flow__viewport-portal {
1343
+ position: absolute;
1344
+ width: 100%;
1345
+ height: 100%;
1346
+ left: 0;
1347
+ top: 0;
1348
+ user-select: none;
1344
1349
  }
1345
-
1346
-
1347
- /* ── Edge reconnect anchors ─────────────────────────────────────── */
1348
- .xy-flow__edgeupdater {
1349
- cursor: move;
1350
- pointer-events: all;
1350
+
1351
+
1352
+ /* ── Edge reconnect anchors ─────────────────────────────────────── */
1353
+ .xy-flow__edgeupdater {
1354
+ cursor: move;
1355
+ pointer-events: all;
1351
1356
  }
1352
-
1353
-
1354
- /* ── Attribution ────────────────────────────────────────────────── */
1355
- .xy-flow__attribution {
1356
- font-size: 10px;
1357
- background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
1358
- padding: 2px 3px;
1359
- margin: 0;
1357
+
1358
+
1359
+ /* ── Attribution ────────────────────────────────────────────────── */
1360
+ .xy-flow__attribution {
1361
+ font-size: 10px;
1362
+ background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
1363
+ padding: 2px 3px;
1364
+ margin: 0;
1360
1365
  }
1361
-
1366
+
1362
1367
  .xy-flow__attribution a { text-decoration: none; color: #999; }
1363
-
1364
-
1365
- /*
1366
- * ── Cursor overrides ───────────────────────────────────────────────
1367
- *
1368
- * Native CSS cursors (grab, grabbing, crosshair) render as invisible white
1369
- * on some Windows setups with a white pointer scheme. We ship custom SVG
1370
- * cursors (white fill + black outline) that always work on any OS/theme,
1371
- * with native cursors as fallback.
1372
- */
1373
-
1374
- /* Open hand — pane & draggable nodes */
1375
- .xy-flow__pane.draggable,
1376
- .xy-flow__node.draggable {
1377
- cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg fill='white' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 10V5.5a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M9 6V3.5a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M11.5 5.5V4a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M14 6.5V5.5a1.25 1.25 0 0 1 2.5 0v5a5 5 0 0 1-5 5h-1a5 5 0 0 1-4.2-2.3L4 9.8a1.25 1.25 0 0 1 1.8-1.5L6.5 10'/%3E%3C/g%3E%3C/svg%3E") 11 4, grab;
1378
- pointer-events: all;
1368
+
1369
+
1370
+ /*
1371
+ * ── Cursor overrides ───────────────────────────────────────────────
1372
+ *
1373
+ * Native CSS cursors (grab, grabbing, crosshair) render as invisible white
1374
+ * on some Windows setups with a white pointer scheme. We ship custom SVG
1375
+ * cursors (white fill + black outline) that always work on any OS/theme,
1376
+ * with native cursors as fallback.
1377
+ */
1378
+
1379
+ /* Open hand — pane & draggable nodes */
1380
+ .xy-flow__pane.draggable,
1381
+ .xy-flow__node.draggable {
1382
+ cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg fill='white' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 10V5.5a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M9 6V3.5a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M11.5 5.5V4a1.25 1.25 0 0 1 2.5 0V9'/%3E%3Cpath d='M14 6.5V5.5a1.25 1.25 0 0 1 2.5 0v5a5 5 0 0 1-5 5h-1a5 5 0 0 1-4.2-2.3L4 9.8a1.25 1.25 0 0 1 1.8-1.5L6.5 10'/%3E%3C/g%3E%3C/svg%3E") 11 4, grab;
1383
+ pointer-events: all;
1379
1384
  }
1380
-
1381
-
1382
- /* Closed hand — while dragging */
1383
- .xy-flow__pane.dragging,
1384
- .xy-flow__node.draggable.dragging {
1385
- cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg fill='white' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 11V10c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2'/%3E%3Cpath d='M9 9.5V9c0-.7.6-1.2 1.3-1.2S11.5 8.3 11.5 9'/%3E%3Cpath d='M11.5 9V8.5c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2'/%3E%3Cpath d='M14 9v-.5c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2v4a5 5 0 0 1-5 5h-1a5 5 0 0 1-4.2-2.3L4 11.8a1.25 1.25 0 0 1 1.8-1.5L6.5 11'/%3E%3C/g%3E%3C/svg%3E") 11 8, grabbing;
1385
+
1386
+
1387
+ /* Closed hand — while dragging */
1388
+ .xy-flow__pane.dragging,
1389
+ .xy-flow__node.draggable.dragging {
1390
+ cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Cg fill='white' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 11V10c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2'/%3E%3Cpath d='M9 9.5V9c0-.7.6-1.2 1.3-1.2S11.5 8.3 11.5 9'/%3E%3Cpath d='M11.5 9V8.5c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2'/%3E%3Cpath d='M14 9v-.5c0-.7.6-1.2 1.3-1.2s1.2.5 1.2 1.2v4a5 5 0 0 1-5 5h-1a5 5 0 0 1-4.2-2.3L4 11.8a1.25 1.25 0 0 1 1.8-1.5L6.5 11'/%3E%3C/g%3E%3C/svg%3E") 11 8, grabbing;
1386
1391
  }
1387
-
1388
-
1389
- /* Crosshair — connection handles */
1390
- .xy-flow__handle.connectionindicator {
1391
- cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='19'%3E%3Cg stroke='black' stroke-width='1.3'%3E%3Cline x1='9.5' y1='1' x2='9.5' y2='6' stroke='white' stroke-width='3'/%3E%3Cline x1='9.5' y1='13' x2='9.5' y2='18' stroke='white' stroke-width='3'/%3E%3Cline x1='1' y1='9.5' x2='6' y2='9.5' stroke='white' stroke-width='3'/%3E%3Cline x1='13' y1='9.5' x2='18' y2='9.5' stroke='white' stroke-width='3'/%3E%3Cline x1='9.5' y1='1' x2='9.5' y2='6'/%3E%3Cline x1='9.5' y1='13' x2='9.5' y2='18'/%3E%3Cline x1='1' y1='9.5' x2='6' y2='9.5'/%3E%3Cline x1='13' y1='9.5' x2='18' y2='9.5'/%3E%3C/g%3E%3C/svg%3E") 9 9, crosshair;
1392
+
1393
+
1394
+ /* Crosshair — connection handles */
1395
+ .xy-flow__handle.connectionindicator {
1396
+ cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='19'%3E%3Cg stroke='black' stroke-width='1.3'%3E%3Cline x1='9.5' y1='1' x2='9.5' y2='6' stroke='white' stroke-width='3'/%3E%3Cline x1='9.5' y1='13' x2='9.5' y2='18' stroke='white' stroke-width='3'/%3E%3Cline x1='1' y1='9.5' x2='6' y2='9.5' stroke='white' stroke-width='3'/%3E%3Cline x1='13' y1='9.5' x2='18' y2='9.5' stroke='white' stroke-width='3'/%3E%3Cline x1='9.5' y1='1' x2='9.5' y2='6'/%3E%3Cline x1='9.5' y1='13' x2='9.5' y2='18'/%3E%3Cline x1='1' y1='9.5' x2='6' y2='9.5'/%3E%3Cline x1='13' y1='9.5' x2='18' y2='9.5'/%3E%3C/g%3E%3C/svg%3E") 9 9, crosshair;
1392
1397
  }
1393
-
1398
+