From 643aa13de95f39d65afca8009846950b3e5be2b1 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 11:27:15 -0800 Subject: [PATCH 1/8] add fit to screen to exported svg --- ci/release/changelogs/next.md | 1 + d2renderers/d2svg/d2svg.go | 5 +++++ d2renderers/d2svg/fitToScreen.js | 19 ++++++++++++++++++ static/watch.js | 34 ++++++++++++++++++-------------- 4 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 d2renderers/d2svg/fitToScreen.js diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 3899ec4f7..272cd726b 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -7,3 +7,4 @@ #### Bugfixes โ›‘๏ธ - Appendix seperator line no longer added to PNG export when appendix doesn't exist. [#582](https://github.com/terrastruct/d2/pull/582) +- Watch mode only fits to screen on initial load. [#582](https://github.com/terrastruct/d2/pull/582) diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 2f7f931f0..9f5dddbe2 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -1096,6 +1096,9 @@ func embedFonts(buf *bytes.Buffer, fontFamily *d2fonts.FontFamily) { buf.WriteString(`]]>`) } +//go:embed fitToScreen.js +var fitToScreenScript string + // TODO minify output at end func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { var sketchRunner *d2sketch.Runner @@ -1124,6 +1127,8 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { ]]> `, styleCSS, styleCSS2)) + buf.WriteString(fmt.Sprintf(``, fitToScreenScript)) + hasMarkdown := false for _, s := range diagram.Shapes { if s.Label != "" && s.Type == d2target.ShapeText { diff --git a/d2renderers/d2svg/fitToScreen.js b/d2renderers/d2svg/fitToScreen.js new file mode 100644 index 000000000..98a3272bd --- /dev/null +++ b/d2renderers/d2svg/fitToScreen.js @@ -0,0 +1,19 @@ +window.addEventListener("DOMContentLoaded", () => { + const svgEl = document.querySelector("svg"); + let width = parseInt(svgEl.getAttribute("width"), 10); + let height = parseInt(svgEl.getAttribute("height"), 10); + let ratio; + if (width > height) { + if (width > window.innerWidth) { + ratio = window.innerWidth / width; + } + } else if (height > window.innerHeight) { + ratio = window.innerHeight / height; + } + // Scale svg fit to zoom + if (ratio) { + // body padding is 8px + svgEl.setAttribute("width", width * ratio - 16); + svgEl.setAttribute("height", height * ratio - 16); + } +}); diff --git a/static/watch.js b/static/watch.js index 0ebeddeeb..0034b2fe3 100644 --- a/static/watch.js +++ b/static/watch.js @@ -11,6 +11,7 @@ function init(reconnectDelay) { const ws = new WebSocket( `ws://${window.location.host}${window.location.pathname}watch` ); + let isInit = true; ws.onopen = () => { reconnectDelay = 1000; console.info("watch websocket opened"); @@ -32,22 +33,25 @@ function init(reconnectDelay) { // out the width, height and viewbox out of the top level SVG tag and update those manually. d2SVG.innerHTML = msg.svg; - const svgEl = d2SVG.querySelector("svg"); - let width = parseInt(svgEl.getAttribute("width"), 10); - let height = parseInt(svgEl.getAttribute("height"), 10); - let ratio; - if (width > height) { - if (width > window.innerWidth) { - ratio = window.innerWidth / width; + if (isInit) { + const svgEl = d2SVG.querySelector("svg"); + let width = parseInt(svgEl.getAttribute("width"), 10); + let height = parseInt(svgEl.getAttribute("height"), 10); + let ratio; + if (width > height) { + if (width > window.innerWidth) { + ratio = window.innerWidth / width; + } + } else if (height > window.innerHeight) { + ratio = window.innerHeight / height; } - } else if (height > window.innerHeight) { - ratio = window.innerHeight / height; - } - // Scale svg fit to zoom - if (ratio) { - // body padding is 8px - svgEl.setAttribute("width", width * ratio - 16); - svgEl.setAttribute("height", height * ratio - 16); + // Scale svg fit to zoom + if (ratio) { + // body padding is 8px + svgEl.setAttribute("width", width * ratio - 16); + svgEl.setAttribute("height", height * ratio - 16); + } + isInit = false; } d2ErrDiv.style.display = "none"; From 421b22c10657140cdfe3f2023f6de5a5240071f0 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 11:29:06 -0800 Subject: [PATCH 2/8] add to changelog --- ci/release/changelogs/next.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 272cd726b..27eb33bdc 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -1,10 +1,11 @@ #### Features ๐Ÿš€ - Crow foot notation is now supported. [#578](https://github.com/terrastruct/d2/pull/578) +- Exported SVGs also fit to screen on open. [#601](https://github.com/terrastruct/d2/pull/601) #### Improvements ๐Ÿงน #### Bugfixes โ›‘๏ธ - Appendix seperator line no longer added to PNG export when appendix doesn't exist. [#582](https://github.com/terrastruct/d2/pull/582) -- Watch mode only fits to screen on initial load. [#582](https://github.com/terrastruct/d2/pull/582) +- Watch mode only fits to screen on initial load. [#601](https://github.com/terrastruct/d2/pull/601) From 1dc45b64a6b10c4a8dfd2a8f867779e58e44b116 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 11:45:16 -0800 Subject: [PATCH 3/8] preserve ratio on subsequent renders --- static/watch.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/static/watch.js b/static/watch.js index 0034b2fe3..6f89b7ac4 100644 --- a/static/watch.js +++ b/static/watch.js @@ -12,6 +12,7 @@ function init(reconnectDelay) { `ws://${window.location.host}${window.location.pathname}watch` ); let isInit = true; + let ratio; ws.onopen = () => { reconnectDelay = 1000; console.info("watch websocket opened"); @@ -33,11 +34,10 @@ function init(reconnectDelay) { // out the width, height and viewbox out of the top level SVG tag and update those manually. d2SVG.innerHTML = msg.svg; + const svgEl = d2SVG.querySelector("svg"); + let width = parseInt(svgEl.getAttribute("width"), 10); + let height = parseInt(svgEl.getAttribute("height"), 10); if (isInit) { - const svgEl = d2SVG.querySelector("svg"); - let width = parseInt(svgEl.getAttribute("width"), 10); - let height = parseInt(svgEl.getAttribute("height"), 10); - let ratio; if (width > height) { if (width > window.innerWidth) { ratio = window.innerWidth / width; @@ -46,13 +46,13 @@ function init(reconnectDelay) { ratio = window.innerHeight / height; } // Scale svg fit to zoom - if (ratio) { - // body padding is 8px - svgEl.setAttribute("width", width * ratio - 16); - svgEl.setAttribute("height", height * ratio - 16); - } isInit = false; } + if (ratio) { + // body padding is 8px + svgEl.setAttribute("width", width * ratio - 16); + svgEl.setAttribute("height", height * ratio - 16); + } d2ErrDiv.style.display = "none"; } From 070b50a6e22de5c0460622794b8ccedffcef7be2 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 14:44:36 -0800 Subject: [PATCH 4/8] add check to only run script on root svg --- d2renderers/d2svg/fitToScreen.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/d2renderers/d2svg/fitToScreen.js b/d2renderers/d2svg/fitToScreen.js index 98a3272bd..d753cf163 100644 --- a/d2renderers/d2svg/fitToScreen.js +++ b/d2renderers/d2svg/fitToScreen.js @@ -1,5 +1,10 @@ window.addEventListener("DOMContentLoaded", () => { const svgEl = document.querySelector("svg"); + const svgID = "d2-svg"; + svgEl.setAttribute("id", svgID); + if (document.documentElement.getAttribute("id") !== svgID) { + return; + } let width = parseInt(svgEl.getAttribute("width"), 10); let height = parseInt(svgEl.getAttribute("height"), 10); let ratio; @@ -10,9 +15,7 @@ window.addEventListener("DOMContentLoaded", () => { } else if (height > window.innerHeight) { ratio = window.innerHeight / height; } - // Scale svg fit to zoom if (ratio) { - // body padding is 8px svgEl.setAttribute("width", width * ratio - 16); svgEl.setAttribute("height", height * ratio - 16); } From dfd66232fc0a67388516d2168ac92b45faa0151c Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 15:01:21 -0800 Subject: [PATCH 5/8] add d2-svg id on generation --- d2renderers/d2svg/d2svg.go | 1 + d2renderers/d2svg/fitToScreen.js | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 9f5dddbe2..1d9855e9a 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -74,6 +74,7 @@ func setViewbox(writer io.Writer, diagram *d2target.Diagram, pad int) (width int // TODO background stuff. e.g. dotted, grid, colors fmt.Fprintf(writer, ` `, w, h, tl.X-pad, tl.Y-pad, w, h) diff --git a/d2renderers/d2svg/fitToScreen.js b/d2renderers/d2svg/fitToScreen.js index d753cf163..51e6d6ea4 100644 --- a/d2renderers/d2svg/fitToScreen.js +++ b/d2renderers/d2svg/fitToScreen.js @@ -1,10 +1,8 @@ window.addEventListener("DOMContentLoaded", () => { - const svgEl = document.querySelector("svg"); - const svgID = "d2-svg"; - svgEl.setAttribute("id", svgID); - if (document.documentElement.getAttribute("id") !== svgID) { + if (document.documentElement.getAttribute("id") !== "d2-svg") { return; } + const svgEl = document.documentElement; let width = parseInt(svgEl.getAttribute("width"), 10); let height = parseInt(svgEl.getAttribute("height"), 10); let ratio; From 6b3634ec4c6fb683b3bf3ea22115c82558df38d5 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 15:28:51 -0800 Subject: [PATCH 6/8] use different ids --- static/watch.js | 4 ++-- watch.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/static/watch.js b/static/watch.js index 6f89b7ac4..44fff3821 100644 --- a/static/watch.js +++ b/static/watch.js @@ -5,7 +5,7 @@ window.addEventListener("DOMContentLoaded", () => { function init(reconnectDelay) { const d2ErrDiv = window.document.querySelector("#d2-err"); - const d2SVG = window.document.querySelector("#d2-svg"); + const d2SVG = window.document.querySelector("#d2-svg-container"); const devMode = document.body.dataset.d2DevMode === "true"; const ws = new WebSocket( @@ -34,7 +34,7 @@ function init(reconnectDelay) { // out the width, height and viewbox out of the top level SVG tag and update those manually. d2SVG.innerHTML = msg.svg; - const svgEl = d2SVG.querySelector("svg"); + const svgEl = d2SVG.querySelector("#d2-svg"); let width = parseInt(svgEl.getAttribute("width"), 10); let height = parseInt(svgEl.getAttribute("height"), 10); if (isInit) { diff --git a/watch.go b/watch.go index 5bc99e5e3..9263ccfba 100644 --- a/watch.go +++ b/watch.go @@ -430,7 +430,7 @@ func (w *watcher) handleRoot(hw http.ResponseWriter, r *http.Request) { -
+
`, w.outputPath, w.devMode) } From 510e7be5932ca1cdd3cf6f7bd7846731dbcaadf8 Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 15:32:31 -0800 Subject: [PATCH 7/8] Add comment --- d2renderers/d2svg/d2svg.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 1d9855e9a..678f0c2ae 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -1128,6 +1128,8 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { ]]> `, styleCSS, styleCSS2)) + // this script won't run in --watch mode because script tags are ignored when added via el.innerHTML = element + // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML buf.WriteString(fmt.Sprintf(``, fitToScreenScript)) hasMarkdown := false From 35c1a1633f3451385caa32c9cbea40c239068e5a Mon Sep 17 00:00:00 2001 From: Bernard Xie Date: Tue, 3 Jan 2023 16:42:39 -0800 Subject: [PATCH 8/8] add script to tests --- .../testdata/all_shapes/sketch.exp.svg | 23 ++++++++++++++++++- .../d2sketch/testdata/basic/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/child_to_child/sketch.exp.svg | 23 ++++++++++++++++++- .../d2sketch/testdata/class/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/connection_label/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/sql_tables/sketch.exp.svg | 23 ++++++++++++++++++- .../d2sketch/testdata/twitter/sketch.exp.svg | 23 ++++++++++++++++++- .../diagram_wider_than_tooltip/sketch.exp.svg | 23 ++++++++++++++++++- .../appendix/testdata/links/sketch.exp.svg | 23 ++++++++++++++++++- .../tooltip_wider_than_diagram/sketch.exp.svg | 23 ++++++++++++++++++- docs/assets/flow.svg | 1 + docs/examples/chess/dia.svg | 1 + .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre_special_ids/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre_special_ids/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../elk_alignment/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk_alignment/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../regression/elk_order/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../regression/elk_order/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../empty_sequence/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../empty_sequence/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../query_param_escape/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../query_param_escape/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../sql_table_overflow/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sql_table_overflow/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../sanity/1_to_2/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/sanity/1_to_2/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../sanity/basic/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/sanity/basic/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../child_to_child/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sanity/child_to_child/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../connection_label/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../connection_label/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../sanity/empty/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/sanity/empty/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/all_shapes/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/all_shapes/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../all_shapes_multiple/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../all_shapes_multiple/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../all_shapes_shadow/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../all_shapes_shadow/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../arrowhead_adjustment/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../arrowhead_adjustment/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../arrowhead_labels/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../arrowhead_labels/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/binary_tree/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/binary_tree/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/chaos1/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/chaos1/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/chaos2/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/chaos2/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../child_parent_edges/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../child_parent_edges/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../circular_dependency/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../circular_dependency/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/class/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/class/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/code_snippet/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/code_snippet/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../connected_container/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../connected_container/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../constant_near_stress/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../constant_near_stress/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../constant_near_title/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../constant_near_title/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../container_edges/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/container_edges/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../crow_foot_arrowhead/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../crow_foot_arrowhead/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/dense/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/dense/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../different_subgraphs/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../different_subgraphs/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/direction/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/direction/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/font_colors/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/font_colors/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/font_sizes/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/font_sizes/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../giant_markdown_test/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../giant_markdown_test/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/hr/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/hr/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/icon-label/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/icon-label/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/images/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/images/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/investigate/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/investigate/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/large_arch/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/large_arch/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/latex/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/latex/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li1/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li1/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li2/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li2/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li3/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li3/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li4/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/li4/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/links/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/links/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/lone_h1/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/lone_h1/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/markdown/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/markdown/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../markdown_stroke_fill/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../markdown_stroke_fill/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../md_2space_newline/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../md_2space_newline/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../md_backslash_newline/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../md_backslash_newline/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../md_code_block_fenced/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../md_code_block_fenced/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../md_code_block_indented/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../md_code_inline/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/md_code_inline/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../multiline_text/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/multiline_text/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../multiple_trees/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/multiple_trees/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/n22_e32/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/n22_e32/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../number_connections/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../number_connections/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../one_container_loop/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../one_container_loop/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/p/dagre/sketch.exp.svg | 23 ++++++++++++++++++- e2etests/testdata/stable/p/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/pre/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/pre/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../self-referencing/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../self-referencing/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sequence_diagram_note/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sequence_diagram_real/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sequence_diagram_span/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../sequence_diagrams/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../sequence_diagrams/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/sql_tables/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/sql_tables/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/square_3d/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/square_3d/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/stylish/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/stylish/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../text_font_sizes/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/text_font_sizes/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/tooltips/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/tooltips/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../transparent_3d/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/transparent_3d/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../unnamed_only_height/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../unnamed_only_height/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../unnamed_only_width/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../unnamed_only_width/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../stable/us_map/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../testdata/stable/us_map/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../container_child_edge/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../container_child_edge/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../font_sizes_large/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../todo/font_sizes_large/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../elk/sketch.exp.svg | 23 ++++++++++++++++++- .../dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../shape_set_width_height/elk/sketch.exp.svg | 23 ++++++++++++++++++- .../todo/tall_edge_label/dagre/sketch.exp.svg | 23 ++++++++++++++++++- .../todo/tall_edge_label/elk/sketch.exp.svg | 23 ++++++++++++++++++- lib/imgbundler/imgbundler_test.go | 2 ++ 211 files changed, 4580 insertions(+), 208 deletions(-) diff --git a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg index 5b2e6de56..efb2c8aba 100644 --- a/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/all_shapes/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/basic/sketch.exp.svg b/d2renderers/d2sketch/testdata/basic/sketch.exp.svg index 64dcdfce3..fa9cb40e1 100644 --- a/d2renderers/d2sketch/testdata/basic/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/basic/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg b/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg index aefb722c2..c2cd49cfc 100644 --- a/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/child_to_child/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/class/sketch.exp.svg b/d2renderers/d2sketch/testdata/class/sketch.exp.svg index cd594c963..013a036f7 100644 --- a/d2renderers/d2sketch/testdata/class/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/class/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg b/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg index 87e3a7763..5bc3c0273 100644 --- a/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/connection_label/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg index 809406b67..faf736cb5 100644 --- a/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/sql_tables/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg index ec449734e..3988c521e 100644 --- a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg @@ -1,5 +1,6 @@ AB AB +AB b +b b +b sql_table_overflowshort +sql_table_overflowshort loooooooooooooooooooong loooooooooooooooooooong short diff --git a/e2etests/testdata/regression/sql_table_overflow/elk/sketch.exp.svg b/e2etests/testdata/regression/sql_table_overflow/elk/sketch.exp.svg index 7693f399d..64d4c4cbd 100644 --- a/e2etests/testdata/regression/sql_table_overflow/elk/sketch.exp.svg +++ b/e2etests/testdata/regression/sql_table_overflow/elk/sketch.exp.svg @@ -1,5 +1,6 @@ sql_table_overflowshort loooooooooooooooooooong loooooooooooooooooooong short diff --git a/e2etests/testdata/regression/unnamed_class_table_code/dagre/sketch.exp.svg b/e2etests/testdata/regression/unnamed_class_table_code/dagre/sketch.exp.svg index 0c32095a8..fafa910ca 100644 --- a/e2etests/testdata/regression/unnamed_class_table_code/dagre/sketch.exp.svg +++ b/e2etests/testdata/regression/unnamed_class_table_code/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ - num int- timeout diff --git a/e2etests/testdata/regression/unnamed_class_table_code/elk/sketch.exp.svg b/e2etests/testdata/regression/unnamed_class_table_code/elk/sketch.exp.svg index d219cbe58..66bf10875 100644 --- a/e2etests/testdata/regression/unnamed_class_table_code/elk/sketch.exp.svg +++ b/e2etests/testdata/regression/unnamed_class_table_code/elk/sketch.exp.svg @@ -1,5 +1,6 @@ - num int- timeout diff --git a/e2etests/testdata/sanity/1_to_2/dagre/sketch.exp.svg b/e2etests/testdata/sanity/1_to_2/dagre/sketch.exp.svg index 9cd22a917..42f38a32d 100644 --- a/e2etests/testdata/sanity/1_to_2/dagre/sketch.exp.svg +++ b/e2etests/testdata/sanity/1_to_2/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ abc abc +abc ab +ab ab +ab acbd +acbd acbd +acbd ab hello +ab hello ab hello +ab hello + \ No newline at end of file diff --git a/e2etests/testdata/sanity/empty/elk/sketch.exp.svg b/e2etests/testdata/sanity/empty/elk/sketch.exp.svg index 243722dc6..5169c50f1 100644 --- a/e2etests/testdata/sanity/empty/elk/sketch.exp.svg +++ b/e2etests/testdata/sanity/empty/elk/sketch.exp.svg @@ -1,5 +1,6 @@ \ No newline at end of file diff --git a/e2etests/testdata/stable/all_shapes/dagre/sketch.exp.svg b/e2etests/testdata/stable/all_shapes/dagre/sketch.exp.svg index bbd89890d..da44f0f40 100644 --- a/e2etests/testdata/stable/all_shapes/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/all_shapes/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud +rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud + diff --git a/e2etests/testdata/stable/all_shapes_shadow/elk/sketch.exp.svg b/e2etests/testdata/stable/all_shapes_shadow/elk/sketch.exp.svg index e015571a5..79f60ba91 100644 --- a/e2etests/testdata/stable/all_shapes_shadow/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/all_shapes_shadow/elk/sketch.exp.svg @@ -1,5 +1,6 @@ diff --git a/e2etests/testdata/stable/arrowhead_adjustment/dagre/sketch.exp.svg b/e2etests/testdata/stable/arrowhead_adjustment/dagre/sketch.exp.svg index 24154ebe5..90796e221 100644 --- a/e2etests/testdata/stable/arrowhead_adjustment/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/arrowhead_adjustment/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ cba * cba * +cba * ab To err is human, to moo bovine1* +ab To err is human, to moo bovine1* ab To err is human, to moo bovine1* +ab To err is human, to moo bovine1* abcdefghijklmno +abcdefghijklmno abcdefghijklmno +abcdefghijklmno aaadddeeebbbccc111 222 +aaadddeeebbbccc111 222 diff --git a/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg b/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg index 70ef81d17..92bf02fae 100644 --- a/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/chaos1/elk/sketch.exp.svg @@ -1,5 +1,6 @@ aaadddeeebbbccc111 222 diff --git a/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg b/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg index f7e38128e..ed520ab12 100644 --- a/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/chaos2/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ BatchManager- num int- timeout diff --git a/e2etests/testdata/stable/class/elk/sketch.exp.svg b/e2etests/testdata/stable/class/elk/sketch.exp.svg index c01f11c1f..09edba75b 100644 --- a/e2etests/testdata/stable/class/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/class/elk/sketch.exp.svg @@ -1,5 +1,6 @@ BatchManager- num int- timeout diff --git a/e2etests/testdata/stable/code_snippet/dagre/sketch.exp.svg b/e2etests/testdata/stable/code_snippet/dagre/sketch.exp.svg index 3b5403dde..92e56e53a 100644 --- a/e2etests/testdata/stable/code_snippet/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/code_snippet/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ // RegisterHash registers a function that returns a new instance of the given // hash function. This is intended to be called from the init function in // packages that implement hash functions. func RegisterHash(h Hash, f func() hash.Hash) { diff --git a/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg b/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg index 65e487b3b..f26b7ba4a 100644 --- a/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/code_snippet/elk/sketch.exp.svg @@ -1,5 +1,6 @@ // RegisterHash registers a function that returns a new instance of the given // hash function. This is intended to be called from the init function in // packages that implement hash functions. func RegisterHash(h Hash, f func() hash.Hash) { diff --git a/e2etests/testdata/stable/connected_container/dagre/sketch.exp.svg b/e2etests/testdata/stable/connected_container/dagre/sketch.exp.svg index abf42e09c..7db73b331 100644 --- a/e2etests/testdata/stable/connected_container/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/connected_container/dagre/sketch.exp.svg @@ -1,5 +1,6 @@ acfbdhg acfbdhg +acfbdhg finallyatreeandnodessomemoremanythenhereyouhavehierarchyanotherofnestingtreesatreeinsidehierarchyroot bacde21345abcde +bacde21345abcde bacde21345abcde +bacde21345abcde alphabeta gamma +alphabeta gamma alphabeta gamma +alphabeta gamma size XSsize Ssize Msize Lsize XLsize XXLsize XXXLcustom 8custom 12custom 18custom 21custom 64 custom 10custom 15custom 48 +size XSsize Ssize Msize Lsize XLsize XXLsize XXXLcustom 8custom 12custom 18custom 21custom 64 custom 10custom 15custom 48 diff --git a/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg b/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg index e3c27605a..2d5f2fe91 100644 --- a/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg +++ b/e2etests/testdata/stable/font_sizes/elk/sketch.exp.svg @@ -1,5 +1,6 @@ size XSsize Ssize Msize Lsize XLsize XXLsize XXXLcustom 8custom 12custom 18custom 21custom 64 custom 10custom 15custom 48 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 4029b4315..0072c98ec 100644 --- a/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/giant_markdown_test/dagre/sketch.exp.svg @@ -1,5 +1,6 @@