3.1.0
npm install @thebespokepixel/es-tinycolor
import {tinycolor} from '@thebespokepixel/es-tinycolor'
const color = tinycolor("red")
color.toRgbString() // "rgba(255, 0, 0, 1)"
Call tinycolor(input)
or new tinycolor(input)
, and you will have an object with the following properties. See Accepted String Input and Accepted Object Input below for more information about what is accepted.
The string parsing is very permissive. It is meant to make typing a color as input as easy as possible. All commas, percentages, parenthesis are optional, and most input allow either 0-1, 0%-100%, or 0-n (where n is either 100, 255, or 360 depending on the value).
HSL and HSV both require either 0%-100% or 0-1 for the S
/L
/V
properties. The H
(hue) can have values between 0%-100% or 0-360.
RGB input requires either 0-255 or 0%-100%.
If you call tinycolor.fromRatio
, RGB and Hue input can also accept 0-1.
Here are some examples of string input:
tinycolor("#000");
tinycolor("000");
tinycolor("#369C");
tinycolor("369C");
tinycolor("#f0f0f6");
tinycolor("f0f0f6");
tinycolor("#f0f0f688");
tinycolor("f0f0f688");
tinycolor("rgb (255, 0, 0)");
tinycolor("rgb 255 0 0");
tinycolor("rgba (255, 0, 0, .5)");
tinycolor({ r: 255, g: 0, b: 0 });
tinycolor.fromRatio({ r: 1, g: 0, b: 0 });
tinycolor.fromRatio({ r: .5, g: .5, b: .5 });
tinycolor("hsl(0, 100%, 50%)");
tinycolor("hsla(0, 100%, 50%, .5)");
tinycolor("hsl(0, 100%, 50%)");
tinycolor("hsl 0 1.0 0.5");
tinycolor({ h: 0, s: 1, l: .5 });
tinycolor.fromRatio({ h: 1, s: 0, l: 0 });
tinycolor.fromRatio({ h: .5, s: .5, l: .5 });
tinycolor("hsv(0, 100%, 100%)");
tinycolor("hsva(0, 100%, 100%, .5)");
tinycolor("hsv (0 100% 100%)");
tinycolor("hsv 0 1 1");
tinycolor({ h: 0, s: 100, v: 100 });
tinycolor.fromRatio({ h: 1, s: 0, v: 0 });
tinycolor.fromRatio({ h: .5, s: .5, v: .5 });
tinycolor("RED");
tinycolor("blanchedalmond");
tinycolor("darkblue");
If you are calling this from code, you may want to use object input. Here are some examples of the different types of accepted object inputs:
{ r: 255, g: 0, b: 0 }
{ r: 255, g: 0, b: 0, a: .5 }
{ h: 0, s: 100, l: 50 }
{ h: 0, s: 100, v: 100 }
Returns the format used to create the tinycolor instance
var color = tinycolor("red");
color.getFormat(); // "name"
color = tinycolor({r:255, g:255, b:255});
color.getFormat(); // "rgb"
Returns the input passed into the constructer used to create the tinycolor instance
var color = tinycolor("red");
color.getOriginalInput(); // "red"
color = tinycolor({r:255, g:255, b:255});
color.getOriginalInput(); // "{r: 255, g: 255, b: 255}"
Return a boolean indicating whether the color was successfully parsed. Note: if the color is not valid then it will act like black
when being used with other methods.
var color1 = tinycolor("red");
color1.isValid(); // true
color1.toHexString(); // "#ff0000"
var color2 = tinycolor("not a color");
color2.isValid(); // false
color2.toString(); // "#000000"
Returns the perceived brightness of a color, from 0-255
, as defined by Web Content Accessibility Guidelines (Version 1.0).
var color1 = tinycolor("#fff");
color1.getBrightness(); // 255
var color2 = tinycolor("#000");
color2.getBrightness(); // 0
Return a boolean indicating whether the color's perceived brightness is light.
var color1 = tinycolor("#fff");
color1.isLight(); // true
var color2 = tinycolor("#000");
color2.isLight(); // false
Return a boolean indicating whether the color's perceived brightness is dark.
var color1 = tinycolor("#fff");
color1.isDark(); // false
var color2 = tinycolor("#000");
color2.isDark(); // true
Returns the perceived luminance of a color, from 0-1
as defined by Web Content Accessibility Guidelines (Version 2.0).
var color1 = tinycolor("#fff");
color1.getLuminance(); // 1
var color2 = tinycolor("#000");
color2.getLuminance(); // 0
Returns the alpha value of a color, from 0-1
.
var color1 = tinycolor("rgba(255, 0, 0, .5)");
color1.getAlpha(); // 0.5
var color2 = tinycolor("rgb(255, 0, 0)");
color2.getAlpha(); // 1
var color3 = tinycolor("transparent");
color3.getAlpha(); // 0
Sets the alpha value on a current color. Accepted range is in between 0-1
.
var color = tinycolor("red");
color.getAlpha(); // 1
color.setAlpha(.5);
color.getAlpha(); // .5
color.toRgbString(); // "rgba(255, 0, 0, .5)"
The following methods will return a property for the alpha
value, which can be ignored: toHsv
, toHsl
, toRgb
var color = tinycolor("red");
color.toHsv(); // { h: 0, s: 1, v: 1, a: 1 }
var color = tinycolor("red");
color.toHsvString(); // "hsv(0, 100%, 100%)"
color.setAlpha(0.5);
color.toHsvString(); // "hsva(0, 100%, 100%, 0.5)"
var color = tinycolor("red");
color.toHsl(); // { h: 0, s: 1, l: 0.5, a: 1 }
var color = tinycolor("red");
color.toHslString(); // "hsl(0, 100%, 50%)"
color.setAlpha(0.5);
color.toHslString(); // "hsla(0, 100%, 50%, 0.5)"
var color = tinycolor("red");
color.toHex(); // "ff0000"
var color = tinycolor("red");
color.toHexString(); // "#ff0000"
var color = tinycolor("red");
color.toHex8(); // "ff0000ff"
var color = tinycolor("red");
color.toHex8String(); // "#ff0000ff"
var color = tinycolor("red");
color.toRgb(); // { r: 255, g: 0, b: 0, a: 1 }
var color = tinycolor("red");
color.toRgbString(); // "rgb(255, 0, 0)"
color.setAlpha(0.5);
color.toRgbString(); // "rgba(255, 0, 0, 0.5)"
var color = tinycolor("red");
color.toPercentageRgb() // { r: "100%", g: "0%", b: "0%", a: 1 }
var color = tinycolor("red");
color.toPercentageRgbString(); // "rgb(100%, 0%, 0%)"
color.setAlpha(0.5);
color.toPercentageRgbString(); // "rgba(100%, 0%, 0%, 0.5)"
var color = tinycolor("red");
color.toName(); // "red"
var color = tinycolor("red");
color.toFilter(); // "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff0000,endColorstr=#ffff0000)"
Print to a string, depending on the input format. You can also override this by passing one of "rgb", "prgb", "hex6", "hex3", "hex8", "name", "hsl", "hsv"
into the function.
var color1 = tinycolor("red");
color1.toString(); // "red"
color1.toString("hsv"); // "hsv(0, 100%, 100%)"
var color2 = tinycolor("rgb(255, 0, 0)");
color2.toString(); // "rgb(255, 0, 0)"
color2.setAlpha(.5);
color2.toString(); // "rgba(255, 0, 0, 0.5)"
These methods manipulate the current color, and return it for chaining. For instance:
tinycolor("red").lighten().desaturate().toHexString() // "#f53d3d"
lighten: function(amount = 10) -> TinyColor
. Lighten the color a given amount, from 0 to 100. Providing 100 will always return white.
tinycolor("#f00").lighten().toString(); // "#ff3333"
tinycolor("#f00").lighten(100).toString(); // "#ffffff"
brighten: function(amount = 10) -> TinyColor
. Brighten the color a given amount, from 0 to 100.
tinycolor("#f00").brighten().toString(); // "#ff1919"
darken: function(amount = 10) -> TinyColor
. Darken the color a given amount, from 0 to 100. Providing 100 will always return black.
tinycolor("#f00").darken().toString(); // "#cc0000"
tinycolor("#f00").darken(100).toString(); // "#000000"
desaturate: function(amount = 10) -> TinyColor
. Desaturate the color a given amount, from 0 to 100. Providing 100 will is the same as calling greyscale
.
tinycolor("#f00").desaturate().toString(); // "#f20d0d"
tinycolor("#f00").desaturate(100).toString(); // "#808080"
saturate: function(amount = 10) -> TinyColor
. Saturate the color a given amount, from 0 to 100.
tinycolor("hsl(0, 10%, 50%)").saturate().toString(); // "hsl(0, 20%, 50%)"
invert: function() -> TinyColor
. Inverts the color, in RGB colorspace (as opposed to complement()
, which rotates the hue).
tinycolor("#f00").invert().toString(); // "#00ffff"
greyscale: function() -> TinyColor
. Completely desaturates a color into greyscale. Same as calling desaturate(100)
.
tinycolor("#f00").greyscale().toString(); // "#808080"
spin: function(amount = 0) -> TinyColor
. Spin the hue a given amount, from -360 to 360. Calling with 0, 360, or -360 will do nothing (since it sets the hue back to what it was before).
tinycolor("#f00").spin(180).toString(); // "#00ffff"
tinycolor("#f00").spin(-90).toString(); // "#7f00ff"
tinycolor("#f00").spin(90).toString(); // "#80ff00"
// spin(0) and spin(360) do nothing
tinycolor("#f00").spin(0).toString(); // "#ff0000"
tinycolor("#f00").spin(360).toString(); // "#ff0000"
Combination functions return an array of TinyColor objects unless otherwise noted.
analogous: function(, results = 6, slices = 30) -> array<TinyColor>
.
var colors = tinycolor("#f00").analogous();
colors.map(function(t) { return t.toHexString(); }); // [ "#ff0000", "#ff0066", "#ff0033", "#ff0000", "#ff3300", "#ff6600" ]
monochromatic: function(, results = 6) -> array<TinyColor>
.
var colors = tinycolor("#f00").monochromatic();
colors.map(function(t) { return t.toHexString(); }); // [ "#ff0000", "#2a0000", "#550000", "#800000", "#aa0000", "#d40000" ]
splitcomplement: function() -> array<TinyColor>
.
var colors = tinycolor("#f00").splitcomplement();
colors.map(function(t) { return t.toHexString(); }); // [ "#ff0000", "#ccff00", "#0066ff" ]
triad: function() -> array<TinyColor>
.
var colors = tinycolor("#f00").triad();
colors.map(function(t) { return t.toHexString(); }); // [ "#ff0000", "#00ff00", "#0000ff" ]
tetrad: function() -> array<TinyColor>
.
var colors = tinycolor("#f00").tetrad();
colors.map(function(t) { return t.toHexString(); }); // [ "#ff0000", "#80ff00", "#00ffff", "#7f00ff" ]
complement: function() -> TinyColor
.
tinycolor("#f00").complement().toHexString(); // "#00ffff"
tinycolor.equals(color1, color2) tinycolor.mix(color1, color2, amount = 50)
Returns a random color.
var color = tinycolor.random();
color.toRgb(); // "{r: 145, g: 40, b: 198, a: 1}"
TinyColor assesses readability based on the Web Content Accessibility Guidelines (Version 2.0).
readability: function(TinyColor, TinyColor) -> Object
.
Returns the contrast ratio between two colors.
tinycolor.readability("#000", "#000"); // 1
tinycolor.readability("#000", "#111"); // 1.1121078324840545
tinycolor.readability("#000", "#fff"); // 21
Use the values in your own calculations, or use one of the convenience functions below.
isReadable: function(TinyColor, TinyColor, Object) -> Boolean
. Ensure that foreground and background color combinations meet WCAG guidelines. Object
is optional, defaulting to {level: "AA",size: "small"}
. level
can be "AA"
or "AAA" and size
can be "small"
or "large"
.
Here are links to read more about the AA and AAA requirements.
tinycolor.isReadable("#000", "#111", {}); // false
tinycolor.isReadable("#ff0088", "#5c1a72",{level:"AA",size:"small"}); //false
tinycolor.isReadable("#ff0088", "#5c1a72",{level:"AA",size:"large"}), //true
mostReadable: function(TinyColor, [TinyColor, Tinycolor ...], Object) -> Boolean
.
Given a base color and a list of possible foreground or background colors for that base, returns the most readable color.
If none of the colors in the list is readable, mostReadable
will return the better of black or white if includeFallbackColors:true
.
tinycolor.mostReadable("#000", ["#f00", "#0f0", "#00f"]).toHexString(); // "#00ff00"
tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255"
tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff"
tinycolor.mostReadable("#ff0088", ["#2e0c3a"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString() // "#2e0c3a",
tinycolor.mostReadable("#ff0088", ["#2e0c3a"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString() // "#000000",
See index.html in the project for a demo.
clone: function() -> TinyColor
.
Instantiate a new TinyColor object with the same color. Any changes to the new one won't affect the old one.
var color1 = tinycolor("#F00");
var color2 = color1.clone();
color2.setAlpha(.5);
color1.toString(); // "#ff0000"
color2.toString(); // "rgba(255, 0, 0, 0.5)"
Are two TinyColor colours equivalent?
(TinyColor)
The first color
(TinyColor)
The second color
boolean
:
Equivalent or not?
Register a TinyColor extension
(string)
The plugin identifier
TinyColorExtension
:
The TinyColor extension
Create a new TinyColor from values from 0..1
TinyColor
:
A TinyColor instance
Mix a second colour into the first
(TinyColor)
The first color
(TinyColor)
The second color
(number)
The mix amount of the second color
TinyColor
:
A new, mixed TinyColor instance
How readable is the first color over the second color
(TinyColor)
The first color
(TinyColor)
The second color
number
:
The color contrast defined by (WCAG Version 2)
Ensure that foreground and background color combinations meet WCAG2 guidelines.
(TinyColor)
The first color
(TinyColor)
The second color
(boolean | number)
:
True if readable, False otherwise.
tinycolor.isReadable("#000", "#111") → false
tinycolor.isReadable("#000", "#111", {level:"AA",size:"large"}) → false
Given a base color and a list of possible foreground or background colors for that base, returns the most readable color.
Optionally returns Black or White if the most readable color is unreadable.
(TinyColor)
The base color
([TinyColor])
An array of TinyColors
TinyColor
:
A TinyColor instance of the msot readable color.
tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255"
tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff"
tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3"
tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff"
Named Colours (as per CSS color names)
Create a new TinyColor instance
(object
= {}
)
Options object (see below)
TinyColor
:
An instance representing the color
Determines if dark.
boolean
:
True if dark, False otherwise.
Determines if light.
boolean
:
True if light, False otherwise.
Determines if valid.
boolean
:
True if valid, False otherwise.
Gets the original input.
(string | object)
:
The original input.
Gets the format.
string
:
The format.
Gets the alpha.
number
:
The alpha.
Gets the brightness.
number
:
The brightness.
Gets the luminance.
number
:
The luminance.
Return the current color as a string.
(string)
The color format
string
:
The current color, as a string.
Returns a name representation of the object.
string
:
The name of the colour.
Returns a rgb representation of the object.
object
:
Rgb representation of the object.
Returns a rgb string representation of the object.
string
:
Rgb string representation of the object.
Returns a rgb array representation of the object.
[number]
:
Rgb array representation of the object.
Returns a percentage rgb representation of the object.
object
:
Percentage rgb representation of the object.
Returns a percentage rgb string representation of the object.
string
:
Percentage rgb string representation of the object.
Return the hex string of a color, as pure hexadecimal.
(boolean)
Allow 3 digit RGB strings
string
:
The Hex string of the color.
Return the hex string of a color, with a leading #
(boolean)
Allow 3 digit RGB strings
string
:
The Hex string of the color.
Return the hex string of a color with aplha, as pure hexadecimal.
(boolean)
Allow 4 digit RGBA strings
string
:
The Hex string of the color.
Return the hex string of a color with aplha, with a leading #
(any)
(boolean)
Allow 4 digit RGBA strings
string
:
The Hex string of the color.
Returns a HSV object representation of the object.
object
:
HSV(A) representation of the color.
Returns a HSV string representation of the object.
string
:
hsv(h, s, v[, a]) representation of the color.
Returns a HSL object representation of the object.
object
:
HSL(A) representation of the color.
Returns a HSL string representation of the object.
string
:
hsl(h, s, l[, a]) representation of the color.
Sets the alpha.
(number)
The alpha value (0 - 1.0)
TinyColor
:
The current colour with the set alpha.
Creates a new instance of the object with same properties than original.
TinyColor
:
Copy of this object.
Create a new ID
number
:
Incremented ID counter
Register a TinyColor extension
(string)
The plugin identifier
TinyColorExtension
:
The TinyColor extension
Are two TinyColor colours equivalent?
(TinyColor)
The first color
(TinyColor)
The second color
boolean
:
Equivalent or not?
Create a new TinyColor from values from 0..1
TinyColor
:
The tiny color.
Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
(TinyColor)
The first color
(TinyColor)
The second color
number
:
The color contrast defined by (WCAG Version 2)
Ensure that foreground and background color combinations meet WCAG2 guidelines.
(TinyColor)
The first color
(TinyColor)
The second color
(boolean | number)
:
True if readable, False otherwise.
Tinycolor.isReadable("#000", "#111") → false
Tinycolor.isReadable("#000", "#111", {level:"AA",size:"large"}) → false
Given a base color and a list of possible foreground or background colors for that base, returns the most readable color.
Optionally returns Black or White if the most readable color is unreadable.
(TinyColor)
The base color
([TinyColor])
An array of TinyColors
TinyColor
:
A TinyColor instance of the msot readable color.
Tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"], {includeFallbackColors:false}).toHexString(); // "#112255"
Tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"], {includeFallbackColors:true}).toHexString(); // "#ffffff"
Tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true, level:"AAA", size:"large"}).toHexString(); // "#faf3f3"
Tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true, level:"AAA", size:"small"}).toHexString(); // "#ffffff"
Mix a second colour into the first
(TinyColor)
The first color
(TinyColor)
The second color
(number)
The mix amount of the second color
TinyColor
:
A new, mixed TinyColor instance
Converts a decimal to a hex value
(number)
Decimal input value
string
:
Hexadecimal string
Converts a base-16 hex value into a base-10 integer
(any)
(string)
Hexadecimal input value
number
:
Integer value
Converts a hex value to a decimal
(string)
Hexadecimal input value
number
:
Decimal value
Replace a decimal with it's percentage value
(number)
Decimal input value
string
:
Percentage string
Handle conversion of internal precise values to exportable values. Should be able to accept a tinycolour instance 'this' value.
(object)
{ _r, _g, _b, _a } with _r, _g, _b in [0.0, 255.0] and _a in [0, 1]
object
:
{ r, g, b } in [0, 255]
Handle conversion of internal precise values to exportable values, maintaining deep precision. Should be able to accept a tinycolour instance 'this' value.
(object)
{ _r, _g, _b, _a } with _r, _g, _b in [0.0, 255.0] and _a in [0, 1]
object
:
{ r, g, b, a } in [0.0, 255.0]
Handle bounds / percentage checking to conform to CSS color spec
(object)
{ r, g, b, a } in [0, 255] or [0, 1]
object
:
{ r, g, b } in [0, 255]
Convert RGBA to hexadecimal
Converts an RGBA color plus alpha transparency to hex Assumes r, g, b are contained in the set [0, 255] and a in [0, 1]. Returns a 4 or 8 character rgba hex
string
:
The hex output.
Convert RGB to hexadecimal
Converts an RGBA color plus alpha transparency to hex Assumes r, g, b are contained in the set [0, 255]. Returns a 3 or 6 character rgba hex
string
:
The hex output.
Calculates the brightness. http://www.w3.org/TR/AERT#color-contrast
(object)
The rgb
number
:
The brightness.
Calculates the luminance. http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
(TinyColor)
The rgb color
number
:
The luminance.
Calculates the mix of two colors.
(TinyColor)
The first color
(TinyColor)
The second color
(number)
The amount to mix
TinyColor
:
The mixed color.
Return valid WCAG2 parameters for isReadable.
object
:
sanitized parameters
Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
(TinyColor)
The first color
(TinyColor)
The second color
number
:
The color contrast defined by (WCAG Version 2)
Ensure that foreground and background color combinations meet WCAG2 guidelines.
(TinyColor)
The first color
(TinyColor)
The second color
(boolean | number)
:
True if readable, False otherwise.
Tinycolor.isReadable("#000", "#111") → false
Tinycolor.isReadable("#000", "#111", {level:"AA",size:"large"}) → false
Given a base color and a list of possible foreground or background colors for that base, returns the most readable color.
Optionally returns Black or White if the most readable color is unreadable.
(TinyColor)
The base color
([TinyColor])
An array of TinyColors
TinyColor
:
A TinyColor instance of the msot readable color.
Tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"], {includeFallbackColors:false}).toHexString(); // "#112255"
Tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"], {includeFallbackColors:true}).toHexString(); // "#ffffff"
Tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true, level:"AAA", size:"large"}).toHexString(); // "#faf3f3"
Tinycolor.mostReadable("#a8015a", ["#faf3f3"], {includeFallbackColors:true, level:"AAA", size:"small"}).toHexString(); // "#ffffff"
Find the complementary color.
(TinyColor)
The color
TinyColor
:
The new complementary Tinycolor.
Find the color triad colors.
(TinyColor)
The color
[TinyColor]
:
An array of 3 triad TinyColors.
Find the color tetrad colors.
(TinyColor)
The color
[TinyColor]
:
An array of 4 tetrad TinyColors.
Find the split complementary colors.
(TinyColor)
The color
[TinyColor]
:
An array of 3 split complementary TinyColors.
Find the analogous colors.
(TinyColor)
The color
(any
= 6
)
(any
= 30
)
[TinyColor]
:
The new analogous Tinycolors.
Find the monochromatic color.
(TinyColor)
The color
(any
= 6
)
TinyColor
:
The new monochromatic Tinycolor.
Apply a modification conditionally
(Function)
The modification function to apply
(arguments)
Arguments passed to specified function
TinyColor
:
The modified color
Invert Color
(TinyColor)
The color to invert
TinyColor
:
The inverted color
Desaturate Color
(TinyColor)
The color to modify
(Number)
The amount to desaturate <= 100
TinyColor
:
The modified color
Saturate color
(TinyColor)
The color to modify
(Number)
The amount to saturate <= 100
TinyColor
:
The modified color
Remove all chroma, leaving luminence
(TinyColor)
The color to modify
TinyColor
:
The modified color
Lighten a color
(TinyColor)
The color to modify
(Number)
The amount to ligten by <= 100
TinyColor
:
The modified color
Brighten a color
(TinyColor)
The color to modify
(Number)
The amount to brighten by <= 100
TinyColor
:
The modified color
Darken a color
(TinyColor)
The color to modify
(Number)
The amount to brighten by <= 100
TinyColor
:
The modified color
Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. Values outside of this range will be wrapped into this range.
(TinyColor)
The color to modify
(Number)
Degrees to rotate hue by
TinyColor
:
The modified color
Permissive string parsing. Take in a number of formats, and output an object based on detected format.
Try to match string input using regular expressions. Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] Just return an object and let the conversion functions handle that. This way the result will be the same whether the tinycolor is initialized with string or object.
(string)
The color
object
:
Returns
{ r, g, b }
or
{ r, g, b, a }