Web API package for use when compling Go to WASM
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

53 lines
1.6 KiB

package dom
import "syscall/js"
type JSValue interface {
JSValue() js.Value
}
type Value struct {
js.Value
}
func JSValueToValue(val js.Value) Value { return Value{Value: val} }
func (v Value) JSValue() js.Value { return v.Value }
func (v Value) Get(p string) Value { return JSValueToValue(v.Value.Get(p)) }
func (v Value) Index(i int) Value { return JSValueToValue(v.Value.Index(i)) }
func (v Value) Call(m string, args ...interface{}) Value {
for i, a := range args {
args[i] = GetJSValue(a)
}
return JSValueToValue(v.Value.Call(m, args...))
}
func (v Value) Invoke(args ...interface{}) Value {
for i, a := range args {
args[i] = GetJSValue(a)
}
return JSValueToValue(v.Value.Invoke(args...))
}
func (v Value) New(args ...interface{}) Value {
for i, a := range args {
args[i] = GetJSValue(a)
}
return JSValueToValue(v.Value.New(args...))
}
func GetJSValue(v interface{}) interface{} {
t, ok := v.(JSValue)
if ok {
return t.JSValue()
}
return v
}
func (v Value) IsUndefined() bool { return v.Type() == js.TypeUndefined }
func (v Value) IsNull() bool { return v.Type() == js.TypeNull }
func (v Value) IsNullOrUndefined() bool { return v.IsNull() || v.IsUndefined() }
func (v Value) IsBoolean() bool { return v.Type() == js.TypeBoolean }
func (v Value) IsNumber() bool { return v.Type() == js.TypeNumber }
func (v Value) IsString() bool { return v.Type() == js.TypeString }
func (v Value) IsSymbol() bool { return v.Type() == js.TypeSymbol }
func (v Value) IsObject() bool { return v.Type() == js.TypeObject }
func (v Value) IsFunction() bool { return v.Type() == js.TypeFunction }