diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index aa48de619..f0306ed66 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -155,6 +155,8 @@ func DoubleRect(r *Runner, shape d2target.Shape) (string, error) {
pathEl = d2themes.NewThemableElement("path")
pathEl.SetTranslate(float64(shape.Pos.X+d2target.INNER_BORDER_OFFSET), float64(shape.Pos.Y+d2target.INNER_BORDER_OFFSET))
pathEl.Fill, pathEl.Stroke = d2themes.ShapeTheme(shape)
+ // No need for inner to double paint
+ pathEl.Fill = "transparent"
pathEl.ClassName = "shape"
pathEl.Style = shape.CSSStyle()
for _, p := range pathsSmallRect {
@@ -162,10 +164,16 @@ func DoubleRect(r *Runner, shape d2target.Shape) (string, error) {
output += pathEl.Render()
}
- output += fmt.Sprintf(
- ``,
- shape.Pos.X, shape.Pos.Y, shape.Width, shape.Height,
- )
+ sketchOEl := d2themes.NewThemableElement("rect")
+ sketchOEl.SetTranslate(float64(shape.Pos.X), float64(shape.Pos.Y))
+ sketchOEl.Width = float64(shape.Width)
+ sketchOEl.Height = float64(shape.Height)
+ renderedSO, err := d2themes.NewThemableSketchOverlay(sketchOEl, pathEl.Fill).Render()
+ if err != nil {
+ return "", err
+ }
+ output += renderedSO
+
return output, nil
}
diff --git a/d2renderers/d2sketch/sketch_test.go b/d2renderers/d2sketch/sketch_test.go
index 8df5b314f..1d6f44b82 100644
--- a/d2renderers/d2sketch/sketch_test.go
+++ b/d2renderers/d2sketch/sketch_test.go
@@ -986,6 +986,23 @@ company Warehouse.explanation: |md
- Staging
- Dispatch to Site
|
+`,
+ },
+ {
+ name: "double-border",
+ script: `a: {
+ style.double-border: true
+ b
+}
+c: {
+ shape: oval
+ style.double-border: true
+ d
+}
+normal: {
+ nested normal
+}
+something
`,
},
}
diff --git a/d2renderers/d2sketch/testdata/double-border/sketch.exp.svg b/d2renderers/d2sketch/testdata/double-border/sketch.exp.svg
new file mode 100644
index 000000000..95496974f
--- /dev/null
+++ b/d2renderers/d2sketch/testdata/double-border/sketch.exp.svg
@@ -0,0 +1,42 @@
+
\ No newline at end of file