diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cd4af3..e48df6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ * Added "overflow", "arrow", "arrow-align", "arrow-size", "arrow-width", and "arrow-offset" properties * Added "@ruiArrowSize" and "@ruiArrowWidth" constants to the default theme * Added Transition, Transitions, and SetTransition functions to the ViewStyle interface -* Added GetOverflow, and GetTransitions functions +* Added GetOverflow, IsTimingFunctionValid, and GetTransitions functions * Changed GetTransition functions # v0.8.0 diff --git a/animation.go b/animation.go index b08af34..6b7fb63 100644 --- a/animation.go +++ b/animation.go @@ -493,37 +493,41 @@ func (animation *animationData) writeTransitionString(tag string, buffer *string func (animation *animationData) timingFunctionCSS(session Session) string { if timingFunction, ok := stringProperty(animation, TimingFunction, session); ok { - if timingFunction, ok = session.resolveConstants(timingFunction); ok && validateTimingFunction(timingFunction) { + if timingFunction, ok = session.resolveConstants(timingFunction); ok && IsTimingFunctionValid(timingFunction, session) { return timingFunction } } return ("ease") } -func validateTimingFunction(timingFunction string) bool { +// IsTimingFunctionValid returns "true" if the "timingFunction" argument is the valid timing function. +func IsTimingFunctionValid(timingFunction string, session Session) bool { switch timingFunction { case "", EaseTiming, EaseInTiming, EaseOutTiming, EaseInOutTiming, LinearTiming: return true } - size := len(timingFunction) - if size > 0 && timingFunction[size-1] == ')' { - if index := strings.IndexRune(timingFunction, '('); index > 0 { - args := timingFunction[index+1 : size-1] - switch timingFunction[:index] { - case "steps": - if _, err := strconv.Atoi(strings.Trim(args, " \t\n")); err == nil { - return true - } - - case "cubic-bezier": - if params := strings.Split(args, ","); len(params) == 4 { - for _, param := range params { - if _, err := strconv.ParseFloat(strings.Trim(param, " \t\n"), 64); err != nil { - return false - } + if timingFunc, ok := session.resolveConstants(timingFunction); ok { + timingFunction = timingFunc + size := len(timingFunction) + if size > 0 && timingFunction[size-1] == ')' { + if index := strings.IndexRune(timingFunction, '('); index > 0 { + args := timingFunction[index+1 : size-1] + switch timingFunction[:index] { + case "steps": + if _, err := strconv.Atoi(strings.Trim(args, " \t\n")); err == nil { + return true + } + + case "cubic-bezier": + if params := strings.Split(args, ","); len(params) == 4 { + for _, param := range params { + if _, err := strconv.ParseFloat(strings.Trim(param, " \t\n"), 64); err != nil { + return false + } + } + return true } - return true } } } diff --git a/app_styles.css b/app_styles.css index b85cfb8..cf66269 100644 --- a/app_styles.css +++ b/app_styles.css @@ -59,7 +59,6 @@ ul:focus { outline: none; } - .ruiRoot { position: absolute; top: 0px;