@oscarpalmer/atoms 0.74.1 → 0.76.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/js/array/chunk.cjs +18 -0
- package/dist/js/array/{chunk.mjs → chunk.js} +2 -2
- package/dist/js/array/compact.cjs +6 -0
- package/dist/js/array/{compact.mjs → compact.js} +0 -1
- package/dist/js/array/count.cjs +14 -0
- package/dist/js/array/count.js +14 -0
- package/dist/js/array/exists.cjs +14 -0
- package/dist/js/array/exists.js +14 -0
- package/dist/js/array/filter.cjs +14 -0
- package/dist/js/array/filter.js +14 -0
- package/dist/js/array/find.cjs +14 -0
- package/dist/js/array/find.js +14 -0
- package/dist/js/array/group-by.cjs +35 -0
- package/dist/js/array/group-by.js +35 -0
- package/dist/js/array/index-of.cjs +14 -0
- package/dist/js/array/index-of.js +14 -0
- package/dist/js/array/index.cjs +40 -0
- package/dist/js/array/index.js +34 -381
- package/dist/js/array/insert.cjs +31 -0
- package/dist/js/array/insert.js +31 -0
- package/dist/js/array/models.cjs +1 -0
- package/dist/js/array/models.js +1 -0
- package/dist/js/array/shuffle.cjs +13 -0
- package/dist/js/array/{shuffle.mjs → shuffle.js} +2 -3
- package/dist/js/array/sort.cjs +53 -0
- package/dist/js/array/{sort.mjs → sort.js} +13 -9
- package/dist/js/array/splice.cjs +14 -0
- package/dist/js/array/splice.js +14 -0
- package/dist/js/array/to-map.cjs +27 -0
- package/dist/js/array/to-map.js +27 -0
- package/dist/js/array/to-record.cjs +12 -0
- package/dist/js/array/to-record.js +12 -0
- package/dist/js/array/unique.cjs +7 -0
- package/dist/js/array/unique.js +7 -0
- package/dist/js/colour/base.cjs +18 -0
- package/dist/js/colour/{base.mjs → base.js} +4 -3
- package/dist/js/colour/functions.cjs +96 -0
- package/dist/js/colour/{functions.mjs → functions.js} +18 -19
- package/dist/js/colour/hex.cjs +56 -0
- package/dist/js/colour/{hex.mjs → hex.js} +34 -15
- package/dist/js/colour/hsl.cjs +85 -0
- package/dist/js/colour/{hsl.mjs → hsl.js} +40 -12
- package/dist/js/colour/index.cjs +29 -0
- package/dist/js/colour/index.js +14 -272
- package/dist/js/colour/is.cjs +27 -0
- package/dist/js/colour/{is.mjs → is.js} +7 -6
- package/dist/js/colour/rgb.cjs +87 -0
- package/dist/js/colour/{rgb.mjs → rgb.js} +43 -12
- package/dist/js/{emitter.mjs → emitter.cjs} +88 -56
- package/dist/js/emitter.js +85 -56
- package/dist/js/{function.mjs → function.cjs} +66 -46
- package/dist/js/function.js +61 -48
- package/dist/js/index.cjs +136 -0
- package/dist/js/index.js +133 -1724
- package/dist/js/internal/array/callbacks.cjs +23 -0
- package/dist/js/internal/array/callbacks.js +23 -0
- package/dist/js/internal/array/find.cjs +51 -0
- package/dist/js/internal/array/find.js +51 -0
- package/dist/js/internal/value/handle.cjs +21 -0
- package/dist/js/internal/{value-handle.mjs → value/handle.js} +0 -1
- package/dist/js/{is.mjs → is.cjs} +17 -18
- package/dist/js/is.js +15 -27
- package/dist/js/logger.cjs +108 -0
- package/dist/js/logger.js +44 -8
- package/dist/js/{math.mjs → math.cjs} +7 -8
- package/dist/js/math.js +4 -5
- package/dist/js/models.cjs +1 -0
- package/dist/js/models.js +1 -0
- package/dist/js/{number.mjs → number.cjs} +8 -8
- package/dist/js/number.js +5 -5
- package/dist/js/{query.mjs → query.cjs} +18 -18
- package/dist/js/query.js +17 -86
- package/dist/js/{queue.mjs → queue.cjs} +12 -13
- package/dist/js/queue.js +9 -10
- package/dist/js/{random.mjs → random.cjs} +14 -21
- package/dist/js/random.js +9 -26
- package/dist/js/{sized.mjs → sized.cjs} +68 -33
- package/dist/js/sized.js +66 -38
- package/dist/js/string/case.cjs +41 -0
- package/dist/js/string/{case.mjs → case.js} +13 -9
- package/dist/js/string/index.cjs +59 -0
- package/dist/js/string/index.js +30 -100
- package/dist/js/string/template.cjs +21 -0
- package/dist/js/string/{template.mjs → template.js} +4 -5
- package/dist/js/{touch.mjs → touch.cjs} +4 -7
- package/dist/js/touch.js +3 -5
- package/dist/js/value/clone.cjs +76 -0
- package/dist/js/value/{clone.mjs → clone.js} +5 -6
- package/dist/js/value/compare.cjs +59 -0
- package/dist/js/value/{compare.mjs → compare.js} +4 -6
- package/dist/js/value/diff.cjs +75 -0
- package/dist/js/value/{diff.mjs → diff.js} +13 -11
- package/dist/js/value/equal.cjs +106 -0
- package/dist/js/value/{equal.mjs → equal.js} +13 -8
- package/dist/js/value/get.cjs +21 -0
- package/dist/js/value/{get.mjs → get.js} +9 -4
- package/dist/js/value/index.cjs +30 -0
- package/dist/js/value/index.js +19 -510
- package/dist/js/value/merge.cjs +35 -0
- package/dist/js/value/{merge.mjs → merge.js} +7 -6
- package/dist/js/value/set.cjs +25 -0
- package/dist/js/value/{set.mjs → set.js} +3 -4
- package/dist/js/value/smush.cjs +26 -0
- package/dist/js/value/{smush.mjs → smush.js} +3 -4
- package/dist/js/value/unsmush.cjs +39 -0
- package/dist/js/value/{unsmush.mjs → unsmush.js} +10 -7
- package/package.json +50 -47
- package/src/js/array/chunk.ts +6 -5
- package/src/js/array/compact.ts +8 -10
- package/src/js/array/count.ts +39 -19
- package/src/js/array/exists.ts +39 -15
- package/src/js/array/filter.ts +42 -20
- package/src/js/array/find.ts +45 -20
- package/src/js/array/group-by.ts +158 -27
- package/src/js/array/index-of.ts +40 -18
- package/src/js/array/index.ts +10 -9
- package/src/js/array/insert.ts +28 -14
- package/src/js/array/models.ts +18 -15
- package/src/js/array/shuffle.ts +3 -3
- package/src/js/array/sort.ts +32 -34
- package/src/js/array/splice.ts +22 -26
- package/src/js/array/to-map.ts +133 -45
- package/src/js/array/to-record.ts +137 -39
- package/src/js/array/unique.ts +20 -15
- package/src/js/colour/base.ts +3 -3
- package/src/js/colour/functions.ts +4 -6
- package/src/js/colour/hex.ts +5 -5
- package/src/js/colour/hsl.ts +18 -12
- package/src/js/colour/index.ts +1 -1
- package/src/js/colour/is.ts +3 -3
- package/src/js/colour/rgb.ts +17 -11
- package/src/js/emitter.ts +12 -9
- package/src/js/function.ts +17 -17
- package/src/js/index.ts +16 -16
- package/src/js/internal/array/callbacks.ts +33 -0
- package/src/js/internal/{array-find.ts → array/find.ts} +23 -24
- package/src/js/internal/{value-handle.ts → value/handle.ts} +1 -1
- package/src/js/is.ts +2 -2
- package/src/js/logger.ts +14 -14
- package/src/js/math.ts +1 -1
- package/src/js/models.ts +5 -5
- package/src/js/number.ts +2 -2
- package/src/js/query.ts +6 -10
- package/src/js/queue.ts +1 -1
- package/src/js/random.ts +9 -19
- package/src/js/sized.ts +145 -145
- package/src/js/string/case.ts +1 -1
- package/src/js/string/index.ts +13 -7
- package/src/js/string/template.ts +6 -3
- package/src/js/value/clone.ts +3 -7
- package/src/js/value/compare.ts +3 -5
- package/src/js/value/diff.ts +4 -4
- package/src/js/value/equal.ts +2 -2
- package/src/js/value/get.ts +3 -3
- package/src/js/value/index.ts +2 -2
- package/src/js/value/merge.ts +3 -3
- package/src/js/value/set.ts +3 -4
- package/src/js/value/smush.ts +4 -4
- package/src/js/value/unsmush.ts +4 -4
- package/types/array/chunk.d.cts +8 -0
- package/types/array/chunk.d.ts +2 -2
- package/types/array/compact.d.cts +12 -0
- package/types/array/compact.d.ts +4 -4
- package/types/array/count.d.cts +24 -0
- package/types/array/count.d.ts +13 -7
- package/types/array/exists.d.cts +26 -0
- package/types/array/exists.d.ts +11 -3
- package/types/array/filter.d.cts +26 -0
- package/types/array/filter.d.ts +14 -6
- package/types/array/find.d.cts +26 -0
- package/types/array/find.d.ts +14 -6
- package/types/array/group-by.d.cts +58 -0
- package/types/array/group-by.d.ts +49 -5
- package/types/array/index-of.d.cts +26 -0
- package/types/array/index-of.d.ts +14 -6
- package/types/array/index.d.cts +239 -95
- package/types/array/index.d.ts +7 -6
- package/types/array/insert.d.cts +16 -0
- package/types/array/insert.d.ts +10 -5
- package/types/array/models.d.cts +14 -11
- package/types/array/models.d.ts +14 -12
- package/types/array/shuffle.d.cts +8 -0
- package/types/array/shuffle.d.ts +2 -2
- package/types/array/sort.d.cts +24 -0
- package/types/array/sort.d.ts +10 -10
- package/types/array/splice.d.cts +22 -0
- package/types/array/splice.d.ts +4 -4
- package/types/array/to-map.d.cts +61 -0
- package/types/array/to-map.d.ts +42 -20
- package/types/array/to-record.d.cts +61 -0
- package/types/array/to-record.d.ts +42 -20
- package/types/array/unique.d.cts +21 -0
- package/types/array/unique.d.ts +10 -6
- package/types/colour/base.d.cts +153 -0
- package/types/colour/base.d.ts +2 -2
- package/types/colour/functions.d.cts +173 -0
- package/types/colour/functions.d.ts +3 -3
- package/types/colour/hex.d.cts +157 -0
- package/types/colour/hex.d.ts +4 -4
- package/types/colour/hsl.d.cts +157 -0
- package/types/colour/hsl.d.ts +16 -10
- package/types/colour/index.d.cts +28 -16
- package/types/colour/index.d.ts +1 -1
- package/types/colour/is.d.cts +170 -0
- package/types/colour/is.d.ts +3 -3
- package/types/colour/rgb.d.cts +157 -0
- package/types/colour/rgb.d.ts +15 -9
- package/types/emitter.d.cts +11 -8
- package/types/emitter.d.ts +11 -8
- package/types/function.d.cts +10 -10
- package/types/function.d.ts +11 -11
- package/types/index.d.cts +1120 -736
- package/types/index.d.ts +16 -16
- package/types/internal/array/callbacks.d.cts +11 -0
- package/types/internal/array/callbacks.d.ts +2 -0
- package/types/internal/array/find.d.cts +7 -0
- package/types/internal/array/find.d.ts +3 -0
- package/types/internal/value/handle.d.cts +37 -0
- package/types/internal/{value-handle.d.ts → value/handle.d.ts} +1 -1
- package/types/is.d.ts +1 -1
- package/types/logger.d.cts +13 -21
- package/types/logger.d.ts +13 -21
- package/types/math.d.cts +1 -1
- package/types/math.d.ts +1 -1
- package/types/models.d.cts +4 -4
- package/types/models.d.ts +1 -4
- package/types/number.d.cts +2 -2
- package/types/number.d.ts +2 -2
- package/types/query.d.cts +2 -2
- package/types/query.d.ts +3 -3
- package/types/queue.d.cts +1 -1
- package/types/queue.d.ts +1 -1
- package/types/random.d.cts +8 -12
- package/types/random.d.ts +8 -12
- package/types/sized.d.cts +6 -6
- package/types/sized.d.ts +6 -6
- package/types/string/case.d.cts +28 -0
- package/types/string/index.d.cts +30 -27
- package/types/string/index.d.ts +3 -3
- package/types/string/template.d.cts +50 -0
- package/types/string/template.d.ts +4 -1
- package/types/value/clone.d.cts +8 -0
- package/types/value/clone.d.ts +4 -2
- package/types/value/compare.d.cts +8 -0
- package/types/value/diff.d.cts +25 -0
- package/types/value/equal.d.cts +12 -0
- package/types/value/get.d.cts +1319 -0
- package/types/value/get.d.ts +1 -1
- package/types/value/index.d.cts +8 -6
- package/types/value/index.d.ts +2 -2
- package/types/value/merge.d.cts +72 -0
- package/types/value/merge.d.ts +2 -2
- package/types/value/set.d.cts +1011 -0
- package/types/value/set.d.ts +1 -1
- package/types/value/smush.d.cts +1368 -0
- package/types/value/smush.d.ts +2 -2
- package/types/value/unsmush.d.cts +141 -0
- package/types/value/unsmush.d.ts +2 -2
- package/dist/js/array/count.mjs +0 -8
- package/dist/js/array/exists.mjs +0 -8
- package/dist/js/array/filter.mjs +0 -8
- package/dist/js/array/find.mjs +0 -8
- package/dist/js/array/group-by.mjs +0 -33
- package/dist/js/array/index-of.mjs +0 -8
- package/dist/js/array/index.mjs +0 -34
- package/dist/js/array/insert.mjs +0 -22
- package/dist/js/array/models.mjs +0 -0
- package/dist/js/array/splice.mjs +0 -9
- package/dist/js/array/to-map.mjs +0 -27
- package/dist/js/array/to-record.mjs +0 -8
- package/dist/js/array/unique.mjs +0 -8
- package/dist/js/colour/index.mjs +0 -30
- package/dist/js/index.mjs +0 -17
- package/dist/js/internal/array-callbacks.mjs +0 -19
- package/dist/js/internal/array-find.mjs +0 -51
- package/dist/js/logger.mjs +0 -69
- package/dist/js/models.mjs +0 -0
- package/dist/js/string/index.mjs +0 -44
- package/dist/js/value/index.mjs +0 -23
- package/src/js/internal/array-callbacks.ts +0 -28
- package/types/internal/array-callbacks.d.ts +0 -2
- package/types/internal/array-find.d.ts +0 -4
package/dist/js/colour/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { HexColour, getHexColour } from "./hex.js";
|
|
2
|
+
import { HSLColour, getHSLColour } from "./hsl.js";
|
|
3
|
+
import { isColour, isHSLColour, isHexColour, isRGBColour } from "./is.js";
|
|
4
|
+
import { RGBColour, getRGBColour } from "./rgb.js";
|
|
2
5
|
function getForegroundColour(value) {
|
|
3
6
|
const values = [value.blue / 255, value.green / 255, value.red / 255];
|
|
4
7
|
for (let colour of values) {
|
|
@@ -11,277 +14,16 @@ function getForegroundColour(value) {
|
|
|
11
14
|
const luminance = 0.2126 * values[2] + 0.7152 * values[1] + 0.0722 * values[0];
|
|
12
15
|
return luminance > 0.625 ? "black" : "white";
|
|
13
16
|
}
|
|
14
|
-
|
|
15
|
-
// src/js/number.ts
|
|
16
|
-
function clamp(value, min, max, loop) {
|
|
17
|
-
if (value < min) {
|
|
18
|
-
return loop === true ? max : min;
|
|
19
|
-
}
|
|
20
|
-
return value > max ? loop === true ? min : max : value;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// src/js/colour/is.ts
|
|
24
|
-
function isColour(value) {
|
|
25
|
-
return isInstance(/^(hex|hsl|rgb)$/, value);
|
|
26
|
-
}
|
|
27
|
-
function isColourValue(value, properties) {
|
|
28
|
-
return typeof value === "object" && value !== null && properties.every((property) => (property in value) && typeof value[property] === "number");
|
|
29
|
-
}
|
|
30
|
-
function isHexColour(value) {
|
|
31
|
-
return isInstance(/^hex$/, value);
|
|
32
|
-
}
|
|
33
|
-
function isHSLColour(value) {
|
|
34
|
-
return isInstance(/^hsl$/, value);
|
|
35
|
-
}
|
|
36
|
-
function isInstance(pattern, value) {
|
|
37
|
-
return typeof value === "object" && value !== null && "$colour" in value && typeof value.$colour === "string" && pattern.test(value.$colour);
|
|
38
|
-
}
|
|
39
|
-
function isRGBColour(value) {
|
|
40
|
-
return isInstance(/^rgb$/, value);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// src/js/colour/base.ts
|
|
44
|
-
class Colour {
|
|
45
|
-
get value() {
|
|
46
|
-
return { ...this.state.value };
|
|
47
|
-
}
|
|
48
|
-
constructor(type, value, defaults, properties) {
|
|
49
|
-
this.$colour = type;
|
|
50
|
-
this.state = {
|
|
51
|
-
value: isColourValue(value, properties) ? { ...value } : { ...defaults }
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// src/js/colour/hsl.ts
|
|
57
|
-
function getHSLColour(value) {
|
|
58
|
-
return new HSLColour(value);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
class HSLColour extends Colour {
|
|
62
|
-
get hue() {
|
|
63
|
-
return +this.state.value.hue;
|
|
64
|
-
}
|
|
65
|
-
set hue(value) {
|
|
66
|
-
this.state.value.hue = clamp(value, 0, 360);
|
|
67
|
-
}
|
|
68
|
-
get lightness() {
|
|
69
|
-
return +this.state.value.lightness;
|
|
70
|
-
}
|
|
71
|
-
set lightness(value) {
|
|
72
|
-
this.state.value.lightness = clamp(value, 0, 100);
|
|
73
|
-
}
|
|
74
|
-
get saturation() {
|
|
75
|
-
return +this.state.value.saturation;
|
|
76
|
-
}
|
|
77
|
-
set saturation(value) {
|
|
78
|
-
this.state.value.saturation = clamp(value, 0, 100);
|
|
79
|
-
}
|
|
80
|
-
constructor(value) {
|
|
81
|
-
super("hsl", value, defaults, properties);
|
|
82
|
-
}
|
|
83
|
-
toHex() {
|
|
84
|
-
return HSLColour.toRgb(this.state.value).toHex();
|
|
85
|
-
}
|
|
86
|
-
toRgb() {
|
|
87
|
-
return HSLColour.toRgb(this.state.value);
|
|
88
|
-
}
|
|
89
|
-
toString() {
|
|
90
|
-
return `hsl(${this.state.value.hue}, ${this.state.value.saturation}%, ${this.state.value.lightness}%)`;
|
|
91
|
-
}
|
|
92
|
-
static toRgb(value) {
|
|
93
|
-
return hslToRgb(value);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
var defaults = {
|
|
97
|
-
hue: 0,
|
|
98
|
-
lightness: 0,
|
|
99
|
-
saturation: 0
|
|
100
|
-
};
|
|
101
|
-
var properties = [
|
|
102
|
-
"hue",
|
|
103
|
-
"lightness",
|
|
104
|
-
"saturation"
|
|
105
|
-
];
|
|
106
|
-
|
|
107
|
-
// src/js/colour/rgb.ts
|
|
108
|
-
function getRGBColour(value) {
|
|
109
|
-
return new RGBColour(value);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
class RGBColour extends Colour {
|
|
113
|
-
get blue() {
|
|
114
|
-
return +this.state.value.blue;
|
|
115
|
-
}
|
|
116
|
-
set blue(value) {
|
|
117
|
-
this.state.value.blue = clamp(value, 0, 255);
|
|
118
|
-
}
|
|
119
|
-
get green() {
|
|
120
|
-
return +this.state.value.green;
|
|
121
|
-
}
|
|
122
|
-
set green(value) {
|
|
123
|
-
this.state.value.green = clamp(value, 0, 255);
|
|
124
|
-
}
|
|
125
|
-
get red() {
|
|
126
|
-
return +this.state.value.red;
|
|
127
|
-
}
|
|
128
|
-
set red(value) {
|
|
129
|
-
this.state.value.red = clamp(value, 0, 255);
|
|
130
|
-
}
|
|
131
|
-
constructor(value) {
|
|
132
|
-
super("rgb", value, defaults2, properties2);
|
|
133
|
-
}
|
|
134
|
-
toHex() {
|
|
135
|
-
return RGBColour.toHex(this.value);
|
|
136
|
-
}
|
|
137
|
-
toHsl() {
|
|
138
|
-
return RGBColour.toHsl(this.value);
|
|
139
|
-
}
|
|
140
|
-
toString() {
|
|
141
|
-
return `rgb(${this.value.red}, ${this.value.green}, ${this.value.blue})`;
|
|
142
|
-
}
|
|
143
|
-
static toHex(value) {
|
|
144
|
-
return rgbToHex(value);
|
|
145
|
-
}
|
|
146
|
-
static toHsl(rgb) {
|
|
147
|
-
return rgbToHsl(rgb);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
var defaults2 = {
|
|
151
|
-
blue: 0,
|
|
152
|
-
green: 0,
|
|
153
|
-
red: 0
|
|
154
|
-
};
|
|
155
|
-
var properties2 = ["blue", "green", "red"];
|
|
156
|
-
|
|
157
|
-
// src/js/colour/functions.ts
|
|
158
|
-
function getNormalisedHex(value) {
|
|
159
|
-
const normalised = value.replace(/^#/, "");
|
|
160
|
-
return normalised.length === 3 ? normalised.split("").map((character) => character.repeat(2)).join("") : normalised;
|
|
161
|
-
}
|
|
162
|
-
function hexToRgb(value) {
|
|
163
|
-
const hex = anyPattern.test(value) ? getNormalisedHex(value) : "";
|
|
164
|
-
const pairs = groupedPattern.exec(hex) ?? [];
|
|
165
|
-
const rgb = [];
|
|
166
|
-
const { length } = pairs;
|
|
167
|
-
for (let index = 1;index < length; index += 1) {
|
|
168
|
-
rgb.push(Number.parseInt(pairs[index], 16));
|
|
169
|
-
}
|
|
170
|
-
return new RGBColour({
|
|
171
|
-
blue: rgb[2] ?? 0,
|
|
172
|
-
green: rgb[1] ?? 0,
|
|
173
|
-
red: rgb[0] ?? 0
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
function hslToRgb(value) {
|
|
177
|
-
let hue = value.hue % 360;
|
|
178
|
-
if (hue < 0) {
|
|
179
|
-
hue += 360;
|
|
180
|
-
}
|
|
181
|
-
const saturation = value.saturation / 100;
|
|
182
|
-
const lightness = value.lightness / 100;
|
|
183
|
-
function get(value2) {
|
|
184
|
-
const part = (value2 + hue / 30) % 12;
|
|
185
|
-
const mod = saturation * Math.min(lightness, 1 - lightness);
|
|
186
|
-
return lightness - mod * Math.max(-1, Math.min(part - 3, 9 - part, 1));
|
|
187
|
-
}
|
|
188
|
-
return new RGBColour({
|
|
189
|
-
blue: clamp(Math.round(get(4) * 255), 0, 255),
|
|
190
|
-
green: clamp(Math.round(get(8) * 255), 0, 255),
|
|
191
|
-
red: clamp(Math.round(get(0) * 255), 0, 255)
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
function rgbToHex(value) {
|
|
195
|
-
return new HexColour(`${[value.red, value.green, value.blue].map((colour) => {
|
|
196
|
-
const hex = colour.toString(16);
|
|
197
|
-
return hex.length === 1 ? `0${hex}` : hex;
|
|
198
|
-
}).join("")}`);
|
|
199
|
-
}
|
|
200
|
-
function rgbToHsl(rgb) {
|
|
201
|
-
const blue = rgb.blue / 255;
|
|
202
|
-
const green = rgb.green / 255;
|
|
203
|
-
const red = rgb.red / 255;
|
|
204
|
-
const max = Math.max(blue, green, red);
|
|
205
|
-
const min = Math.min(blue, green, red);
|
|
206
|
-
const delta = max - min;
|
|
207
|
-
const lightness = (min + max) / 2;
|
|
208
|
-
let hue = 0;
|
|
209
|
-
let saturation = 0;
|
|
210
|
-
if (delta !== 0) {
|
|
211
|
-
saturation = lightness === 0 || lightness === 1 ? 0 : (max - lightness) / Math.min(lightness, 1 - lightness);
|
|
212
|
-
switch (max) {
|
|
213
|
-
case blue:
|
|
214
|
-
hue = (red - green) / delta + 4;
|
|
215
|
-
break;
|
|
216
|
-
case green:
|
|
217
|
-
hue = (blue - red) / delta + 2;
|
|
218
|
-
break;
|
|
219
|
-
case red:
|
|
220
|
-
hue = (green - blue) / delta + (green < blue ? 6 : 0);
|
|
221
|
-
break;
|
|
222
|
-
default:
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
hue *= 60;
|
|
226
|
-
}
|
|
227
|
-
if (saturation < 0) {
|
|
228
|
-
hue += 180;
|
|
229
|
-
saturation = Math.abs(saturation);
|
|
230
|
-
}
|
|
231
|
-
if (hue >= 360) {
|
|
232
|
-
hue -= 360;
|
|
233
|
-
}
|
|
234
|
-
return new HSLColour({
|
|
235
|
-
hue: +hue.toFixed(2),
|
|
236
|
-
lightness: +(lightness * 100).toFixed(2),
|
|
237
|
-
saturation: +(saturation * 100).toFixed(2)
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
var anyPattern = /^#*([a-f0-9]{3}){1,2}$/i;
|
|
241
|
-
var groupedPattern = /^#*([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i;
|
|
242
|
-
|
|
243
|
-
// src/js/colour/hex.ts
|
|
244
|
-
function getHexColour(value) {
|
|
245
|
-
return new HexColour(value);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
class HexColour {
|
|
249
|
-
state;
|
|
250
|
-
get value() {
|
|
251
|
-
return `#${this.state.value}`;
|
|
252
|
-
}
|
|
253
|
-
set value(value) {
|
|
254
|
-
this.state.value = anyPattern.test(value) ? getNormalisedHex(value) : "000000";
|
|
255
|
-
}
|
|
256
|
-
constructor(value) {
|
|
257
|
-
this.$colour = "hex";
|
|
258
|
-
this.state = {
|
|
259
|
-
value: typeof value === "string" && anyPattern.test(value) ? getNormalisedHex(value) : "000000"
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
toHsl() {
|
|
263
|
-
return HexColour.toRgb(this.value).toHsl();
|
|
264
|
-
}
|
|
265
|
-
toRgb() {
|
|
266
|
-
return HexColour.toRgb(this.value);
|
|
267
|
-
}
|
|
268
|
-
toString() {
|
|
269
|
-
return this.value;
|
|
270
|
-
}
|
|
271
|
-
static toRgb(value) {
|
|
272
|
-
return hexToRgb(value);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
17
|
export {
|
|
276
|
-
|
|
277
|
-
isHexColour,
|
|
278
|
-
isHSLColour,
|
|
279
|
-
isColour,
|
|
280
|
-
getRGBColour,
|
|
281
|
-
getHexColour,
|
|
282
|
-
getHSLColour,
|
|
283
|
-
getForegroundColour,
|
|
284
|
-
RGBColour,
|
|
18
|
+
HSLColour,
|
|
285
19
|
HexColour,
|
|
286
|
-
|
|
20
|
+
RGBColour,
|
|
21
|
+
getForegroundColour,
|
|
22
|
+
getHSLColour,
|
|
23
|
+
getHexColour,
|
|
24
|
+
getRGBColour,
|
|
25
|
+
isColour,
|
|
26
|
+
isHSLColour,
|
|
27
|
+
isHexColour,
|
|
28
|
+
isRGBColour
|
|
287
29
|
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function isColour(value) {
|
|
4
|
+
return isInstance(/^(hex|hsl|rgb)$/, value);
|
|
5
|
+
}
|
|
6
|
+
function isColourValue(value, properties) {
|
|
7
|
+
return typeof value === "object" && value !== null && properties.every(
|
|
8
|
+
(property) => property in value && typeof value[property] === "number"
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
function isHexColour(value) {
|
|
12
|
+
return isInstance(/^hex$/, value);
|
|
13
|
+
}
|
|
14
|
+
function isHSLColour(value) {
|
|
15
|
+
return isInstance(/^hsl$/, value);
|
|
16
|
+
}
|
|
17
|
+
function isInstance(pattern, value) {
|
|
18
|
+
return typeof value === "object" && value !== null && "$colour" in value && typeof value.$colour === "string" && pattern.test(value.$colour);
|
|
19
|
+
}
|
|
20
|
+
function isRGBColour(value) {
|
|
21
|
+
return isInstance(/^rgb$/, value);
|
|
22
|
+
}
|
|
23
|
+
exports.isColour = isColour;
|
|
24
|
+
exports.isColourValue = isColourValue;
|
|
25
|
+
exports.isHSLColour = isHSLColour;
|
|
26
|
+
exports.isHexColour = isHexColour;
|
|
27
|
+
exports.isRGBColour = isRGBColour;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
// src/js/colour/is.ts
|
|
2
1
|
function isColour(value) {
|
|
3
2
|
return isInstance(/^(hex|hsl|rgb)$/, value);
|
|
4
3
|
}
|
|
5
4
|
function isColourValue(value, properties) {
|
|
6
|
-
return typeof value === "object" && value !== null && properties.every(
|
|
5
|
+
return typeof value === "object" && value !== null && properties.every(
|
|
6
|
+
(property) => property in value && typeof value[property] === "number"
|
|
7
|
+
);
|
|
7
8
|
}
|
|
8
9
|
function isHexColour(value) {
|
|
9
10
|
return isInstance(/^hex$/, value);
|
|
@@ -18,9 +19,9 @@ function isRGBColour(value) {
|
|
|
18
19
|
return isInstance(/^rgb$/, value);
|
|
19
20
|
}
|
|
20
21
|
export {
|
|
21
|
-
|
|
22
|
-
isHexColour,
|
|
23
|
-
isHSLColour,
|
|
22
|
+
isColour,
|
|
24
23
|
isColourValue,
|
|
25
|
-
|
|
24
|
+
isHSLColour,
|
|
25
|
+
isHexColour,
|
|
26
|
+
isRGBColour
|
|
26
27
|
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const colour_base = require("./base.cjs");
|
|
4
|
+
const colour_functions = require("./functions.cjs");
|
|
5
|
+
const number = require("../number.cjs");
|
|
6
|
+
class RGBColour extends colour_base.Colour {
|
|
7
|
+
/**
|
|
8
|
+
* Get the current blue value
|
|
9
|
+
*/
|
|
10
|
+
get blue() {
|
|
11
|
+
return +this.state.value.blue;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Set the current blue value
|
|
15
|
+
*/
|
|
16
|
+
set blue(value) {
|
|
17
|
+
this.state.value.blue = number.clamp(value, 0, 255);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the current green value
|
|
21
|
+
*/
|
|
22
|
+
get green() {
|
|
23
|
+
return +this.state.value.green;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Set the current green value
|
|
27
|
+
*/
|
|
28
|
+
set green(value) {
|
|
29
|
+
this.state.value.green = number.clamp(value, 0, 255);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the current red value
|
|
33
|
+
*/
|
|
34
|
+
get red() {
|
|
35
|
+
return +this.state.value.red;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the current red value
|
|
39
|
+
*/
|
|
40
|
+
set red(value) {
|
|
41
|
+
this.state.value.red = number.clamp(value, 0, 255);
|
|
42
|
+
}
|
|
43
|
+
constructor(value) {
|
|
44
|
+
super("rgb", value, defaults, properties);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @inheritdoc
|
|
48
|
+
*/
|
|
49
|
+
toHex() {
|
|
50
|
+
return RGBColour.toHex(this.value);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert the colour to an HSL-colour
|
|
54
|
+
*/
|
|
55
|
+
toHsl() {
|
|
56
|
+
return RGBColour.toHsl(this.value);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @inheritdoc
|
|
60
|
+
*/
|
|
61
|
+
toString() {
|
|
62
|
+
return `rgb(${this.value.red}, ${this.value.green}, ${this.value.blue})`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert an RGB-colour to a hex-colour
|
|
66
|
+
*/
|
|
67
|
+
static toHex(value) {
|
|
68
|
+
return colour_functions.rgbToHex(value);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* - Convert an RGB-colour to an HSL-colour
|
|
72
|
+
*/
|
|
73
|
+
static toHsl(rgb) {
|
|
74
|
+
return colour_functions.rgbToHsl(rgb);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const defaults = {
|
|
78
|
+
blue: 0,
|
|
79
|
+
green: 0,
|
|
80
|
+
red: 0
|
|
81
|
+
};
|
|
82
|
+
const properties = ["blue", "green", "red"];
|
|
83
|
+
function getRGBColour(value) {
|
|
84
|
+
return new RGBColour(value);
|
|
85
|
+
}
|
|
86
|
+
exports.RGBColour = RGBColour;
|
|
87
|
+
exports.getRGBColour = getRGBColour;
|
|
@@ -1,56 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { rgbToHex, rgbToHsl } from "./functions";
|
|
5
|
-
function getRGBColour(value) {
|
|
6
|
-
return new RGBColour(value);
|
|
7
|
-
}
|
|
8
|
-
|
|
1
|
+
import { Colour } from "./base.js";
|
|
2
|
+
import { rgbToHex, rgbToHsl } from "./functions.js";
|
|
3
|
+
import { clamp } from "../number.js";
|
|
9
4
|
class RGBColour extends Colour {
|
|
5
|
+
/**
|
|
6
|
+
* Get the current blue value
|
|
7
|
+
*/
|
|
10
8
|
get blue() {
|
|
11
9
|
return +this.state.value.blue;
|
|
12
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Set the current blue value
|
|
13
|
+
*/
|
|
13
14
|
set blue(value) {
|
|
14
15
|
this.state.value.blue = clamp(value, 0, 255);
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the current green value
|
|
19
|
+
*/
|
|
16
20
|
get green() {
|
|
17
21
|
return +this.state.value.green;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Set the current green value
|
|
25
|
+
*/
|
|
19
26
|
set green(value) {
|
|
20
27
|
this.state.value.green = clamp(value, 0, 255);
|
|
21
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the current red value
|
|
31
|
+
*/
|
|
22
32
|
get red() {
|
|
23
33
|
return +this.state.value.red;
|
|
24
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Set the current red value
|
|
37
|
+
*/
|
|
25
38
|
set red(value) {
|
|
26
39
|
this.state.value.red = clamp(value, 0, 255);
|
|
27
40
|
}
|
|
28
41
|
constructor(value) {
|
|
29
42
|
super("rgb", value, defaults, properties);
|
|
30
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* @inheritdoc
|
|
46
|
+
*/
|
|
31
47
|
toHex() {
|
|
32
48
|
return RGBColour.toHex(this.value);
|
|
33
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Convert the colour to an HSL-colour
|
|
52
|
+
*/
|
|
34
53
|
toHsl() {
|
|
35
54
|
return RGBColour.toHsl(this.value);
|
|
36
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* @inheritdoc
|
|
58
|
+
*/
|
|
37
59
|
toString() {
|
|
38
60
|
return `rgb(${this.value.red}, ${this.value.green}, ${this.value.blue})`;
|
|
39
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert an RGB-colour to a hex-colour
|
|
64
|
+
*/
|
|
40
65
|
static toHex(value) {
|
|
41
66
|
return rgbToHex(value);
|
|
42
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* - Convert an RGB-colour to an HSL-colour
|
|
70
|
+
*/
|
|
43
71
|
static toHsl(rgb) {
|
|
44
72
|
return rgbToHsl(rgb);
|
|
45
73
|
}
|
|
46
74
|
}
|
|
47
|
-
|
|
75
|
+
const defaults = {
|
|
48
76
|
blue: 0,
|
|
49
77
|
green: 0,
|
|
50
78
|
red: 0
|
|
51
79
|
};
|
|
52
|
-
|
|
80
|
+
const properties = ["blue", "green", "red"];
|
|
81
|
+
function getRGBColour(value) {
|
|
82
|
+
return new RGBColour(value);
|
|
83
|
+
}
|
|
53
84
|
export {
|
|
54
|
-
|
|
55
|
-
|
|
85
|
+
RGBColour,
|
|
86
|
+
getRGBColour
|
|
56
87
|
};
|