@oscarpalmer/atoms 0.190.0 → 0.191.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/color/constants.d.mts +7 -1
- package/dist/color/constants.mjs +7 -1
- package/dist/color/index.d.mts +3 -3
- package/dist/color/index.mjs +2 -2
- package/dist/color/instance.mjs +27 -25
- package/dist/color/misc/alpha.d.mts +1 -1
- package/dist/color/misc/alpha.mjs +10 -7
- package/dist/color/misc/format.d.mts +7 -0
- package/dist/color/misc/format.mjs +20 -0
- package/dist/color/misc/get.mjs +16 -16
- package/dist/color/misc/is.d.mts +0 -36
- package/dist/color/misc/is.mjs +1 -37
- package/dist/color/misc/state.d.mts +3 -2
- package/dist/color/misc/state.mjs +69 -83
- package/dist/color/models.d.mts +28 -5
- package/dist/color/space/hex.d.mts +3 -2
- package/dist/color/space/hex.mjs +13 -1
- package/dist/color/space/hsl.d.mts +3 -2
- package/dist/color/space/hsl.mjs +13 -1
- package/dist/color/space/hwb.d.mts +3 -2
- package/dist/color/space/hwb.mjs +13 -1
- package/dist/color/space/rgb.d.mts +3 -2
- package/dist/color/space/rgb.mjs +14 -2
- package/dist/index.d.mts +23 -29
- package/dist/index.mjs +198 -184
- package/package.json +4 -4
- package/src/color/constants.ts +12 -0
- package/src/color/index.ts +26 -8
- package/src/color/instance.ts +60 -45
- package/src/color/misc/alpha.ts +12 -6
- package/src/color/misc/format.ts +29 -0
- package/src/color/misc/get.ts +20 -13
- package/src/color/misc/is.ts +7 -37
- package/src/color/misc/state.ts +115 -127
- package/src/color/models.ts +32 -4
- package/src/color/space/hex.ts +34 -1
- package/src/color/space/hsl.ts +40 -2
- package/src/color/space/hwb.ts +32 -2
- package/src/color/space/rgb.ts +33 -3
- package/dist/color/misc/index.d.mts +0 -7
- package/dist/color/misc/index.mjs +0 -15
- package/src/color/misc/index.ts +0 -29
|
@@ -8,6 +8,7 @@ declare const DEFAULT_ALPHA: Alpha;
|
|
|
8
8
|
declare const DEFAULT_HSL: HSLColor;
|
|
9
9
|
declare const DEFAULT_HWB: HWBColor;
|
|
10
10
|
declare const DEFAULT_RGB: RGBColor;
|
|
11
|
+
declare const EXPRESSION_ALPHA_HEX: RegExp;
|
|
11
12
|
declare const EXPRESSION_HEX_LONG: RegExp;
|
|
12
13
|
declare const EXPRESSION_HEX_SHORT: RegExp;
|
|
13
14
|
declare const EXPRESSION_PREFIX: RegExp;
|
|
@@ -24,6 +25,11 @@ declare const KEYS_RGBA: Array<keyof RGBAColor>;
|
|
|
24
25
|
declare const MAX_DEGREE = 360;
|
|
25
26
|
declare const MAX_HEX = 255;
|
|
26
27
|
declare const MAX_PERCENT = 100;
|
|
28
|
+
declare const PROPERTY_COLOR = "$color";
|
|
29
|
+
declare const TYPE_HEX = "hex";
|
|
30
|
+
declare const TYPE_HSL = "hsl";
|
|
31
|
+
declare const TYPE_HWB = "hwb";
|
|
32
|
+
declare const TYPE_RGB = "rgb";
|
|
27
33
|
declare const SRGB_LUMINANCE_BLUE = 0.0722;
|
|
28
34
|
declare const SRGB_LUMINANCE_EXPONENT = 2.4;
|
|
29
35
|
declare const SRGB_LUMINANCE_GREEN = 0.7152;
|
|
@@ -34,4 +40,4 @@ declare const SRGB_LUMINANCE_OFFSET = 0.055;
|
|
|
34
40
|
declare const SRGB_LUMINANCE_RED = 0.2126;
|
|
35
41
|
declare const SRGB_LUMINANCE_THRESHOLD = 0.625;
|
|
36
42
|
//#endregion
|
|
37
|
-
export { ALPHA_FULL_HEX_LONG, ALPHA_FULL_HEX_SHORT, ALPHA_NONE_HEX, ALPHA_NONE_VALUE, DEFAULT_ALPHA, DEFAULT_HSL, DEFAULT_HWB, DEFAULT_RGB, EXPRESSION_HEX_LONG, EXPRESSION_HEX_SHORT, EXPRESSION_PREFIX, HEX_BLACK, HEX_WHITE, KEYS_HSL, KEYS_HSLA, KEYS_HWB, KEYS_HWBA, KEYS_RGB, KEYS_RGBA, LENGTH_LONG, LENGTH_SHORT, MAX_DEGREE, MAX_HEX, MAX_PERCENT, SRGB_LUMINANCE_BLUE, SRGB_LUMINANCE_EXPONENT, SRGB_LUMINANCE_GREEN, SRGB_LUMINANCE_MINIMUM, SRGB_LUMINANCE_MODIFIER, SRGB_LUMINANCE_MULTIPLIER, SRGB_LUMINANCE_OFFSET, SRGB_LUMINANCE_RED, SRGB_LUMINANCE_THRESHOLD };
|
|
43
|
+
export { ALPHA_FULL_HEX_LONG, ALPHA_FULL_HEX_SHORT, ALPHA_NONE_HEX, ALPHA_NONE_VALUE, DEFAULT_ALPHA, DEFAULT_HSL, DEFAULT_HWB, DEFAULT_RGB, EXPRESSION_ALPHA_HEX, EXPRESSION_HEX_LONG, EXPRESSION_HEX_SHORT, EXPRESSION_PREFIX, HEX_BLACK, HEX_WHITE, KEYS_HSL, KEYS_HSLA, KEYS_HWB, KEYS_HWBA, KEYS_RGB, KEYS_RGBA, LENGTH_LONG, LENGTH_SHORT, MAX_DEGREE, MAX_HEX, MAX_PERCENT, PROPERTY_COLOR, SRGB_LUMINANCE_BLUE, SRGB_LUMINANCE_EXPONENT, SRGB_LUMINANCE_GREEN, SRGB_LUMINANCE_MINIMUM, SRGB_LUMINANCE_MODIFIER, SRGB_LUMINANCE_MULTIPLIER, SRGB_LUMINANCE_OFFSET, SRGB_LUMINANCE_RED, SRGB_LUMINANCE_THRESHOLD, TYPE_HEX, TYPE_HSL, TYPE_HWB, TYPE_RGB };
|
package/dist/color/constants.mjs
CHANGED
|
@@ -22,6 +22,7 @@ const DEFAULT_RGB = {
|
|
|
22
22
|
green: 0,
|
|
23
23
|
red: 0
|
|
24
24
|
};
|
|
25
|
+
const EXPRESSION_ALPHA_HEX = /^([a-f0-9]{1,2})$/i;
|
|
25
26
|
const EXPRESSION_HEX_LONG = /^#?([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?$/i;
|
|
26
27
|
const EXPRESSION_HEX_SHORT = /^#?([a-f0-9]{3,4})$/i;
|
|
27
28
|
const EXPRESSION_PREFIX = /^#/;
|
|
@@ -50,6 +51,11 @@ const KEYS_RGBA = [...KEYS_RGB, "alpha"];
|
|
|
50
51
|
const MAX_DEGREE = 360;
|
|
51
52
|
const MAX_HEX = 255;
|
|
52
53
|
const MAX_PERCENT = 100;
|
|
54
|
+
const PROPERTY_COLOR = "$color";
|
|
55
|
+
const TYPE_HEX = "hex";
|
|
56
|
+
const TYPE_HSL = "hsl";
|
|
57
|
+
const TYPE_HWB = "hwb";
|
|
58
|
+
const TYPE_RGB = "rgb";
|
|
53
59
|
const SRGB_LUMINANCE_BLUE = .0722;
|
|
54
60
|
const SRGB_LUMINANCE_EXPONENT = 2.4;
|
|
55
61
|
const SRGB_LUMINANCE_GREEN = .7152;
|
|
@@ -60,4 +66,4 @@ const SRGB_LUMINANCE_OFFSET = .055;
|
|
|
60
66
|
const SRGB_LUMINANCE_RED = .2126;
|
|
61
67
|
const SRGB_LUMINANCE_THRESHOLD = .625;
|
|
62
68
|
//#endregion
|
|
63
|
-
export { ALPHA_FULL_HEX_LONG, ALPHA_FULL_HEX_SHORT, ALPHA_NONE_HEX, ALPHA_NONE_VALUE, DEFAULT_ALPHA, DEFAULT_HSL, DEFAULT_HWB, DEFAULT_RGB, EXPRESSION_HEX_LONG, EXPRESSION_HEX_SHORT, EXPRESSION_PREFIX, HEX_BLACK, HEX_WHITE, KEYS_HSL, KEYS_HSLA, KEYS_HWB, KEYS_HWBA, KEYS_RGB, KEYS_RGBA, LENGTH_LONG, LENGTH_SHORT, MAX_DEGREE, MAX_HEX, MAX_PERCENT, SRGB_LUMINANCE_BLUE, SRGB_LUMINANCE_EXPONENT, SRGB_LUMINANCE_GREEN, SRGB_LUMINANCE_MINIMUM, SRGB_LUMINANCE_MODIFIER, SRGB_LUMINANCE_MULTIPLIER, SRGB_LUMINANCE_OFFSET, SRGB_LUMINANCE_RED, SRGB_LUMINANCE_THRESHOLD };
|
|
69
|
+
export { ALPHA_FULL_HEX_LONG, ALPHA_FULL_HEX_SHORT, ALPHA_NONE_HEX, ALPHA_NONE_VALUE, DEFAULT_ALPHA, DEFAULT_HSL, DEFAULT_HWB, DEFAULT_RGB, EXPRESSION_ALPHA_HEX, EXPRESSION_HEX_LONG, EXPRESSION_HEX_SHORT, EXPRESSION_PREFIX, HEX_BLACK, HEX_WHITE, KEYS_HSL, KEYS_HSLA, KEYS_HWB, KEYS_HWBA, KEYS_RGB, KEYS_RGBA, LENGTH_LONG, LENGTH_SHORT, MAX_DEGREE, MAX_HEX, MAX_PERCENT, PROPERTY_COLOR, SRGB_LUMINANCE_BLUE, SRGB_LUMINANCE_EXPONENT, SRGB_LUMINANCE_GREEN, SRGB_LUMINANCE_MINIMUM, SRGB_LUMINANCE_MODIFIER, SRGB_LUMINANCE_MULTIPLIER, SRGB_LUMINANCE_OFFSET, SRGB_LUMINANCE_RED, SRGB_LUMINANCE_THRESHOLD, TYPE_HEX, TYPE_HSL, TYPE_HWB, TYPE_RGB };
|
package/dist/color/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Color, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor } from "./models.mjs";
|
|
1
|
+
import { Color, ColorType, ColorTypeExtended, ColorValue, ColorValueExtended, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor } from "./models.mjs";
|
|
2
2
|
import { getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getRgbColor, getRgbaColor } from "./misc/get.mjs";
|
|
3
|
-
import { isColor, isHexColor, isHslColor,
|
|
3
|
+
import { isColor, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isRgbColor, isRgbaColor } from "./misc/is.mjs";
|
|
4
4
|
import { getNormalizedHex, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba } from "./space/hex.mjs";
|
|
5
5
|
import { hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba } from "./space/hsl.mjs";
|
|
6
6
|
import { hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba } from "./space/hwb.mjs";
|
|
@@ -17,4 +17,4 @@ import { rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba } from "./space/rgb.
|
|
|
17
17
|
*/
|
|
18
18
|
declare function getColor(value: unknown): Color;
|
|
19
19
|
//#endregion
|
|
20
|
-
export { type Color, type HSLAColor, type HSLColor, type HWBAColor, type HWBColor, type RGBAColor, type RGBColor, getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getRgbColor, getRgbaColor, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, isColor, isHexColor, isHslColor,
|
|
20
|
+
export { type Color, type ColorType, type ColorTypeExtended, type ColorValue, type ColorValueExtended, type HSLAColor, type HSLColor, type HWBAColor, type HWBColor, type RGBAColor, type RGBColor, getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getRgbColor, getRgbaColor, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, isColor, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isRgbColor, isRgbaColor, rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba };
|
package/dist/color/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getRgbColor, getRgbaColor } from "./misc/get.mjs";
|
|
2
|
-
import { isColor, isHexColor, isHslColor,
|
|
2
|
+
import { isColor, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isRgbColor, isRgbaColor } from "./misc/is.mjs";
|
|
3
3
|
import { rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba } from "./space/rgb.mjs";
|
|
4
4
|
import { getNormalizedHex, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba } from "./space/hex.mjs";
|
|
5
5
|
import { hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba } from "./space/hsl.mjs";
|
|
@@ -19,4 +19,4 @@ function getColor(value) {
|
|
|
19
19
|
return isColor(value) ? value : color(value);
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
|
-
export { getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getRgbColor, getRgbaColor, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, isColor, isHexColor, isHslColor,
|
|
22
|
+
export { getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getRgbColor, getRgbaColor, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, isColor, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isRgbColor, isRgbaColor, rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba };
|
package/dist/color/instance.mjs
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PROPERTY_COLOR } from "./constants.mjs";
|
|
2
2
|
import { getAlpha } from "./misc/alpha.mjs";
|
|
3
|
-
import { getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor } from "./misc/state.mjs";
|
|
3
|
+
import { getColorFromState, getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor } from "./misc/state.mjs";
|
|
4
|
+
import { formatHslColor, formatHwbColor, formatRgbColor } from "./misc/format.mjs";
|
|
4
5
|
//#region src/color/instance.ts
|
|
5
6
|
function color(value) {
|
|
6
7
|
const state = getColorState(value);
|
|
7
8
|
const instance = {
|
|
8
9
|
toHexString: (alpha) => `#${alpha === true ? instance.hexa : instance.hex}`,
|
|
9
|
-
toHslString: (alpha) => formatHslColor(state, alpha
|
|
10
|
-
toHwbString: (alpha) => formatHwbColor(state, alpha
|
|
11
|
-
toRgbString: (alpha) => formatRgbColor(state, alpha
|
|
10
|
+
toHslString: (alpha) => formatHslColor(state, alpha),
|
|
11
|
+
toHwbString: (alpha) => formatHwbColor(state, alpha),
|
|
12
|
+
toRgbString: (alpha) => formatRgbColor(state, alpha),
|
|
12
13
|
toString: () => instance.toHexString()
|
|
13
14
|
};
|
|
14
15
|
Object.defineProperties(instance, {
|
|
15
|
-
|
|
16
|
+
[PROPERTY_COLOR]: {
|
|
16
17
|
enumerable: false,
|
|
17
|
-
|
|
18
|
+
value: true
|
|
18
19
|
},
|
|
19
20
|
alpha: {
|
|
20
21
|
enumerable: true,
|
|
21
22
|
get: () => state.alpha.value,
|
|
22
|
-
set: (value) =>
|
|
23
|
-
if (typeof value === "number" && !Number.isNaN(value)) state.alpha = getAlpha(value);
|
|
24
|
-
}
|
|
23
|
+
set: (value) => setAlphaValue(state, value)
|
|
25
24
|
},
|
|
26
25
|
hex: getProperty("hex", state, false),
|
|
27
26
|
hexa: getProperty("hex", state, true),
|
|
@@ -29,31 +28,34 @@ function color(value) {
|
|
|
29
28
|
hsla: getProperty("hsl", state, true),
|
|
30
29
|
hwb: getProperty("hwb", state, false),
|
|
31
30
|
hwba: getProperty("hwb", state, true),
|
|
31
|
+
origin: {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: () => state.origin
|
|
34
|
+
},
|
|
32
35
|
rgb: getProperty("rgb", state, false),
|
|
33
36
|
rgba: getProperty("rgb", state, true)
|
|
34
37
|
});
|
|
35
38
|
return Object.freeze(instance);
|
|
36
39
|
}
|
|
37
|
-
function getHex(state, alpha) {
|
|
38
|
-
return alpha ? `${state.hex}${state.alpha.hex}` : state.hex;
|
|
39
|
-
}
|
|
40
40
|
function getProperty(space, state, alpha) {
|
|
41
|
-
const
|
|
41
|
+
const setValue = setters[space];
|
|
42
42
|
return {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: () =>
|
|
45
|
-
|
|
46
|
-
if (typeof value === "string") return getHex(state, alpha);
|
|
47
|
-
return alpha ? {
|
|
48
|
-
...value,
|
|
49
|
-
alpha: state.alpha.value
|
|
50
|
-
} : { ...value };
|
|
51
|
-
},
|
|
52
|
-
set: (value) => {
|
|
53
|
-
setter(state, value, alpha);
|
|
54
|
-
}
|
|
44
|
+
get: () => getValue(space, state, alpha),
|
|
45
|
+
set: (value) => setValue(state, value, alpha)
|
|
55
46
|
};
|
|
56
47
|
}
|
|
48
|
+
function getValue(space, state, alpha) {
|
|
49
|
+
const value = getColorFromState(state, space);
|
|
50
|
+
if (typeof value === "string") return alpha ? `${value}${state.alpha.hex}` : value;
|
|
51
|
+
return alpha ? {
|
|
52
|
+
...value,
|
|
53
|
+
alpha: state.alpha.value
|
|
54
|
+
} : { ...value };
|
|
55
|
+
}
|
|
56
|
+
function setAlphaValue(state, value) {
|
|
57
|
+
if (typeof value === "number" && !Number.isNaN(value)) state.alpha = getAlpha(value, false);
|
|
58
|
+
}
|
|
57
59
|
const setters = {
|
|
58
60
|
hex: setHexColor,
|
|
59
61
|
hsl: setHSLColor,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Alpha } from "../models.mjs";
|
|
2
2
|
//#region src/color/misc/alpha.d.ts
|
|
3
|
-
declare function getAlpha(value: unknown): Alpha;
|
|
3
|
+
declare function getAlpha(value: unknown, hex: boolean): Alpha;
|
|
4
4
|
declare function getAlphaHexadecimal(value: number): string;
|
|
5
5
|
declare function getAlphaValue(original: number): number;
|
|
6
6
|
//#endregion
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { clamp } from "../../internal/number.mjs";
|
|
2
|
+
import { ALPHA_FULL_HEX_LONG, DEFAULT_ALPHA, EXPRESSION_ALPHA_HEX } from "../constants.mjs";
|
|
1
3
|
import { round } from "../../internal/math/misc.mjs";
|
|
2
|
-
import
|
|
4
|
+
import "../../index.mjs";
|
|
3
5
|
//#region src/color/misc/alpha.ts
|
|
4
|
-
function getAlpha(value) {
|
|
6
|
+
function getAlpha(value, hex) {
|
|
5
7
|
if (typeof value === "number") return getAlphaFromValue(value);
|
|
6
|
-
if (typeof value
|
|
8
|
+
if (typeof value !== "string" || value.toLowerCase() === ALPHA_FULL_HEX_LONG) return { ...DEFAULT_ALPHA };
|
|
9
|
+
if (hex && EXPRESSION_ALPHA_HEX.test(value)) return {
|
|
7
10
|
hex: value,
|
|
8
11
|
value: Number.parseInt(value, 16) / 255
|
|
9
12
|
};
|
|
10
|
-
return
|
|
13
|
+
return getAlphaFromValue(Number.parseFloat(value));
|
|
11
14
|
}
|
|
12
15
|
function getAlphaHexadecimal(value) {
|
|
13
16
|
if (value === 0) return "00";
|
|
14
17
|
if (value === 100) return ALPHA_FULL_HEX_LONG;
|
|
15
|
-
return round(value * 255).toString(16);
|
|
18
|
+
return round(value / 100 * 255).toString(16);
|
|
16
19
|
}
|
|
17
20
|
function getAlphaFromValue(value) {
|
|
18
21
|
const alpha = getAlphaValue(value);
|
|
@@ -22,8 +25,8 @@ function getAlphaFromValue(value) {
|
|
|
22
25
|
};
|
|
23
26
|
}
|
|
24
27
|
function getAlphaValue(original) {
|
|
25
|
-
if (Number.isNaN(original)
|
|
26
|
-
return original
|
|
28
|
+
if (Number.isNaN(original)) return 100;
|
|
29
|
+
return clamp(original, 0, 100);
|
|
27
30
|
}
|
|
28
31
|
//#endregion
|
|
29
32
|
export { getAlpha, getAlphaHexadecimal, getAlphaValue };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ColorState } from "../models.mjs";
|
|
2
|
+
//#region src/color/misc/format.d.ts
|
|
3
|
+
declare function formatHslColor(state: ColorState, alpha?: boolean): string;
|
|
4
|
+
declare function formatHwbColor(state: ColorState, alpha?: boolean): string;
|
|
5
|
+
declare function formatRgbColor(state: ColorState, alpha?: boolean): string;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { formatHslColor, formatHwbColor, formatRgbColor };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "../constants.mjs";
|
|
2
|
+
import { getColorFromState } from "./state.mjs";
|
|
3
|
+
//#region src/color/misc/format.ts
|
|
4
|
+
function formatHslColor(state, alpha) {
|
|
5
|
+
const { hue, lightness, saturation } = getColorFromState(state, "hsl");
|
|
6
|
+
return `hsl(${hue}deg ${saturation}% ${lightness}%${getSuffix(state, alpha)})`;
|
|
7
|
+
}
|
|
8
|
+
function formatHwbColor(state, alpha) {
|
|
9
|
+
const { blackness, hue, whiteness } = getColorFromState(state, "hwb");
|
|
10
|
+
return `hwb(${hue}deg ${whiteness}% ${blackness}%${getSuffix(state, alpha)})`;
|
|
11
|
+
}
|
|
12
|
+
function formatRgbColor(state, alpha) {
|
|
13
|
+
const { blue, green, red } = getColorFromState(state, "rgb");
|
|
14
|
+
return `rgb(${red} ${green} ${blue}${getSuffix(state, alpha)})`;
|
|
15
|
+
}
|
|
16
|
+
function getSuffix(state, alpha) {
|
|
17
|
+
return alpha === true ? ` / ${state.alpha.value}%` : "";
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { formatHslColor, formatHwbColor, formatRgbColor };
|
package/dist/color/misc/get.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { clamp } from "../../internal/number.mjs";
|
|
2
|
-
import { round } from "../../internal/math/misc.mjs";
|
|
3
2
|
import { HEX_BLACK, HEX_WHITE, SRGB_LUMINANCE_EXPONENT, SRGB_LUMINANCE_MODIFIER, SRGB_LUMINANCE_MULTIPLIER, SRGB_LUMINANCE_OFFSET } from "../constants.mjs";
|
|
4
|
-
import {
|
|
3
|
+
import { round } from "../../internal/math/misc.mjs";
|
|
4
|
+
import { getColorFromState, getColorState } from "./state.mjs";
|
|
5
5
|
import { color } from "../instance.mjs";
|
|
6
6
|
//#region src/color/misc/get.ts
|
|
7
7
|
function getClampedValue(value, minimum, maximum, rounding) {
|
|
8
8
|
return typeof value === "number" && !Number.isNaN(value) ? clamp(rounding ?? false ? round(value) : value, minimum, maximum) : minimum;
|
|
9
9
|
}
|
|
10
10
|
function getForegroundColor(value, hex) {
|
|
11
|
-
const { blue, green, red } = getColorState(value)
|
|
11
|
+
const { blue, green, red } = getColorFromState(getColorState(value), "rgb");
|
|
12
12
|
const values = [
|
|
13
13
|
blue / 255,
|
|
14
14
|
green / 255,
|
|
@@ -46,7 +46,7 @@ function getHexaColor(value) {
|
|
|
46
46
|
* @returns Hex color string
|
|
47
47
|
*/
|
|
48
48
|
function getHexColor(value) {
|
|
49
|
-
return getColorState(value)
|
|
49
|
+
return getColorFromState(getColorState(value), "hex");
|
|
50
50
|
}
|
|
51
51
|
function getHexValue(value) {
|
|
52
52
|
return getClampedValue(value, 0, 255, true);
|
|
@@ -64,10 +64,10 @@ function getDegrees(value) {
|
|
|
64
64
|
* @returns _HSLA_ color
|
|
65
65
|
*/
|
|
66
66
|
function getHslaColor(value) {
|
|
67
|
-
const
|
|
67
|
+
const state = getColorState(value);
|
|
68
68
|
return {
|
|
69
|
-
...hsl,
|
|
70
|
-
alpha: alpha.value
|
|
69
|
+
...getColorFromState(state, "hsl"),
|
|
70
|
+
alpha: state.alpha.value
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
@@ -80,7 +80,7 @@ function getHslaColor(value) {
|
|
|
80
80
|
* @returns _HWB_ color
|
|
81
81
|
*/
|
|
82
82
|
function getHwbColor(value) {
|
|
83
|
-
return getColorState(value)
|
|
83
|
+
return getColorFromState(getColorState(value), "hwb");
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
86
|
* Get the _HWBA_ color from any kind of value
|
|
@@ -92,10 +92,10 @@ function getHwbColor(value) {
|
|
|
92
92
|
* @returns _HWBA_ color
|
|
93
93
|
*/
|
|
94
94
|
function getHwbaColor(value) {
|
|
95
|
-
const
|
|
95
|
+
const state = getColorState(value);
|
|
96
96
|
return {
|
|
97
|
-
...hwb,
|
|
98
|
-
alpha: alpha.value
|
|
97
|
+
...getColorFromState(state, "hwb"),
|
|
98
|
+
alpha: state.alpha.value
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
@@ -108,7 +108,7 @@ function getHwbaColor(value) {
|
|
|
108
108
|
* @returns _HSL_ color
|
|
109
109
|
*/
|
|
110
110
|
function getHslColor(value) {
|
|
111
|
-
return getColorState(value)
|
|
111
|
+
return getColorFromState(getColorState(value), "hsl");
|
|
112
112
|
}
|
|
113
113
|
function getPercentage(value) {
|
|
114
114
|
return getClampedValue(value, 0, 100);
|
|
@@ -123,10 +123,10 @@ function getPercentage(value) {
|
|
|
123
123
|
* @returns _RGBA_ color
|
|
124
124
|
*/
|
|
125
125
|
function getRgbaColor(value) {
|
|
126
|
-
const
|
|
126
|
+
const state = getColorState(value);
|
|
127
127
|
return {
|
|
128
|
-
...rgb,
|
|
129
|
-
alpha: alpha.value
|
|
128
|
+
...getColorFromState(state, "rgb"),
|
|
129
|
+
alpha: state.alpha.value
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
@@ -139,7 +139,7 @@ function getRgbaColor(value) {
|
|
|
139
139
|
* @returns _RGB_ color
|
|
140
140
|
*/
|
|
141
141
|
function getRgbColor(value) {
|
|
142
|
-
return getColorState(value)
|
|
142
|
+
return getColorFromState(getColorState(value), "rgb");
|
|
143
143
|
}
|
|
144
144
|
//#endregion
|
|
145
145
|
export { getDegrees, getForegroundColor, getHexColor, getHexValue, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getPercentage, getRgbColor, getRgbaColor };
|
package/dist/color/misc/is.d.mts
CHANGED
|
@@ -31,12 +31,6 @@ declare function isHexColor(value: unknown, alpha?: boolean): value is string;
|
|
|
31
31
|
* @returns `true` if the value is an _HSLA_ color, otherwise `false`
|
|
32
32
|
*/
|
|
33
33
|
declare function isHslaColor(value: unknown): value is HSLAColor;
|
|
34
|
-
/**
|
|
35
|
-
* Is the value like an _HSLA_ color?
|
|
36
|
-
*
|
|
37
|
-
* @param value Value to check
|
|
38
|
-
* @returns `true` if the value is like an _HSLA_ color, otherwise `false`
|
|
39
|
-
*/
|
|
40
34
|
declare function isHslaLike(value: unknown): value is Record<keyof HSLAColor, unknown>;
|
|
41
35
|
/**
|
|
42
36
|
* Is the value an _HSL_ color?
|
|
@@ -45,12 +39,6 @@ declare function isHslaLike(value: unknown): value is Record<keyof HSLAColor, un
|
|
|
45
39
|
* @returns `true` if the value is an _HSL_ color, otherwise `false`
|
|
46
40
|
*/
|
|
47
41
|
declare function isHslColor(value: unknown): value is HSLColor;
|
|
48
|
-
/**
|
|
49
|
-
* Is the value like an _HSL_ color?
|
|
50
|
-
*
|
|
51
|
-
* @param value Value to check
|
|
52
|
-
* @returns `true` if the value is like an _HSL_ color, otherwise `false`
|
|
53
|
-
*/
|
|
54
42
|
declare function isHslLike(value: unknown): value is Record<keyof HSLColor, unknown>;
|
|
55
43
|
/**
|
|
56
44
|
* Is the value an _HWBA_ color?
|
|
@@ -59,12 +47,6 @@ declare function isHslLike(value: unknown): value is Record<keyof HSLColor, unkn
|
|
|
59
47
|
* @returns `true` if the value is an _HWBA_ color, otherwise `false`
|
|
60
48
|
*/
|
|
61
49
|
declare function isHwbaColor(value: unknown): value is HWBAColor;
|
|
62
|
-
/**
|
|
63
|
-
* Is the value like an _HWBA_ color?
|
|
64
|
-
*
|
|
65
|
-
* @param value Value to check
|
|
66
|
-
* @returns `true` if the value is like an _HWBA_ color, otherwise `false`
|
|
67
|
-
*/
|
|
68
50
|
declare function isHwbaLike(value: unknown): value is Record<keyof HWBAColor, unknown>;
|
|
69
51
|
/**
|
|
70
52
|
* Is the value an _HWB_ color?
|
|
@@ -73,12 +55,6 @@ declare function isHwbaLike(value: unknown): value is Record<keyof HWBAColor, un
|
|
|
73
55
|
* @returns `true` if the value is an _HWB_ color, otherwise `false`
|
|
74
56
|
*/
|
|
75
57
|
declare function isHwbColor(value: unknown): value is HWBColor;
|
|
76
|
-
/**
|
|
77
|
-
* Is the value like an _HWB_ color?
|
|
78
|
-
*
|
|
79
|
-
* @param value Value to check
|
|
80
|
-
* @returns `true` if the value is like an _HWB_ color, otherwise `false`
|
|
81
|
-
*/
|
|
82
58
|
declare function isHwbLike(value: unknown): value is Record<keyof HWBColor, unknown>;
|
|
83
59
|
/**
|
|
84
60
|
* Is the value an _RGBA_ color?
|
|
@@ -87,12 +63,6 @@ declare function isHwbLike(value: unknown): value is Record<keyof HWBColor, unkn
|
|
|
87
63
|
* @returns `true` if the value is an _RGBA_ color, otherwise `false`
|
|
88
64
|
*/
|
|
89
65
|
declare function isRgbaColor(value: unknown): value is RGBAColor;
|
|
90
|
-
/**
|
|
91
|
-
* Is the value like an _RGBA_ color?
|
|
92
|
-
*
|
|
93
|
-
* @param value Value to check
|
|
94
|
-
* @returns `true` if the value is like an _RGBA_ color, otherwise `false`
|
|
95
|
-
*/
|
|
96
66
|
declare function isRgbaLike(value: unknown): value is Record<keyof RGBAColor, unknown>;
|
|
97
67
|
/**
|
|
98
68
|
* Is the value an _RGB_ color?
|
|
@@ -101,12 +71,6 @@ declare function isRgbaLike(value: unknown): value is Record<keyof RGBAColor, un
|
|
|
101
71
|
* @returns `true` if the value is an _RGB_ color, otherwise `false`
|
|
102
72
|
*/
|
|
103
73
|
declare function isRgbColor(value: unknown): value is RGBColor;
|
|
104
|
-
/**
|
|
105
|
-
* Is the value like an _RGB_ color?
|
|
106
|
-
*
|
|
107
|
-
* @param value Value to check
|
|
108
|
-
* @returns `true` if the value is like an _RGB_ color, otherwise `false`
|
|
109
|
-
*/
|
|
110
74
|
declare function isRgbLike(value: unknown): value is Record<keyof RGBColor, unknown>;
|
|
111
75
|
//#endregion
|
|
112
76
|
export { isColor, isHexColor, isHslColor, isHslLike, isHslaColor, isHslaLike, isHwbColor, isHwbLike, isHwbaColor, isHwbaLike, isRgbColor, isRgbLike, isRgbaColor, isRgbaLike };
|
package/dist/color/misc/is.mjs
CHANGED
|
@@ -17,7 +17,7 @@ function isBytey(value) {
|
|
|
17
17
|
* @returns `true` if the value is a _Color_, otherwise `false`
|
|
18
18
|
*/
|
|
19
19
|
function isColor(value) {
|
|
20
|
-
return typeof value === "object" && value !== null && "$color" in value && value
|
|
20
|
+
return typeof value === "object" && value !== null && "$color" in value && value["$color"] === true;
|
|
21
21
|
}
|
|
22
22
|
function isColorValue(obj, properties) {
|
|
23
23
|
if (typeof obj !== "object" || obj === null) return false;
|
|
@@ -67,12 +67,6 @@ function isHexColor(value, alpha) {
|
|
|
67
67
|
function isHslaColor(value) {
|
|
68
68
|
return isColorValue(value, KEYS_HSLA);
|
|
69
69
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Is the value like an _HSLA_ color?
|
|
72
|
-
*
|
|
73
|
-
* @param value Value to check
|
|
74
|
-
* @returns `true` if the value is like an _HSLA_ color, otherwise `false`
|
|
75
|
-
*/
|
|
76
70
|
function isHslaLike(value) {
|
|
77
71
|
return hasKeys(value, KEYS_HSLA);
|
|
78
72
|
}
|
|
@@ -85,12 +79,6 @@ function isHslaLike(value) {
|
|
|
85
79
|
function isHslColor(value) {
|
|
86
80
|
return isColorValue(value, KEYS_HSLA) || isColorValue(value, KEYS_HSL);
|
|
87
81
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Is the value like an _HSL_ color?
|
|
90
|
-
*
|
|
91
|
-
* @param value Value to check
|
|
92
|
-
* @returns `true` if the value is like an _HSL_ color, otherwise `false`
|
|
93
|
-
*/
|
|
94
82
|
function isHslLike(value) {
|
|
95
83
|
return hasKeys(value, KEYS_HSL);
|
|
96
84
|
}
|
|
@@ -103,12 +91,6 @@ function isHslLike(value) {
|
|
|
103
91
|
function isHwbaColor(value) {
|
|
104
92
|
return isColorValue(value, KEYS_HWBA);
|
|
105
93
|
}
|
|
106
|
-
/**
|
|
107
|
-
* Is the value like an _HWBA_ color?
|
|
108
|
-
*
|
|
109
|
-
* @param value Value to check
|
|
110
|
-
* @returns `true` if the value is like an _HWBA_ color, otherwise `false`
|
|
111
|
-
*/
|
|
112
94
|
function isHwbaLike(value) {
|
|
113
95
|
return hasKeys(value, KEYS_HWBA);
|
|
114
96
|
}
|
|
@@ -121,12 +103,6 @@ function isHwbaLike(value) {
|
|
|
121
103
|
function isHwbColor(value) {
|
|
122
104
|
return isColorValue(value, KEYS_HWB) || isColorValue(value, KEYS_HWBA);
|
|
123
105
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Is the value like an _HWB_ color?
|
|
126
|
-
*
|
|
127
|
-
* @param value Value to check
|
|
128
|
-
* @returns `true` if the value is like an _HWB_ color, otherwise `false`
|
|
129
|
-
*/
|
|
130
106
|
function isHwbLike(value) {
|
|
131
107
|
return hasKeys(value, KEYS_HWB);
|
|
132
108
|
}
|
|
@@ -139,12 +115,6 @@ function isHwbLike(value) {
|
|
|
139
115
|
function isRgbaColor(value) {
|
|
140
116
|
return isColorValue(value, KEYS_RGBA);
|
|
141
117
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Is the value like an _RGBA_ color?
|
|
144
|
-
*
|
|
145
|
-
* @param value Value to check
|
|
146
|
-
* @returns `true` if the value is like an _RGBA_ color, otherwise `false`
|
|
147
|
-
*/
|
|
148
118
|
function isRgbaLike(value) {
|
|
149
119
|
return hasKeys(value, KEYS_RGBA);
|
|
150
120
|
}
|
|
@@ -157,12 +127,6 @@ function isRgbaLike(value) {
|
|
|
157
127
|
function isRgbColor(value) {
|
|
158
128
|
return isColorValue(value, KEYS_RGBA) || isColorValue(value, KEYS_RGB);
|
|
159
129
|
}
|
|
160
|
-
/**
|
|
161
|
-
* Is the value like an _RGB_ color?
|
|
162
|
-
*
|
|
163
|
-
* @param value Value to check
|
|
164
|
-
* @returns `true` if the value is like an _RGB_ color, otherwise `false`
|
|
165
|
-
*/
|
|
166
130
|
function isRgbLike(value) {
|
|
167
131
|
return hasKeys(value, KEYS_RGB);
|
|
168
132
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { ColorState } from "../models.mjs";
|
|
1
|
+
import { ColorState, ColorType } from "../models.mjs";
|
|
2
2
|
//#region src/color/misc/state.d.ts
|
|
3
|
+
declare function getColorFromState<Type extends ColorType>(state: ColorState, type: Type): NonNullable<ColorState[Type]>;
|
|
3
4
|
declare function getColorState(value: unknown): ColorState;
|
|
4
5
|
declare function setHexColor(state: ColorState, value: string, alpha: boolean): void;
|
|
5
6
|
declare function setHSLColor(state: ColorState, value: unknown, alpha: boolean): void;
|
|
6
7
|
declare function setHWBColor(state: ColorState, value: unknown, alpha: boolean): void;
|
|
7
8
|
declare function setRGBColor(state: ColorState, value: unknown, alpha: boolean): void;
|
|
8
9
|
//#endregion
|
|
9
|
-
export { getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor };
|
|
10
|
+
export { getColorFromState, getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor };
|