func FontFaceSetValueIteratorValueFromJS(value js.Wrapper) *FontFaceSetValueIteratorValue {
	input := value.JSValue()
	var out FontFaceSetValueIteratorValue
	var (
		value0 *FontFace  
		value1 bool       
	)
	value0 = FontFaceFromJS(input.Get("value"))
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
FontFaceSetValueIteratorValueFromJS is allocating a new
FontFaceSetValueIteratorValue object and copy all values from
input javascript object
package loading
import js "github.com/gowebapi/webapi/core/js"
import (
	"github.com/gowebapi/webapi/dom/domcore"
	"github.com/gowebapi/webapi/javascript"
)
func unused(value interface{}) {
}
type Union struct {
	Value js.Value
}
func (u *Union) JSValue() js.Value {
	return u.Value
}
func UnionFromJS(value js.Value) *Union {
	return &Union{Value: value}
}
type FontFaceLoadStatus int
const (
	UnloadedFontFaceLoadStatus FontFaceLoadStatus = iota
	LoadingFontFaceLoadStatus
	LoadedFontFaceLoadStatus
	ErrorFontFaceLoadStatus
)
var fontFaceLoadStatusToWasmTable = []string{
	"unloaded", "loading", "loaded", "error",
}
var fontFaceLoadStatusFromWasmTable = map[string]FontFaceLoadStatus{
	"unloaded": UnloadedFontFaceLoadStatus, "loading": LoadingFontFaceLoadStatus, "loaded": LoadedFontFaceLoadStatus, "error": ErrorFontFaceLoadStatus,
}
func (this *FontFaceLoadStatus) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this FontFaceLoadStatus) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(fontFaceLoadStatusToWasmTable) {
		return fontFaceLoadStatusToWasmTable[idx]
	}
	panic("unknown input value")
}
func FontFaceLoadStatusFromJS(value js.Value) FontFaceLoadStatus {
	key := value.String()
	conv, ok := fontFaceLoadStatusFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type FontFaceSetLoadStatus int
const (
	LoadingFontFaceSetLoadStatus FontFaceSetLoadStatus = iota
	LoadedFontFaceSetLoadStatus
)
var fontFaceSetLoadStatusToWasmTable = []string{
	"loading", "loaded",
}
var fontFaceSetLoadStatusFromWasmTable = map[string]FontFaceSetLoadStatus{
	"loading": LoadingFontFaceSetLoadStatus, "loaded": LoadedFontFaceSetLoadStatus,
}
func (this *FontFaceSetLoadStatus) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this FontFaceSetLoadStatus) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(fontFaceSetLoadStatusToWasmTable) {
		return fontFaceSetLoadStatusToWasmTable[idx]
	}
	panic("unknown input value")
}
func FontFaceSetLoadStatusFromJS(value js.Value) FontFaceSetLoadStatus {
	key := value.String()
	conv, ok := fontFaceSetLoadStatusFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type FontFaceSetForEachFunc func(currentValue *FontFace, currentValueAgain *FontFace, listObj *FontFaceSet)
type FontFaceSetForEach js.Func
func FontFaceSetForEachToJS(callback FontFaceSetForEachFunc) *FontFaceSetForEach {
	if callback == nil {
		return nil
	}
	ret := FontFaceSetForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *FontFace     
			_p1 *FontFace     
			_p2 *FontFaceSet  
		)
		_p0 = FontFaceFromJS(args[0])
		_p1 = FontFaceFromJS(args[1])
		_p2 = FontFaceSetFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func FontFaceSetForEachFromJS(_value js.Value) FontFaceSetForEachFunc {
	return func(currentValue *FontFace, currentValueAgain *FontFace, listObj *FontFaceSet) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := currentValue.JSValue()
		_args[0] = _p0
		_end++
		_p1 := currentValueAgain.JSValue()
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseFontFaceOnFulfilledFunc func(value *FontFace)
type PromiseFontFaceOnFulfilled js.Func
func PromiseFontFaceOnFulfilledToJS(callback PromiseFontFaceOnFulfilledFunc) *PromiseFontFaceOnFulfilled {
	if callback == nil {
		return nil
	}
	ret := PromiseFontFaceOnFulfilled(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *FontFace  
		)
		_p0 = FontFaceFromJS(args[0])
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseFontFaceOnFulfilledFromJS(_value js.Value) PromiseFontFaceOnFulfilledFunc {
	return func(value *FontFace) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := value.JSValue()
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseFontFaceOnRejectedFunc func(reason js.Value)
type PromiseFontFaceOnRejected js.Func
func PromiseFontFaceOnRejectedToJS(callback PromiseFontFaceOnRejectedFunc) *PromiseFontFaceOnRejected {
	if callback == nil {
		return nil
	}
	ret := PromiseFontFaceOnRejected(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 js.Value  
		)
		_p0 = args[0]
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseFontFaceOnRejectedFromJS(_value js.Value) PromiseFontFaceOnRejectedFunc {
	return func(reason js.Value) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := reason
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseSequenceFontFaceOnFulfilledFunc func(value []*FontFace)
type PromiseSequenceFontFaceOnFulfilled js.Func
func PromiseSequenceFontFaceOnFulfilledToJS(callback PromiseSequenceFontFaceOnFulfilledFunc) *PromiseSequenceFontFaceOnFulfilled {
	if callback == nil {
		return nil
	}
	ret := PromiseSequenceFontFaceOnFulfilled(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 []*FontFace  
		)
		__length0 := args[0].Length()
		__array0 := make([]*FontFace, __length0, __length0)
		for __idx0 := 0; __idx0 < __length0; __idx0++ {
			var __seq_out0 *FontFace
			__seq_in0 := args[0].Index(__idx0)
			__seq_out0 = FontFaceFromJS(__seq_in0)
			__array0[__idx0] = __seq_out0
		}
		_p0 = __array0
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseSequenceFontFaceOnFulfilledFromJS(_value js.Value) PromiseSequenceFontFaceOnFulfilledFunc {
	return func(value []*FontFace) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := js.Global().Get("Array").New(len(value))
		for __idx0, __seq_in0 := range value {
			__seq_out0 := __seq_in0.JSValue()
			_p0.SetIndex(__idx0, __seq_out0)
		}
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseSequenceFontFaceOnRejectedFunc func(reason js.Value)
type PromiseSequenceFontFaceOnRejected js.Func
func PromiseSequenceFontFaceOnRejectedToJS(callback PromiseSequenceFontFaceOnRejectedFunc) *PromiseSequenceFontFaceOnRejected {
	if callback == nil {
		return nil
	}
	ret := PromiseSequenceFontFaceOnRejected(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 js.Value  
		)
		_p0 = args[0]
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseSequenceFontFaceOnRejectedFromJS(_value js.Value) PromiseSequenceFontFaceOnRejectedFunc {
	return func(reason js.Value) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := reason
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type FontFaceDescriptors struct {
	Style             string
	Weight            string
	Stretch           string
	UnicodeRange      string
	Variant           string
	FeatureSettings   string
	VariationSettings string
	Display           string
}
func (_this *FontFaceDescriptors) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Style
	out.Set("style", value0)
	value1 := _this.Weight
	out.Set("weight", value1)
	value2 := _this.Stretch
	out.Set("stretch", value2)
	value3 := _this.UnicodeRange
	out.Set("unicodeRange", value3)
	value4 := _this.Variant
	out.Set("variant", value4)
	value5 := _this.FeatureSettings
	out.Set("featureSettings", value5)
	value6 := _this.VariationSettings
	out.Set("variationSettings", value6)
	value7 := _this.Display
	out.Set("display", value7)
	return out
}
func FontFaceDescriptorsFromJS(value js.Wrapper) *FontFaceDescriptors {
	input := value.JSValue()
	var out FontFaceDescriptors
	var (
		value0 string  
		value1 string  
		value2 string  
		value3 string  
		value4 string  
		value5 string  
		value6 string  
		value7 string  
	)
	value0 = (input.Get("style")).String()
	out.Style = value0
	value1 = (input.Get("weight")).String()
	out.Weight = value1
	value2 = (input.Get("stretch")).String()
	out.Stretch = value2
	value3 = (input.Get("unicodeRange")).String()
	out.UnicodeRange = value3
	value4 = (input.Get("variant")).String()
	out.Variant = value4
	value5 = (input.Get("featureSettings")).String()
	out.FeatureSettings = value5
	value6 = (input.Get("variationSettings")).String()
	out.VariationSettings = value6
	value7 = (input.Get("display")).String()
	out.Display = value7
	return &out
}
type FontFaceSetEntryIteratorValue struct {
	Value []*FontFace
	Done  bool
}
func (_this *FontFaceSetEntryIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := js.Global().Get("Array").New(len(_this.Value))
	for __idx0, __seq_in0 := range _this.Value {
		__seq_out0 := __seq_in0.JSValue()
		value0.SetIndex(__idx0, __seq_out0)
	}
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func FontFaceSetEntryIteratorValueFromJS(value js.Wrapper) *FontFaceSetEntryIteratorValue {
	input := value.JSValue()
	var out FontFaceSetEntryIteratorValue
	var (
		value0 []*FontFace  
		value1 bool         
	)
	__length0 := input.Get("value").Length()
	__array0 := make([]*FontFace, __length0, __length0)
	for __idx0 := 0; __idx0 < __length0; __idx0++ {
		var __seq_out0 *FontFace
		__seq_in0 := input.Get("value").Index(__idx0)
		__seq_out0 = FontFaceFromJS(__seq_in0)
		__array0[__idx0] = __seq_out0
	}
	value0 = __array0
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type FontFaceSetKeyIteratorValue struct {
	Value *FontFace
	Done  bool
}
func (_this *FontFaceSetKeyIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Value.JSValue()
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func FontFaceSetKeyIteratorValueFromJS(value js.Wrapper) *FontFaceSetKeyIteratorValue {
	input := value.JSValue()
	var out FontFaceSetKeyIteratorValue
	var (
		value0 *FontFace  
		value1 bool       
	)
	value0 = FontFaceFromJS(input.Get("value"))
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type FontFaceSetLoadEventInit struct {
	Bubbles    bool
	Cancelable bool
	Composed   bool
	Fontfaces  []*FontFace
}
func (_this *FontFaceSetLoadEventInit) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Bubbles
	out.Set("bubbles", value0)
	value1 := _this.Cancelable
	out.Set("cancelable", value1)
	value2 := _this.Composed
	out.Set("composed", value2)
	value3 := js.Global().Get("Array").New(len(_this.Fontfaces))
	for __idx3, __seq_in3 := range _this.Fontfaces {
		__seq_out3 := __seq_in3.JSValue()
		value3.SetIndex(__idx3, __seq_out3)
	}
	out.Set("fontfaces", value3)
	return out
}
func FontFaceSetLoadEventInitFromJS(value js.Wrapper) *FontFaceSetLoadEventInit {
	input := value.JSValue()
	var out FontFaceSetLoadEventInit
	var (
		value0 bool         
		value1 bool         
		value2 bool         
		value3 []*FontFace  
	)
	value0 = (input.Get("bubbles")).Bool()
	out.Bubbles = value0
	value1 = (input.Get("cancelable")).Bool()
	out.Cancelable = value1
	value2 = (input.Get("composed")).Bool()
	out.Composed = value2
	__length3 := input.Get("fontfaces").Length()
	__array3 := make([]*FontFace, __length3, __length3)
	for __idx3 := 0; __idx3 < __length3; __idx3++ {
		var __seq_out3 *FontFace
		__seq_in3 := input.Get("fontfaces").Index(__idx3)
		__seq_out3 = FontFaceFromJS(__seq_in3)
		__array3[__idx3] = __seq_out3
	}
	value3 = __array3
	out.Fontfaces = value3
	return &out
}
type FontFaceSetValueIteratorValue struct {
	Value *FontFace
	Done  bool
}
func (_this *FontFaceSetValueIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Value.JSValue()
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}