@oscarpalmer/atoms 0.202.0 → 0.203.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 (156) hide show
  1. package/dist/array/difference.d.mts +4 -5
  2. package/dist/array/exists.d.mts +5 -6
  3. package/dist/array/filter.d.mts +10 -11
  4. package/dist/array/find.d.mts +10 -11
  5. package/dist/array/first.d.mts +10 -11
  6. package/dist/array/flatten.d.mts +2 -3
  7. package/dist/array/from.d.mts +7 -8
  8. package/dist/array/group-by.d.mts +7 -8
  9. package/dist/array/insert.d.mts +3 -4
  10. package/dist/array/intersection.d.mts +4 -5
  11. package/dist/array/last.d.mts +10 -11
  12. package/dist/array/move.d.mts +9 -10
  13. package/dist/array/partition.d.mts +5 -6
  14. package/dist/array/push.d.mts +2 -3
  15. package/dist/array/reverse.d.mts +2 -3
  16. package/dist/array/select.d.mts +11 -12
  17. package/dist/array/single.d.mts +4 -5
  18. package/dist/array/slice.d.mts +12 -13
  19. package/dist/array/sort.d.mts +31 -32
  20. package/dist/array/sort.mjs +41 -33
  21. package/dist/array/splice.d.mts +5 -6
  22. package/dist/array/swap.d.mts +8 -9
  23. package/dist/array/to-map.d.mts +7 -8
  24. package/dist/array/to-record.d.mts +7 -8
  25. package/dist/array/to-set.d.mts +4 -5
  26. package/dist/array/toggle.d.mts +4 -5
  27. package/dist/array/union.d.mts +4 -5
  28. package/dist/array/unique.d.mts +4 -5
  29. package/dist/array/update.d.mts +4 -5
  30. package/dist/beacon.d.mts +8 -9
  31. package/dist/beacon.mjs +90 -65
  32. package/dist/color/constants.d.mts +14 -13
  33. package/dist/color/constants.mjs +9 -2
  34. package/dist/color/index.d.mts +2 -2
  35. package/dist/color/instance.d.mts +3 -3
  36. package/dist/color/instance.mjs +125 -61
  37. package/dist/color/misc/alpha.d.mts +4 -5
  38. package/dist/color/misc/format.d.mts +6 -7
  39. package/dist/color/misc/format.mjs +15 -12
  40. package/dist/color/misc/get.d.mts +14 -15
  41. package/dist/color/misc/is.d.mts +16 -17
  42. package/dist/color/misc/is.mjs +3 -4
  43. package/dist/color/misc/state.d.mts +8 -10
  44. package/dist/color/misc/state.mjs +22 -20
  45. package/dist/color/models.d.mts +25 -19
  46. package/dist/color/space/hex.d.mts +9 -10
  47. package/dist/color/space/hsl.d.mts +8 -9
  48. package/dist/color/space/hwb.d.mts +9 -10
  49. package/dist/color/space/rgb.d.mts +11 -12
  50. package/dist/function/limit.d.mts +9 -8
  51. package/dist/function/limit.mjs +5 -5
  52. package/dist/function/once.d.mts +26 -6
  53. package/dist/function/once.mjs +135 -76
  54. package/dist/function/retry.d.mts +5 -6
  55. package/dist/function/retry.mjs +3 -3
  56. package/dist/index.d.mts +182 -58
  57. package/dist/index.mjs +1191 -810
  58. package/dist/internal/abort.d.mts +3 -4
  59. package/dist/internal/array/callbacks.d.mts +4 -5
  60. package/dist/internal/array/chunk.d.mts +2 -3
  61. package/dist/internal/array/compact.d.mts +3 -4
  62. package/dist/internal/array/find.d.mts +10 -11
  63. package/dist/internal/array/get.d.mts +7 -8
  64. package/dist/internal/array/group.d.mts +2 -3
  65. package/dist/internal/array/index-of.d.mts +10 -11
  66. package/dist/internal/array/insert.d.mts +5 -6
  67. package/dist/internal/array/match.d.mts +17 -18
  68. package/dist/internal/array/overlap.d.mts +2 -3
  69. package/dist/internal/array/sets.d.mts +5 -6
  70. package/dist/internal/array/shuffle.d.mts +2 -3
  71. package/dist/internal/array/update.d.mts +2 -3
  72. package/dist/internal/defaults.d.mts +3 -4
  73. package/dist/internal/function/assert.d.mts +10 -11
  74. package/dist/internal/function/limit.d.mts +41 -0
  75. package/dist/internal/function/limit.mjs +110 -0
  76. package/dist/internal/function/memoize.d.mts +4 -5
  77. package/dist/internal/function/memoize.mjs +53 -31
  78. package/dist/internal/function/misc.d.mts +2 -3
  79. package/dist/internal/function/work.d.mts +53 -54
  80. package/dist/internal/herald.d.mts +8 -9
  81. package/dist/internal/herald.mjs +38 -26
  82. package/dist/internal/is.d.mts +19 -20
  83. package/dist/internal/math/aggregate.d.mts +14 -15
  84. package/dist/internal/math/misc.d.mts +3 -4
  85. package/dist/internal/number.d.mts +4 -5
  86. package/dist/internal/random.d.mts +3 -4
  87. package/dist/internal/result/misc.d.mts +29 -14
  88. package/dist/internal/result/misc.mjs +4 -0
  89. package/dist/internal/result/models.d.mts +9 -10
  90. package/dist/internal/sized/map.d.mts +2 -3
  91. package/dist/internal/sized/misc.d.mts +2 -3
  92. package/dist/internal/string/case.d.mts +9 -10
  93. package/dist/internal/string/misc.d.mts +8 -9
  94. package/dist/internal/subscription.d.mts +10 -11
  95. package/dist/internal/subscription.mjs +69 -57
  96. package/dist/internal/value/compare.d.mts +17 -9
  97. package/dist/internal/value/compare.mjs +7 -7
  98. package/dist/internal/value/equal.d.mts +34 -15
  99. package/dist/internal/value/equal.mjs +28 -13
  100. package/dist/internal/value/get.d.mts +3 -4
  101. package/dist/internal/value/handlers.d.mts +19 -9
  102. package/dist/internal/value/handlers.mjs +50 -50
  103. package/dist/internal/value/has.d.mts +6 -7
  104. package/dist/internal/value/misc.d.mts +6 -7
  105. package/dist/internal/value/partial.d.mts +3 -4
  106. package/dist/internal/value/set.d.mts +4 -5
  107. package/dist/is.d.mts +13 -13
  108. package/dist/logger.d.mts +5 -4
  109. package/dist/logger.mjs +61 -54
  110. package/dist/math.d.mts +20 -20
  111. package/dist/models.d.mts +45 -49
  112. package/dist/promise/constants.d.mts +14 -15
  113. package/dist/promise/delay.d.mts +3 -4
  114. package/dist/promise/delay.mjs +4 -4
  115. package/dist/promise/helpers.d.mts +7 -8
  116. package/dist/promise/index.d.mts +13 -14
  117. package/dist/promise/misc.d.mts +6 -6
  118. package/dist/promise/models.d.mts +16 -17
  119. package/dist/promise/timed.d.mts +4 -5
  120. package/dist/promise/timed.mjs +5 -5
  121. package/dist/query.d.mts +3 -4
  122. package/dist/queue.d.mts +14 -15
  123. package/dist/queue.mjs +185 -129
  124. package/dist/random.d.mts +8 -8
  125. package/dist/result/index.d.mts +8 -9
  126. package/dist/result/match.d.mts +6 -7
  127. package/dist/result/misc.d.mts +3 -3
  128. package/dist/result/work/flow.d.mts +28 -29
  129. package/dist/result/work/pipe.d.mts +24 -25
  130. package/dist/sized/set.d.mts +2 -3
  131. package/dist/string/fuzzy.d.mts +21 -12
  132. package/dist/string/fuzzy.mjs +77 -49
  133. package/dist/string/index.d.mts +8 -8
  134. package/dist/string/match.d.mts +4 -5
  135. package/dist/string/normalize.d.mts +8 -9
  136. package/dist/string/normalize.mjs +9 -4
  137. package/dist/string/template.d.mts +9 -9
  138. package/dist/string/template.mjs +11 -4
  139. package/dist/value/clone.d.mts +21 -13
  140. package/dist/value/clone.mjs +22 -20
  141. package/dist/value/collection.d.mts +4 -5
  142. package/dist/value/diff.d.mts +5 -6
  143. package/dist/value/freeze.d.mts +18 -19
  144. package/dist/value/freeze.mjs +1 -1
  145. package/dist/value/merge.d.mts +13 -14
  146. package/dist/value/merge.mjs +21 -5
  147. package/dist/value/omit.d.mts +2 -3
  148. package/dist/value/pick.d.mts +2 -3
  149. package/dist/value/shake.d.mts +3 -4
  150. package/dist/value/smush.d.mts +3 -4
  151. package/dist/value/transform.d.mts +15 -10
  152. package/dist/value/transform.mjs +12 -7
  153. package/dist/value/unsmush.d.mts +3 -4
  154. package/package.json +1 -1
  155. package/dist/internal/function/timer.d.mts +0 -10
  156. package/dist/internal/function/timer.mjs +0 -87
