Merge branch 'master' into render-priority

This commit is contained in:
Júlio César Batista 2022-11-30 13:31:32 -08:00
commit a73d9ff7b7
No known key found for this signature in database
GPG key ID: 10C4B861BF314878
22 changed files with 2981 additions and 41 deletions

View file

@ -8,6 +8,7 @@
- Arrowhead labels are now supported. [#182](https://github.com/terrastruct/d2/pull/182)
- `stroke-dash` on shapes is now supported. [#188](https://github.com/terrastruct/d2/issues/188)
- `font-color` is now supported on shapes and connections. [#215](https://github.com/terrastruct/d2/pull/215)
- `font-size` is now supported on shapes and connections. [#250](https://github.com/terrastruct/d2/pull/250)
- Querying shapes and connections by ID is now supported in renders. [#218](https://github.com/terrastruct/d2/pull/218)
- [install.sh](./install.sh) now accepts `-d` as an alias for `--dry-run`.
[#266](https://github.com/terrastruct/d2/pull/266)

View file

@ -417,6 +417,9 @@ func (obj *Object) Text() *d2target.MText {
if obj.IsContainer() {
fontSize = obj.Level().LabelSize()
}
if obj.Attributes.Style.FontSize != nil {
fontSize, _ = strconv.Atoi(obj.Attributes.Style.FontSize.Value)
}
// Class and Table objects have Label set to header
if obj.Class != nil || obj.SQLTable != nil {
fontSize = d2fonts.FONT_SIZE_XL
@ -666,9 +669,13 @@ func (e *Edge) ArrowString() string {
}
func (e *Edge) Text() *d2target.MText {
fontSize := d2fonts.FONT_SIZE_M
if e.Attributes.Style.FontSize != nil {
fontSize, _ = strconv.Atoi(e.Attributes.Style.FontSize.Value)
}
return &d2target.MText{
Text: e.Attributes.Label.Value,
FontSize: d2fonts.FONT_SIZE_M,
FontSize: fontSize,
IsBold: false,
IsItalic: true,

View file

@ -4,7 +4,6 @@ import (
"bytes"
"math"
"strings"
"unicode/utf8"
"github.com/PuerkitoBio/goquery"
"github.com/yuin/goldmark"
@ -212,20 +211,17 @@ func (ruler *Ruler) measureNode(depth int, n *html.Node, font d2fonts.Font) bloc
if strings.TrimSpace(n.Data) == "" {
return blockAttrs{}
}
spaceWidths := 0.
// consecutive leading/trailing spaces end up rendered as a single space
spaceRune, _ := utf8.DecodeRuneInString(" ")
// measure will not include leading or trailing whitespace, so we have to add in the space width
spaceWidth := ruler.atlases[font].glyph(spaceRune).advance
str := n.Data
isCode := parentElementType == "pre" || parentElementType == "code"
spaceWidths := 0.
if !isCode {
spaceWidth := ruler.spaceWidth(font)
// MeasurePrecise will not include leading or trailing whitespace, so we account for it here
str = strings.ReplaceAll(str, "\n", " ")
str = strings.ReplaceAll(str, "\t", " ")
if strings.HasPrefix(str, " ") {
// consecutive leading/trailing spaces end up rendered as a single space
str = strings.TrimPrefix(str, " ")
if hasPrev(n) {
spaceWidths += spaceWidth

View file

@ -76,6 +76,8 @@ type Ruler struct {
atlases map[d2fonts.Font]*atlas
ttfs map[d2fonts.Font]*truetype.Font
buf []byte
prevR rune
bounds *rect
@ -97,49 +99,52 @@ type Ruler struct {
// })
// txt := text.New(orig, text.NewAtlas(face, text.ASCII))
func NewRuler() (*Ruler, error) {
lineHeights := make(map[d2fonts.Font]float64)
tabWidths := make(map[d2fonts.Font]float64)
atlases := make(map[d2fonts.Font]*atlas)
origin := geo.NewPoint(0, 0)
r := &Ruler{
Orig: origin,
Dot: origin.Copy(),
LineHeightFactor: 1.,
lineHeights: make(map[d2fonts.Font]float64),
tabWidths: make(map[d2fonts.Font]float64),
atlases: make(map[d2fonts.Font]*atlas),
ttfs: make(map[d2fonts.Font]*truetype.Font),
}
for _, fontFamily := range d2fonts.FontFamilies {
for _, fontSize := range d2fonts.FontSizes {
for _, fontStyle := range d2fonts.FontStyles {
font := d2fonts.Font{
Family: fontFamily,
Style: fontStyle,
}
if _, ok := d2fonts.FontFaces[font]; !ok {
continue
}
for _, fontStyle := range d2fonts.FontStyles {
font := d2fonts.Font{
Family: fontFamily,
Style: fontStyle,
}
// Note: FontFaces lookup is size-agnostic
if _, ok := d2fonts.FontFaces[font]; !ok {
continue
}
if _, loaded := r.ttfs[font]; !loaded {
ttf, err := truetype.Parse(d2fonts.FontFaces[font])
if err != nil {
return nil, err
}
// Added after, since FontFaces lookup is size-agnostic
font.Size = fontSize
face := truetype.NewFace(ttf, &truetype.Options{
Size: float64(fontSize),
})
atlas := NewAtlas(face, ASCII)
atlases[font] = atlas
lineHeights[font] = atlas.lineHeight
tabWidths[font] = atlas.glyph(' ').advance * TAB_SIZE
r.ttfs[font] = ttf
}
}
}
origin := geo.NewPoint(0, 0)
txt := &Ruler{
Orig: origin,
Dot: origin.Copy(),
LineHeightFactor: 1.,
lineHeights: lineHeights,
tabWidths: tabWidths,
atlases: atlases,
}
txt.clear()
r.clear()
return txt, nil
return r, nil
}
func (r *Ruler) addFontSize(font d2fonts.Font) {
sizeless := font
sizeless.Size = 0
face := truetype.NewFace(r.ttfs[sizeless], &truetype.Options{
Size: float64(font.Size),
})
atlas := NewAtlas(face, ASCII)
r.atlases[font] = atlas
r.lineHeights[font] = atlas.lineHeight
r.tabWidths[font] = atlas.glyph(' ').advance * TAB_SIZE
}
func (t *Ruler) Measure(font d2fonts.Font, s string) (width, height int) {
@ -148,6 +153,9 @@ func (t *Ruler) Measure(font d2fonts.Font, s string) (width, height int) {
}
func (t *Ruler) MeasurePrecise(font d2fonts.Font, s string) (width, height float64) {
if _, ok := t.atlases[font]; !ok {
t.addFontSize(font)
}
t.clear()
t.buf = append(t.buf, s...)
t.drawBuf(font)
@ -216,3 +224,11 @@ func (txt *Ruler) drawBuf(font d2fonts.Font) {
}
}
}
func (ruler *Ruler) spaceWidth(font d2fonts.Font) float64 {
if _, has := ruler.atlases[font]; !has {
ruler.addFontSize(font)
}
spaceRune, _ := utf8.DecodeRuneInString(" ")
return ruler.atlases[font].glyph(spaceRune).advance
}

View file

@ -1014,6 +1014,34 @@ cube: {
stroke-width: 7
}
}
`,
},
{
name: "font_sizes",
script: `
size XS.style.font-size: 13
size S.style.font-size: 14
size M.style.font-size: 16
size L.style.font-size: 20
size XL.style.font-size: 24
size XXL.style.font-size: 28
size XXXL.style.font-size: 32
custom 8.style.font-size: 8
custom 12.style.font-size: 12
custom 18.style.font-size: 18
custom 21.style.font-size: 21
custom 64.style.font-size: 64
custom 8 -> size XS: custom 10 {
style.font-size: 10
}
size S -> size M: custom 15 {
style.font-size: 15
}
size XXXL -> custom 64: custom 48 {
style.font-size: 48
}
`,
},
}

View file

@ -0,0 +1,604 @@
{
"name": "",
"shapes": [
{
"id": "size XS",
"type": "",
"pos": {
"x": 1293,
"y": 278
},
"width": 145,
"height": 122,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XS",
"fontSize": 13,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 45,
"labelHeight": 22,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size S",
"type": "",
"pos": {
"x": 4,
"y": 12
},
"width": 140,
"height": 123,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size S",
"fontSize": 14,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 40,
"labelHeight": 23,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size M",
"type": "",
"pos": {
"x": 0,
"y": 276
},
"width": 147,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size M",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size L",
"type": "",
"pos": {
"x": 204,
"y": 8
},
"width": 153,
"height": 131,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size L",
"fontSize": 20,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 53,
"labelHeight": 31,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XL",
"type": "",
"pos": {
"x": 417,
"y": 5
},
"width": 177,
"height": 136,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XL",
"fontSize": 24,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 77,
"labelHeight": 36,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XXL",
"type": "",
"pos": {
"x": 654,
"y": 3
},
"width": 204,
"height": 141,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XXL",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 104,
"labelHeight": 41,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XXXL",
"type": "",
"pos": {
"x": 918,
"y": 0
},
"width": 237,
"height": 146,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XXXL",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 137,
"labelHeight": 46,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 8",
"type": "",
"pos": {
"x": 1297,
"y": 15
},
"width": 137,
"height": 116,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 8",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 37,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 12",
"type": "",
"pos": {
"x": 1494,
"y": 13
},
"width": 160,
"height": 121,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 12",
"fontSize": 12,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 60,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 18",
"type": "",
"pos": {
"x": 1714,
"y": 9
},
"width": 186,
"height": 128,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 18",
"fontSize": 18,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 86,
"labelHeight": 28,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 21",
"type": "",
"pos": {
"x": 1960,
"y": 7
},
"width": 200,
"height": 132,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 21",
"fontSize": 21,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 100,
"labelHeight": 32,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 64",
"type": "",
"pos": {
"x": 840,
"y": 246
},
"width": 393,
"height": 186,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 64",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 293,
"labelHeight": 86,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(custom 8 -> size XS)[0]",
"src": "custom 8",
"srcArrow": "none",
"srcLabel": "",
"dst": "size XS",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 10",
"fontSize": 10,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 42,
"labelHeight": 13,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 1365,
"y": 131
},
{
"x": 1365,
"y": 183
},
{
"x": 1365,
"y": 212.4
},
{
"x": 1365,
"y": 278
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(size S -> size M)[0]",
"src": "size S",
"srcArrow": "none",
"srcLabel": "",
"dst": "size M",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 15",
"fontSize": 15,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 64,
"labelHeight": 19,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 73.5,
"y": 135.5
},
{
"x": 73.5,
"y": 183.9
},
{
"x": 73.5,
"y": 212
},
{
"x": 73.5,
"y": 276
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(size XXXL -> custom 64)[0]",
"src": "size XXXL",
"srcArrow": "none",
"srcLabel": "",
"dst": "custom 64",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 48",
"fontSize": 48,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 199,
"labelHeight": 61,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 1036,
"y": 146
},
{
"x": 1036,
"y": 186
},
{
"x": 1036,
"y": 206
},
{
"x": 1036,
"y": 246
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 472 KiB

577
e2etests/testdata/stable/font_sizes/elk/board.exp.json generated vendored Normal file
View file

@ -0,0 +1,577 @@
{
"name": "",
"shapes": [
{
"id": "size XS",
"type": "",
"pos": {
"x": 1465,
"y": 419
},
"width": 145,
"height": 122,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XS",
"fontSize": 13,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 45,
"labelHeight": 22,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size S",
"type": "",
"pos": {
"x": 1634,
"y": 35
},
"width": 140,
"height": 123,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size S",
"fontSize": 14,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 40,
"labelHeight": 23,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size M",
"type": "",
"pos": {
"x": 1630,
"y": 419
},
"width": 147,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size M",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 47,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size L",
"type": "",
"pos": {
"x": 1116,
"y": 20
},
"width": 153,
"height": 131,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size L",
"fontSize": 20,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 53,
"labelHeight": 31,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XL",
"type": "",
"pos": {
"x": 12,
"y": 17
},
"width": 177,
"height": 136,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XL",
"fontSize": 24,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 77,
"labelHeight": 36,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XXL",
"type": "",
"pos": {
"x": 429,
"y": 15
},
"width": 204,
"height": 141,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XXL",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 104,
"labelHeight": 41,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "size XXXL",
"type": "",
"pos": {
"x": 653,
"y": 12
},
"width": 237,
"height": 146,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "size XXXL",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 137,
"labelHeight": 46,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 8",
"type": "",
"pos": {
"x": 1469,
"y": 42
},
"width": 137,
"height": 116,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 8",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 37,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 12",
"type": "",
"pos": {
"x": 1289,
"y": 25
},
"width": 160,
"height": 121,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 12",
"fontSize": 12,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 60,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 18",
"type": "",
"pos": {
"x": 910,
"y": 21
},
"width": 186,
"height": 128,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 18",
"fontSize": 18,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 86,
"labelHeight": 28,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 21",
"type": "",
"pos": {
"x": 209,
"y": 19
},
"width": 200,
"height": 132,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 21",
"fontSize": 21,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 100,
"labelHeight": 32,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "custom 64",
"type": "",
"pos": {
"x": 575,
"y": 419
},
"width": 393,
"height": 186,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "custom 64",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 293,
"labelHeight": 86,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(custom 8 -> size XS)[0]",
"src": "custom 8",
"srcArrow": "none",
"srcLabel": "",
"dst": "size XS",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 10",
"fontSize": 10,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 42,
"labelHeight": 13,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 1537.5,
"y": 158
},
{
"x": 1537.5,
"y": 419
}
],
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(size S -> size M)[0]",
"src": "size S",
"srcArrow": "none",
"srcLabel": "",
"dst": "size M",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 15",
"fontSize": 15,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 64,
"labelHeight": 19,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 1703.5,
"y": 158
},
{
"x": 1703.5,
"y": 419
}
],
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(size XXXL -> custom 64)[0]",
"src": "size XXXL",
"srcArrow": "none",
"srcLabel": "",
"dst": "custom 64",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "custom 48",
"fontSize": 48,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 199,
"labelHeight": 61,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 771.5,
"y": 158
},
{
"x": 771.5,
"y": 419
}
],
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 472 KiB

View file

@ -0,0 +1,196 @@
{
"name": "",
"shapes": [
{
"id": "ninety nine",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 464,
"height": 516,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#E3E9FD",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "ninety nine",
"fontSize": 99,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 457,
"labelHeight": 130,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four",
"type": "",
"pos": {
"x": 40,
"y": 50
},
"width": 384,
"height": 416,
"level": 2,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#EDF0FD",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixty four",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 251,
"labelHeight": 86,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two",
"type": "",
"pos": {
"x": 80,
"y": 100
},
"width": 304,
"height": 316,
"level": 3,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "thirty two",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 135,
"labelHeight": 46,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two.sixteen",
"type": "",
"pos": {
"x": 120,
"y": 150
},
"width": 224,
"height": 216,
"level": 4,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#FFFFFF",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixteen",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 53,
"labelHeight": 26,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two.sixteen.eight",
"type": "",
"pos": {
"x": 170,
"y": 200
},
"width": 124,
"height": 116,
"level": 5,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#FFFFFF",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "eight",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": []
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 325 KiB

View file

@ -0,0 +1,196 @@
{
"name": "",
"shapes": [
{
"id": "ninety nine",
"type": "",
"pos": {
"x": 12,
"y": 12
},
"width": 724,
"height": 716,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#E3E9FD",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "ninety nine",
"fontSize": 99,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 457,
"labelHeight": 130,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four",
"type": "",
"pos": {
"x": 87,
"y": 87
},
"width": 574,
"height": 566,
"level": 2,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#EDF0FD",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixty four",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 251,
"labelHeight": 86,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two",
"type": "",
"pos": {
"x": 162,
"y": 162
},
"width": 424,
"height": 416,
"level": 3,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "thirty two",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 135,
"labelHeight": 46,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two.sixteen",
"type": "",
"pos": {
"x": 237,
"y": 237
},
"width": 274,
"height": 266,
"level": 4,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#FFFFFF",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixteen",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 53,
"labelHeight": 26,
"labelPosition": "INSIDE_TOP_CENTER"
},
{
"id": "ninety nine.sixty four.thirty two.sixteen.eight",
"type": "",
"pos": {
"x": 312,
"y": 312
},
"width": 124,
"height": 116,
"level": 5,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#FFFFFF",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "eight",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": []
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 325 KiB

View file

@ -0,0 +1,385 @@
{
"name": "",
"shapes": [
{
"id": "eight",
"type": "",
"pos": {
"x": 233,
"y": 0
},
"width": 124,
"height": 116,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "eight",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "sixteen",
"type": "",
"pos": {
"x": 216,
"y": 216
},
"width": 157,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixteen",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 57,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "thirty two",
"type": "",
"pos": {
"x": 171,
"y": 442
},
"width": 247,
"height": 146,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "thirty two",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 147,
"labelHeight": 46,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "sixty four",
"type": "",
"pos": {
"x": 108,
"y": 688
},
"width": 374,
"height": 186,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixty four",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 274,
"labelHeight": 86,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "ninety nine",
"type": "",
"pos": {
"x": 0,
"y": 974
},
"width": 589,
"height": 230,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "ninety nine",
"fontSize": 99,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 489,
"labelHeight": 130,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(eight -> sixteen)[0]",
"src": "eight",
"srcArrow": "none",
"srcLabel": "",
"dst": "sixteen",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "twelve",
"fontSize": 12,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 33,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 294.5,
"y": 116
},
{
"x": 294.5,
"y": 156
},
{
"x": 294.5,
"y": 176
},
{
"x": 294.5,
"y": 216
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(sixteen -> thirty two)[0]",
"src": "sixteen",
"srcArrow": "none",
"srcLabel": "",
"dst": "thirty two",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "twenty four",
"fontSize": 24,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 114,
"labelHeight": 31,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 294.5,
"y": 342
},
{
"x": 294.5,
"y": 382
},
{
"x": 294.5,
"y": 402
},
{
"x": 294.5,
"y": 442
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(thirty two -> sixty four)[0]",
"src": "thirty two",
"srcArrow": "none",
"srcLabel": "",
"dst": "sixty four",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "forty eight",
"fontSize": 48,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 202,
"labelHeight": 61,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 294.5,
"y": 588
},
{
"x": 294.5,
"y": 628
},
{
"x": 294.5,
"y": 648
},
{
"x": 294.5,
"y": 688
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(sixty four -> ninety nine)[0]",
"src": "sixty four",
"srcArrow": "none",
"srcLabel": "",
"dst": "ninety nine",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "eighty one",
"fontSize": 81,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 341,
"labelHeight": 102,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 294.5,
"y": 874
},
{
"x": 294.5,
"y": 914
},
{
"x": 294.5,
"y": 934
},
{
"x": 294.5,
"y": 974
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 471 KiB

View file

@ -0,0 +1,349 @@
{
"name": "",
"shapes": [
{
"id": "eight",
"type": "",
"pos": {
"x": 293,
"y": 12
},
"width": 124,
"height": 116,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "eight",
"fontSize": 8,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "sixteen",
"type": "",
"pos": {
"x": 277,
"y": 344
},
"width": 157,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixteen",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 57,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "thirty two",
"type": "",
"pos": {
"x": 232,
"y": 701
},
"width": 247,
"height": 146,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "thirty two",
"fontSize": 32,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 147,
"labelHeight": 46,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "sixty four",
"type": "",
"pos": {
"x": 168,
"y": 1108
},
"width": 374,
"height": 186,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "sixty four",
"fontSize": 64,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 274,
"labelHeight": 86,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "ninety nine",
"type": "",
"pos": {
"x": 61,
"y": 1596
},
"width": 589,
"height": 230,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "ninety nine",
"fontSize": 99,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 489,
"labelHeight": 130,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(eight -> sixteen)[0]",
"src": "eight",
"srcArrow": "none",
"srcLabel": "",
"dst": "sixteen",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "twelve",
"fontSize": 12,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 33,
"labelHeight": 16,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 355,
"y": 128
},
{
"x": 355,
"y": 344
}
],
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(sixteen -> thirty two)[0]",
"src": "sixteen",
"srcArrow": "none",
"srcLabel": "",
"dst": "thirty two",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "twenty four",
"fontSize": 24,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 114,
"labelHeight": 31,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 355,
"y": 470
},
{
"x": 355,
"y": 701
}
],
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(thirty two -> sixty four)[0]",
"src": "thirty two",
"srcArrow": "none",
"srcLabel": "",
"dst": "sixty four",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "forty eight",
"fontSize": 48,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 202,
"labelHeight": 61,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 355,
"y": 847
},
{
"x": 355,
"y": 1108
}
],
"animated": false,
"tooltip": "",
"icon": null
},
{
"id": "(sixty four -> ninety nine)[0]",
"src": "sixty four",
"srcArrow": "none",
"srcLabel": "",
"dst": "ninety nine",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "eighty one",
"fontSize": 81,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 341,
"labelHeight": 102,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 355,
"y": 1294
},
{
"x": 355,
"y": 1596
}
],
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 470 KiB

View file

@ -0,0 +1,130 @@
{
"name": "",
"shapes": [
{
"id": "a",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 113,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 13,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "b",
"type": "",
"pos": {
"x": 0,
"y": 226
},
"width": 113,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 13,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(a -> b)[0]",
"src": "a",
"srcArrow": "none",
"srcLabel": "",
"dst": "b",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "There\nonce\nwas\na\nvery\ntall\nedge\nlabel",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 38,
"labelHeight": 133,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 56.5,
"y": 126
},
{
"x": 56.5,
"y": 166
},
{
"x": 56.5,
"y": 186
},
{
"x": 56.5,
"y": 226
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 468 KiB

View file

@ -0,0 +1,121 @@
{
"name": "",
"shapes": [
{
"id": "a",
"type": "",
"pos": {
"x": 12,
"y": 12
},
"width": 113,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 13,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
},
{
"id": "b",
"type": "",
"pos": {
"x": 12,
"y": 471
},
"width": 113,
"height": 126,
"level": 1,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "#F7F8FE",
"stroke": "#0D32B2",
"shadow": false,
"3d": false,
"multiple": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#0A0F25",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 13,
"labelHeight": 26,
"labelPosition": "INSIDE_MIDDLE_CENTER"
}
],
"connections": [
{
"id": "(a -> b)[0]",
"src": "a",
"srcArrow": "none",
"srcLabel": "",
"dst": "b",
"dstArrow": "triangle",
"dstLabel": "",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "#0D32B2",
"label": "There\nonce\nwas\na\nvery\ntall\nedge\nlabel",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "#676C7E",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 38,
"labelHeight": 133,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"route": [
{
"x": 68.5,
"y": 138
},
{
"x": 68.5,
"y": 471
}
],
"animated": false,
"tooltip": "",
"icon": null
}
]
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 468 KiB

View file

@ -13,6 +13,58 @@ func testTodo(t *testing.T) {
script: `
container.first -> container.second: 1->2
container -> container.second: c->2
`,
},
{
// issue https://github.com/terrastruct/d2/issues/263
name: "tall_edge_label",
script: `
a -> b: There\nonce\nwas\na\nvery\ntall\nedge\nlabel
`,
},
{
// issue https://github.com/terrastruct/d2/issues/263
name: "font_sizes_large",
script: `
eight.style.font-size: 8
sixteen.style.font-size: 16
thirty two.style.font-size: 32
sixty four.style.font-size: 64
ninety nine.style.font-size: 99
eight -> sixteen : twelve {
style.font-size: 12
}
sixteen -> thirty two : twenty four {
style.font-size: 24
}
thirty two -> sixty four: forty eight {
style.font-size: 48
}
sixty four -> ninety nine: eighty one {
style.font-size: 81
}
`,
},
{
// issue https://github.com/terrastruct/d2/issues/19
name: "font_sizes_containers_large",
script: `
ninety nine: {
style.font-size: 99
sixty four: {
style.font-size: 64
thirty two:{
style.font-size: 32
sixteen: {
style.font-size: 16
eight: {
style.font-size: 8
}
}
}
}
}
`,
},
}