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

rescript-tinycolor

v4.0.0

Published

Fast, small color manipulation and conversion

Downloads

1,472

Readme

rescript-tinycolor

NPM version Build Status

ReScript bindings for TinyColor: fast, small color manipulation and conversion. See also https://tinycolor.netlify.app

Getting started

yarn add rescript-tinycolor

Then add rescript-tinycolor as a dependency to bsconfig.json:

"bs-dependencies": [
+  "rescript-tinycolor"
]

Example

open RescriptTinycolor;

let redString = TinyColor.makeFromString("red");
/* New instance made by name 'red' */

let blueRgb = TinyColor.makeFromRgb({r: 0, g: 0, b: 255});
/* New instance made with RGB values */

let yellowHsl = TinyColor.makeFromHsl({h: 60, s: 0.94, l: 0.5});
/* New instance made with HSL values (saturation and lightness must be given as percent fractions) */

let darkGreenHsv = TinyColor.makeFromHsv({h: 100, s: 1.0, v: 0.3});
/* New instance made with HSV values (saturation and value must be given as percent fractions) */

let blueRgbWithAlpha = Belt.Option.map(blueRgb, TinyColor.setAlpha(0.2));
/* New instance with changed alpha */

let brightness = Belt.Option.map(redString, TinyColor.getBrightness);
/* Some(76.245) */

let hexString = Belt.Option.map(blueRgb, TinyColor.toHexString);
/* Some("#0000ff") */

let shadedBlue = Belt.Option.map(blueRgb, TinyColor.shade(~value=50));
/* New instanced with color shaded 50% */

let isReadableInCombination = switch(redString, blueRgb) {
    | (Some(red), Some(blue)) => TinyColor.isReadable(red, blue);
    | _ => false;
};
/* returns a bool telling whether these colors can be used for background/text */

See all available functions in the original TinyColor repo and example usage of all functions in the tests.

Differences from original

  • It is not possible to create an invalid tinycolor instance, it will either return Some(t) if it is valid, or None if it is invalid. E.g. an invalid instance can occur if you create a color with a string not corresponding to a valid color (beautifulRed is not a valid color) or you provide RGB values outside the valid range (0-255).
  • When creating instances with HSL and HSV values: saturation, lightness and value must be given as fractions instead of percent (0.2 == 20%).
  • All functions accept only TinyColor-instances created by one of the make--functions (or random()), it is not possible to pass in a string or RGB-record for the functions (which is possible in the original library).
  • setAlpha(val) is immutable, it will return a new instance with changed alpha value (the other methods that modify a color (spin, lighten, etc.) is immutable from the original library).
  • toName() returns an option, either Some(string) if a name could be deduced (e.g. red) or None if not.
  • To get multiple random colors with the count parameter, the function randomMultiple() must be used (which is the same as random() only that it returns an array with length count instead of a single color).

Contribute

If you find bugs or there are updates in TinyColor, feel free to open an issue or PR. If you are upgrading any dependencies, please use yarn so yarn.lock is updated.

If you add, remove or change bindings, remember to update the tests as well. It should be at least one test for every binding. Run the tests with yarn test from project root.

Alternatives / related