@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,246 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _ColorArea = require("./ColorArea.styles");
9
+ var _colors = require("@chayns/colors");
10
+ var _chaynsApi = require("chayns-api");
11
+ var _framerMotion = require("framer-motion");
12
+ var _color = require("../../../utils/color");
13
+ var _ColorPickerProvider = require("../../ColorPickerProvider");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ const ColorArea = () => {
17
+ const {
18
+ selectedColor,
19
+ updateSelectedColor,
20
+ updateIsPresetColor,
21
+ isPresetColor,
22
+ shouldGetCoordinates,
23
+ canGetColorFromArea,
24
+ updateShouldGetCoordinates,
25
+ updateShouldCallOnSelect,
26
+ hueColor
27
+ } = (0, _react.useContext)(_ColorPickerProvider.ColorPickerContext);
28
+ const [opacity, setOpacity] = (0, _react.useState)(1);
29
+ const [scale, setScale] = (0, _react.useState)({
30
+ scaleX: 0,
31
+ scaleY: 0
32
+ });
33
+ const isPresetColorRef = (0, _react.useRef)(false);
34
+ const shouldGetCoordinatesRef = (0, _react.useRef)(false);
35
+ const canDrag = (0, _react.useRef)(false);
36
+ const canvasRef = (0, _react.useRef)(null);
37
+ const pseudoRef = (0, _react.useRef)(null);
38
+ const dragControls = (0, _framerMotion.useDragControls)();
39
+ const x = (0, _framerMotion.useMotionValue)(0);
40
+ const y = (0, _framerMotion.useMotionValue)(0);
41
+ (0, _react.useEffect)(() => {
42
+ isPresetColorRef.current = isPresetColor ?? false;
43
+ }, [isPresetColor]);
44
+ (0, _react.useEffect)(() => {
45
+ shouldGetCoordinatesRef.current = shouldGetCoordinates ?? true;
46
+ }, [shouldGetCoordinates]);
47
+ (0, _react.useEffect)(() => {
48
+ if (selectedColor) {
49
+ const {
50
+ a
51
+ } = (0, _color.extractRgbValues)(selectedColor);
52
+ setOpacity(a);
53
+ }
54
+ }, [selectedColor]);
55
+ (0, _react.useEffect)(() => {
56
+ const canvas = canvasRef.current;
57
+ if (!canvas) {
58
+ return;
59
+ }
60
+ const rect = canvas.getBoundingClientRect();
61
+ const scaleX = canvas.width / rect.width;
62
+ const scaleY = canvas.height / rect.height;
63
+ setScale({
64
+ scaleX,
65
+ scaleY
66
+ });
67
+ }, []);
68
+ const setColor = (0, _react.useCallback)(() => {
69
+ const xCord = x.get();
70
+ const yCord = y.get();
71
+ if (typeof updateSelectedColor === 'function') {
72
+ const color = (0, _color.getColorFromCoordinates)({
73
+ coordinates: {
74
+ x: xCord,
75
+ y: yCord
76
+ },
77
+ canvas: canvasRef,
78
+ opacity,
79
+ scale
80
+ });
81
+ if (color === 'transparent') {
82
+ return;
83
+ }
84
+ updateSelectedColor(color);
85
+ }
86
+ }, [opacity, scale, updateSelectedColor, x, y]);
87
+ (0, _react.useEffect)(() => {
88
+ var _canvasRef$current;
89
+ const ctx = (_canvasRef$current = canvasRef.current) === null || _canvasRef$current === void 0 ? void 0 : _canvasRef$current.getContext('2d');
90
+ if (!ctx) {
91
+ return;
92
+ }
93
+ const hsv = (0, _color.rgbToHsv)(hueColor);
94
+ const hex = (0, _colors.hsvToHex)({
95
+ h: (hsv === null || hsv === void 0 ? void 0 : hsv.h) ?? 1,
96
+ s: 1,
97
+ v: 1
98
+ });
99
+ const colorGradiant = ctx.createLinearGradient(0, 0, 300, 0);
100
+ colorGradiant.addColorStop(0, '#fff');
101
+ colorGradiant.addColorStop(1, hex ?? 'red');
102
+ ctx.fillStyle = colorGradiant;
103
+ ctx.fillRect(0, 0, 300, 150);
104
+ const transparentGradiant = ctx.createLinearGradient(0, 0, 0, 150);
105
+ transparentGradiant.addColorStop(0, 'transparent');
106
+ transparentGradiant.addColorStop(1, '#000');
107
+ ctx.fillStyle = transparentGradiant;
108
+ ctx.fillRect(0, 0, 300, 150);
109
+ if (isPresetColorRef.current) {
110
+ if (typeof updateIsPresetColor === 'function') {
111
+ updateIsPresetColor(false);
112
+ }
113
+ return;
114
+ }
115
+ if (canGetColorFromArea) {
116
+ setColor();
117
+ }
118
+ }, [canGetColorFromArea, hueColor, setColor, updateIsPresetColor]);
119
+ (0, _react.useEffect)(() => {
120
+ if (selectedColor && shouldGetCoordinatesRef.current) {
121
+ const cords = (0, _color.getCoordinatesFromColor)({
122
+ color: selectedColor,
123
+ canvas: canvasRef,
124
+ tolerance: 10
125
+ });
126
+ if (cords) {
127
+ x.set(cords.x);
128
+ y.set(cords.y);
129
+ }
130
+ }
131
+ }, [selectedColor, x, y]);
132
+ const handleDrag = (0, _react.useCallback)(() => {
133
+ setColor();
134
+ }, [setColor]);
135
+ const handleClick = (0, _react.useCallback)(event => {
136
+ if (typeof updateShouldGetCoordinates === 'function') {
137
+ updateShouldGetCoordinates(false);
138
+ }
139
+ const {
140
+ left,
141
+ top
142
+ } = event.target.getBoundingClientRect();
143
+ x.set(event.clientX - left - 10);
144
+ y.set(event.clientY - top - 10);
145
+ setColor();
146
+ }, [setColor, updateShouldGetCoordinates, x, y]);
147
+ const handlePointerUp = (0, _react.useCallback)(() => {
148
+ canDrag.current = false;
149
+ void (0, _chaynsApi.setRefreshScrollEnabled)(true);
150
+ if (typeof updateShouldGetCoordinates === 'function') {
151
+ updateShouldGetCoordinates(true);
152
+ }
153
+ if (typeof updateShouldCallOnSelect === 'function') {
154
+ updateShouldCallOnSelect(true);
155
+ }
156
+ }, [updateShouldCallOnSelect, updateShouldGetCoordinates]);
157
+ const move = (0, _react.useCallback)((xCords, yCords) => {
158
+ let newXCords = xCords;
159
+ let newYCords = yCords;
160
+ switch (true) {
161
+ case xCords > 300:
162
+ newXCords = 300;
163
+ break;
164
+ case xCords < 0:
165
+ newXCords = 0;
166
+ break;
167
+ default:
168
+ break;
169
+ }
170
+ switch (true) {
171
+ case yCords > 150:
172
+ newYCords = 150;
173
+ break;
174
+ case yCords < 0:
175
+ newYCords = 0;
176
+ break;
177
+ default:
178
+ break;
179
+ }
180
+ x.set(newXCords);
181
+ y.set(newYCords);
182
+ setColor();
183
+ }, [setColor, x, y]);
184
+ const handleMouseMove = (0, _react.useCallback)(event => {
185
+ if (canDrag.current && pseudoRef.current) {
186
+ const {
187
+ left,
188
+ top
189
+ } = pseudoRef.current.getBoundingClientRect();
190
+ const xCords = event.clientX - left - 10;
191
+ const yCords = event.clientY - top - 10;
192
+ move(xCords, yCords);
193
+ }
194
+ }, [move]);
195
+ const handleTouchMove = (0, _react.useCallback)(event => {
196
+ if (canDrag.current && pseudoRef.current) {
197
+ event.preventDefault();
198
+ void (0, _chaynsApi.setRefreshScrollEnabled)(false);
199
+ const {
200
+ left,
201
+ top
202
+ } = pseudoRef.current.getBoundingClientRect();
203
+ const xCords = event.changedTouches[0] ? event.changedTouches[0].clientX - left - 10 : event.pageX;
204
+ const yCords = event.changedTouches[0] ? event.changedTouches[0].clientY - top - 10 : event.pageY;
205
+ move(xCords, yCords);
206
+ }
207
+ }, [move]);
208
+ const handleStartDrag = (0, _react.useCallback)(() => {
209
+ if (typeof updateShouldGetCoordinates === 'function') {
210
+ updateShouldGetCoordinates(false);
211
+ }
212
+ canDrag.current = true;
213
+ window.addEventListener('mousemove', handleMouseMove);
214
+ window.addEventListener('touchmove', handleTouchMove);
215
+ const endTouching = () => {
216
+ handlePointerUp();
217
+ window.removeEventListener('mousemove', handleMouseMove);
218
+ window.removeEventListener('touchmove', handleTouchMove);
219
+ window.removeEventListener('pointerup', endTouching);
220
+ window.removeEventListener('touchend', endTouching);
221
+ };
222
+ window.addEventListener('pointerup', endTouching);
223
+ window.addEventListener('touchend', endTouching);
224
+ }, [handleMouseMove, handlePointerUp, handleTouchMove, updateShouldGetCoordinates]);
225
+ return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_ColorArea.StyledColorArea, null, /*#__PURE__*/_react.default.createElement(_ColorArea.StyledColorAreaCanvas, {
226
+ ref: canvasRef
227
+ }), /*#__PURE__*/_react.default.createElement(_ColorArea.StyledColorAreaPseudo, {
228
+ ref: pseudoRef,
229
+ onPointerDown: handleStartDrag,
230
+ onClick: handleClick
231
+ }, /*#__PURE__*/_react.default.createElement(_ColorArea.StyledMotionColorAreaPointer, {
232
+ drag: true,
233
+ dragConstraints: pseudoRef,
234
+ style: {
235
+ x,
236
+ y
237
+ },
238
+ dragElastic: false,
239
+ dragMomentum: false,
240
+ dragControls: dragControls,
241
+ onDrag: handleDrag
242
+ }))), [dragControls, handleClick, handleDrag, handleStartDrag, x, y]);
243
+ };
244
+ ColorArea.displayName = 'ColorArea';
245
+ var _default = exports.default = ColorArea;
246
+ //# sourceMappingURL=ColorArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorArea.js","names":["_react","_interopRequireWildcard","require","_ColorArea","_colors","_chaynsApi","_framerMotion","_color","_ColorPickerProvider","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ColorArea","selectedColor","updateSelectedColor","updateIsPresetColor","isPresetColor","shouldGetCoordinates","canGetColorFromArea","updateShouldGetCoordinates","updateShouldCallOnSelect","hueColor","useContext","ColorPickerContext","opacity","setOpacity","useState","scale","setScale","scaleX","scaleY","isPresetColorRef","useRef","shouldGetCoordinatesRef","canDrag","canvasRef","pseudoRef","dragControls","useDragControls","x","useMotionValue","y","useEffect","current","extractRgbValues","canvas","rect","getBoundingClientRect","width","height","setColor","useCallback","xCord","yCord","color","getColorFromCoordinates","coordinates","_canvasRef$current","ctx","getContext","hsv","rgbToHsv","hex","hsvToHex","h","s","v","colorGradiant","createLinearGradient","addColorStop","fillStyle","fillRect","transparentGradiant","cords","getCoordinatesFromColor","tolerance","handleDrag","handleClick","event","left","top","target","clientX","clientY","handlePointerUp","setRefreshScrollEnabled","move","xCords","yCords","newXCords","newYCords","handleMouseMove","handleTouchMove","preventDefault","changedTouches","pageX","pageY","handleStartDrag","window","addEventListener","endTouching","removeEventListener","useMemo","createElement","StyledColorArea","StyledColorAreaCanvas","ref","StyledColorAreaPseudo","onPointerDown","onClick","StyledMotionColorAreaPointer","drag","dragConstraints","style","dragElastic","dragMomentum","onDrag","displayName","_default","exports"],"sources":["../../../../../src/components/color-picker-popup/color-area/ColorArea.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n StyledColorArea,\n StyledColorAreaCanvas,\n StyledColorAreaPseudo,\n StyledMotionColorAreaPointer,\n} from './ColorArea.styles';\n\nimport { hsvToHex } from '@chayns/colors';\nimport { setRefreshScrollEnabled } from 'chayns-api';\nimport { useDragControls, useMotionValue } from 'framer-motion';\nimport type { Scale } from '../../../types/colorPicker';\nimport {\n extractRgbValues,\n getColorFromCoordinates,\n getCoordinatesFromColor,\n rgbToHsv,\n} from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\n\nconst ColorArea = () => {\n const {\n selectedColor,\n updateSelectedColor,\n updateIsPresetColor,\n isPresetColor,\n shouldGetCoordinates,\n canGetColorFromArea,\n updateShouldGetCoordinates,\n updateShouldCallOnSelect,\n hueColor,\n } = useContext(ColorPickerContext);\n\n const [opacity, setOpacity] = useState<number>(1);\n const [scale, setScale] = useState<Scale>({ scaleX: 0, scaleY: 0 });\n\n const isPresetColorRef = useRef(false);\n const shouldGetCoordinatesRef = useRef(false);\n const canDrag = useRef(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const pseudoRef = useRef<HTMLDivElement>(null);\n\n const dragControls = useDragControls();\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n useEffect(() => {\n isPresetColorRef.current = isPresetColor ?? false;\n }, [isPresetColor]);\n\n useEffect(() => {\n shouldGetCoordinatesRef.current = shouldGetCoordinates ?? true;\n }, [shouldGetCoordinates]);\n\n useEffect(() => {\n if (selectedColor) {\n const { a } = extractRgbValues(selectedColor);\n\n setOpacity(a);\n }\n }, [selectedColor]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n\n if (!canvas) {\n return;\n }\n\n const rect = canvas.getBoundingClientRect();\n\n const scaleX = canvas.width / rect.width;\n const scaleY = canvas.height / rect.height;\n\n setScale({ scaleX, scaleY });\n }, []);\n\n const setColor = useCallback(() => {\n const xCord = x.get();\n const yCord = y.get();\n\n if (typeof updateSelectedColor === 'function') {\n const color = getColorFromCoordinates({\n coordinates: {\n x: xCord,\n y: yCord,\n },\n canvas: canvasRef,\n opacity,\n scale,\n });\n\n if (color === 'transparent') {\n return;\n }\n\n updateSelectedColor(color);\n }\n }, [opacity, scale, updateSelectedColor, x, y]);\n\n useEffect(() => {\n const ctx = canvasRef.current?.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const hsv = rgbToHsv(hueColor);\n\n const hex = hsvToHex({ h: hsv?.h ?? 1, s: 1, v: 1 });\n\n const colorGradiant = ctx.createLinearGradient(0, 0, 300, 0);\n colorGradiant.addColorStop(0, '#fff');\n colorGradiant.addColorStop(1, hex ?? 'red');\n\n ctx.fillStyle = colorGradiant;\n ctx.fillRect(0, 0, 300, 150);\n\n const transparentGradiant = ctx.createLinearGradient(0, 0, 0, 150);\n\n transparentGradiant.addColorStop(0, 'transparent');\n transparentGradiant.addColorStop(1, '#000');\n\n ctx.fillStyle = transparentGradiant;\n ctx.fillRect(0, 0, 300, 150);\n\n if (isPresetColorRef.current) {\n if (typeof updateIsPresetColor === 'function') {\n updateIsPresetColor(false);\n }\n\n return;\n }\n\n if (canGetColorFromArea) {\n setColor();\n }\n }, [canGetColorFromArea, hueColor, setColor, updateIsPresetColor]);\n\n useEffect(() => {\n if (selectedColor && shouldGetCoordinatesRef.current) {\n const cords = getCoordinatesFromColor({\n color: selectedColor,\n canvas: canvasRef,\n tolerance: 10,\n });\n\n if (cords) {\n x.set(cords.x);\n y.set(cords.y);\n }\n }\n }, [selectedColor, x, y]);\n\n const handleDrag = useCallback(() => {\n setColor();\n }, [setColor]);\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (typeof updateShouldGetCoordinates === 'function') {\n updateShouldGetCoordinates(false);\n }\n\n const { left, top } = (event.target as HTMLDivElement).getBoundingClientRect();\n\n x.set(event.clientX - left - 10);\n y.set(event.clientY - top - 10);\n\n setColor();\n },\n [setColor, updateShouldGetCoordinates, x, y],\n );\n\n const handlePointerUp = useCallback(() => {\n canDrag.current = false;\n\n void setRefreshScrollEnabled(true);\n\n if (typeof updateShouldGetCoordinates === 'function') {\n updateShouldGetCoordinates(true);\n }\n\n if (typeof updateShouldCallOnSelect === 'function') {\n updateShouldCallOnSelect(true);\n }\n }, [updateShouldCallOnSelect, updateShouldGetCoordinates]);\n\n const move = useCallback(\n (xCords: number, yCords: number) => {\n let newXCords = xCords;\n let newYCords = yCords;\n\n switch (true) {\n case xCords > 300:\n newXCords = 300;\n break;\n case xCords < 0:\n newXCords = 0;\n break;\n default:\n break;\n }\n\n switch (true) {\n case yCords > 150:\n newYCords = 150;\n break;\n case yCords < 0:\n newYCords = 0;\n break;\n default:\n break;\n }\n\n x.set(newXCords);\n y.set(newYCords);\n\n setColor();\n },\n [setColor, x, y],\n );\n\n const handleMouseMove = useCallback(\n (event: MouseEvent) => {\n if (canDrag.current && pseudoRef.current) {\n const { left, top } = pseudoRef.current.getBoundingClientRect();\n\n const xCords = event.clientX - left - 10;\n const yCords = event.clientY - top - 10;\n\n move(xCords, yCords);\n }\n },\n [move],\n );\n\n const handleTouchMove = useCallback(\n (event: TouchEvent) => {\n if (canDrag.current && pseudoRef.current) {\n event.preventDefault();\n\n void setRefreshScrollEnabled(false);\n\n const { left, top } = pseudoRef.current.getBoundingClientRect();\n\n const xCords = event.changedTouches[0]\n ? event.changedTouches[0].clientX - left - 10\n : (event as unknown as { pageX: number }).pageX;\n const yCords = event.changedTouches[0]\n ? event.changedTouches[0].clientY - top - 10\n : (event as unknown as { pageY: number }).pageY;\n\n move(xCords, yCords);\n }\n },\n [move],\n );\n\n const handleStartDrag = useCallback(() => {\n if (typeof updateShouldGetCoordinates === 'function') {\n updateShouldGetCoordinates(false);\n }\n\n canDrag.current = true;\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('touchmove', handleTouchMove);\n\n const endTouching = () => {\n handlePointerUp();\n\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('touchmove', handleTouchMove);\n window.removeEventListener('pointerup', endTouching);\n window.removeEventListener('touchend', endTouching);\n };\n\n window.addEventListener('pointerup', endTouching);\n window.addEventListener('touchend', endTouching);\n }, [handleMouseMove, handlePointerUp, handleTouchMove, updateShouldGetCoordinates]);\n\n return useMemo(\n () => (\n <StyledColorArea>\n <StyledColorAreaCanvas ref={canvasRef} />\n <StyledColorAreaPseudo\n ref={pseudoRef}\n onPointerDown={handleStartDrag}\n onClick={handleClick}\n >\n <StyledMotionColorAreaPointer\n drag\n dragConstraints={pseudoRef}\n style={{ x, y }}\n dragElastic={false}\n dragMomentum={false}\n dragControls={dragControls}\n onDrag={handleDrag}\n />\n </StyledColorAreaPseudo>\n </StyledColorArea>\n ),\n [dragControls, handleClick, handleDrag, handleStartDrag, x, y],\n );\n};\n\nColorArea.displayName = 'ColorArea';\n\nexport default ColorArea;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMotionColorAreaPointer = exports.StyledColorAreaPseudo = exports.StyledColorAreaCanvas = exports.StyledColorArea = void 0;
7
+ var _framerMotion = require("framer-motion");
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const StyledColorArea = exports.StyledColorArea = _styledComponents.default.div`
11
+ height: 150px;
12
+ width: 300px;
13
+ position: relative;
14
+ user-select: none;
15
+ overflow: hidden;
16
+ cursor: crosshair;
17
+ `;
18
+ const StyledColorAreaCanvas = exports.StyledColorAreaCanvas = _styledComponents.default.canvas`
19
+ user-select: none;
20
+ `;
21
+ const StyledColorAreaPseudo = exports.StyledColorAreaPseudo = _styledComponents.default.div`
22
+ position: absolute;
23
+ top: -10px;
24
+ left: -10px;
25
+ touch-action: none;
26
+ user-select: none;
27
+
28
+ height: 170px;
29
+ width: 320px;
30
+ `;
31
+ const StyledMotionColorAreaPointer = exports.StyledMotionColorAreaPointer = (0, _styledComponents.default)(_framerMotion.motion.div)`
32
+ position: absolute;
33
+ border-radius: 100%;
34
+ border: 2px solid white;
35
+ width: 20px;
36
+ height: 20px;
37
+ box-shadow:
38
+ 0 0 5px 0 rgba(0, 0, 0, 0.5),
39
+ 0 0 3px 0 rgba(0, 0, 0, 0.5) inset;
40
+ pointer-events: none;
41
+ user-select: none;
42
+ top: 0;
43
+ left: 0;
44
+ `;
45
+ //# sourceMappingURL=ColorArea.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorArea.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","e","__esModule","default","StyledColorArea","exports","styled","div","StyledColorAreaCanvas","canvas","StyledColorAreaPseudo","StyledMotionColorAreaPointer","motion"],"sources":["../../../../../src/components/color-picker-popup/color-area/ColorArea.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledColorArea = styled.div`\n height: 150px;\n width: 300px;\n position: relative;\n user-select: none;\n overflow: hidden;\n cursor: crosshair;\n`;\n\nexport const StyledColorAreaCanvas = styled.canvas`\n user-select: none;\n`;\n\nexport const StyledColorAreaPseudo = styled.div`\n position: absolute;\n top: -10px;\n left: -10px;\n touch-action: none;\n user-select: none;\n\n height: 170px;\n width: 320px;\n`;\n\nexport const StyledMotionColorAreaPointer = styled(motion.div)`\n position: absolute;\n border-radius: 100%;\n border: 2px solid white;\n width: 20px;\n height: 20px;\n box-shadow:\n 0 0 5px 0 rgba(0, 0, 0, 0.5),\n 0 0 3px 0 rgba(0, 0, 0, 0.5) inset;\n pointer-events: none;\n user-select: none;\n top: 0;\n left: 0;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGE,yBAAM,CAACC,GAAG;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAGF,yBAAM,CAACG,MAAM;AAClD;AACA,CAAC;AAEM,MAAMC,qBAAqB,GAAAL,OAAA,CAAAK,qBAAA,GAAGJ,yBAAM,CAACC,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMI,4BAA4B,GAAAN,OAAA,CAAAM,4BAAA,GAAG,IAAAL,yBAAM,EAACM,oBAAM,CAACL,GAAG,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _core = require("@chayns-components/core");
8
+ var _colors = require("@chayns/colors");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _color = require("../../../utils/color");
11
+ var _ColorPickerProvider = require("../../ColorPickerProvider");
12
+ var _MoreOptions = require("./MoreOptions.styles");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ const MoreOptions = () => {
16
+ const {
17
+ selectedColor,
18
+ updateSelectedColor,
19
+ updateShouldCallOnSelect
20
+ } = (0, _react.useContext)(_ColorPickerProvider.ColorPickerContext);
21
+ const areaProvider = (0, _react.useContext)(_core.AreaContext);
22
+ const [tmpHexValue, setTmpHexValue] = (0, _react.useState)('');
23
+ const [tmpRgbValue, setTmpRgbValue] = (0, _react.useState)('');
24
+ const [isHexInvalid, setIsHexInvalid] = (0, _react.useState)(false);
25
+ const [isRgbInvalid, setIsRgbInvalid] = (0, _react.useState)(false);
26
+ const shouldChangeColor = (0, _react.useMemo)(() => areaProvider.shouldChangeColor ?? false, [areaProvider.shouldChangeColor]);
27
+ const handleHexChange = event => {
28
+ setTmpHexValue(event.target.value);
29
+ const isValid = (0, _colors.isHex)(event.target.value);
30
+ setIsHexInvalid(!isValid);
31
+ if (typeof updateSelectedColor === 'function' && isValid) {
32
+ const {
33
+ r,
34
+ g,
35
+ b,
36
+ a
37
+ } = (0, _color.hexToRgb)(event.target.value);
38
+ updateSelectedColor(`rgba(${r},${g},${b},${a})`);
39
+ }
40
+ if (typeof updateShouldCallOnSelect === 'function' && isValid) {
41
+ updateShouldCallOnSelect(true);
42
+ }
43
+ };
44
+ const handleRgbChange = event => {
45
+ setTmpRgbValue(event.target.value);
46
+ const isValid = (0, _color.isValidRGBA)(event.target.value);
47
+ setIsRgbInvalid(!isValid);
48
+ if (typeof updateSelectedColor === 'function' && isValid) {
49
+ updateSelectedColor(event.target.value);
50
+ }
51
+ if (typeof updateShouldCallOnSelect === 'function' && isValid) {
52
+ updateShouldCallOnSelect(true);
53
+ }
54
+ };
55
+ (0, _react.useEffect)(() => {
56
+ if (selectedColor) {
57
+ if ((0, _color.isValidRGBA)(selectedColor)) {
58
+ setTmpRgbValue(selectedColor);
59
+ setTmpHexValue((0, _color.rgbToHex)((0, _color.extractRgbValues)(selectedColor ?? '')));
60
+ } else {
61
+ const {
62
+ r,
63
+ g,
64
+ b,
65
+ a
66
+ } = (0, _color.hexToRgb)(selectedColor);
67
+ setTmpRgbValue(`rgba(${r},${g},${b},${a})`);
68
+ setTmpHexValue(selectedColor);
69
+ }
70
+ }
71
+ }, [selectedColor]);
72
+ return /*#__PURE__*/_react.default.createElement(_MoreOptions.StyledMoreOptions, null, /*#__PURE__*/_react.default.createElement(_core.AccordionGroup, {
73
+ isWrapped: true
74
+ }, /*#__PURE__*/_react.default.createElement(_core.Accordion, {
75
+ title: "Erweitert"
76
+ }, /*#__PURE__*/_react.default.createElement(_MoreOptions.StyledMoreOptionsInputWrapper, null, /*#__PURE__*/_react.default.createElement(_MoreOptions.StyledMoreOptionsInput, {
77
+ $shouldChangeColor: shouldChangeColor,
78
+ value: tmpHexValue,
79
+ onChange: handleHexChange,
80
+ $isInvalid: isHexInvalid
81
+ }), /*#__PURE__*/_react.default.createElement(_MoreOptions.StyledMoreOptionsInput, {
82
+ $shouldChangeColor: shouldChangeColor,
83
+ value: tmpRgbValue,
84
+ onChange: handleRgbChange,
85
+ $isInvalid: isRgbInvalid
86
+ })))));
87
+ };
88
+ MoreOptions.displayName = 'MoreOptions';
89
+ var _default = exports.default = MoreOptions;
90
+ //# sourceMappingURL=MoreOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoreOptions.js","names":["_core","require","_colors","_react","_interopRequireWildcard","_color","_ColorPickerProvider","_MoreOptions","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MoreOptions","selectedColor","updateSelectedColor","updateShouldCallOnSelect","useContext","ColorPickerContext","areaProvider","AreaContext","tmpHexValue","setTmpHexValue","useState","tmpRgbValue","setTmpRgbValue","isHexInvalid","setIsHexInvalid","isRgbInvalid","setIsRgbInvalid","shouldChangeColor","useMemo","handleHexChange","event","target","value","isValid","isHex","g","b","hexToRgb","handleRgbChange","isValidRGBA","useEffect","rgbToHex","extractRgbValues","createElement","StyledMoreOptions","AccordionGroup","isWrapped","Accordion","title","StyledMoreOptionsInputWrapper","StyledMoreOptionsInput","$shouldChangeColor","onChange","$isInvalid","displayName","_default","exports"],"sources":["../../../../../src/components/color-picker-popup/more-options/MoreOptions.tsx"],"sourcesContent":["import { Accordion, AccordionGroup, AreaContext } from '@chayns-components/core';\nimport { isHex } from '@chayns/colors';\nimport React, { useContext, useEffect, useMemo, useState, type ChangeEvent } from 'react';\n\nimport { extractRgbValues, hexToRgb, isValidRGBA, rgbToHex } from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport {\n StyledMoreOptions,\n StyledMoreOptionsInput,\n StyledMoreOptionsInputWrapper,\n} from './MoreOptions.styles';\n\nconst MoreOptions = () => {\n const { selectedColor, updateSelectedColor, updateShouldCallOnSelect } =\n useContext(ColorPickerContext);\n const areaProvider = useContext(AreaContext);\n\n const [tmpHexValue, setTmpHexValue] = useState('');\n const [tmpRgbValue, setTmpRgbValue] = useState('');\n const [isHexInvalid, setIsHexInvalid] = useState(false);\n const [isRgbInvalid, setIsRgbInvalid] = useState(false);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const handleHexChange = (event: ChangeEvent<HTMLInputElement>) => {\n setTmpHexValue(event.target.value);\n\n const isValid = isHex(event.target.value);\n\n setIsHexInvalid(!isValid);\n\n if (typeof updateSelectedColor === 'function' && isValid) {\n const { r, g, b, a } = hexToRgb(event.target.value);\n\n updateSelectedColor(`rgba(${r},${g},${b},${a})`);\n }\n\n if (typeof updateShouldCallOnSelect === 'function' && isValid) {\n updateShouldCallOnSelect(true);\n }\n };\n\n const handleRgbChange = (event: ChangeEvent<HTMLInputElement>) => {\n setTmpRgbValue(event.target.value);\n\n const isValid = isValidRGBA(event.target.value);\n\n setIsRgbInvalid(!isValid);\n\n if (typeof updateSelectedColor === 'function' && isValid) {\n updateSelectedColor(event.target.value);\n }\n\n if (typeof updateShouldCallOnSelect === 'function' && isValid) {\n updateShouldCallOnSelect(true);\n }\n };\n\n useEffect(() => {\n if (selectedColor) {\n if (isValidRGBA(selectedColor)) {\n setTmpRgbValue(selectedColor);\n setTmpHexValue(rgbToHex(extractRgbValues(selectedColor ?? '')));\n } else {\n const { r, g, b, a } = hexToRgb(selectedColor);\n\n setTmpRgbValue(`rgba(${r},${g},${b},${a})`);\n setTmpHexValue(selectedColor);\n }\n }\n }, [selectedColor]);\n\n return (\n <StyledMoreOptions>\n <AccordionGroup isWrapped>\n <Accordion title=\"Erweitert\">\n <StyledMoreOptionsInputWrapper>\n <StyledMoreOptionsInput\n $shouldChangeColor={shouldChangeColor}\n value={tmpHexValue}\n onChange={handleHexChange}\n $isInvalid={isHexInvalid}\n />\n <StyledMoreOptionsInput\n $shouldChangeColor={shouldChangeColor}\n value={tmpRgbValue}\n onChange={handleRgbChange}\n $isInvalid={isRgbInvalid}\n />\n </StyledMoreOptionsInputWrapper>\n </Accordion>\n </AccordionGroup>\n </StyledMoreOptions>\n );\n};\n\nMoreOptions.displayName = 'MoreOptions';\n\nexport default MoreOptions;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMoreOptionsInputWrapper = exports.StyledMoreOptionsInput = exports.StyledMoreOptions = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledMoreOptions = exports.StyledMoreOptions = _styledComponents.default.div``;
10
+ const StyledMoreOptionsInputWrapper = exports.StyledMoreOptionsInputWrapper = _styledComponents.default.div`
11
+ display: flex;
12
+ justify-content: space-between;
13
+ gap: 8px;
14
+ align-items: center;
15
+ `;
16
+ const StyledMoreOptionsInput = exports.StyledMoreOptionsInput = _styledComponents.default.input`
17
+ width: 100%;
18
+ border-radius: 3px;
19
+ border: 1px solid
20
+ ${({
21
+ theme,
22
+ $isInvalid
23
+ }) => $isInvalid ? theme.wrong : 'rgba(160, 160, 160, 0.3)'};
24
+ background-color: ${({
25
+ theme,
26
+ $shouldChangeColor
27
+ }) => theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100']};
28
+ color: ${({
29
+ theme,
30
+ $isInvalid
31
+ }) => $isInvalid ? theme.wrong : theme.text};
32
+ padding: 8px 10px;
33
+ font-size: 11px;
34
+ `;
35
+ //# sourceMappingURL=MoreOptions.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoreOptions.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledMoreOptions","exports","styled","div","StyledMoreOptionsInputWrapper","StyledMoreOptionsInput","input","theme","$isInvalid","wrong","$shouldChangeColor","colorMode","text"],"sources":["../../../../../src/components/color-picker-popup/more-options/MoreOptions.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\nexport const StyledMoreOptions = styled.div``;\nexport const StyledMoreOptionsInputWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n gap: 8px;\n align-items: center;\n`;\n\ntype StyledMoreOptionsInputProps = WithTheme<{ $isInvalid: boolean; $shouldChangeColor: boolean }>;\n\nexport const StyledMoreOptionsInput = styled.input<StyledMoreOptionsInputProps>`\n width: 100%;\n border-radius: 3px;\n border: 1px solid\n ${({ theme, $isInvalid }: StyledMoreOptionsInputProps) =>\n $isInvalid ? theme.wrong : 'rgba(160, 160, 160, 0.3)'};\n background-color: ${({ theme, $shouldChangeColor }: StyledMoreOptionsInputProps) =>\n theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100']};\n color: ${({ theme, $isInvalid }: StyledMoreOptionsInputProps) =>\n $isInvalid ? theme.wrong : theme.text};\n padding: 8px 10px;\n font-size: 11px;\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAGE,yBAAM,CAACC,GAAG,EAAE;AACtC,MAAMC,6BAA6B,GAAAH,OAAA,CAAAG,6BAAA,GAAGF,yBAAM,CAACC,GAAG;AACvD;AACA;AACA;AACA;AACA,CAAC;AAIM,MAAME,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,GAAGH,yBAAM,CAACI,KAAkC;AAC/E;AACA;AACA;AACA,UAAU,CAAC;EAAEC,KAAK;EAAEC;AAAwC,CAAC,KACjDA,UAAU,GAAGD,KAAK,CAACE,KAAK,GAAG,0BAA0B;AACjE,wBAAwB,CAAC;EAAEF,KAAK;EAAEG;AAAgD,CAAC,KAC3EH,KAAK,CAACI,SAAS,KAAK,SAAS,IAAID,kBAAkB,GAAGH,KAAK,CAAC,KAAK,CAAC,GAAGA,KAAK,CAAC,KAAK,CAAC;AACzF,aAAa,CAAC;EAAEA,KAAK;EAAEC;AAAwC,CAAC,KACxDA,UAAU,GAAGD,KAAK,CAACE,KAAK,GAAGF,KAAK,CAACK,IAAI;AAC7C;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _colors = require("@chayns/colors");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _get = require("../../../api/color/get");
10
+ var _put = require("../../../api/color/put");
11
+ var _color = require("../../../constants/color");
12
+ var _color2 = require("../../../utils/color");
13
+ var _ColorPickerProvider = require("../../ColorPickerProvider");
14
+ var _PresetButton = _interopRequireDefault(require("./preset-button/PresetButton"));
15
+ var _PresetColor = _interopRequireDefault(require("./preset-color/PresetColor"));
16
+ var _PresetColors = require("./PresetColors.styles");
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ const PresetColors = ({
21
+ presetColors,
22
+ onPresetColorRemove,
23
+ onPresetColorAdd,
24
+ shouldUseSiteColors
25
+ }) => {
26
+ const {
27
+ selectedColor
28
+ } = (0, _react.useContext)(_ColorPickerProvider.ColorPickerContext);
29
+ const [siteColors, setSiteColors] = (0, _react.useState)(undefined);
30
+ const loadSiteColors = async presetColorId => {
31
+ const colors = await (0, _put.getSiteColors)();
32
+ setSiteColors(prevColors => {
33
+ var _prevColors$find;
34
+ const newColors = colors.value.map(color => {
35
+ const {
36
+ r,
37
+ g,
38
+ b,
39
+ a
40
+ } = (0, _color2.hexToRgb)(color);
41
+ const newColor = `rgba(${r},${g},${b},${a})`;
42
+ return {
43
+ color: newColor,
44
+ id: Math.random().toString(),
45
+ isCustom: true
46
+ };
47
+ });
48
+ if (!presetColorId) {
49
+ return newColors;
50
+ }
51
+ const deletedColor = prevColors === null || prevColors === void 0 || (_prevColors$find = prevColors.find(({
52
+ id
53
+ }) => id === presetColorId)) === null || _prevColors$find === void 0 ? void 0 : _prevColors$find.color;
54
+ if (!deletedColor) {
55
+ return newColors;
56
+ }
57
+ const filteredColors = newColors === null || newColors === void 0 ? void 0 : newColors.filter(({
58
+ color
59
+ }) => color !== deletedColor);
60
+ const formattedColors = filteredColors === null || filteredColors === void 0 ? void 0 : filteredColors.map(({
61
+ color
62
+ }) => {
63
+ const rgbValues = (0, _color2.extractRgbValues)(color);
64
+ return (0, _color2.rgbToHex)(rgbValues);
65
+ });
66
+ void (0, _get.putSiteColors)(formattedColors ?? []);
67
+ return filteredColors;
68
+ });
69
+ };
70
+ (0, _react.useEffect)(() => {
71
+ if (!shouldUseSiteColors) {
72
+ setSiteColors(undefined);
73
+ return;
74
+ }
75
+ void loadSiteColors();
76
+ }, [shouldUseSiteColors]);
77
+ const combinedColors = (0, _react.useMemo)(() => {
78
+ const tmp = (presetColors ?? []).map(({
79
+ color,
80
+ isCustom,
81
+ id
82
+ }) => {
83
+ let newColor = color;
84
+ if ((0, _colors.isHex)(color)) {
85
+ const {
86
+ r,
87
+ g,
88
+ b,
89
+ a
90
+ } = (0, _color2.hexToRgb)(color);
91
+ newColor = `rgba(${r},${g},${b},${a})`;
92
+ }
93
+ return {
94
+ id,
95
+ isCustom,
96
+ color: newColor
97
+ };
98
+ });
99
+ return [..._color.PRESETCOLORS, ...(siteColors ?? []), ...tmp];
100
+ }, [presetColors, siteColors]);
101
+ const content = (0, _react.useMemo)(() => {
102
+ const items = [];
103
+ combinedColors.forEach(({
104
+ color,
105
+ id
106
+ }) => {
107
+ items.push(/*#__PURE__*/_react.default.createElement(_PresetColor.default, {
108
+ key: `preset-color__${id}`,
109
+ color: color
110
+ }));
111
+ });
112
+ return items;
113
+ }, [combinedColors]);
114
+ const currentPresetColor = (0, _react.useMemo)(() => combinedColors.find(({
115
+ color
116
+ }) => color === selectedColor), [combinedColors, selectedColor]);
117
+ const handleAddColor = presetColor => {
118
+ if (typeof onPresetColorAdd === 'function') {
119
+ onPresetColorAdd(presetColor);
120
+ }
121
+ setSiteColors(prevColors => {
122
+ const colors = [...(prevColors ?? []), presetColor];
123
+ const newColors = colors === null || colors === void 0 ? void 0 : colors.map(({
124
+ color
125
+ }) => {
126
+ const rgbValues = (0, _color2.extractRgbValues)(color);
127
+ return (0, _color2.rgbToHex)(rgbValues);
128
+ });
129
+ void (0, _get.putSiteColors)(newColors);
130
+ return colors;
131
+ });
132
+ };
133
+ const handleRemoveColor = presetColorId => {
134
+ void loadSiteColors(presetColorId);
135
+ if (typeof onPresetColorRemove === 'function') {
136
+ onPresetColorRemove(presetColorId);
137
+ }
138
+ };
139
+ return /*#__PURE__*/_react.default.createElement(_PresetColors.StyledPresetColors, null, content, /*#__PURE__*/_react.default.createElement(_PresetButton.default, {
140
+ id: currentPresetColor === null || currentPresetColor === void 0 ? void 0 : currentPresetColor.id,
141
+ isCustom: currentPresetColor === null || currentPresetColor === void 0 ? void 0 : currentPresetColor.isCustom,
142
+ onAdd: handleAddColor,
143
+ onRemove: handleRemoveColor
144
+ }));
145
+ };
146
+ PresetColors.displayName = 'PresetColors';
147
+ var _default = exports.default = PresetColors;
148
+ //# sourceMappingURL=PresetColors.js.map