npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sms-color-helpers

v0.0.15

Published

some functions and extension for conversion between hex and rgb and rgba for typescript

Downloads

5

Readme

sms-color-helpers

This Project is a TS hex to rgb and rgba converter and vice versa.

The Project contains extension Method on the Array and String interfaces, global Functions and a RGBA class that can handle converting a string, a number array, a RGBA object or a Json or JS object that has color Properties (red,green,blue,alpha) to the others.

Install:

npm install sms-color-helpers --save

Usage:

//To use the RGBA Class:
import {RGBA} from 'sms-color-helpers';
//To only use the extensions:
import 'sms-color-helpers';

Code Examples:

let hexString = "#7d7a45"
console.log(hexString.hexToRGBAString());//will print rgba(125,122,69,1)
console.log(hexString.hexToRGBString());//will print rgb(125,122,69)

let rgbaString = "rgba(41,104,120,1)";
let rgbString = "rgb(41,104,120)";
let array1 = [41,104,120];
let array2 = [41,104,120,1];
let rgba1 = new RGBA(41,104,120);
let rgba2 = new RGBA(41,104,120,1);
let rgba3 = new RGBA(41,104,120,0);

console.log(rgbaString.rgbaToHex());//will print #296878
console.log(rgbString.rgbaToHex());//will print #296878
console.log(array1.toHexColor());//will print #296878
console.log(array2.toHexColor());//will print #296878
console.log(rgba1.hexColor);//will print #296878
console.log(rgba2.hexColor);//will print #296878
console.log(rgba3.hexColor);//will print #29687800


console.log(rgba1.hexColorWithAlpha);//will print #296878ff
console.log(rgba1.hexColorWithoutAlpha);//will print #296878

console.log(rgba3.hexColorWithAlpha);//will print #29687800
console.log(rgba3.hexColorWithoutAlpha);//will print #296878


console.log(rgba1.rgbNumberArray);//will print [41,104,120]
console.log(rgba1.rgbaNumberArray);//will print [41,104,120,1]

console.log(rgba1.toString() === rgbaString);//will print true
console.log(rgba1.toRGBString() === rgbString);//will print true
console.log(array1.toRGBAString() === rgbaString);//will print true
console.log(array1.toRGBString() === rgbString);//will print true

To instantiate a RGBA Class Object:

//THESE WILL ALL GIVE THE SAME OBJECT
let rgba1 = new RGBA();
let rgba2 = new RGBA(0);
let rgba3 = new RGBA(0,0);
let rgba4 = new RGBA(0,0,0);
let rgba5 = new RGBA(0,0,0,1);

let rgbaFromHex1 = RGBA.fromString("#");
let rgbaFromHex2 = RGBA.fromString("#0");
let rgbaFromHex3 = RGBA.fromString("#000");
let rgbaFromHex4 = RGBA.fromString("#000000");
let rgbaFromHex5 = RGBA.fromString("#00000011");

let rgbaFromRgbaString1 = RGBA.fromString("rgba(0)");
let rgbaFromRgbaString2 = RGBA.fromString("(0,)");
let rgbaFromRgbaString3 = RGBA.fromString("(0,0,0)");
let rgbaFromRgbaString4 = RGBA.fromString("0,0,0,1");
let rgbaFromRgbaString5 = RGBA.fromString("rgb(0,0,0)");

let rgbaFromColorObject1 = RGBA.fromObject({red:0});
let rgbaFromColorObject2 = RGBA.fromObject({alpha:1});
let rgbaFromColorObject3 = RGBA.fromObject({red:0,green:0,blue:0,alpha:1});

let hexStringToRGBA1 = "#".toRGBA();
let hexStringToRGBA2 = "#0".toRGBA();
let hexStringToRGBA3 = "#000".toRGBA();
let hexStringToRGBA4 = "#000000".toRGBA();
let hexStringToRGBA5 = "#00000011".toRGBA();

let rgbaStringToRGBA1 = "rgba(0)".toRGBA();
let rgbaStringToRGBA2 = "(0,)".toRGBA();
let rgbaStringToRGBA3 = "(0,0,0)".toRGBA();
let rgbaStringToRGBA4 = "0,0,0,1".toRGBA();
let rgbaStringToRGBA5 = "rgb(0,0,0)".toRGBA();

let arrayToRGBA1 = [0].toRGBA();
let arrayToRGBA2 = [0,0].toRGBA();
let arrayToRGBA3 = [0,0,0].toRGBA();
let arrayToRGBA4 = [0,0,0,1].toRGBA();

