diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go
index 0cabf228e..70376f37c 100644
--- a/d2layouts/d2sequence/sequence_diagram.go
+++ b/d2layouts/d2sequence/sequence_diagram.go
@@ -585,7 +585,7 @@ func (sd *sequenceDiagram) routeMessages() error {
if isSelfMessage || isToDescendant || isFromDescendant || isToSibling {
midX := startX + SELF_MESSAGE_HORIZONTAL_TRAVEL
- endY := startY + MIN_MESSAGE_DISTANCE*1.5
+ endY := startY + math.Max(float64(message.LabelDimensions.Height), MIN_MESSAGE_DISTANCE)*1.5
message.Route = []*geo.Point{
geo.NewPoint(startX, startY),
geo.NewPoint(midX, startY),
@@ -600,7 +600,7 @@ func (sd *sequenceDiagram) routeMessages() error {
}
prevIsLoop = false
}
- messageOffset += sd.yStep
+ messageOffset += math.Max(sd.yStep, float64(message.LabelDimensions.Height)+MIN_MESSAGE_DISTANCE*1.5)
if message.Label.Value != "" {
message.LabelPosition = go2.Pointer(label.InsideMiddleCenter.String())
diff --git a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg
index 5aee84d37..aabefe23d 100644
--- a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg
+++ b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg
@@ -1,9 +1,9 @@
-
\ No newline at end of file
diff --git a/e2etests/e2e_test.go b/e2etests/e2e_test.go
index 8fe0d1afd..b191880b5 100644
--- a/e2etests/e2e_test.go
+++ b/e2etests/e2e_test.go
@@ -79,7 +79,7 @@ a -> c
func testTxtar(t *testing.T) {
var tcs []testCase
- archive, err := txtar.ParseFile("./testdata/txtar.txt")
+ archive, err := txtar.ParseFile("./txtar.txt")
assert.Success(t, err)
for _, f := range archive.Files {
tcs = append(tcs, testCase{
diff --git a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/board.exp.json b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/board.exp.json
index 8bef6fd0f..d37e00010 100644
--- a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/board.exp.json
+++ b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/board.exp.json
@@ -11,7 +11,7 @@
"y": 0
},
"width": 424,
- "height": 1387,
+ "height": 1407,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 0,
@@ -175,7 +175,7 @@
"y": 232
},
"width": 254,
- "height": 904,
+ "height": 919,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 0,
@@ -214,7 +214,7 @@
"type": "rectangle",
"pos": {
"x": 22,
- "y": 968
+ "y": 983
},
"width": 230,
"height": 156,
@@ -256,7 +256,7 @@
"type": "rectangle",
"pos": {
"x": 172,
- "y": 1140
+ "y": 1160
},
"width": 230,
"height": 156,
@@ -359,11 +359,11 @@
"route": [
{
"x": 62,
- "y": 467
+ "y": 472
},
{
"x": 212,
- "y": 467
+ "y": 472
}
],
"animated": false,
@@ -397,11 +397,11 @@
"route": [
{
"x": 62,
- "y": 608
+ "y": 618
},
{
"x": 212,
- "y": 608
+ "y": 618
}
],
"animated": false,
@@ -435,11 +435,11 @@
"route": [
{
"x": 62,
- "y": 749
+ "y": 759
},
{
"x": 212,
- "y": 749
+ "y": 759
}
],
"animated": false,
@@ -473,11 +473,11 @@
"route": [
{
"x": 62,
- "y": 890
+ "y": 900
},
{
"x": 212,
- "y": 890
+ "y": 900
}
],
"animated": false,
@@ -511,11 +511,11 @@
"route": [
{
"x": 62,
- "y": 1062
+ "y": 1077
},
{
"x": 212,
- "y": 1062
+ "y": 1077
}
],
"animated": false,
@@ -549,11 +549,11 @@
"route": [
{
"x": 362,
- "y": 1234
+ "y": 1254
},
{
"x": 212,
- "y": 1234
+ "y": 1254
}
],
"animated": false,
@@ -591,7 +591,7 @@
},
{
"x": 62,
- "y": 1375
+ "y": 1395
}
],
"animated": false,
@@ -629,7 +629,7 @@
},
{
"x": 212,
- "y": 1375
+ "y": 1395
}
],
"animated": false,
@@ -667,7 +667,7 @@
},
{
"x": 362,
- "y": 1375
+ "y": 1395
}
],
"animated": false,
diff --git a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/sketch.exp.svg b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/sketch.exp.svg
index 7fe3ee7cb..1036fcd0e 100644
--- a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/sketch.exp.svg
+++ b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/dagre/sketch.exp.svg
@@ -1,16 +1,16 @@
-SequenceSystemFileASystem StartsOkayAlright OneTwoThreeFourFiveSix OneTwoThreeFourFiveSixOneTwoOneTwoThreeFourFiveSixOneTwoThreeFourFiveSixOneTwoThreeFourFiveSix
-
+ .d2-1268285050 .fill-N1{fill:#0A0F25;}
+ .d2-1268285050 .fill-N2{fill:#676C7E;}
+ .d2-1268285050 .fill-N3{fill:#9499AB;}
+ .d2-1268285050 .fill-N4{fill:#CFD2DD;}
+ .d2-1268285050 .fill-N5{fill:#DEE1EB;}
+ .d2-1268285050 .fill-N6{fill:#EEF1F8;}
+ .d2-1268285050 .fill-N7{fill:#FFFFFF;}
+ .d2-1268285050 .fill-B1{fill:#0D32B2;}
+ .d2-1268285050 .fill-B2{fill:#0D32B2;}
+ .d2-1268285050 .fill-B3{fill:#E3E9FD;}
+ .d2-1268285050 .fill-B4{fill:#E3E9FD;}
+ .d2-1268285050 .fill-B5{fill:#EDF0FD;}
+ .d2-1268285050 .fill-B6{fill:#F7F8FE;}
+ .d2-1268285050 .fill-AA2{fill:#4A6FF3;}
+ .d2-1268285050 .fill-AA4{fill:#EDF0FD;}
+ .d2-1268285050 .fill-AA5{fill:#F7F8FE;}
+ .d2-1268285050 .fill-AB4{fill:#EDF0FD;}
+ .d2-1268285050 .fill-AB5{fill:#F7F8FE;}
+ .d2-1268285050 .stroke-N1{stroke:#0A0F25;}
+ .d2-1268285050 .stroke-N2{stroke:#676C7E;}
+ .d2-1268285050 .stroke-N3{stroke:#9499AB;}
+ .d2-1268285050 .stroke-N4{stroke:#CFD2DD;}
+ .d2-1268285050 .stroke-N5{stroke:#DEE1EB;}
+ .d2-1268285050 .stroke-N6{stroke:#EEF1F8;}
+ .d2-1268285050 .stroke-N7{stroke:#FFFFFF;}
+ .d2-1268285050 .stroke-B1{stroke:#0D32B2;}
+ .d2-1268285050 .stroke-B2{stroke:#0D32B2;}
+ .d2-1268285050 .stroke-B3{stroke:#E3E9FD;}
+ .d2-1268285050 .stroke-B4{stroke:#E3E9FD;}
+ .d2-1268285050 .stroke-B5{stroke:#EDF0FD;}
+ .d2-1268285050 .stroke-B6{stroke:#F7F8FE;}
+ .d2-1268285050 .stroke-AA2{stroke:#4A6FF3;}
+ .d2-1268285050 .stroke-AA4{stroke:#EDF0FD;}
+ .d2-1268285050 .stroke-AA5{stroke:#F7F8FE;}
+ .d2-1268285050 .stroke-AB4{stroke:#EDF0FD;}
+ .d2-1268285050 .stroke-AB5{stroke:#F7F8FE;}
+ .d2-1268285050 .background-color-N1{background-color:#0A0F25;}
+ .d2-1268285050 .background-color-N2{background-color:#676C7E;}
+ .d2-1268285050 .background-color-N3{background-color:#9499AB;}
+ .d2-1268285050 .background-color-N4{background-color:#CFD2DD;}
+ .d2-1268285050 .background-color-N5{background-color:#DEE1EB;}
+ .d2-1268285050 .background-color-N6{background-color:#EEF1F8;}
+ .d2-1268285050 .background-color-N7{background-color:#FFFFFF;}
+ .d2-1268285050 .background-color-B1{background-color:#0D32B2;}
+ .d2-1268285050 .background-color-B2{background-color:#0D32B2;}
+ .d2-1268285050 .background-color-B3{background-color:#E3E9FD;}
+ .d2-1268285050 .background-color-B4{background-color:#E3E9FD;}
+ .d2-1268285050 .background-color-B5{background-color:#EDF0FD;}
+ .d2-1268285050 .background-color-B6{background-color:#F7F8FE;}
+ .d2-1268285050 .background-color-AA2{background-color:#4A6FF3;}
+ .d2-1268285050 .background-color-AA4{background-color:#EDF0FD;}
+ .d2-1268285050 .background-color-AA5{background-color:#F7F8FE;}
+ .d2-1268285050 .background-color-AB4{background-color:#EDF0FD;}
+ .d2-1268285050 .background-color-AB5{background-color:#F7F8FE;}
+ .d2-1268285050 .color-N1{color:#0A0F25;}
+ .d2-1268285050 .color-N2{color:#676C7E;}
+ .d2-1268285050 .color-N3{color:#9499AB;}
+ .d2-1268285050 .color-N4{color:#CFD2DD;}
+ .d2-1268285050 .color-N5{color:#DEE1EB;}
+ .d2-1268285050 .color-N6{color:#EEF1F8;}
+ .d2-1268285050 .color-N7{color:#FFFFFF;}
+ .d2-1268285050 .color-B1{color:#0D32B2;}
+ .d2-1268285050 .color-B2{color:#0D32B2;}
+ .d2-1268285050 .color-B3{color:#E3E9FD;}
+ .d2-1268285050 .color-B4{color:#E3E9FD;}
+ .d2-1268285050 .color-B5{color:#EDF0FD;}
+ .d2-1268285050 .color-B6{color:#F7F8FE;}
+ .d2-1268285050 .color-AA2{color:#4A6FF3;}
+ .d2-1268285050 .color-AA4{color:#EDF0FD;}
+ .d2-1268285050 .color-AA5{color:#F7F8FE;}
+ .d2-1268285050 .color-AB4{color:#EDF0FD;}
+ .d2-1268285050 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SequenceSystemFileASystem StartsOkayAlright OneTwoThreeFourFiveSix OneTwoThreeFourFiveSixOneTwoOneTwoThreeFourFiveSixOneTwoThreeFourFiveSixOneTwoThreeFourFiveSix
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/board.exp.json b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/board.exp.json
index fff138ec2..4f5d3c43f 100644
--- a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/board.exp.json
+++ b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/board.exp.json
@@ -11,7 +11,7 @@
"y": 12
},
"width": 424,
- "height": 1387,
+ "height": 1407,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 0,
@@ -175,7 +175,7 @@
"y": 244
},
"width": 254,
- "height": 904,
+ "height": 919,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 0,
@@ -214,7 +214,7 @@
"type": "rectangle",
"pos": {
"x": 34,
- "y": 980
+ "y": 995
},
"width": 230,
"height": 156,
@@ -256,7 +256,7 @@
"type": "rectangle",
"pos": {
"x": 184,
- "y": 1152
+ "y": 1172
},
"width": 230,
"height": 156,
@@ -359,11 +359,11 @@
"route": [
{
"x": 74,
- "y": 479
+ "y": 484
},
{
"x": 224,
- "y": 479
+ "y": 484
}
],
"animated": false,
@@ -397,11 +397,11 @@
"route": [
{
"x": 74,
- "y": 620
+ "y": 630
},
{
"x": 224,
- "y": 620
+ "y": 630
}
],
"animated": false,
@@ -435,11 +435,11 @@
"route": [
{
"x": 74,
- "y": 761
+ "y": 771
},
{
"x": 224,
- "y": 761
+ "y": 771
}
],
"animated": false,
@@ -473,11 +473,11 @@
"route": [
{
"x": 74,
- "y": 902
+ "y": 912
},
{
"x": 224,
- "y": 902
+ "y": 912
}
],
"animated": false,
@@ -511,11 +511,11 @@
"route": [
{
"x": 74,
- "y": 1074
+ "y": 1089
},
{
"x": 224,
- "y": 1074
+ "y": 1089
}
],
"animated": false,
@@ -549,11 +549,11 @@
"route": [
{
"x": 374,
- "y": 1246
+ "y": 1266
},
{
"x": 224,
- "y": 1246
+ "y": 1266
}
],
"animated": false,
@@ -591,7 +591,7 @@
},
{
"x": 74,
- "y": 1387
+ "y": 1407
}
],
"animated": false,
@@ -629,7 +629,7 @@
},
{
"x": 224,
- "y": 1387
+ "y": 1407
}
],
"animated": false,
@@ -667,7 +667,7 @@
},
{
"x": 374,
- "y": 1387
+ "y": 1407
}
],
"animated": false,
diff --git a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/sketch.exp.svg b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/sketch.exp.svg
index 69d5bb8a7..e2f94e5b6 100644
--- a/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/sketch.exp.svg
+++ b/e2etests/testdata/txtar/sequence-edge-group-tall-edge-label/elk/sketch.exp.svg
@@ -1,16 +1,16 @@
-SequenceSystemFileASystem StartsOkayAlright OneTwoThreeFourFiveSix OneTwoThreeFourFiveSixOneTwoOneTwoThreeFourFiveSixOneTwoThreeFourFiveSixOneTwoThreeFourFiveSix
-
+ .d2-3392405069 .fill-N1{fill:#0A0F25;}
+ .d2-3392405069 .fill-N2{fill:#676C7E;}
+ .d2-3392405069 .fill-N3{fill:#9499AB;}
+ .d2-3392405069 .fill-N4{fill:#CFD2DD;}
+ .d2-3392405069 .fill-N5{fill:#DEE1EB;}
+ .d2-3392405069 .fill-N6{fill:#EEF1F8;}
+ .d2-3392405069 .fill-N7{fill:#FFFFFF;}
+ .d2-3392405069 .fill-B1{fill:#0D32B2;}
+ .d2-3392405069 .fill-B2{fill:#0D32B2;}
+ .d2-3392405069 .fill-B3{fill:#E3E9FD;}
+ .d2-3392405069 .fill-B4{fill:#E3E9FD;}
+ .d2-3392405069 .fill-B5{fill:#EDF0FD;}
+ .d2-3392405069 .fill-B6{fill:#F7F8FE;}
+ .d2-3392405069 .fill-AA2{fill:#4A6FF3;}
+ .d2-3392405069 .fill-AA4{fill:#EDF0FD;}
+ .d2-3392405069 .fill-AA5{fill:#F7F8FE;}
+ .d2-3392405069 .fill-AB4{fill:#EDF0FD;}
+ .d2-3392405069 .fill-AB5{fill:#F7F8FE;}
+ .d2-3392405069 .stroke-N1{stroke:#0A0F25;}
+ .d2-3392405069 .stroke-N2{stroke:#676C7E;}
+ .d2-3392405069 .stroke-N3{stroke:#9499AB;}
+ .d2-3392405069 .stroke-N4{stroke:#CFD2DD;}
+ .d2-3392405069 .stroke-N5{stroke:#DEE1EB;}
+ .d2-3392405069 .stroke-N6{stroke:#EEF1F8;}
+ .d2-3392405069 .stroke-N7{stroke:#FFFFFF;}
+ .d2-3392405069 .stroke-B1{stroke:#0D32B2;}
+ .d2-3392405069 .stroke-B2{stroke:#0D32B2;}
+ .d2-3392405069 .stroke-B3{stroke:#E3E9FD;}
+ .d2-3392405069 .stroke-B4{stroke:#E3E9FD;}
+ .d2-3392405069 .stroke-B5{stroke:#EDF0FD;}
+ .d2-3392405069 .stroke-B6{stroke:#F7F8FE;}
+ .d2-3392405069 .stroke-AA2{stroke:#4A6FF3;}
+ .d2-3392405069 .stroke-AA4{stroke:#EDF0FD;}
+ .d2-3392405069 .stroke-AA5{stroke:#F7F8FE;}
+ .d2-3392405069 .stroke-AB4{stroke:#EDF0FD;}
+ .d2-3392405069 .stroke-AB5{stroke:#F7F8FE;}
+ .d2-3392405069 .background-color-N1{background-color:#0A0F25;}
+ .d2-3392405069 .background-color-N2{background-color:#676C7E;}
+ .d2-3392405069 .background-color-N3{background-color:#9499AB;}
+ .d2-3392405069 .background-color-N4{background-color:#CFD2DD;}
+ .d2-3392405069 .background-color-N5{background-color:#DEE1EB;}
+ .d2-3392405069 .background-color-N6{background-color:#EEF1F8;}
+ .d2-3392405069 .background-color-N7{background-color:#FFFFFF;}
+ .d2-3392405069 .background-color-B1{background-color:#0D32B2;}
+ .d2-3392405069 .background-color-B2{background-color:#0D32B2;}
+ .d2-3392405069 .background-color-B3{background-color:#E3E9FD;}
+ .d2-3392405069 .background-color-B4{background-color:#E3E9FD;}
+ .d2-3392405069 .background-color-B5{background-color:#EDF0FD;}
+ .d2-3392405069 .background-color-B6{background-color:#F7F8FE;}
+ .d2-3392405069 .background-color-AA2{background-color:#4A6FF3;}
+ .d2-3392405069 .background-color-AA4{background-color:#EDF0FD;}
+ .d2-3392405069 .background-color-AA5{background-color:#F7F8FE;}
+ .d2-3392405069 .background-color-AB4{background-color:#EDF0FD;}
+ .d2-3392405069 .background-color-AB5{background-color:#F7F8FE;}
+ .d2-3392405069 .color-N1{color:#0A0F25;}
+ .d2-3392405069 .color-N2{color:#676C7E;}
+ .d2-3392405069 .color-N3{color:#9499AB;}
+ .d2-3392405069 .color-N4{color:#CFD2DD;}
+ .d2-3392405069 .color-N5{color:#DEE1EB;}
+ .d2-3392405069 .color-N6{color:#EEF1F8;}
+ .d2-3392405069 .color-N7{color:#FFFFFF;}
+ .d2-3392405069 .color-B1{color:#0D32B2;}
+ .d2-3392405069 .color-B2{color:#0D32B2;}
+ .d2-3392405069 .color-B3{color:#E3E9FD;}
+ .d2-3392405069 .color-B4{color:#E3E9FD;}
+ .d2-3392405069 .color-B5{color:#EDF0FD;}
+ .d2-3392405069 .color-B6{color:#F7F8FE;}
+ .d2-3392405069 .color-AA2{color:#4A6FF3;}
+ .d2-3392405069 .color-AA4{color:#EDF0FD;}
+ .d2-3392405069 .color-AA5{color:#F7F8FE;}
+ .d2-3392405069 .color-AB4{color:#EDF0FD;}
+ .d2-3392405069 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SequenceSystemFileASystem StartsOkayAlright OneTwoThreeFourFiveSix OneTwoThreeFourFiveSixOneTwoOneTwoThreeFourFiveSixOneTwoThreeFourFiveSixOneTwoThreeFourFiveSix
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/board.exp.json b/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/board.exp.json
new file mode 100644
index 000000000..757009426
--- /dev/null
+++ b/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/board.exp.json
@@ -0,0 +1,383 @@
+{
+ "name": "",
+ "isFolderOnly": false,
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "x",
+ "type": "rectangle",
+ "pos": {
+ "x": 12,
+ "y": 52
+ },
+ "width": 100,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B5",
+ "stroke": "B1",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "x",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 7,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "y",
+ "type": "rectangle",
+ "pos": {
+ "x": 162,
+ "y": 52
+ },
+ "width": 100,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B5",
+ "stroke": "B1",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "y",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 8,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [
+ {
+ "id": "(x -> x)[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow\n3 rows",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 53,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 211
+ },
+ {
+ "x": 142,
+ "y": 211
+ },
+ {
+ "x": 142,
+ "y": 290.5
+ },
+ {
+ "x": 62,
+ "y": 290.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -> x)[1]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 37,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 309
+ },
+ {
+ "x": 142,
+ "y": 309
+ },
+ {
+ "x": 142,
+ "y": 364.5
+ },
+ {
+ "x": 62,
+ "y": 364.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -> y)[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "y",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "normal",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 48,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 402
+ },
+ {
+ "x": 212,
+ "y": 402
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(y -> y)[0]",
+ "src": "y",
+ "srcArrow": "none",
+ "dst": "y",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow\n3 rows",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 53,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 212,
+ "y": 495
+ },
+ {
+ "x": 292,
+ "y": 495
+ },
+ {
+ "x": 292,
+ "y": 574.5
+ },
+ {
+ "x": 212,
+ "y": 574.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -- )[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x-lifeline-end-1678191278",
+ "dstArrow": "none",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "B2",
+ "borderRadius": 10,
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 118
+ },
+ {
+ "x": 62,
+ "y": 667.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(y -- )[0]",
+ "src": "y",
+ "srcArrow": "none",
+ "dst": "y-lifeline-end-35261543",
+ "dstArrow": "none",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "B2",
+ "borderRadius": 10,
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 212,
+ "y": 118
+ },
+ {
+ "x": 212,
+ "y": 667.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ],
+ "root": {
+ "id": "",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 0,
+ "height": 0,
+ "opacity": 0,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "N7",
+ "stroke": "",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "zIndex": 0,
+ "level": 0
+ }
+}
diff --git a/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/sketch.exp.svg b/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/sketch.exp.svg
new file mode 100644
index 000000000..4adb72495
--- /dev/null
+++ b/e2etests/testdata/txtar/sequence-multiline-self-reference/dagre/sketch.exp.svg
@@ -0,0 +1,107 @@
+xy self referential long description which ismultirow3 rowsself referential long description which ismultirownormalself referential long description which ismultirow3 rows
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/board.exp.json b/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/board.exp.json
new file mode 100644
index 000000000..757009426
--- /dev/null
+++ b/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/board.exp.json
@@ -0,0 +1,383 @@
+{
+ "name": "",
+ "isFolderOnly": false,
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "x",
+ "type": "rectangle",
+ "pos": {
+ "x": 12,
+ "y": 52
+ },
+ "width": 100,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B5",
+ "stroke": "B1",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "x",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 7,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ },
+ {
+ "id": "y",
+ "type": "rectangle",
+ "pos": {
+ "x": 162,
+ "y": 52
+ },
+ "width": 100,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B5",
+ "stroke": "B1",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "y",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 8,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [
+ {
+ "id": "(x -> x)[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow\n3 rows",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 53,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 211
+ },
+ {
+ "x": 142,
+ "y": 211
+ },
+ {
+ "x": 142,
+ "y": 290.5
+ },
+ {
+ "x": 62,
+ "y": 290.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -> x)[1]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 37,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 309
+ },
+ {
+ "x": 142,
+ "y": 309
+ },
+ {
+ "x": 142,
+ "y": 364.5
+ },
+ {
+ "x": 62,
+ "y": 364.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -> y)[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "y",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "normal",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 48,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 402
+ },
+ {
+ "x": 212,
+ "y": 402
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(y -> y)[0]",
+ "src": "y",
+ "srcArrow": "none",
+ "dst": "y",
+ "dstArrow": "triangle",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "B1",
+ "borderRadius": 10,
+ "label": "self referential long description which is\nmultirow\n3 rows",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 261,
+ "labelHeight": 53,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 212,
+ "y": 495
+ },
+ {
+ "x": 292,
+ "y": 495
+ },
+ {
+ "x": 292,
+ "y": 574.5
+ },
+ {
+ "x": 212,
+ "y": 574.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 4
+ },
+ {
+ "id": "(x -- )[0]",
+ "src": "x",
+ "srcArrow": "none",
+ "dst": "x-lifeline-end-1678191278",
+ "dstArrow": "none",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "B2",
+ "borderRadius": 10,
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 62,
+ "y": 118
+ },
+ {
+ "x": 62,
+ "y": 667.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ },
+ {
+ "id": "(y -- )[0]",
+ "src": "y",
+ "srcArrow": "none",
+ "dst": "y-lifeline-end-35261543",
+ "dstArrow": "none",
+ "opacity": 1,
+ "strokeDash": 6,
+ "strokeWidth": 2,
+ "stroke": "B2",
+ "borderRadius": 10,
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N2",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 212,
+ "y": 118
+ },
+ {
+ "x": 212,
+ "y": 667.5
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 1
+ }
+ ],
+ "root": {
+ "id": "",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 0,
+ "height": 0,
+ "opacity": 0,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "N7",
+ "stroke": "",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "zIndex": 0,
+ "level": 0
+ }
+}
diff --git a/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/sketch.exp.svg b/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/sketch.exp.svg
new file mode 100644
index 000000000..4adb72495
--- /dev/null
+++ b/e2etests/testdata/txtar/sequence-multiline-self-reference/elk/sketch.exp.svg
@@ -0,0 +1,107 @@
+xy self referential long description which ismultirow3 rowsself referential long description which ismultirownormalself referential long description which ismultirow3 rows
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar.txt b/e2etests/txtar.txt
similarity index 94%
rename from e2etests/testdata/txtar.txt
rename to e2etests/txtar.txt
index 6a4abf726..7019b2258 100644
--- a/e2etests/testdata/txtar.txt
+++ b/e2etests/txtar.txt
@@ -303,3 +303,13 @@ Sequence: {
A -> File: One\nTwo\nThree\nFour\nFive\nSix
}
}
+
+-- sequence-multiline-self-reference --
+shape: sequence_diagram
+x
+y
+
+x -> x: self referential long description which is\nmultirow\n3 rows
+x -> x: self referential long description which is\nmultirow
+x -> y: normal
+y -> y: self referential long description which is\nmultirow\n3 rows