diff --git a/d2layouts/d2sequence/constants.go b/d2layouts/d2sequence/constants.go
index a29578d5a..95de80681 100644
--- a/d2layouts/d2sequence/constants.go
+++ b/d2layouts/d2sequence/constants.go
@@ -6,7 +6,7 @@ const HORIZONTAL_PAD = 50.
// leaves at least 25 units of space on the top/bottom when computing the space required between messages
const VERTICAL_PAD = 50.
-const MIN_ACTOR_DISTANCE = 70.
+const MIN_ACTOR_DISTANCE = 250.
const MIN_ACTOR_WIDTH = 150.
diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go
index 277474be5..feedea323 100644
--- a/d2layouts/d2sequence/sequence_diagram.go
+++ b/d2layouts/d2sequence/sequence_diagram.go
@@ -32,6 +32,10 @@ type sequenceDiagram struct {
firstMessage map[*d2graph.Object]*d2graph.Edge
lastMessage map[*d2graph.Object]*d2graph.Edge
+ // the distance from actor[i] center to actor[i+1] center
+ // every neighbor actors need different distances depending on the message labels between them
+ actorXStep []float64
+
yStep float64
maxActorHeight float64
@@ -72,9 +76,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
curr := queue[0]
groups = append(groups, curr)
queue = queue[1:]
- for _, c := range curr.ChildrenArray {
- queue = append(queue, c)
- }
+ queue = append(queue, curr.ChildrenArray...)
}
} else {
actors = append(actors, obj)
@@ -91,6 +93,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
objectRank: make(map[*d2graph.Object]int),
firstMessage: make(map[*d2graph.Object]*d2graph.Edge),
lastMessage: make(map[*d2graph.Object]*d2graph.Edge),
+ actorXStep: make([]float64, len(actors)-1),
yStep: MIN_MESSAGE_DISTANCE,
maxActorHeight: 0.,
verticalIndices: make(map[string]int),
@@ -107,6 +110,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
queue := make([]*d2graph.Object, len(actor.ChildrenArray))
copy(queue, actor.ChildrenArray)
+ maxNoteWidth := 0.
for len(queue) > 0 {
child := queue[0]
queue = queue[1:]
@@ -120,6 +124,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
sd.notes = append(sd.notes, child)
sd.objectRank[child] = rank
child.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
+ maxNoteWidth = math.Max(maxNoteWidth, child.Width)
} else {
// spans have no labels
// TODO why not? Spans should be able to
@@ -131,12 +136,29 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
queue = append(queue, child.ChildrenArray...)
}
+
+ if rank != len(actors)-1 {
+ actorHW := actor.Width / 2.
+ nextActorHW := actors[rank+1].Width / 2.
+ sd.actorXStep[rank] = math.Max(actorHW+nextActorHW+HORIZONTAL_PAD, MIN_ACTOR_DISTANCE)
+ sd.actorXStep[rank] = math.Max(maxNoteWidth/2.+HORIZONTAL_PAD, sd.actorXStep[rank])
+ }
}
for _, message := range sd.messages {
sd.verticalIndices[message.AbsID()] = getEdgeEarliestLineNum(message)
sd.yStep = math.Max(sd.yStep, float64(message.LabelDimensions.Height))
+ // ensures that long labels, spanning over multiple actors, don't make for large gaps between actors
+ // by distributing the label length across the actors rank difference
+ rankDiff := math.Abs(float64(sd.objectRank[message.Src]) - float64(sd.objectRank[message.Dst]))
+ if rankDiff != 0 {
+ // rankDiff = 0 for self edges
+ distributedLabelWidth := float64(message.LabelDimensions.Width) / rankDiff
+ for rank := sd.objectRank[message.Src]; rank <= sd.objectRank[message.Dst]-1; rank++ {
+ sd.actorXStep[rank] = math.Max(sd.actorXStep[rank], distributedLabelWidth+HORIZONTAL_PAD)
+ }
+ }
sd.lastMessage[message.Src] = message
if _, exists := sd.firstMessage[message.Src]; !exists {
sd.firstMessage[message.Src] = message
@@ -242,10 +264,10 @@ func (sd *sequenceDiagram) placeGroup(group *d2graph.Object) {
)
}
-// placeActors places actors bottom aligned, side by side
+// placeActors places actors bottom aligned, side by side with centers spaced by sd.actorXStep
func (sd *sequenceDiagram) placeActors() {
- x := 0.
- for _, actor := range sd.actors {
+ centerX := sd.actors[0].Width / 2.
+ for rank, actor := range sd.actors {
shape := actor.Attributes.Shape.Value
var yOffset float64
if shape == d2target.ShapeImage || shape == d2target.ShapePerson {
@@ -258,8 +280,11 @@ func (sd *sequenceDiagram) placeActors() {
actor.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
yOffset = sd.maxActorHeight - actor.Height
}
- actor.TopLeft = geo.NewPoint(x, yOffset)
- x += actor.Width + MIN_ACTOR_DISTANCE
+ halfWidth := actor.Width / 2.
+ actor.TopLeft = geo.NewPoint(math.Round(centerX-halfWidth), yOffset)
+ if rank != len(sd.actors)-1 {
+ centerX += sd.actorXStep[rank]
+ }
}
}
diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go
index a577ccc18..22d6b86ec 100644
--- a/e2etests/stable_test.go
+++ b/e2etests/stable_test.go
@@ -1451,6 +1451,27 @@ c: "just an actor"
d2exporter.export -> CLI: resulting SVG
}
`,
+ }, {
+ name: "sequence_diagram_actor_distance",
+ script: `shape: sequence_diagram
+a: "an actor with a really long label that will break everything"
+c: "an\nactor\nwith\na\nreally\nlong\nlabel\nthat\nwill\nbreak\neverything"
+d: "simple"
+e: "a short one"
+b: "far away"
+f: "what if there were no labels between this actor and the previous one"
+a -> b: "short"
+a -> b: "long label for testing purposes and it must be really, really long"
+c -> d: "short"
+a -> d: "this should span many actors lifelines so we know how it will look like when redering a long label over many actors"
+d -> e: "long label for testing purposes and it must be really, really long"
+a -> f`,
+ }, {
+ name: "sequence_diagram_long_note",
+ script: `shape: sequence_diagram
+a -> b
+b.note: "a note here to remember that padding must consider notes too"
+a.note: "just\na\nlong\nnote\nhere"`,
},
}
diff --git a/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/board.exp.json
new file mode 100644
index 000000000..775f8b93e
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/board.exp.json
@@ -0,0 +1,715 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 210
+ },
+ "width": 487,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "an actor with a really long label that will break everything",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 387,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "c",
+ "type": "",
+ "pos": {
+ "x": 578,
+ "y": 50
+ },
+ "width": 177,
+ "height": 286,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "an\nactor\nwith\na\nreally\nlong\nlabel\nthat\nwill\nbreak\neverything",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 77,
+ "labelHeight": 186,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "d",
+ "type": "",
+ "pos": {
+ "x": 1014,
+ "y": 210
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "simple",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 50,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "e",
+ "type": "",
+ "pos": {
+ "x": 1460,
+ "y": 210
+ },
+ "width": 180,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a short one",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 1718,
+ "y": 210
+ },
+ "width": 163,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "far away",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 63,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "f",
+ "type": "",
+ "pos": {
+ "x": 1931,
+ "y": 210
+ },
+ "width": 561,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "what if there were no labels between this actor and the previous one",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 461,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "short",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 36,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 466
+ },
+ {
+ "x": 1799.5,
+ "y": 466
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[1]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "long label for testing purposes and it must be really, really long",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 411,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 596
+ },
+ {
+ "x": 1799.5,
+ "y": 596
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(c -> d)[0]",
+ "src": "c",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "short",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 36,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 666.5,
+ "y": 726
+ },
+ {
+ "x": 1089,
+ "y": 726
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> d)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "this should span many actors lifelines so we know how it will look like when redering a long label over many actors",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 745,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 856
+ },
+ {
+ "x": 1089,
+ "y": 856
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(d -> e)[0]",
+ "src": "d",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "e",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "long label for testing purposes and it must be really, really long",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 411,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1089,
+ "y": 986
+ },
+ {
+ "x": 1550,
+ "y": 986
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> f)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "f",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 1116
+ },
+ {
+ "x": 2211.5,
+ "y": 1116
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -- )[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "a-lifeline-end-2251863791",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 336
+ },
+ {
+ "x": 243.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(c -- )[0]",
+ "src": "c",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "c-lifeline-end-955173837",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 666.5,
+ "y": 336
+ },
+ {
+ "x": 666.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(d -- )[0]",
+ "src": "d",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d-lifeline-end-2106864010",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1089,
+ "y": 336
+ },
+ {
+ "x": 1089,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(e -- )[0]",
+ "src": "e",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "e-lifeline-end-2214352275",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1550,
+ "y": 336
+ },
+ {
+ "x": 1550,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(b -- )[0]",
+ "src": "b",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b-lifeline-end-668380428",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1799.5,
+ "y": 336
+ },
+ {
+ "x": 1799.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(f -- )[0]",
+ "src": "f",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "f-lifeline-end-865917984",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 2211.5,
+ "y": 336
+ },
+ {
+ "x": 2211.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ]
+}
diff --git a/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/sketch.exp.svg
new file mode 100644
index 000000000..a2518e2ba
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/sketch.exp.svg
@@ -0,0 +1,42 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/board.exp.json
new file mode 100644
index 000000000..775f8b93e
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/board.exp.json
@@ -0,0 +1,715 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 210
+ },
+ "width": 487,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "an actor with a really long label that will break everything",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 387,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "c",
+ "type": "",
+ "pos": {
+ "x": 578,
+ "y": 50
+ },
+ "width": 177,
+ "height": 286,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "an\nactor\nwith\na\nreally\nlong\nlabel\nthat\nwill\nbreak\neverything",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 77,
+ "labelHeight": 186,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "d",
+ "type": "",
+ "pos": {
+ "x": 1014,
+ "y": 210
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "simple",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 50,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "e",
+ "type": "",
+ "pos": {
+ "x": 1460,
+ "y": 210
+ },
+ "width": 180,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a short one",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 1718,
+ "y": 210
+ },
+ "width": 163,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "far away",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 63,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "f",
+ "type": "",
+ "pos": {
+ "x": 1931,
+ "y": 210
+ },
+ "width": 561,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "what if there were no labels between this actor and the previous one",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 461,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "short",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 36,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 466
+ },
+ {
+ "x": 1799.5,
+ "y": 466
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[1]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "long label for testing purposes and it must be really, really long",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 411,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 596
+ },
+ {
+ "x": 1799.5,
+ "y": 596
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(c -> d)[0]",
+ "src": "c",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "short",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 36,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 666.5,
+ "y": 726
+ },
+ {
+ "x": 1089,
+ "y": 726
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> d)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "this should span many actors lifelines so we know how it will look like when redering a long label over many actors",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 745,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 856
+ },
+ {
+ "x": 1089,
+ "y": 856
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(d -> e)[0]",
+ "src": "d",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "e",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "long label for testing purposes and it must be really, really long",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 411,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1089,
+ "y": 986
+ },
+ {
+ "x": 1550,
+ "y": 986
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> f)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "f",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 1116
+ },
+ {
+ "x": 2211.5,
+ "y": 1116
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -- )[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "a-lifeline-end-2251863791",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 243.5,
+ "y": 336
+ },
+ {
+ "x": 243.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(c -- )[0]",
+ "src": "c",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "c-lifeline-end-955173837",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 666.5,
+ "y": 336
+ },
+ {
+ "x": 666.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(d -- )[0]",
+ "src": "d",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "d-lifeline-end-2106864010",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1089,
+ "y": 336
+ },
+ {
+ "x": 1089,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(e -- )[0]",
+ "src": "e",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "e-lifeline-end-2214352275",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1550,
+ "y": 336
+ },
+ {
+ "x": 1550,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(b -- )[0]",
+ "src": "b",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b-lifeline-end-668380428",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 1799.5,
+ "y": 336
+ },
+ {
+ "x": 1799.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(f -- )[0]",
+ "src": "f",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "f-lifeline-end-865917984",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 2211.5,
+ "y": 336
+ },
+ {
+ "x": 2211.5,
+ "y": 1246
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ]
+}
diff --git a/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/sketch.exp.svg
new file mode 100644
index 000000000..a2518e2ba
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/sketch.exp.svg
@@ -0,0 +1,42 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/board.exp.json
index 590f243d9..8e0bfe6a8 100644
--- a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/board.exp.json
@@ -45,7 +45,7 @@
"id": "b",
"type": "oval",
"pos": {
- "x": 220,
+ "x": 257,
"y": 90
},
"width": 150,
@@ -85,7 +85,7 @@
"id": "c",
"type": "class",
"pos": {
- "x": 440,
+ "x": 462,
"y": 50
},
"width": 241,
@@ -136,7 +136,7 @@
"id": "d",
"type": "cloud",
"pos": {
- "x": 751,
+ "x": 753,
"y": 108
},
"width": 174,
@@ -176,7 +176,7 @@
"id": "e",
"type": "code",
"pos": {
- "x": 995,
+ "x": 992,
"y": 164
},
"width": 196,
@@ -216,7 +216,7 @@
"id": "f",
"type": "cylinder",
"pos": {
- "x": 1261,
+ "x": 1265,
"y": 108
},
"width": 150,
@@ -256,7 +256,7 @@
"id": "g",
"type": "diamond",
"pos": {
- "x": 1481,
+ "x": 1515,
"y": 108
},
"width": 150,
@@ -296,7 +296,7 @@
"id": "h",
"type": "document",
"pos": {
- "x": 1701,
+ "x": 1765,
"y": 108
},
"width": 150,
@@ -336,7 +336,7 @@
"id": "i",
"type": "hexagon",
"pos": {
- "x": 1921,
+ "x": 2001,
"y": 108
},
"width": 177,
@@ -376,7 +376,7 @@
"id": "j",
"type": "image",
"pos": {
- "x": 2168,
+ "x": 2265,
"y": 85
},
"width": 150,
@@ -427,7 +427,7 @@
"id": "k",
"type": "oval",
"pos": {
- "x": 2388,
+ "x": 2515,
"y": 108
},
"width": 150,
@@ -467,7 +467,7 @@
"id": "l",
"type": "package",
"pos": {
- "x": 2608,
+ "x": 2765,
"y": 108
},
"width": 150,
@@ -507,7 +507,7 @@
"id": "m",
"type": "page",
"pos": {
- "x": 2828,
+ "x": 3003,
"y": 108
},
"width": 173,
@@ -547,7 +547,7 @@
"id": "n",
"type": "parallelogram",
"pos": {
- "x": 3071,
+ "x": 3251,
"y": 92
},
"width": 177,
@@ -587,7 +587,7 @@
"id": "o",
"type": "person",
"pos": {
- "x": 3318,
+ "x": 3514,
"y": 55
},
"width": 151,
@@ -627,7 +627,7 @@
"id": "p",
"type": "queue",
"pos": {
- "x": 3539,
+ "x": 3760,
"y": 108
},
"width": 159,
@@ -667,7 +667,7 @@
"id": "q",
"type": "rectangle",
"pos": {
- "x": 3768,
+ "x": 4008,
"y": 71
},
"width": 163,
@@ -707,7 +707,7 @@
"id": "r",
"type": "step",
"pos": {
- "x": 4001,
+ "x": 4236,
"y": 108
},
"width": 207,
@@ -747,7 +747,7 @@
"id": "s",
"type": "stored_data",
"pos": {
- "x": 4278,
+ "x": 4515,
"y": 108
},
"width": 150,
@@ -787,7 +787,7 @@
"id": "t",
"type": "sql_table",
"pos": {
- "x": 4498,
+ "x": 4735,
"y": 126
},
"width": 210,
@@ -868,7 +868,7 @@
"y": 364
},
{
- "x": 295,
+ "x": 332,
"y": 364
}
],
@@ -903,11 +903,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 332,
"y": 494
},
{
- "x": 560.5,
+ "x": 582.5,
"y": 494
}
],
@@ -942,11 +942,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 560.5,
+ "x": 582.5,
"y": 624
},
{
- "x": 838,
+ "x": 840,
"y": 624
}
],
@@ -981,11 +981,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 838,
+ "x": 840,
"y": 754
},
{
- "x": 1093,
+ "x": 1090,
"y": 754
}
],
@@ -1020,11 +1020,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1093,
+ "x": 1090,
"y": 884
},
{
- "x": 1336,
+ "x": 1340,
"y": 884
}
],
@@ -1059,11 +1059,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1336,
+ "x": 1340,
"y": 1014
},
{
- "x": 1556,
+ "x": 1590,
"y": 1014
}
],
@@ -1098,11 +1098,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1556,
+ "x": 1590,
"y": 1144
},
{
- "x": 1776,
+ "x": 1840,
"y": 1144
}
],
@@ -1137,11 +1137,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1776,
+ "x": 1840,
"y": 1274
},
{
- "x": 2009.5,
+ "x": 2089.5,
"y": 1274
}
],
@@ -1176,11 +1176,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2009.5,
+ "x": 2089.5,
"y": 1404
},
{
- "x": 2243,
+ "x": 2340,
"y": 1404
}
],
@@ -1215,11 +1215,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2243,
+ "x": 2340,
"y": 1534
},
{
- "x": 2463,
+ "x": 2590,
"y": 1534
}
],
@@ -1254,11 +1254,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2463,
+ "x": 2590,
"y": 1664
},
{
- "x": 2683,
+ "x": 2840,
"y": 1664
}
],
@@ -1293,11 +1293,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2683,
+ "x": 2840,
"y": 1794
},
{
- "x": 2914.5,
+ "x": 3089.5,
"y": 1794
}
],
@@ -1332,11 +1332,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2914.5,
+ "x": 3089.5,
"y": 1924
},
{
- "x": 3159.5,
+ "x": 3339.5,
"y": 1924
}
],
@@ -1371,11 +1371,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3159.5,
+ "x": 3339.5,
"y": 2054
},
{
- "x": 3393.5,
+ "x": 3589.5,
"y": 2054
}
],
@@ -1410,11 +1410,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3393.5,
+ "x": 3589.5,
"y": 2184
},
{
- "x": 3618.5,
+ "x": 3839.5,
"y": 2184
}
],
@@ -1449,11 +1449,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3618.5,
+ "x": 3839.5,
"y": 2314
},
{
- "x": 3849.5,
+ "x": 4089.5,
"y": 2314
}
],
@@ -1488,11 +1488,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3849.5,
+ "x": 4089.5,
"y": 2444
},
{
- "x": 4104.5,
+ "x": 4339.5,
"y": 2444
}
],
@@ -1527,11 +1527,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 4104.5,
+ "x": 4339.5,
"y": 2574
},
{
- "x": 4353,
+ "x": 4590,
"y": 2574
}
],
@@ -1566,11 +1566,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 4353,
+ "x": 4590,
"y": 2704
},
{
- "x": 4603,
+ "x": 4840,
"y": 2704
}
],
@@ -1644,11 +1644,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 332,
"y": 234
},
{
- "x": 295,
+ "x": 332,
"y": 2834
}
],
@@ -1683,11 +1683,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 560.5,
+ "x": 582.5,
"y": 234
},
{
- "x": 560.5,
+ "x": 582.5,
"y": 2834
}
],
@@ -1722,11 +1722,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 838,
+ "x": 840,
"y": 234
},
{
- "x": 838,
+ "x": 840,
"y": 2834
}
],
@@ -1761,11 +1761,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1093,
+ "x": 1090,
"y": 234
},
{
- "x": 1093,
+ "x": 1090,
"y": 2834
}
],
@@ -1800,11 +1800,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1336,
+ "x": 1340,
"y": 234
},
{
- "x": 1336,
+ "x": 1340,
"y": 2834
}
],
@@ -1839,11 +1839,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1556,
+ "x": 1590,
"y": 234
},
{
- "x": 1556,
+ "x": 1590,
"y": 2834
}
],
@@ -1878,11 +1878,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1776,
+ "x": 1840,
"y": 234
},
{
- "x": 1776,
+ "x": 1840,
"y": 2834
}
],
@@ -1917,11 +1917,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2009.5,
+ "x": 2089.5,
"y": 234
},
{
- "x": 2009.5,
+ "x": 2089.5,
"y": 2834
}
],
@@ -1956,11 +1956,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2243,
+ "x": 2340,
"y": 239
},
{
- "x": 2243,
+ "x": 2340,
"y": 2834
}
],
@@ -1995,11 +1995,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2463,
+ "x": 2590,
"y": 234
},
{
- "x": 2463,
+ "x": 2590,
"y": 2834
}
],
@@ -2034,11 +2034,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2683,
+ "x": 2840,
"y": 234
},
{
- "x": 2683,
+ "x": 2840,
"y": 2834
}
],
@@ -2073,11 +2073,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2914.5,
+ "x": 3089.5,
"y": 234
},
{
- "x": 2914.5,
+ "x": 3089.5,
"y": 2834
}
],
@@ -2112,11 +2112,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3159.5,
+ "x": 3339.5,
"y": 234
},
{
- "x": 3159.5,
+ "x": 3339.5,
"y": 2834
}
],
@@ -2151,11 +2151,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3393.5,
+ "x": 3589.5,
"y": 239
},
{
- "x": 3393.5,
+ "x": 3589.5,
"y": 2834
}
],
@@ -2190,11 +2190,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3618.5,
+ "x": 3839.5,
"y": 234
},
{
- "x": 3618.5,
+ "x": 3839.5,
"y": 2834
}
],
@@ -2229,11 +2229,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 3849.5,
+ "x": 4089.5,
"y": 234
},
{
- "x": 3849.5,
+ "x": 4089.5,
"y": 2834
}
],
@@ -2268,11 +2268,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 4104.5,
+ "x": 4339.5,
"y": 234
},
{
- "x": 4104.5,
+ "x": 4339.5,
"y": 2834
}
],
@@ -2307,11 +2307,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 4353,
+ "x": 4590,
"y": 234
},
{
- "x": 4353,
+ "x": 4590,
"y": 2834
}
],
@@ -2346,11 +2346,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 4603,
+ "x": 4840,
"y": 234
},
{
- "x": 4603,
+ "x": 4840,
"y": 2834
}
],
diff --git a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
index da326d978..ed0985a85 100644
--- a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
@@ -2,7 +2,7 @@
\ No newline at end of file
diff --git a/e2etests/testdata/stable/sequence_diagram_long_note/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_long_note/elk/board.exp.json
new file mode 100644
index 000000000..c34da0a7d
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/elk/board.exp.json
@@ -0,0 +1,284 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 50
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "b",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "b.note",
+ "type": "rectangle",
+ "pos": {
+ "x": -187,
+ "y": 436
+ },
+ "width": 525,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a note here to remember that padding must consider notes too",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 425,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 5,
+ "level": 2
+ },
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 313,
+ "y": 50
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 12,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "a.note",
+ "type": "rectangle",
+ "pos": {
+ "x": 319,
+ "y": 692
+ },
+ "width": 137,
+ "height": 190,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "just\na\nlong\nnote\nhere",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 37,
+ "labelHeight": 90,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 5,
+ "level": 2
+ }
+ ],
+ "connections": [
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 388,
+ "y": 306
+ },
+ {
+ "x": 75,
+ "y": 306
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(b -- )[0]",
+ "src": "b",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b-lifeline-end-668380428",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 75,
+ "y": 176
+ },
+ {
+ "x": 75,
+ "y": 1012
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(a -- )[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "a-lifeline-end-2251863791",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 388,
+ "y": 176
+ },
+ {
+ "x": 388,
+ "y": 1012
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ]
+}
diff --git a/e2etests/testdata/stable/sequence_diagram_long_note/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_long_note/elk/sketch.exp.svg
new file mode 100644
index 000000000..2f7c49368
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/elk/sketch.exp.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json
index 8186c7b98..fee70ce79 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/board.exp.json
@@ -8,7 +8,7 @@
"x": -121,
"y": 266
},
- "width": 562,
+ "width": 592,
"height": 952,
"opacity": 1,
"strokeDash": 0,
@@ -47,7 +47,7 @@
"x": -97,
"y": 396
},
- "width": 514,
+ "width": 544,
"height": 798,
"opacity": 1,
"strokeDash": 0,
@@ -86,7 +86,7 @@
"x": -73,
"y": 526
},
- "width": 466,
+ "width": 496,
"height": 644,
"opacity": 1,
"strokeDash": 0,
@@ -125,7 +125,7 @@
"x": -49,
"y": 656
},
- "width": 418,
+ "width": 448,
"height": 490,
"opacity": 1,
"strokeDash": 0,
@@ -244,7 +244,7 @@
"x": 25,
"y": 1042
},
- "width": 320,
+ "width": 350,
"height": 80,
"opacity": 1,
"strokeDash": 0,
@@ -280,10 +280,10 @@
"id": "alt",
"type": "",
"pos": {
- "x": 221,
+ "x": 251,
"y": 1148
},
- "width": 388,
+ "width": 461,
"height": 518,
"opacity": 1,
"strokeDash": 0,
@@ -319,10 +319,10 @@
"id": "alt.case 1",
"type": "",
"pos": {
- "x": 245,
+ "x": 275,
"y": 1172
},
- "width": 340,
+ "width": 413,
"height": 80,
"opacity": 1,
"strokeDash": 0,
@@ -358,10 +358,10 @@
"id": "alt.case 2",
"type": "",
"pos": {
- "x": 245,
+ "x": 275,
"y": 1302
},
- "width": 340,
+ "width": 413,
"height": 80,
"opacity": 1,
"strokeDash": 0,
@@ -397,10 +397,10 @@
"id": "alt.case 3",
"type": "",
"pos": {
- "x": 245,
+ "x": 275,
"y": 1432
},
- "width": 340,
+ "width": 413,
"height": 80,
"opacity": 1,
"strokeDash": 0,
@@ -436,10 +436,10 @@
"id": "alt.case 4",
"type": "",
"pos": {
- "x": 245,
+ "x": 275,
"y": 1562
},
- "width": 340,
+ "width": 413,
"height": 80,
"opacity": 1,
"strokeDash": 0,
@@ -475,7 +475,7 @@
"id": "b",
"type": "",
"pos": {
- "x": 220,
+ "x": 250,
"y": 50
},
"width": 150,
@@ -515,7 +515,7 @@
"id": "b.note",
"type": "rectangle",
"pos": {
- "x": 32,
+ "x": 62,
"y": 2052
},
"width": 525,
@@ -595,7 +595,7 @@
"id": "c",
"type": "",
"pos": {
- "x": 440,
+ "x": 543,
"y": 50
},
"width": 190,
@@ -663,7 +663,7 @@
"y": 306
},
{
- "x": 295,
+ "x": 325,
"y": 306
}
],
@@ -702,7 +702,7 @@
"y": 436
},
{
- "x": 295,
+ "x": 325,
"y": 436
}
],
@@ -741,7 +741,7 @@
"y": 566
},
{
- "x": 295,
+ "x": 325,
"y": 566
}
],
@@ -780,7 +780,7 @@
"y": 952
},
{
- "x": 295,
+ "x": 325,
"y": 952
}
],
@@ -819,7 +819,7 @@
"y": 1082
},
{
- "x": 295,
+ "x": 325,
"y": 1082
}
],
@@ -854,11 +854,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 325,
"y": 1212
},
{
- "x": 535,
+ "x": 638,
"y": 1212
}
],
@@ -893,11 +893,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 325,
"y": 1342
},
{
- "x": 535,
+ "x": 638,
"y": 1342
}
],
@@ -932,11 +932,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 325,
"y": 1472
},
{
- "x": 535,
+ "x": 638,
"y": 1472
}
],
@@ -971,11 +971,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 325,
"y": 1602
},
{
- "x": 535,
+ "x": 638,
"y": 1602
}
],
@@ -1049,11 +1049,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 295,
+ "x": 325,
"y": 176
},
{
- "x": 295,
+ "x": 325,
"y": 2308
}
],
@@ -1088,11 +1088,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 535,
+ "x": 638,
"y": 176
},
{
- "x": 535,
+ "x": 638,
"y": 2308
}
],
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg
index 0a12d265e..d5d231a05 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/dagre/sketch.exp.svg
@@ -2,7 +2,7 @@
\ No newline at end of file
diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/board.exp.json b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/board.exp.json
new file mode 100644
index 000000000..cf833fad1
--- /dev/null
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/board.exp.json
@@ -0,0 +1,673 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 50
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "b",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 250,
+ "y": 50
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 12,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "c",
+ "type": "",
+ "pos": {
+ "x": 500,
+ "y": 50
+ },
+ "width": 150,
+ "height": 126,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "c",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 12,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "this is a message group",
+ "type": "",
+ "pos": {
+ "x": -71,
+ "y": 396
+ },
+ "width": 542,
+ "height": 696,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "#DEE1EB",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": true,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "this is a message group",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 160,
+ "labelHeight": 26,
+ "zIndex": 3,
+ "level": 1
+ },
+ {
+ "id": "this is a message group.and this is a nested message group",
+ "type": "",
+ "pos": {
+ "x": -47,
+ "y": 526
+ },
+ "width": 494,
+ "height": 542,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "#DEE1EB",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": true,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "and this is a nested message group",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 238,
+ "labelHeight": 26,
+ "zIndex": 3,
+ "level": 2
+ },
+ {
+ "id": "this is a message group.and this is a nested message group.what about more nesting",
+ "type": "",
+ "pos": {
+ "x": -23,
+ "y": 656
+ },
+ "width": 446,
+ "height": 388,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "#DEE1EB",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": true,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "what about more nesting",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 173,
+ "labelHeight": 26,
+ "zIndex": 3,
+ "level": 3
+ },
+ {
+ "id": "this is a message group.and this is a nested message group.what about more nesting.yo",
+ "type": "",
+ "pos": {
+ "x": 1,
+ "y": 786
+ },
+ "width": 398,
+ "height": 234,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "#DEE1EB",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": true,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "yo",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 21,
+ "labelHeight": 26,
+ "zIndex": 3,
+ "level": 4
+ },
+ {
+ "id": "this is a message group.and this is a nested message group.what about more nesting.yo.yo",
+ "type": "",
+ "pos": {
+ "x": 25,
+ "y": 916
+ },
+ "width": 350,
+ "height": 80,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "#DEE1EB",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": true,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "yo",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 21,
+ "labelHeight": 26,
+ "zIndex": 3,
+ "level": 5
+ }
+ ],
+ "connections": [
+ {
+ "id": "(b -> c)[0]",
+ "src": "b",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "c",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 75,
+ "y": 306
+ },
+ {
+ "x": 575,
+ "y": 306
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 436
+ },
+ {
+ "x": 75,
+ "y": 436
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[1]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 566
+ },
+ {
+ "x": 75,
+ "y": 566
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[2]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 696
+ },
+ {
+ "x": 75,
+ "y": 696
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[3]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 826
+ },
+ {
+ "x": 75,
+ "y": 826
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(a -> b)[4]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 956
+ },
+ {
+ "x": 75,
+ "y": 956
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(b -- )[0]",
+ "src": "b",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b-lifeline-end-668380428",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 75,
+ "y": 176
+ },
+ {
+ "x": 75,
+ "y": 1086
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(a -- )[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "a-lifeline-end-2251863791",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 325,
+ "y": 176
+ },
+ {
+ "x": 325,
+ "y": 1086
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(c -- )[0]",
+ "src": "c",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "c-lifeline-end-955173837",
+ "dstArrow": "none",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 575,
+ "y": 176
+ },
+ {
+ "x": 575,
+ "y": 1086
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ]
+}
diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/sketch.exp.svg b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/sketch.exp.svg
new file mode 100644
index 000000000..a50c69347
--- /dev/null
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/sketch.exp.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
diff --git a/e2etests/todo_test.go b/e2etests/todo_test.go
index a0cecce13..cc15f14ec 100644
--- a/e2etests/todo_test.go
+++ b/e2etests/todo_test.go
@@ -66,6 +66,29 @@ ninety nine: {
}
}
`,
+ }, {
+ // as nesting gets deeper, the groups advance towards `c` and may overlap its lifeline
+ // needs to consider the group size when computing the distance from `a` to `c`
+ // a similar effect can be seen for spans
+ name: "sequence_diagram_actor_padding_nested_groups",
+ script: `shape: sequence_diagram
+b;a;c
+b -> c
+this is a message group: {
+ _.a -> _.b
+ and this is a nested message group: {
+ _._.a -> _._.b
+ what about more nesting: {
+ _._._.a -> _._._.b
+ yo: {
+ _._._._.a -> _._._._.b
+ yo: {
+ _._._._._.a -> _._._._._.b
+ }
+ }
+ }
+ }
+}`,
},
}
diff --git a/testdata/d2exporter/TestExport/connection/arrowhead.exp.json b/testdata/d2exporter/TestExport/connection/arrowhead.exp.json
index 60ac88668..09b26f2db 100644
--- a/testdata/d2exporter/TestExport/connection/arrowhead.exp.json
+++ b/testdata/d2exporter/TestExport/connection/arrowhead.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/connection/basic.exp.json b/testdata/d2exporter/TestExport/connection/basic.exp.json
index 726218c9c..50d65855d 100644
--- a/testdata/d2exporter/TestExport/connection/basic.exp.json
+++ b/testdata/d2exporter/TestExport/connection/basic.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/connection/stroke-dash.exp.json b/testdata/d2exporter/TestExport/connection/stroke-dash.exp.json
index 4d68e010d..aa483fe31 100644
--- a/testdata/d2exporter/TestExport/connection/stroke-dash.exp.json
+++ b/testdata/d2exporter/TestExport/connection/stroke-dash.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/connection/theme_stroke-dash.exp.json b/testdata/d2exporter/TestExport/connection/theme_stroke-dash.exp.json
index e97b648ac..d1add431f 100644
--- a/testdata/d2exporter/TestExport/connection/theme_stroke-dash.exp.json
+++ b/testdata/d2exporter/TestExport/connection/theme_stroke-dash.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/label/basic_shape.exp.json b/testdata/d2exporter/TestExport/label/basic_shape.exp.json
index 931fe4753..f017e35f5 100644
--- a/testdata/d2exporter/TestExport/label/basic_shape.exp.json
+++ b/testdata/d2exporter/TestExport/label/basic_shape.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/label/connection_font_color.exp.json b/testdata/d2exporter/TestExport/label/connection_font_color.exp.json
index 748ca5390..62cf2719e 100644
--- a/testdata/d2exporter/TestExport/label/connection_font_color.exp.json
+++ b/testdata/d2exporter/TestExport/label/connection_font_color.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/label/shape_font_color.exp.json b/testdata/d2exporter/TestExport/label/shape_font_color.exp.json
index e0985129a..00b3d298e 100644
--- a/testdata/d2exporter/TestExport/label/shape_font_color.exp.json
+++ b/testdata/d2exporter/TestExport/label/shape_font_color.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/shape/basic.exp.json b/testdata/d2exporter/TestExport/shape/basic.exp.json
index ec233aa08..226cbb94e 100644
--- a/testdata/d2exporter/TestExport/shape/basic.exp.json
+++ b/testdata/d2exporter/TestExport/shape/basic.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/shape/border-radius.exp.json b/testdata/d2exporter/TestExport/shape/border-radius.exp.json
index 6b9a69075..0a934ec54 100644
--- a/testdata/d2exporter/TestExport/shape/border-radius.exp.json
+++ b/testdata/d2exporter/TestExport/shape/border-radius.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/shape/image_dimensions.exp.json b/testdata/d2exporter/TestExport/shape/image_dimensions.exp.json
index f33f6473d..637bd91e8 100644
--- a/testdata/d2exporter/TestExport/shape/image_dimensions.exp.json
+++ b/testdata/d2exporter/TestExport/shape/image_dimensions.exp.json
@@ -34,6 +34,7 @@
"RawFragment": ""
},
"iconPosition": "INSIDE_MIDDLE_CENTER",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/shape/synonyms.exp.json b/testdata/d2exporter/TestExport/shape/synonyms.exp.json
index b67ca940a..dc02f5a8f 100644
--- a/testdata/d2exporter/TestExport/shape/synonyms.exp.json
+++ b/testdata/d2exporter/TestExport/shape/synonyms.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/shape/text_color.exp.json b/testdata/d2exporter/TestExport/shape/text_color.exp.json
index db7273d5a..dc35c0b97 100644
--- a/testdata/d2exporter/TestExport/shape/text_color.exp.json
+++ b/testdata/d2exporter/TestExport/shape/text_color.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/theme/connection_with_bold.exp.json b/testdata/d2exporter/TestExport/theme/connection_with_bold.exp.json
index cf2e7cf34..c0f461b9a 100644
--- a/testdata/d2exporter/TestExport/theme/connection_with_bold.exp.json
+++ b/testdata/d2exporter/TestExport/theme/connection_with_bold.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/theme/connection_with_italic.exp.json b/testdata/d2exporter/TestExport/theme/connection_with_italic.exp.json
index b3d780bb9..629847c8f 100644
--- a/testdata/d2exporter/TestExport/theme/connection_with_italic.exp.json
+++ b/testdata/d2exporter/TestExport/theme/connection_with_italic.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/theme/connection_without_italic.exp.json b/testdata/d2exporter/TestExport/theme/connection_without_italic.exp.json
index b1d30b075..dd3636dc0 100644
--- a/testdata/d2exporter/TestExport/theme/connection_without_italic.exp.json
+++ b/testdata/d2exporter/TestExport/theme/connection_without_italic.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
@@ -61,6 +62,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/theme/shape_with_italic.exp.json b/testdata/d2exporter/TestExport/theme/shape_with_italic.exp.json
index 73a0eab3c..7672ab131 100644
--- a/testdata/d2exporter/TestExport/theme/shape_with_italic.exp.json
+++ b/testdata/d2exporter/TestExport/theme/shape_with_italic.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,
diff --git a/testdata/d2exporter/TestExport/theme/shape_without_bold.exp.json b/testdata/d2exporter/TestExport/theme/shape_without_bold.exp.json
index e136a4d38..c8b3c3d9f 100644
--- a/testdata/d2exporter/TestExport/theme/shape_without_bold.exp.json
+++ b/testdata/d2exporter/TestExport/theme/shape_without_bold.exp.json
@@ -23,6 +23,7 @@
"link": "",
"icon": null,
"iconPosition": "",
+ "blend": false,
"fields": null,
"methods": null,
"columns": null,