diff --git a/d2exporter/export_test.go b/d2exporter/export_test.go
index 70c02c210..d0fac1189 100644
--- a/d2exporter/export_test.go
+++ b/d2exporter/export_test.go
@@ -8,6 +8,7 @@ import (
"cdr.dev/slog"
+ tassert "github.com/stretchr/testify/assert"
"oss.terrastruct.com/util-go/assert"
"oss.terrastruct.com/util-go/diff"
@@ -80,6 +81,23 @@ y: {shape: square}
}
},
},
+ {
+ name: "sequence_group_position",
+
+ dsl: `hey {
+ shape: sequence_diagram
+ a
+ b
+ group: {
+ a -> b
+ }
+}
+`,
+ assertions: func(t *testing.T, d *d2target.Diagram) {
+ tassert.Equal(t, "hey.group", d.Shapes[3].ID)
+ tassert.Equal(t, "INSIDE_TOP_LEFT", d.Shapes[3].LabelPosition)
+ },
+ },
}
runa(t, tcs)
diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go
index 258428975..1058d6037 100644
--- a/d2layouts/d2sequence/sequence_diagram.go
+++ b/d2layouts/d2sequence/sequence_diagram.go
@@ -74,6 +74,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
// Groups may have more nested groups
for len(queue) > 0 {
curr := queue[0]
+ curr.LabelPosition = go2.Pointer(string(label.InsideTopLeft))
groups = append(groups, curr)
queue = queue[1:]
queue = append(queue, curr.ChildrenArray...)
diff --git a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json
index 270198f16..776b8ddfb 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json
@@ -198,6 +198,7 @@
"underline": false,
"labelWidth": 30,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -237,6 +238,7 @@
"underline": false,
"labelWidth": 57,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -276,6 +278,7 @@
"underline": false,
"labelWidth": 78,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -315,6 +318,7 @@
"underline": false,
"labelWidth": 58,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -394,6 +398,7 @@
"underline": false,
"labelWidth": 38,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
diff --git a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg
index 0afcfd18a..d3ed45a1a 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg
@@ -18,13 +18,13 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note
+abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note
-
-
-
-
-
+
+
+
+
+
diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json
index 270198f16..776b8ddfb 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json
@@ -198,6 +198,7 @@
"underline": false,
"labelWidth": 30,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -237,6 +238,7 @@
"underline": false,
"labelWidth": 57,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -276,6 +278,7 @@
"underline": false,
"labelWidth": 78,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -315,6 +318,7 @@
"underline": false,
"labelWidth": 58,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -394,6 +398,7 @@
"underline": false,
"labelWidth": 38,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
diff --git a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg
index 0afcfd18a..d3ed45a1a 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg
@@ -18,13 +18,13 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note
+abcdggggroup 1group bchoonested guy lalaeyokayokaywhat would arnold saythis note
-
-
-
-
-
+
+
+
+
+
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 21f56fb8a..772cc63c2 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
@@ -158,6 +158,7 @@
"underline": false,
"labelWidth": 160,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -197,6 +198,7 @@
"underline": false,
"labelWidth": 238,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -236,6 +238,7 @@
"underline": false,
"labelWidth": 173,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 3
},
@@ -275,6 +278,7 @@
"underline": false,
"labelWidth": 77,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 4
},
@@ -354,6 +358,7 @@
"underline": false,
"labelWidth": 41,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 5
},
@@ -393,6 +398,7 @@
"underline": false,
"labelWidth": 24,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -432,6 +438,7 @@
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -471,6 +478,7 @@
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -510,6 +518,7 @@
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -549,6 +558,7 @@
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
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 0dbb0afaa..48b328e86 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
@@ -18,18 +18,18 @@ width="1116" height="2458" viewBox="-197 -26 1116 2458">abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere
+abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere
+abjust an actorthis is a message groupaltand this is a nested message groupcase 1case 2case 3case 4what about more nestingcrazy townwhoa a notea note here to remember that padding must consider notes toojustalongnotehere
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place
+How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place
-
+
diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json
index d20a6d846..3945edf3f 100644
--- a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json
@@ -478,6 +478,7 @@
"underline": false,
"labelWidth": 185,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
diff --git a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg
index 364fb5549..5f4dd359a 100644
--- a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg
@@ -18,9 +18,9 @@ width="2447" height="2536" viewBox="-88 -88 2447 2536">How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place
+How this is renderedCLId2astd2compilerd2layoutd2exporterd2themesd2rendererd2sequencelayoutd2dagrelayoutonly if root is not sequence 'How this is rendered: {...}'tokenized ASTcompile ASTobjects and edgesrun layout enginesrun engine on shape: sequence_diagram, temporarily removerun core engine on rest add back in sequence diagramsdiagram with correct positions and dimensionsexport diagram with chosen theme and rendererget theme stylesrender to SVGresulting SVGmeasurements also take place
-
+
diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json
index c0f384c07..d20401f87 100644
--- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/board.exp.json
@@ -158,6 +158,7 @@
"underline": false,
"labelWidth": 160,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 1
},
@@ -197,6 +198,7 @@
"underline": false,
"labelWidth": 238,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 2
},
@@ -236,6 +238,7 @@
"underline": false,
"labelWidth": 173,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 3
},
@@ -275,6 +278,7 @@
"underline": false,
"labelWidth": 21,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 4
},
@@ -314,6 +318,7 @@
"underline": false,
"labelWidth": 21,
"labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_LEFT",
"zIndex": 3,
"level": 5
}
diff --git a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg
index 288cab1f2..5bcd47f78 100644
--- a/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg
+++ b/e2etests/testdata/todo/sequence_diagram_actor_padding_nested_groups/dagre/sketch.exp.svg
@@ -18,13 +18,13 @@ width="921" height="1242" viewBox="-147 -26 921 1242">bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo
+bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo
-
-
-
-
-
+
+
+
+
+
bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo
+bacthis is a message groupand this is a nested message groupwhat about more nestingyoyo
-
-
-
-
-
+
+
+
+
+