@chayns-components/color-picker 5.0.0-beta.1000

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 (158) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/lib/cjs/api/color/get.js +33 -0
  4. package/lib/cjs/api/color/get.js.map +1 -0
  5. package/lib/cjs/api/color/put.js +37 -0
  6. package/lib/cjs/api/color/put.js.map +1 -0
  7. package/lib/cjs/components/ColorPickerProvider.js +96 -0
  8. package/lib/cjs/components/ColorPickerProvider.js.map +1 -0
  9. package/lib/cjs/components/color-picker/ColorPicker.js +43 -0
  10. package/lib/cjs/components/color-picker/ColorPicker.js.map +1 -0
  11. package/lib/cjs/components/color-picker/ColorPicker.styles.js +12 -0
  12. package/lib/cjs/components/color-picker/ColorPicker.styles.js.map +1 -0
  13. package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +50 -0
  14. package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
  15. package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +64 -0
  16. package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
  17. package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js +32 -0
  18. package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
  19. package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js +13 -0
  20. package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
  21. package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js +246 -0
  22. package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
  23. package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js +45 -0
  24. package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
  25. package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js +90 -0
  26. package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
  27. package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js +35 -0
  28. package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
  29. package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js +148 -0
  30. package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
  31. package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js +15 -0
  32. package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
  33. package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +47 -0
  34. package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
  35. package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +28 -0
  36. package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
  37. package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +50 -0
  38. package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
  39. package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +44 -0
  40. package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
  41. package/lib/cjs/components/color-picker-popup/sliders/Sliders.js +75 -0
  42. package/lib/cjs/components/color-picker-popup/sliders/Sliders.js.map +1 -0
  43. package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js +20 -0
  44. package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
  45. package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js +22 -0
  46. package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
  47. package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +46 -0
  48. package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
  49. package/lib/cjs/components/hue-slider/HueSlider.js +135 -0
  50. package/lib/cjs/components/hue-slider/HueSlider.js.map +1 -0
  51. package/lib/cjs/components/hue-slider/HueSlider.styles.js +88 -0
  52. package/lib/cjs/components/hue-slider/HueSlider.styles.js.map +1 -0
  53. package/lib/cjs/components/transparency-slider/TransparencySlider.js +122 -0
  54. package/lib/cjs/components/transparency-slider/TransparencySlider.js.map +1 -0
  55. package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js +123 -0
  56. package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
  57. package/lib/cjs/constants/color.js +72 -0
  58. package/lib/cjs/constants/color.js.map +1 -0
  59. package/lib/cjs/index.js +48 -0
  60. package/lib/cjs/index.js.map +1 -0
  61. package/lib/cjs/types/colorPicker.js +2 -0
  62. package/lib/cjs/types/colorPicker.js.map +1 -0
  63. package/lib/cjs/utils/color.js +245 -0
  64. package/lib/cjs/utils/color.js.map +1 -0
  65. package/lib/esm/api/color/get.js +26 -0
  66. package/lib/esm/api/color/get.js.map +1 -0
  67. package/lib/esm/api/color/put.js +30 -0
  68. package/lib/esm/api/color/put.js.map +1 -0
  69. package/lib/esm/components/ColorPickerProvider.js +89 -0
  70. package/lib/esm/components/ColorPickerProvider.js.map +1 -0
  71. package/lib/esm/components/color-picker/ColorPicker.js +39 -0
  72. package/lib/esm/components/color-picker/ColorPicker.js.map +1 -0
  73. package/lib/esm/components/color-picker/ColorPicker.styles.js +5 -0
  74. package/lib/esm/components/color-picker/ColorPicker.styles.js.map +1 -0
  75. package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +42 -0
  76. package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
  77. package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +69 -0
  78. package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
  79. package/lib/esm/components/color-picker-popup/ColorPickerPopup.js +28 -0
  80. package/lib/esm/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
  81. package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js +6 -0
  82. package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
  83. package/lib/esm/components/color-picker-popup/color-area/ColorArea.js +237 -0
  84. package/lib/esm/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
  85. package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js +38 -0
  86. package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
  87. package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js +82 -0
  88. package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
  89. package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js +37 -0
  90. package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
  91. package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js +152 -0
  92. package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
  93. package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js +8 -0
  94. package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
  95. package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +40 -0
  96. package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
  97. package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +27 -0
  98. package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
  99. package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +43 -0
  100. package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
  101. package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +43 -0
  102. package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
  103. package/lib/esm/components/color-picker-popup/sliders/Sliders.js +67 -0
  104. package/lib/esm/components/color-picker-popup/sliders/Sliders.js.map +1 -0
  105. package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js +13 -0
  106. package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
  107. package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js +14 -0
  108. package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
  109. package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +42 -0
  110. package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
  111. package/lib/esm/components/hue-slider/HueSlider.js +128 -0
  112. package/lib/esm/components/hue-slider/HueSlider.js.map +1 -0
  113. package/lib/esm/components/hue-slider/HueSlider.styles.js +84 -0
  114. package/lib/esm/components/hue-slider/HueSlider.styles.js.map +1 -0
  115. package/lib/esm/components/transparency-slider/TransparencySlider.js +115 -0
  116. package/lib/esm/components/transparency-slider/TransparencySlider.js.map +1 -0
  117. package/lib/esm/components/transparency-slider/TransparencySlider.styles.js +125 -0
  118. package/lib/esm/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
  119. package/lib/esm/constants/color.js +66 -0
  120. package/lib/esm/constants/color.js.map +1 -0
  121. package/lib/esm/index.js +6 -0
  122. package/lib/esm/index.js.map +1 -0
  123. package/lib/esm/types/colorPicker.js +2 -0
  124. package/lib/esm/types/colorPicker.js.map +1 -0
  125. package/lib/esm/utils/color.js +229 -0
  126. package/lib/esm/utils/color.js.map +1 -0
  127. package/lib/types/api/color/get.d.ts +1 -0
  128. package/lib/types/api/color/put.d.ts +2 -0
  129. package/lib/types/components/ColorPickerProvider.d.ts +35 -0
  130. package/lib/types/components/color-picker/ColorPicker.d.ts +61 -0
  131. package/lib/types/components/color-picker/ColorPicker.styles.d.ts +1 -0
  132. package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.d.ts +20 -0
  133. package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.d.ts +18 -0
  134. package/lib/types/components/color-picker-popup/ColorPickerPopup.d.ts +16 -0
  135. package/lib/types/components/color-picker-popup/ColorPickerPopup.styles.d.ts +1 -0
  136. package/lib/types/components/color-picker-popup/color-area/ColorArea.d.ts +6 -0
  137. package/lib/types/components/color-picker-popup/color-area/ColorArea.styles.d.ts +267 -0
  138. package/lib/types/components/color-picker-popup/more-options/MoreOptions.d.ts +6 -0
  139. package/lib/types/components/color-picker-popup/more-options/MoreOptions.styles.d.ts +9 -0
  140. package/lib/types/components/color-picker-popup/preset-colors/PresetColors.d.ts +13 -0
  141. package/lib/types/components/color-picker-popup/preset-colors/PresetColors.styles.d.ts +1 -0
  142. package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.d.ts +13 -0
  143. package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.d.ts +6 -0
  144. package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.d.ts +10 -0
  145. package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.d.ts +12 -0
  146. package/lib/types/components/color-picker-popup/sliders/Sliders.d.ts +9 -0
  147. package/lib/types/components/color-picker-popup/sliders/Sliders.styles.d.ts +2 -0
  148. package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.d.ts +6 -0
  149. package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.d.ts +10 -0
  150. package/lib/types/components/hue-slider/HueSlider.d.ts +25 -0
  151. package/lib/types/components/hue-slider/HueSlider.styles.d.ts +15 -0
  152. package/lib/types/components/transparency-slider/TransparencySlider.d.ts +24 -0
  153. package/lib/types/components/transparency-slider/TransparencySlider.styles.d.ts +24 -0
  154. package/lib/types/constants/color.d.ts +3 -0
  155. package/lib/types/index.d.ts +6 -0
  156. package/lib/types/types/colorPicker.d.ts +27 -0
  157. package/lib/types/utils/color.d.ts +32 -0
  158. package/package.json +86 -0
