@octaviaflow/core 3.1.0-beta.65 → 3.1.0-beta.67

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 (83) hide show
  1. package/dist/chunk-5AKA6EJB.js +3003 -0
  2. package/dist/chunk-5AKA6EJB.js.map +1 -0
  3. package/dist/components/AgentCard/AgentCard.d.ts +5 -0
  4. package/dist/components/AgentCard/AgentCard.d.ts.map +1 -1
  5. package/dist/components/Catalog/Catalog.d.ts +116 -0
  6. package/dist/components/Catalog/Catalog.d.ts.map +1 -0
  7. package/dist/components/Catalog/index.d.ts +2 -0
  8. package/dist/components/Catalog/index.d.ts.map +1 -0
  9. package/dist/components/ExecutionConsole/ExecutionConsole.d.ts.map +1 -1
  10. package/dist/components/FlowMinimap/FlowMinimap.d.ts.map +1 -1
  11. package/dist/components/FlowToolbar/FlowToolbar.d.ts +27 -0
  12. package/dist/components/FlowToolbar/FlowToolbar.d.ts.map +1 -1
  13. package/dist/components/FlowToolbar/index.d.ts +1 -1
  14. package/dist/components/FlowToolbar/index.d.ts.map +1 -1
  15. package/dist/components/ItemDetail/ItemDetail.d.ts +57 -0
  16. package/dist/components/ItemDetail/ItemDetail.d.ts.map +1 -0
  17. package/dist/components/ItemDetail/index.d.ts +2 -0
  18. package/dist/components/ItemDetail/index.d.ts.map +1 -0
  19. package/dist/components/MessageBlockBuilder/BlockFieldsEditor.d.ts +18 -0
  20. package/dist/components/MessageBlockBuilder/BlockFieldsEditor.d.ts.map +1 -0
  21. package/dist/components/MessageBlockBuilder/MessageBlockBuilder.d.ts +6 -0
  22. package/dist/components/MessageBlockBuilder/MessageBlockBuilder.d.ts.map +1 -0
  23. package/dist/components/MessageBlockBuilder/MessagePreview.d.ts +9 -0
  24. package/dist/components/MessageBlockBuilder/MessagePreview.d.ts.map +1 -0
  25. package/dist/components/MessageBlockBuilder/TokenPanel.d.ts +17 -0
  26. package/dist/components/MessageBlockBuilder/TokenPanel.d.ts.map +1 -0
  27. package/dist/components/MessageBlockBuilder/glyphs.d.ts +18 -0
  28. package/dist/components/MessageBlockBuilder/glyphs.d.ts.map +1 -0
  29. package/dist/components/MessageBlockBuilder/index.d.ts +4 -0
  30. package/dist/components/MessageBlockBuilder/index.d.ts.map +1 -0
  31. package/dist/components/MessageBlockBuilder/internal.d.ts +33 -0
  32. package/dist/components/MessageBlockBuilder/internal.d.ts.map +1 -0
  33. package/dist/components/MessageBlockBuilder/platforms/googleChat.d.ts +7 -0
  34. package/dist/components/MessageBlockBuilder/platforms/googleChat.d.ts.map +1 -0
  35. package/dist/components/MessageBlockBuilder/platforms/index.d.ts +7 -0
  36. package/dist/components/MessageBlockBuilder/platforms/index.d.ts.map +1 -0
  37. package/dist/components/MessageBlockBuilder/platforms/slack.d.ts +7 -0
  38. package/dist/components/MessageBlockBuilder/platforms/slack.d.ts.map +1 -0
  39. package/dist/components/MessageBlockBuilder/platforms/teams.d.ts +7 -0
  40. package/dist/components/MessageBlockBuilder/platforms/teams.d.ts.map +1 -0
  41. package/dist/components/MessageBlockBuilder/types.d.ts +183 -0
  42. package/dist/components/MessageBlockBuilder/types.d.ts.map +1 -0
  43. package/dist/components/PlanCard/PlanCard.d.ts +35 -0
  44. package/dist/components/PlanCard/PlanCard.d.ts.map +1 -0
  45. package/dist/components/PlanCard/index.d.ts +2 -0
  46. package/dist/components/PlanCard/index.d.ts.map +1 -0
  47. package/dist/components/PlanPicker/PlanPicker.d.ts +16 -0
  48. package/dist/components/PlanPicker/PlanPicker.d.ts.map +1 -0
  49. package/dist/components/PlanPicker/context.d.ts +8 -0
  50. package/dist/components/PlanPicker/context.d.ts.map +1 -0
  51. package/dist/components/PlanPicker/index.d.ts +2 -0
  52. package/dist/components/PlanPicker/index.d.ts.map +1 -0
  53. package/dist/components/PricingCard/index.d.ts +1 -1
  54. package/dist/components/PricingCard/index.d.ts.map +1 -1
  55. package/dist/components/TemplateCard/TemplateCard.d.ts +27 -0
  56. package/dist/components/TemplateCard/TemplateCard.d.ts.map +1 -1
  57. package/dist/components/UsageMeter/UsageMeter.d.ts +41 -0
  58. package/dist/components/UsageMeter/UsageMeter.d.ts.map +1 -0
  59. package/dist/components/UsageMeter/index.d.ts +2 -0
  60. package/dist/components/UsageMeter/index.d.ts.map +1 -0
  61. package/dist/index.cjs +16261 -11888
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.ts +8 -2
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +17360 -13037
  66. package/dist/index.js.map +1 -1
  67. package/dist/styles.css +1 -1
  68. package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts +3 -3
  69. package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts.map +1 -1
  70. package/dist/workflow/components/FlowNode/FlowNode.d.ts.map +1 -1
  71. package/dist/workflow/components/Handle/Handle.d.ts.map +1 -1
  72. package/dist/workflow/components/NodeResizer/NodeResizer.d.ts.map +1 -1
  73. package/dist/workflow/layout/dagre.d.ts.map +1 -1
  74. package/dist/workflow/layout/elk.d.ts.map +1 -1
  75. package/dist/workflow/layout/types.d.ts +1 -1
  76. package/dist/workflow/layout/types.d.ts.map +1 -1
  77. package/dist/workflow/utils/parenting.d.ts +26 -6
  78. package/dist/workflow/utils/parenting.d.ts.map +1 -1
  79. package/dist/workflow.cjs +97 -41
  80. package/dist/workflow.cjs.map +1 -1
  81. package/dist/workflow.js +12 -13
  82. package/dist/workflow.js.map +1 -1
  83. package/package.json +1 -1
