@octaviaflow/core 3.0.18-beta.12 → 3.0.18-beta.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"FlowEdge.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowEdge/FlowEdge.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAY,YAAY,IAAI,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK7F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,YAAY,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,UAAiB,EACjB,SAAgB,EAChB,YAAgB,GACjB,EAAE,aAAa,2CA6Nf;AA6BD,eAAO,MAAM,QAAQ,0DAiBnB,CAAC"}
1
+ {"version":3,"file":"FlowEdge.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowEdge/FlowEdge.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAY,YAAY,IAAI,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK7F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,YAAY,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,UAAiB,EACjB,SAAgB,EAChB,YAAgB,GACjB,EAAE,aAAa,2CAmOf;AA6BD,eAAO,MAAM,QAAQ,0DAiBnB,CAAC"}
@@ -5,6 +5,14 @@ export interface HandleProps {
5
5
  type: HandleType;
6
6
  /** Which side of the node the handle sits on. */
7
7
  position: HandlePosition;
8
+ /**
9
+ * Direction the edge should route from this handle. Defaults to
10
+ * `position`. Override it when the handle dot sits on one edge but the
11
+ * wire must leave/enter from another — e.g. a subflow's inner-facing
12
+ * port lives on the frame's `top` edge yet its wire curves `down` into
13
+ * the frame: `position="top" routeSide="bottom"`.
14
+ */
15
+ routeSide?: HandlePosition;
8
16
  /** Stable id within the node. Default `"default"`; required when >1 handle of same type. */
9
17
  id?: string;
10
18
  /** Defaults to true. Setting false disables both starting and ending here. */
@@ -22,5 +30,5 @@ export interface HandleProps {
22
30
  className?: string;
23
31
  style?: CSSProperties;
24
32
  }
25
- export declare function Handle({ type, position, id, isConnectable, isConnectableStart, isConnectableEnd, index, total, label, className, style, }: HandleProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function Handle({ type, position, routeSide, id, isConnectable, isConnectableStart, isConnectableEnd, index, total, label, className, style, }: HandleProps): import("react/jsx-runtime").JSX.Element;
26
34
  //# sourceMappingURL=Handle.d.ts.map
@@ -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,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,EAAsB,EACtB,aAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,KAAS,EACT,KAAS,EACT,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,WAAW,2CAoEb"}
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"}
@@ -3,7 +3,17 @@ export interface HandleDescriptor {
3
3
  nodeId: string;
4
4
  handleId: string;
5
5
  type: HandleType;
6
+ /** Physical edge the handle dot sits on — drives placement + the
7
+ * handle's flow-space centre. */
6
8
  side: HandlePosition;
9
+ /**
10
+ * Edge-routing direction. The bezier leaves/enters along THIS side,
11
+ * which is normally the same as `side`. A subflow's inner-facing port
12
+ * sits on the frame's outer edge (`side`) but must route INWARD — e.g.
13
+ * a port physically on `top` whose wire should curve `down` into the
14
+ * frame sets `routeSide: "bottom"`. Defaults to `side`.
15
+ */
16
+ routeSide: HandlePosition;
7
17
  /** 0-based position among same-(node, side, type) handles. */
8
18
  index: number;
9
19
  /** Total handles on the same (node, side, type). */
@@ -1 +1 @@
1
- {"version":3,"file":"handleRegistry.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/Handle/handleRegistry.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAC1F;;;yEAGqE;IACrE,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,qBAAqB,yCAA6C,CAAC;AAEhF,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAmCrD"}
1
+ {"version":3,"file":"handleRegistry.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/Handle/handleRegistry.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB;sCACkC;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,EAAE,cAAc,CAAC;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAC1F;;;yEAGqE;IACrE,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,qBAAqB,yCAA6C,CAAC;AAEhF,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAmCrD"}
package/dist/workflow.cjs CHANGED
@@ -1397,6 +1397,8 @@ function FlowEdgeImpl({
1397
1397
  const targetDesc = registry.resolve(targetNode.id, "target", targetHandleId);
1398
1398
  const sourceSide = sourceDesc?.side ?? sourceNode.sourcePosition ?? "bottom";
1399
1399
  const targetSide = targetDesc?.side ?? targetNode.targetPosition ?? "top";
1400
+ const sourceRoute = sourceDesc?.routeSide ?? sourceSide;
1401
+ const targetRoute = targetDesc?.routeSide ?? targetSide;
1400
1402
  const sourceIndex = sourceDesc?.index ?? 0;
1401
1403
  const sourceTotal = sourceDesc?.total ?? 1;
1402
1404
  const targetIndex = targetDesc?.index ?? 0;
@@ -1404,14 +1406,14 @@ function FlowEdgeImpl({
1404
1406
  const rawStart = handleCentre(sourceNode, sourceSide, sourceIndex, sourceTotal);
1405
1407
  const rawEnd = handleCentre(targetNode, targetSide, targetIndex, targetTotal);
1406
1408
  const HANDLE_GAP = 8;
1407
- const start = offsetAlongSide2(rawStart, sourceSide, HANDLE_GAP);
1408
- const end = offsetAlongSide2(rawEnd, targetSide, HANDLE_GAP);
1409
+ const start = offsetAlongSide2(rawStart, sourceRoute, HANDLE_GAP);
1410
+ const end = offsetAlongSide2(rawEnd, targetRoute, HANDLE_GAP);
1409
1411
  const routing = edge.routing ?? "bezier";
1410
- const { d, midX, midY } = buildEdgePath(routing, start, sourceSide, end, targetSide, {
1412
+ const { d, midX, midY } = buildEdgePath(routing, start, sourceRoute, end, targetRoute, {
1411
1413
  curvature,
1412
1414
  borderRadius
1413
1415
  });
1414
- const { d: hitD } = buildEdgePath(routing, rawStart, sourceSide, rawEnd, targetSide, {
1416
+ const { d: hitD } = buildEdgePath(routing, rawStart, sourceRoute, rawEnd, targetRoute, {
1415
1417
  curvature,
1416
1418
  borderRadius
1417
1419
  });
@@ -1729,6 +1731,7 @@ var DEFAULT_HANDLE_ID = "default";
1729
1731
  function Handle({
1730
1732
  type,
1731
1733
  position,
1734
+ routeSide,
1732
1735
  id = DEFAULT_HANDLE_ID,
1733
1736
  isConnectable = true,
1734
1737
  isConnectableStart,
@@ -1751,13 +1754,14 @@ function Handle({
1751
1754
  handleId: id,
1752
1755
  type,
1753
1756
  side: position,
1757
+ routeSide: routeSide ?? position,
1754
1758
  index,
1755
1759
  total,
1756
1760
  canStart,
1757
1761
  canEnd
1758
1762
  });
1759
1763
  return dispose;
1760
- }, [registry, node.id, id, type, position, index, total, canStart, canEnd]);
1764
+ }, [registry, node.id, id, type, position, routeSide, index, total, canStart, canEnd]);
1761
1765
  const handlePointerDown = (e) => {
1762
1766
  if (!canStart) return;
1763
1767
  e.stopPropagation();