@@ -0,0 +1,229 @@
1
+ import { hexToHsl, rgb255ToHsl, rgb255ToHsv } from '@chayns/colors';
2
+ export const getColorFromCoordinates = _ref => {
3
+ let {
4
+ coordinates,
5
+ canvas,
6
+ opacity,
7
+ scale
8
+ } = _ref;
9
+ if (!canvas.current) {
10
+ return undefined;
11
+ }
12
+ const xCords = coordinates.x;
13
+ const yCords = coordinates.y;
14
+ const x = (xCords - 0.5) * scale.scaleX;
15
+ const y = (yCords - 0.5) * scale.scaleY;
16
+ const ctx = canvas.current?.getContext('2d', {
17
+ willReadFrequently: true
18
+ });
19
+ const pixels = ctx?.getImageData(x, y, 1, 1).data;
20
+ if (!pixels) {
21
+ return undefined;
22
+ }
23
+
24
+ // If transparency
25
+ if (pixels[0] === 0 && pixels[1] === 0 && pixels[2] === 0 && pixels[3] === 0) {
26
+ return 'transparent';
27
+ }
28
+ return `rgba(${pixels[0] ?? 0}, ${pixels[1] ?? 0}, ${pixels[2] ?? 0}, ${opacity})`;
29
+ };
30
+ export const getCoordinatesFromColor = _ref2 => {
31
+ let {
32
+ canvas,
33
+ color,
34
+ tolerance = 0
35
+ } = _ref2;
36
+ const ctx = canvas.current?.getContext('2d', {
37
+ willReadFrequently: true
38
+ });
39
+ if (!ctx) {
40
+ return null;
41
+ }
42
+ const height = canvas.current?.height ?? 150;
43
+ const width = canvas.current?.width ?? 300;
44
+ const imageData = ctx.getImageData(0, 0, width, height);
45
+ const pixels = imageData.data;
46
+ const rgb = splitRgb(color);
47
+ if (!rgb) {
48
+ return null;
49
+ }
50
+ const {
51
+ r: targetR,
52
+ g: targetG,
53
+ b: targetB
54
+ } = rgb;
55
+ for (let y = 0; y < height; y++) {
56
+ for (let x = 0; x < width; x++) {
57
+ const index = (y * width + x) * 4;
58
+ const r = pixels[index] ?? 0;
59
+ const g = pixels[index + 1] ?? 0;
60
+ const b = pixels[index + 2] ?? 0;
61
+ if (Math.abs(targetR - r) <= tolerance && Math.abs(targetG - g) <= tolerance && Math.abs(targetB - b) <= tolerance) {
62
+ return {
63
+ x,
64
+ y
65
+ };
66
+ }
67
+ }
68
+ }
69
+ return null;
70
+ };
71
+ export const isValidRGBA = rgbaString => {
72
+ if (rgbaString === '') {
73
+ return false;
74
+ }
75
+ const rgbaRegex = /^rgba\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((0?\.\d+)|(1|0))\s*\)$/;
76
+ if (!rgbaRegex.test(rgbaString)) {
77
+ return false;
78
+ }
79
+ const matches = rgbaString.match(rgbaRegex);
80
+ if (!matches) {
81
+ return false;
82
+ }
83
+ const red = parseInt(matches[1] ?? '', 10);
84
+ const green = parseInt(matches[2] ?? '', 10);
85
+ const blue = parseInt(matches[3] ?? '', 10);
86
+ const alpha = parseFloat(matches[4] ?? '');
87
+ return !(red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255 || alpha < 0 || alpha > 1);
88
+ };
89
+ export const isValidRGB = rgbString => {
90
+ if (rgbString === '') {
91
+ return false;
92
+ }
93
+ const rgbRegex = /^rgb\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\s*\)$/;
94
+ if (!rgbRegex.test(rgbString)) {
95
+ return false;
96
+ }
97
+ const matches = rgbString.match(rgbRegex);
98
+ if (!matches) {
99
+ return false;
100
+ }
101
+ const red = parseInt(matches[1] ?? '', 10);
102
+ const green = parseInt(matches[2] ?? '', 10);
103
+ const blue = parseInt(matches[3] ?? '', 10);
104
+ return red >= 0 && red <= 255 && green >= 0 && green <= 255 && blue >= 0 && blue <= 255;
105
+ };
106
+ export const convertColorToHsl = color => {
107
+ const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
108
+ const rgbRegex = /^rgb(a)?\(\s*((25[0-5]|2[0-4]\d|1\d{2}|\d{1,2})\s*,\s*){2}(25[0-5]|2[0-4]\d|1\d{2}|\d{1,2})\s*(,\s*\d+(\.\d+)?)?\)$/i;
109
+ const hslRegex = /^hsla?\(\s*((360|3[0-5]\d|[12]\d{2}|[1-9]\d|\d)\s*,\s*){2}(360|3[0-5]\d|[12]\d{2}|[1-9]\d|\d)\s*(,\s*\d+(\.\d+)?)?\)$/i;
110
+ let rgba;
111
+ let hsl;
112
+ const newColor = color.replaceAll('%', '');
113
+ switch (true) {
114
+ case hexRegex.test(newColor):
115
+ hsl = hexToHsl(color);
116
+ if (!hsl) {
117
+ return undefined;
118
+ }
119
+ return `hsl(${Math.floor(hsl.h)},100%,100%)`;
120
+ case rgbRegex.test(newColor):
121
+ rgba = color.match(/[\d.]+/g);
122
+ if (!rgba) {
123
+ return undefined;
124
+ }
125
+ hsl = rgb255ToHsl({
126
+ r: Number(rgba[0]),
127
+ g: Number(rgba[1]),
128
+ b: Number(rgba[2])
129
+ });
130
+ if (!hsl) {
131
+ return undefined;
132
+ }
133
+ return `hsl(${Math.floor(hsl.h)},100%,100%)`;
134
+ case hslRegex.test(newColor):
135
+ return color;
136
+ default:
137
+ return undefined;
138
+ }
139
+ };
140
+ export const rgbToHsv = color => rgb255ToHsv(extractRgbValues(color ?? ''));
141
+ export const extractHsl = hsl => {
142
+ const match = hsl.match(/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%\s*\)/i);
143
+ if (!match) {
144
+ return null;
145
+ }
146
+ const h = parseFloat(match[1] ?? '');
147
+ const s = parseFloat(match[2] ?? '') / 100;
148
+ const l = parseFloat(match[3] ?? '') / 100;
149
+ return {
150
+ h,
151
+ s,
152
+ l
153
+ };
154
+ };
155
+ export const splitRgb = color => {
156
+ const rgba = color?.match(/[\d.]+/g);
157
+ if (!rgba) {
158
+ return null;
159
+ }
160
+ return {
161
+ r: Number(rgba[0]),
162
+ g: Number(rgba[1]),
163
+ b: Number(rgba[2]),
164
+ a: Number(rgba[3])
165
+ };
166
+ };
167
+ export const extractRgbValues = rgbString => {
168
+ const rgbaRegex = /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/;
169
+ const match = rgbString.match(rgbaRegex);
170
+ if (match) {
171
+ const r = parseInt(match[1] ?? '', 10);
172
+ const g = parseInt(match[2] ?? '', 10);
173
+ const b = parseInt(match[3] ?? '', 10);
174
+ const a = parseFloat(match[4] ?? '');
175
+ return {
176
+ r,
177
+ g,
178
+ b,
179
+ a
180
+ };
181
+ }
182
+ return {
183
+ r: 255,
184
+ g: 255,
185
+ b: 255,
186
+ a: 1
187
+ };
188
+ };
189
+ export const hexToRgb = hex => {
190
+ let r;
191
+ let g;
192
+ let b;
193
+ let a;
194
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(hex);
195
+ if (result) {
196
+ r = parseInt(result[1] ?? '0', 16);
197
+ g = parseInt(result[2] ?? '0', 16);
198
+ b = parseInt(result[3] ?? '0', 16);
199
+ a = result[4] ? parseInt(result[4], 16) / 100 : 1;
200
+ return {
201
+ r,
202
+ g,
203
+ b,
204
+ a
205
+ };
206
+ }
207
+ return {
208
+ r: 255,
209
+ g: 255,
210
+ b: 255,
211
+ a: 1
212
+ };
213
+ };
214
+ export const rgbToHex = _ref3 => {
215
+ let {
216
+ r,
217
+ g,
218
+ b,
219
+ a = 1
220
+ } = _ref3;
221
+ const clamp = value => Math.max(0, Math.min(255, Math.round(value)));
222
+ const alpha = Math.max(0, Math.min(1, a));
223
+ const hex = x => {
224
+ const hexValue = clamp(x).toString(16);
225
+ return hexValue.length === 1 ? `0${hexValue}` : hexValue;
226
+ };
227
+ return `#${hex(r)}${hex(g)}${hex(b)}${alpha <= 1 ? hex(alpha * 100) : ''}`;
228
+ };
229
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","names":["hexToHsl","rgb255ToHsl","rgb255ToHsv","getColorFromCoordinates","_ref","coordinates","canvas","opacity","scale","current","undefined","xCords","x","yCords","y","scaleX","scaleY","ctx","getContext","willReadFrequently","pixels","getImageData","data","getCoordinatesFromColor","_ref2","color","tolerance","height","width","imageData","rgb","splitRgb","r","targetR","g","targetG","b","targetB","index","Math","abs","isValidRGBA","rgbaString","rgbaRegex","test","matches","match","red","parseInt","green","blue","alpha","parseFloat","isValidRGB","rgbString","rgbRegex","convertColorToHsl","hexRegex","hslRegex","rgba","hsl","newColor","replaceAll","floor","h","Number","rgbToHsv","extractRgbValues","extractHsl","s","l","a","hexToRgb","hex","result","exec","rgbToHex","_ref3","clamp","value","max","min","round","hexValue","toString","length"],"sources":["../../../src/utils/color.ts"],"sourcesContent":["import type { CSSProperties, RefObject } from 'react';\n\nimport { hexToHsl, rgb255ToHsl, rgb255ToHsv } from '@chayns/colors';\nimport type { HSL, HSLA } from '@chayns/colors/lib/types/hsl';\nimport type { Coordinates, RGBA, Scale } from '../types/colorPicker';\n\ninterface GetColorFromCoordinatesOptions {\n coordinates: Coordinates;\n canvas: RefObject<HTMLCanvasElement>;\n opacity: number;\n scale: Scale;\n}\n\nexport const getColorFromCoordinates = ({\n coordinates,\n canvas,\n opacity,\n scale,\n}: GetColorFromCoordinatesOptions) => {\n if (!canvas.current) {\n return undefined;\n }\n\n const xCords = coordinates.x;\n const yCords = coordinates.y;\n\n const x = (xCords - 0.5) * scale.scaleX;\n const y = (yCords - 0.5) * scale.scaleY;\n\n const ctx = canvas.current?.getContext('2d', { willReadFrequently: true });\n const pixels = ctx?.getImageData(x, y, 1, 1).data;\n\n if (!pixels) {\n return undefined;\n }\n\n // If transparency\n if (pixels[0] === 0 && pixels[1] === 0 && pixels[2] === 0 && pixels[3] === 0) {\n return 'transparent';\n }\n\n return `rgba(${pixels[0] ?? 0}, ${pixels[1] ?? 0}, ${pixels[2] ?? 0}, ${opacity})`;\n};\n\ninterface GetCoordinatesFromColorOptions {\n color: CSSProperties['color'];\n canvas: RefObject<HTMLCanvasElement>;\n tolerance?: number;\n}\n\nexport const getCoordinatesFromColor = ({\n canvas,\n color,\n tolerance = 0,\n}: GetCoordinatesFromColorOptions) => {\n const ctx = canvas.current?.getContext('2d', { willReadFrequently: true });\n\n if (!ctx) {\n return null;\n }\n\n const height = canvas.current?.height ?? 150;\n const width = canvas.current?.width ?? 300;\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n\n const rgb = splitRgb(color);\n\n if (!rgb) {\n return null;\n }\n\n const { r: targetR, g: targetG, b: targetB } = rgb;\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const index = (y * width + x) * 4;\n const r = pixels[index] ?? 0;\n const g = pixels[index + 1] ?? 0;\n const b = pixels[index + 2] ?? 0;\n\n if (\n Math.abs(targetR - r) <= tolerance &&\n Math.abs(targetG - g) <= tolerance &&\n Math.abs(targetB - b) <= tolerance\n ) {\n return { x, y };\n }\n }\n }\n\n return null;\n};\n\nexport const isValidRGBA = (rgbaString: string): boolean => {\n if (rgbaString === '') {\n return false;\n }\n\n const rgbaRegex = /^rgba\\(\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((0?\\.\\d+)|(1|0))\\s*\\)$/;\n if (!rgbaRegex.test(rgbaString)) {\n return false;\n }\n\n const matches = rgbaString.match(rgbaRegex);\n if (!matches) {\n return false;\n }\n\n const red = parseInt(matches[1] ?? '', 10);\n const green = parseInt(matches[2] ?? '', 10);\n const blue = parseInt(matches[3] ?? '', 10);\n const alpha = parseFloat(matches[4] ?? '');\n\n return !(\n red < 0 ||\n red > 255 ||\n green < 0 ||\n green > 255 ||\n blue < 0 ||\n blue > 255 ||\n alpha < 0 ||\n alpha > 1\n );\n};\n\nexport const isValidRGB = (rgbString: string): boolean => {\n if (rgbString === '') {\n return false;\n }\n\n const rgbRegex = /^rgb\\(\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\s*\\)$/;\n if (!rgbRegex.test(rgbString)) {\n return false;\n }\n\n const matches = rgbString.match(rgbRegex);\n if (!matches) {\n return false;\n }\n\n const red = parseInt(matches[1] ?? '', 10);\n const green = parseInt(matches[2] ?? '', 10);\n const blue = parseInt(matches[3] ?? '', 10);\n\n return red >= 0 && red <= 255 && green >= 0 && green <= 255 && blue >= 0 && blue <= 255;\n};\n\nexport const convertColorToHsl = (color: string) => {\n const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n const rgbRegex =\n /^rgb(a)?\\(\\s*((25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\s*,\\s*){2}(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\s*(,\\s*\\d+(\\.\\d+)?)?\\)$/i;\n const hslRegex =\n /^hsla?\\(\\s*((360|3[0-5]\\d|[12]\\d{2}|[1-9]\\d|\\d)\\s*,\\s*){2}(360|3[0-5]\\d|[12]\\d{2}|[1-9]\\d|\\d)\\s*(,\\s*\\d+(\\.\\d+)?)?\\)$/i;\n\n let rgba: string[] | null;\n let hsl: HSL | HSLA | null;\n\n const newColor = color.replaceAll('%', '');\n\n switch (true) {\n case hexRegex.test(newColor):\n hsl = hexToHsl(color);\n\n if (!hsl) {\n return undefined;\n }\n\n return `hsl(${Math.floor(hsl.h)},100%,100%)`;\n case rgbRegex.test(newColor):\n rgba = color.match(/[\\d.]+/g);\n\n if (!rgba) {\n return undefined;\n }\n\n hsl = rgb255ToHsl({\n r: Number(rgba[0]),\n g: Number(rgba[1]),\n b: Number(rgba[2]),\n });\n\n if (!hsl) {\n return undefined;\n }\n\n return `hsl(${Math.floor(hsl.h)},100%,100%)`;\n case hslRegex.test(newColor):\n return color;\n default:\n return undefined;\n }\n};\n\nexport const rgbToHsv = (color: CSSProperties['color']) =>\n rgb255ToHsv(extractRgbValues(color ?? ''));\n\nexport const extractHsl = (hsl: string) => {\n const match = hsl.match(\n /hsl\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\d+(?:\\.\\d+)?)%\\s*\\)/i,\n );\n\n if (!match) {\n return null;\n }\n\n const h = parseFloat(match[1] ?? '');\n const s = parseFloat(match[2] ?? '') / 100;\n const l = parseFloat(match[3] ?? '') / 100;\n\n return { h, s, l };\n};\n\nexport const splitRgb = (color: CSSProperties['color']): null | RGBA => {\n const rgba = color?.match(/[\\d.]+/g);\n\n if (!rgba) {\n return null;\n }\n\n return { r: Number(rgba[0]), g: Number(rgba[1]), b: Number(rgba[2]), a: Number(rgba[3]) };\n};\n\nexport const extractRgbValues = (rgbString: string): RGBA => {\n const rgbaRegex = /rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\n const match = rgbString.match(rgbaRegex);\n\n if (match) {\n const r = parseInt(match[1] ?? '', 10);\n const g = parseInt(match[2] ?? '', 10);\n const b = parseInt(match[3] ?? '', 10);\n const a = parseFloat(match[4] ?? '');\n\n return { r, g, b, a };\n }\n\n return {\n r: 255,\n g: 255,\n b: 255,\n a: 1,\n };\n};\n\nexport const hexToRgb = (hex: string): RGBA => {\n let r: number;\n let g: number;\n let b: number;\n let a: number;\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i.exec(hex);\n\n if (result) {\n r = parseInt(result[1] ?? '0', 16);\n g = parseInt(result[2] ?? '0', 16);\n b = parseInt(result[3] ?? '0', 16);\n a = result[4] ? parseInt(result[4], 16) / 100 : 1;\n\n return { r, g, b, a };\n }\n\n return {\n r: 255,\n g: 255,\n b: 255,\n a: 1,\n };\n};\n\nexport const rgbToHex = ({ r, g, b, a = 1 }: RGBA): string => {\n const clamp = (value: number) => Math.max(0, Math.min(255, Math.round(value)));\n const alpha = Math.max(0, Math.min(1, a));\n const hex = (x: number) => {\n const hexValue = clamp(x).toString(16);\n return hexValue.length === 1 ? `0${hexValue}` : hexValue;\n };\n return `#${hex(r)}${hex(g)}${hex(b)}${alpha <= 1 ? hex(alpha * 100) : ''}`;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const putSiteColors: (colorsArray: string[]) => Promise<boolean>;
@@ -0,0 +1,2 @@
1
+ import { ItemStorageResult } from '../../types/colorPicker';
2
+ export declare const getSiteColors: () => Promise<ItemStorageResult>;
@@ -0,0 +1,35 @@
1
+ import React, { type ReactNode } from 'react';
2
+ interface IColorPickerContext {
3
+ selectedColor?: string;
4
+ updateSelectedColor?: (color: string | undefined) => void;
5
+ hueColor?: string;
6
+ updateHueColor?: (color: string | undefined) => void;
7
+ isPresetColor?: boolean;
8
+ updateIsPresetColor?: (isPresetColor: boolean) => void;
9
+ shouldGetCoordinates?: boolean;
10
+ updateShouldGetCoordinates?: (shouldGetCoordinates: boolean) => void;
11
+ shouldCallOnSelect?: boolean;
12
+ updateShouldCallOnSelect?: (shouldCallOnSelect: boolean) => void;
13
+ canGetColorFromArea?: boolean;
14
+ updateCanGetColorFromArea?: (canGetColorFromArea: boolean) => void;
15
+ }
16
+ export declare const ColorPickerContext: React.Context<IColorPickerContext>;
17
+ interface ColorPickerProviderProps {
18
+ /**
19
+ * The children of the provider.
20
+ */
21
+ children: ReactNode;
22
+ /**
23
+ * Function to be executed when a color is selected.
24
+ */
25
+ onSelect?: (color: string) => void;
26
+ /**
27
+ * The color that should be preselected.
28
+ */
29
+ selectedColor?: string;
30
+ }
31
+ declare const ColorPickerProvider: {
32
+ ({ children, selectedColor, onSelect }: ColorPickerProviderProps): React.JSX.Element;
33
+ displayName: string;
34
+ };
35
+ export default ColorPickerProvider;
@@ -0,0 +1,61 @@
1
+ import React, { ReactNode } from 'react';
2
+ import type { IPresetColor } from '../../types/colorPicker';
3
+ interface ColorPickerProps {
4
+ /**
5
+ * The element that should be rendered to trigger the ColorPicker popup on click.
6
+ */
7
+ children?: ReactNode;
8
+ /**
9
+ * Function to be executed when a preset color is added.
10
+ */
11
+ onPresetColorAdd?: (presetColor: IPresetColor) => void;
12
+ /**
13
+ * Function to be executed when a preset color is removed.
14
+ */
15
+ onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
16
+ /**
17
+ * Function to be executed when a color is selected.
18
+ */
19
+ onSelect?: (color: string) => void;
20
+ /**
21
+ * Colors the user can select from.
22
+ */
23
+ presetColors?: IPresetColor[];
24
+ /**
25
+ * The color that should be preselected.
26
+ */
27
+ selectedColor?: string;
28
+ /**
29
+ * Whether the ColorPicker should be displayed inside a popup.
30
+ */
31
+ shouldShowAsPopup?: boolean;
32
+ /**
33
+ * Whether the more options accordion should be displayed.
34
+ */
35
+ shouldShowMoreOptions?: boolean;
36
+ /**
37
+ * Whether the preset colors should be displayed.
38
+ */
39
+ shouldShowPresetColors?: boolean;
40
+ /**
41
+ * Whether the preview color should be displayed as text.
42
+ */
43
+ shouldShowPreviewColorString?: boolean;
44
+ /**
45
+ * Whether the preview color should be displayed round.
46
+ */
47
+ shouldShowRoundPreviewColor?: boolean;
48
+ /**
49
+ * Whether the transparency slider should be displayed.
50
+ */
51
+ shouldShowTransparencySlider?: boolean;
52
+ /**
53
+ * Whether presetColors should be got and uploaded to the site storage.
54
+ */
55
+ shouldUseSiteColors?: boolean;
56
+ }
57
+ declare const ColorPicker: {
58
+ ({ children, onPresetColorAdd, onPresetColorRemove, onSelect, presetColors, selectedColor, shouldShowAsPopup, shouldShowMoreOptions, shouldShowPresetColors, shouldShowPreviewColorString, shouldShowRoundPreviewColor, shouldShowTransparencySlider, shouldUseSiteColors, }: ColorPickerProps): React.JSX.Element;
59
+ displayName: string;
60
+ };
61
+ export default ColorPicker;
@@ -0,0 +1 @@
1
+ export declare const StyledColorPicker: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -0,0 +1,20 @@
1
+ import React, { ReactNode } from 'react';
2
+ import type { IPresetColor } from '../../../types/colorPicker';
3
+ interface ColorPickerWrapperProps {
4
+ children?: ReactNode;
5
+ onPresetColorAdd?: (presetColor: IPresetColor) => void;
6
+ onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
7
+ presetColors?: IPresetColor[];
8
+ shouldShowAsPopup: boolean;
9
+ shouldShowMoreOptions: boolean;
10
+ shouldShowPresetColors: boolean;
11
+ shouldShowPreviewColorString: boolean;
12
+ shouldShowRoundPreviewColor: boolean;
13
+ shouldShowTransparencySlider: boolean;
14
+ shouldUseSiteColors: boolean;
15
+ }
16
+ declare const ColorPickerWrapper: {
17
+ ({ children, onPresetColorAdd, onPresetColorRemove, presetColors, shouldShowAsPopup, shouldShowMoreOptions, shouldShowPresetColors, shouldShowPreviewColorString, shouldShowRoundPreviewColor, shouldShowTransparencySlider, shouldUseSiteColors, }: ColorPickerWrapperProps): React.JSX.Element;
18
+ displayName: string;
19
+ };
20
+ export default ColorPickerWrapper;
@@ -0,0 +1,18 @@
1
+ import type { WithTheme } from '@chayns-components/core';
2
+ export declare const StyledColorPickerWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
3
+ export declare const StyledColorPickerWrapperInfo: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
4
+ type StyledColorPickerWrapperInfoColorProps = WithTheme<{
5
+ $color?: string;
6
+ }>;
7
+ type StyledColorPickerWrapperInfoColorWrapperProps = WithTheme<{
8
+ $shouldShowRoundPreviewColor: boolean;
9
+ }>;
10
+ export declare const StyledColorPickerWrapperInfoColorWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, StyledColorPickerWrapperInfoColorWrapperProps>> & string;
11
+ export declare const StyledColorPickerWrapperInfoColorBackground: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
12
+ export declare const StyledColorPickerWrapperInfoColor: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components/dist/types").Substitute<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
13
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
14
+ }>, StyledColorPickerWrapperInfoColorProps>, never>> & string;
15
+ export declare const StyledColorPickerWrapperInfoText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
16
+ theme: import("@chayns-components/core/lib/types/components/color-scheme-provider/ColorSchemeProvider").Theme;
17
+ }>> & string;
18
+ export {};
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { IPresetColor } from '../../types/colorPicker';
3
+ interface ColorPickerPopupProps {
4
+ presetColors?: IPresetColor[];
5
+ shouldShowPresetColors: boolean;
6
+ onPresetColorAdd?: (presetColor: IPresetColor) => void;
7
+ onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
8
+ shouldShowTransparencySlider: boolean;
9
+ shouldShowMoreOptions: boolean;
10
+ shouldUseSiteColors: boolean;
11
+ }
12
+ declare const ColorPickerPopup: {
13
+ ({ presetColors, onPresetColorRemove, onPresetColorAdd, shouldShowPresetColors, shouldShowTransparencySlider, shouldUseSiteColors, shouldShowMoreOptions, }: ColorPickerPopupProps): React.JSX.Element;
14
+ displayName: string;
15
+ };
16
+ export default ColorPickerPopup;
@@ -0,0 +1 @@
1
+ export declare const StyledColorPickerPopup: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ declare const ColorArea: {
3
+ (): React.JSX.Element;
4
+ displayName: string;
5
+ };
6
+ export default ColorArea;