-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaspectratio.go
89 lines (72 loc) · 1.45 KB
/
aspectratio.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package carbon
import (
"io"
)
type aspectRatio struct {
children []Component
attrs []Attr
ratio string
}
var _ Component = (*aspectRatio)(nil)
func AspectRatio(cs ...Component) *aspectRatio {
return &aspectRatio{
children: cs,
attrs: nil,
ratio: "2x1",
}
}
func (a *aspectRatio) Attr(name string, value string) *aspectRatio {
a.attrs = append(a.attrs, Attr{name, value})
return a
}
func (a *aspectRatio) Set2x1() *aspectRatio {
a.ratio = "2x1"
return a
}
func (a *aspectRatio) Set2x3() *aspectRatio {
a.ratio = "2x3"
return a
}
func (a *aspectRatio) Set16x9() *aspectRatio {
a.ratio = "16x9"
return a
}
func (a *aspectRatio) Set4x3() *aspectRatio {
a.ratio = "4x3"
return a
}
func (a *aspectRatio) Set1x1() *aspectRatio {
a.ratio = "1x1"
return a
}
func (a *aspectRatio) Set3x4() *aspectRatio {
a.ratio = "3x4"
return a
}
func (a *aspectRatio) Set3x2() *aspectRatio {
a.ratio = "3x2"
return a
}
func (a *aspectRatio) Set9x16() *aspectRatio {
a.ratio = "9x16"
return a
}
func (a *aspectRatio) Set1x2() *aspectRatio {
a.ratio = "1x2"
return a
}
func (a *aspectRatio) Render(w io.Writer) {
w.Write([]byte(`<div class="bx--aspect-ratio bx--aspect-ratio--`))
io.WriteString(w, a.ratio)
w.Write([]byte(`"`))
renderAttrs(w, a.attrs)
w.Write([]byte(`>`))
{
w.Write([]byte(`<div class="bx--aspect-ratio--object">`))
for _, c := range a.children {
c.Render(w)
}
w.Write([]byte(`</div>`))
}
w.Write([]byte(`</div>`))
}