-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdom.go
More file actions
85 lines (67 loc) · 1.14 KB
/
dom.go
File metadata and controls
85 lines (67 loc) · 1.14 KB
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
package dom
import (
"github.com/gopherjs/gopherjs/js"
)
var (
document Document
driver Driver
NewEventHandler func(EventHandler) interface{}
)
func SetDomDriver(drv Driver) {
driver = drv
}
type EventHandler func(Event)
type Event interface {
PreventDefault()
StopPropagation()
JS() *js.Object
}
func GetDocument() Document {
if document == nil {
panic(" document has not been set.")
}
return document
}
func CreateNode(native interface{}) Node {
return driver.CreateNode(native)
}
type Document interface {
Title() string
SetTitle(title string)
Node
}
func SetDocument(doc Document) {
document = doc
}
type NodeType int
const (
NopNode NodeType = iota
ElementNode
TextNode
)
type Node interface {
Type() NodeType
Find(query string) []Node
Data() string
Children() []Node
SetAttr(string, interface{})
SetProp(string, interface{})
RemoveAttr(string)
Clear()
JS() *js.Object
SetClass(string, bool)
}
type Driver interface {
CreateNode(interface{}) Node
}
type FormEl interface {
Node
IsValid() bool
}
type InputEl interface {
Node
Value() string
SetValue(string)
Checked() bool
SetChecked(bool)
}