@oscarpalmer/atoms 0.193.0 → 0.194.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 (204) hide show
  1. package/dist/array/difference.mjs +2 -2
  2. package/dist/array/intersection.mjs +2 -2
  3. package/dist/array/match.mjs +13 -13
  4. package/dist/array/slice.mjs +5 -5
  5. package/dist/array/sort.d.mts +5 -1
  6. package/dist/array/sort.mjs +4 -2
  7. package/dist/array/union.mjs +2 -2
  8. package/dist/beacon.d.mts +8 -1
  9. package/dist/beacon.mjs +52 -60
  10. package/dist/color/constants.d.mts +1 -1
  11. package/dist/color/constants.mjs +3 -5
  12. package/dist/color/instance.mjs +34 -41
  13. package/dist/color/misc/format.d.mts +3 -2
  14. package/dist/color/misc/format.mjs +4 -1
  15. package/dist/color/misc/is.d.mts +9 -1
  16. package/dist/color/misc/is.mjs +11 -1
  17. package/dist/color/misc/state.d.mts +6 -6
  18. package/dist/color/misc/state.mjs +11 -14
  19. package/dist/color/models.d.mts +23 -68
  20. package/dist/function/assert.mjs +2 -2
  21. package/dist/function/limit.d.mts +0 -6
  22. package/dist/function/limit.mjs +2 -2
  23. package/dist/function/memoize.mjs +19 -32
  24. package/dist/function/once.d.mts +0 -3
  25. package/dist/function/once.mjs +16 -13
  26. package/dist/function/retry.d.mts +1 -24
  27. package/dist/function/retry.mjs +1 -1
  28. package/dist/function/work.mjs +13 -11
  29. package/dist/herald.d.mts +30 -31
  30. package/dist/herald.mjs +74 -56
  31. package/dist/index.d.mts +100 -185
  32. package/dist/index.mjs +680 -702
  33. package/dist/internal/abort.d.mts +10 -0
  34. package/dist/internal/abort.mjs +14 -0
  35. package/dist/internal/array/chunk.mjs +2 -2
  36. package/dist/internal/array/find.mjs +2 -2
  37. package/dist/internal/array/sets.d.mts +4 -4
  38. package/dist/internal/array/sets.mjs +7 -7
  39. package/dist/internal/function/timer.mjs +19 -15
  40. package/dist/internal/number.mjs +7 -7
  41. package/dist/internal/result.mjs +3 -3
  42. package/dist/internal/sized.mjs +4 -4
  43. package/dist/internal/string.mjs +4 -4
  44. package/dist/internal/subscription.d.mts +24 -8
  45. package/dist/internal/subscription.mjs +49 -36
  46. package/dist/internal/value/equal.mjs +6 -6
  47. package/dist/internal/value/misc.mjs +14 -14
  48. package/dist/internal/value/set.mjs +2 -2
  49. package/dist/logger.mjs +15 -39
  50. package/dist/promise/constants.d.mts +17 -0
  51. package/dist/promise/constants.mjs +14 -0
  52. package/dist/promise/delay.mjs +7 -10
  53. package/dist/promise/helpers.mjs +1 -1
  54. package/dist/promise/index.mjs +14 -17
  55. package/dist/promise/misc.d.mts +2 -1
  56. package/dist/promise/misc.mjs +8 -7
  57. package/dist/promise/models.d.mts +4 -16
  58. package/dist/promise/models.mjs +4 -13
  59. package/dist/promise/timed.mjs +9 -10
  60. package/dist/query.mjs +15 -15
  61. package/dist/queue.mjs +103 -116
  62. package/dist/random.mjs +7 -7
  63. package/dist/result/index.d.mts +0 -3
  64. package/dist/result/index.mjs +1 -1
  65. package/dist/result/match.d.mts +0 -3
  66. package/dist/result/match.mjs +4 -4
  67. package/dist/result/misc.mjs +2 -2
  68. package/dist/result/work/flow.d.mts +0 -3
  69. package/dist/result/work/flow.mjs +5 -5
  70. package/dist/result/work/pipe.d.mts +0 -3
  71. package/dist/result/work/pipe.mjs +3 -3
  72. package/dist/string/case.mjs +20 -20
  73. package/dist/string/fuzzy.mjs +23 -18
  74. package/dist/string/index.mjs +7 -7
  75. package/dist/string/normalize.mjs +14 -14
  76. package/dist/string/template.mjs +2 -2
  77. package/dist/value/clone.mjs +10 -10
  78. package/dist/value/smush.mjs +2 -2
  79. package/package.json +13 -5
  80. package/src/array/difference.ts +0 -73
  81. package/src/array/exists.ts +0 -93
  82. package/src/array/filter.ts +0 -182
  83. package/src/array/find.ts +0 -183
  84. package/src/array/first.ts +0 -196
  85. package/src/array/flatten.ts +0 -20
  86. package/src/array/from.ts +0 -129
  87. package/src/array/get.ts +0 -131
  88. package/src/array/group-by.ts +0 -369
  89. package/src/array/index.ts +0 -26
  90. package/src/array/insert.ts +0 -52
  91. package/src/array/intersection.ts +0 -72
  92. package/src/array/last.ts +0 -194
  93. package/src/array/match.ts +0 -436
  94. package/src/array/move.ts +0 -315
  95. package/src/array/partition.ts +0 -91
  96. package/src/array/push.ts +0 -23
  97. package/src/array/reverse.ts +0 -33
  98. package/src/array/select.ts +0 -260
  99. package/src/array/single.ts +0 -93
  100. package/src/array/slice.ts +0 -335
  101. package/src/array/sort.ts +0 -607
  102. package/src/array/splice.ts +0 -106
  103. package/src/array/swap.ts +0 -322
  104. package/src/array/to-map.ts +0 -371
  105. package/src/array/to-record.ts +0 -351
  106. package/src/array/to-set.ts +0 -80
  107. package/src/array/toggle.ts +0 -79
  108. package/src/array/union.ts +0 -72
  109. package/src/array/unique.ts +0 -67
  110. package/src/array/update.ts +0 -75
  111. package/src/beacon.ts +0 -378
  112. package/src/color/constants.ts +0 -137
  113. package/src/color/index.ts +0 -83
  114. package/src/color/instance.ts +0 -162
  115. package/src/color/misc/alpha.ts +0 -56
  116. package/src/color/misc/format.ts +0 -29
  117. package/src/color/misc/get.ts +0 -210
  118. package/src/color/misc/is.ts +0 -221
  119. package/src/color/misc/state.ts +0 -243
  120. package/src/color/models.ts +0 -389
  121. package/src/color/space/hex.ts +0 -184
  122. package/src/color/space/hsl.ts +0 -174
  123. package/src/color/space/hwb.ts +0 -153
  124. package/src/color/space/rgb.ts +0 -240
  125. package/src/function/assert.ts +0 -174
  126. package/src/function/index.ts +0 -2
  127. package/src/function/limit.ts +0 -83
  128. package/src/function/memoize.ts +0 -202
  129. package/src/function/once.ts +0 -200
  130. package/src/function/retry.ts +0 -175
  131. package/src/function/work.ts +0 -1007
  132. package/src/herald.ts +0 -216
  133. package/src/index.ts +0 -68
  134. package/src/internal/array/callbacks.ts +0 -46
  135. package/src/internal/array/chunk.ts +0 -51
  136. package/src/internal/array/compact.ts +0 -56
  137. package/src/internal/array/find.ts +0 -200
  138. package/src/internal/array/group.ts +0 -42
  139. package/src/internal/array/index-of.ts +0 -182
  140. package/src/internal/array/insert.ts +0 -80
  141. package/src/internal/array/overlap.ts +0 -35
  142. package/src/internal/array/sets.ts +0 -74
  143. package/src/internal/array/shuffle.ts +0 -33
  144. package/src/internal/array/update.ts +0 -52
  145. package/src/internal/function/misc.ts +0 -8
  146. package/src/internal/function/timer.ts +0 -168
  147. package/src/internal/is.ts +0 -244
  148. package/src/internal/math/aggregate.ts +0 -164
  149. package/src/internal/math/misc.ts +0 -28
  150. package/src/internal/number.ts +0 -129
  151. package/src/internal/random.ts +0 -49
  152. package/src/internal/result.ts +0 -92
  153. package/src/internal/sized.ts +0 -25
  154. package/src/internal/string.ts +0 -128
  155. package/src/internal/subscription.ts +0 -264
  156. package/src/internal/value/compare.ts +0 -170
  157. package/src/internal/value/equal.ts +0 -465
  158. package/src/internal/value/get.ts +0 -57
  159. package/src/internal/value/handlers.ts +0 -95
  160. package/src/internal/value/has.ts +0 -118
  161. package/src/internal/value/misc.ts +0 -125
  162. package/src/internal/value/partial.ts +0 -46
  163. package/src/internal/value/set.ts +0 -132
  164. package/src/is.ts +0 -182
  165. package/src/logger.ts +0 -230
  166. package/src/math.ts +0 -281
  167. package/src/models.ts +0 -286
  168. package/src/number.ts +0 -1
  169. package/src/promise/delay.ts +0 -62
  170. package/src/promise/helpers.ts +0 -96
  171. package/src/promise/index.ts +0 -300
  172. package/src/promise/misc.ts +0 -96
  173. package/src/promise/models.ts +0 -195
  174. package/src/promise/timed.ts +0 -91
  175. package/src/query.ts +0 -147
  176. package/src/queue.ts +0 -814
  177. package/src/random.ts +0 -125
  178. package/src/result/index.ts +0 -105
  179. package/src/result/match.ts +0 -124
  180. package/src/result/misc.ts +0 -129
  181. package/src/result/models.ts +0 -83
  182. package/src/result/work/flow.ts +0 -488
  183. package/src/result/work/pipe.ts +0 -496
  184. package/src/sized/map.ts +0 -110
  185. package/src/sized/set.ts +0 -107
  186. package/src/string/case.ts +0 -236
  187. package/src/string/fuzzy.ts +0 -444
  188. package/src/string/index.ts +0 -199
  189. package/src/string/match.ts +0 -80
  190. package/src/string/normalize.ts +0 -205
  191. package/src/string/template.ts +0 -161
  192. package/src/value/clone.ts +0 -319
  193. package/src/value/collection.ts +0 -63
  194. package/src/value/diff.ts +0 -232
  195. package/src/value/freeze.ts +0 -322
  196. package/src/value/handle.ts +0 -3
  197. package/src/value/index.ts +0 -5
  198. package/src/value/merge.ts +0 -278
  199. package/src/value/omit.ts +0 -20
  200. package/src/value/pick.ts +0 -20
  201. package/src/value/shake.ts +0 -45
  202. package/src/value/smush.ts +0 -89
  203. package/src/value/transform.ts +0 -153
  204. package/src/value/unsmush.ts +0 -84
