func (_this *CSSNumericType) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Length
	out.Set("length", value0)
	value1 := _this.Angle
	out.Set("angle", value1)
	value2 := _this.Time
	out.Set("time", value2)
	value3 := _this.Frequency
	out.Set("frequency", value3)
	value4 := _this.Resolution
	out.Set("resolution", value4)
	value5 := _this.Flex
	out.Set("flex", value5)
	value6 := _this.Percent
	out.Set("percent", value6)
	value7 := _this.PercentHint.JSValue()
	out.Set("percentHint", value7)
	return out
}
JSValue is allocating a new javasript object and copy
all values
package typedom
import "syscall/js"
import (
	"github.com/gowebapi/webapi/dom/geometry"
)
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 CSSMathOperator int
const (
	SumCSSMathOperator CSSMathOperator = iota
	ProductCSSMathOperator
	NegateCSSMathOperator
	InvertCSSMathOperator
	MinCSSMathOperator
	MaxCSSMathOperator
	ClampCSSMathOperator
)
var cSSMathOperatorToWasmTable = []string{
	"sum", "product", "negate", "invert", "min", "max", "clamp",
}
var cSSMathOperatorFromWasmTable = map[string]CSSMathOperator{
	"sum": SumCSSMathOperator, "product": ProductCSSMathOperator, "negate": NegateCSSMathOperator, "invert": InvertCSSMathOperator, "min": MinCSSMathOperator, "max": MaxCSSMathOperator, "clamp": ClampCSSMathOperator,
}
func (this *CSSMathOperator) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this CSSMathOperator) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(cSSMathOperatorToWasmTable) {
		return cSSMathOperatorToWasmTable[idx]
	}
	panic("unknown input value")
}
func CSSMathOperatorFromJS(value js.Value) CSSMathOperator {
	key := value.String()
	conv, ok := cSSMathOperatorFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type CSSNumericBaseType int
const (
	LengthCSSNumericBaseType CSSNumericBaseType = iota
	AngleCSSNumericBaseType
	TimeCSSNumericBaseType
	FrequencyCSSNumericBaseType
	ResolutionCSSNumericBaseType
	FlexCSSNumericBaseType
	PercentCSSNumericBaseType
)
var cSSNumericBaseTypeToWasmTable = []string{
	"length", "angle", "time", "frequency", "resolution", "flex", "percent",
}
var cSSNumericBaseTypeFromWasmTable = map[string]CSSNumericBaseType{
	"length": LengthCSSNumericBaseType, "angle": AngleCSSNumericBaseType, "time": TimeCSSNumericBaseType, "frequency": FrequencyCSSNumericBaseType, "resolution": ResolutionCSSNumericBaseType, "flex": FlexCSSNumericBaseType, "percent": PercentCSSNumericBaseType,
}
func (this *CSSNumericBaseType) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this CSSNumericBaseType) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(cSSNumericBaseTypeToWasmTable) {
		return cSSNumericBaseTypeToWasmTable[idx]
	}
	panic("unknown input value")
}
func CSSNumericBaseTypeFromJS(value js.Value) CSSNumericBaseType {
	key := value.String()
	conv, ok := cSSNumericBaseTypeFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type CSSNumericArrayForEachFunc func(currentValue *CSSNumericValue, currentIndex int, listObj *CSSNumericArray)
type CSSNumericArrayForEach js.Func
func CSSNumericArrayForEachToJS(callback CSSNumericArrayForEachFunc) *CSSNumericArrayForEach {
	if callback == nil {
		return nil
	}
	ret := CSSNumericArrayForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *CSSNumericValue  
			_p1 int               
			_p2 *CSSNumericArray  
		)
		_p0 = CSSNumericValueFromJS(args[0])
		_p1 = (args[1]).Int()
		_p2 = CSSNumericArrayFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func CSSNumericArrayForEachFromJS(_value js.Value) CSSNumericArrayForEachFunc {
	return func(currentValue *CSSNumericValue, currentIndex int, listObj *CSSNumericArray) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := currentValue.JSValue()
		_args[0] = _p0
		_end++
		_p1 := currentIndex
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type CSSTransformValueForEachFunc func(currentValue *CSSTransformComponent, currentIndex int, listObj *CSSTransformValue)
type CSSTransformValueForEach js.Func
func CSSTransformValueForEachToJS(callback CSSTransformValueForEachFunc) *CSSTransformValueForEach {
	if callback == nil {
		return nil
	}
	ret := CSSTransformValueForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *CSSTransformComponent  
			_p1 int                     
			_p2 *CSSTransformValue      
		)
		_p0 = CSSTransformComponentFromJS(args[0])
		_p1 = (args[1]).Int()
		_p2 = CSSTransformValueFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func CSSTransformValueForEachFromJS(_value js.Value) CSSTransformValueForEachFunc {
	return func(currentValue *CSSTransformComponent, currentIndex int, listObj *CSSTransformValue) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := currentValue.JSValue()
		_args[0] = _p0
		_end++
		_p1 := currentIndex
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type CSSUnparsedValueForEachFunc func(currentValue *Union, currentIndex int, listObj *CSSUnparsedValue)
type CSSUnparsedValueForEach js.Func
func CSSUnparsedValueForEachToJS(callback CSSUnparsedValueForEachFunc) *CSSUnparsedValueForEach {
	if callback == nil {
		return nil
	}
	ret := CSSUnparsedValueForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *Union             
			_p1 int                
			_p2 *CSSUnparsedValue  
		)
		_p0 = UnionFromJS(args[0])
		_p1 = (args[1]).Int()
		_p2 = CSSUnparsedValueFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func CSSUnparsedValueForEachFromJS(_value js.Value) CSSUnparsedValueForEachFunc {
	return func(currentValue *Union, currentIndex int, listObj *CSSUnparsedValue) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := currentValue.JSValue()
		_args[0] = _p0
		_end++
		_p1 := currentIndex
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type StylePropertyMapReadOnlyForEachFunc func(currentValue []*CSSStyleValue, currentIndex int, listObj *StylePropertyMapReadOnly)
type StylePropertyMapReadOnlyForEach js.Func
func StylePropertyMapReadOnlyForEachToJS(callback StylePropertyMapReadOnlyForEachFunc) *StylePropertyMapReadOnlyForEach {
	if callback == nil {
		return nil
	}
	ret := StylePropertyMapReadOnlyForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 []*CSSStyleValue           
			_p1 int                        
			_p2 *StylePropertyMapReadOnly  
		)
		__length0 := args[0].Length()
		__array0 := make([]*CSSStyleValue, __length0, __length0)
		for __idx0 := 0; __idx0 < __length0; __idx0++ {
			var __seq_out0 *CSSStyleValue
			__seq_in0 := args[0].Index(__idx0)
			__seq_out0 = CSSStyleValueFromJS(__seq_in0)
			__array0[__idx0] = __seq_out0
		}
		_p0 = __array0
		_p1 = (args[1]).Int()
		_p2 = StylePropertyMapReadOnlyFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func StylePropertyMapReadOnlyForEachFromJS(_value js.Value) StylePropertyMapReadOnlyForEachFunc {
	return func(currentValue []*CSSStyleValue, currentIndex int, listObj *StylePropertyMapReadOnly) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := js.Global().Get("Array").New(len(currentValue))
		for __idx0, __seq_in0 := range currentValue {
			__seq_out0 := __seq_in0.JSValue()
			_p0.SetIndex(__idx0, __seq_out0)
		}
		_args[0] = _p0
		_end++
		_p1 := currentIndex
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type CSSMatrixComponentOptions struct {
	Is2D bool
}
func (_this *CSSMatrixComponentOptions) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Is2D
	out.Set("is2D", value0)
	return out
}
func CSSMatrixComponentOptionsFromJS(value js.Wrapper) *CSSMatrixComponentOptions {
	input := value.JSValue()
	var out CSSMatrixComponentOptions
	var (
		value0 bool  
	)
	value0 = (input.Get("is2D")).Bool()
	out.Is2D = value0
	return &out
}
type CSSNumericArrayEntryIteratorValue struct {
	Value []js.Value
	Done  bool
}
func (_this *CSSNumericArrayEntryIteratorValue) 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
		value0.SetIndex(__idx0, __seq_out0)
	}
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func CSSNumericArrayEntryIteratorValueFromJS(value js.Wrapper) *CSSNumericArrayEntryIteratorValue {
	input := value.JSValue()
	var out CSSNumericArrayEntryIteratorValue
	var (
		value0 []js.Value  
		value1 bool        
	)
	__length0 := input.Get("value").Length()
	__array0 := make([]js.Value, __length0, __length0)
	for __idx0 := 0; __idx0 < __length0; __idx0++ {
		var __seq_out0 js.Value
		__seq_in0 := input.Get("value").Index(__idx0)
		__seq_out0 = __seq_in0
		__array0[__idx0] = __seq_out0
	}
	value0 = __array0
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type CSSNumericArrayKeyIteratorValue struct {
	Value uint
	Done  bool
}
func (_this *CSSNumericArrayKeyIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Value
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func CSSNumericArrayKeyIteratorValueFromJS(value js.Wrapper) *CSSNumericArrayKeyIteratorValue {
	input := value.JSValue()
	var out CSSNumericArrayKeyIteratorValue
	var (
		value0 uint  
		value1 bool  
	)
	value0 = (uint)((input.Get("value")).Int())
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type CSSNumericArrayValueIteratorValue struct {
	Value *CSSNumericValue
	Done  bool
}
func (_this *CSSNumericArrayValueIteratorValue) 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 CSSNumericArrayValueIteratorValueFromJS(value js.Wrapper) *CSSNumericArrayValueIteratorValue {
	input := value.JSValue()
	var out CSSNumericArrayValueIteratorValue
	var (
		value0 *CSSNumericValue  
		value1 bool              
	)
	value0 = CSSNumericValueFromJS(input.Get("value"))
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type CSSNumericType struct {
	Length      int
	Angle       int
	Time        int
	Frequency   int
	Resolution  int
	Flex        int
	Percent     int
	PercentHint CSSNumericBaseType
}