@@ -107,9 +107,9 @@ export interface FlowCanvasProps {
107
107
  nodeCollisionGap?: number;
108
108
  /**
109
109
  * Same as `nodeCollisionGap` but applied to subflow containers
110
- * (`type === "group" | "forEach"`). Lets you keep groups visually
111
- * separated without applying the rule to the action nodes inside.
112
- * Default falls back to `nodeCollisionGap`.
110
+ * (`isContainerType` i.e. `group`; `forEach` is a simple node). Lets you
111
+ * keep groups visually separated without applying the rule to the action
112
+ * nodes inside. Default falls back to `nodeCollisionGap`.
113
113
  */
114
114
  subflowCollisionGap?: number;
115
115
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"FlowCanvas.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowCanvas/FlowCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlowCanvas.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowCanvas/FlowCanvas.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowNode.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowNode/FlowNode.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,IAAI,EAKJ,YAAkB,GACnB,EAAE,aAAa,2CA2Hf"}
1
+ {"version":3,"file":"FlowNode.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowNode/FlowNode.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,IAAI,EAKJ,YAAkB,GACnB,EAAE,aAAa,2CA+Hf"}
@@ -1 +1 @@
1
- {"version":3,"file":"Handle.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/Handle/Handle.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,OAAO,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/D,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,IAAI,EAAE,UAAU,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4FAA4F;IAC5F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAID,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,EAAsB,EACtB,aAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,KAAS,EACT,KAAS,EACT,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,WAAW,2CAqEb"}
1
+ {"version":3,"file":"Handle.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/Handle/Handle.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,OAAO,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/D,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,IAAI,EAAE,UAAU,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4FAA4F;IAC5F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAID,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,EAAsB,EACtB,aAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,KAAS,EACT,KAAS,EACT,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,WAAW,2CAuEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeResizer.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/NodeResizer/NodeResizer.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;8CAC0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAa,EACb,SAAc,EACd,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAkIlB"}
1
+ {"version":3,"file":"NodeResizer.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/NodeResizer/NodeResizer.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;8CAC0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAa,EACb,SAAc,EACd,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAuJlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"dagre.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/dagre.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EACD,SAAS,GACT;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAE,EACpE,QAAQ,GAAE,wBAA6B,GACtC,YAAY,CA+Dd"}
1
+ {"version":3,"file":"dagre.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/dagre.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EACD,SAAS,GACT;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAE,EACpE,QAAQ,GAAE,wBAA6B,GACtC,YAAY,CAkEd"}
@@ -1 +1 @@
1
- {"version":3,"file":"elk.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/elk.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,CAAC,EACN,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,aAAa,GACb,KAAK,CAAC;CACX;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,sBAA2B,GAAG,YAAY,CAgGjG"}
1
+ {"version":3,"file":"elk.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/elk.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,CAAC,EACN,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,aAAa,GACb,KAAK,CAAC;CACX;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,sBAA2B,GAAG,YAAY,CAyGjG"}
@@ -21,7 +21,7 @@ export interface DagreGraph {
21
21
  height: number;
22
22
  [k: string]: unknown;
23
23
  }): DagreGraph;
