From 7ad0b6e99c2fb0f560889a92a023110766789066 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Fri, 30 Dec 2022 17:14:44 +0800
Subject: [PATCH 01/14] Add double circle shape
---
d2compiler/compile.go | 2 +-
d2graph/d2graph.go | 4 ++--
d2renderers/d2svg/d2svg.go | 24 +++++++++++++++++++++
d2target/d2target.go | 2 ++
lib/shape/shape.go | 12 +++++++----
lib/shape/shape_double_circle.go | 37 ++++++++++++++++++++++++++++++++
6 files changed, 74 insertions(+), 7 deletions(-)
create mode 100644 lib/shape/shape_double_circle.go
diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index 2e4d75c3b..bfb967695 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -802,7 +802,7 @@ func (c *compiler) validateKey(obj *d2graph.Object, m *d2ast.Map, mk *d2ast.Key)
if reserved == "" {
c.errorf(mk.Range.Start, mk.Range.End, "image shapes cannot have children.")
}
- case d2target.ShapeCircle, d2target.ShapeSquare:
+ case d2target.ShapeCircle, d2target.ShapeSquare, d2target.ShapeDoubleCircle:
checkEqual := (reserved == "width" && obj.Attributes.Height != nil) ||
(reserved == "height" && obj.Attributes.Width != nil)
diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go
index 7bd59ec6a..caea9d3a3 100644
--- a/d2graph/d2graph.go
+++ b/d2graph/d2graph.go
@@ -353,7 +353,7 @@ func (obj *Object) GetFill(theme *d2themes.Theme) string {
shape := obj.Attributes.Shape.Value
- if shape == "" || strings.EqualFold(shape, d2target.ShapeSquare) || strings.EqualFold(shape, d2target.ShapeCircle) || strings.EqualFold(shape, d2target.ShapeOval) || strings.EqualFold(shape, d2target.ShapeRectangle) {
+ if shape == "" || strings.EqualFold(shape, d2target.ShapeSquare) || strings.EqualFold(shape, d2target.ShapeCircle) || strings.EqualFold(shape, d2target.ShapeDoubleCircle) || strings.EqualFold(shape, d2target.ShapeOval) || strings.EqualFold(shape, d2target.ShapeRectangle) {
if level == 1 {
if !obj.IsContainer() {
return theme.Colors.B6
@@ -1101,7 +1101,7 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler
paddingX, paddingY := obj.GetPadding()
switch shapeType {
- case d2target.ShapeSquare, d2target.ShapeCircle:
+ case d2target.ShapeSquare, d2target.ShapeCircle, d2target.ShapeDoubleCircle:
if desiredWidth != 0 || desiredHeight != 0 {
paddingX = 0.
paddingY = 0.
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index cc735055a..0e54a76df 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -493,6 +493,17 @@ func renderOval(tl *geo.Point, width, height float64, style string) string {
return fmt.Sprintf(` `, cx, cy, rx, ry, style)
}
+func renderDoubleCircle(tl *geo.Point, width, height float64, style string) string {
+ rx := width / 2
+ ry := height / 2
+ cx := tl.X + rx
+ cy := tl.Y + ry
+ return fmt.Sprintf(`
+ `,
+ cx, cy, rx-2, ry-2, style,
+ cx, cy, rx-10, ry-10, style)
+}
+
func defineShadowFilter(writer io.Writer) {
fmt.Fprint(writer, `
@@ -669,6 +680,19 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
} else {
fmt.Fprint(writer, renderOval(tl, width, height, style))
}
+ case d2target.ShapeDoubleCircle:
+ if targetShape.Multiple {
+ fmt.Fprint(writer, renderDoubleCircle(multipleTL, width, height, style))
+ }
+ if sketchRunner != nil {
+ out, err := d2sketch.Oval(sketchRunner, targetShape)
+ if err != nil {
+ return "", err
+ }
+ fmt.Fprintf(writer, out)
+ } else {
+ fmt.Fprint(writer, renderDoubleCircle(tl, width, height, style))
+ }
case d2target.ShapeImage:
fmt.Fprintf(writer, ` `,
diff --git a/d2target/d2target.go b/d2target/d2target.go
index 90974c7f1..5c69294ce 100644
--- a/d2target/d2target.go
+++ b/d2target/d2target.go
@@ -331,6 +331,7 @@ const (
ShapeSQLTable = "sql_table"
ShapeImage = "image"
ShapeSequenceDiagram = "sequence_diagram"
+ ShapeDoubleCircle = "double_circle"
)
var Shapes = []string{
@@ -357,6 +358,7 @@ var Shapes = []string{
ShapeSQLTable,
ShapeImage,
ShapeSequenceDiagram,
+ ShapeDoubleCircle,
}
func IsShape(s string) bool {
diff --git a/lib/shape/shape.go b/lib/shape/shape.go
index 6422c588f..33db84af7 100644
--- a/lib/shape/shape.go
+++ b/lib/shape/shape.go
@@ -24,6 +24,7 @@ const (
CIRCLE_TYPE = "Circle"
HEXAGON_TYPE = "Hexagon"
CLOUD_TYPE = "Cloud"
+ DOUBLE_CIRCLE_TYPE = "DoubleCircle"
TABLE_TYPE = "Table"
CLASS_TYPE = "Class"
@@ -108,6 +109,8 @@ func NewShape(shapeType string, box *geo.Box) Shape {
return NewCallout(box)
case CIRCLE_TYPE:
return NewCircle(box)
+ case DOUBLE_CIRCLE_TYPE:
+ return NewDoubleCircle(box)
case CLASS_TYPE:
return NewClass(box)
case CLOUD_TYPE:
@@ -164,10 +167,11 @@ func NewShape(shapeType string, box *geo.Box) Shape {
// p is the prev point (used to calculate slope)
// s is the point on the actual shape border that'll be returned
//
-// p
-// │
-// │
-// ▼
+// p
+// │
+// │
+// ▼
+//
// ┌────r─────────────────────────┐
// │ │
// │ │ │
diff --git a/lib/shape/shape_double_circle.go b/lib/shape/shape_double_circle.go
new file mode 100644
index 000000000..d99cbbaa8
--- /dev/null
+++ b/lib/shape/shape_double_circle.go
@@ -0,0 +1,37 @@
+package shape
+
+import (
+ "oss.terrastruct.com/d2/lib/geo"
+ "oss.terrastruct.com/d2/lib/svg"
+)
+
+type shapeDoubleCircle struct {
+ *baseShape
+}
+
+func NewDoubleCircle(box *geo.Box) Shape {
+ return shapeDoubleCircle{
+ baseShape: &baseShape{
+ Type: DOUBLE_CIRCLE_TYPE,
+ Box: box,
+ },
+ }
+}
+
+func doubleCirclePath(box *geo.Box) *svg.SvgPathContext {
+ // halfYFactor := 43.6 / 87.3
+ pc := svg.NewSVGPathContext(box.TopLeft, box.Width, box.Height)
+ pc.StartAt(pc.Absolute(0.25, 0))
+ // pc
+ return pc
+}
+
+func (s shapeDoubleCircle) Perimeter() []geo.Intersectable {
+ return doubleCirclePath(s.Box).Path
+}
+
+func (s shapeDoubleCircle) GetSVGPathData() []string {
+ return []string{
+ doubleCirclePath(s.Box).PathData(),
+ }
+}
From 07bfb748b018006a777e1e7b11518e360c9d5aa5 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Fri, 30 Dec 2022 17:30:29 +0800
Subject: [PATCH 02/14] Implement the sketch of double circle
---
d2renderers/d2sketch/sketch.go | 41 ++++++++++++++++++++++++++++++++++
d2renderers/d2svg/d2svg.go | 2 +-
2 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index 4c4913a2b..40bf7bc63 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -133,6 +133,47 @@ func Oval(r *Runner, shape d2target.Shape) (string, error) {
return output, nil
}
+func DoubleOval(r *Runner, shape d2target.Shape) (string, error) {
+ js_big_circle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
+ fill: "%s",
+ stroke: "%s",
+ strokeWidth: %d,
+ %s
+ });`, shape.Width/2, shape.Height/2, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
+ js_small_circle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
+ fill: "%s",
+ stroke: "%s",
+ strokeWidth: %d,
+ %s
+ });`, shape.Width/2, shape.Height/2, shape.Width-15, shape.Height-15, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
+ paths_big_circle, err := computeRoughPaths(r, js_big_circle)
+ if err != nil {
+ return "", err
+ }
+ paths_small_circle, err := computeRoughPaths(r, js_small_circle)
+ if err != nil {
+ return "", err
+ }
+ output := ""
+ for _, p := range paths_big_circle {
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ )
+ }
+ for _, p := range paths_small_circle {
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ )
+ }
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X+shape.Width/2, shape.Pos.Y+shape.Height/2, shape.Width/2, shape.Height/2,
+ )
+ return output, nil
+}
+
// TODO need to personalize this per shape like we do in Terrastruct app
func Paths(r *Runner, shape d2target.Shape, paths []string) (string, error) {
output := ""
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index 0e54a76df..5117d4c2a 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -685,7 +685,7 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
fmt.Fprint(writer, renderDoubleCircle(multipleTL, width, height, style))
}
if sketchRunner != nil {
- out, err := d2sketch.Oval(sketchRunner, targetShape)
+ out, err := d2sketch.DoubleOval(sketchRunner, targetShape)
if err != nil {
return "", err
}
From 69369a20c0fef7b971f15188d357c0248167e748 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Fri, 30 Dec 2022 20:11:22 +0800
Subject: [PATCH 03/14] Fix ascii diagram and remove unused code
---
lib/shape/shape.go | 9 ++++-----
lib/shape/shape_double_circle.go | 28 ++++++++++++++--------------
2 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/lib/shape/shape.go b/lib/shape/shape.go
index 33db84af7..edfc5e6f3 100644
--- a/lib/shape/shape.go
+++ b/lib/shape/shape.go
@@ -167,11 +167,10 @@ func NewShape(shapeType string, box *geo.Box) Shape {
// p is the prev point (used to calculate slope)
// s is the point on the actual shape border that'll be returned
//
-// p
-// │
-// │
-// ▼
-//
+// p
+// │
+// │
+// ▼
// ┌────r─────────────────────────┐
// │ │
// │ │ │
diff --git a/lib/shape/shape_double_circle.go b/lib/shape/shape_double_circle.go
index d99cbbaa8..f67e18b09 100644
--- a/lib/shape/shape_double_circle.go
+++ b/lib/shape/shape_double_circle.go
@@ -1,8 +1,9 @@
package shape
import (
+ "math"
+
"oss.terrastruct.com/d2/lib/geo"
- "oss.terrastruct.com/d2/lib/svg"
)
type shapeDoubleCircle struct {
@@ -18,20 +19,19 @@ func NewDoubleCircle(box *geo.Box) Shape {
}
}
-func doubleCirclePath(box *geo.Box) *svg.SvgPathContext {
- // halfYFactor := 43.6 / 87.3
- pc := svg.NewSVGPathContext(box.TopLeft, box.Width, box.Height)
- pc.StartAt(pc.Absolute(0.25, 0))
- // pc
- return pc
+func (s shapeDoubleCircle) AspectRatio1() bool {
+ return true
+}
+
+func (s shapeDoubleCircle) GetDimensionsToFit(width, height, padding float64) (float64, float64) {
+ radius := math.Ceil(math.Sqrt(math.Pow(width/2, 2)+math.Pow(height/2, 2))) + padding
+ return radius * 2, radius * 2
+}
+
+func (s shapeDoubleCircle) GetInsidePlacement(width, height, padding float64) geo.Point {
+ return *geo.NewPoint(s.Box.TopLeft.X+math.Ceil(s.Box.Width/2-width/2), s.Box.TopLeft.Y+math.Ceil(s.Box.Height/2-height/2))
}
func (s shapeDoubleCircle) Perimeter() []geo.Intersectable {
- return doubleCirclePath(s.Box).Path
-}
-
-func (s shapeDoubleCircle) GetSVGPathData() []string {
- return []string{
- doubleCirclePath(s.Box).PathData(),
- }
+ return []geo.Intersectable{geo.NewEllipse(s.Box.Center(), s.Box.Width/2, s.Box.Height/2)}
}
From fd7f30d1c3bdbf93968c16d560cf00512a5e5897 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Fri, 30 Dec 2022 21:58:34 +0800
Subject: [PATCH 04/14] Add test case for double circle
---
e2etests/stable_test.go | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go
index 6590d295e..cc04d12c0 100644
--- a/e2etests/stable_test.go
+++ b/e2etests/stable_test.go
@@ -42,13 +42,14 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
+double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud
+hexagon -> cloud -> double_circle
`,
},
{
@@ -71,13 +72,14 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
+double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud
+hexagon -> cloud -> double_circle
rectangle.multiple: true
square.multiple: true
@@ -96,6 +98,7 @@ oval.multiple: true
circle.multiple: true
hexagon.multiple: true
cloud.multiple: true
+double_circle.multiple: true
`,
},
{
@@ -118,13 +121,14 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
+double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud
+hexagon -> cloud -> double_circle
rectangle.shadow: true
square.shadow: true
@@ -143,6 +147,7 @@ oval.shadow: true
circle.shadow: true
hexagon.shadow: true
cloud.shadow: true
+double_circle.shadow: true
`,
},
{
From f1b7f2706dffe68c7326da0badd87ff486f75c61 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Sat, 31 Dec 2022 14:17:34 +0800
Subject: [PATCH 05/14] update renderDoubleOval function
---
d2renderers/d2sketch/sketch.go | 8 ++++----
d2renderers/d2svg/d2svg.go | 9 +--------
2 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index 40bf7bc63..5aea26fcc 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -134,23 +134,23 @@ func Oval(r *Runner, shape d2target.Shape) (string, error) {
}
func DoubleOval(r *Runner, shape d2target.Shape) (string, error) {
- js_big_circle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
+ jsBigCircle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
fill: "%s",
stroke: "%s",
strokeWidth: %d,
%s
});`, shape.Width/2, shape.Height/2, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
- js_small_circle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
+ jsSmallCircle := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
fill: "%s",
stroke: "%s",
strokeWidth: %d,
%s
});`, shape.Width/2, shape.Height/2, shape.Width-15, shape.Height-15, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
- paths_big_circle, err := computeRoughPaths(r, js_big_circle)
+ paths_big_circle, err := computeRoughPaths(r, jsBigCircle)
if err != nil {
return "", err
}
- paths_small_circle, err := computeRoughPaths(r, js_small_circle)
+ paths_small_circle, err := computeRoughPaths(r, jsSmallCircle)
if err != nil {
return "", err
}
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index 5117d4c2a..74df32e3d 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -494,14 +494,7 @@ func renderOval(tl *geo.Point, width, height float64, style string) string {
}
func renderDoubleCircle(tl *geo.Point, width, height float64, style string) string {
- rx := width / 2
- ry := height / 2
- cx := tl.X + rx
- cy := tl.Y + ry
- return fmt.Sprintf(`
- `,
- cx, cy, rx-2, ry-2, style,
- cx, cy, rx-10, ry-10, style)
+ return renderOval(tl, width, height, style) + renderOval(&geo.Point{X: tl.X + 5, Y: tl.Y + 5}, width-10, height-10, style)
}
func defineShadowFilter(writer io.Writer) {
From 1b37cf4e4884e24289843d0dcdc3df67ec9eb716 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Sat, 31 Dec 2022 15:26:38 +0800
Subject: [PATCH 06/14] Make to be a style attribute and remove shape
---
d2compiler/compile.go | 2 ++
d2exporter/export.go | 3 ++
d2graph/d2graph.go | 15 ++++++--
d2oracle/edit.go | 5 +++
d2renderers/d2svg/d2svg.go | 59 ++++++++++++++++++++------------
d2target/d2target.go | 7 ++--
e2etests/stable_test.go | 11 ++----
lib/shape/shape.go | 3 --
lib/shape/shape_double_circle.go | 37 --------------------
9 files changed, 67 insertions(+), 75 deletions(-)
delete mode 100644 lib/shape/shape_double_circle.go
diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index bfb967695..ada065e19 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -235,6 +235,8 @@ func (c *compiler) compileAttributes(attrs *d2graph.Attributes, mk *d2ast.Key) {
attrs.Width = &d2graph.Scalar{MapKey: mk}
} else if reserved == "height" {
attrs.Height = &d2graph.Scalar{MapKey: mk}
+ } else if reserved == "double-border" {
+ attrs.Style.DoubleBorder = &d2graph.Scalar{MapKey: mk}
}
}
diff --git a/d2exporter/export.go b/d2exporter/export.go
index 9706365f0..8a636759e 100644
--- a/d2exporter/export.go
+++ b/d2exporter/export.go
@@ -93,6 +93,9 @@ func applyStyles(shape *d2target.Shape, obj *d2graph.Object) {
if obj.Attributes.Style.Font != nil {
shape.FontFamily = obj.Attributes.Style.Font.Value
}
+ if obj.Attributes.Style.DoubleBorder != nil {
+ shape.DoubleBorder, _ = strconv.ParseBool(obj.Attributes.Style.DoubleBorder.Value)
+ }
}
func toShape(obj *d2graph.Object, theme *d2themes.Theme) d2target.Shape {
diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go
index caea9d3a3..fffed16b9 100644
--- a/d2graph/d2graph.go
+++ b/d2graph/d2graph.go
@@ -147,6 +147,7 @@ type Style struct {
Italic *Scalar `json:"italic,omitempty"`
Underline *Scalar `json:"underline,omitempty"`
Filled *Scalar `json:"filled,omitempty"`
+ DoubleBorder *Scalar `json:"doubleBorder,omitempty"`
}
func (s *Style) Apply(key, value string) error {
@@ -300,6 +301,15 @@ func (s *Style) Apply(key, value string) error {
return errors.New(`expected "filled" to be true or false`)
}
s.Filled.Value = value
+ case "double-border":
+ if s.DoubleBorder == nil {
+ break
+ }
+ _, err := strconv.ParseBool(value)
+ if err != nil {
+ return errors.New(`expected "double-border" to be true or false`)
+ }
+ s.DoubleBorder.Value = value
default:
return fmt.Errorf("unknown style key: %s", key)
}
@@ -1247,8 +1257,9 @@ var StyleKeywords = map[string]struct{}{
"underline": {},
// Only for shapes
- "shadow": {},
- "multiple": {},
+ "shadow": {},
+ "multiple": {},
+ "double-border": {},
// Only for squares
"3d": {},
diff --git a/d2oracle/edit.go b/d2oracle/edit.go
index b379df0d5..48f7d0692 100644
--- a/d2oracle/edit.go
+++ b/d2oracle/edit.go
@@ -284,6 +284,11 @@ func _set(g *d2graph.Graph, key string, tag, value *string) error {
attrs.Style.Multiple.MapKey.SetScalar(mk.Value.ScalarBox())
return nil
}
+ case "double-border":
+ if attrs.Style.DoubleBorder != nil {
+ attrs.Style.DoubleBorder.MapKey.SetScalar(mk.Value.ScalarBox())
+ return nil
+ }
case "font":
if attrs.Style.Font != nil {
attrs.Style.Font.MapKey.SetScalar(mk.Value.ScalarBox())
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index 74df32e3d..ef7b9513c 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -493,7 +493,7 @@ func renderOval(tl *geo.Point, width, height float64, style string) string {
return fmt.Sprintf(` `, cx, cy, rx, ry, style)
}
-func renderDoubleCircle(tl *geo.Point, width, height float64, style string) string {
+func renderDoubleOval(tl *geo.Point, width, height float64, style string) string {
return renderOval(tl, width, height, style) + renderOval(&geo.Point{X: tl.X + 5, Y: tl.Y + 5}, width-10, height-10, style)
}
@@ -661,31 +661,46 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
fmt.Fprintf(writer, closingTag)
return labelMask, nil
case d2target.ShapeOval:
- if targetShape.Multiple {
- fmt.Fprint(writer, renderOval(multipleTL, width, height, style))
- }
- if sketchRunner != nil {
- out, err := d2sketch.Oval(sketchRunner, targetShape)
- if err != nil {
- return "", err
+ if !targetShape.DoubleBorder {
+ if targetShape.Multiple {
+ fmt.Fprint(writer, renderOval(multipleTL, width, height, style))
}
- fmt.Fprintf(writer, out)
- } else {
- fmt.Fprint(writer, renderOval(tl, width, height, style))
- }
- case d2target.ShapeDoubleCircle:
- if targetShape.Multiple {
- fmt.Fprint(writer, renderDoubleCircle(multipleTL, width, height, style))
- }
- if sketchRunner != nil {
- out, err := d2sketch.DoubleOval(sketchRunner, targetShape)
- if err != nil {
- return "", err
+ if sketchRunner != nil {
+ out, err := d2sketch.Oval(sketchRunner, targetShape)
+ if err != nil {
+ return "", err
+ }
+ fmt.Fprintf(writer, out)
+ } else {
+ fmt.Fprint(writer, renderOval(tl, width, height, style))
}
- fmt.Fprintf(writer, out)
} else {
- fmt.Fprint(writer, renderDoubleCircle(tl, width, height, style))
+ if targetShape.Multiple {
+ fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, style))
+ }
+ if sketchRunner != nil {
+ out, err := d2sketch.DoubleOval(sketchRunner, targetShape)
+ if err != nil {
+ return "", err
+ }
+ fmt.Fprintf(writer, out)
+ } else {
+ fmt.Fprint(writer, renderDoubleOval(tl, width, height, style))
+ }
}
+ // case d2target.ShapeDoubleCircle:
+ // if targetShape.Multiple {
+ // fmt.Fprint(writer, renderDoubleCircle(multipleTL, width, height, style))
+ // }
+ // if sketchRunner != nil {
+ // out, err := d2sketch.DoubleOval(sketchRunner, targetShape)
+ // if err != nil {
+ // return "", err
+ // }
+ // fmt.Fprintf(writer, out)
+ // } else {
+ // fmt.Fprint(writer, renderDoubleCircle(tl, width, height, style))
+ // }
case d2target.ShapeImage:
fmt.Fprintf(writer, ` `,
diff --git a/d2target/d2target.go b/d2target/d2target.go
index 5c69294ce..35760cd85 100644
--- a/d2target/d2target.go
+++ b/d2target/d2target.go
@@ -124,9 +124,10 @@ type Shape struct {
Fill string `json:"fill"`
Stroke string `json:"stroke"`
- Shadow bool `json:"shadow"`
- ThreeDee bool `json:"3d"`
- Multiple bool `json:"multiple"`
+ Shadow bool `json:"shadow"`
+ ThreeDee bool `json:"3d"`
+ Multiple bool `json:"multiple"`
+ DoubleBorder bool `json:"double-border"`
Tooltip string `json:"tooltip"`
Link string `json:"link"`
diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go
index cc04d12c0..6590d295e 100644
--- a/e2etests/stable_test.go
+++ b/e2etests/stable_test.go
@@ -42,14 +42,13 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
-double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud -> double_circle
+hexagon -> cloud
`,
},
{
@@ -72,14 +71,13 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
-double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud -> double_circle
+hexagon -> cloud
rectangle.multiple: true
square.multiple: true
@@ -98,7 +96,6 @@ oval.multiple: true
circle.multiple: true
hexagon.multiple: true
cloud.multiple: true
-double_circle.multiple: true
`,
},
{
@@ -121,14 +118,13 @@ oval: {shape: "oval"}
circle: {shape: "circle"}
hexagon: {shape: "hexagon"}
cloud: {shape: "cloud"}
-double_circle: {shape: "double_circle"}
rectangle -> square -> page
parallelogram -> document -> cylinder
queue -> package -> step
callout -> stored_data -> person
diamond -> oval -> circle
-hexagon -> cloud -> double_circle
+hexagon -> cloud
rectangle.shadow: true
square.shadow: true
@@ -147,7 +143,6 @@ oval.shadow: true
circle.shadow: true
hexagon.shadow: true
cloud.shadow: true
-double_circle.shadow: true
`,
},
{
diff --git a/lib/shape/shape.go b/lib/shape/shape.go
index edfc5e6f3..6422c588f 100644
--- a/lib/shape/shape.go
+++ b/lib/shape/shape.go
@@ -24,7 +24,6 @@ const (
CIRCLE_TYPE = "Circle"
HEXAGON_TYPE = "Hexagon"
CLOUD_TYPE = "Cloud"
- DOUBLE_CIRCLE_TYPE = "DoubleCircle"
TABLE_TYPE = "Table"
CLASS_TYPE = "Class"
@@ -109,8 +108,6 @@ func NewShape(shapeType string, box *geo.Box) Shape {
return NewCallout(box)
case CIRCLE_TYPE:
return NewCircle(box)
- case DOUBLE_CIRCLE_TYPE:
- return NewDoubleCircle(box)
case CLASS_TYPE:
return NewClass(box)
case CLOUD_TYPE:
diff --git a/lib/shape/shape_double_circle.go b/lib/shape/shape_double_circle.go
deleted file mode 100644
index f67e18b09..000000000
--- a/lib/shape/shape_double_circle.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package shape
-
-import (
- "math"
-
- "oss.terrastruct.com/d2/lib/geo"
-)
-
-type shapeDoubleCircle struct {
- *baseShape
-}
-
-func NewDoubleCircle(box *geo.Box) Shape {
- return shapeDoubleCircle{
- baseShape: &baseShape{
- Type: DOUBLE_CIRCLE_TYPE,
- Box: box,
- },
- }
-}
-
-func (s shapeDoubleCircle) AspectRatio1() bool {
- return true
-}
-
-func (s shapeDoubleCircle) GetDimensionsToFit(width, height, padding float64) (float64, float64) {
- radius := math.Ceil(math.Sqrt(math.Pow(width/2, 2)+math.Pow(height/2, 2))) + padding
- return radius * 2, radius * 2
-}
-
-func (s shapeDoubleCircle) GetInsidePlacement(width, height, padding float64) geo.Point {
- return *geo.NewPoint(s.Box.TopLeft.X+math.Ceil(s.Box.Width/2-width/2), s.Box.TopLeft.Y+math.Ceil(s.Box.Height/2-height/2))
-}
-
-func (s shapeDoubleCircle) Perimeter() []geo.Intersectable {
- return []geo.Intersectable{geo.NewEllipse(s.Box.Center(), s.Box.Width/2, s.Box.Height/2)}
-}
From 679474dce8712100a57ceb2ecfe8940962f80454 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Sat, 31 Dec 2022 15:33:16 +0800
Subject: [PATCH 07/14] Remove double circle shape
---
d2compiler/compile.go | 2 +-
d2graph/d2graph.go | 4 ++--
d2renderers/d2svg/d2svg.go | 14 --------------
d2target/d2target.go | 2 --
4 files changed, 3 insertions(+), 19 deletions(-)
diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index ada065e19..5801712b8 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -804,7 +804,7 @@ func (c *compiler) validateKey(obj *d2graph.Object, m *d2ast.Map, mk *d2ast.Key)
if reserved == "" {
c.errorf(mk.Range.Start, mk.Range.End, "image shapes cannot have children.")
}
- case d2target.ShapeCircle, d2target.ShapeSquare, d2target.ShapeDoubleCircle:
+ case d2target.ShapeCircle, d2target.ShapeSquare:
checkEqual := (reserved == "width" && obj.Attributes.Height != nil) ||
(reserved == "height" && obj.Attributes.Width != nil)
diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go
index fffed16b9..94c690a26 100644
--- a/d2graph/d2graph.go
+++ b/d2graph/d2graph.go
@@ -363,7 +363,7 @@ func (obj *Object) GetFill(theme *d2themes.Theme) string {
shape := obj.Attributes.Shape.Value
- if shape == "" || strings.EqualFold(shape, d2target.ShapeSquare) || strings.EqualFold(shape, d2target.ShapeCircle) || strings.EqualFold(shape, d2target.ShapeDoubleCircle) || strings.EqualFold(shape, d2target.ShapeOval) || strings.EqualFold(shape, d2target.ShapeRectangle) {
+ if shape == "" || strings.EqualFold(shape, d2target.ShapeSquare) || strings.EqualFold(shape, d2target.ShapeCircle) || strings.EqualFold(shape, d2target.ShapeOval) || strings.EqualFold(shape, d2target.ShapeRectangle) {
if level == 1 {
if !obj.IsContainer() {
return theme.Colors.B6
@@ -1111,7 +1111,7 @@ func (g *Graph) SetDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler
paddingX, paddingY := obj.GetPadding()
switch shapeType {
- case d2target.ShapeSquare, d2target.ShapeCircle, d2target.ShapeDoubleCircle:
+ case d2target.ShapeSquare, d2target.ShapeCircle:
if desiredWidth != 0 || desiredHeight != 0 {
paddingX = 0.
paddingY = 0.
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index ef7b9513c..625b24ccd 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -688,20 +688,6 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
fmt.Fprint(writer, renderDoubleOval(tl, width, height, style))
}
}
- // case d2target.ShapeDoubleCircle:
- // if targetShape.Multiple {
- // fmt.Fprint(writer, renderDoubleCircle(multipleTL, width, height, style))
- // }
- // if sketchRunner != nil {
- // out, err := d2sketch.DoubleOval(sketchRunner, targetShape)
- // if err != nil {
- // return "", err
- // }
- // fmt.Fprintf(writer, out)
- // } else {
- // fmt.Fprint(writer, renderDoubleCircle(tl, width, height, style))
- // }
-
case d2target.ShapeImage:
fmt.Fprintf(writer, ` `,
html.EscapeString(targetShape.Icon.String()),
diff --git a/d2target/d2target.go b/d2target/d2target.go
index 35760cd85..5da6da8f0 100644
--- a/d2target/d2target.go
+++ b/d2target/d2target.go
@@ -332,7 +332,6 @@ const (
ShapeSQLTable = "sql_table"
ShapeImage = "image"
ShapeSequenceDiagram = "sequence_diagram"
- ShapeDoubleCircle = "double_circle"
)
var Shapes = []string{
@@ -359,7 +358,6 @@ var Shapes = []string{
ShapeSQLTable,
ShapeImage,
ShapeSequenceDiagram,
- ShapeDoubleCircle,
}
func IsShape(s string) bool {
From ec92fb3606ba7c4516f3c2efad709380d7115185 Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Sat, 31 Dec 2022 15:57:22 +0800
Subject: [PATCH 08/14] Add double bordered rect, oval, square
---
d2compiler/compile.go | 4 +++
d2renderers/d2sketch/sketch.go | 49 +++++++++++++++++++++++++++++++---
d2renderers/d2svg/d2svg.go | 43 +++++++++++++++++++++--------
3 files changed, 81 insertions(+), 15 deletions(-)
diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index 5801712b8..255f8ec64 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -236,6 +236,10 @@ func (c *compiler) compileAttributes(attrs *d2graph.Attributes, mk *d2ast.Key) {
} else if reserved == "height" {
attrs.Height = &d2graph.Scalar{MapKey: mk}
} else if reserved == "double-border" {
+ if attrs.Shape.Value != "" && !strings.EqualFold(attrs.Shape.Value, d2target.ShapeSquare) && !strings.EqualFold(attrs.Shape.Value, d2target.ShapeRectangle) && !strings.EqualFold(attrs.Shape.Value, d2target.ShapeCircle) && !strings.EqualFold(attrs.Shape.Value, d2target.ShapeOval) {
+ c.errorf(mk.Range.Start, mk.Range.End, `key "double-border" can only be applied to squares, rectangles, circles, ovals`)
+ return
+ }
attrs.Style.DoubleBorder = &d2graph.Scalar{MapKey: mk}
}
}
diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index 5aea26fcc..0d7659a79 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -108,6 +108,47 @@ func Rect(r *Runner, shape d2target.Shape) (string, error) {
return output, nil
}
+func DoubleRect(r *Runner, shape d2target.Shape) (string, error) {
+ jsBigRect := fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %d, {
+ fill: "%s",
+ stroke: "%s",
+ strokeWidth: %d,
+ %s
+ });`, shape.Width, shape.Height, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
+ pathsBigRect, err := computeRoughPaths(r, jsBigRect)
+ if err != nil {
+ return "", err
+ }
+ jsSmallRect := fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %d, {
+ fill: "%s",
+ stroke: "%s",
+ strokeWidth: %d,
+ %s
+ });`, shape.Width-10, shape.Height-10, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
+ pathsSmallRect, err := computeRoughPaths(r, jsSmallRect)
+ if err != nil {
+ return "", err
+ }
+ output := ""
+ for _, p := range pathsBigRect {
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ )
+ }
+ for _, p := range pathsSmallRect {
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X+5, shape.Pos.Y+5, p, shapeStyle(shape),
+ )
+ }
+ output += fmt.Sprintf(
+ ` `,
+ shape.Pos.X, shape.Pos.Y, shape.Width, shape.Height,
+ )
+ return output, nil
+}
+
func Oval(r *Runner, shape d2target.Shape) (string, error) {
js := fmt.Sprintf(`node = rc.ellipse(%d, %d, %d, %d, {
fill: "%s",
@@ -146,22 +187,22 @@ func DoubleOval(r *Runner, shape d2target.Shape) (string, error) {
strokeWidth: %d,
%s
});`, shape.Width/2, shape.Height/2, shape.Width-15, shape.Height-15, shape.Fill, shape.Stroke, shape.StrokeWidth, baseRoughProps)
- paths_big_circle, err := computeRoughPaths(r, jsBigCircle)
+ pathsBigCircle, err := computeRoughPaths(r, jsBigCircle)
if err != nil {
return "", err
}
- paths_small_circle, err := computeRoughPaths(r, jsSmallCircle)
+ pathsSmallCircle, err := computeRoughPaths(r, jsSmallCircle)
if err != nil {
return "", err
}
output := ""
- for _, p := range paths_big_circle {
+ for _, p := range pathsBigCircle {
output += fmt.Sprintf(
` `,
shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
)
}
- for _, p := range paths_small_circle {
+ for _, p := range pathsSmallCircle {
output += fmt.Sprintf(
` `,
shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index 625b24ccd..efba73bdd 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -698,19 +698,40 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
if targetShape.ThreeDee {
fmt.Fprint(writer, render3dRect(targetShape))
} else {
- if targetShape.Multiple {
- fmt.Fprintf(writer, ` `,
- targetShape.Pos.X+10, targetShape.Pos.Y-10, targetShape.Width, targetShape.Height, style)
- }
- if sketchRunner != nil {
- out, err := d2sketch.Rect(sketchRunner, targetShape)
- if err != nil {
- return "", err
+ if !targetShape.DoubleBorder {
+ if targetShape.Multiple {
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X+10, targetShape.Pos.Y-10, targetShape.Width, targetShape.Height, style)
+ }
+ if sketchRunner != nil {
+ out, err := d2sketch.Rect(sketchRunner, targetShape)
+ if err != nil {
+ return "", err
+ }
+ fmt.Fprintf(writer, out)
+ } else {
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, style)
}
- fmt.Fprintf(writer, out)
} else {
- fmt.Fprintf(writer, ` `,
- targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, style)
+ if targetShape.Multiple {
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X+10, targetShape.Pos.Y-10, targetShape.Width, targetShape.Height, style)
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X+15, targetShape.Pos.Y-5, targetShape.Width-10, targetShape.Height-10, style)
+ }
+ if sketchRunner != nil {
+ out, err := d2sketch.DoubleRect(sketchRunner, targetShape)
+ if err != nil {
+ return "", err
+ }
+ fmt.Fprintf(writer, out)
+ } else {
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, style)
+ fmt.Fprintf(writer, ` `,
+ targetShape.Pos.X+5, targetShape.Pos.Y+5, targetShape.Width-10, targetShape.Height-10, style)
+ }
}
}
case d2target.ShapeText, d2target.ShapeCode:
From f2a0de9f69da19d476d62be7811efa108dc8490a Mon Sep 17 00:00:00 2001
From: OneRain2333
Date: Sun, 1 Jan 2023 16:13:32 +0800
Subject: [PATCH 09/14] update tests
---
.../testdata/all_shapes/sketch.exp.svg | 2 +-
.../d2sketch/testdata/basic/sketch.exp.svg | 2 +-
.../testdata/child_to_child/sketch.exp.svg | 2 +-
.../d2sketch/testdata/class/sketch.exp.svg | 2 +-
.../testdata/connection_label/sketch.exp.svg | 2 +-
.../testdata/sql_tables/sketch.exp.svg | 2 +-
.../d2sketch/testdata/twitter/sketch.exp.svg | 2 +-
.../diagram_wider_than_tooltip/sketch.exp.svg | 2 +-
.../appendix/testdata/links/sketch.exp.svg | 2 +-
.../tooltip_wider_than_diagram/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 6 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 6 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre_special_ids/dagre/board.exp.json | 7 ++
.../dagre_special_ids/dagre/sketch.exp.svg | 2 +-
.../dagre_special_ids/elk/board.exp.json | 7 ++
.../dagre_special_ids/elk/sketch.exp.svg | 2 +-
.../elk_alignment/dagre/board.exp.json | 14 ++++
.../elk_alignment/dagre/sketch.exp.svg | 2 +-
.../elk_alignment/elk/board.exp.json | 14 ++++
.../elk_alignment/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 4 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 4 ++
.../elk/sketch.exp.svg | 2 +-
.../regression/elk_order/dagre/board.exp.json | 12 ++++
.../regression/elk_order/dagre/sketch.exp.svg | 2 +-
.../regression/elk_order/elk/board.exp.json | 12 ++++
.../regression/elk_order/elk/sketch.exp.svg | 2 +-
.../empty_sequence/dagre/board.exp.json | 2 +
.../empty_sequence/dagre/sketch.exp.svg | 2 +-
.../empty_sequence/elk/board.exp.json | 2 +
.../empty_sequence/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 3 +
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 3 +
.../elk/sketch.exp.svg | 2 +-
.../query_param_escape/dagre/board.exp.json | 2 +
.../query_param_escape/dagre/sketch.exp.svg | 2 +-
.../query_param_escape/elk/board.exp.json | 2 +
.../query_param_escape/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 6 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 6 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 2 +
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 2 +
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 2 +
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 2 +
.../elk/sketch.exp.svg | 2 +-
.../sql_table_overflow/dagre/board.exp.json | 2 +
.../sql_table_overflow/dagre/sketch.exp.svg | 2 +-
.../sql_table_overflow/elk/board.exp.json | 2 +
.../sql_table_overflow/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 3 +
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 3 +
.../elk/sketch.exp.svg | 2 +-
.../sanity/1_to_2/dagre/board.exp.json | 3 +
.../sanity/1_to_2/dagre/sketch.exp.svg | 2 +-
.../testdata/sanity/1_to_2/elk/board.exp.json | 3 +
.../testdata/sanity/1_to_2/elk/sketch.exp.svg | 2 +-
.../sanity/basic/dagre/board.exp.json | 2 +
.../sanity/basic/dagre/sketch.exp.svg | 2 +-
.../testdata/sanity/basic/elk/board.exp.json | 2 +
.../testdata/sanity/basic/elk/sketch.exp.svg | 2 +-
.../child_to_child/dagre/board.exp.json | 4 ++
.../child_to_child/dagre/sketch.exp.svg | 2 +-
.../sanity/child_to_child/elk/board.exp.json | 4 ++
.../sanity/child_to_child/elk/sketch.exp.svg | 2 +-
.../connection_label/dagre/board.exp.json | 2 +
.../connection_label/dagre/sketch.exp.svg | 2 +-
.../connection_label/elk/board.exp.json | 2 +
.../connection_label/elk/sketch.exp.svg | 2 +-
.../stable/all_shapes/dagre/board.exp.json | 17 +++++
.../stable/all_shapes/dagre/sketch.exp.svg | 2 +-
.../stable/all_shapes/elk/board.exp.json | 17 +++++
.../stable/all_shapes/elk/sketch.exp.svg | 2 +-
.../all_shapes_multiple/dagre/board.exp.json | 17 +++++
.../all_shapes_multiple/dagre/sketch.exp.svg | 2 +-
.../all_shapes_multiple/elk/board.exp.json | 17 +++++
.../all_shapes_multiple/elk/sketch.exp.svg | 2 +-
.../all_shapes_shadow/dagre/board.exp.json | 17 +++++
.../all_shapes_shadow/dagre/sketch.exp.svg | 2 +-
.../all_shapes_shadow/elk/board.exp.json | 17 +++++
.../all_shapes_shadow/elk/sketch.exp.svg | 2 +-
.../arrowhead_adjustment/dagre/board.exp.json | 4 ++
.../arrowhead_adjustment/dagre/sketch.exp.svg | 2 +-
.../arrowhead_adjustment/elk/board.exp.json | 4 ++
.../arrowhead_adjustment/elk/sketch.exp.svg | 2 +-
.../arrowhead_labels/dagre/board.exp.json | 2 +
.../arrowhead_labels/dagre/sketch.exp.svg | 2 +-
.../arrowhead_labels/elk/board.exp.json | 2 +
.../arrowhead_labels/elk/sketch.exp.svg | 2 +-
.../stable/binary_tree/dagre/board.exp.json | 15 +++++
.../stable/binary_tree/dagre/sketch.exp.svg | 2 +-
.../stable/binary_tree/elk/board.exp.json | 15 +++++
.../stable/binary_tree/elk/sketch.exp.svg | 2 +-
.../stable/chaos1/dagre/board.exp.json | 5 ++
.../stable/chaos1/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/chaos1/elk/board.exp.json | 5 ++
.../testdata/stable/chaos1/elk/sketch.exp.svg | 2 +-
.../stable/chaos2/dagre/board.exp.json | 15 +++++
.../stable/chaos2/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/chaos2/elk/board.exp.json | 15 +++++
.../testdata/stable/chaos2/elk/sketch.exp.svg | 2 +-
.../child_parent_edges/dagre/board.exp.json | 4 ++
.../child_parent_edges/dagre/sketch.exp.svg | 2 +-
.../child_parent_edges/elk/board.exp.json | 4 ++
.../child_parent_edges/elk/sketch.exp.svg | 2 +-
.../circular_dependency/dagre/board.exp.json | 3 +
.../circular_dependency/dagre/sketch.exp.svg | 2 +-
.../circular_dependency/elk/board.exp.json | 3 +
.../circular_dependency/elk/sketch.exp.svg | 2 +-
.../stable/class/dagre/board.exp.json | 1 +
.../stable/class/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/class/elk/board.exp.json | 1 +
.../testdata/stable/class/elk/sketch.exp.svg | 2 +-
.../stable/code_snippet/dagre/board.exp.json | 3 +
.../stable/code_snippet/dagre/sketch.exp.svg | 2 +-
.../stable/code_snippet/elk/board.exp.json | 3 +
.../stable/code_snippet/elk/sketch.exp.svg | 2 +-
.../connected_container/dagre/board.exp.json | 7 ++
.../connected_container/dagre/sketch.exp.svg | 2 +-
.../connected_container/elk/board.exp.json | 7 ++
.../connected_container/elk/sketch.exp.svg | 2 +-
.../constant_near_stress/dagre/board.exp.json | 10 +++
.../constant_near_stress/dagre/sketch.exp.svg | 2 +-
.../constant_near_stress/elk/board.exp.json | 10 +++
.../constant_near_stress/elk/sketch.exp.svg | 2 +-
.../constant_near_title/dagre/board.exp.json | 6 ++
.../constant_near_title/dagre/sketch.exp.svg | 2 +-
.../constant_near_title/elk/board.exp.json | 6 ++
.../constant_near_title/elk/sketch.exp.svg | 2 +-
.../container_edges/dagre/board.exp.json | 8 +++
.../container_edges/dagre/sketch.exp.svg | 2 +-
.../stable/container_edges/elk/board.exp.json | 8 +++
.../stable/container_edges/elk/sketch.exp.svg | 2 +-
.../stable/dense/dagre/board.exp.json | 17 +++++
.../stable/dense/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/dense/elk/board.exp.json | 17 +++++
.../testdata/stable/dense/elk/sketch.exp.svg | 2 +-
.../different_subgraphs/dagre/board.exp.json | 22 +++++++
.../different_subgraphs/dagre/sketch.exp.svg | 2 +-
.../different_subgraphs/elk/board.exp.json | 22 +++++++
.../different_subgraphs/elk/sketch.exp.svg | 2 +-
.../stable/direction/dagre/board.exp.json | 15 +++++
.../stable/direction/dagre/sketch.exp.svg | 2 +-
.../stable/direction/elk/board.exp.json | 15 +++++
.../stable/direction/elk/sketch.exp.svg | 2 +-
.../stable/font_colors/dagre/board.exp.json | 2 +
.../stable/font_colors/dagre/sketch.exp.svg | 2 +-
.../stable/font_colors/elk/board.exp.json | 2 +
.../stable/font_colors/elk/sketch.exp.svg | 2 +-
.../stable/font_sizes/dagre/board.exp.json | 12 ++++
.../stable/font_sizes/dagre/sketch.exp.svg | 2 +-
.../stable/font_sizes/elk/board.exp.json | 12 ++++
.../stable/font_sizes/elk/sketch.exp.svg | 2 +-
.../giant_markdown_test/dagre/board.exp.json | 3 +
.../giant_markdown_test/dagre/sketch.exp.svg | 2 +-
.../giant_markdown_test/elk/board.exp.json | 3 +
.../giant_markdown_test/elk/sketch.exp.svg | 2 +-
.../testdata/stable/hr/dagre/board.exp.json | 3 +
.../testdata/stable/hr/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/hr/elk/board.exp.json | 3 +
.../testdata/stable/hr/elk/sketch.exp.svg | 2 +-
.../stable/icon-label/dagre/board.exp.json | 2 +
.../stable/icon-label/dagre/sketch.exp.svg | 2 +-
.../stable/icon-label/elk/board.exp.json | 2 +
.../stable/icon-label/elk/sketch.exp.svg | 2 +-
.../stable/images/dagre/board.exp.json | 4 ++
.../stable/images/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/images/elk/board.exp.json | 4 ++
.../testdata/stable/images/elk/sketch.exp.svg | 2 +-
.../stable/investigate/dagre/board.exp.json | 33 ++++++++++
.../stable/investigate/dagre/sketch.exp.svg | 2 +-
.../stable/investigate/elk/board.exp.json | 33 ++++++++++
.../stable/investigate/elk/sketch.exp.svg | 2 +-
.../stable/large_arch/dagre/board.exp.json | 33 ++++++++++
.../stable/large_arch/dagre/sketch.exp.svg | 2 +-
.../stable/large_arch/elk/board.exp.json | 33 ++++++++++
.../stable/large_arch/elk/sketch.exp.svg | 2 +-
.../stable/latex/dagre/board.exp.json | 6 ++
.../stable/latex/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/latex/elk/board.exp.json | 6 ++
.../testdata/stable/latex/elk/sketch.exp.svg | 2 +-
.../testdata/stable/li1/dagre/board.exp.json | 3 +
.../testdata/stable/li1/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/li1/elk/board.exp.json | 3 +
.../testdata/stable/li1/elk/sketch.exp.svg | 2 +-
.../testdata/stable/li2/dagre/board.exp.json | 3 +
.../testdata/stable/li2/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/li2/elk/board.exp.json | 3 +
.../testdata/stable/li2/elk/sketch.exp.svg | 2 +-
.../testdata/stable/li3/dagre/board.exp.json | 3 +
.../testdata/stable/li3/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/li3/elk/board.exp.json | 3 +
.../testdata/stable/li3/elk/sketch.exp.svg | 2 +-
.../testdata/stable/li4/dagre/board.exp.json | 3 +
.../testdata/stable/li4/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/li4/elk/board.exp.json | 3 +
.../testdata/stable/li4/elk/sketch.exp.svg | 2 +-
.../stable/links/dagre/board.exp.json | 2 +
.../stable/links/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/links/elk/board.exp.json | 2 +
.../testdata/stable/links/elk/sketch.exp.svg | 2 +-
.../stable/lone_h1/dagre/board.exp.json | 3 +
.../stable/lone_h1/dagre/sketch.exp.svg | 2 +-
.../stable/lone_h1/elk/board.exp.json | 3 +
.../stable/lone_h1/elk/sketch.exp.svg | 2 +-
.../stable/markdown/dagre/board.exp.json | 3 +
.../stable/markdown/dagre/sketch.exp.svg | 2 +-
.../stable/markdown/elk/board.exp.json | 3 +
.../stable/markdown/elk/sketch.exp.svg | 2 +-
.../markdown_stroke_fill/dagre/board.exp.json | 3 +
.../markdown_stroke_fill/dagre/sketch.exp.svg | 2 +-
.../markdown_stroke_fill/elk/board.exp.json | 3 +
.../markdown_stroke_fill/elk/sketch.exp.svg | 2 +-
.../md_2space_newline/dagre/board.exp.json | 2 +
.../md_2space_newline/dagre/sketch.exp.svg | 2 +-
.../md_2space_newline/elk/board.exp.json | 2 +
.../md_2space_newline/elk/sketch.exp.svg | 2 +-
.../md_backslash_newline/dagre/board.exp.json | 2 +
.../md_backslash_newline/dagre/sketch.exp.svg | 2 +-
.../md_backslash_newline/elk/board.exp.json | 2 +
.../md_backslash_newline/elk/sketch.exp.svg | 2 +-
.../md_code_block_fenced/dagre/board.exp.json | 3 +
.../md_code_block_fenced/dagre/sketch.exp.svg | 2 +-
.../md_code_block_fenced/elk/board.exp.json | 3 +
.../md_code_block_fenced/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 3 +
.../dagre/sketch.exp.svg | 2 +-
.../md_code_block_indented/elk/board.exp.json | 3 +
.../md_code_block_indented/elk/sketch.exp.svg | 2 +-
.../md_code_inline/dagre/board.exp.json | 3 +
.../md_code_inline/dagre/sketch.exp.svg | 2 +-
.../stable/md_code_inline/elk/board.exp.json | 3 +
.../stable/md_code_inline/elk/sketch.exp.svg | 2 +-
.../multiline_text/dagre/board.exp.json | 1 +
.../multiline_text/dagre/sketch.exp.svg | 2 +-
.../stable/multiline_text/elk/board.exp.json | 1 +
.../stable/multiline_text/elk/sketch.exp.svg | 2 +-
.../multiple_trees/dagre/board.exp.json | 23 +++++++
.../multiple_trees/dagre/sketch.exp.svg | 2 +-
.../stable/multiple_trees/elk/board.exp.json | 23 +++++++
.../stable/multiple_trees/elk/sketch.exp.svg | 2 +-
.../stable/n22_e32/dagre/board.exp.json | 21 ++++++
.../stable/n22_e32/dagre/sketch.exp.svg | 2 +-
.../stable/n22_e32/elk/board.exp.json | 21 ++++++
.../stable/n22_e32/elk/sketch.exp.svg | 2 +-
.../number_connections/dagre/board.exp.json | 4 ++
.../number_connections/dagre/sketch.exp.svg | 2 +-
.../number_connections/elk/board.exp.json | 4 ++
.../number_connections/elk/sketch.exp.svg | 2 +-
.../one_container_loop/dagre/board.exp.json | 8 +++
.../one_container_loop/dagre/sketch.exp.svg | 2 +-
.../one_container_loop/elk/board.exp.json | 8 +++
.../one_container_loop/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 7 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 7 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 21 ++++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 21 ++++++
.../elk/sketch.exp.svg | 2 +-
.../testdata/stable/p/dagre/board.exp.json | 3 +
.../testdata/stable/p/dagre/sketch.exp.svg | 2 +-
e2etests/testdata/stable/p/elk/board.exp.json | 3 +
e2etests/testdata/stable/p/elk/sketch.exp.svg | 2 +-
.../testdata/stable/pre/dagre/board.exp.json | 3 +
.../testdata/stable/pre/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/pre/elk/board.exp.json | 3 +
.../testdata/stable/pre/elk/sketch.exp.svg | 2 +-
.../self-referencing/dagre/board.exp.json | 3 +
.../self-referencing/dagre/sketch.exp.svg | 2 +-
.../self-referencing/elk/board.exp.json | 3 +
.../self-referencing/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 6 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 6 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 21 ++++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 21 ++++++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 2 +
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 2 +
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 14 ++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 14 ++++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 4 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 4 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 16 +++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 16 +++++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 23 +++++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 23 +++++++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 8 +++
.../dagre/sketch.exp.svg | 2 +-
.../sequence_diagram_note/elk/board.exp.json | 8 +++
.../sequence_diagram_note/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 14 ++++
.../dagre/sketch.exp.svg | 2 +-
.../sequence_diagram_real/elk/board.exp.json | 14 ++++
.../sequence_diagram_real/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 7 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 7 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 5 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 5 ++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 17 +++++
.../dagre/sketch.exp.svg | 2 +-
.../sequence_diagram_span/elk/board.exp.json | 17 +++++
.../sequence_diagram_span/elk/sketch.exp.svg | 2 +-
.../sequence_diagrams/dagre/board.exp.json | 64 +++++++++++++++++++
.../sequence_diagrams/dagre/sketch.exp.svg | 2 +-
.../sequence_diagrams/elk/board.exp.json | 64 +++++++++++++++++++
.../sequence_diagrams/elk/sketch.exp.svg | 2 +-
.../stable/sql_tables/dagre/board.exp.json | 4 ++
.../stable/sql_tables/dagre/sketch.exp.svg | 2 +-
.../stable/sql_tables/elk/board.exp.json | 4 ++
.../stable/sql_tables/elk/sketch.exp.svg | 2 +-
.../stable/square_3d/dagre/board.exp.json | 2 +
.../stable/square_3d/dagre/sketch.exp.svg | 2 +-
.../stable/square_3d/elk/board.exp.json | 2 +
.../stable/square_3d/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 25 ++++++++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 25 ++++++++
.../elk/sketch.exp.svg | 2 +-
.../stable/stylish/dagre/board.exp.json | 2 +
.../stable/stylish/dagre/sketch.exp.svg | 2 +-
.../stable/stylish/elk/board.exp.json | 2 +
.../stable/stylish/elk/sketch.exp.svg | 2 +-
.../text_font_sizes/dagre/board.exp.json | 3 +
.../text_font_sizes/dagre/sketch.exp.svg | 2 +-
.../stable/text_font_sizes/elk/board.exp.json | 3 +
.../stable/text_font_sizes/elk/sketch.exp.svg | 2 +-
.../stable/tooltips/dagre/board.exp.json | 2 +
.../stable/tooltips/dagre/sketch.exp.svg | 2 +-
.../stable/tooltips/elk/board.exp.json | 2 +
.../stable/tooltips/elk/sketch.exp.svg | 2 +-
.../transparent_3d/dagre/board.exp.json | 1 +
.../transparent_3d/dagre/sketch.exp.svg | 2 +-
.../stable/transparent_3d/elk/board.exp.json | 1 +
.../stable/transparent_3d/elk/sketch.exp.svg | 2 +-
.../unnamed_only_height/dagre/board.exp.json | 5 ++
.../unnamed_only_height/dagre/sketch.exp.svg | 2 +-
.../unnamed_only_height/elk/board.exp.json | 5 ++
.../unnamed_only_height/elk/sketch.exp.svg | 2 +-
.../unnamed_only_width/dagre/board.exp.json | 5 ++
.../unnamed_only_width/dagre/sketch.exp.svg | 2 +-
.../unnamed_only_width/elk/board.exp.json | 5 ++
.../unnamed_only_width/elk/sketch.exp.svg | 2 +-
.../stable/us_map/dagre/board.exp.json | 50 +++++++++++++++
.../stable/us_map/dagre/sketch.exp.svg | 2 +-
.../testdata/stable/us_map/elk/board.exp.json | 50 +++++++++++++++
.../testdata/stable/us_map/elk/sketch.exp.svg | 2 +-
.../container_child_edge/dagre/board.exp.json | 3 +
.../container_child_edge/dagre/sketch.exp.svg | 2 +-
.../container_child_edge/elk/board.exp.json | 3 +
.../container_child_edge/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 5 ++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 5 ++
.../elk/sketch.exp.svg | 2 +-
.../font_sizes_large/dagre/board.exp.json | 5 ++
.../font_sizes_large/dagre/sketch.exp.svg | 2 +-
.../todo/font_sizes_large/elk/board.exp.json | 5 ++
.../todo/font_sizes_large/elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 8 +++
.../dagre/sketch.exp.svg | 2 +-
.../elk/board.exp.json | 8 +++
.../elk/sketch.exp.svg | 2 +-
.../dagre/board.exp.json | 17 +++++
.../dagre/sketch.exp.svg | 2 +-
.../shape_set_width_height/elk/board.exp.json | 17 +++++
.../shape_set_width_height/elk/sketch.exp.svg | 2 +-
.../todo/tall_edge_label/dagre/board.exp.json | 2 +
.../todo/tall_edge_label/dagre/sketch.exp.svg | 2 +-
.../todo/tall_edge_label/elk/board.exp.json | 2 +
.../todo/tall_edge_label/elk/sketch.exp.svg | 2 +-
.../TestCompile/basic_icon.exp.json | 1 +
.../TestCompile/image_style.exp.json | 1 +
.../reserved_icon_near_style.exp.json | 1 +
.../TestExport/connection/arrowhead.exp.json | 2 +
.../TestExport/connection/basic.exp.json | 2 +
.../connection/stroke-dash.exp.json | 2 +
.../connection/theme_stroke-dash.exp.json | 2 +
.../TestExport/label/basic_shape.exp.json | 1 +
.../label/connection_font_color.exp.json | 2 +
.../label/shape_font_color.exp.json | 1 +
.../TestExport/shape/basic.exp.json | 1 +
.../TestExport/shape/border-radius.exp.json | 1 +
.../shape/image_dimensions.exp.json | 2 +
.../shape/sequence_group_position.exp.json | 4 ++
.../TestExport/shape/synonyms.exp.json | 2 +
.../TestExport/shape/text_color.exp.json | 1 +
.../theme/connection_with_bold.exp.json | 2 +
.../theme/connection_with_italic.exp.json | 2 +
.../theme/connection_without_italic.exp.json | 2 +
.../theme/shape_with_italic.exp.json | 1 +
.../theme/shape_without_bold.exp.json | 1 +
.../d2oracle/TestMove/slice_style.exp.json | 1 +
testdata/d2oracle/TestSet/icon.exp.json | 1 +
421 files changed, 1904 insertions(+), 204 deletions(-)
diff --git a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
index 5b8429973..830b30433 100644
--- a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg
@@ -30,7 +30,7 @@ width="1593" height="831" viewBox="-100 -100 1593 831">customer issuer store 1 Like starbucks or something acquirer 2 I'm not sure what this is network customer bank store bank initial transaction payment processor behind the scenes simplified 1 banana please $10 dollars thinking: wow, inflation checks bank account Savings: $11 I can do that, here's my card Run this card Process to card issuer Process this payment $10 debit $10 credit An error in judgement is about to occur
+customer issuer store 1 Like starbucks or something acquirer 2 I'm not sure what this is network customer bank store bank initial transaction payment processor behind the scenes simplified 1 banana please $10 dollars thinking: wow, inflation checks bank account Savings: $11 I can do that, here's my card Run this card Process to card issuer Process this payment $10 debit $10 credit An error in judgement is about to occur
diff --git a/d2renderers/d2svg/appendix/testdata/links/sketch.exp.svg b/d2renderers/d2svg/appendix/testdata/links/sketch.exp.svg
index e4f4e7c0d..0f1810c56 100644
--- a/d2renderers/d2svg/appendix/testdata/links/sketch.exp.svg
+++ b/d2renderers/d2svg/appendix/testdata/links/sketch.exp.svg
@@ -19,7 +19,7 @@ width="563" height="741" viewBox="-100 -100 563 741">x 1 y 2 Gee, I feel kind of LIGHT in the head now,
-knowing I can't make my satellite dish PAYMENTS! 3
+knowing I can't make my satellite dish PAYMENTS!3
x 1 Total abstinence is easier than perfect moderation y 2 Gee, I feel kind of LIGHT in the head now,
-knowing I can't make my satellite dish PAYMENTS!
+knowing I can't make my satellite dish PAYMENTS!
lambda-build.yaml Push to main branch GitHub Actions S3 Terraform AWS Triggers Builds zip & pushes it Pulls zip to deploy Changes the live lambdas
+lambda-build.yaml Push to main branch GitHub Actions S3 Terraform AWS Triggers Builds zip & pushes it Pulls zip to deploy Changes the live lambdas
diff --git a/e2etests/testdata/regression/dagre_edge_label_spacing/elk/board.exp.json b/e2etests/testdata/regression/dagre_edge_label_spacing/elk/board.exp.json
index 363039200..d52f72450 100644
--- a/e2etests/testdata/regression/dagre_edge_label_spacing/elk/board.exp.json
+++ b/e2etests/testdata/regression/dagre_edge_label_spacing/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/regression/dagre_edge_label_spacing/elk/sketch.exp.svg b/e2etests/testdata/regression/dagre_edge_label_spacing/elk/sketch.exp.svg
index 814c60100..af360689d 100644
--- a/e2etests/testdata/regression/dagre_edge_label_spacing/elk/sketch.exp.svg
+++ b/e2etests/testdata/regression/dagre_edge_label_spacing/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="2093" height="487" viewBox="-88 -88 2093 487">lambda-build.yaml Push to main branch GitHub Actions S3 Terraform AWS Triggers Builds zip & pushes it Pulls zip to deploy Changes the live lambdas
+lambda-build.yaml Push to main branch GitHub Actions S3 Terraform AWS Triggers Builds zip & pushes it Pulls zip to deploy Changes the live lambdas
diff --git a/e2etests/testdata/regression/dagre_special_ids/dagre/board.exp.json b/e2etests/testdata/regression/dagre_special_ids/dagre/board.exp.json
index b0d5e092e..1bbc129e8 100644
--- a/e2etests/testdata/regression/dagre_special_ids/dagre/board.exp.json
+++ b/e2etests/testdata/regression/dagre_special_ids/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/regression/dagre_special_ids/dagre/sketch.exp.svg b/e2etests/testdata/regression/dagre_special_ids/dagre/sketch.exp.svg
index d5d44ead7..dd5a56939 100644
--- a/e2etests/testdata/regression/dagre_special_ids/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/dagre_special_ids/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1427" height="568" viewBox="-100 -100 1427 568">ninety nine eighty
eight seventy
seven a\yode there a\"ode a\node
+ninety nine eighty
eight seventy
seven a\yode there a\"ode a\node
ninety nine eighty
eight seventy
seven a\yode there a\"ode a\node
+ninety nine eighty
eight seventy
seven a\yode there a\"ode a\node
lambda-build.yaml lambda-deploy.yaml apollo-deploy.yaml Push to main branch GitHub Actions S3 Terraform AWS Manual Trigger GitHub Actions AWS Apollo Repo GitHub Actions AWS Triggers Builds zip and pushes it Pulls zip to deploy Changes live lambdas Launches Builds zip pushes them to S3. Deploys lambdas using Terraform Triggered manually/push to master test test test test test test test test
+lambda-build.yaml lambda-deploy.yaml apollo-deploy.yaml Push to main branch GitHub Actions S3 Terraform AWS Manual Trigger GitHub Actions AWS Apollo Repo GitHub Actions AWS Triggers Builds zip and pushes it Pulls zip to deploy Changes live lambdas Launches Builds zip pushes them to S3. Deploys lambdas using Terraform Triggered manually/push to master test test test test test test test test
diff --git a/e2etests/testdata/regression/elk_alignment/elk/board.exp.json b/e2etests/testdata/regression/elk_alignment/elk/board.exp.json
index 257234eb5..b28eb2c4d 100644
--- a/e2etests/testdata/regression/elk_alignment/elk/board.exp.json
+++ b/e2etests/testdata/regression/elk_alignment/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -540,6 +553,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/regression/elk_alignment/elk/sketch.exp.svg b/e2etests/testdata/regression/elk_alignment/elk/sketch.exp.svg
index 593ff3bb8..f88a3740e 100644
--- a/e2etests/testdata/regression/elk_alignment/elk/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_alignment/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1825" height="1299" viewBox="-88 -88 1825 1299">lambda-build.yaml lambda-deploy.yaml apollo-deploy.yaml Push to main branch GitHub Actions S3 Terraform AWS Manual Trigger GitHub Actions AWS Apollo Repo GitHub Actions AWS Triggers Builds zip and pushes it Pulls zip to deploy Changes live lambdas Launches Builds zip pushes them to S3. Deploys lambdas using Terraform Triggered manually/push to master test test test test test test test test
+lambda-build.yaml lambda-deploy.yaml apollo-deploy.yaml Push to main branch GitHub Actions S3 Terraform AWS Manual Trigger GitHub Actions AWS Apollo Repo GitHub Actions AWS Triggers Builds zip and pushes it Pulls zip to deploy Changes live lambdas Launches Builds zip pushes them to S3. Deploys lambdas using Terraform Triggered manually/push to master test test test test test test test test
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
index f1b566716..899feb414 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -29,6 +30,7 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -70,6 +72,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -79,6 +82,7 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
index 3726c5c2d..692e85ece 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="488" height="328" viewBox="-100 -100 488 328">
+
\ No newline at end of file
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
index e37d0a2b3..b1fbe48ae 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -29,6 +30,7 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -70,6 +72,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -79,6 +82,7 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
index 81e2051b4..6cf3165f8 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="448" height="328" viewBox="-88 -88 448 328">
+
\ No newline at end of file
diff --git a/e2etests/testdata/regression/elk_order/dagre/board.exp.json b/e2etests/testdata/regression/elk_order/dagre/board.exp.json
index a23eacad4..b9d41aeec 100644
--- a/e2etests/testdata/regression/elk_order/dagre/board.exp.json
+++ b/e2etests/testdata/regression/elk_order/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -59,6 +60,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -179,6 +183,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -219,6 +224,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -259,6 +265,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -299,6 +306,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -339,6 +347,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -378,6 +387,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -417,6 +427,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -456,6 +467,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/regression/elk_order/dagre/sketch.exp.svg b/e2etests/testdata/regression/elk_order/dagre/sketch.exp.svg
index 64e3079f2..a3a86354a 100644
--- a/e2etests/testdata/regression/elk_order/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_order/dagre/sketch.exp.svg
@@ -780,7 +780,7 @@ width="1536" height="574" viewBox="-100 -100 1536 574">hello goodbye
+hello goodbye
hello goodbye
+hello goodbye
RefreshAuthorizationPolicyProtocolServerSideTranslatorProtocolBuffer RefreshAuthorizationPolicyCache RefreshAuthorizationPolicyCache ok
-
+
RefreshAuthorizationPolicyProtocolServerSideTranslatorProtocolBuffer RefreshAuthorizationPolicyCache RefreshAuthorizationPolicyCache ok
-
+
my network
+my network
my network
+my network
foo foobar a b c d
+foo foobar a b c d
foo foobar a b c d
+foo foobar a b c d
A B
+A B
A B
+A B
b
+b
b
+b
a b c
+a b c
a b c
+a b c
a b
+a b
a b
+a b
a c b d
+a c b d
a c b d
+a c b d
a b hello
+a b hello
a b hello
+a b hello
rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
+rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
+rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
+rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
+rectangle square page parallelogram document cylinder queue package step callout stored_data person diamond oval circle hexagon cloud
c b a *
+c b a *
c b a *
+c b a *
a b To err is human, to moo bovine 1 *
+a b To err is human, to moo bovine 1 *
a b To err is human, to moo bovine 1 *
+a b To err is human, to moo bovine 1 *
a b c d e f g h i j k l m n o
+a b c d e f g h i j k l m n o
a b c d e f g h i j k l m n o
+a b c d e f g h i j k l m n o
aaa ddd eee bbb ccc 111 222
+aaa ddd eee bbb ccc 111 222
diff --git a/e2etests/testdata/stable/chaos1/elk/board.exp.json b/e2etests/testdata/stable/chaos1/elk/board.exp.json
index 57334f005..3ad54d632 100644
--- a/e2etests/testdata/stable/chaos1/elk/board.exp.json
+++ b/e2etests/testdata/stable/chaos1/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg b/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg
index 7e7d052a5..d32a29519 100644
--- a/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="630" height="869" viewBox="-88 -88 630 869">aaa ddd eee bbb ccc 111 222
+aaa ddd eee bbb ccc 111 222
diff --git a/e2etests/testdata/stable/chaos2/dagre/board.exp.json b/e2etests/testdata/stable/chaos2/dagre/board.exp.json
index 3bc2ea6cc..417191506 100644
--- a/e2etests/testdata/stable/chaos2/dagre/board.exp.json
+++ b/e2etests/testdata/stable/chaos2/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -219,6 +224,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -259,6 +265,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -298,6 +305,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -338,6 +346,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -378,6 +387,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -418,6 +428,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -458,6 +469,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -498,6 +510,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -538,6 +551,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -577,6 +591,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg b/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg
index 1aaccaec9..f1977dad6 100644
--- a/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg
@@ -775,7 +775,7 @@ width="1315" height="1851" viewBox="-100 -100 1315 1851">aa bb ll mm nn oo cc ii kk dd gg hh jj ee ff 11 22 33 44 55 66 77 88
+aa bb ll mm nn oo cc ii kk dd gg hh jj ee ff 11 22 33 44 55 66 77 88
diff --git a/e2etests/testdata/stable/chaos2/elk/board.exp.json b/e2etests/testdata/stable/chaos2/elk/board.exp.json
index 88ff7eaf6..40693163f 100644
--- a/e2etests/testdata/stable/chaos2/elk/board.exp.json
+++ b/e2etests/testdata/stable/chaos2/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -219,6 +224,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -259,6 +265,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -298,6 +305,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -338,6 +346,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -378,6 +387,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -418,6 +428,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -458,6 +469,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -498,6 +510,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -538,6 +551,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -577,6 +591,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/chaos2/elk/sketch.exp.svg b/e2etests/testdata/stable/chaos2/elk/sketch.exp.svg
index 691cad438..9182c4f5e 100644
--- a/e2etests/testdata/stable/chaos2/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/chaos2/elk/sketch.exp.svg
@@ -775,7 +775,7 @@ width="1092" height="1904" viewBox="-88 -88 1092 1904">aa bb ll mm nn oo cc ii kk dd gg hh jj ee ff 11 22 33 44 55 66 77 88
+aa bb ll mm nn oo cc ii kk dd gg hh jj ee ff 11 22 33 44 55 66 77 88
diff --git a/e2etests/testdata/stable/child_parent_edges/dagre/board.exp.json b/e2etests/testdata/stable/child_parent_edges/dagre/board.exp.json
index 39018fcb3..bfb79188d 100644
--- a/e2etests/testdata/stable/child_parent_edges/dagre/board.exp.json
+++ b/e2etests/testdata/stable/child_parent_edges/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/child_parent_edges/dagre/sketch.exp.svg b/e2etests/testdata/stable/child_parent_edges/dagre/sketch.exp.svg
index ad3e8d1a2..7d3153d1c 100644
--- a/e2etests/testdata/stable/child_parent_edges/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/child_parent_edges/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="724" height="626" viewBox="-100 -100 724 626">a b c d
+a b c d
a b c d
+a b c d
a b c
+a b c
a b c
+a b c
a c f b d h g
+a c f b d h g
a c f b d h g
+a c f b d h g
x y The top of the mountain Joe Donald Cats, no less liquid than their shadows, offer no angles to the wind.
If we can't fix it, it ain't broke.
Dieters live life in the fasting lane.
-
i am top left i am top right i am bottom left i am bottom right
+i am top left i am top right i am bottom left i am bottom right
x y The top of the mountain Joe Donald Cats, no less liquid than their shadows, offer no angles to the wind.
If we can't fix it, it ain't broke.
Dieters live life in the fasting lane.
-
i am top left i am top right i am bottom left i am bottom right
+i am top left i am top right i am bottom left i am bottom right
poll the people results unfavorable favorable will of the people
A winning strategy
-
+
poll the people results unfavorable favorable will of the people
A winning strategy
-
+
a g d f b h e c
+a g d f b h e c
a g d f b h e c
+a g d f b h e c
a b c d e f g h i j k l m n o p q
+a b c d e f g h i j k l m n o p q
a b c d e f g h i j k l m n o p q
+a b c d e f g h i j k l m n o p q
finally a tree and nodes some more many then here you have hierarchy another of nesting trees a tree inside hierarchy root
+finally a tree and nodes some more many then here you have hierarchy another of nesting trees a tree inside hierarchy root
finally a tree and nodes some more many then here you have hierarchy another of nesting trees a tree inside hierarchy root
+finally a tree and nodes some more many then here you have hierarchy another of nesting trees a tree inside hierarchy root
b a c d e 2 1 3 4 5 a b c d e
+b a c d e 2 1 3 4 5 a b c d e
b a c d e 2 1 3 4 5 a b c d e
+b a c d e 2 1 3 4 5 a b c d e
alpha beta gamma
+alpha beta gamma
alpha beta gamma
+alpha beta gamma
size XS size S size M size L size XL size XXL size XXXL custom 8 custom 12 custom 18 custom 21 custom 64 custom 10 custom 15 custom 48
+size XS size S size M size L size XL size XXL size XXXL custom 8 custom 12 custom 18 custom 21 custom 64 custom 10 custom 15 custom 48
diff --git a/e2etests/testdata/stable/font_sizes/elk/board.exp.json b/e2etests/testdata/stable/font_sizes/elk/board.exp.json
index bd7c1d9e9..f25808e56 100644
--- a/e2etests/testdata/stable/font_sizes/elk/board.exp.json
+++ b/e2etests/testdata/stable/font_sizes/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg b/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg
index f8f67a3b1..c787aaf0a 100644
--- a/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="2039" height="793" viewBox="-88 -88 2039 793">size XS size S size M size L size XL size XXL size XXXL custom 8 custom 12 custom 18 custom 21 custom 64 custom 10 custom 15 custom 48
+size XS size S size M size L size XL size XXL size XXXL custom 8 custom 12 custom 18 custom 21 custom 64 custom 10 custom 15 custom 48
diff --git a/e2etests/testdata/stable/giant_markdown_test/dagre/board.exp.json b/e2etests/testdata/stable/giant_markdown_test/dagre/board.exp.json
index 50f7612e8..ca41a8bc9 100644
--- a/e2etests/testdata/stable/giant_markdown_test/dagre/board.exp.json
+++ b/e2etests/testdata/stable/giant_markdown_test/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -59,6 +60,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg b/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg
index b257f8591..46f0eaec3 100644
--- a/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg
@@ -1032,7 +1032,7 @@ title for the link, surrounded in quotes. For example:
Code
Unlike a pre-formatted code block, a code span indicates code within a
normal paragraph. For example:
-a b
+a b
hello
+hello
hello
+hello
a b
+a b
a b
+a b
aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
+aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
diff --git a/e2etests/testdata/stable/investigate/elk/board.exp.json b/e2etests/testdata/stable/investigate/elk/board.exp.json
index 3c44c1656..1714dbcd0 100644
--- a/e2etests/testdata/stable/investigate/elk/board.exp.json
+++ b/e2etests/testdata/stable/investigate/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -469,6 +481,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/time.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -511,6 +524,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -551,6 +565,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -560,6 +575,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/time.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -602,6 +618,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -642,6 +659,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -682,6 +700,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -722,6 +741,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -762,6 +782,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -802,6 +823,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -842,6 +864,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -882,6 +905,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -922,6 +946,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -962,6 +987,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1002,6 +1028,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1042,6 +1069,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1082,6 +1110,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1122,6 +1151,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1162,6 +1192,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1202,6 +1233,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1242,6 +1274,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/investigate/elk/sketch.exp.svg b/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
index 81797bd00..84ccb04ba 100644
--- a/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="894" height="4930" viewBox="-88 -88 894 4930">aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
+aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
diff --git a/e2etests/testdata/stable/large_arch/dagre/board.exp.json b/e2etests/testdata/stable/large_arch/dagre/board.exp.json
index 0c2dc271b..174eeb3a6 100644
--- a/e2etests/testdata/stable/large_arch/dagre/board.exp.json
+++ b/e2etests/testdata/stable/large_arch/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -540,6 +553,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -580,6 +594,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -620,6 +635,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -660,6 +676,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -700,6 +717,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -740,6 +758,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -780,6 +799,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -820,6 +840,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -860,6 +881,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -900,6 +922,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -940,6 +963,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -980,6 +1004,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1020,6 +1045,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1060,6 +1086,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1100,6 +1127,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1140,6 +1168,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1180,6 +1209,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1220,6 +1250,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1260,6 +1291,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1300,6 +1332,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/large_arch/dagre/sketch.exp.svg b/e2etests/testdata/stable/large_arch/dagre/sketch.exp.svg
index 482b251d0..80cebe75f 100644
--- a/e2etests/testdata/stable/large_arch/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/large_arch/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="3244" height="1780" viewBox="-100 -100 3244 1780">a b c d e f g h i q r j m n o s z aa bb ee ff gg k l p t u w x y cc dd v
+a b c d e f g h i q r j m n o s z aa bb ee ff gg k l p t u w x y cc dd v
a b c d e f g h i q r j m n o s z aa bb ee ff gg k l p t u w x y cc dd v
+a b c d e f g h i q r j m n o s z aa bb ee ff gg k l p t u w x y cc dd v
mixed together sugar solution we get
+mixed together sugar solution we get
mixed together sugar solution we get
+mixed together sugar solution we get
Markdown: Syntax
-a b
+a b
Markdown: Syntax
-a b
+a b
markdown Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-
+
markdown Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-
+
markdown Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-
+
markdown Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-
+
a b
+a b
a b
+a b
this goes multiple lines
+this goes multiple lines
this goes multiple lines
+this goes multiple lines
a b c d e f g h i j k l m n o p q r s t u v w
+a b c d e f g h i j k l m n o p q r s t u v w
a b c d e f g h i j k l m n o p q r s t u v w
+a b c d e f g h i j k l m n o p q r s t u v w
a b c d e f g h i j k l m n o p q r s t u
+a b c d e f g h i j k l m n o p q r s t u
a b c d e f g h i j k l m n o p q r s t u
+a b c d e f g h i j k l m n o p q r s t u
Foo Baz 1 2 hello
+Foo Baz 1 2 hello
Foo Baz 1 2 hello
+Foo Baz 1 2 hello
a c d e f g b h
+a c d e f g b h
a c d e f g b h
+a c d e f g b h
top a b c bottom start end
+top a b c bottom start end
top a b c bottom start end
+top a b c bottom start end
root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
+root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json b/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
index 4a0d2c40b..e298dad43 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -29,6 +30,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -71,6 +73,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -111,6 +114,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -120,6 +124,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -162,6 +167,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -202,6 +208,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -211,6 +218,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -253,6 +261,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -293,6 +302,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -302,6 +312,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -344,6 +355,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -353,6 +365,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -395,6 +408,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -435,6 +449,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -444,6 +459,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -486,6 +502,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -526,6 +543,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -535,6 +553,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -577,6 +596,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -586,6 +606,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
index 9505c6dec..06658bb1f 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1522" height="1503" viewBox="-88 -88 1522 1503">root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
+root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
diff --git a/e2etests/testdata/stable/p/dagre/board.exp.json b/e2etests/testdata/stable/p/dagre/board.exp.json
index a4742e0b8..5e92bf131 100644
--- a/e2etests/testdata/stable/p/dagre/board.exp.json
+++ b/e2etests/testdata/stable/p/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -59,6 +60,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/p/dagre/sketch.exp.svg b/e2etests/testdata/stable/p/dagre/sketch.exp.svg
index 6aba7026c..b240f5af0 100644
--- a/e2etests/testdata/stable/p/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/p/dagre/sketch.exp.svg
@@ -779,7 +779,7 @@ width="2057" height="676" viewBox="-100 -100 2057 676">x y z hello
+x y z hello
x y z hello
+x y z hello
an actor with a really long label that will break everything an actor with a really long label that will break everything simple a short one far away what if there were no labels between this actor and the previous one short long label for testing purposes and it must be really, really long short this should span many actors lifelines so we know how it will look like when redering a long label over many actors long label for testing purposes and it must be really, really long
+an actor with a really long label that will break everything an actor with a really long label that will break everything simple a short one far away what if there were no labels between this actor and the previous one short long label for testing purposes and it must be really, really long short this should span many actors lifelines so we know how it will look like when redering a long label over many actors long label for testing purposes and it must be really, really long
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
index 085e70d8e..c8b7195da 100644
--- a/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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
index f0302fd8e..be12367a7 100644
--- a/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_actor_distance/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="2692" height="1396" viewBox="-76 -26 2692 1396">an actor with a really long label that will break everything an actor with a really long label that will break everything simple a short one far away what if there were no labels between this actor and the previous one short long label for testing purposes and it must be really, really long short this should span many actors lifelines so we know how it will look like when redering a long label over many actors long label for testing purposes and it must be really, really long
+an actor with a really long label that will break everything an actor with a really long label that will break everything simple a short one far away what if there were no labels between this actor and the previous one short long label for testing purposes and it must be really, really long short this should span many actors lifelines so we know how it will look like when redering a long label over many actors long label for testing purposes and it must be really, really long
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 42c5c962e..d1cc5c32a 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
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -154,6 +157,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -194,6 +198,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -234,6 +239,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -274,6 +280,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -314,6 +321,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -354,6 +362,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -394,6 +403,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": {
@@ -403,6 +413,7 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
+ "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -445,6 +456,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -485,6 +497,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -525,6 +538,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -565,6 +579,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -605,6 +620,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -645,6 +661,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -685,6 +702,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -725,6 +743,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -765,6 +784,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -805,6 +825,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 2b86d5324..0683606be 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
@@ -28,7 +28,7 @@ width="5177" height="2984" viewBox="-76 -26 5177 2984">alice bob what does it mean to be well-adjusted The ability to play bridge or golf as if they were games
+alice bob what does it mean to be well-adjusted The ability to play bridge or golf as if they were games
diff --git a/e2etests/testdata/stable/sequence_diagram_distance/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_distance/elk/board.exp.json
index f213d3498..8cda397b2 100644
--- a/e2etests/testdata/stable/sequence_diagram_distance/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_distance/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_distance/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_distance/elk/sketch.exp.svg
index 956e7c921..8e2ed1fc3 100644
--- a/e2etests/testdata/stable/sequence_diagram_distance/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_distance/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="752" height="716" viewBox="-76 -26 752 716">alice bob what does it mean to be well-adjusted The ability to play bridge or golf as if they were games
+alice bob what does it mean to be well-adjusted The ability to play bridge or golf as if they were games
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 776b8ddfb..d5ccae313 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -499,6 +511,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -538,6 +551,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 d3ed45a1a..0b03dda1c 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_groups/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">a b c d ggg group 1 group b choo nested guy lala ey okay okay what would arnold say this note
+a b c d ggg group 1 group b choo nested guy lala ey okay okay what would arnold say this 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 776b8ddfb..d5ccae313 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -499,6 +511,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -538,6 +551,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 d3ed45a1a..0b03dda1c 100644
--- a/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_groups/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1147" height="2268" viewBox="-76 -26 1147 2268">a b c d ggg group 1 group b choo nested guy lala ey okay okay what would arnold say this note
+a b c d ggg group 1 group b choo nested guy lala ey okay okay what would arnold say this note
diff --git a/e2etests/testdata/stable/sequence_diagram_long_note/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_long_note/dagre/board.exp.json
index 3c36498bb..b210b7675 100644
--- a/e2etests/testdata/stable/sequence_diagram_long_note/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_long_note/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_long_note/dagre/sketch.exp.svg
index 8cc670b3d..58378cc9c 100644
--- a/e2etests/testdata/stable/sequence_diagram_long_note/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_long_note/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="850" height="1162" viewBox="-263 -26 850 1162">b a a note here to remember that padding must consider notes too just a long note here
+b a a note here to remember that padding must consider notes too just a long note here
b a a note here to remember that padding must consider notes too just a long note here
+b a a note here to remember that padding must consider notes too just a long note here
a b just an actor this is a message group alt and this is a nested message group case 1 case 2 case 3 case 4 what about more nesting crazy town whoa a note a note here to remember that padding must consider notes too just a long note here
+a b just an actor this is a message group alt and this is a nested message group case 1 case 2 case 3 case 4 what about more nesting crazy town whoa a note a note here to remember that padding must consider notes too just a long note here
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/board.exp.json
index 772cc63c2..cd162a61d 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -540,6 +553,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -580,6 +594,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -620,6 +635,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/sketch.exp.svg
index 48b328e86..f0248d8be 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_nested_groups/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1116" height="2458" viewBox="-197 -26 1116 2458">a b just an actor this is a message group alt and this is a nested message group case 1 case 2 case 3 case 4 what about more nesting crazy town whoa a note a note here to remember that padding must consider notes too just a long note here
+a b just an actor this is a message group alt and this is a nested message group case 1 case 2 case 3 case 4 what about more nesting crazy town whoa a note a note here to remember that padding must consider notes too just a long note here
diff --git a/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/board.exp.json
index 6502324d5..17b331c10 100644
--- a/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_nested_span/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -178,6 +182,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -218,6 +223,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -257,6 +263,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -296,6 +303,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -336,6 +344,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -375,6 +384,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -414,6 +424,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -453,6 +464,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -493,6 +505,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -532,6 +545,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -571,6 +585,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -610,6 +625,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -649,6 +665,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -689,6 +706,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -728,6 +746,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -767,6 +786,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -806,6 +826,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -845,6 +866,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -884,6 +906,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 9fb361e64..b9d1b6fcc 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
@@ -18,7 +18,7 @@ width="1624" height="1626" viewBox="-76 -26 1624 1626">scorer itemResponse item essayRubric concept itemOutcome
+scorer itemResponse item essayRubric concept itemOutcome
scorer itemResponse item essayRubric concept itemOutcome
+scorer itemResponse item essayRubric concept itemOutcome
a b c d okay explanation another explanation Some one who believes imaginary things appear right before your i's. The earth is like a tiny grain of sand, only much, much heavier
+a b c d okay explanation another explanation Some one who believes imaginary things appear right before your i's. The earth is like a tiny grain of sand, only much, much heavier
a b c d okay explanation another explanation Some one who believes imaginary things appear right before your i's. The earth is like a tiny grain of sand, only much, much heavier
+a b c d okay explanation another explanation Some one who believes imaginary things appear right before your i's. The earth is like a tiny grain of sand, only much, much heavier
How this is rendered CLI d2ast d2compiler d2layout d2exporter d2themes d2renderer d2sequencelayout d2dagrelayout only if root is not sequence 'How this is rendered: {...}' tokenized AST compile AST objects and edges run layout engines run engine on shape: sequence_diagram, temporarily remove run core engine on rest add back in sequence diagrams diagram with correct positions and dimensions export diagram with chosen theme and renderer get theme styles render to SVG resulting SVG measurements also take place
+How this is rendered CLI d2ast d2compiler d2layout d2exporter d2themes d2renderer d2sequencelayout d2dagrelayout only if root is not sequence 'How this is rendered: {...}' tokenized AST compile AST objects and edges run layout engines run engine on shape: sequence_diagram, temporarily remove run core engine on rest add back in sequence diagrams diagram with correct positions and dimensions export diagram with chosen theme and renderer get theme styles render to SVG resulting SVG measurements 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 3945edf3f..c5425e3d7 100644
--- a/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_real/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -539,6 +552,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 5f4dd359a..2adef6cfd 100644
--- a/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_real/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="2447" height="2536" viewBox="-88 -88 2447 2536">How this is rendered CLI d2ast d2compiler d2layout d2exporter d2themes d2renderer d2sequencelayout d2dagrelayout only if root is not sequence 'How this is rendered: {...}' tokenized AST compile AST objects and edges run layout engines run engine on shape: sequence_diagram, temporarily remove run core engine on rest add back in sequence diagrams diagram with correct positions and dimensions export diagram with chosen theme and renderer get theme styles render to SVG resulting SVG measurements also take place
+How this is rendered CLI d2ast d2compiler d2layout d2exporter d2themes d2renderer d2sequencelayout d2dagrelayout only if root is not sequence 'How this is rendered: {...}' tokenized AST compile AST objects and edges run layout engines run engine on shape: sequence_diagram, temporarily remove run core engine on rest add back in sequence diagrams diagram with correct positions and dimensions export diagram with chosen theme and renderer get theme styles render to SVG resulting SVG measurements also take place
diff --git a/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/board.exp.json
index 54d51adf1..14a410516 100644
--- a/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -178,6 +182,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -217,6 +222,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -256,6 +262,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/sketch.exp.svg
index f947663cd..2f3c5e1e0 100644
--- a/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_self_edges/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="696" height="1366" viewBox="-76 -26 696 1366">a b a self edge here between actors to descendant to deeper descendant to parent actor
+a b a self edge here between actors to descendant to deeper descendant to parent actor
diff --git a/e2etests/testdata/stable/sequence_diagram_self_edges/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_self_edges/elk/board.exp.json
index 54d51adf1..14a410516 100644
--- a/e2etests/testdata/stable/sequence_diagram_self_edges/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_self_edges/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -178,6 +182,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -217,6 +222,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -256,6 +262,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_self_edges/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_self_edges/elk/sketch.exp.svg
index f947663cd..2f3c5e1e0 100644
--- a/e2etests/testdata/stable/sequence_diagram_self_edges/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_self_edges/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="696" height="1366" viewBox="-76 -26 696 1366">a b a self edge here between actors to descendant to deeper descendant to parent actor
+a b a self edge here between actors to descendant to deeper descendant to parent actor
diff --git a/e2etests/testdata/stable/sequence_diagram_simple/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_simple/dagre/board.exp.json
index fb0887203..5a144dcb0 100644
--- a/e2etests/testdata/stable/sequence_diagram_simple/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_simple/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_simple/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_simple/dagre/sketch.exp.svg
index d0e6006a2..22dbd321e 100644
--- a/e2etests/testdata/stable/sequence_diagram_simple/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_simple/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1598" height="1868" viewBox="-76 -26 1598 1868">Alice line breaker Bob db queue an odd service with a name in multiple lines Authentication Request make request for something that is quite far away and requires a really long label to take all the space between the objects validate credentials Authentication Response Another authentication Request do it later stored Another authentication Response
+Alice line breaker Bob db queue an odd service with a name in multiple lines Authentication Request make request for something that is quite far away and requires a really long label to take all the space between the objects validate credentials Authentication Response Another authentication Request do it later stored Another authentication Response
diff --git a/e2etests/testdata/stable/sequence_diagram_simple/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_simple/elk/board.exp.json
index fb0887203..5a144dcb0 100644
--- a/e2etests/testdata/stable/sequence_diagram_simple/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_simple/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_simple/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_simple/elk/sketch.exp.svg
index d0e6006a2..22dbd321e 100644
--- a/e2etests/testdata/stable/sequence_diagram_simple/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_simple/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1598" height="1868" viewBox="-76 -26 1598 1868">Alice line breaker Bob db queue an odd service with a name in multiple lines Authentication Request make request for something that is quite far away and requires a really long label to take all the space between the objects validate credentials Authentication Response Another authentication Request do it later stored Another authentication Response
+Alice line breaker Bob db queue an odd service with a name in multiple lines Authentication Request make request for something that is quite far away and requires a really long label to take all the space between the objects validate credentials Authentication Response Another authentication Request do it later stored Another authentication Response
diff --git a/e2etests/testdata/stable/sequence_diagram_span/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagram_span/dagre/board.exp.json
index 37a77eab3..9e2513eb7 100644
--- a/e2etests/testdata/stable/sequence_diagram_span/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_span/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -178,6 +182,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -218,6 +223,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -257,6 +263,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -297,6 +304,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -336,6 +344,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -375,6 +384,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -415,6 +425,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -454,6 +465,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -494,6 +506,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -533,6 +546,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -572,6 +586,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -611,6 +626,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -650,6 +666,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_span/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_span/dagre/sketch.exp.svg
index aa3321ec2..d5846f0d3 100644
--- a/e2etests/testdata/stable/sequence_diagram_span/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_span/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1624" height="2146" viewBox="-76 -26 1624 2146">scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
+scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
diff --git a/e2etests/testdata/stable/sequence_diagram_span/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagram_span/elk/board.exp.json
index 37a77eab3..9e2513eb7 100644
--- a/e2etests/testdata/stable/sequence_diagram_span/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagram_span/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -99,6 +101,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -139,6 +142,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -178,6 +182,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -218,6 +223,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -257,6 +263,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -297,6 +304,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -336,6 +344,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -375,6 +384,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -415,6 +425,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -454,6 +465,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -494,6 +506,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -533,6 +546,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -572,6 +586,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -611,6 +626,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -650,6 +666,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagram_span/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_span/elk/sketch.exp.svg
index aa3321ec2..d5846f0d3 100644
--- a/e2etests/testdata/stable/sequence_diagram_span/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_span/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1624" height="2146" viewBox="-76 -26 1624 2146">scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
+scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
diff --git a/e2etests/testdata/stable/sequence_diagrams/dagre/board.exp.json b/e2etests/testdata/stable/sequence_diagrams/dagre/board.exp.json
index 5844c5a26..8d8158292 100644
--- a/e2etests/testdata/stable/sequence_diagrams/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagrams/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -540,6 +553,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -579,6 +593,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -619,6 +634,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -658,6 +674,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -698,6 +715,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -737,6 +755,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -777,6 +796,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -816,6 +836,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -855,6 +876,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -895,6 +917,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -934,6 +957,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -974,6 +998,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1013,6 +1038,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1052,6 +1078,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1091,6 +1118,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1130,6 +1158,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1169,6 +1198,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1209,6 +1239,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1248,6 +1279,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1288,6 +1320,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1327,6 +1360,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1367,6 +1401,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1406,6 +1441,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1446,6 +1482,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1485,6 +1522,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1524,6 +1562,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1564,6 +1603,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1603,6 +1643,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1643,6 +1684,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1682,6 +1724,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1721,6 +1764,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1760,6 +1804,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1799,6 +1844,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1838,6 +1884,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1878,6 +1925,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1917,6 +1965,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1956,6 +2005,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1995,6 +2045,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2034,6 +2085,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2073,6 +2125,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2112,6 +2165,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2151,6 +2205,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2190,6 +2245,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2229,6 +2285,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2268,6 +2325,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2307,6 +2365,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2346,6 +2405,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2385,6 +2445,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2424,6 +2485,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2463,6 +2525,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2502,6 +2565,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagrams/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagrams/dagre/sketch.exp.svg
index db69a01ce..d0ef18da7 100644
--- a/e2etests/testdata/stable/sequence_diagrams/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagrams/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="3402" height="4269" viewBox="-100 -100 3402 4269">a_shape a_sequence another finally sequence sequence sequence scorer itemResponse item essayRubric concept itemOutcome scorer concept essayRubric item itemOutcome itemResponse scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts) getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
+a_shape a_sequence another finally sequence sequence sequence scorer itemResponse item essayRubric concept itemOutcome scorer concept essayRubric item itemOutcome itemResponse scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts) getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
diff --git a/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json b/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json
index 1f4879ef4..509db86ba 100644
--- a/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json
+++ b/e2etests/testdata/stable/sequence_diagrams/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -500,6 +512,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -540,6 +553,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -579,6 +593,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -619,6 +634,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -658,6 +674,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -698,6 +715,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -737,6 +755,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -777,6 +796,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -816,6 +836,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -855,6 +876,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -895,6 +917,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -934,6 +957,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -974,6 +998,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1013,6 +1038,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1052,6 +1078,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1091,6 +1118,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1130,6 +1158,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1169,6 +1198,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1209,6 +1239,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1248,6 +1279,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1288,6 +1320,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1327,6 +1360,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1367,6 +1401,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1406,6 +1441,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1446,6 +1482,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1485,6 +1522,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1524,6 +1562,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1564,6 +1603,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1603,6 +1643,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1643,6 +1684,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1682,6 +1724,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1721,6 +1764,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1760,6 +1804,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1799,6 +1844,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1838,6 +1884,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1878,6 +1925,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1917,6 +1965,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1956,6 +2005,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -1995,6 +2045,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2034,6 +2085,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2073,6 +2125,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2112,6 +2165,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2151,6 +2205,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2190,6 +2245,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2229,6 +2285,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2268,6 +2325,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2307,6 +2365,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2346,6 +2405,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2385,6 +2445,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2424,6 +2485,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2463,6 +2525,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -2502,6 +2565,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg
index 7d5445201..fb55a87ac 100644
--- a/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagrams/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="3324" height="4389" viewBox="-88 -88 3324 4389">a_shape a_sequence another finally sequence sequence sequence scorer itemResponse item essayRubric concept itemOutcome scorer concept essayRubric item itemOutcome itemResponse scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts) getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
+a_shape a_sequence another finally sequence sequence sequence scorer itemResponse item essayRubric concept itemOutcome scorer concept essayRubric item itemOutcome itemResponse scorer itemResponse item essayRubric concept itemOutcome getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts) getItem() item getRubric() rubric applyTo(essayResp) match(essayResponse) score new getNormalMinimum() getNormalMaximum() setScore(score) setFeedback(missingConcepts)
diff --git a/e2etests/testdata/stable/sql_tables/dagre/board.exp.json b/e2etests/testdata/stable/sql_tables/dagre/board.exp.json
index 0fd37e978..4a17ab98c 100644
--- a/e2etests/testdata/stable/sql_tables/dagre/board.exp.json
+++ b/e2etests/testdata/stable/sql_tables/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -203,6 +204,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -358,6 +360,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -485,6 +488,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg b/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg
index 8b78b0f66..2fa2e6ed7 100644
--- a/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sql_tables/dagre/sketch.exp.svg
@@ -50,7 +50,7 @@ width="996" height="660" viewBox="-100 -100 996 660">a c b l1 l2c1 l2c3 l2c2 l3c1 l3c2 l4 b a c a c b a b c c1 c2 c3 a b c
+a c b l1 l2c1 l2c3 l2c2 l3c1 l3c2 l4 b a c a c b a b c c1 c2 c3 a b c
a c b l1 l2c1 l2c3 l2c2 l3c1 l3c2 l4 b a c a c b a b c c1 c2 c3 a b c
+a c b l1 l2c1 l2c3 l2c2 l3c1 l3c2 l4 b a c a c b a b c c1 c2 c3 a b c
bear mama bear papa bear
+bear mama bear papa bear
bear mama bear papa bear
+bear mama bear papa bear
- cube
+ cube
- cube
+ cube
AK HI AL FL GA MS TN AZ CA NV NM UT AR LA MO OK TX OR CO KS NE WY CT MA NY RI DE MD NJ PA NC SC ID MT WA IL IN IA MI KY WI OH MN SD VA WV ME NH VT ND
+AK HI AL FL GA MS TN AZ CA NV NM UT AR LA MO OK TX OR CO KS NE WY CT MA NY RI DE MD NJ PA NC SC ID MT WA IL IN IA MI KY WI OH MN SD VA WV ME NH VT ND
AK HI AL FL GA MS TN AZ CA NV NM UT AR LA MO OK TX OR CO KS NE WY CT MA NY RI DE MD NJ PA NC SC ID MT WA IL IN IA MI KY WI OH MN SD VA WV ME NH VT ND
+AK HI AL FL GA MS TN AZ CA NV NM UT AR LA MO OK TX OR CO KS NE WY CT MA NY RI DE MD NJ PA NC SC ID MT WA IL IN IA MI KY WI OH MN SD VA WV ME NH VT ND
container first second 1->2 c->2
+container first second 1->2 c->2
diff --git a/e2etests/testdata/todo/container_child_edge/elk/board.exp.json b/e2etests/testdata/todo/container_child_edge/elk/board.exp.json
index 50cfb8491..7073fd2cf 100644
--- a/e2etests/testdata/todo/container_child_edge/elk/board.exp.json
+++ b/e2etests/testdata/todo/container_child_edge/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/todo/container_child_edge/elk/sketch.exp.svg b/e2etests/testdata/todo/container_child_edge/elk/sketch.exp.svg
index b49a616fc..2645a63b9 100644
--- a/e2etests/testdata/todo/container_child_edge/elk/sketch.exp.svg
+++ b/e2etests/testdata/todo/container_child_edge/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="534" height="663" viewBox="-88 -88 534 663">container first second 1->2 c->2
+container first second 1->2 c->2
diff --git a/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json b/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json
index e5ee6e21d..860635d90 100644
--- a/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json
+++ b/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg
index 7146cae18..044127b44 100644
--- a/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg
+++ b/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="664" height="716" viewBox="-100 -100 664 716">ninety nine sixty four thirty two sixteen eight
+ninety nine sixty four thirty two sixteen eight
ninety nine sixty four thirty two sixteen eight
+ninety nine sixty four thirty two sixteen eight
eight sixteen thirty two sixty four ninety nine twelve twenty four forty eight eighty one
+eight sixteen thirty two sixty four ninety nine twelve twenty four forty eight eighty one
diff --git a/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json b/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json
index 306f18399..13857f400 100644
--- a/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json
+++ b/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg
index f1d7952c3..425154916 100644
--- a/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg
+++ b/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="789" height="2014" viewBox="-88 -88 789 2014">eight sixteen thirty two sixty four ninety nine twelve twenty four forty eight eighty one
+eight sixteen thirty two sixty four ninety nine twelve twenty four forty eight eighty one
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 d20401f87..fdc35543a 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
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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 5bcd47f78..01e2b592e 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,7 +18,7 @@ width="921" height="1242" viewBox="-147 -26 921 1242">b a c this is a message group and this is a nested message group what about more nesting yo yo
+b a c this is a message group and this is a nested message group what about more nesting yo yo
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
index d20401f87..fdc35543a 100644
--- 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
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
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
index 5bcd47f78..01e2b592e 100644
--- 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
@@ -18,7 +18,7 @@ width="921" height="1242" viewBox="-147 -26 921 1242">b a c this is a message group and this is a nested message group what about more nesting yo yo
+b a c this is a message group and this is a nested message group what about more nesting yo yo
diff --git a/e2etests/testdata/todo/shape_set_width_height/dagre/board.exp.json b/e2etests/testdata/todo/shape_set_width_height/dagre/board.exp.json
index b48e2bb4a..5f57bbfdc 100644
--- a/e2etests/testdata/todo/shape_set_width_height/dagre/board.exp.json
+++ b/e2etests/testdata/todo/shape_set_width_height/dagre/board.exp.json
@@ -20,6 +20,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -60,6 +61,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -100,6 +102,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -140,6 +143,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -180,6 +184,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -220,6 +225,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -260,6 +266,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -300,6 +307,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -340,6 +348,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -380,6 +389,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -420,6 +430,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -460,6 +471,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -643,6 +655,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -717,6 +730,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -757,6 +771,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -796,6 +811,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
@@ -835,6 +851,7 @@
"shadow": false,
"3d": false,
"multiple": false,
+ "double-border": false,
"tooltip": "",
"link": "",
"icon": null,
diff --git a/e2etests/testdata/todo/shape_set_width_height/dagre/sketch.exp.svg b/e2etests/testdata/todo/shape_set_width_height/dagre/sketch.exp.svg
index c63fc847c..1071cba06 100644
--- a/e2etests/testdata/todo/shape_set_width_height/dagre/sketch.exp.svg
+++ b/e2etests/testdata/todo/shape_set_width_height/dagre/sketch.exp.svg
@@ -44,7 +44,7 @@ width="2478" height="2668" viewBox="-100 -100 2478 2668">a b There once was a very tall edge label
+a b There once was a very tall edge label
a b There once was a very tall edge label
+a b There once was a very tall edge label
customer issuer store 1 Like starbucks or something acquirer 2 I'm not sure what this is network customer bank store bank initial transaction payment processor behind the scenes simplified 1 banana please $10 dollars thinking: wow, inflation checks bank account Savings: $11 I can do that, here's my card Run this card Process to card issuer Process this payment $10 debit $10 credit An error in judgement is about to occur
+customer issuer store 1 Like starbucks or something acquirer 2 I'm not sure what this is network customer bank store bank initial transaction payment processor behind the scenes simplified 1 banana please $10 dollars thinking: wow, inflation checks bank account Savings: $11 I can do that, here's my card Run this card Process to card issuer Process this payment $10 debit $10 credit An error in judgement is about to occur
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
index 899feb414..1c87797cd 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/board.exp.json
@@ -30,7 +30,6 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -82,7 +81,6 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
index 692e85ece..3b4217d31 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="488" height="328" viewBox="-100 -100 488 328">
+
\ No newline at end of file
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
index b1fbe48ae..bdd6a327a 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/board.exp.json
@@ -30,7 +30,6 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -82,7 +81,6 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
index 6cf3165f8..7080fd426 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="448" height="328" viewBox="-88 -88 448 328">
+
\ No newline at end of file
diff --git a/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json b/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json
index 2f5d36bbb..80a0cdd50 100644
--- a/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json
+++ b/e2etests/testdata/regression/query_param_escape/dagre/board.exp.json
@@ -30,7 +30,6 @@
"Host": "icons.terrastruct.com",
"Path": "/infra/019-network.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "fuga=1&hoge",
"Fragment": "",
diff --git a/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg b/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg
index 4e2114b65..c333036cd 100644
--- a/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/query_param_escape/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="390" height="352" viewBox="-100 -100 390 352">my network
+my network
my network
+my network
hello
+hello
hello
+hello
a b
+a b
a b
+a b
aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
+aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
diff --git a/e2etests/testdata/stable/investigate/elk/board.exp.json b/e2etests/testdata/stable/investigate/elk/board.exp.json
index 1714dbcd0..d52023422 100644
--- a/e2etests/testdata/stable/investigate/elk/board.exp.json
+++ b/e2etests/testdata/stable/investigate/elk/board.exp.json
@@ -481,7 +481,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/time.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -575,7 +574,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/time.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/stable/investigate/elk/sketch.exp.svg b/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
index 84ccb04ba..2d5155582 100644
--- a/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/investigate/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="894" height="4930" viewBox="-88 -88 894 4930">aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
+aa bb cc dd ll ff ww yy ad nn ii jj kk ss uu rm ee mm mm gg hh zz oo pp qq rr tt vv xx ab ac 1 2 3 4 5 6
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/board.exp.json b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/board.exp.json
index 8b76ab744..ebbcd4a94 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/board.exp.json
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/board.exp.json
@@ -30,7 +30,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -124,7 +123,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -218,7 +216,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -312,7 +309,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -365,7 +361,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -459,7 +454,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -553,7 +547,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -606,7 +599,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
index 44f3bfa3d..7e2735094 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1312" height="1416" viewBox="-100 -100 1312 1416">root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
+root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json b/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
index e298dad43..0d5d35a25 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/elk/board.exp.json
@@ -30,7 +30,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -124,7 +123,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -218,7 +216,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -312,7 +309,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -365,7 +361,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -459,7 +454,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -553,7 +547,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
@@ -606,7 +599,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
index 06658bb1f..173ad73c2 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
@@ -18,7 +18,7 @@ width="1522" height="1503" viewBox="-88 -88 1522 1503">root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
+root container root left right root inner root inner left right left right to inner left to inner right to inner left to inner right to left container root to right container root
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 d1cc5c32a..85b572cf3 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
@@ -413,7 +413,6 @@
"Host": "icons.terrastruct.com",
"Path": "/essentials/004-picture.svg",
"RawPath": "",
- "OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
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 0683606be..3aa758130 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
@@ -28,7 +28,7 @@ width="5177" height="2984" viewBox="-76 -26 5177 2984">