@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.
Files changed (282) hide show
  1. package/dist/js/array/chunk.cjs +18 -0
  2. package/dist/js/array/{chunk.mjs → chunk.js} +2 -2
  3. package/dist/js/array/compact.cjs +6 -0
  4. package/dist/js/array/{compact.mjs → compact.js} +0 -1
  5. package/dist/js/array/count.cjs +14 -0
  6. package/dist/js/array/count.js +14 -0
  7. package/dist/js/array/exists.cjs +14 -0
  8. package/dist/js/array/exists.js +14 -0
  9. package/dist/js/array/filter.cjs +14 -0
  10. package/dist/js/array/filter.js +14 -0
  11. package/dist/js/array/find.cjs +14 -0
  12. package/dist/js/array/find.js +14 -0
  13. package/dist/js/array/group-by.cjs +35 -0
  14. package/dist/js/array/group-by.js +35 -0
  15. package/dist/js/array/index-of.cjs +14 -0
  16. package/dist/js/array/index-of.js +14 -0
  17. package/dist/js/array/index.cjs +40 -0
  18. package/dist/js/array/index.js +34 -381
  19. package/dist/js/array/insert.cjs +31 -0
  20. package/dist/js/array/insert.js +31 -0
  21. package/dist/js/array/models.cjs +1 -0
  22. package/dist/js/array/models.js +1 -0
  23. package/dist/js/array/shuffle.cjs +13 -0
  24. package/dist/js/array/{shuffle.mjs → shuffle.js} +2 -3
  25. package/dist/js/array/sort.cjs +53 -0
  26. package/dist/js/array/{sort.mjs → sort.js} +13 -9
  27. package/dist/js/array/splice.cjs +14 -0
  28. package/dist/js/array/splice.js +14 -0
  29. package/dist/js/array/to-map.cjs +27 -0
  30. package/dist/js/array/to-map.js +27 -0
  31. package/dist/js/array/to-record.cjs +12 -0
  32. package/dist/js/array/to-record.js +12 -0
  33. package/dist/js/array/unique.cjs +7 -0
  34. package/dist/js/array/unique.js +7 -0
  35. package/dist/js/colour/base.cjs +18 -0
  36. package/dist/js/colour/{base.mjs → base.js} +4 -3
  37. package/dist/js/colour/functions.cjs +96 -0
  38. package/dist/js/colour/{functions.mjs → functions.js} +18 -19
  39. package/dist/js/colour/hex.cjs +56 -0
  40. package/dist/js/colour/{hex.mjs → hex.js} +34 -15
  41. package/dist/js/colour/hsl.cjs +85 -0
  42. package/dist/js/colour/{hsl.mjs → hsl.js} +40 -12
  43. package/dist/js/colour/index.cjs +29 -0
  44. package/dist/js/colour/index.js +14 -272
  45. package/dist/js/colour/is.cjs +27 -0
  46. package/dist/js/colour/{is.mjs → is.js} +7 -6
  47. package/dist/js/colour/rgb.cjs +87 -0
  48. package/dist/js/colour/{rgb.mjs → rgb.js} +43 -12
  49. package/dist/js/{emitter.mjs → emitter.cjs} +88 -56
  50. package/dist/js/emitter.js +85 -56
  51. package/dist/js/{function.mjs → function.cjs} +66 -46
  52. package/dist/js/function.js +61 -48
  53. package/dist/js/index.cjs +136 -0
  54. package/dist/js/index.js +133 -1724
  55. package/dist/js/internal/array/callbacks.cjs +23 -0
  56. package/dist/js/internal/array/callbacks.js +23 -0
  57. package/dist/js/internal/array/find.cjs +51 -0
  58. package/dist/js/internal/array/find.js +51 -0
  59. package/dist/js/internal/value/handle.cjs +21 -0
  60. package/dist/js/internal/{value-handle.mjs → value/handle.js} +0 -1
  61. package/dist/js/{is.mjs → is.cjs} +17 -18
  62. package/dist/js/is.js +15 -27
  63. package/dist/js/logger.cjs +108 -0
  64. package/dist/js/logger.js +44 -8
  65. package/dist/js/{math.mjs → math.cjs} +7 -8
  66. package/dist/js/math.js +4 -5
  67. package/dist/js/models.cjs +1 -0
  68. package/dist/js/models.js +1 -0
  69. package/dist/js/{number.mjs → number.cjs} +8 -8
  70. package/dist/js/number.js +5 -5
  71. package/dist/js/{query.mjs → query.cjs} +18 -18
  72. package/dist/js/query.js +17 -86
  73. package/dist/js/{queue.mjs → queue.cjs} +12 -13
  74. package/dist/js/queue.js +9 -10
  75. package/dist/js/{random.mjs → random.cjs} +14 -21
  76. package/dist/js/random.js +9 -26
  77. package/dist/js/{sized.mjs → sized.cjs} +68 -33
  78. package/dist/js/sized.js +66 -38
  79. package/dist/js/string/case.cjs +41 -0
  80. package/dist/js/string/{case.mjs → case.js} +13 -9
  81. package/dist/js/string/index.cjs +59 -0
  82. package/dist/js/string/index.js +30 -100
  83. package/dist/js/string/template.cjs +21 -0
  84. package/dist/js/string/{template.mjs → template.js} +4 -5
  85. package/dist/js/{touch.mjs → touch.cjs} +4 -7
  86. package/dist/js/touch.js +3 -5
  87. package/dist/js/value/clone.cjs +76 -0
  88. package/dist/js/value/{clone.mjs → clone.js} +5 -6
  89. package/dist/js/value/compare.cjs +59 -0
  90. package/dist/js/value/{compare.mjs → compare.js} +4 -6
  91. package/dist/js/value/diff.cjs +75 -0
  92. package/dist/js/value/{diff.mjs → diff.js} +13 -11
  93. package/dist/js/value/equal.cjs +106 -0
  94. package/dist/js/value/{equal.mjs → equal.js} +13 -8
  95. package/dist/js/value/get.cjs +21 -0
  96. package/dist/js/value/{get.mjs → get.js} +9 -4
  97. package/dist/js/value/index.cjs +30 -0
  98. package/dist/js/value/index.js +19 -510
  99. package/dist/js/value/merge.cjs +35 -0
  100. package/dist/js/value/{merge.mjs → merge.js} +7 -6
  101. package/dist/js/value/set.cjs +25 -0
  102. package/dist/js/value/{set.mjs → set.js} +3 -4
  103. package/dist/js/value/smush.cjs +26 -0
  104. package/dist/js/value/{smush.mjs → smush.js} +3 -4
  105. package/dist/js/value/unsmush.cjs +39 -0
  106. package/dist/js/value/{unsmush.mjs → unsmush.js} +10 -7
  107. package/package.json +50 -47
  108. package/src/js/array/chunk.ts +6 -5
  109. package/src/js/array/compact.ts +8 -10
  110. package/src/js/array/count.ts +39 -19
  111. package/src/js/array/exists.ts +39 -15
  112. package/src/js/array/filter.ts +42 -20
  113. package/src/js/array/find.ts +45 -20
  114. package/src/js/array/group-by.ts +158 -27
  115. package/src/js/array/index-of.ts +40 -18
  116. package/src/js/array/index.ts +10 -9
  117. package/src/js/array/insert.ts +28 -14
  118. package/src/js/array/models.ts +18 -15
  119. package/src/js/array/shuffle.ts +3 -3
  120. package/src/js/array/sort.ts +32 -34
  121. package/src/js/array/splice.ts +22 -26
  122. package/src/js/array/to-map.ts +133 -45
  123. package/src/js/array/to-record.ts +137 -39
  124. package/src/js/array/unique.ts +20 -15
  125. package/src/js/colour/base.ts +3 -3
  126. package/src/js/colour/functions.ts +4 -6
  127. package/src/js/colour/hex.ts +5 -5
  128. package/src/js/colour/hsl.ts +18 -12
  129. package/src/js/colour/index.ts +1 -1
  130. package/src/js/colour/is.ts +3 -3
  131. package/src/js/colour/rgb.ts +17 -11
  132. package/src/js/emitter.ts +12 -9
  133. package/src/js/function.ts +17 -17
  134. package/src/js/index.ts +16 -16
  135. package/src/js/internal/array/callbacks.ts +33 -0
  136. package/src/js/internal/{array-find.ts → array/find.ts} +23 -24
  137. package/src/js/internal/{value-handle.ts → value/handle.ts} +1 -1
  138. package/src/js/is.ts +2 -2
  139. package/src/js/logger.ts +14 -14
  140. package/src/js/math.ts +1 -1
  141. package/src/js/models.ts +5 -5
  142. package/src/js/number.ts +2 -2
  143. package/src/js/query.ts +6 -10
  144. package/src/js/queue.ts +1 -1
  145. package/src/js/random.ts +9 -19
  146. package/src/js/sized.ts +145 -145
  147. package/src/js/string/case.ts +1 -1
  148. package/src/js/string/index.ts +13 -7
  149. package/src/js/string/template.ts +6 -3
  150. package/src/js/value/clone.ts +3 -7
  151. package/src/js/value/compare.ts +3 -5
  152. package/src/js/value/diff.ts +4 -4
  153. package/src/js/value/equal.ts +2 -2
  154. package/src/js/value/get.ts +3 -3
  155. package/src/js/value/index.ts +2 -2
  156. package/src/js/value/merge.ts +3 -3
  157. package/src/js/value/set.ts +3 -4
  158. package/src/js/value/smush.ts +4 -4
  159. package/src/js/value/unsmush.ts +4 -4
  160. package/types/array/chunk.d.cts +8 -0
  161. package/types/array/chunk.d.ts +2 -2
  162. package/types/array/compact.d.cts +12 -0
  163. package/types/array/compact.d.ts +4 -4
  164. package/types/array/count.d.cts +24 -0
  165. package/types/array/count.d.ts +13 -7
  166. package/types/array/exists.d.cts +26 -0
  167. package/types/array/exists.d.ts +11 -3
  168. package/types/array/filter.d.cts +26 -0
  169. package/types/array/filter.d.ts +14 -6
  170. package/types/array/find.d.cts +26 -0
  171. package/types/array/find.d.ts +14 -6
  172. package/types/array/group-by.d.cts +58 -0
  173. package/types/array/group-by.d.ts +49 -5
  174. package/types/array/index-of.d.cts +26 -0
  175. package/types/array/index-of.d.ts +14 -6
  176. package/types/array/index.d.cts +239 -95
  177. package/types/array/index.d.ts +7 -6
  178. package/types/array/insert.d.cts +16 -0
  179. package/types/array/insert.d.ts +10 -5
  180. package/types/array/models.d.cts +14 -11
  181. package/types/array/models.d.ts +14 -12
  182. package/types/array/shuffle.d.cts +8 -0
  183. package/types/array/shuffle.d.ts +2 -2
  184. package/types/array/sort.d.cts +24 -0
  185. package/types/array/sort.d.ts +10 -10
  186. package/types/array/splice.d.cts +22 -0
  187. package/types/array/splice.d.ts +4 -4
  188. package/types/array/to-map.d.cts +61 -0
  189. package/types/array/to-map.d.ts +42 -20
  190. package/types/array/to-record.d.cts +61 -0
  191. package/types/array/to-record.d.ts +42 -20
  192. package/types/array/unique.d.cts +21 -0
  193. package/types/array/unique.d.ts +10 -6
  194. package/types/colour/base.d.cts +153 -0
  195. package/types/colour/base.d.ts +2 -2
  196. package/types/colour/functions.d.cts +173 -0
  197. package/types/colour/functions.d.ts +3 -3
  198. package/types/colour/hex.d.cts +157 -0
  199. package/types/colour/hex.d.ts +4 -4
  200. package/types/colour/hsl.d.cts +157 -0
  201. package/types/colour/hsl.d.ts +16 -10
  202. package/types/colour/index.d.cts +28 -16
  203. package/types/colour/index.d.ts +1 -1
  204. package/types/colour/is.d.cts +170 -0
  205. package/types/colour/is.d.ts +3 -3
  206. package/types/colour/rgb.d.cts +157 -0
  207. package/types/colour/rgb.d.ts +15 -9
  208. package/types/emitter.d.cts +11 -8
  209. package/types/emitter.d.ts +11 -8
  210. package/types/function.d.cts +10 -10
  211. package/types/function.d.ts +11 -11
  212. package/types/index.d.cts +1120 -736
  213. package/types/index.d.ts +16 -16
  214. package/types/internal/array/callbacks.d.cts +11 -0
  215. package/types/internal/array/callbacks.d.ts +2 -0
  216. package/types/internal/array/find.d.cts +7 -0
  217. package/types/internal/array/find.d.ts +3 -0
  218. package/types/internal/value/handle.d.cts +37 -0
  219. package/types/internal/{value-handle.d.ts → value/handle.d.ts} +1 -1
  220. package/types/is.d.ts +1 -1
  221. package/types/logger.d.cts +13 -21
  222. package/types/logger.d.ts +13 -21
  223. package/types/math.d.cts +1 -1
  224. package/types/math.d.ts +1 -1
  225. package/types/models.d.cts +4 -4
  226. package/types/models.d.ts +1 -4
  227. package/types/number.d.cts +2 -2
  228. package/types/number.d.ts +2 -2
  229. package/types/query.d.cts +2 -2
  230. package/types/query.d.ts +3 -3
  231. package/types/queue.d.cts +1 -1
  232. package/types/queue.d.ts +1 -1
  233. package/types/random.d.cts +8 -12
  234. package/types/random.d.ts +8 -12
  235. package/types/sized.d.cts +6 -6
  236. package/types/sized.d.ts +6 -6
  237. package/types/string/case.d.cts +28 -0
  238. package/types/string/index.d.cts +30 -27
  239. package/types/string/index.d.ts +3 -3
  240. package/types/string/template.d.cts +50 -0
  241. package/types/string/template.d.ts +4 -1
  242. package/types/value/clone.d.cts +8 -0
  243. package/types/value/clone.d.ts +4 -2
  244. package/types/value/compare.d.cts +8 -0
  245. package/types/value/diff.d.cts +25 -0
  246. package/types/value/equal.d.cts +12 -0
  247. package/types/value/get.d.cts +1319 -0
  248. package/types/value/get.d.ts +1 -1
  249. package/types/value/index.d.cts +8 -6
  250. package/types/value/index.d.ts +2 -2
  251. package/types/value/merge.d.cts +72 -0
  252. package/types/value/merge.d.ts +2 -2
  253. package/types/value/set.d.cts +1011 -0
  254. package/types/value/set.d.ts +1 -1
  255. package/types/value/smush.d.cts +1368 -0
  256. package/types/value/smush.d.ts +2 -2
  257. package/types/value/unsmush.d.cts +141 -0
  258. package/types/value/unsmush.d.ts +2 -2
  259. package/dist/js/array/count.mjs +0 -8
  260. package/dist/js/array/exists.mjs +0 -8
  261. package/dist/js/array/filter.mjs +0 -8
  262. package/dist/js/array/find.mjs +0 -8
  263. package/dist/js/array/group-by.mjs +0 -33
  264. package/dist/js/array/index-of.mjs +0 -8
  265. package/dist/js/array/index.mjs +0 -34
  266. package/dist/js/array/insert.mjs +0 -22
  267. package/dist/js/array/models.mjs +0 -0
  268. package/dist/js/array/splice.mjs +0 -9
  269. package/dist/js/array/to-map.mjs +0 -27
  270. package/dist/js/array/to-record.mjs +0 -8
  271. package/dist/js/array/unique.mjs +0 -8
  272. package/dist/js/colour/index.mjs +0 -30
  273. package/dist/js/index.mjs +0 -17
  274. package/dist/js/internal/array-callbacks.mjs +0 -19
  275. package/dist/js/internal/array-find.mjs +0 -51
  276. package/dist/js/logger.mjs +0 -69
  277. package/dist/js/models.mjs +0 -0
  278. package/dist/js/string/index.mjs +0 -44
  279. package/dist/js/value/index.mjs +0 -23
  280. package/src/js/internal/array-callbacks.ts +0 -28
  281. package/types/internal/array-callbacks.d.ts +0 -2
  282. package/types/internal/array-find.d.ts +0 -4
@@ -1,4 +1,7 @@
1
- // src/js/colour/index.ts
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
- isRGBColour,
277
- isHexColour,
278
- isHSLColour,
279
- isColour,
280
- getRGBColour,
281
- getHexColour,
282
- getHSLColour,
283
- getForegroundColour,
284
- RGBColour,
18
+ HSLColour,
285
19
  HexColour,
286
- HSLColour
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((property) => (property in value) && typeof value[property] === "number");
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
- isRGBColour,
22
- isHexColour,
23
- isHSLColour,
22
+ isColour,
24
23
  isColourValue,
25
- isColour
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
- // src/js/colour/rgb.ts
2
- import { clamp } from "../number";
3
- import { Colour } from "./base";
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
- var defaults = {
75
+ const defaults = {
48
76
  blue: 0,
49
77
  green: 0,
50
78
  red: 0
51
79
  };
52
- var properties = ["blue", "green", "red"];
80
+ const properties = ["blue", "green", "red"];
81
+ function getRGBColour(value) {
82
+ return new RGBColour(value);
83
+ }
53
84
  export {
54
- getRGBColour,
55
- RGBColour
85
+ RGBColour,
86
+ getRGBColour
56
87
  };