add hw2
This commit is contained in:
34
node_modules/khroma/dist/utils/channel.d.ts
generated
vendored
Normal file
34
node_modules/khroma/dist/utils/channel.d.ts
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
import type { RGB, HSL } from '../types';
|
||||
declare const Channel: {
|
||||
min: {
|
||||
r: number;
|
||||
g: number;
|
||||
b: number;
|
||||
s: number;
|
||||
l: number;
|
||||
a: number;
|
||||
};
|
||||
max: {
|
||||
r: number;
|
||||
g: number;
|
||||
b: number;
|
||||
h: number;
|
||||
s: number;
|
||||
l: number;
|
||||
a: number;
|
||||
};
|
||||
clamp: {
|
||||
r: (r: number) => number;
|
||||
g: (g: number) => number;
|
||||
b: (b: number) => number;
|
||||
h: (h: number) => number;
|
||||
s: (s: number) => number;
|
||||
l: (l: number) => number;
|
||||
a: (a: number) => number;
|
||||
};
|
||||
toLinear: (c: number) => number;
|
||||
hue2rgb: (p: number, q: number, t: number) => number;
|
||||
hsl2rgb: ({ h, s, l }: HSL, channel: keyof RGB) => number;
|
||||
rgb2hsl: ({ r, g, b }: RGB, channel: keyof HSL) => number;
|
||||
};
|
||||
export default Channel;
|
||||
89
node_modules/khroma/dist/utils/channel.js
generated
vendored
Normal file
89
node_modules/khroma/dist/utils/channel.js
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
/* IMPORT */
|
||||
/* MAIN */
|
||||
const Channel = {
|
||||
/* CLAMP */
|
||||
min: {
|
||||
r: 0,
|
||||
g: 0,
|
||||
b: 0,
|
||||
s: 0,
|
||||
l: 0,
|
||||
a: 0
|
||||
},
|
||||
max: {
|
||||
r: 255,
|
||||
g: 255,
|
||||
b: 255,
|
||||
h: 360,
|
||||
s: 100,
|
||||
l: 100,
|
||||
a: 1
|
||||
},
|
||||
clamp: {
|
||||
r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),
|
||||
g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),
|
||||
b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),
|
||||
h: (h) => h % 360,
|
||||
s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),
|
||||
l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),
|
||||
a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)
|
||||
},
|
||||
/* CONVERSION */
|
||||
//SOURCE: https://planetcalc.com/7779
|
||||
toLinear: (c) => {
|
||||
const n = c / 255;
|
||||
return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;
|
||||
},
|
||||
//SOURCE: https://gist.github.com/mjackson/5311256
|
||||
hue2rgb: (p, q, t) => {
|
||||
if (t < 0)
|
||||
t += 1;
|
||||
if (t > 1)
|
||||
t -= 1;
|
||||
if (t < 1 / 6)
|
||||
return p + (q - p) * 6 * t;
|
||||
if (t < 1 / 2)
|
||||
return q;
|
||||
if (t < 2 / 3)
|
||||
return p + (q - p) * (2 / 3 - t) * 6;
|
||||
return p;
|
||||
},
|
||||
hsl2rgb: ({ h, s, l }, channel) => {
|
||||
if (!s)
|
||||
return l * 2.55; // Achromatic
|
||||
h /= 360;
|
||||
s /= 100;
|
||||
l /= 100;
|
||||
const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);
|
||||
const p = 2 * l - q;
|
||||
switch (channel) {
|
||||
case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;
|
||||
case 'g': return Channel.hue2rgb(p, q, h) * 255;
|
||||
case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;
|
||||
}
|
||||
},
|
||||
rgb2hsl: ({ r, g, b }, channel) => {
|
||||
r /= 255;
|
||||
g /= 255;
|
||||
b /= 255;
|
||||
const max = Math.max(r, g, b);
|
||||
const min = Math.min(r, g, b);
|
||||
const l = (max + min) / 2;
|
||||
if (channel === 'l')
|
||||
return l * 100;
|
||||
if (max === min)
|
||||
return 0; // Achromatic
|
||||
const d = max - min;
|
||||
const s = (l > .5) ? d / (2 - max - min) : d / (max + min);
|
||||
if (channel === 's')
|
||||
return s * 100;
|
||||
switch (max) {
|
||||
case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;
|
||||
case g: return ((b - r) / d + 2) * 60;
|
||||
case b: return ((r - g) / d + 4) * 60;
|
||||
default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement
|
||||
}
|
||||
}
|
||||
};
|
||||
/* EXPORT */
|
||||
export default Channel;
|
||||
42
node_modules/khroma/dist/utils/index.d.ts
generated
vendored
Normal file
42
node_modules/khroma/dist/utils/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
declare const Utils: {
|
||||
channel: {
|
||||
min: {
|
||||
r: number;
|
||||
g: number;
|
||||
b: number;
|
||||
s: number;
|
||||
l: number;
|
||||
a: number;
|
||||
};
|
||||
max: {
|
||||
r: number;
|
||||
g: number;
|
||||
b: number;
|
||||
h: number;
|
||||
s: number;
|
||||
l: number;
|
||||
a: number;
|
||||
};
|
||||
clamp: {
|
||||
r: (r: number) => number;
|
||||
g: (g: number) => number;
|
||||
b: (b: number) => number;
|
||||
h: (h: number) => number;
|
||||
s: (s: number) => number;
|
||||
l: (l: number) => number;
|
||||
a: (a: number) => number;
|
||||
};
|
||||
toLinear: (c: number) => number;
|
||||
hue2rgb: (p: number, q: number, t: number) => number;
|
||||
hsl2rgb: ({ h, s, l }: import("../types").HSL, channel: keyof import("../types").RGB) => number;
|
||||
rgb2hsl: ({ r, g, b }: import("../types").RGB, channel: keyof import("../types").HSL) => number;
|
||||
};
|
||||
lang: {
|
||||
clamp: (number: number, lower: number, upper: number) => number;
|
||||
round: (number: number) => number;
|
||||
};
|
||||
unit: {
|
||||
dec2hex: (dec: number) => string;
|
||||
};
|
||||
};
|
||||
export default Utils;
|
||||
12
node_modules/khroma/dist/utils/index.js
generated
vendored
Normal file
12
node_modules/khroma/dist/utils/index.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/* IMPORT */
|
||||
import channel from './channel.js';
|
||||
import lang from './lang.js';
|
||||
import unit from './unit.js';
|
||||
/* MAIN */
|
||||
const Utils = {
|
||||
channel,
|
||||
lang,
|
||||
unit
|
||||
};
|
||||
/* EXPORT */
|
||||
export default Utils;
|
||||
5
node_modules/khroma/dist/utils/lang.d.ts
generated
vendored
Normal file
5
node_modules/khroma/dist/utils/lang.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
declare const Lang: {
|
||||
clamp: (number: number, lower: number, upper: number) => number;
|
||||
round: (number: number) => number;
|
||||
};
|
||||
export default Lang;
|
||||
14
node_modules/khroma/dist/utils/lang.js
generated
vendored
Normal file
14
node_modules/khroma/dist/utils/lang.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/* MAIN */
|
||||
const Lang = {
|
||||
/* API */
|
||||
clamp: (number, lower, upper) => {
|
||||
if (lower > upper)
|
||||
return Math.min(lower, Math.max(upper, number));
|
||||
return Math.min(upper, Math.max(lower, number));
|
||||
},
|
||||
round: (number) => {
|
||||
return Math.round(number * 10000000000) / 10000000000;
|
||||
}
|
||||
};
|
||||
/* EXPORT */
|
||||
export default Lang;
|
||||
4
node_modules/khroma/dist/utils/unit.d.ts
generated
vendored
Normal file
4
node_modules/khroma/dist/utils/unit.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare const Unit: {
|
||||
dec2hex: (dec: number) => string;
|
||||
};
|
||||
export default Unit;
|
||||
10
node_modules/khroma/dist/utils/unit.js
generated
vendored
Normal file
10
node_modules/khroma/dist/utils/unit.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/* MAIN */
|
||||
const Unit = {
|
||||
/* API */
|
||||
dec2hex: (dec) => {
|
||||
const hex = Math.round(dec).toString(16);
|
||||
return hex.length > 1 ? hex : `0${hex}`;
|
||||
}
|
||||
};
|
||||
/* EXPORT */
|
||||
export default Unit;
|
||||
Reference in New Issue
Block a user