diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 83f6faa6d..eadf47088 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -1164,6 +1164,10 @@ func getMarkdownDimensions(mtexts []*d2target.MText, ruler *textmeasure.Ruler, t return d2target.NewTextDimensions(width, height), nil } + if strings.TrimSpace(t.Text) == "" { + return d2target.NewTextDimensions(1, 1), nil + } + return nil, fmt.Errorf("text not pre-measured and no ruler provided") } diff --git a/e2etests/measured_test.go b/e2etests/measured_test.go index 777fda482..3c33c5c24 100644 --- a/e2etests/measured_test.go +++ b/e2etests/measured_test.go @@ -26,6 +26,14 @@ func testMeasured(t *testing.T) { name: "empty-sql_table", mtexts: []*d2target.MText{}, script: `a: "" { shape: sql_table } +`, + }, + { + name: "empty-markdown", + mtexts: []*d2target.MText{}, + script: `a: |md +` + " " + ` +| `, }, } diff --git a/e2etests/testdata/measured/empty-markdown/dagre/board.exp.json b/e2etests/testdata/measured/empty-markdown/dagre/board.exp.json new file mode 100644 index 000000000..8067707ce --- /dev/null +++ b/e2etests/testdata/measured/empty-markdown/dagre/board.exp.json @@ -0,0 +1,88 @@ +{ + "name": "", + "isFolderOnly": false, + "fontFamily": "SourceSansPro", + "shapes": [ + { + "id": "a", + "type": "text", + "pos": { + "x": 0, + "y": 0 + }, + "width": 1, + "height": 1, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "transparent", + "stroke": "N1", + "shadow": false, + "3d": false, + "multiple": false, + "double-border": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": " ", + "fontSize": 16, + "fontFamily": "DEFAULT", + "language": "markdown", + "color": "N1", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 1, + "labelHeight": 1, + "zIndex": 0, + "level": 1 + } + ], + "connections": [], + "root": { + "id": "", + "type": "", + "pos": { + "x": 0, + "y": 0 + }, + "width": 0, + "height": 0, + "opacity": 0, + "strokeDash": 0, + "strokeWidth": 0, + "borderRadius": 0, + "fill": "N7", + "stroke": "", + "shadow": false, + "3d": false, + "multiple": false, + "double-border": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "blend": false, + "fields": null, + "methods": null, + "columns": null, + "label": "", + "fontSize": 0, + "fontFamily": "", + "language": "", + "color": "", + "italic": false, + "bold": false, + "underline": false, + "labelWidth": 0, + "labelHeight": 0, + "zIndex": 0, + "level": 0 + } +} diff --git a/e2etests/testdata/measured/empty-markdown/dagre/sketch.exp.svg b/e2etests/testdata/measured/empty-markdown/dagre/sketch.exp.svg new file mode 100644 index 000000000..6a7cacc88 --- /dev/null +++ b/e2etests/testdata/measured/empty-markdown/dagre/sketch.exp.svg @@ -0,0 +1,765 @@ +
+ + + \ No newline at end of file