-
Notifications
You must be signed in to change notification settings - Fork 0
/
embeds.go
113 lines (89 loc) · 1.97 KB
/
embeds.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package forms
import (
"html/template"
)
type Template string
func (t Template) CurrentTemplate() string {
return string(t)
}
type Header struct {
RenderableImpl[Header]
Template
TemplateStyle
TagOpts
Text string
Level int
}
func (h *Header) DefaultTemplate() string {
switch h.Level {
case 0:
return "embed-header"
case 1:
return "embed-subheader"
case 2:
return "embed-subsubheader"
default:
return "embed-subsubsubheader"
}
}
func (Header) Finalize(state *State) {}
func NewHeader(title string) *Header { return &Header{Text: title, Level: 0} }
func NewSubheader(title string) *Header { return &Header{Text: title, Level: 1} }
func NewSubsubheader(title string) *Header { return &Header{Text: title, Level: 2} }
type Image struct {
RenderableImpl[Image]
Template
TemplateStyle
TagOpts
Src string
}
func (*Image) DefaultTemplate() string { return "embed-image" }
func (*Image) Finalize(state *State) {}
type Text struct {
RenderableImpl[Text]
Template
TemplateStyle
TagOpts
Text string
Update func(el *Text)
}
func (Text) DefaultTemplate() string { return "embed-text" }
func (Text) Finalize(state *State) {}
func (el *Text) TriggerUpdate() {
if el.Update != nil {
el.Update(el)
}
}
type HTMLFragment struct {
RenderableImpl[HTMLFragment]
Template
TemplateStyle
TagOpts
Text template.HTML
}
func (HTMLFragment) DefaultTemplate() string { return "embed-text" }
func (HTMLFragment) Finalize(state *State) {}
type Link struct {
RenderableImpl[Link]
Template
TemplateStyle
TagOpts
Link string
Text string
}
func (Link) DefaultTemplate() string { return "embed-link-a" }
func (Link) Finalize(state *State) {}
type FreeButton struct {
RenderableImpl[FreeButton]
Template
TemplateStyle
Field
TagOpts
FullAction string
Value string
Title string
}
func (FreeButton) DefaultTemplate() string { return "control-button" }
func (c *FreeButton) Finalize(state *State) {}
func (c *FreeButton) EnumBindings(f func(AnyBinding)) {
}