Merge pull request #1232 from alixander/elk-stuff
fix elk self loop spacing
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
#### Improvements 🧹
|
||||
|
||||
- ELK self loops get distributed around the object instead of stacking [#1232](https://github.com/terrastruct/d2/pull/1232)
|
||||
|
||||
#### Bugfixes ⛑️
|
||||
|
||||
- Fixes an issue with markdown labels that are empty when rendered [#1223](https://github.com/terrastruct/d2/issues/1223)
|
||||
- ELK self loops always have enough space for long labels [#1232](https://github.com/terrastruct/d2/pull/1232)
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ type elkOpts struct {
|
|||
ForceNodeModelOrder bool `json:"elk.layered.crossingMinimization.forceNodeModelOrder,omitempty"`
|
||||
ConsiderModelOrder string `json:"elk.layered.considerModelOrder.strategy,omitempty"`
|
||||
|
||||
SelfLoopDistribution string `json:"elk.layered.edgeRouting.selfLoopDistribution,omitempty"`
|
||||
|
||||
NodeSizeConstraints string `json:"elk.nodeSize.constraints,omitempty"`
|
||||
ContentAlignment string `json:"elk.contentAlignment,omitempty"`
|
||||
NodeSizeMinimum string `json:"elk.nodeSize.minimum,omitempty"`
|
||||
|
|
@ -159,6 +161,10 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
|
|||
},
|
||||
},
|
||||
}
|
||||
if elkGraph.LayoutOptions.ConfigurableOpts.SelfLoopSpacing == DefaultOpts.SelfLoopSpacing {
|
||||
// +5 for a tiny bit of padding
|
||||
elkGraph.LayoutOptions.ConfigurableOpts.SelfLoopSpacing = go2.Max(elkGraph.LayoutOptions.ConfigurableOpts.SelfLoopSpacing, childrenMaxSelfLoop(g.Root, g.Root.Direction.Value == "down" || g.Root.Direction.Value == "" || g.Root.Direction.Value == "up")/2+5)
|
||||
}
|
||||
switch g.Root.Direction.Value {
|
||||
case "down":
|
||||
elkGraph.LayoutOptions.Direction = "DOWN"
|
||||
|
|
@ -239,6 +245,9 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
|
|||
Padding: opts.Padding,
|
||||
},
|
||||
}
|
||||
if n.LayoutOptions.ConfigurableOpts.SelfLoopSpacing == DefaultOpts.SelfLoopSpacing {
|
||||
n.LayoutOptions.ConfigurableOpts.SelfLoopSpacing = go2.Max(n.LayoutOptions.ConfigurableOpts.SelfLoopSpacing, childrenMaxSelfLoop(obj, g.Root.Direction.Value == "down" || g.Root.Direction.Value == "" || g.Root.Direction.Value == "up")/2+5)
|
||||
}
|
||||
|
||||
switch elkGraph.LayoutOptions.Direction {
|
||||
case "DOWN", "UP":
|
||||
|
|
@ -277,7 +286,7 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
|
|||
}
|
||||
} else {
|
||||
n.LayoutOptions = &elkOpts{
|
||||
// Margins: "[top=100,left=100,bottom=100,right=100]",
|
||||
SelfLoopDistribution: "EQUALLY",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -725,3 +734,20 @@ func countEdgeIntersects(g *d2graph.Graph, sEdge *d2graph.Edge, s geo.Segment) (
|
|||
}
|
||||
return crossingsCount, overlapsCount, closeOverlapsCount, touchingCount
|
||||
}
|
||||
|
||||
func childrenMaxSelfLoop(parent *d2graph.Object, isWidth bool) int {
|
||||
max := 0
|
||||
for _, ch := range parent.Children {
|
||||
for _, e := range parent.Graph.Edges {
|
||||
if e.Src == e.Dst && e.Src == ch && e.Label.Value != "" {
|
||||
if isWidth {
|
||||
max = go2.Max(max, e.LabelDimensions.Width)
|
||||
} else {
|
||||
max = go2.Max(max, e.LabelDimensions.Height)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return max
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,18 +20,18 @@ func testStable(t *testing.T) {
|
|||
x -> y: {
|
||||
style.stroke: green
|
||||
}
|
||||
|
||||
|
||||
y -> z: {
|
||||
style.stroke: red
|
||||
}
|
||||
|
||||
|
||||
legend: {
|
||||
near: bottom-center
|
||||
color1: foo {
|
||||
shape: text
|
||||
style.font-color: green
|
||||
}
|
||||
|
||||
|
||||
color2: bar {
|
||||
shape: text
|
||||
style.font-color: red
|
||||
|
|
@ -2593,6 +2593,7 @@ scenarios: {
|
|||
loadFromFile(t, "grid_animated"),
|
||||
loadFromFile(t, "grid_gap"),
|
||||
loadFromFile(t, "ent2d2_basic"),
|
||||
loadFromFile(t, "ent2d2_right"),
|
||||
}
|
||||
|
||||
runa(t, tcs)
|
||||
|
|
|
|||
2
e2etests/testdata/files/ent2d2_basic.d2
vendored
|
|
@ -8,7 +8,7 @@ User <-> User: "spouse" {
|
|||
shape: cf-one
|
||||
}
|
||||
}
|
||||
User <-> User: "children/parent" {
|
||||
User <-> User: "children/parent/ancestor" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
|
|
|
|||
99
e2etests/testdata/files/ent2d2_right.d2
vendored
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
direction: right
|
||||
# Edges
|
||||
User <-> User: "spouse\nspouse" {
|
||||
# o2o optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-one
|
||||
}
|
||||
}
|
||||
User <-> User: "children\nparent\nyo\nwhoa\nhey" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-many
|
||||
}
|
||||
}
|
||||
User <-> Pet: "pets/owner" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-many
|
||||
}
|
||||
}
|
||||
User <-> Card: "card/owner" {
|
||||
# o2o optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-one
|
||||
}
|
||||
}
|
||||
User <-> Post: "posts/author" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-many
|
||||
}
|
||||
}
|
||||
User <-> Metadata: "metadata/user" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-many
|
||||
}
|
||||
}
|
||||
User <-> Info: "info/user" {
|
||||
# o2m optional
|
||||
source-arrowhead: {
|
||||
shape: cf-one-required
|
||||
}
|
||||
target-arrowhead: {
|
||||
shape: cf-many
|
||||
}
|
||||
}
|
||||
|
||||
# Tables
|
||||
Card: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
owner_id: int {constraint: foreign_key}
|
||||
}
|
||||
Info: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
content: json.RawMessage
|
||||
}
|
||||
Metadata: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
age: int
|
||||
}
|
||||
Pet: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
owner_id: int {constraint: foreign_key}
|
||||
}
|
||||
Post: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
text: string
|
||||
author_id: int {constraint: foreign_key}
|
||||
}
|
||||
User: {
|
||||
shape: sql_table
|
||||
id: int {constraint: primary_key}
|
||||
parent_id: int {constraint: foreign_key}
|
||||
spouse_id: int {constraint: foreign_key}
|
||||
}
|
||||
34
e2etests/testdata/stable/ent2d2_basic/dagre/board.exp.json
generated
vendored
|
|
@ -755,7 +755,7 @@
|
|||
"strokeWidth": 2,
|
||||
"stroke": "B1",
|
||||
"borderRadius": 10,
|
||||
"label": "children/parent",
|
||||
"label": "children/parent/ancestor",
|
||||
"fontSize": 16,
|
||||
"fontFamily": "DEFAULT",
|
||||
"language": "",
|
||||
|
|
@ -763,62 +763,62 @@
|
|||
"italic": true,
|
||||
"bold": false,
|
||||
"underline": false,
|
||||
"labelWidth": 104,
|
||||
"labelWidth": 167,
|
||||
"labelHeight": 21,
|
||||
"labelPosition": "INSIDE_MIDDLE_CENTER",
|
||||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 770.5,
|
||||
"y": 38.698727015558696
|
||||
"y": 41.42337662337662
|
||||
},
|
||||
{
|
||||
"x": 871.8333333333333,
|
||||
"y": 7.739745403111737
|
||||
"x": 888.6333333333333,
|
||||
"y": 8.28467532467532
|
||||
},
|
||||
{
|
||||
"x": 903.5,
|
||||
"x": 925.55,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"x": 913,
|
||||
"x": 936.625,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"x": 922.5,
|
||||
"x": 947.7,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"x": 935.1666666666667,
|
||||
"x": 962.4666666666667,
|
||||
"y": 14.4
|
||||
},
|
||||
{
|
||||
"x": 944.6666666666667,
|
||||
"x": 973.5416666666667,
|
||||
"y": 36
|
||||
},
|
||||
{
|
||||
"x": 954.1666666666666,
|
||||
"x": 984.6166666666667,
|
||||
"y": 57.6
|
||||
},
|
||||
{
|
||||
"x": 954.1666666666666,
|
||||
"x": 984.6166666666667,
|
||||
"y": 86.4
|
||||
},
|
||||
{
|
||||
"x": 944.6666666666667,
|
||||
"x": 973.5416666666667,
|
||||
"y": 108
|
||||
},
|
||||
{
|
||||
"x": 935.1666666666667,
|
||||
"x": 962.4666666666667,
|
||||
"y": 129.6
|
||||
},
|
||||
{
|
||||
"x": 871.8333333333333,
|
||||
"y": 136.26025459688827
|
||||
"x": 888.6333333333333,
|
||||
"y": 135.71532467532467
|
||||
},
|
||||
{
|
||||
"x": 770.5,
|
||||
"y": 105.30127298444131
|
||||
"y": 102.57662337662339
|
||||
}
|
||||
],
|
||||
"isCurve": true,
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
36
e2etests/testdata/stable/ent2d2_basic/elk/board.exp.json
generated
vendored
|
|
@ -687,19 +687,19 @@
|
|||
"route": [
|
||||
{
|
||||
"x": 453.5,
|
||||
"y": 69.6
|
||||
"y": 60
|
||||
},
|
||||
{
|
||||
"x": 403.5,
|
||||
"y": 69.6
|
||||
"x": 365.5,
|
||||
"y": 60
|
||||
},
|
||||
{
|
||||
"x": 403.5,
|
||||
"y": 98.4
|
||||
"x": 365.5,
|
||||
"y": 108
|
||||
},
|
||||
{
|
||||
"x": 453.5,
|
||||
"y": 98.4
|
||||
"y": 108
|
||||
}
|
||||
],
|
||||
"animated": false,
|
||||
|
|
@ -718,7 +718,7 @@
|
|||
"strokeWidth": 2,
|
||||
"stroke": "B1",
|
||||
"borderRadius": 10,
|
||||
"label": "children/parent",
|
||||
"label": "children/parent/ancestor",
|
||||
"fontSize": 16,
|
||||
"fontFamily": "DEFAULT",
|
||||
"language": "",
|
||||
|
|
@ -726,26 +726,26 @@
|
|||
"italic": true,
|
||||
"bold": false,
|
||||
"underline": false,
|
||||
"labelWidth": 104,
|
||||
"labelWidth": 167,
|
||||
"labelHeight": 21,
|
||||
"labelPosition": "INSIDE_MIDDLE_CENTER",
|
||||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 453.5,
|
||||
"y": 40.8
|
||||
"x": 733.5,
|
||||
"y": 108
|
||||
},
|
||||
{
|
||||
"x": 343.5,
|
||||
"y": 40.8
|
||||
"x": 821.5,
|
||||
"y": 108
|
||||
},
|
||||
{
|
||||
"x": 343.5,
|
||||
"y": 127.2
|
||||
"x": 821.5,
|
||||
"y": 60
|
||||
},
|
||||
{
|
||||
"x": 453.5,
|
||||
"y": 127.2
|
||||
"x": 733.5,
|
||||
"y": 60
|
||||
}
|
||||
],
|
||||
"animated": false,
|
||||
|
|
@ -778,11 +778,11 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 500.16666666666663,
|
||||
"x": 500.1666666666667,
|
||||
"y": 156
|
||||
},
|
||||
{
|
||||
"x": 500.16666666666663,
|
||||
"x": 500.1666666666667,
|
||||
"y": 196
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
1106
e2etests/testdata/stable/ent2d2_right/dagre/board.exp.json
generated
vendored
Normal file
108
e2etests/testdata/stable/ent2d2_right/dagre/sketch.exp.svg
vendored
Normal file
|
After Width: | Height: | Size: 30 KiB |
1019
e2etests/testdata/stable/ent2d2_right/elk/board.exp.json
generated
vendored
Normal file
108
e2etests/testdata/stable/ent2d2_right/elk/sketch.exp.svg
vendored
Normal file
|
After Width: | Height: | Size: 30 KiB |
62
e2etests/testdata/stable/self-referencing/elk/board.exp.json
generated
vendored
|
|
@ -7,7 +7,7 @@
|
|||
"id": "x",
|
||||
"type": "rectangle",
|
||||
"pos": {
|
||||
"x": 72,
|
||||
"x": 62,
|
||||
"y": 12
|
||||
},
|
||||
"width": 120,
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
"id": "y",
|
||||
"type": "rectangle",
|
||||
"pos": {
|
||||
"x": 194,
|
||||
"x": 209,
|
||||
"y": 158
|
||||
},
|
||||
"width": 80,
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
"id": "z",
|
||||
"type": "rectangle",
|
||||
"pos": {
|
||||
"x": 297,
|
||||
"x": 337,
|
||||
"y": 12
|
||||
},
|
||||
"width": 80,
|
||||
|
|
@ -153,20 +153,20 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 72,
|
||||
"y": 38.4
|
||||
"x": 62,
|
||||
"y": 34
|
||||
},
|
||||
{
|
||||
"x": 22,
|
||||
"y": 38.4
|
||||
"x": 12,
|
||||
"y": 34
|
||||
},
|
||||
{
|
||||
"x": 22,
|
||||
"y": 51.599999999999994
|
||||
"x": 12,
|
||||
"y": 56
|
||||
},
|
||||
{
|
||||
"x": 72,
|
||||
"y": 51.599999999999994
|
||||
"x": 62,
|
||||
"y": 56
|
||||
}
|
||||
],
|
||||
"animated": false,
|
||||
|
|
@ -199,20 +199,20 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 72,
|
||||
"y": 25.2
|
||||
"x": 182,
|
||||
"y": 56
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 25.2
|
||||
"x": 232,
|
||||
"y": 56
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 64.8
|
||||
"x": 232,
|
||||
"y": 34
|
||||
},
|
||||
{
|
||||
"x": 72,
|
||||
"y": 64.8
|
||||
"x": 182,
|
||||
"y": 34
|
||||
}
|
||||
],
|
||||
"animated": false,
|
||||
|
|
@ -245,19 +245,19 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 132,
|
||||
"x": 122,
|
||||
"y": 78
|
||||
},
|
||||
{
|
||||
"x": 132,
|
||||
"x": 122,
|
||||
"y": 118
|
||||
},
|
||||
{
|
||||
"x": 221.16666666666663,
|
||||
"x": 236.16666666666663,
|
||||
"y": 118
|
||||
},
|
||||
{
|
||||
"x": 221.16666666666663,
|
||||
"x": 236.16666666666663,
|
||||
"y": 158
|
||||
}
|
||||
],
|
||||
|
|
@ -291,19 +291,19 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 337,
|
||||
"x": 377,
|
||||
"y": 78
|
||||
},
|
||||
{
|
||||
"x": 337,
|
||||
"x": 377,
|
||||
"y": 118
|
||||
},
|
||||
{
|
||||
"x": 247.83333333333331,
|
||||
"x": 262.8333333333333,
|
||||
"y": 118
|
||||
},
|
||||
{
|
||||
"x": 247.83333333333331,
|
||||
"x": 262.8333333333333,
|
||||
"y": 158
|
||||
}
|
||||
],
|
||||
|
|
@ -337,19 +337,19 @@
|
|||
"labelPercentage": 0,
|
||||
"route": [
|
||||
{
|
||||
"x": 297,
|
||||
"x": 337,
|
||||
"y": 34
|
||||
},
|
||||
{
|
||||
"x": 247,
|
||||
"x": 287,
|
||||
"y": 34
|
||||
},
|
||||
{
|
||||
"x": 247,
|
||||
"x": 287,
|
||||
"y": 56
|
||||
},
|
||||
{
|
||||
"x": 297,
|
||||
"x": 337,
|
||||
"y": 56
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.4.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 367 214"><svg id="d2-svg" class="d2-1823189575" width="367" height="214" viewBox="11 11 367 214"><rect x="11.000000" y="11.000000" width="367.000000" height="214.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
||||
.d2-1823189575 .text-bold {
|
||||
font-family: "d2-1823189575-font-bold";
|
||||
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.4.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 407 214"><svg id="d2-svg" class="d2-127389242" width="407" height="214" viewBox="11 11 407 214"><rect x="11.000000" y="11.000000" width="407.000000" height="214.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
||||
.d2-127389242 .text-bold {
|
||||
font-family: "d2-127389242-font-bold";
|
||||
}
|
||||
@font-face {
|
||||
font-family: d2-1823189575-font-bold;
|
||||
font-family: d2-127389242-font-bold;
|
||||
src: url("data:application/font-woff;base64,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");
|
||||
}
|
||||
.d2-1823189575 .text-italic {
|
||||
font-family: "d2-1823189575-font-italic";
|
||||
.d2-127389242 .text-italic {
|
||||
font-family: "d2-127389242-font-italic";
|
||||
}
|
||||
@font-face {
|
||||
font-family: d2-1823189575-font-italic;
|
||||
font-family: d2-127389242-font-italic;
|
||||
src: url("data:application/font-woff;base64,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");
|
||||
}]]></style><style type="text/css"><![CDATA[.shape {
|
||||
shape-rendering: geometricPrecision;
|
||||
|
|
@ -25,78 +25,78 @@
|
|||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.d2-1823189575 .fill-N1{fill:#0A0F25;}
|
||||
.d2-1823189575 .fill-N2{fill:#676C7E;}
|
||||
.d2-1823189575 .fill-N3{fill:#9499AB;}
|
||||
.d2-1823189575 .fill-N4{fill:#CFD2DD;}
|
||||
.d2-1823189575 .fill-N5{fill:#DEE1EB;}
|
||||
.d2-1823189575 .fill-N6{fill:#EEF1F8;}
|
||||
.d2-1823189575 .fill-N7{fill:#FFFFFF;}
|
||||
.d2-1823189575 .fill-B1{fill:#0D32B2;}
|
||||
.d2-1823189575 .fill-B2{fill:#0D32B2;}
|
||||
.d2-1823189575 .fill-B3{fill:#E3E9FD;}
|
||||
.d2-1823189575 .fill-B4{fill:#E3E9FD;}
|
||||
.d2-1823189575 .fill-B5{fill:#EDF0FD;}
|
||||
.d2-1823189575 .fill-B6{fill:#F7F8FE;}
|
||||
.d2-1823189575 .fill-AA2{fill:#4A6FF3;}
|
||||
.d2-1823189575 .fill-AA4{fill:#EDF0FD;}
|
||||
.d2-1823189575 .fill-AA5{fill:#F7F8FE;}
|
||||
.d2-1823189575 .fill-AB4{fill:#EDF0FD;}
|
||||
.d2-1823189575 .fill-AB5{fill:#F7F8FE;}
|
||||
.d2-1823189575 .stroke-N1{stroke:#0A0F25;}
|
||||
.d2-1823189575 .stroke-N2{stroke:#676C7E;}
|
||||
.d2-1823189575 .stroke-N3{stroke:#9499AB;}
|
||||
.d2-1823189575 .stroke-N4{stroke:#CFD2DD;}
|
||||
.d2-1823189575 .stroke-N5{stroke:#DEE1EB;}
|
||||
.d2-1823189575 .stroke-N6{stroke:#EEF1F8;}
|
||||
.d2-1823189575 .stroke-N7{stroke:#FFFFFF;}
|
||||
.d2-1823189575 .stroke-B1{stroke:#0D32B2;}
|
||||
.d2-1823189575 .stroke-B2{stroke:#0D32B2;}
|
||||
.d2-1823189575 .stroke-B3{stroke:#E3E9FD;}
|
||||
.d2-1823189575 .stroke-B4{stroke:#E3E9FD;}
|
||||
.d2-1823189575 .stroke-B5{stroke:#EDF0FD;}
|
||||
.d2-1823189575 .stroke-B6{stroke:#F7F8FE;}
|
||||
.d2-1823189575 .stroke-AA2{stroke:#4A6FF3;}
|
||||
.d2-1823189575 .stroke-AA4{stroke:#EDF0FD;}
|
||||
.d2-1823189575 .stroke-AA5{stroke:#F7F8FE;}
|
||||
.d2-1823189575 .stroke-AB4{stroke:#EDF0FD;}
|
||||
.d2-1823189575 .stroke-AB5{stroke:#F7F8FE;}
|
||||
.d2-1823189575 .background-color-N1{background-color:#0A0F25;}
|
||||
.d2-1823189575 .background-color-N2{background-color:#676C7E;}
|
||||
.d2-1823189575 .background-color-N3{background-color:#9499AB;}
|
||||
.d2-1823189575 .background-color-N4{background-color:#CFD2DD;}
|
||||
.d2-1823189575 .background-color-N5{background-color:#DEE1EB;}
|
||||
.d2-1823189575 .background-color-N6{background-color:#EEF1F8;}
|
||||
.d2-1823189575 .background-color-N7{background-color:#FFFFFF;}
|
||||
.d2-1823189575 .background-color-B1{background-color:#0D32B2;}
|
||||
.d2-1823189575 .background-color-B2{background-color:#0D32B2;}
|
||||
.d2-1823189575 .background-color-B3{background-color:#E3E9FD;}
|
||||
.d2-1823189575 .background-color-B4{background-color:#E3E9FD;}
|
||||
.d2-1823189575 .background-color-B5{background-color:#EDF0FD;}
|
||||
.d2-1823189575 .background-color-B6{background-color:#F7F8FE;}
|
||||
.d2-1823189575 .background-color-AA2{background-color:#4A6FF3;}
|
||||
.d2-1823189575 .background-color-AA4{background-color:#EDF0FD;}
|
||||
.d2-1823189575 .background-color-AA5{background-color:#F7F8FE;}
|
||||
.d2-1823189575 .background-color-AB4{background-color:#EDF0FD;}
|
||||
.d2-1823189575 .background-color-AB5{background-color:#F7F8FE;}
|
||||
.d2-1823189575 .color-N1{color:#0A0F25;}
|
||||
.d2-1823189575 .color-N2{color:#676C7E;}
|
||||
.d2-1823189575 .color-N3{color:#9499AB;}
|
||||
.d2-1823189575 .color-N4{color:#CFD2DD;}
|
||||
.d2-1823189575 .color-N5{color:#DEE1EB;}
|
||||
.d2-1823189575 .color-N6{color:#EEF1F8;}
|
||||
.d2-1823189575 .color-N7{color:#FFFFFF;}
|
||||
.d2-1823189575 .color-B1{color:#0D32B2;}
|
||||
.d2-1823189575 .color-B2{color:#0D32B2;}
|
||||
.d2-1823189575 .color-B3{color:#E3E9FD;}
|
||||
.d2-1823189575 .color-B4{color:#E3E9FD;}
|
||||
.d2-1823189575 .color-B5{color:#EDF0FD;}
|
||||
.d2-1823189575 .color-B6{color:#F7F8FE;}
|
||||
.d2-1823189575 .color-AA2{color:#4A6FF3;}
|
||||
.d2-1823189575 .color-AA4{color:#EDF0FD;}
|
||||
.d2-1823189575 .color-AA5{color:#F7F8FE;}
|
||||
.d2-1823189575 .color-AB4{color:#EDF0FD;}
|
||||
.d2-1823189575 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="x"><g class="shape" ><rect x="72.000000" y="12.000000" width="120.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="132.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">x</text></g><g id="y"><g class="shape" ><rect x="194.000000" y="158.000000" width="80.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="234.000000" y="196.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">y</text></g><g id="z"><g class="shape" ><rect x="297.000000" y="12.000000" width="80.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="337.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">z</text></g><g id="(x -> x)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 70.000000 38.400000 L 28.600000 38.400000 C 15.400000 38.400000 15.400000 51.600000 28.600000 51.600000 L 68.000000 51.600000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1823189575)" /></g><g id="(x -> x)[1]"><path d="M 70.000000 25.200000 L 22.000000 25.200000 S 12.000000 25.200000 12.000000 35.200000 L 12.000000 54.800000 S 12.000000 64.800000 22.000000 64.800000 L 68.000000 64.800000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1823189575)" /></g><g id="(x -> y)[0]"><path d="M 132.000000 80.000000 L 132.000000 108.000000 S 132.000000 118.000000 142.000000 118.000000 L 211.166667 118.000000 S 221.166667 118.000000 221.166667 128.000000 L 221.166667 154.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1823189575)" /></g><g id="(z -> y)[0]"><path d="M 337.000000 80.000000 L 337.000000 108.000000 S 337.000000 118.000000 327.000000 118.000000 L 257.833333 118.000000 S 247.833333 118.000000 247.833333 128.000000 L 247.833333 154.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1823189575)" /></g><g id="(z -> z)[0]"><path d="M 295.000000 34.000000 L 257.000000 34.000000 S 247.000000 34.000000 247.000000 44.000000 L 247.000000 46.000000 S 247.000000 56.000000 257.000000 56.000000 L 293.000000 56.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1823189575)" /><text x="247.500000" y="51.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">hello</text></g><mask id="d2-1823189575" maskUnits="userSpaceOnUse" x="11" y="11" width="367" height="214">
|
||||
<rect x="11" y="11" width="367" height="214" fill="white"></rect>
|
||||
<rect x="231.000000" y="35.000000" width="33" height="21" fill="black"></rect>
|
||||
.d2-127389242 .fill-N1{fill:#0A0F25;}
|
||||
.d2-127389242 .fill-N2{fill:#676C7E;}
|
||||
.d2-127389242 .fill-N3{fill:#9499AB;}
|
||||
.d2-127389242 .fill-N4{fill:#CFD2DD;}
|
||||
.d2-127389242 .fill-N5{fill:#DEE1EB;}
|
||||
.d2-127389242 .fill-N6{fill:#EEF1F8;}
|
||||
.d2-127389242 .fill-N7{fill:#FFFFFF;}
|
||||
.d2-127389242 .fill-B1{fill:#0D32B2;}
|
||||
.d2-127389242 .fill-B2{fill:#0D32B2;}
|
||||
.d2-127389242 .fill-B3{fill:#E3E9FD;}
|
||||
.d2-127389242 .fill-B4{fill:#E3E9FD;}
|
||||
.d2-127389242 .fill-B5{fill:#EDF0FD;}
|
||||
.d2-127389242 .fill-B6{fill:#F7F8FE;}
|
||||
.d2-127389242 .fill-AA2{fill:#4A6FF3;}
|
||||
.d2-127389242 .fill-AA4{fill:#EDF0FD;}
|
||||
.d2-127389242 .fill-AA5{fill:#F7F8FE;}
|
||||
.d2-127389242 .fill-AB4{fill:#EDF0FD;}
|
||||
.d2-127389242 .fill-AB5{fill:#F7F8FE;}
|
||||
.d2-127389242 .stroke-N1{stroke:#0A0F25;}
|
||||
.d2-127389242 .stroke-N2{stroke:#676C7E;}
|
||||
.d2-127389242 .stroke-N3{stroke:#9499AB;}
|
||||
.d2-127389242 .stroke-N4{stroke:#CFD2DD;}
|
||||
.d2-127389242 .stroke-N5{stroke:#DEE1EB;}
|
||||
.d2-127389242 .stroke-N6{stroke:#EEF1F8;}
|
||||
.d2-127389242 .stroke-N7{stroke:#FFFFFF;}
|
||||
.d2-127389242 .stroke-B1{stroke:#0D32B2;}
|
||||
.d2-127389242 .stroke-B2{stroke:#0D32B2;}
|
||||
.d2-127389242 .stroke-B3{stroke:#E3E9FD;}
|
||||
.d2-127389242 .stroke-B4{stroke:#E3E9FD;}
|
||||
.d2-127389242 .stroke-B5{stroke:#EDF0FD;}
|
||||
.d2-127389242 .stroke-B6{stroke:#F7F8FE;}
|
||||
.d2-127389242 .stroke-AA2{stroke:#4A6FF3;}
|
||||
.d2-127389242 .stroke-AA4{stroke:#EDF0FD;}
|
||||
.d2-127389242 .stroke-AA5{stroke:#F7F8FE;}
|
||||
.d2-127389242 .stroke-AB4{stroke:#EDF0FD;}
|
||||
.d2-127389242 .stroke-AB5{stroke:#F7F8FE;}
|
||||
.d2-127389242 .background-color-N1{background-color:#0A0F25;}
|
||||
.d2-127389242 .background-color-N2{background-color:#676C7E;}
|
||||
.d2-127389242 .background-color-N3{background-color:#9499AB;}
|
||||
.d2-127389242 .background-color-N4{background-color:#CFD2DD;}
|
||||
.d2-127389242 .background-color-N5{background-color:#DEE1EB;}
|
||||
.d2-127389242 .background-color-N6{background-color:#EEF1F8;}
|
||||
.d2-127389242 .background-color-N7{background-color:#FFFFFF;}
|
||||
.d2-127389242 .background-color-B1{background-color:#0D32B2;}
|
||||
.d2-127389242 .background-color-B2{background-color:#0D32B2;}
|
||||
.d2-127389242 .background-color-B3{background-color:#E3E9FD;}
|
||||
.d2-127389242 .background-color-B4{background-color:#E3E9FD;}
|
||||
.d2-127389242 .background-color-B5{background-color:#EDF0FD;}
|
||||
.d2-127389242 .background-color-B6{background-color:#F7F8FE;}
|
||||
.d2-127389242 .background-color-AA2{background-color:#4A6FF3;}
|
||||
.d2-127389242 .background-color-AA4{background-color:#EDF0FD;}
|
||||
.d2-127389242 .background-color-AA5{background-color:#F7F8FE;}
|
||||
.d2-127389242 .background-color-AB4{background-color:#EDF0FD;}
|
||||
.d2-127389242 .background-color-AB5{background-color:#F7F8FE;}
|
||||
.d2-127389242 .color-N1{color:#0A0F25;}
|
||||
.d2-127389242 .color-N2{color:#676C7E;}
|
||||
.d2-127389242 .color-N3{color:#9499AB;}
|
||||
.d2-127389242 .color-N4{color:#CFD2DD;}
|
||||
.d2-127389242 .color-N5{color:#DEE1EB;}
|
||||
.d2-127389242 .color-N6{color:#EEF1F8;}
|
||||
.d2-127389242 .color-N7{color:#FFFFFF;}
|
||||
.d2-127389242 .color-B1{color:#0D32B2;}
|
||||
.d2-127389242 .color-B2{color:#0D32B2;}
|
||||
.d2-127389242 .color-B3{color:#E3E9FD;}
|
||||
.d2-127389242 .color-B4{color:#E3E9FD;}
|
||||
.d2-127389242 .color-B5{color:#EDF0FD;}
|
||||
.d2-127389242 .color-B6{color:#F7F8FE;}
|
||||
.d2-127389242 .color-AA2{color:#4A6FF3;}
|
||||
.d2-127389242 .color-AA4{color:#EDF0FD;}
|
||||
.d2-127389242 .color-AA5{color:#F7F8FE;}
|
||||
.d2-127389242 .color-AB4{color:#EDF0FD;}
|
||||
.d2-127389242 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="x"><g class="shape" ><rect x="62.000000" y="12.000000" width="120.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="122.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">x</text></g><g id="y"><g class="shape" ><rect x="209.000000" y="158.000000" width="80.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="249.000000" y="196.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">y</text></g><g id="z"><g class="shape" ><rect x="337.000000" y="12.000000" width="80.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="377.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">z</text></g><g id="(x -> x)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 60.000000 34.000000 L 22.000000 34.000000 S 12.000000 34.000000 12.000000 44.000000 L 12.000000 46.000000 S 12.000000 56.000000 22.000000 56.000000 L 58.000000 56.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-127389242)" /></g><g id="(x -> x)[1]"><path d="M 184.000000 56.000000 L 222.000000 56.000000 S 232.000000 56.000000 232.000000 46.000000 L 232.000000 44.000000 S 232.000000 34.000000 222.000000 34.000000 L 186.000000 34.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-127389242)" /></g><g id="(x -> y)[0]"><path d="M 122.000000 80.000000 L 122.000000 108.000000 S 122.000000 118.000000 132.000000 118.000000 L 226.166667 118.000000 S 236.166667 118.000000 236.166667 128.000000 L 236.166667 154.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-127389242)" /></g><g id="(z -> y)[0]"><path d="M 377.000000 80.000000 L 377.000000 108.000000 S 377.000000 118.000000 367.000000 118.000000 L 272.833333 118.000000 S 262.833333 118.000000 262.833333 128.000000 L 262.833333 154.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-127389242)" /></g><g id="(z -> z)[0]"><path d="M 335.000000 34.000000 L 297.000000 34.000000 S 287.000000 34.000000 287.000000 44.000000 L 287.000000 46.000000 S 287.000000 56.000000 297.000000 56.000000 L 333.000000 56.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-127389242)" /><text x="287.500000" y="51.000000" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">hello</text></g><mask id="d2-127389242" maskUnits="userSpaceOnUse" x="11" y="11" width="407" height="214">
|
||||
<rect x="11" y="11" width="407" height="214" fill="white"></rect>
|
||||
<rect x="271.000000" y="35.000000" width="33" height="21" fill="black"></rect>
|
||||
</mask></svg></svg>
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |