# PortLayoutArgs

Import it from `@grafloria/engine`.

```ts
interface PortLayoutArgs
```

**Properties**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| `x?` | `number` |  | Absolute position. Fractions of the node box by default; px when `units:'px'`. |
| `y?` | `number` |  |  |
| `units?` | `'fraction' \| 'px'` |  |  |
| `start?` | `{ x: number; y: number }` |  | Spread ports evenly from `start` to `end` (node-local px). |
| `end?` | `{ x: number; y: number }` |  |  |
| `step?` | `number` |  | Fixed spacing between consecutive ports, in px. When set, ports march from `start` toward `end` at this pitch instead of dividing the span evenly. |
| `padding?` | `number` |  | Inset from the corners of the edge, in px. Default 0. |
| `angle?` | `number` |  | Start angle in degrees (0° = +x axis, growing clockwise in screen space). |
| `sweep?` | `number` |  | Arc span in degrees. Default 360 (a full ring). |
| `radiusX?` | `number` |  | Radii, in px. Default: the node's half-extents (the inscribed ellipse). |
| `radiusY?` | `number` |  |  |
| `dx?` | `number` |  | Constant nudge applied after the strategy, in node-local px. |
| `dy?` | `number` |  |  |
| `compensateRotation?` | `boolean` |  | Counter-rotate the port about the node's centre by the node's own rotation, so a rotated node's ports keep their WORLD-space arrangement. Default false. |
