diff --git a/lib/color/color.go b/lib/color/color.go index 7417a2b9d..95a15520a 100644 --- a/lib/color/color.go +++ b/lib/color/color.go @@ -512,7 +512,19 @@ var NamedColors = []string{ var ColorHexRegex = regexp.MustCompile(`^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$`) func ValidColor(color string) bool { - if !go2.Contains(NamedColors, strings.ToLower(color)) && !ColorHexRegex.MatchString(color) && !IsGradient(color) { + + if IsGradient(color) { + gradient, err := ParseGradient(color) + for _, colorStop := range gradient.ColorStops { + _, err = csscolorparser.Parse(colorStop.Color) + if err != nil { + break + } + } + return err == nil + } + + if !go2.Contains(NamedColors, strings.ToLower(color)) && !ColorHexRegex.MatchString(color) { return false } diff --git a/lib/color/gradient.go b/lib/color/gradient.go index 7aae4d0f4..51dbde637 100644 --- a/lib/color/gradient.go +++ b/lib/color/gradient.go @@ -9,8 +9,6 @@ import ( "regexp" "strconv" "strings" - - "github.com/mazznoer/csscolorparser" ) type Gradient struct { @@ -243,15 +241,10 @@ func UniqueGradientID(cssGradient string) string { return "grad-" + hash } +var GradientRegex = regexp.MustCompile(`^(linear|radial)-gradient\((.+)\)$`) + func IsGradient(color string) bool { - gradient, err := ParseGradient(color) - for _, colorStop := range gradient.ColorStops { - _, err = csscolorparser.Parse(colorStop.Color) - if err != nil { - break - } - } - return err == nil + return GradientRegex.MatchString(color) } var URLGradientID = regexp.MustCompile(`^url\('#grad-[a-f0-9]{40}'\)$`)