@@ -1,66 +1,133 @@
1
- import { SUBSCRIPTION_NAME } from "../internal/subscription.mjs";
1
+ import "../internal/subscription.mjs";
2
2
  import { herald } from "../internal/herald.mjs";
3
- import { COLOR_PROPERTY, COLOR_TYPE } from "./constants.mjs";
3
+ import { COLOR_NAME, COLOR_PROPERTY, COLOR_SYMBOL, COLOR_TYPE, colorSubscription } from "./constants.mjs";
4
4
  import { getAlpha } from "./misc/alpha.mjs";
5
5
  import { getColorFromState, getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor } from "./misc/state.mjs";
6
6
  import { formatHexColor, formatHslColor, formatHwbColor, formatRgbColor } from "./misc/format.mjs";
7
7
  //#region src/color/instance.ts
8
- function color(value) {
9
- const changes = herald({
10
- names: [COLOR_TYPE.wildcard, ...COLOR_TYPE.all],
11
- property: colorSubscription,
12
- onCreate: (event, callback) => onCreateSubscription(instance, event, callback)
13
- });
14
- const state = getColorState(value);
15
- const instance = {
16
- subscribe: (callback, signal) => changes.subscribe(COLOR_TYPE.wildcard, callback, signal),
17
- toHexString: (alpha) => formatHexColor(instance, alpha),
18
- toHslString: (alpha) => formatHslColor(state, alpha),
19
- toHwbString: (alpha) => formatHwbColor(state, alpha),
20
- toRgbString: (alpha) => formatRgbColor(state, alpha),
21
- toString: () => instance.toHexString(),
22
- unsubscribe: () => changes.clear()
23
- };
24
- Object.defineProperties(instance, {
25
- [COLOR_PROPERTY.name]: { value: true },
26
- alpha: {
27
- enumerable: true,
28
- get: () => state.alpha.value,
29
- set: (value) => setAlphaValue(state, value)
8
+ function Color(value) {
9
+ Object.defineProperty(this, COLOR_SYMBOL, { value: {
10
+ changes: herald({
11
+ names: [COLOR_TYPE.wildcard, ...COLOR_TYPE.all],
12
+ property: colorSubscription,
13
+ onCreate: (event, callback) => onCreateSubscription(this, event, callback)
14
+ }),
15
+ values: getColorState(value)
16
+ } });
17
+ }
18
+ Object.defineProperties(Color.prototype, {
19
+ [COLOR_PROPERTY]: { value: COLOR_NAME },
20
+ alpha: {
21
+ enumerable: true,
22
+ get() {
23
+ return this[COLOR_SYMBOL].values.alpha.value;
30
24
  },
31
- changes: {
32
- enumerable: true,
33
- value: changes.events
25
+ set(value) {
26
+ setAlphaValue(this[COLOR_SYMBOL].values, value);
27
+ }
28
+ },
29
+ changes: {
30
+ enumerable: true,
31
+ get() {
32
+ return this[COLOR_SYMBOL].changes.events;
33
+ }
34
+ },
35
+ hex: {
36
+ enumerable: true,
37
+ get() {
38
+ return getColorValue(this, COLOR_TYPE.hex, false);
34
39
  },
35
- hex: createColorProperty(COLOR_TYPE.hex, instance, state, changes, false),
36
- hexa: createColorProperty(COLOR_TYPE.hex, instance, state, changes, true),
37
- hsl: createColorProperty(COLOR_TYPE.hsl, instance, state, changes, false),
38
- hsla: createColorProperty(COLOR_TYPE.hsl, instance, state, changes, true),
39
- hwb: createColorProperty(COLOR_TYPE.hwb, instance, state, changes, false),
40
- hwba: createColorProperty(COLOR_TYPE.hwb, instance, state, changes, true),
41
- origin: {
42
- enumerable: true,
43
- get: () => state.origin
40
+ set(value) {
41
+ setHexColor(this, value, false);
42
+ }
43
+ },
44
+ hexa: {
45
+ enumerable: true,
46
+ get() {
47
+ return getColorValue(this, COLOR_TYPE.hex, true);
44
48
  },
45
- rgb: createColorProperty(COLOR_TYPE.rgb, instance, state, changes, false),
46
- rgba: createColorProperty(COLOR_TYPE.rgb, instance, state, changes, true)
47
- });
48
- return Object.freeze(instance);
49
- }
50
- function createColorProperty(space, color, state, changes, alpha) {
51
- const setValue = setters[space];
52
- return {
49
+ set(value) {
50
+ setHexColor(this, value, true);
51
+ }
52
+ },
53
+ hsl: {
54
+ enumerable: true,
55
+ get() {
56
+ return getColorValue(this, COLOR_TYPE.hsl, false);
57
+ },
58
+ set(value) {
59
+ setHSLColor(this, value, false);
60
+ }
61
+ },
62
+ hsla: {
63
+ enumerable: true,
64
+ get() {
65
+ return getColorValue(this, COLOR_TYPE.hsl, true);
66
+ },
67
+ set(value) {
68
+ setHSLColor(this, value, true);
69
+ }
70
+ },
71
+ hwb: {
53
72
  enumerable: true,
54
- get: () => getColorValue(space, state, alpha),
55
- set: (value) => setValue(color, state, changes, value, alpha)
56
- };
73
+ get() {
74
+ return getColorValue(this, COLOR_TYPE.hwb, false);
75
+ },
76
+ set(value) {
77
+ setHWBColor(this, value, false);
78
+ }
79
+ },
80
+ hwba: {
81
+ enumerable: true,
82
+ get() {
83
+ return getColorValue(this, COLOR_TYPE.hwb, true);
84
+ },
85
+ set(value) {
86
+ setHWBColor(this, value, true);
87
+ }
88
+ },
89
+ origin: {
90
+ enumerable: true,
91
+ get() {
92
+ return this[COLOR_SYMBOL].values.origin;
93
+ }
94
+ },
95
+ rgb: {
96
+ enumerable: true,
97
+ get() {
98
+ return getColorValue(this, COLOR_TYPE.rgb, false);
99
+ },
100
+ set(value) {
101
+ setRGBColor(this, value, false);
102
+ }
103
+ },
104
+ rgba: {
105
+ enumerable: true,
106
+ get() {
107
+ return getColorValue(this, COLOR_TYPE.rgb, true);
108
+ },
109
+ set(value) {
110
+ setRGBColor(this, value, true);
111
+ }
112
+ },
113
+ subscribe: { value: subscribeToColor },
114
+ toHexString: { value: formatHexColor },
115
+ toHslString: { value: formatHslColor },
116
+ toHwbString: { value: formatHwbColor },
117
+ toRgbString: { value: formatRgbColor },
118
+ toString: { value: formatHexColor },
119
+ unsubscribe: { value: unsubscribeFromColor }
120
+ });
121
+ function color(value) {
122
+ return new Color(value);
57
123
  }
58
- function getColorValue(space, state, alpha) {
59
- const value = getColorFromState(state, space);
60
- if (typeof value === "string") return alpha ? `${value}${state.alpha.hex}` : value;
124
+ function getColorValue(instance, type, alpha) {
125
+ const { values } = instance[COLOR_SYMBOL];
126
+ const value = getColorFromState(values, type);
127
+ if (typeof value === "string") return alpha ? `${value}${values.alpha.hex}` : value;
61
128
  return alpha ? {
62
129
  ...value,
63
- alpha: state.alpha.value
130
+ alpha: values.alpha.value
64
131
  } : { ...value };
65
132
  }
66
133
  function onCreateSubscription(instance, event, callback) {
@@ -72,15 +139,12 @@ function onCreateSubscription(instance, event, callback) {
72
139
  function setAlphaValue(state, value) {
73
140
  if (typeof value === "number" && !Number.isNaN(value)) state.alpha = getAlpha(value, false);
74
141
  }
75
- const colorSubscription = {
76
- key: COLOR_PROPERTY.name,
77
- value: SUBSCRIPTION_NAME
78
- };
79
- const setters = {
80
- hex: setHexColor,
81
- hsl: setHSLColor,
82
- hwb: setHWBColor,
83
- rgb: setRGBColor
84
- };
142
+ function subscribeToColor(callback, signal) {
143
+ const { changes } = this[COLOR_SYMBOL];
144
+ return changes.subscribe(COLOR_TYPE.wildcard, callback, signal);
145
+ }
146
+ function unsubscribeFromColor() {
147
+ this[COLOR_SYMBOL].changes.clear();
148
+ }
85
149
  //#endregion
86
150
  export { color };
@@ -1,7 +1,6 @@
1
1
  import { Alpha } from "../models.mjs";
2
2
  //#region src/color/misc/alpha.d.ts
3
- declare function getAlpha(value: unknown, hex: boolean): Alpha;
4
- declare function getAlphaHexadecimal(value: number): string;
5
- declare function getAlphaValue(original: number): number;
6
- //#endregion
7
- export { getAlpha, getAlphaHexadecimal, getAlphaValue };
3
+ export declare function getAlpha(value: unknown, hex: boolean): Alpha;
4
+ export declare function getAlphaHexadecimal(value: number): string;
5
+ export declare function getAlphaValue(original: number): number;
6
+ //#endregion
@@ -1,8 +1,7 @@
1
- import { Color, ColorState } from "../models.mjs";
1
+ import { InternalColor } from "../models.mjs";
2
2
  //#region src/color/misc/format.d.ts
3
- declare function formatHexColor(color: Color, alpha?: boolean): string;
4
- declare function formatHslColor(state: ColorState, alpha?: boolean): string;
5
- declare function formatHwbColor(state: ColorState, alpha?: boolean): string;
6
- declare function formatRgbColor(state: ColorState, alpha?: boolean): string;
7
- //#endregion
8
- export { formatHexColor, formatHslColor, formatHwbColor, formatRgbColor };
3
+ export declare function formatHexColor(this: InternalColor, alpha?: boolean): string;
4
+ export declare function formatHslColor(this: InternalColor, alpha?: boolean): string;
5
+ export declare function formatHwbColor(this: InternalColor, alpha?: boolean): string;
6
+ export declare function formatRgbColor(this: InternalColor, alpha?: boolean): string;
7
+ //#endregion
@@ -1,20 +1,23 @@
1
- import { COLOR_TYPE } from "../constants.mjs";
1
+ import { COLOR_SYMBOL, COLOR_TYPE } from "../constants.mjs";
2
2
  import { getColorFromState } from "./state.mjs";
3
3
  //#region src/color/misc/format.ts
4
- function formatHexColor(color, alpha) {
5
- return `#${alpha === true ? color.hexa : color.hex}`;
4
+ function formatHexColor(alpha) {
5
+ return `#${alpha === true ? this.hexa : this.hex}`;
6
6
  }
7
- function formatHslColor(state, alpha) {
8
- const { hue, lightness, saturation } = getColorFromState(state, COLOR_TYPE.hsl);
9
- return `hsl(${hue}deg ${saturation}% ${lightness}%${getSuffix(state, alpha)})`;
7
+ function formatHslColor(alpha) {
8
+ const { values } = this[COLOR_SYMBOL];
9
+ const { hue, lightness, saturation } = getColorFromState(values, COLOR_TYPE.hsl);
10
+ return `hsl(${hue}deg ${saturation}% ${lightness}%${getSuffix(values, alpha)})`;
10
11
  }
11
- function formatHwbColor(state, alpha) {
12
- const { blackness, hue, whiteness } = getColorFromState(state, COLOR_TYPE.hwb);
13
- return `hwb(${hue}deg ${whiteness}% ${blackness}%${getSuffix(state, alpha)})`;
12
+ function formatHwbColor(alpha) {
13
+ const { values } = this[COLOR_SYMBOL];
14
+ const { blackness, hue, whiteness } = getColorFromState(values, COLOR_TYPE.hwb);
15
+ return `hwb(${hue}deg ${whiteness}% ${blackness}%${getSuffix(values, alpha)})`;
14
16
  }
15
- function formatRgbColor(state, alpha) {
16
- const { blue, green, red } = getColorFromState(state, COLOR_TYPE.rgb);
17
- return `rgb(${red} ${green} ${blue}${getSuffix(state, alpha)})`;
17
+ function formatRgbColor(alpha) {
18
+ const { values } = this[COLOR_SYMBOL];
19
+ const { blue, green, red } = getColorFromState(values, COLOR_TYPE.rgb);
20
+ return `rgb(${red} ${green} ${blue}${getSuffix(values, alpha)})`;
18
21
  }
19
22
  function getSuffix(state, alpha) {
20
23
  return alpha === true ? ` / ${state.alpha.value}%` : "";
@@ -9,7 +9,7 @@ import { Color, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor }
9
9
  * @param value Original value
10
10
  * @returns Foreground color
11
11
  */
12
- declare function getForegroundColor(value: unknown, hex: true): string;
12
+ export declare function getForegroundColor(value: unknown, hex: true): string;
13
13
  /**
14
14
  * Get a foreground color _(usually text)_ based on a background color's luminance
15
15
  *
@@ -19,7 +19,7 @@ declare function getForegroundColor(value: unknown, hex: true): string;
19
19
  * @param value Original value
20
20
  * @returns Foreground color
21
21
  */
22
- declare function getForegroundColor(value: unknown): Color;
22
+ export declare function getForegroundColor(value: unknown): Color;
23
23
  /**
24
24
  * Get the hex color _(with alpha channel, i.e., opacity)_ from any kind of value
25
25
  *
@@ -29,7 +29,7 @@ declare function getForegroundColor(value: unknown): Color;
29
29
  * @param value Original value
30
30
  * @returns Hex color string
31
31
  */
32
- declare function getHexaColor(value: unknown): string;
32
+ export declare function getHexaColor(value: unknown): string;
33
33
  /**
34
34
  * Get the hex color from any kind of value
35
35
  *
@@ -39,9 +39,9 @@ declare function getHexaColor(value: unknown): string;
39
39
  * @param value Original value
40
40
  * @returns Hex color string
41
41
  */
42
- declare function getHexColor(value: unknown): string;
43
- declare function getHexValue(value: unknown): number;
44
- declare function getDegrees(value: unknown): number;
42
+ export declare function getHexColor(value: unknown): string;
43
+ export declare function getHexValue(value: unknown): number;
44
+ export declare function getDegrees(value: unknown): number;
45
45
  /**
46
46
  * Get the _HSLA_ color from any kind of value
47
47
  *
@@ -51,7 +51,7 @@ declare function getDegrees(value: unknown): number;
51
51
  * @param value Original value
52
52
  * @returns _HSLA_ color
53
53
  */
54
- declare function getHslaColor(value: unknown): HSLAColor;
54
+ export declare function getHslaColor(value: unknown): HSLAColor;
55
55
  /**
56
56
  * Get the _HWB_ color from any kind of value
57
57
  *
@@ -61,7 +61,7 @@ declare function getHslaColor(value: unknown): HSLAColor;
61
61
  * @param value Original value
62
62
  * @returns _HWB_ color
63
63
  */
64
- declare function getHwbColor(value: unknown): HWBColor;
64
+ export declare function getHwbColor(value: unknown): HWBColor;
65
65
  /**
66
66
  * Get the _HWBA_ color from any kind of value
67
67
  *
@@ -71,7 +71,7 @@ declare function getHwbColor(value: unknown): HWBColor;
71
71
  * @param value Original value
72
72
  * @returns _HWBA_ color
73
73
  */
74
- declare function getHwbaColor(value: unknown): HWBAColor;
74
+ export declare function getHwbaColor(value: unknown): HWBAColor;
75
75
  /**
76
76
  * Get the _HSL_ color from any kind of value
77
77
  *
@@ -81,8 +81,8 @@ declare function getHwbaColor(value: unknown): HWBAColor;
81
81
  * @param value Original value
82
82
  * @returns _HSL_ color
83
83
  */
84
- declare function getHslColor(value: unknown): HSLColor;
85
- declare function getPercentage(value: unknown): number;
84
+ export declare function getHslColor(value: unknown): HSLColor;
85
+ export declare function getPercentage(value: unknown): number;
86
86
  /**
87
87
  * Get the _RGBA_ color from any kind of value
88
88
  *
@@ -92,7 +92,7 @@ declare function getPercentage(value: unknown): number;
92
92
  * @param value Original value
93
93
  * @returns _RGBA_ color
94
94
  */
95
- declare function getRgbaColor(value: unknown): RGBAColor;
95
+ export declare function getRgbaColor(value: unknown): RGBAColor;
96
96
  /**
97
97
  * Get the _RGB_ color from any kind of value
98
98
  *
@@ -102,6 +102,5 @@ declare function getRgbaColor(value: unknown): RGBAColor;
102
102
  * @param value Original value
103
103
  * @returns _RGB_ color
104
104
  */
105
- declare function getRgbColor(value: unknown): RGBColor;
106
- //#endregion
107
- export { getDegrees, getForegroundColor, getHexColor, getHexValue, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getPercentage, getRgbColor, getRgbaColor };
105
+ export declare function getRgbColor(value: unknown): RGBColor;
106
+ //#endregion
@@ -7,14 +7,14 @@ import { Color, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor }
7
7
  * @param value Value to check
8
8
  * @returns `true` if the value is a _Color_, otherwise `false`
9
9
  */
10
- declare function isColor(value: unknown): value is Color;
10
+ export declare function isColor(value: unknown): value is Color;
11
11
  /**
12
12
  * Is the value a color subscription?
13
13
  *
14
14
  * @param value Value to check
15
15
  * @returns `true` if the value is a color subscription, otherwise `false`
16
16
  */
17
- declare function isColorSubscription(value: unknown): value is Subscription;
17
+ export declare function isColorSubscription(value: unknown): value is Subscription;
18
18
  /**
19
19
  * Is the value a hex color?
20
20
  *
@@ -31,54 +31,53 @@ declare function isColorSubscription(value: unknown): value is Subscription;
31
31
  * isHexColor('#ff000050', false); // => false
32
32
  * ```
33
33
  */
34
- declare function isHexColor(value: unknown, alpha?: boolean): value is string;
34
+ export declare function isHexColor(value: unknown, alpha?: boolean): value is string;
35
35
  /**
36
36
  * Is the value an _HSLA_ color?
37
37
  *
38
38
  * @param value Value to check
39
39
  * @returns `true` if the value is an _HSLA_ color, otherwise `false`
40
40
  */
41
- declare function isHslaColor(value: unknown): value is HSLAColor;
42
- declare function isHslaLike(value: unknown): value is Record<keyof HSLAColor, unknown>;
41
+ export declare function isHslaColor(value: unknown): value is HSLAColor;
42
+ export declare function isHslaLike(value: unknown): value is Record<keyof HSLAColor, unknown>;
43
43
  /**
44
44
  * Is the value an _HSL_ color?
45
45
  *
46
46
  * @param value Value to check
47
47
  * @returns `true` if the value is an _HSL_ color, otherwise `false`
48
48
  */
49
- declare function isHslColor(value: unknown): value is HSLColor;
50
- declare function isHslLike(value: unknown): value is Record<keyof HSLColor, unknown>;
49
+ export declare function isHslColor(value: unknown): value is HSLColor;
50
+ export declare function isHslLike(value: unknown): value is Record<keyof HSLColor, unknown>;
51
51
  /**
52
52
  * Is the value an _HWBA_ color?
53
53
  *
54
54
  * @param value Value to check
55
55
  * @returns `true` if the value is an _HWBA_ color, otherwise `false`
56
56
  */
57
- declare function isHwbaColor(value: unknown): value is HWBAColor;
58
- declare function isHwbaLike(value: unknown): value is Record<keyof HWBAColor, unknown>;
57
+ export declare function isHwbaColor(value: unknown): value is HWBAColor;
58
+ export declare function isHwbaLike(value: unknown): value is Record<keyof HWBAColor, unknown>;
59
59
  /**
60
60
  * Is the value an _HWB_ color?
61
61
  *
62
62
  * @param value Value to check
63
63
  * @returns `true` if the value is an _HWB_ color, otherwise `false`
64
64
  */
65
- declare function isHwbColor(value: unknown): value is HWBColor;
66
- declare function isHwbLike(value: unknown): value is Record<keyof HWBColor, unknown>;
65
+ export declare function isHwbColor(value: unknown): value is HWBColor;
66
+ export declare function isHwbLike(value: unknown): value is Record<keyof HWBColor, unknown>;
67
67
  /**
68
68
  * Is the value an _RGBA_ color?
69
69
  *
70
70
  * @param value Value to check
71
71
  * @returns `true` if the value is an _RGBA_ color, otherwise `false`
72
72
  */
73
- declare function isRgbaColor(value: unknown): value is RGBAColor;
74
- declare function isRgbaLike(value: unknown): value is Record<keyof RGBAColor, unknown>;
73
+ export declare function isRgbaColor(value: unknown): value is RGBAColor;
74
+ export declare function isRgbaLike(value: unknown): value is Record<keyof RGBAColor, unknown>;
75
75
  /**
76
76
  * Is the value an _RGB_ color?
77
77
  *
78
78
  * @param value Value to check
79
79
  * @returns `true` if the value is an _RGB_ color, otherwise `false`
80
80
  */
81
- declare function isRgbColor(value: unknown): value is RGBColor;
82
- declare function isRgbLike(value: unknown): value is Record<keyof RGBColor, unknown>;
83
- //#endregion
84
- export { isColor, isColorSubscription, isHexColor, isHslColor, isHslLike, isHslaColor, isHslaLike, isHwbColor, isHwbLike, isHwbaColor, isHwbaLike, isRgbColor, isRgbLike, isRgbaColor, isRgbaLike };
81
+ export declare function isRgbColor(value: unknown): value is RGBColor;
82
+ export declare function isRgbLike(value: unknown): value is Record<keyof RGBColor, unknown>;
83
+ //#endregion
@@ -1,7 +1,6 @@
1
- import { isPlainObject } from "../../internal/is.mjs";
2
1
  import { isSubscription } from "../../internal/subscription.mjs";
3
2
  import { between } from "../../internal/number.mjs";
4
- import { COLOR_ALPHA, COLOR_EXPRESSION, COLOR_KEYS, COLOR_LENGTHS, COLOR_MAX, COLOR_PROPERTY } from "../constants.mjs";
3
+ import { COLOR_ALPHA, COLOR_EXPRESSION, COLOR_KEYS, COLOR_LENGTHS, COLOR_MAX } from "../constants.mjs";
5
4
  //#region src/color/misc/is.ts
6
5
  function hasKeys(value, keys) {
7
6
  return typeof value === "object" && value !== null && keys.every((key) => key in value);
@@ -19,7 +18,7 @@ function isBytey(value) {
19
18
  * @returns `true` if the value is a _Color_, otherwise `false`
20
19
  */
21
20
  function isColor(value) {
22
- return isPlainObject(value) && COLOR_PROPERTY.name in value && value[COLOR_PROPERTY.name] === true;
21
+ return typeof value === "object" && value !== null && "$color" in value && value["$color"] === "color";
23
22
  }
24
23
  /**
25
24
  * Is the value a color subscription?
@@ -28,7 +27,7 @@ function isColor(value) {
28
27
  * @returns `true` if the value is a color subscription, otherwise `false`
29
28
  */
30
29
  function isColorSubscription(value) {
31
- return isSubscription(value) && value[COLOR_PROPERTY.name] === "subscription";
30
+ return isSubscription(value) && value["$color"] === "subscription";
32
31
  }
33
32
  function isColorValue(obj, properties) {
34
33
  if (typeof obj !== "object" || obj === null) return false;
@@ -1,11 +1,9 @@
1
- import { Herald } from "../../internal/herald.mjs";
2
- import { Color, ColorChanges, ColorState, ColorType } from "../models.mjs";
1
+ import { ColorState, ColorType, InternalColor } from "../models.mjs";
3
2
  //#region src/color/misc/state.d.ts
4
- declare function getColorFromState<Type extends ColorType>(state: ColorState, type: Type): NonNullable<ColorState[Type]>;
5
- declare function getColorState(value: unknown): ColorState;
6
- declare function setHexColor(color: Color, state: ColorState, changes: Herald<ColorChanges>, value: string, alpha: boolean): void;
7
- declare function setHSLColor(color: Color, state: ColorState, changes: Herald<ColorChanges>, value: unknown, alpha: boolean): void;
8
- declare function setHWBColor(color: Color, state: ColorState, changes: Herald<ColorChanges>, value: unknown, alpha: boolean): void;
9
- declare function setRGBColor(color: Color, state: ColorState, changes: Herald<ColorChanges>, value: unknown, alpha: boolean): void;
10
- //#endregion
11
- export { getColorFromState, getColorState, setHSLColor, setHWBColor, setHexColor, setRGBColor };
3
+ export declare function getColorFromState<Type extends ColorType>(state: ColorState, type: Type): NonNullable<ColorState[Type]>;
4
+ export declare function getColorState(value: unknown): ColorState;
5
+ export declare function setHexColor(instance: InternalColor, value: string, alpha: boolean): void;
6
+ export declare function setHSLColor(instance: InternalColor, value: unknown, alpha: boolean): void;
7
+ export declare function setHWBColor(instance: InternalColor, value: unknown, alpha: boolean): void;
8
+ export declare function setRGBColor(instance: InternalColor, value: unknown, alpha: boolean): void;
9
+ //#endregion
@@ -1,4 +1,4 @@
1
- import { COLOR_DEFAULTS, COLOR_KEYS, COLOR_LENGTHS, COLOR_MAX, COLOR_TYPE } from "../constants.mjs";
1
+ import { COLOR_DEFAULTS, COLOR_KEYS, COLOR_LENGTHS, COLOR_MAX, COLOR_SYMBOL, COLOR_TYPE } from "../constants.mjs";
2
2
  import { getAlpha } from "./alpha.mjs";
3
3
  import { getDegrees, getHexValue, getPercentage } from "./get.mjs";
4
4
  import { isColor, isHexColor, isHslLike, isHwbLike, isRgbLike } from "./is.mjs";
@@ -59,41 +59,43 @@ function getDefaultColorState() {
59
59
  origin: COLOR_TYPE.hex
60
60
  };
61
61
  }
62
- function setColorValue(color, state, changes, type, value, alpha) {
63
- state.hex = void 0;
64
- state.hsl = void 0;
65
- state.hwb = void 0;
66
- state.rgb = void 0;
67
- state.origin = type;
68
- state[type] = value;
69
- if (alpha != null) state.alpha = getAlpha(alpha, type === COLOR_TYPE.hex);
70
- for (const type of COLOR_TYPE.all) if (changes.observed(type)) changes.emit(type, color[type]);
71
- changes.emit(COLOR_TYPE.wildcard, color);
62
+ function setColorValue(instance, type, value, alpha) {
63
+ const { changes, values } = instance[COLOR_SYMBOL];
64
+ values.hex = void 0;
65
+ values.hsl = void 0;
66
+ values.hwb = void 0;
67
+ values.rgb = void 0;
68
+ values.origin = type;
69
+ values[type] = value;
70
+ if (alpha != null) values.alpha = getAlpha(alpha, type === COLOR_TYPE.hex);
71
+ for (const type of COLOR_TYPE.all) if (changes.observed(type)) changes.emit(type, instance[type]);
72
+ changes.emit(COLOR_TYPE.wildcard, instance);
72
73
  }
73
- function setHexColor(color, state, changes, value, alpha) {
74
- if (!isHexColor(value) || !alpha && value === state.hex) return;
74
+ function setHexColor(instance, value, alpha) {
75
+ const { values } = instance[COLOR_SYMBOL];
76
+ if (!isHexColor(value) || !alpha && value === values.hex) return;
75
77
  const normalized = getNormalizedHex(value, true);
76
- setColorValue(color, state, changes, COLOR_TYPE.hex, normalized.slice(0, COLOR_LENGTHS.hexLong), alpha ? normalized.slice(COLOR_LENGTHS.hexLong) : void 0);
78
+ setColorValue(instance, COLOR_TYPE.hex, normalized.slice(0, COLOR_LENGTHS.hexLong), alpha ? normalized.slice(COLOR_LENGTHS.hexLong) : void 0);
77
79
  }
78
- function setHSLColor(color, state, changes, value, alpha) {
80
+ function setHSLColor(instance, value, alpha) {
79
81
  if (!isHslLike(value)) return;
80
- setColorValue(color, state, changes, COLOR_TYPE.hsl, {
82
+ setColorValue(instance, COLOR_TYPE.hsl, {
81
83
  hue: getDegrees(value.hue),
82
84
  saturation: getPercentage(value.saturation),
83
85
  lightness: getPercentage(value.lightness)
84
86
  }, alpha ? value.alpha : void 0);
85
87
  }
86
- function setHWBColor(color, state, changes, value, alpha) {
88
+ function setHWBColor(instance, value, alpha) {
87
89
  if (!isHwbLike(value)) return;
88
- setColorValue(color, state, changes, COLOR_TYPE.hwb, {
90
+ setColorValue(instance, COLOR_TYPE.hwb, {
89
91
  hue: getDegrees(value.hue),
90
92
  whiteness: getPercentage(value.whiteness),
91
93
  blackness: getPercentage(value.blackness)
92
94
  }, alpha ? value.alpha : void 0);
93
95
  }
94
- function setRGBColor(color, state, changes, value, alpha) {
96
+ function setRGBColor(instance, value, alpha) {
95
97
  if (!isRgbLike(value)) return;
96
- setColorValue(color, state, changes, COLOR_TYPE.rgb, {
98
+ setColorValue(instance, COLOR_TYPE.rgb, {
97
99
  red: getHexValue(value.red),
98
100
  green: getHexValue(value.green),
99
101
  blue: getHexValue(value.blue)