@@ -1,243 +0,0 @@
1
- import type {Subscriptions} from '../../internal/subscription';
2
- import {COLOR_DEFAULTS, COLOR_KEYS, COLOR_LENGTHS, COLOR_MAX, COLOR_TYPE} from '../constants';
3
- import type {
4
- Color,
5
- ColorState,
6
- ColorType,
7
- HSLAColor,
8
- HSLColor,
9
- HWBAColor,
10
- HWBColor,
11
- RGBAColor,
12
- RGBColor,
13
- } from '../models';
14
- import {getColorFromHex, getNormalizedHex} from '../space/hex';
15
- import {getColorFromHsl, getHslValue} from '../space/hsl';
16
- import {getColorFromHwb, getHwbValue} from '../space/hwb';
17
- import {getColorFromRgb, getRgbValue} from '../space/rgb';
18
- import {getAlpha} from './alpha';
19
- import {getDegrees, getHexValue, getPercentage} from './get';
20
- import {isColor, isHexColor, isHslLike, isHwbLike, isRgbLike} from './is';
21
-
22
- // #region Functions
23
-
24
- export function getColorFromState<Type extends ColorType>(
25
- state: ColorState,
26
- type: Type,
27
- ): NonNullable<ColorState[Type]> {
28
- const {origin} = state;
29
-
30
- if (type === origin) {
31
- return state[origin] as NonNullable<ColorState[Type]>;
32
- }
33
-
34
- return state[type] ?? (getters[origin](state, type) as NonNullable<ColorState[Type]>);
35
- }
36
-
37
- export function getColorState(value: unknown): ColorState {
38
- if (typeof value === 'string') {
39
- return getColorStateForHex(value);
40
- }
41
-
42
- if (isColor(value)) {
43
- const {origin} = value;
44
-
45
- return {
46
- origin,
47
- [origin]: value[origin],
48
- alpha: getAlpha(value.alpha, false),
49
- };
50
- }
51
-
52
- if (typeof value === 'object' && value !== null) {
53
- const state: ColorState = {
54
- alpha: getAlpha((value as HSLAColor).alpha, false),
55
- origin: undefined as never,
56
- };
57
-
58
- if (COLOR_KEYS.hsl.every(key => key in value)) {
59
- state.hsl = getHslValue(value as Record<keyof HSLColor, unknown>);
60
- state.origin = COLOR_TYPE.hsl;
61
- } else if (COLOR_KEYS.hwb.every(key => key in value)) {
62
- state.hwb = getHwbValue(value as Record<keyof HWBColor, unknown>);
63
- state.origin = COLOR_TYPE.hwb;
64
- } else if (COLOR_KEYS.rgb.every(key => key in value)) {
65
- state.rgb = getRgbValue(value as Record<keyof RGBColor, unknown>);
66
- state.origin = COLOR_TYPE.rgb;
67
- }
68
-
69
- if (state.origin != null) {
70
- return state;
71
- }
72
- }
73
-
74
- return getDefaultColorState();
75
- }
76
-
77
- function getColorStateForHex(value: string): ColorState {
78
- const normalized = getNormalizedHex(value, true);
79
- const hex = normalized.slice(0, COLOR_LENGTHS.hexLong);
80
-
81
- return {
82
- hex,
83
- alpha: getAlpha(normalized.slice(COLOR_LENGTHS.hexLong), true),
84
- origin: COLOR_TYPE.hex,
85
- };
86
- }
87
-
88
- function getDefaultColorState(): ColorState {
89
- return {
90
- alpha: getAlpha(COLOR_MAX.percent, false),
91
- hex: COLOR_DEFAULTS.hexBlack,
92
- hsl: {...COLOR_DEFAULTS.hsl},
93
- hwb: {...COLOR_DEFAULTS.hwb},
94
- rgb: {...COLOR_DEFAULTS.rgb},
95
- origin: COLOR_TYPE.hex,
96
- };
97
- }
98
-
99
- function setColorValue<Type extends ColorType>(
100
- color: Color,
101
- state: ColorState,
102
- subscriptions: Subscriptions<Function>,
103
- type: Type,
104
- value: ColorState[Type],
105
- alpha?: number | string,
106
- ): void {
107
- state.hex = undefined;
108
- state.hsl = undefined;
109
- state.hwb = undefined;
110
- state.rgb = undefined;
111
-
112
- state.origin = type;
113
- state[type] = value;
114
-
115
- if (alpha != null) {
116
- state.alpha = getAlpha(alpha, type === COLOR_TYPE.hex);
117
- }
118
-
119
- for (const type of COLOR_TYPE.all) {
120
- const callbacks = subscriptions.values.to.keyed?.get(type);
121
-
122
- if (callbacks != null) {
123
- for (const callback of callbacks.values()) {
124
- callback(color[type]);
125
- }
126
- }
127
- }
128
-
129
- for (const callback of subscriptions.values.to.any.values()) {
130
- callback(color);
131
- }
132
- }
133
-
134
- export function setHexColor(
135
- color: Color,
136
- state: ColorState,
137
- subscriptions: Subscriptions<Function>,
138
- value: string,
139
- alpha: boolean,
140
- ): void {
141
- if (!isHexColor(value) || (!alpha && value === state.hex)) {
142
- return;
143
- }
144
-
145
- const normalized = getNormalizedHex(value, true);
146
-
147
- setColorValue(
148
- color,
149
- state,
150
- subscriptions,
151
- COLOR_TYPE.hex,
152
- normalized.slice(0, COLOR_LENGTHS.hexLong),
153
- alpha ? normalized.slice(COLOR_LENGTHS.hexLong) : undefined,
154
- );
155
- }
156
-
157
- export function setHSLColor(
158
- color: Color,
159
- state: ColorState,
160
- subscriptions: Subscriptions<Function>,
161
- value: unknown,
162
- alpha: boolean,
163
- ): void {
164
- if (!isHslLike(value)) {
165
- return;
166
- }
167
-
168
- setColorValue(
169
- color,
170
- state,
171
- subscriptions,
172
- COLOR_TYPE.hsl,
173
- {
174
- hue: getDegrees((value as HSLColor).hue),
175
- saturation: getPercentage((value as HSLColor).saturation),
176
- lightness: getPercentage((value as HSLColor).lightness),
177
- },
178
- alpha ? (value as HSLAColor).alpha : undefined,
179
- );
180
- }
181
-
182
- export function setHWBColor(
183
- color: Color,
184
- state: ColorState,
185
- subscriptions: Subscriptions<Function>,
186
- value: unknown,
187
- alpha: boolean,
188
- ): void {
189
- if (!isHwbLike(value)) {
190
- return;
191
- }
192
-
193
- setColorValue(
194
- color,
195
- state,
196
- subscriptions,
197
- COLOR_TYPE.hwb,
198
- {
199
- hue: getDegrees((value as HWBColor).hue),
200
- whiteness: getPercentage((value as HWBColor).whiteness),
201
- blackness: getPercentage((value as HWBColor).blackness),
202
- },
203
- alpha ? (value as HWBAColor).alpha : undefined,
204
- );
205
- }
206
-
207
- export function setRGBColor(
208
- color: Color,
209
- state: ColorState,
210
- subscriptions: Subscriptions<Function>,
211
- value: unknown,
212
- alpha: boolean,
213
- ): void {
214
- if (!isRgbLike(value)) {
215
- return;
216
- }
217
-
218
- setColorValue(
219
- color,
220
- state,
221
- subscriptions,
222
- COLOR_TYPE.rgb,
223
- {
224
- red: getHexValue((value as RGBColor).red),
225
- green: getHexValue((value as RGBColor).green),
226
- blue: getHexValue((value as RGBColor).blue),
227
- },
228
- alpha ? (value as RGBAColor).alpha : undefined,
229
- );
230
- }
231
-
232
- // #endregion
233
-
234
- // #region Variables
235
-
236
- const getters: Record<ColorType, (state: ColorState, type: ColorType) => any> = {
237
- hex: getColorFromHex,
238
- hsl: getColorFromHsl,
239
- hwb: getColorFromHwb,
240
- rgb: getColorFromRgb,
241
- };
242
-
243
- // #endregion
@@ -1,389 +0,0 @@
1
- // #region Types
2
-
3
- import type {Subscription} from '../internal/subscription';
4
- import type {COLOR_ALPHA, COLOR_TYPE} from './constants';
5
-
6
- export type Alpha = {
7
- hex: string;
8
- value: number;
9
- };
10
-
11
- /**
12
- * A color that is represented in multiple color formats
13
- */
14
- export type Color = {
15
- /**
16
- * Get the alpha channel _(opacity)_ of the color as a percentage between `0` and `100`
17
- *
18
- * @returns Current alpha channel value
19
- */
20
- get alpha(): number;
21
-
22
- /**
23
- * Set the alpha channel _(opacity)_ of the color as a percentage between `0` and `100`
24
- *
25
- * @param value New alpha channel value
26
- */
27
- set alpha(value: number);
28
-
29
- /**
30
- * Get the color as a hex color string
31
- *
32
- * _Hex color string is returned with no `#`-prefix or alpha channel (opacity)_
33
- *
34
- * @returns Current color as a hex color string
35
- */
36
- get hex(): string;
37
-
38
- /**
39
- * Set the color from a hex color string
40
- *
41
- * - `#`-prefix is optional
42
- * - Alpha channel _(opacity)_ will be ignored
43
- *
44
- * @param value New hex color string
45
- */
46
- set hex(value: string);
47
-
48
- /**
49
- * Get the color as a hex color with an alpha channel _(opacity)_
50
- *
51
- * _Hex color string is returned with alpha channel (opacity), but without `#`-prefix_
52
- *
53
- * @returns Current color as a hex color string
54
- */
55
- get hexa(): string;
56
-
57
- /**
58
- * Set the color from a hex color string with an alpha channel _(opacity)_
59
- *
60
- * - `#`-prefix is optional
61
- * - Alpha channel _(opacity)_ will be respected
62
- *
63
- * @param value New hex color string
64
- */
65
- set hexa(value: string);
66
-
67
- /**
68
- * Get the color as an _HSL_ color
69
- *
70
- * @returns Current color as an _HSL_ color
71
- */
72
- get hsl(): HSLColor;
73
-
74
- /**
75
- * Set colors from an _HSL_ color
76
- *
77
- * @param value New _HSL_ color
78
- */
79
- set hsl(value: HSLColor);
80
-
81
- /**
82
- * Get the color as an _HSLA_ color
83
- *
84
- * @returns Current color as an _HSLA_ color
85
- */
86
- get hsla(): HSLAColor;
87
-
88
- /**
89
- * Set colors and alpha from an _HSLA_ color
90
- *
91
- * @param value New _HSLA_ color
92
- */
93
- set hsla(value: HSLAColor);
94
-
95
- /**
96
- * Get the color as an _HWB_ color
97
- *
98
- * @returns Current color as an _HWB_ color
99
- */
100
- get hwb(): HWBColor;
101
-
102
- /**
103
- * Set colors from an _HWB_ color
104
- *
105
- * @param value New _HWB_ color
106
- */
107
- set hwb(value: HWBColor);
108
-
109
- /**
110
- * Get the color as an _HWBA_ color
111
- *
112
- * @returns Current color as an _HWBA_ color
113
- */
114
- get hwba(): HWBAColor;
115
-
116
- /**
117
- * Set colors and alpha from an _HWBA_ color
118
- *
119
- * @param value New _HWBA_ color
120
- */
121
- set hwba(value: HWBAColor);
122
-
123
- /**
124
- * Last color format that was set on the color
125
- *
126
- * @returns Color type
127
- */
128
- get origin(): ColorType;
129
-
130
- /**
131
- * Get the color as an _RGB_ color
132
- *
133
- * @returns Current color as an _RGB_ color
134
- */
135
- get rgb(): RGBColor;
136
-
137
- /**
138
- * Set colors from an _RGB_ color
139
- *
140
- * @param value New _RGB_ color
141
- */
142
- set rgb(value: RGBColor);
143
-
144
- /**
145
- * Get the color as an _RGBA_ color
146
- *
147
- * @returns Current color as an _RGBA_ color
148
- */
149
- get rgba(): RGBAColor;
150
-
151
- /**
152
- * Set colors and alpha from an _RGBA_ color
153
- *
154
- * @param value New _RGBA_ color
155
- */
156
- set rgba(value: RGBAColor);
157
-
158
- /**
159
- * Subscribe to alpha channel _(opacity)_ changes of the color
160
- *
161
- * @param key Color property to subscribe to
162
- * @param callback Callback function for changes
163
- */
164
- subscribe(key: 'alpha', callback: (value: number) => void): Subscription;
165
-
166
- /**
167
- * Subscribe to hex color changes of the color
168
- *
169
- * @param key Color type to subscribe to
170
- * @param callback Callback function for changes
171
- */
172
- subscribe(key: typeof COLOR_TYPE.hex, callback: (value: string) => void): Subscription;
173
-
174
- /**
175
- * Subscribe to hex color changes of the color with alpha channel _(opacity)_
176
- *
177
- * @param key Color type to subscribe to
178
- * @param callback Callback function for changes
179
- */
180
- subscribe(key: typeof COLOR_TYPE.hexa, callback: (value: string) => void): Subscription;
181
-
182
- /**
183
- * Subscribe to _HSL_ color changes of the color
184
- *
185
- * @param key Color type to subscribe to
186
- * @param callback Callback function for changes
187
- */
188
- subscribe(key: typeof COLOR_TYPE.hsl, callback: (value: HSLColor) => void): Subscription;
189
-
190
- /**
191
- * Subscribe to _HSL(A)_ color changes of the color
192
- *
193
- * @param key Color type to subscribe to
194
- * @param callback Callback function for changes
195
- */
196
- subscribe(key: typeof COLOR_TYPE.hsla, callback: (value: HSLAColor) => void): Subscription;
197
-
198
- /**
199
- * Subscribe to _HWB_ color changes of the color
200
- *
201
- * @param key Color type to subscribe to
202
- * @param callback Callback function for changes
203
- */
204
- subscribe(key: typeof COLOR_TYPE.hwb, callback: (value: HWBColor) => void): Subscription;
205
-
206
- /**
207
- * Subscribe to _HWB(A)_ color changes of the color
208
- *
209
- * @param key Color type to subscribe to
210
- * @param callback Callback function for changes
211
- */
212
- subscribe(key: typeof COLOR_TYPE.hwba, callback: (value: HWBAColor) => void): Subscription;
213
-
214
- /**
215
- * Subscribe to _RGB_ color changes of the color
216
- *
217
- * @param key Color type to subscribe to
218
- * @param callback Callback function for changes
219
- */
220
- subscribe(key: typeof COLOR_TYPE.rgb, callback: (value: RGBColor) => void): Subscription;
221
-
222
- /**
223
- * Subscribe to _RGBA_ color changes of the color
224
- *
225
- * @param key Color type to subscribe to
226
- * @param callback Callback function for changes
227
- */
228
- subscribe(key: typeof COLOR_TYPE.rgba, callback: (value: RGBAColor) => void): Subscription;
229
-
230
- /**
231
- * Subscribe to any color changes of the color
232
- *
233
- * @param callback Callback function for changes
234
- */
235
- subscribe(callback: (value: Color) => void): Subscription;
236
-
237
- /**
238
- * Get the color as a hex string
239
- *
240
- * @param alpha Include alpha channel _(opacity)_? _(defaults to `false`)_
241
- * @returns Hex color string
242
- */
243
- toHexString(alpha?: boolean): string;
244
-
245
- /**
246
- * Get the color as an _HSL(A)_ string
247
- *
248
- * @param alpha Include alpha channel _(opacity)_? _(defaults to `false`)_
249
- * @returns _HSL(A)_ color string
250
- */
251
- toHslString(alpha?: boolean): string;
252
-
253
- /**
254
- * Get the color as an _HWB(A)_ string
255
- *
256
- * @param alpha Include alpha channel _(opacity)_? _(defaults to `false`)_
257
- * @returns _HWB(A)_ color string
258
- */
259
- toHwbString(alpha?: boolean): string;
260
-
261
- /**
262
- * Get the color as an _RGB(A)_ string
263
- *
264
- * @param alpha Include alpha channel _(opacity)_? _(defaults to `false`)_
265
- * @returns _RGB(A)_ color string
266
- */
267
- toRgbString(alpha?: boolean): string;
268
-
269
- /**
270
- * Get the color as a hex color string
271
- *
272
- * @returns Hex color string
273
- */
274
- toString(): string;
275
-
276
- /**
277
- * Unsubscribe from all color changes of the color
278
- *
279
- * _(To unsubscribe from a specific color change, use the `unsubscribe()` method on the `Subscription` returned by the individual `subscribe()` method)_
280
- */
281
- unsubscribe(): void;
282
- };
283
-
284
- type ColorWithAlpha = {
285
- /**
286
- * Alpha channel _(opacity)_ of the color _(in percentage; 0-100)_
287
- */
288
- alpha: number;
289
- };
290
-
291
- /**
292
- * An _HSL_ color with an alpha channel _(opacity)_
293
- */
294
- export type HSLAColor = HSLColor & ColorWithAlpha;
295
-
296
- /**
297
- * An _HSL_ color
298
- */
299
- export type HSLColor = {
300
- /**
301
- * Hue of the color _(in degrees; 0-360)_
302
- */
303
- hue: number;
304
- /**
305
- * Lightness of the color _(in percentage; 0-100)_
306
- */
307
- lightness: number;
308
- /**
309
- * Saturation of the color _(in percentage; 0-100)_
310
- */
311
- saturation: number;
312
- };
313
-
314
- export type HWBColor = {
315
- /**
316
- * Blackness of the color _(in percentage; 0-100)_
317
- */
318
- blackness: number;
319
- /**
320
- * Hue of the color _(in degrees; 0-360)_
321
- */
322
- hue: number;
323
- /**
324
- * Whiteness of the color _(in percentage; 0-100)_
325
- */
326
- whiteness: number;
327
- };
328
-
329
- export type HWBAColor = HWBColor & ColorWithAlpha;
330
-
331
- /**
332
- * An _RGB_ color with an alpha channel _(opacity)_
333
- */
334
- export type RGBAColor = RGBColor & ColorWithAlpha;
335
-
336
- /**
337
- * An _RGB_ color
338
- */
339
- export type RGBColor = {
340
- /**
341
- * Blue channel of the color _(in hexadecimal; 0-255)_
342
- */
343
- blue: number;
344
- /**
345
- * Green channel of the color _(in hexadecimal; 0-255)_
346
- */
347
- green: number;
348
- /**
349
- * Red channel of the color _(in hexadecimal; 0-255)_
350
- */
351
- red: number;
352
- };
353
-
354
- export type ColorProperty =
355
- | typeof COLOR_ALPHA.name
356
- | keyof HSLColor
357
- | keyof HWBColor
358
- | keyof RGBColor;
359
-
360
- export type ColorState = {
361
- alpha: Alpha;
362
- hex?: string;
363
- hsl?: HSLColor;
364
- hwb?: HWBColor;
365
- origin: ColorType;
366
- rgb?: RGBColor;
367
- };
368
-
369
- /**
370
- * Base color types
371
- */
372
- export type ColorType = 'hex' | 'hsl' | 'hwb' | 'rgb';
373
-
374
- /**
375
- * Extended color types
376
- */
377
- export type ColorTypeExtended = ColorType | 'hsla' | 'hwba' | 'rgba';
378
-
379
- /**
380
- * Base color values
381
- */
382
- export type ColorValue = string | HSLColor | HWBColor | RGBColor;
383
-
384
- /**
385
- * Extended color values
386
- */
387
- export type ColorValueExtended = ColorValue | HSLAColor | HWBAColor | RGBAColor;
388
-
389
- // #endregion