Socket
Socket
Sign inDemoInstall

culori

Package Overview
Dependencies
0
Maintainers
1
Versions
256
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.1 to 0.2.2

.babelrc

424

build/culori.js

@@ -9,13 +9,24 @@ (function (global, factory) {

function from_hsl({ h, s, l, a }) {
let m1 = l + s * (l < 0.5 ? l : 1 - l);
let m2 = m1 - (m1 - l) * 2 * Math.abs(h/60 % 2 - 1);
let res;
switch (Math.floor(h/60)) {
case 0: res = { r: m1, g: m2, b: 2 * l - m1 }; break;
case 1: res = { r: m2, g: m1, b: 2 * l - m1 }; break;
case 2: res = { r: 2 * l - m1, g: m1, b: m2 }; break;
case 3: res = { r: 2 * l - m1, g: m2, b: m1 }; break;
case 4: res = { r: m2, g: 2 * l - m1, b: m1 }; break;
case 5: res = { r: m1, g: 2 * l - m1, b: m2 }; break;
function from_hsl (_ref) {
var h = _ref.h,
s = _ref.s,
l = _ref.l,
a = _ref.a;
var m1 = l + s * (l < 0.5 ? l : 1 - l);
var m2 = m1 - (m1 - l) * 2 * Math.abs(h / 60 % 2 - 1);
var res = void 0;
switch (Math.floor(h / 60)) {
case 0:
res = { r: m1, g: m2, b: 2 * l - m1 };break;
case 1:
res = { r: m2, g: m1, b: 2 * l - m1 };break;
case 2:
res = { r: 2 * l - m1, g: m1, b: m2 };break;
case 3:
res = { r: 2 * l - m1, g: m2, b: m1 };break;
case 4:
res = { r: m2, g: 2 * l - m1, b: m1 };break;
case 5:
res = { r: m1, g: 2 * l - m1, b: m2 };break;
}

@@ -31,12 +42,23 @@ res['mode'] = 'rgb';

function from_hsv({ h, s, v, a }) {
let f = Math.abs(h/60 % 2 - 1);
let res;
switch (Math.floor(h/60)) {
case 0: res = { r: v, g: v * (1 - s * f), b: v * (1 - s) }; break;
case 1: res = { r: v * (1 - s * f), g: v, b: v * (1 - s) }; break;
case 2: res = { r: v * (1 - s), g: v, b: v * (1 - s * f) }; break;
case 3: res = { r: v * (1 - s), g: v * (1 - s * f), b: v }; break;
case 4: res = { r: v * (1 - s * f), g: v * (1 - s), b: v }; break;
case 5: res = { r: v, g: v * (1 - s), b: v * (1 - s * f) }; break;
function from_hsv (_ref) {
var h = _ref.h,
s = _ref.s,
v = _ref.v,
a = _ref.a;
var f = Math.abs(h / 60 % 2 - 1);
var res = void 0;
switch (Math.floor(h / 60)) {
case 0:
res = { r: v, g: v * (1 - s * f), b: v * (1 - s) };break;
case 1:
res = { r: v * (1 - s * f), g: v, b: v * (1 - s) };break;
case 2:
res = { r: v * (1 - s), g: v, b: v * (1 - s * f) };break;
case 3:
res = { r: v * (1 - s), g: v * (1 - s * f), b: v };break;
case 4:
res = { r: v * (1 - s * f), g: v * (1 - s), b: v };break;
case 5:
res = { r: v, g: v * (1 - s), b: v * (1 - s * f) };break;
}

@@ -52,45 +74,50 @@ res['mode'] = 'rgb';

function from_hsi ({ h, s, i, a }) {
let f = Math.abs(h/60 % 2 - 1);
let res;
switch (Math.floor(h/60)) {
case 0:
function from_hsi (_ref) {
var h = _ref.h,
s = _ref.s,
i = _ref.i,
a = _ref.a;
var f = Math.abs(h / 60 % 2 - 1);
var res = void 0;
switch (Math.floor(h / 60)) {
case 0:
res = {
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
b: i * (1 - s)
};
break;
case 1:
case 1:
res = {
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 + s * (3 / (2 - f) - 1)),
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 + s * (3 / (2 - f) - 1)),
b: i * (1 - s)
};
break;
case 2:
case 2:
res = {
r: i * (1 - s),
g: i * (1 + s * (3 / (2 - f) - 1)),
r: i * (1 - s),
g: i * (1 + s * (3 / (2 - f) - 1)),
b: i * (1 + s * (3 * (1 - f) / (2 - f) - 1))
};
break;
case 3:
case 3:
res = {
r: i * (1 - s),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
r: i * (1 - s),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
b: i * (1 + s * (3 / (2 - f) - 1))
};
break;
case 4:
case 4:
res = {
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 - s),
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 - s),
b: i * (1 + s * (3 / (2 - f) - 1))
};
break;
case 5:
case 5:
res = {
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 - s),
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 - s),
b: i * (1 + s * (3 * (1 - f) / (2 - f) - 1))

@@ -109,6 +136,12 @@ };

function to_hsl({ r, g, b, a }) {
function to_hsl (_ref) {
var r = _ref.r,
g = _ref.g,
b = _ref.b,
a = _ref.a;
// if (flags & IS_CULORI && flags & IS_HSL) return arguments[0];
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
var M = Math.max(r, g, b),
m = Math.min(r, g, b);
var res = {
mode: 'hsl',

@@ -129,6 +162,12 @@ s: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),

function to_hsv({ r, g, b, a }) {
function to_hsv (_ref) {
var r = _ref.r,
g = _ref.g,
b = _ref.b,
a = _ref.a;
// if (flags & IS_CULORI && flags & IS_HSV) return arguments[0];
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
var M = Math.max(r, g, b),
m = Math.min(r, g, b);
var res = {
mode: 'hsv',

@@ -149,6 +188,12 @@ s: M === 0 ? 0 : 1 - m / M,

function to_hsi({ r, g, b, a }) {
function to_hsi (_ref) {
var r = _ref.r,
g = _ref.g,
b = _ref.b,
a = _ref.a;
// if (flags & IS_CULORI && flags & IS_HSI) return arguments[0];
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
var M = Math.max(r, g, b),
m = Math.min(r, g, b);
var res = {
mode: 'hsi',

@@ -167,3 +212,3 @@ s: r + g + b === 0 ? 0 : 1 - 3 * m / (r + g + b),

const convert = (color, mode) => {
var convert = function convert(color, mode) {

@@ -181,32 +226,31 @@ if (color === undefined) {

// for converting between formats.
let rgb;
switch(color.mode) {
case 'rgb': rgb = color; break;
case 'hsl': rgb = from_hsl(color); break;
case 'hsv': rgb = from_hsv(color); break;
case 'hsi': rgb = from_hsi(color); break;
default: return undefined;
var rgb = void 0;
switch (color.mode) {
case 'rgb':
rgb = color;break;
case 'hsl':
rgb = from_hsl(color);break;
case 'hsv':
rgb = from_hsv(color);break;
case 'hsi':
rgb = from_hsi(color);break;
default:
return undefined;
}
switch(mode) {
case 'rgb': return rgb;
case 'hsl': return to_hsl(rgb);
case 'hsv': return to_hsv(rgb);
case 'hsi': return to_hsi(rgb);
default: return undefined;
}
};
switch (mode) {
case 'rgb':
return rgb;
case 'hsl':
return to_hsl(rgb);
case 'hsv':
return to_hsv(rgb);
case 'hsi':
return to_hsi(rgb);
default:
return undefined;
}};
const mixin = (obj, mixin) => {
Object.keys(mixin).forEach(function(key) {
obj[key] = mixin[key];
});
};
var parseNumber = (function (color, len) {
function mixin$1(obj, ...mixins) {
mixins.forEach(m => mixin(obj, m));
}
var parseNumber = (color, len) => {
if (typeof color !== 'number') return;

@@ -218,5 +262,5 @@

mode: 'rgb',
r: ((color >> 8 & 0xF) | (color >> 4 & 0xF0)) / 255,
g: ((color >> 4 & 0xF) | (color & 0xF0)) / 255,
b: ((color & 0xF) | (color << 4 & 0xF0)) / 255
r: (color >> 8 & 0xF | color >> 4 & 0xF0) / 255,
g: (color >> 4 & 0xF | color & 0xF0) / 255,
b: (color & 0xF | color << 4 & 0xF0) / 255
};

@@ -229,9 +273,9 @@ }

mode: 'rgb',
r: ((color >> 12 & 0xF) | (color >> 8 & 0xF0)) / 255,
g: ((color >> 8 & 0xF) | (color >> 4 & 0xF0)) / 255,
b: ((color >> 4 & 0xF) | (color & 0xF0)) / 255,
a: ((color & 0xF) | (color << 4 & 0xF0)) / 255
r: (color >> 12 & 0xF | color >> 8 & 0xF0) / 255,
g: (color >> 8 & 0xF | color >> 4 & 0xF0) / 255,
b: (color >> 4 & 0xF | color & 0xF0) / 255,
a: (color & 0xF | color << 4 & 0xF0) / 255
};
}
// hex6: #f0f1f2

@@ -241,4 +285,4 @@ if (len === 6) {

mode: 'rgb',
r: (color >> 16 & 0xFF) / 255,
g: (color >> 8 & 0xFF) / 255,
r: (color >> 16 & 0xFF) / 255,
g: (color >> 8 & 0xFF) / 255,
b: (color & 0xFF) / 255

@@ -252,9 +296,9 @@ };

mode: 'rgb',
r: (color >> 24 & 0xFF) / 255,
g: (color >> 16 & 0xFF) / 255,
b: (color >> 8 & 0xFF) / 255,
r: (color >> 24 & 0xFF) / 255,
g: (color >> 16 & 0xFF) / 255,
b: (color >> 8 & 0xFF) / 255,
a: (color & 0xFF) / 255
};
}
}
});

@@ -382,3 +426,3 @@ var named = {

// Added in CSS Colors Level 4: https://drafts.csswg.org/css-color/#changes-from-3
rebeccapurple: 0x663399,
rebeccapurple: 0x663399,
red: 0xff0000,

@@ -416,48 +460,49 @@ rosybrown: 0xbc8f8f,

// https://drafts.csswg.org/css-color/#transparent-black
var parseNamed = color => {
return (typeof color === 'string' && parseNumber(named[color.toLowerCase()], 6)) || undefined;
}
var parseNamed = (function (color) {
return typeof color === 'string' && parseNumber(named[color.toLowerCase()], 6) || undefined;
});
// converts a regexp to string
// (does not cover all cases, but for our purposes it works)
const s = r => r.toString().replace(/^\/|\/$/g, '');
var s = function s(r) {
return r.toString().replace(/^\/|\/$/g, '');
};
// matches a number
const n = /([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)/;
var n = /([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)/;
// matches a percentage
const p = /([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)%/;
const sp = s(p);
var p = /([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)%/;
var sp = s(p);
// matches a percentage or number
const pn = `(?:${s(p)}|${s(n)})`;
var pn = '(?:' + s(p) + '|' + s(n) + ')';
// hue can be a number or an angle (number + angle unit)
const hue = `(?:${s(n)}(deg|grad|rad|turn)|${s(n)})`;
var hue = '(?:' + s(n) + '(deg|grad|rad|turn)|' + s(n) + ')';
// Reference:
// https://drafts.csswg.org/css-color/#rgb-functions
const rgb_legacy = new RegExp(`^rgba?\\(\\s*${pn}\\s*,\\s*${pn}\\s*,\\s*${pn}\\s*(?:,\\s*${pn}\\s*)?\\)$`);
const rgb_current = new RegExp(`^rgba?\\(\\s*${pn}\\s+${pn}\\s+${pn}\\s*(?:\\/\\s*${pn}\\s*)?\\)$`);
var rgb_legacy = new RegExp('^rgba?\\(\\s*' + pn + '\\s*,\\s*' + pn + '\\s*,\\s*' + pn + '\\s*(?:,\\s*' + pn + '\\s*)?\\)$');
var rgb_current = new RegExp('^rgba?\\(\\s*' + pn + '\\s+' + pn + '\\s+' + pn + '\\s*(?:\\/\\s*' + pn + '\\s*)?\\)$');
// Reference:
// https://drafts.csswg.org/css-color/#the-hsl-notation
const hsl_legacy = new RegExp(`^hsla?\\(\\s*${hue}\\s*,\\s*${sp}\\s*,\\s*${sp}\\s*(?:,\\s*${pn}\\s*)?\\)$`);
const hsl_current = new RegExp(`^hsla?\\(\\s*${hue}\\s+${sp}\\s+${sp}\\s*(?:\\/\\s*${pn}\\s*)?\\)$`);
var hsl_legacy = new RegExp('^hsla?\\(\\s*' + hue + '\\s*,\\s*' + sp + '\\s*,\\s*' + sp + '\\s*(?:,\\s*' + pn + '\\s*)?\\)$');
var hsl_current = new RegExp('^hsla?\\(\\s*' + hue + '\\s+' + sp + '\\s+' + sp + '\\s*(?:\\/\\s*' + pn + '\\s*)?\\)$');
const hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
var hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
var parseHex = color => {
var parseHex = (function (color) {
var match;
return (match = color.match(hex)) ? parseNumber(parseInt(match[1], 16), match[1].length) : undefined;
}
});
var parseRgb = color => {
var parseRgb = (function (color) {
var match = match = color.match(rgb_legacy) || color.match(rgb_current);
if (!match) return;
let res = {
var res = {
mode: 'rgb',
r: match[1] === undefined ? match[2] / 255 : match[1] / 100,
g: match[3] === undefined ? match[4] / 255 : match[3] / 100,
r: match[1] === undefined ? match[2] / 255 : match[1] / 100,
g: match[3] === undefined ? match[4] / 255 : match[3] / 100,
b: match[5] === undefined ? match[6] / 255 : match[5] / 100

@@ -471,20 +516,24 @@ };

}
return res;
};
});
const hue$1 = (val, unit) => {
var hue$1 = function hue(val, unit) {
switch (unit) {
case 'deg': return val;
case 'rad': return val / Math.PI * 180;
case 'grad': return val / 10 * 9;
case 'turn': return val * 360;
case 'deg':
return val;
case 'rad':
return val / Math.PI * 180;
case 'grad':
return val / 10 * 9;
case 'turn':
return val * 360;
}
};
var parseHsl = color => {
var parseHsl = (function (color) {
if (typeof color !== 'string') return;
let match = color.match(hsl_legacy) || color.match(hsl_current);
var match = color.match(hsl_legacy) || color.match(hsl_current);
if (!match) return;
let res = {
var res = {
mode: 'hsl',

@@ -502,15 +551,9 @@ h: match[3] === undefined ? +hue$1(match[1], match[2]) : +match[3],

return to_hsl(from_hsl(res));
}
});
const parse = color => {
return (
parseHex(color) ||
parseRgb(color) ||
parseHsl(color) ||
parseNamed(color) ||
(color === 'transparent' ? parseNumber(0, 8) : undefined)
);
var parse = function parse(color) {
return parseHex(color) || parseRgb(color) || parseHsl(color) || parseNamed(color) || (color === 'transparent' ? parseNumber(0, 8) : undefined);
};
mixin$1(parse, {
Object.assign(parse, {
number: parseNumber,

@@ -523,19 +566,52 @@ named: parseNamed,

var prepare = (color, mode) =>
typeof color !== 'object' ? parse(color)
: color.mode === undefined ? {...color, mode: mode } : color;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
var hsl = color => convert(prepare(color, 'hsl'), 'hsl');
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
var hsv = color => convert(prepare(color, 'hsv'), 'hsv');
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
var hsi = color => convert(prepare(color, 'hsi'), 'hsi');
return target;
};
var rgb = color => convert(prepare(color, 'rgb'), 'rgb');
var prepare = (function (color, mode) {
return (typeof color === 'undefined' ? 'undefined' : _typeof(color)) !== 'object' ? parse(color) : color.mode === undefined ? _extends({}, color, { mode: mode }) : color;
});
// See: https://github.com/d3/d3-format/issues/32
const r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;
var hsl = (function (color) {
return convert(prepare(color, 'hsl'), 'hsl');
});
function round(value, precision = 4) {
var hsv = (function (color) {
return convert(prepare(color, 'hsv'), 'hsv');
});
var hsi = (function (color) {
return convert(prepare(color, 'hsi'), 'hsi');
});
var rgb = (function (color) {
return convert(prepare(color, 'rgb'), 'rgb');
});
// From: https://github.com/d3/d3-format/issues/32
var r = function r(value, precision) {
return Math.round(value * (precision = Math.pow(10, precision))) / precision;
};
function round(value) {
var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;
if (value === undefined) {

@@ -553,15 +629,19 @@ return undefined;

if (typeof value === 'object') {
return Object.keys(value).reduce((o, k) => (o[k] = round(value[k]), o), {});
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {
return Object.keys(value).reduce(function (o, k) {
return o[k] = round(value[k]), o;
}, {});
}
}
var css = (c, format = 'rgb') => {
var css = (function (c) {
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rgb';
let color = rgb(c);
let r = Math.round(color.r * 255);
let g = Math.round(color.g * 255);
let b = Math.round(color.b * 255);
var color = rgb(c);
var r = Math.round(color.r * 255);
var g = Math.round(color.g * 255);
var b = Math.round(color.b * 255);
if (format === 'hex') {

@@ -574,31 +654,29 @@ return '#' + (1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1);

// opaque color
return `rgb(${r}, ${g}, ${b})`;
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
} else {
// transparent color
return `rgba(${r}, ${g}, ${b}, ${ color['a'] })`;
return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + color['a'] + ')';
}
}
}
});
var colors = {
named
named: named
};
const culori = color => rgb(color);
var culori = function culori(color) {
return rgb(color);
};
mixin$1(
culori,
colors,
{
hsl,
hsv,
hsi,
rgb,
css,
convert,
prepare,
parse,
round
}
);
Object.assign(culori, colors, {
hsl: hsl,
hsv: hsv,
hsi: hsi,
rgb: rgb,
css: css,
convert: convert,
prepare: prepare,
parse: parse,
round: round
});

@@ -605,0 +683,0 @@ return culori;

@@ -0,1 +1,5 @@

# Version 0.2.2
Published to NPM in UMD format (normal + minified) + ES6 modules.
# Version 0.2.0

@@ -2,0 +6,0 @@

{
"name": "culori",
"version": "0.2.1",
"version": "0.2.2",
"main": "build/culori.js",

@@ -11,4 +11,9 @@ "module": "index.js",

"devDependencies": {
"babel-core": "^6.26.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-es2015-rollup": "^3.0.0",
"nyc": "^11.6.0",
"rollup": "^0.57.1",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-uglify": "^3.0.0",
"tap-spec": "^4.1.1",

@@ -19,11 +24,10 @@ "tape": "^4.9.0"

"build": "rollup -c",
"build:min": "NODE_ENV=production rollup -c",
"pretest": "yarn build",
"test": "tape test/tests/*.js | tap-spec",
"benchmark": "node test/benchmarks/index.js",
"coverage:report" : "nyc report --reporter=lcov",
"prepublishOnly": "yarn build && yarn build:min",
"coverage:report": "nyc report --reporter=lcov",
"coverage:test": "nyc --produce-source-map tape test/tests/*.js | tap-spec"
},
"nyc": {
"sourceMap": true
}
}

@@ -0,8 +1,15 @@

import babel from 'rollup-plugin-babel';
import uglify from 'rollup-plugin-uglify';
export default {
input: 'index.js',
output: {
file: 'build/culori.js',
format: 'umd',
name: 'culori'
}
};
input: "index.js",
output: {
file: process.env.NODE_ENV === 'production' ? 'build/culori.min.js' : 'build/culori.js',
format: 'umd',
name: 'culori',
},
plugins: [
babel(),
(process.env.NODE_ENV === 'production' && uglify())
]
};

@@ -1,3 +0,1 @@

import mixin from '../util/mixin';
import parseNumber from '../parsers/number';

@@ -19,3 +17,3 @@ import parseNamed from '../parsers/named';

mixin(parse, {
Object.assign(parse, {
number: parseNumber,

@@ -22,0 +20,0 @@ named: parseNamed,

@@ -5,2 +5,2 @@ import parse from './parse';

typeof color !== 'object' ? parse(color)
: color.mode === undefined ? {...color, mode: mode } : color;
: color.mode === undefined ? {...color, mode: mode } : color;

@@ -1,2 +0,4 @@

// See: https://github.com/d3/d3-format/issues/32
// From: https://github.com/d3/d3-format/issues/32
const r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;

@@ -3,0 +5,0 @@

@@ -12,7 +12,5 @@ import hsl from './api/hsl';

import mixin from './util/mixin';
const culori = color => rgb(color);
mixin(
Object.assign(
culori,

@@ -19,0 +17,0 @@ colors,

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc