diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go
index e0bd09f73..feedea323 100644
--- a/d2layouts/d2sequence/sequence_diagram.go
+++ b/d2layouts/d2sequence/sequence_diagram.go
@@ -110,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:]
@@ -123,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
@@ -139,6 +141,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
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])
}
}
diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go
index 31bb39b67..a7c0bc80a 100644
--- a/e2etests/stable_test.go
+++ b/e2etests/stable_test.go
@@ -1425,6 +1425,12 @@ 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
index 3ce0ee4a5..9af65f933 100644
--- a/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/board.exp.json
@@ -8,7 +8,7 @@
"x": 0,
"y": 210
},
- "width": 514,
+ "width": 487,
"height": 126,
"opacity": 1,
"strokeDash": 0,
@@ -32,9 +32,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 414,
+ "labelWidth": 387,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -44,10 +44,10 @@
"id": "c",
"type": "",
"pos": {
- "x": 588,
+ "x": 578,
"y": 50
},
- "width": 183,
+ "width": 177,
"height": 286,
"opacity": 1,
"strokeDash": 0,
@@ -71,9 +71,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 83,
+ "labelWidth": 77,
"labelHeight": 186,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -83,10 +83,10 @@
"id": "d",
"type": "",
"pos": {
- "x": 1026,
+ "x": 1014,
"y": 210
},
- "width": 152,
+ "width": 150,
"height": 126,
"opacity": 1,
"strokeDash": 0,
@@ -110,9 +110,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 52,
+ "labelWidth": 50,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -122,10 +122,10 @@
"id": "e",
"type": "",
"pos": {
- "x": 1471,
+ "x": 1460,
"y": 210
},
- "width": 184,
+ "width": 180,
"height": 126,
"opacity": 1,
"strokeDash": 0,
@@ -149,9 +149,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 84,
+ "labelWidth": 80,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -161,10 +161,10 @@
"id": "b",
"type": "",
"pos": {
- "x": 1730,
+ "x": 1718,
"y": 210
},
- "width": 167,
+ "width": 163,
"height": 126,
"opacity": 1,
"strokeDash": 0,
@@ -188,9 +188,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 67,
+ "labelWidth": 63,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -200,10 +200,10 @@
"id": "f",
"type": "",
"pos": {
- "x": 1947,
+ "x": 1931,
"y": 210
},
- "width": 587,
+ "width": 561,
"height": 126,
"opacity": 1,
"strokeDash": 0,
@@ -227,9 +227,9 @@
"language": "",
"color": "#0A0F25",
"italic": false,
- "bold": true,
+ "bold": false,
"underline": false,
- "labelWidth": 487,
+ "labelWidth": 461,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
@@ -263,11 +263,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 257,
+ "x": 243.5,
"y": 466
},
{
- "x": 1813.5,
+ "x": 1799.5,
"y": 466
}
],
@@ -302,11 +302,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 257,
+ "x": 243.5,
"y": 596
},
{
- "x": 1813.5,
+ "x": 1799.5,
"y": 596
}
],
@@ -341,11 +341,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 679.5,
+ "x": 666.5,
"y": 726
},
{
- "x": 1102,
+ "x": 1089,
"y": 726
}
],
@@ -380,11 +380,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 257,
+ "x": 243.5,
"y": 856
},
{
- "x": 1102,
+ "x": 1089,
"y": 856
}
],
@@ -419,11 +419,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1102,
+ "x": 1089,
"y": 986
},
{
- "x": 1563,
+ "x": 1550,
"y": 986
}
],
@@ -458,11 +458,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 257,
+ "x": 243.5,
"y": 1116
},
{
- "x": 2240.5,
+ "x": 2211.5,
"y": 1116
}
],
@@ -497,11 +497,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 257,
+ "x": 243.5,
"y": 336
},
{
- "x": 257,
+ "x": 243.5,
"y": 1246
}
],
@@ -536,11 +536,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 679.5,
+ "x": 666.5,
"y": 336
},
{
- "x": 679.5,
+ "x": 666.5,
"y": 1246
}
],
@@ -575,11 +575,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1102,
+ "x": 1089,
"y": 336
},
{
- "x": 1102,
+ "x": 1089,
"y": 1246
}
],
@@ -614,11 +614,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1563,
+ "x": 1550,
"y": 336
},
{
- "x": 1563,
+ "x": 1550,
"y": 1246
}
],
@@ -653,11 +653,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 1813.5,
+ "x": 1799.5,
"y": 336
},
{
- "x": 1813.5,
+ "x": 1799.5,
"y": 1246
}
],
@@ -692,11 +692,11 @@
"labelPercentage": 0,
"route": [
{
- "x": 2240.5,
+ "x": 2211.5,
"y": 336
},
{
- "x": 2240.5,
+ "x": 2211.5,
"y": 1246
}
],
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
index 01f8a5980..1cb50d46f 100644
--- a/e2etests/testdata/stable/sequence_diagram_actor_distance/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/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..2e66a4eb8
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/elk/board.exp.json
@@ -0,0 +1,280 @@
+{
+ "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": "",
+ "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": "",
+ "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": "",
+ "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": "",
+ "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": 2
+ },
+ {
+ "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": 2
+ }
+ ]
+}
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..d73943b18
--- /dev/null
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/elk/sketch.exp.svg
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/sketch.exp.svg
index f2bb4e085..a35a7be98 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_nested_span/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..2a26b1e83
--- /dev/null
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/board.exp.json
@@ -0,0 +1,665 @@
+{
+ "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": "",
+ "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": "",
+ "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": "",
+ "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": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "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": 1,
+ "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": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "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": 1,
+ "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": 2,
+ "borderRadius": 0,
+ "fill": "#EEF1F8",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "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": 1,
+ "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": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "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": 1,
+ "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": 2,
+ "borderRadius": 0,
+ "fill": "#EEF1F8",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "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": 1,
+ "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": 2
+ },
+ {
+ "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": 2
+ },
+ {
+ "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": 2
+ }
+ ]
+}
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..7663e9dd0
--- /dev/null
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/elk/sketch.exp.svg
@@ -0,0 +1,24 @@
+
+
\ 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
+ }
+ }
+ }
+ }
+}`,
},
}