There is also a RGBA class Method and a global Function to check if a color (hexString, rgbString, rgbaString, array, json, RGBA class object) is dark based on its Lumin value, if it's less than 60 is considered dark

let stringWhite = "#fff"; //can also be written as "fff" "#FFF" "FFF" "ffff" "fffff" "ffffff" rgb(255,255,255) rgb(255,255,255,1) (255,255,255) ...etc
let stringBlack = "#0"; //can also be written as "0" "0,0,0" [0,0,0] (0,0,0) "#000000" "#00000011"
let arrayWhite = [255,255,255];//can also be written as [255,255,255,1]
let arrayBlack = [0,0,0];//can also be written as [0,0,0,1] or [0,0,0] or [0] !!BUT NOT AS []!!
let jsonWhite = {red:255,green:255,blue:255,alpha:1};// also the alpha value can be left out as in it will default to 1
let jsonBlack = {red:0,green:0,blue:0,alpha:1};// also any of the values can be left out as long as at least on of them is present the colors will default to 0 and alpha to 1
let rgbaWhite = new RGBA(255,255,255);//can also be written as new RGBA(255,255,255,1) or stringWhite.toRGBA() or  arrayWhite.toRGBA() or RGBA.fromObject(jsonWhite)
let rgbaBlack = new RGBA(0,0,0);//can also be written as new RGBA() or stringBlack.toRGBA() or  arrayBlack.toRGBA() or RGBA.fromObject(jsonBlack)

console.log(stringWhite.isDarkColor());//will print false
console.log(stringBlack.isDarkColor());//will print true

console.log(arrayWhite.isDarkColor());//will print false
console.log(arrayBlack.isDarkColor());//will print true

console.log(rgbaWhite.isDark);//will print false
console.log(rgbaBlack.isDark);//will print true

console.log(colorIsDark(jsonWhite));//will print false
console.log(colorIsDark(jsonBlack));//will print true

The RGBA Class and all the global function also have an additional variable called cycleNumbers default set to false which changes whether to clamp or cycle the color values when a value outside the allowed color values[0-255] and the alpha values[0-1] are given.

let rgb1 = new RGBA(255,244,222,0.3);//default false will clamp the numbers
let rgb3 = new RGBA(500000,244,222,0.3,false);//explecity set to false will clamp the numbers
let rgb2 = new RGBA(-1,500,-34,5.3,true);//set to true will cycle the number with modulo

console.log(rgb1.toString());//will print "rgba(255,244,222,0.3)"
console.log(rgb2.toString());//will print "rgba(255,244,222,0.3)"
console.log(rgb3.toString());//will print "rgba(255,244,222,0.3)"

In the previous Example because of the additional Property rgb1 === rgb3 will return false therefor to compare colors either they should be converted to string or preferably they can be compared using the "sameColor" method of an RGBA object or the static "colorEquals" Method. where both of them take any other object as a parameter(RGBA class instance, hexString, rgbaString, rgbString, array, json color).

let rgb1 = new RGBA(255,244,222,0.3);//default false will clamp the numbers
let rgb2 = new RGBA(500000,244,222,0.3,false);//explecity set to false will clamp the numbers
let rgb3 = new RGBA(-1,500,-34,5.3,true);//set to true will cycle the number with modulo


console.log(rgb1 === rgb2);//will print true
console.log(rgb1 === rgb3);//will print false
console.log(rgb2 === rgb3);//will print false

console.log(rgb1.toString() === rgb3.toString())//will print true

console.log(rgb2.sameColor(rgb3));//will print true

console.log(colorEquals(rgb1,rgb3));//will print true

console.log(rgb3.sameColor("255,244,222,0.3");//will return true
console.log(rgb3.sameColor("#fff4de4d");//will return true
console.log(rgb3.sameColor("fff4de4d");//will return true
console.log(rgb3.sameColor([255,244,222,0.3]);//will return true
console.log(rgb3.sameColor({red:255,green:244,blue:222,alpha:0.3});//will return true

console.log(colorEquals({red:255,green:244,blue:222,alpha:0.3},"fff4de4d");//will return true

/*BUT THIS WILL BE FALSE BECAUSE OF THE ALPHA*/
console.log(rgb1.sameColor(rgb1.toRGBString()))

License:

MIT License

link to license

the license file is in the root directory of the project