diff --git a/package.json b/package.json index 2c0d8c06de4..8de88db5801 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "3d-view": "^2.0.0", "alpha-shape": "^1.0.0", "arraytools": "^1.0.0", + "color-rgba": "^1.0.4", "convex-hull": "^1.0.3", "country-regex": "^1.1.0", "d3": "^3.5.12", diff --git a/src/lib/gl_format_color.js b/src/lib/gl_format_color.js index ac3f08aeb3e..83052c63360 100644 --- a/src/lib/gl_format_color.js +++ b/src/lib/gl_format_color.js @@ -9,24 +9,27 @@ 'use strict'; -var tinycolor = require('tinycolor2'); var isNumeric = require('fast-isnumeric'); +var rgba = require('color-rgba'); var Colorscale = require('../components/colorscale'); var colorDflt = require('../components/color/attributes').defaultLine; -var str2RgbaArray = require('./str2rgbarray'); - +var colorDfltRgba = rgba(colorDflt); var opacityDflt = 1; function calculateColor(colorIn, opacityIn) { - var colorOut = str2RgbaArray(colorIn); + var colorOut = colorIn; colorOut[3] *= opacityIn; return colorOut; } function validateColor(colorIn) { - return tinycolor(colorIn).isValid() ? colorIn : colorDflt; + if(isNumeric(colorIn)) return colorDfltRgba; + + var colorOut = rgba(colorIn); + + return colorOut.length ? colorOut : colorDfltRgba; } function validateOpacity(opacityIn) { @@ -50,11 +53,13 @@ function formatColor(containerIn, opacityIn, len) { ) ); } - else sclFunc = validateColor; + else { + sclFunc = validateColor; + } if(isArrayColorIn) { getColor = function(c, i) { - return c[i] === undefined ? colorDflt : sclFunc(c[i]); + return c[i] === undefined ? colorDfltRgba : rgba(sclFunc(c[i])); }; } else getColor = validateColor; @@ -73,7 +78,7 @@ function formatColor(containerIn, opacityIn, len) { colorOut[i] = calculateColor(colori, opacityi); } } - else colorOut = calculateColor(colorIn, opacityIn); + else colorOut = calculateColor(rgba(colorIn), opacityIn); return colorOut; } diff --git a/src/lib/str2rgbarray.js b/src/lib/str2rgbarray.js index 0dd3c027fce..750bdea7ab8 100644 --- a/src/lib/str2rgbarray.js +++ b/src/lib/str2rgbarray.js @@ -9,12 +9,11 @@ 'use strict'; -var tinycolor = require('tinycolor2'); -var arrtools = require('arraytools'); +var rgba = require('color-rgba'); function str2RgbaArray(color) { - color = tinycolor(color); - return arrtools.str2RgbaArray(color.toRgbString()); + var colorOut = rgba(color); + return colorOut.length ? colorOut : [0, 0, 0, 1]; } module.exports = str2RgbaArray;