24
- setEdge(source: string, target: string, label?: Record<string, unknown>): DagreGraph;
24
+ setEdge(source: string, target: string, label?: Record<string, unknown>, name?: string): DagreGraph;
25
25
  node(id: string): {
26
26
  x: number;
27
27
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/types.ts"],"names":[],"mappings":"AAOA,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AAOnB;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,UAAU,CAAC;KAChF,CAAC;IACF,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACpD,mBAAmB,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC;IACnD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,UAAU,CAAC;IAC/F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACrF,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,KAAK,IAAI,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/types.ts"],"names":[],"mappings":"AAOA,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AAOnB;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,UAAU,CAAC;KAChF,CAAC;IACF,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACpD,mBAAmB,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC;IACnD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,UAAU,CAAC;IAG/F,OAAO,CACL,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAAC;IACd,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,KAAK,IAAI,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
@@ -1,4 +1,19 @@
1
- import type { Position, WorkflowNode } from "../editor";
1
+ import type { NodeKind, Position, WorkflowNode } from "../editor";
2
+ /**
3
+ * Node types that behave as containers — subflow frames whose children nest
4
+ * via `parentId` and render inside the frame.
5
+ *
6
+ * `forEach` is intentionally NOT a container. The DS renders it as a SIMPLE
7
+ * node (1 input on top, Each / Done outputs on the bottom) whose loop body is
8
+ * wired by EDGES, not nested by `parentId` (see ForEachNode). Treating it as
9
+ * a container let drag-to-reparent adopt nodes INTO a forEach; the host then
10
+ * silently dropped those "children" on save because its wire contract has no
11
+ * forEach-children concept — real data loss (DEV-200). Keep this list in sync
12
+ * with the kinds that actually render a child-hosting frame.
13
+ */
14
+ export declare const CONTAINER_NODE_TYPES: readonly NodeKind[];
15
+ /** True when a node type hosts nested children via `parentId`. */
16
+ export declare function isContainerType(type: NodeKind | undefined): boolean;
2
17
  /**
3
18
  * Returns the transitive descendants of a node — i.e. every node whose
4
19
  * `parentId` chain ends at `nodeId`. Stable order (DFS). The root node
@@ -20,11 +35,16 @@ export declare function findAncestor(node: WorkflowNode, nodes: WorkflowNode[],
20
35
  */
21
36
  export declare function clampToParentExtent(node: WorkflowNode, proposed: Position, nodes: WorkflowNode[]): Position;
22
37
  /**
23
- * Hit-test which container node (if any) currently contains the given
24
- * point. Used by drag-to-reparent and by drop-to-add to scope a new
25
- * node. Both `group` AND `forEach` are containers — a `forEach` holds
26
- * its iteration body the same way a `group` holds its members, so the
27
- * hit-test must accept either.
38
+ * Hit-test which container node (if any) contains the given point. Used by
39
+ * drag-to-reparent and drop-to-add to scope a node. Only `group` is a
40
+ * container (see `isContainerType` `forEach` is a simple node).
41
+ *
42
+ * When containers overlap or nest, the SMALLEST-area container under the
43
+ * point wins. That's the most specific / deepest-nested frame, and it
44
+ * matches the host's own drop hit-test (which picked the deepest container).
45
+ * The previous "last in array order" rule disagreed with the host, so a drag
46
+ * and a drop over the same nested groups could adopt into different parents
47
+ * (DEV-200).
28
48
  */
29
49
  export declare function findContainingGroup(point: Position, nodes: WorkflowNode[], exclude?: string[]): WorkflowNode | undefined;
30
50
  //# sourceMappingURL=parenting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parenting.d.ts","sourceRoot":"","sources":["../../../src/workflow/utils/parenting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGxD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA0BnF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,GACtC,YAAY,GAAG,SAAS,CAY1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,QAAQ,CAgBV;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,MAAM,EAAO,GACrB,YAAY,GAAG,SAAS,CAqB1B"}
1
+ {"version":3,"file":"parenting.d.ts","sourceRoot":"","sources":["../../../src/workflow/utils/parenting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGlE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,QAAQ,EAAc,CAAC;AAEnE,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA0BnF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,GACtC,YAAY,GAAG,SAAS,CAY1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,QAAQ,CAgBV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,MAAM,EAAO,GACrB,YAAY,GAAG,SAAS,CAyB1B"}
package/dist/workflow.cjs CHANGED
@@ -507,7 +507,7 @@ function createDagreEngine(dagre, defaults = {}) {
507
507
  }
508
508
  for (const e of edges) {
509
509
  if (e.hidden) continue;
510
- g.setEdge(e.source, e.target, { id: e.id });
510
+ g.setEdge(e.source, e.target, { id: e.id }, e.id);
511
511
  }
512
512
  lib.layout(g);
513
513
  const result = [];
@@ -565,6 +565,13 @@ function createElkEngine(elk, defaults = {}) {
565
565
  const engineOptions = Object.fromEntries(
566
566
  Object.entries(options?.engine ?? {}).map(([k, v]) => [k, String(v)])
567
567
  );
568
+ const baseLayeredOptions = {
569
+ "elk.algorithm": algorithm,
570
+ "elk.direction": ELK_DIRECTION[direction],
571
+ "elk.spacing.nodeNode": String(nodeSpacing),
572
+ "elk.layered.spacing.nodeNodeBetweenLayers": String(rankSpacing),
573
+ "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES"
574
+ };
568
575
  const buildChildren = (parentId) => {
569
576
  const list = childrenByParent.get(parentId) ?? [];
570
577
  return list.map((n) => ({
@@ -573,10 +580,7 @@ function createElkEngine(elk, defaults = {}) {
573
580
  height: n.height ?? DEFAULT_NODE_HEIGHT,
574
581
  children: childrenByParent.has(n.id) ? buildChildren(n.id) : void 0,
575
582
  layoutOptions: childrenByParent.has(n.id) ? {
576
- "elk.algorithm": algorithm,
577
- "elk.direction": ELK_DIRECTION[direction],
578
- "elk.spacing.nodeNode": String(nodeSpacing),
579
- "elk.layered.spacing.nodeNodeBetweenLayers": String(rankSpacing),
583
+ ...baseLayeredOptions,
580
584
  ...engineOptions
581
585
  } : void 0
582
586
  }));
@@ -589,13 +593,8 @@ function createElkEngine(elk, defaults = {}) {
589
593
  const graph = {
590
594
  id: "root",
591
595
  layoutOptions: {
592
- "elk.algorithm": algorithm,
593
- "elk.direction": ELK_DIRECTION[direction],
594
- "elk.spacing.nodeNode": String(nodeSpacing),
595
- "elk.layered.spacing.nodeNodeBetweenLayers": String(rankSpacing),
596
- ...Object.fromEntries(
597
- Object.entries(options?.engine ?? {}).map(([k, v]) => [k, String(v)])
598
- )
596
+ ...baseLayeredOptions,
597
+ ...engineOptions
599
598
  },
600
599
  children: buildChildren(void 0),
601
600
  edges: elkEdges
@@ -1098,6 +1097,10 @@ function resolveNodeCollisions(node, proposed, others, opts) {
1098
1097
  }
1099
1098
 
1100
1099
  // src/workflow/utils/parenting.ts
1100
+ var CONTAINER_NODE_TYPES = ["group"];
1101
+ function isContainerType(type) {
1102
+ return type !== void 0 && CONTAINER_NODE_TYPES.includes(type);
1103
+ }
1101
1104
  function descendantsOf(nodeId, nodes) {
1102
1105
  const childrenByParent = /* @__PURE__ */ new Map();
1103
1106
  for (const n of nodes) {
@@ -1154,20 +1157,25 @@ function clampToParentExtent(node, proposed, nodes) {
1154
1157
  };
1155
1158
  }
1156
1159
  function findContainingGroup(point, nodes, exclude = []) {
1157
- for (let i = nodes.length - 1; i >= 0; i--) {
1158
- const n = nodes[i];
1160
+ let best;
1161
+ let bestArea = Number.POSITIVE_INFINITY;
1162
+ for (const n of nodes) {
1159
1163
  if (exclude.includes(n.id)) continue;
1160
- if (n.type !== "group" && n.type !== "forEach") continue;
1164
+ if (!isContainerType(n.type)) continue;
1161
1165
  if (n.data && typeof n.data === "object" && n.data.collapsed) {
1162
1166
  continue;
1163
1167
  }
1164
1168
  const w = n.width ?? DEFAULT_NODE_WIDTH;
1165
1169
  const h = effectiveHeight(n);
1166
1170
  if (point.x >= n.position.x && point.y >= n.position.y && point.x <= n.position.x + w && point.y <= n.position.y + h) {
1167
- return n;
1171
+ const area = w * h;
1172
+ if (area < bestArea) {
1173
+ best = n;
1174
+ bestArea = area;
1175
+ }
1168
1176
  }
1169
1177
  }
1170
- return void 0;
1178
+ return best;
1171
1179
  }
1172
1180
 
1173
1181
  // src/workflow/components/FlowEdge/FlowEdge.tsx
@@ -1678,6 +1686,7 @@ function FlowNode({
1678
1686
  const draggedRef = (0, import_react11.useRef)(false);
1679
1687
  const CLICK_VS_DRAG_PX = 5;
1680
1688
  const handlePointerDown = (e) => {
1689
+ if (e.button !== 0) return;
1681
1690
  if (e.target.closest("[data-handle-id]")) return;
1682
1691
  if (e.target.closest("[data-flow-no-drag='true']")) return;
1683
1692
  e.stopPropagation();
@@ -1783,6 +1792,7 @@ function Handle({
1783
1792
  }, [registry, node.id, id, type, position, routeSide, index, total, canStart, canEnd]);
1784
1793
  const handlePointerDown = (e) => {
1785
1794
  if (!canStart) return;
1795
+ if (e.button !== 0) return;
1786
1796
  e.stopPropagation();
1787
1797
  e.preventDefault();
1788
1798
  dispatch({
@@ -1858,6 +1868,7 @@ function NodeResizer({
1858
1868
  const show = isVisible ?? selected;
1859
1869
  if (!show) return null;
1860
1870
  const beginResize = (e, corner) => {
1871
+ if (e.button !== 0) return;
1861
1872
  e.preventDefault();
1862
1873
  e.stopPropagation();
1863
1874
  e.target.setPointerCapture(e.pointerId);
@@ -1880,10 +1891,10 @@ function NodeResizer({
1880
1891
  if (!drag || drag.pointerId !== e.pointerId) return;
1881
1892
  const dx = (e.clientX - drag.startClientX) / viewport.zoom;
1882
1893
  const dy = (e.clientY - drag.startClientY) / viewport.zoom;
1894
+ const fixedRight = drag.startX + drag.startWidth;
1895
+ const fixedBottom = drag.startY + drag.startHeight;
1883
1896
  let nextW = drag.startWidth;
1884
1897
  let nextH = drag.startHeight;
1885
- let nextX = drag.startX;
1886
- let nextY = drag.startY;
1887
1898
  switch (drag.corner) {
1888
1899
  case "se":
1889
1900
  nextW = drag.startWidth + dx;
@@ -1892,28 +1903,37 @@ function NodeResizer({
1892
1903
  case "sw":
1893
1904
  nextW = drag.startWidth - dx;
1894
1905
  nextH = drag.startHeight + dy;
1895
- nextX = drag.startX + dx;
1896
1906
  break;
1897
1907
  case "ne":
1898
1908
  nextW = drag.startWidth + dx;
1899
1909
  nextH = drag.startHeight - dy;
1900
- nextY = drag.startY + dy;
1901
1910
  break;
1902
1911
  case "nw":
1903
1912
  nextW = drag.startWidth - dx;
1904
1913
  nextH = drag.startHeight - dy;
1905
- nextX = drag.startX + dx;
1906
- nextY = drag.startY + dy;
1907
1914
  break;
1908
1915
  }
1909
1916
  if (keepAspectRatio) {
1910
1917
  nextH = nextW / drag.aspect;
1911
- if (drag.corner === "nw" || drag.corner === "ne") {
1912
- nextY = drag.startY + (drag.startHeight - nextH);
1913
- }
1914
1918
  }
1915
1919
  nextW = Math.max(minWidth, maxWidth ? Math.min(maxWidth, nextW) : nextW);
1916
1920
  nextH = Math.max(minHeight, maxHeight ? Math.min(maxHeight, nextH) : nextH);
1921
+ let nextX = drag.startX;
1922
+ let nextY = drag.startY;
1923
+ switch (drag.corner) {
1924
+ case "se":
1925
+ break;
1926
+ case "sw":
1927
+ nextX = fixedRight - nextW;
1928
+ break;
1929
+ case "ne":
1930
+ nextY = fixedBottom - nextH;
1931
+ break;
1932
+ case "nw":
1933
+ nextX = fixedRight - nextW;
1934
+ nextY = fixedBottom - nextH;
1935
+ break;
1936
+ }
1917
1937
  flow.updateNode(node.id, {
1918
1938
  width: nextW,
1919
1939
  height: nextH,
@@ -2743,7 +2763,7 @@ function FlowCanvas(props) {
2743
2763
  y: d.startPosition.y + delta.dy
2744
2764
  };
2745
2765
  const clamped = d.skipClamp ? proposed : clampToParentExtent(dragNode, proposed, nodesRef.current);
2746
- const isContainer = dragNode.type === "group" || dragNode.type === "forEach";
2766
+ const isContainer = isContainerType(dragNode.type);
2747
2767
  const gap = isContainer ? subflowCollisionGapRef.current : nodeCollisionGapRef.current;
2748
2768
  const excludeIds = /* @__PURE__ */ new Set([d.nodeId, ...d.descendants.map((kid) => kid.id)]);
2749
2769
  const finalPos = resolveNodeCollisions(dragNode, clamped, nodesRef.current, {
@@ -2795,7 +2815,7 @@ function FlowCanvas(props) {
2795
2815
  };
2796
2816
  }
2797
2817
  const clamped = drag.skipClamp ? proposed : clampToParentExtent(dragNode, proposed, nodesRef.current);
2798
- const isContainer = dragNode.type === "group" || dragNode.type === "forEach";
2818
+ const isContainer = isContainerType(dragNode.type);
2799
2819
  const gap = isContainer ? subflowCollisionGapRef.current : nodeCollisionGapRef.current;
2800
2820
  const excludeIds = /* @__PURE__ */ new Set([
2801
2821
  drag.nodeId,
@@ -2818,10 +2838,12 @@ function FlowCanvas(props) {
2818
2838
  );
2819
2839
  }
2820
2840
  if (drag.evaluateReparent) {
2841
+ const dragW = dragNode.width ?? DEFAULT_NODE_WIDTH;
2842
+ const dragH = effectiveHeight(dragNode);
2821
2843
  const targetGroup = findContainingGroup(
2822
2844
  {
2823
- x: finalPos.x + (dragNode.width ?? 0) / 2,
2824
- y: finalPos.y + (dragNode.height ?? 0) / 2
2845
+ x: finalPos.x + dragW / 2,
2846
+ y: finalPos.y + dragH / 2
2825
2847
  },
2826
2848
  nodesRef.current,
2827
2849
  [drag.nodeId, ...drag.descendants.map((d) => d.id)]
@@ -2838,6 +2860,20 @@ function FlowCanvas(props) {
2838
2860
  extent: nextParentId ? "parent" : void 0
2839
2861
  };
2840
2862
  changes.push(change.node.replace(drag.nodeId, updated));
2863
+ if (targetGroup) {
2864
+ const pad = containerAutoResizePaddingRef.current;
2865
+ const curW = targetGroup.width ?? DEFAULT_NODE_WIDTH;
2866
+ const curH = targetGroup.height ?? effectiveHeight(targetGroup);
2867
+ const needW = finalPos.x + dragW + pad - targetGroup.position.x;
2868
+ const needH = finalPos.y + dragH + pad - targetGroup.position.y;
2869
+ const grownW = Math.max(curW, needW);
2870
+ const grownH = Math.max(curH, needH);
2871
+ if (grownW !== curW || grownH !== curH) {
2872
+ changes.push(
2873
+ change.node.dimensions(targetGroup.id, { width: grownW, height: grownH })
2874
+ );
2875
+ }
2876
+ }
2841
2877
  }
2842
2878
  }
2843
2879
  if (autoResizeContainersRef.current) {
@@ -3039,6 +3075,27 @@ function FlowCanvas(props) {
3039
3075
  y: py - (py - viewport.y) * k
3040
3076
  });
3041
3077
  };
3078
+ const handleWheelRef = (0, import_react15.useRef)(handleWheel);
3079
+ handleWheelRef.current = handleWheel;
3080
+ (0, import_react15.useEffect)(() => {
3081
+ const el = containerRef.current;
3082
+ if (!el) return;
3083
+ const listener = (e) => handleWheelRef.current(e);
3084
+ el.addEventListener("wheel", listener, { passive: false });
3085
+ return () => el.removeEventListener("wheel", listener);
3086
+ }, []);
3087
+ const zoomAroundCentre = (nextZoom) => {
3088
+ const rect = containerRef.current?.getBoundingClientRect();
3089
+ const vp = viewportRef.current;
3090
+ const cx = rect ? rect.width / 2 : 0;
3091
+ const cy = rect ? rect.height / 2 : 0;
3092
+ const k = nextZoom / vp.zoom;
3093
+ setViewport({
3094
+ zoom: nextZoom,
3095
+ x: cx - (cx - vp.x) * k,
3096
+ y: cy - (cy - vp.y) * k
3097
+ });
3098
+ };
3042
3099
  const dispatch = (0, import_react15.useCallback)(
3043
3100
  (a) => {
3044
3101
  if (a.type === "connection/start") {
@@ -3130,18 +3187,15 @@ function FlowCanvas(props) {
3130
3187
  zoomIn: (opts) => {
3131
3188
  const step = opts?.step ?? 0.2;
3132
3189
  const next = Math.min(maxZoom, viewportRef.current.zoom * (1 + step));
3133
- setViewport({ ...viewportRef.current, zoom: next });
3190
+ zoomAroundCentre(next);
3134
3191
  },
3135
3192
  zoomOut: (opts) => {
3136
3193
  const step = opts?.step ?? 0.2;
3137
3194
  const next = Math.max(minZoom, viewportRef.current.zoom / (1 + step));
3138
- setViewport({ ...viewportRef.current, zoom: next });
3195
+ zoomAroundCentre(next);
3139
3196
  },
3140
3197
  zoomTo: (level) => {
3141
- setViewport({
3142
- ...viewportRef.current,
3143
- zoom: Math.max(minZoom, Math.min(maxZoom, level))
3144
- });
3198
+ zoomAroundCentre(Math.max(minZoom, Math.min(maxZoom, level)));
3145
3199
  },
3146
3200
  // transforms
3147
3201
  screenToFlowPosition: (p) => screenToFlow(p, viewportRef.current),
@@ -3232,12 +3286,15 @@ function FlowCanvas(props) {
3232
3286
  const opt = fitViewOnInit;
3233
3287
  const shouldFit = opt === false ? false : opt !== void 0 ? true : !viewportPropProvided;
3234
3288
  if (!shouldFit) return;
3235
- if (nodes.length === 0) return;
3236
3289
  const rect = containerRef.current?.getBoundingClientRect();
3237
3290
  if (!rect || rect.width === 0 || rect.height === 0) return;
3238
- fitOnInitFiredRef.current = true;
3291
+ if (nodes.length === 0) {
3292
+ fitOnInitFiredRef.current = true;
3293
+ return;
3294
+ }
3239
3295
  const fitOpts = typeof opt === "object" && opt !== null ? opt : void 0;
3240
3296
  const raf = requestAnimationFrame(() => {
3297
+ fitOnInitFiredRef.current = true;
3241
3298
  void instance.fitView(fitOpts);
3242
3299
  });
3243
3300
  return () => cancelAnimationFrame(raf);
@@ -3293,7 +3350,7 @@ function FlowCanvas(props) {
3293
3350
  return edges.filter((e) => visibleIds.has(e.source) && visibleIds.has(e.target));
3294
3351
  }, [edges, nodes, visibleNodes]);
3295
3352
  const orderedNodes = (0, import_react15.useMemo)(() => {
3296
- const isContainer = (n) => n.type === "group" || n.type === "forEach";
3353
+ const isContainer = (n) => isContainerType(n.type);
3297
3354
  const depth = (n) => {
3298
3355
  let d = 0;
3299
3356
  let cursor = n.parentId;
@@ -3335,7 +3392,6 @@ function FlowCanvas(props) {
3335
3392
  ...style
3336
3393
  },
3337
3394
  onPointerDown: onCanvasPointerDown,
3338
- onWheel: handleWheel,
3339
3395
  onContextMenu: (e) => {
3340
3396
  const t = e.target;
3341
3397
  const nodeEl = t.closest("[data-node-id]");
@@ -3438,7 +3494,7 @@ function computeContainerAutoResize(nodes, pending, padding, minWidth, minHeight
3438
3494
  const HEADER = 56;
3439
3495
  const out = [];
3440
3496
  for (const parent of projected.values()) {
3441
- if (parent.type !== "group" && parent.type !== "forEach") continue;
3497
+ if (!isContainerType(parent.type)) continue;
3442
3498
  const children = [];
3443
3499
  for (const n of projected.values()) {
3444
3500
  if (n.parentId === parent.id) children.push(n);