@chayns-components/color-picker 5.0.0-beta.999 → 5.0.1
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.
- package/lib/cjs/components/ColorPickerProvider.js +1 -2
- package/lib/cjs/components/ColorPickerProvider.js.map +1 -1
- package/lib/cjs/components/color-picker/ColorPicker.js +8 -2
- package/lib/cjs/components/color-picker/ColorPicker.js.map +1 -1
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +10 -5
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -1
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +3 -3
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js +5 -2
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js +19 -10
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js +2 -2
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js +1 -2
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js +8 -5
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +1 -2
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +1 -2
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +3 -3
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js +1 -2
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js +1 -2
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -1
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +3 -3
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -1
- package/lib/cjs/components/hue-slider/HueSlider.js +1 -2
- package/lib/cjs/components/hue-slider/HueSlider.js.map +1 -1
- package/lib/cjs/components/transparency-slider/TransparencySlider.js +1 -2
- package/lib/cjs/components/transparency-slider/TransparencySlider.js.map +1 -1
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js +6 -6
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js.map +1 -1
- package/lib/cjs/constants/color.js +11 -8
- package/lib/cjs/constants/color.js.map +1 -1
- package/lib/cjs/index.js +6 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types/colorPicker.js +4 -0
- package/lib/cjs/utils/color.js +2 -2
- package/lib/cjs/utils/color.js.map +1 -1
- package/lib/esm/components/ColorPickerProvider.js +5 -6
- package/lib/esm/components/ColorPickerProvider.js.map +1 -1
- package/lib/esm/components/color-picker/ColorPicker.js +35 -32
- package/lib/esm/components/color-picker/ColorPicker.js.map +1 -1
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +21 -16
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -1
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +19 -31
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -1
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js +19 -19
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js.map +1 -1
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js +15 -5
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js.map +1 -1
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js +1 -1
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -1
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js +12 -21
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -1
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js +36 -46
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -1
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +6 -7
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -1
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +6 -12
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -1
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +3 -4
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -1
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +9 -15
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -1
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js +3 -4
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js.map +1 -1
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +12 -15
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -1
- package/lib/esm/components/hue-slider/HueSlider.js +7 -8
- package/lib/esm/components/hue-slider/HueSlider.js.map +1 -1
- package/lib/esm/components/hue-slider/HueSlider.styles.js +9 -12
- package/lib/esm/components/hue-slider/HueSlider.styles.js.map +1 -1
- package/lib/esm/components/transparency-slider/TransparencySlider.js +6 -7
- package/lib/esm/components/transparency-slider/TransparencySlider.js.map +1 -1
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js +27 -36
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js.map +1 -1
- package/lib/esm/constants/color.js +11 -8
- package/lib/esm/constants/color.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types/colorPicker.js +1 -1
- package/lib/esm/utils/color.js +19 -22
- package/lib/esm/utils/color.js.map +1 -1
- package/lib/types/components/color-picker/ColorPicker.d.ts +14 -1
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.d.ts +5 -1
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.d.ts +1 -1
- package/lib/types/components/color-picker-popup/ColorPickerPopup.d.ts +3 -1
- package/lib/types/components/color-picker-popup/color-area/ColorArea.styles.d.ts +2 -263
- package/lib/types/components/color-picker-popup/preset-colors/PresetColors.d.ts +2 -1
- package/lib/types/index.d.ts +1 -1
- package/package.json +19 -18
|
@@ -4,25 +4,25 @@ import { StyledColorPickerPopup } from './ColorPickerPopup.styles';
|
|
|
4
4
|
import MoreOptions from './more-options/MoreOptions';
|
|
5
5
|
import PresetColors from './preset-colors/PresetColors';
|
|
6
6
|
import Sliders from './sliders/Sliders';
|
|
7
|
-
const ColorPickerPopup =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
7
|
+
const ColorPickerPopup = ({
|
|
8
|
+
presetColors,
|
|
9
|
+
onPresetColorRemove,
|
|
10
|
+
onPresetColorAdd,
|
|
11
|
+
shouldShowPresetColors,
|
|
12
|
+
shouldShowTransparencySlider,
|
|
13
|
+
shouldHideDefaultPresetColors,
|
|
14
|
+
shouldUseSiteColors,
|
|
15
|
+
shouldShowMoreOptions,
|
|
16
|
+
shouldHideColorArea
|
|
17
|
+
}) => /*#__PURE__*/React.createElement(StyledColorPickerPopup, null, !shouldHideColorArea && /*#__PURE__*/React.createElement(ColorArea, null), !shouldHideColorArea && /*#__PURE__*/React.createElement(Sliders, {
|
|
18
|
+
shouldShowTransparencySlider: shouldShowTransparencySlider
|
|
19
|
+
}), shouldShowPresetColors && /*#__PURE__*/React.createElement(PresetColors, {
|
|
20
|
+
shouldHideDefaultPresetColors: shouldHideDefaultPresetColors,
|
|
21
|
+
presetColors: presetColors,
|
|
22
|
+
shouldUseSiteColors: shouldUseSiteColors,
|
|
23
|
+
onPresetColorAdd: onPresetColorAdd,
|
|
24
|
+
onPresetColorRemove: onPresetColorRemove
|
|
25
|
+
}), shouldShowMoreOptions && /*#__PURE__*/React.createElement(MoreOptions, null));
|
|
26
26
|
ColorPickerPopup.displayName = 'ColorPickerPopup';
|
|
27
27
|
export default ColorPickerPopup;
|
|
28
28
|
//# sourceMappingURL=ColorPickerPopup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPickerPopup.js","names":["React","ColorArea","StyledColorPickerPopup","MoreOptions","PresetColors","Sliders","ColorPickerPopup","
|
|
1
|
+
{"version":3,"file":"ColorPickerPopup.js","names":["React","ColorArea","StyledColorPickerPopup","MoreOptions","PresetColors","Sliders","ColorPickerPopup","presetColors","onPresetColorRemove","onPresetColorAdd","shouldShowPresetColors","shouldShowTransparencySlider","shouldHideDefaultPresetColors","shouldUseSiteColors","shouldShowMoreOptions","shouldHideColorArea","createElement","displayName"],"sources":["../../../../src/components/color-picker-popup/ColorPickerPopup.tsx"],"sourcesContent":["import React from 'react';\nimport type { IPresetColor } from '../../types/colorPicker';\nimport ColorArea from './color-area/ColorArea';\nimport { StyledColorPickerPopup } from './ColorPickerPopup.styles';\nimport MoreOptions from './more-options/MoreOptions';\nimport PresetColors from './preset-colors/PresetColors';\nimport Sliders from './sliders/Sliders';\n\ninterface ColorPickerPopupProps {\n presetColors?: IPresetColor[];\n shouldShowPresetColors: boolean;\n onPresetColorAdd?: (presetColor: IPresetColor) => void;\n onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;\n shouldShowTransparencySlider: boolean;\n shouldShowMoreOptions: boolean;\n shouldUseSiteColors: boolean;\n shouldHideColorArea: boolean;\n shouldHideDefaultPresetColors: boolean;\n}\n\nconst ColorPickerPopup = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldShowPresetColors,\n shouldShowTransparencySlider,\n shouldHideDefaultPresetColors,\n shouldUseSiteColors,\n shouldShowMoreOptions,\n shouldHideColorArea,\n}: ColorPickerPopupProps) => (\n <StyledColorPickerPopup>\n {!shouldHideColorArea && <ColorArea />}\n {!shouldHideColorArea && (\n <Sliders shouldShowTransparencySlider={shouldShowTransparencySlider} />\n )}\n {shouldShowPresetColors && (\n <PresetColors\n shouldHideDefaultPresetColors={shouldHideDefaultPresetColors}\n presetColors={presetColors}\n shouldUseSiteColors={shouldUseSiteColors}\n onPresetColorAdd={onPresetColorAdd}\n onPresetColorRemove={onPresetColorRemove}\n />\n )}\n {shouldShowMoreOptions && <MoreOptions />}\n </StyledColorPickerPopup>\n);\n\nColorPickerPopup.displayName = 'ColorPickerPopup';\n\nexport default ColorPickerPopup;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,SAAS,MAAM,wBAAwB;AAC9C,SAASC,sBAAsB,QAAQ,2BAA2B;AAClE,OAAOC,WAAW,MAAM,4BAA4B;AACpD,OAAOC,YAAY,MAAM,8BAA8B;AACvD,OAAOC,OAAO,MAAM,mBAAmB;AAcvC,MAAMC,gBAAgB,GAAGA,CAAC;EACtBC,YAAY;EACZC,mBAAmB;EACnBC,gBAAgB;EAChBC,sBAAsB;EACtBC,4BAA4B;EAC5BC,6BAA6B;EAC7BC,mBAAmB;EACnBC,qBAAqB;EACrBC;AACmB,CAAC,kBACpBf,KAAA,CAAAgB,aAAA,CAACd,sBAAsB,QAClB,CAACa,mBAAmB,iBAAIf,KAAA,CAAAgB,aAAA,CAACf,SAAS,MAAE,CAAC,EACrC,CAACc,mBAAmB,iBACjBf,KAAA,CAAAgB,aAAA,CAACX,OAAO;EAACM,4BAA4B,EAAEA;AAA6B,CAAE,CACzE,EACAD,sBAAsB,iBACnBV,KAAA,CAAAgB,aAAA,CAACZ,YAAY;EACTQ,6BAA6B,EAAEA,6BAA8B;EAC7DL,YAAY,EAAEA,YAAa;EAC3BM,mBAAmB,EAAEA,mBAAoB;EACzCJ,gBAAgB,EAAEA,gBAAiB;EACnCD,mBAAmB,EAAEA;AAAoB,CAC5C,CACJ,EACAM,qBAAqB,iBAAId,KAAA,CAAAgB,aAAA,CAACb,WAAW,MAAE,CACpB,CAC3B;AAEDG,gBAAgB,CAACW,WAAW,GAAG,kBAAkB;AAEjD,eAAeX,gBAAgB","ignoreList":[]}
|
|
@@ -2,9 +2,10 @@ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState }
|
|
|
2
2
|
import { StyledColorArea, StyledColorAreaCanvas, StyledColorAreaPseudo, StyledMotionColorAreaPointer } from './ColorArea.styles';
|
|
3
3
|
import { hsvToHex } from '@chayns/colors';
|
|
4
4
|
import { setRefreshScrollEnabled } from 'chayns-api';
|
|
5
|
-
import { useDragControls, useMotionValue } from '
|
|
5
|
+
import { useDragControls, useMotionValue } from 'motion/react';
|
|
6
6
|
import { extractRgbValues, getColorFromCoordinates, getCoordinatesFromColor, rgbToHsv } from '../../../utils/color';
|
|
7
7
|
import { ColorPickerContext } from '../../ColorPickerProvider';
|
|
8
|
+
import { useIsMeasuredClone } from '@chayns-components/core';
|
|
8
9
|
const ColorArea = () => {
|
|
9
10
|
const {
|
|
10
11
|
selectedColor,
|
|
@@ -27,6 +28,7 @@ const ColorArea = () => {
|
|
|
27
28
|
const canDrag = useRef(false);
|
|
28
29
|
const canvasRef = useRef(null);
|
|
29
30
|
const pseudoRef = useRef(null);
|
|
31
|
+
const [shouldPreventListener, ref] = useIsMeasuredClone();
|
|
30
32
|
const dragControls = useDragControls();
|
|
31
33
|
const x = useMotionValue(0);
|
|
32
34
|
const y = useMotionValue(0);
|
|
@@ -173,6 +175,9 @@ const ColorArea = () => {
|
|
|
173
175
|
setColor();
|
|
174
176
|
}, [setColor, x, y]);
|
|
175
177
|
const handleMouseMove = useCallback(event => {
|
|
178
|
+
if (shouldPreventListener) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
176
181
|
if (canDrag.current && pseudoRef.current) {
|
|
177
182
|
const {
|
|
178
183
|
left,
|
|
@@ -182,7 +187,7 @@ const ColorArea = () => {
|
|
|
182
187
|
const yCords = event.clientY - top - 10;
|
|
183
188
|
move(xCords, yCords);
|
|
184
189
|
}
|
|
185
|
-
}, [move]);
|
|
190
|
+
}, [move, shouldPreventListener]);
|
|
186
191
|
const handleTouchMove = useCallback(event => {
|
|
187
192
|
if (canDrag.current && pseudoRef.current) {
|
|
188
193
|
event.preventDefault();
|
|
@@ -204,6 +209,9 @@ const ColorArea = () => {
|
|
|
204
209
|
window.addEventListener('mousemove', handleMouseMove);
|
|
205
210
|
window.addEventListener('touchmove', handleTouchMove);
|
|
206
211
|
const endTouching = () => {
|
|
212
|
+
if (shouldPreventListener) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
207
215
|
handlePointerUp();
|
|
208
216
|
window.removeEventListener('mousemove', handleMouseMove);
|
|
209
217
|
window.removeEventListener('touchmove', handleTouchMove);
|
|
@@ -212,8 +220,10 @@ const ColorArea = () => {
|
|
|
212
220
|
};
|
|
213
221
|
window.addEventListener('pointerup', endTouching);
|
|
214
222
|
window.addEventListener('touchend', endTouching);
|
|
215
|
-
}, [handleMouseMove, handlePointerUp, handleTouchMove, updateShouldGetCoordinates]);
|
|
216
|
-
return useMemo(() => /*#__PURE__*/React.createElement(StyledColorArea,
|
|
223
|
+
}, [handleMouseMove, handlePointerUp, handleTouchMove, shouldPreventListener, updateShouldGetCoordinates]);
|
|
224
|
+
return useMemo(() => /*#__PURE__*/React.createElement(StyledColorArea, {
|
|
225
|
+
ref: ref
|
|
226
|
+
}, /*#__PURE__*/React.createElement(StyledColorAreaCanvas, {
|
|
217
227
|
ref: canvasRef
|
|
218
228
|
}), /*#__PURE__*/React.createElement(StyledColorAreaPseudo, {
|
|
219
229
|
ref: pseudoRef,
|
|
@@ -230,7 +240,7 @@ const ColorArea = () => {
|
|
|
230
240
|
dragMomentum: false,
|
|
231
241
|
dragControls: dragControls,
|
|
232
242
|
onDrag: handleDrag
|
|
233
|
-
}))), [dragControls, handleClick, handleDrag, handleStartDrag, x, y]);
|
|
243
|
+
}))), [dragControls, handleClick, handleDrag, handleStartDrag, ref, x, y]);
|
|
234
244
|
};
|
|
235
245
|
ColorArea.displayName = 'ColorArea';
|
|
236
246
|
export default ColorArea;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorArea.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","StyledColorArea","StyledColorAreaCanvas","StyledColorAreaPseudo","StyledMotionColorAreaPointer","hsvToHex","setRefreshScrollEnabled","useDragControls","useMotionValue","extractRgbValues","getColorFromCoordinates","getCoordinatesFromColor","rgbToHsv","ColorPickerContext","ColorArea","selectedColor","updateSelectedColor","updateIsPresetColor","isPresetColor","shouldGetCoordinates","canGetColorFromArea","updateShouldGetCoordinates","updateShouldCallOnSelect","hueColor","opacity","setOpacity","scale","setScale","scaleX","scaleY","isPresetColorRef","shouldGetCoordinatesRef","canDrag","canvasRef","pseudoRef","dragControls","x","y","current","a","canvas","rect","getBoundingClientRect","width","height","setColor","xCord","get","yCord","color","coordinates","ctx","getContext","hsv","hex","h","s","v","colorGradiant","createLinearGradient","addColorStop","fillStyle","fillRect","transparentGradiant","cords","tolerance","set","handleDrag","handleClick","event","left","top","target","clientX","clientY","handlePointerUp","move","xCords","yCords","newXCords","newYCords","handleMouseMove","handleTouchMove","preventDefault","changedTouches","pageX","pageY","handleStartDrag","window","addEventListener","endTouching","removeEventListener","createElement","ref","onPointerDown","onClick","drag","dragConstraints","style","dragElastic","dragMomentum","onDrag","displayName"],"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":[]}
|
|
1
|
+
{"version":3,"file":"ColorArea.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","StyledColorArea","StyledColorAreaCanvas","StyledColorAreaPseudo","StyledMotionColorAreaPointer","hsvToHex","setRefreshScrollEnabled","useDragControls","useMotionValue","extractRgbValues","getColorFromCoordinates","getCoordinatesFromColor","rgbToHsv","ColorPickerContext","useIsMeasuredClone","ColorArea","selectedColor","updateSelectedColor","updateIsPresetColor","isPresetColor","shouldGetCoordinates","canGetColorFromArea","updateShouldGetCoordinates","updateShouldCallOnSelect","hueColor","opacity","setOpacity","scale","setScale","scaleX","scaleY","isPresetColorRef","shouldGetCoordinatesRef","canDrag","canvasRef","pseudoRef","shouldPreventListener","ref","dragControls","x","y","current","a","canvas","rect","getBoundingClientRect","width","height","setColor","xCord","get","yCord","color","coordinates","ctx","getContext","hsv","hex","h","s","v","colorGradiant","createLinearGradient","addColorStop","fillStyle","fillRect","transparentGradiant","cords","tolerance","set","handleDrag","handleClick","event","left","top","target","clientX","clientY","handlePointerUp","move","xCords","yCords","newXCords","newYCords","handleMouseMove","handleTouchMove","preventDefault","changedTouches","pageX","pageY","handleStartDrag","window","addEventListener","endTouching","removeEventListener","createElement","onPointerDown","onClick","drag","dragConstraints","style","dragElastic","dragMomentum","onDrag","displayName"],"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 'motion/react';\nimport type { Scale } from '../../../types/colorPicker';\nimport {\n extractRgbValues,\n getColorFromCoordinates,\n getCoordinatesFromColor,\n rgbToHsv,\n} from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport { useIsMeasuredClone } from '@chayns-components/core';\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 [shouldPreventListener, ref] = useIsMeasuredClone<HTMLDivElement>();\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 (shouldPreventListener) {\n return;\n }\n\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, shouldPreventListener],\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 if (shouldPreventListener) {\n return;\n }\n\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 }, [\n handleMouseMove,\n handlePointerUp,\n handleTouchMove,\n shouldPreventListener,\n updateShouldGetCoordinates,\n ]);\n\n return useMemo(\n () => (\n <StyledColorArea ref={ref}>\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, ref, x, y],\n );\n};\n\nColorArea.displayName = 'ColorArea';\n\nexport default ColorArea;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorArea.styles.js","names":["motion","styled","StyledColorArea","div","StyledColorAreaCanvas","canvas","StyledColorAreaPseudo","StyledMotionColorAreaPointer"],"sources":["../../../../../src/components/color-picker-popup/color-area/ColorArea.styles.ts"],"sourcesContent":["import { motion } from '
|
|
1
|
+
{"version":3,"file":"ColorArea.styles.js","names":["motion","styled","StyledColorArea","div","StyledColorAreaCanvas","canvas","StyledColorAreaPseudo","StyledMotionColorAreaPointer"],"sources":["../../../../../src/components/color-picker-popup/color-area/ColorArea.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\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,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,eAAe,GAAGD,MAAM,CAACE,GAAG;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAGH,MAAM,CAACI,MAAM;AAClD;AACA,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAGL,MAAM,CAACE,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMI,4BAA4B,GAAGN,MAAM,CAACD,MAAM,CAACG,GAAG,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -10,27 +10,18 @@ export const StyledMoreOptionsInput = styled.input`
|
|
|
10
10
|
width: 100%;
|
|
11
11
|
border-radius: 3px;
|
|
12
12
|
border: 1px solid
|
|
13
|
-
${
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100'];
|
|
26
|
-
}};
|
|
27
|
-
color: ${_ref3 => {
|
|
28
|
-
let {
|
|
29
|
-
theme,
|
|
30
|
-
$isInvalid
|
|
31
|
-
} = _ref3;
|
|
32
|
-
return $isInvalid ? theme.wrong : theme.text;
|
|
33
|
-
}};
|
|
13
|
+
${({
|
|
14
|
+
theme,
|
|
15
|
+
$isInvalid
|
|
16
|
+
}) => $isInvalid ? theme.wrong : 'rgba(160, 160, 160, 0.3)'};
|
|
17
|
+
background-color: ${({
|
|
18
|
+
theme,
|
|
19
|
+
$shouldChangeColor
|
|
20
|
+
}) => theme.colorMode === 'classic' || $shouldChangeColor ? theme['000'] : theme['100']};
|
|
21
|
+
color: ${({
|
|
22
|
+
theme,
|
|
23
|
+
$isInvalid
|
|
24
|
+
}) => $isInvalid ? theme.wrong : theme.text};
|
|
34
25
|
padding: 8px 10px;
|
|
35
26
|
font-size: 11px;
|
|
36
27
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreOptions.styles.js","names":["styled","StyledMoreOptions","div","StyledMoreOptionsInputWrapper","StyledMoreOptionsInput","input","
|
|
1
|
+
{"version":3,"file":"MoreOptions.styles.js","names":["styled","StyledMoreOptions","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,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,iBAAiB,GAAGD,MAAM,CAACE,GAAG,EAAE;AAC7C,OAAO,MAAMC,6BAA6B,GAAGH,MAAM,CAACE,GAAG;AACvD;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAME,sBAAsB,GAAGJ,MAAM,CAACK,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":[]}
|
|
@@ -8,13 +8,13 @@ import { ColorPickerContext } from '../../ColorPickerProvider';
|
|
|
8
8
|
import PresetButton from './preset-button/PresetButton';
|
|
9
9
|
import PresetColor from './preset-color/PresetColor';
|
|
10
10
|
import { StyledPresetColors } from './PresetColors.styles';
|
|
11
|
-
const PresetColors =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
const PresetColors = ({
|
|
12
|
+
presetColors,
|
|
13
|
+
onPresetColorRemove,
|
|
14
|
+
onPresetColorAdd,
|
|
15
|
+
shouldUseSiteColors,
|
|
16
|
+
shouldHideDefaultPresetColors
|
|
17
|
+
}) => {
|
|
18
18
|
const {
|
|
19
19
|
selectedColor
|
|
20
20
|
} = useContext(ColorPickerContext);
|
|
@@ -39,25 +39,18 @@ const PresetColors = _ref => {
|
|
|
39
39
|
if (!presetColorId) {
|
|
40
40
|
return newColors;
|
|
41
41
|
}
|
|
42
|
-
const deletedColor = prevColors?.find(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
} = _ref2;
|
|
46
|
-
return id === presetColorId;
|
|
47
|
-
})?.color;
|
|
42
|
+
const deletedColor = prevColors?.find(({
|
|
43
|
+
id
|
|
44
|
+
}) => id === presetColorId)?.color;
|
|
48
45
|
if (!deletedColor) {
|
|
49
46
|
return newColors;
|
|
50
47
|
}
|
|
51
|
-
const filteredColors = newColors?.filter(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
})
|
|
57
|
-
const formattedColors = filteredColors?.map(_ref4 => {
|
|
58
|
-
let {
|
|
59
|
-
color
|
|
60
|
-
} = _ref4;
|
|
48
|
+
const filteredColors = newColors?.filter(({
|
|
49
|
+
color
|
|
50
|
+
}) => color !== deletedColor);
|
|
51
|
+
const formattedColors = filteredColors?.map(({
|
|
52
|
+
color
|
|
53
|
+
}) => {
|
|
61
54
|
const rgbValues = extractRgbValues(color);
|
|
62
55
|
return rgbToHex(rgbValues);
|
|
63
56
|
});
|
|
@@ -73,12 +66,11 @@ const PresetColors = _ref => {
|
|
|
73
66
|
void loadSiteColors();
|
|
74
67
|
}, [shouldUseSiteColors]);
|
|
75
68
|
const combinedColors = useMemo(() => {
|
|
76
|
-
const tmp = (presetColors ?? []).map(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} = _ref5;
|
|
69
|
+
const tmp = (presetColors ?? []).map(({
|
|
70
|
+
color,
|
|
71
|
+
isCustom,
|
|
72
|
+
id
|
|
73
|
+
}) => {
|
|
82
74
|
let newColor = color;
|
|
83
75
|
if (isHex(color)) {
|
|
84
76
|
const {
|
|
@@ -95,15 +87,17 @@ const PresetColors = _ref => {
|
|
|
95
87
|
color: newColor
|
|
96
88
|
};
|
|
97
89
|
});
|
|
90
|
+
if (shouldHideDefaultPresetColors) {
|
|
91
|
+
return tmp;
|
|
92
|
+
}
|
|
98
93
|
return [...PRESETCOLORS, ...(siteColors ?? []), ...tmp];
|
|
99
|
-
}, [presetColors, siteColors]);
|
|
94
|
+
}, [presetColors, shouldHideDefaultPresetColors, siteColors]);
|
|
100
95
|
const content = useMemo(() => {
|
|
101
96
|
const items = [];
|
|
102
|
-
combinedColors.forEach(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
} = _ref6;
|
|
97
|
+
combinedColors.forEach(({
|
|
98
|
+
color,
|
|
99
|
+
id
|
|
100
|
+
}) => {
|
|
107
101
|
items.push(/*#__PURE__*/React.createElement(PresetColor, {
|
|
108
102
|
key: `preset-color__${id}`,
|
|
109
103
|
color: color
|
|
@@ -111,22 +105,18 @@ const PresetColors = _ref => {
|
|
|
111
105
|
});
|
|
112
106
|
return items;
|
|
113
107
|
}, [combinedColors]);
|
|
114
|
-
const currentPresetColor = useMemo(() => combinedColors.find(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
} = _ref7;
|
|
118
|
-
return color === selectedColor;
|
|
119
|
-
}), [combinedColors, selectedColor]);
|
|
108
|
+
const currentPresetColor = useMemo(() => combinedColors.find(({
|
|
109
|
+
color
|
|
110
|
+
}) => color === selectedColor), [combinedColors, selectedColor]);
|
|
120
111
|
const handleAddColor = presetColor => {
|
|
121
112
|
if (typeof onPresetColorAdd === 'function') {
|
|
122
113
|
onPresetColorAdd(presetColor);
|
|
123
114
|
}
|
|
124
115
|
setSiteColors(prevColors => {
|
|
125
116
|
const colors = [...(prevColors ?? []), presetColor];
|
|
126
|
-
const newColors = colors?.map(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
} = _ref8;
|
|
117
|
+
const newColors = colors?.map(({
|
|
118
|
+
color
|
|
119
|
+
}) => {
|
|
130
120
|
const rgbValues = extractRgbValues(color);
|
|
131
121
|
return rgbToHex(rgbValues);
|
|
132
122
|
});
|
|
@@ -140,7 +130,7 @@ const PresetColors = _ref => {
|
|
|
140
130
|
onPresetColorRemove(presetColorId);
|
|
141
131
|
}
|
|
142
132
|
};
|
|
143
|
-
return /*#__PURE__*/React.createElement(StyledPresetColors, null, content, /*#__PURE__*/React.createElement(PresetButton, {
|
|
133
|
+
return /*#__PURE__*/React.createElement(StyledPresetColors, null, content, !shouldHideDefaultPresetColors && /*#__PURE__*/React.createElement(PresetButton, {
|
|
144
134
|
id: currentPresetColor?.id,
|
|
145
135
|
isCustom: currentPresetColor?.isCustom,
|
|
146
136
|
onAdd: handleAddColor,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetColors.js","names":["isHex","React","useContext","useEffect","useMemo","useState","putSiteColors","getSiteColors","PRESETCOLORS","extractRgbValues","hexToRgb","rgbToHex","ColorPickerContext","PresetButton","PresetColor","StyledPresetColors","PresetColors","_ref","presetColors","onPresetColorRemove","onPresetColorAdd","shouldUseSiteColors","selectedColor","siteColors","setSiteColors","undefined","loadSiteColors","presetColorId","colors","prevColors","newColors","value","map","color","r","g","b","a","newColor","id","Math","random","toString","isCustom","deletedColor","find","_ref2","filteredColors","filter","_ref3","formattedColors","_ref4","rgbValues","combinedColors","tmp","_ref5","content","items","forEach","_ref6","push","createElement","key","currentPresetColor","_ref7","handleAddColor","presetColor","_ref8","handleRemoveColor","onAdd","onRemove","displayName"],"sources":["../../../../../src/components/color-picker-popup/preset-colors/PresetColors.tsx"],"sourcesContent":["import { isHex } from '@chayns/colors';\nimport React, { useContext, useEffect, useMemo, useState, type ReactElement } from 'react';\n\nimport { putSiteColors } from '../../../api/color/get';\nimport { getSiteColors } from '../../../api/color/put';\nimport { PRESETCOLORS } from '../../../constants/color';\nimport type { IPresetColor } from '../../../types/colorPicker';\nimport { extractRgbValues, hexToRgb, rgbToHex } from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport PresetButton from './preset-button/PresetButton';\nimport PresetColor from './preset-color/PresetColor';\nimport { StyledPresetColors } from './PresetColors.styles';\n\ninterface PresetColorsProps {\n presetColors?: IPresetColor[];\n onPresetColorAdd?: (presetColor: IPresetColor) => void;\n onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;\n shouldUseSiteColors: boolean;\n}\n\nconst PresetColors = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldUseSiteColors,\n}: PresetColorsProps) => {\n const { selectedColor } = useContext(ColorPickerContext);\n\n const [siteColors, setSiteColors] = useState<IPresetColor[] | undefined>(undefined);\n\n const loadSiteColors = async (presetColorId?: IPresetColor['id']) => {\n const colors = await getSiteColors();\n\n setSiteColors((prevColors) => {\n const newColors = colors.value.map((color) => {\n const { r, g, b, a } = hexToRgb(color);\n\n const newColor = `rgba(${r},${g},${b},${a})`;\n\n return {\n color: newColor,\n id: Math.random().toString(),\n isCustom: true,\n };\n });\n\n if (!presetColorId) {\n return newColors;\n }\n\n const deletedColor = prevColors?.find(({ id }) => id === presetColorId)?.color;\n\n if (!deletedColor) {\n return newColors;\n }\n\n const filteredColors = newColors?.filter(({ color }) => color !== deletedColor);\n\n const formattedColors = filteredColors?.map(({ color }) => {\n const rgbValues = extractRgbValues(color);\n\n return rgbToHex(rgbValues);\n });\n\n void putSiteColors(formattedColors ?? []);\n\n return filteredColors;\n });\n };\n\n useEffect(() => {\n if (!shouldUseSiteColors) {\n setSiteColors(undefined);\n\n return;\n }\n\n void loadSiteColors();\n }, [shouldUseSiteColors]);\n\n const combinedColors = useMemo(() => {\n const tmp = (presetColors ?? []).map(({ color, isCustom, id }) => {\n let newColor = color;\n\n if (isHex(color)) {\n const { r, g, b, a } = hexToRgb(color);\n\n newColor = `rgba(${r},${g},${b},${a})`;\n }\n\n return {\n id,\n isCustom,\n color: newColor,\n };\n });\n\n return [...PRESETCOLORS, ...(siteColors ?? []), ...tmp];\n }, [presetColors, siteColors]);\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n combinedColors.forEach(({ color, id }) => {\n items.push(<PresetColor key={`preset-color__${id}`} color={color} />);\n });\n\n return items;\n }, [combinedColors]);\n\n const currentPresetColor = useMemo(\n () => combinedColors.find(({ color }) => color === selectedColor),\n [combinedColors, selectedColor],\n );\n\n const handleAddColor = (presetColor: IPresetColor) => {\n if (typeof onPresetColorAdd === 'function') {\n onPresetColorAdd(presetColor);\n }\n\n setSiteColors((prevColors) => {\n const colors = [...(prevColors ?? []), presetColor];\n\n const newColors = colors?.map(({ color }) => {\n const rgbValues = extractRgbValues(color);\n\n return rgbToHex(rgbValues);\n });\n\n void putSiteColors(newColors);\n\n return colors;\n });\n };\n\n const handleRemoveColor = (presetColorId: IPresetColor['id']) => {\n void loadSiteColors(presetColorId);\n\n if (typeof onPresetColorRemove === 'function') {\n onPresetColorRemove(presetColorId);\n }\n };\n\n return (\n <StyledPresetColors>\n {content}\n <PresetButton\n id={currentPresetColor?.id}\n isCustom={currentPresetColor?.isCustom}\n onAdd={handleAddColor}\n onRemove={handleRemoveColor}\n />\n </StyledPresetColors>\n );\n};\n\nPresetColors.displayName = 'PresetColors';\n\nexport default PresetColors;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PresetColors.js","names":["isHex","React","useContext","useEffect","useMemo","useState","putSiteColors","getSiteColors","PRESETCOLORS","extractRgbValues","hexToRgb","rgbToHex","ColorPickerContext","PresetButton","PresetColor","StyledPresetColors","PresetColors","presetColors","onPresetColorRemove","onPresetColorAdd","shouldUseSiteColors","shouldHideDefaultPresetColors","selectedColor","siteColors","setSiteColors","undefined","loadSiteColors","presetColorId","colors","prevColors","newColors","value","map","color","r","g","b","a","newColor","id","Math","random","toString","isCustom","deletedColor","find","filteredColors","filter","formattedColors","rgbValues","combinedColors","tmp","content","items","forEach","push","createElement","key","currentPresetColor","handleAddColor","presetColor","handleRemoveColor","onAdd","onRemove","displayName"],"sources":["../../../../../src/components/color-picker-popup/preset-colors/PresetColors.tsx"],"sourcesContent":["import { isHex } from '@chayns/colors';\nimport React, { useContext, useEffect, useMemo, useState, type ReactElement } from 'react';\n\nimport { putSiteColors } from '../../../api/color/get';\nimport { getSiteColors } from '../../../api/color/put';\nimport { PRESETCOLORS } from '../../../constants/color';\nimport type { IPresetColor } from '../../../types/colorPicker';\nimport { extractRgbValues, hexToRgb, rgbToHex } from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport PresetButton from './preset-button/PresetButton';\nimport PresetColor from './preset-color/PresetColor';\nimport { StyledPresetColors } from './PresetColors.styles';\n\ninterface PresetColorsProps {\n presetColors?: IPresetColor[];\n onPresetColorAdd?: (presetColor: IPresetColor) => void;\n onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;\n shouldUseSiteColors: boolean;\n shouldHideDefaultPresetColors: boolean;\n}\n\nconst PresetColors = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldUseSiteColors,\n shouldHideDefaultPresetColors,\n}: PresetColorsProps) => {\n const { selectedColor } = useContext(ColorPickerContext);\n\n const [siteColors, setSiteColors] = useState<IPresetColor[] | undefined>(undefined);\n\n const loadSiteColors = async (presetColorId?: IPresetColor['id']) => {\n const colors = await getSiteColors();\n\n setSiteColors((prevColors) => {\n const newColors = colors.value.map((color) => {\n const { r, g, b, a } = hexToRgb(color);\n\n const newColor = `rgba(${r},${g},${b},${a})`;\n\n return {\n color: newColor,\n id: Math.random().toString(),\n isCustom: true,\n };\n });\n\n if (!presetColorId) {\n return newColors;\n }\n\n const deletedColor = prevColors?.find(({ id }) => id === presetColorId)?.color;\n\n if (!deletedColor) {\n return newColors;\n }\n\n const filteredColors = newColors?.filter(({ color }) => color !== deletedColor);\n\n const formattedColors = filteredColors?.map(({ color }) => {\n const rgbValues = extractRgbValues(color);\n\n return rgbToHex(rgbValues);\n });\n\n void putSiteColors(formattedColors ?? []);\n\n return filteredColors;\n });\n };\n\n useEffect(() => {\n if (!shouldUseSiteColors) {\n setSiteColors(undefined);\n\n return;\n }\n\n void loadSiteColors();\n }, [shouldUseSiteColors]);\n\n const combinedColors = useMemo(() => {\n const tmp = (presetColors ?? []).map(({ color, isCustom, id }) => {\n let newColor = color;\n\n if (isHex(color)) {\n const { r, g, b, a } = hexToRgb(color);\n\n newColor = `rgba(${r},${g},${b},${a})`;\n }\n\n return {\n id,\n isCustom,\n color: newColor,\n };\n });\n\n if (shouldHideDefaultPresetColors) {\n return tmp;\n }\n\n return [...PRESETCOLORS, ...(siteColors ?? []), ...tmp];\n }, [presetColors, shouldHideDefaultPresetColors, siteColors]);\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n combinedColors.forEach(({ color, id }) => {\n items.push(<PresetColor key={`preset-color__${id}`} color={color} />);\n });\n\n return items;\n }, [combinedColors]);\n\n const currentPresetColor = useMemo(\n () => combinedColors.find(({ color }) => color === selectedColor),\n [combinedColors, selectedColor],\n );\n\n const handleAddColor = (presetColor: IPresetColor) => {\n if (typeof onPresetColorAdd === 'function') {\n onPresetColorAdd(presetColor);\n }\n\n setSiteColors((prevColors) => {\n const colors = [...(prevColors ?? []), presetColor];\n\n const newColors = colors?.map(({ color }) => {\n const rgbValues = extractRgbValues(color);\n\n return rgbToHex(rgbValues);\n });\n\n void putSiteColors(newColors);\n\n return colors;\n });\n };\n\n const handleRemoveColor = (presetColorId: IPresetColor['id']) => {\n void loadSiteColors(presetColorId);\n\n if (typeof onPresetColorRemove === 'function') {\n onPresetColorRemove(presetColorId);\n }\n };\n\n return (\n <StyledPresetColors>\n {content}\n {!shouldHideDefaultPresetColors && (\n <PresetButton\n id={currentPresetColor?.id}\n isCustom={currentPresetColor?.isCustom}\n onAdd={handleAddColor}\n onRemove={handleRemoveColor}\n />\n )}\n </StyledPresetColors>\n );\n};\n\nPresetColors.displayName = 'PresetColors';\n\nexport default PresetColors;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,13 +3,12 @@ import React, { useContext } from 'react';
|
|
|
3
3
|
import { v4 as uuidv4 } from 'uuid';
|
|
4
4
|
import { ColorPickerContext } from '../../../ColorPickerProvider';
|
|
5
5
|
import { StyledPresetButton } from './PresetButton.styles';
|
|
6
|
-
const PresetButton =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} = _ref;
|
|
6
|
+
const PresetButton = ({
|
|
7
|
+
id,
|
|
8
|
+
isCustom,
|
|
9
|
+
onRemove,
|
|
10
|
+
onAdd
|
|
11
|
+
}) => {
|
|
13
12
|
const {
|
|
14
13
|
selectedColor
|
|
15
14
|
} = useContext(ColorPickerContext);
|
package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetButton.js","names":["Icon","React","useContext","v4","uuidv4","ColorPickerContext","StyledPresetButton","PresetButton","
|
|
1
|
+
{"version":3,"file":"PresetButton.js","names":["Icon","React","useContext","v4","uuidv4","ColorPickerContext","StyledPresetButton","PresetButton","id","isCustom","onRemove","onAdd","selectedColor","icon","handleClick","color","createElement","onClick","$isDisabled","icons","size","displayName"],"sources":["../../../../../../src/components/color-picker-popup/preset-colors/preset-button/PresetButton.tsx"],"sourcesContent":["import { Icon } from '@chayns-components/core';\nimport React, { useContext } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { IPresetColor } from '../../../../types/colorPicker';\nimport { ColorPickerContext } from '../../../ColorPickerProvider';\nimport { StyledPresetButton } from './PresetButton.styles';\n\ninterface PresetButtonProps {\n id?: IPresetColor['id'];\n isCustom?: IPresetColor['isCustom'];\n onAdd?: (color: IPresetColor) => void;\n onRemove?: (id: IPresetColor['id']) => void;\n}\n\nconst PresetButton = ({ id, isCustom, onRemove, onAdd }: PresetButtonProps) => {\n const { selectedColor } = useContext(ColorPickerContext);\n\n const icon = isCustom ? ['fa-solid fa-trash'] : ['fa-solid fa-plus'];\n\n const handleClick = () => {\n if (id) {\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n } else if (typeof onAdd === 'function' && selectedColor) {\n onAdd({ color: selectedColor, isCustom: true, id: uuidv4() });\n }\n };\n\n return (\n <StyledPresetButton onClick={handleClick} $isDisabled={!!id && !isCustom}>\n <Icon icons={icon} size={isCustom ? 10 : 15} />\n </StyledPresetButton>\n );\n};\n\nPresetButton.displayName = 'PresetButton';\n\nexport default PresetButton;\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,yBAAyB;AAC9C,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AAEnC,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,kBAAkB,QAAQ,uBAAuB;AAS1D,MAAMC,YAAY,GAAGA,CAAC;EAAEC,EAAE;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC;AAAyB,CAAC,KAAK;EAC3E,MAAM;IAAEC;EAAc,CAAC,GAAGV,UAAU,CAACG,kBAAkB,CAAC;EAExD,MAAMQ,IAAI,GAAGJ,QAAQ,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC;EAEpE,MAAMK,WAAW,GAAGA,CAAA,KAAM;IACtB,IAAIN,EAAE,EAAE;MACJ,IAAI,OAAOE,QAAQ,KAAK,UAAU,EAAE;QAChCA,QAAQ,CAACF,EAAE,CAAC;MAChB;IACJ,CAAC,MAAM,IAAI,OAAOG,KAAK,KAAK,UAAU,IAAIC,aAAa,EAAE;MACrDD,KAAK,CAAC;QAAEI,KAAK,EAAEH,aAAa;QAAEH,QAAQ,EAAE,IAAI;QAAED,EAAE,EAAEJ,MAAM,CAAC;MAAE,CAAC,CAAC;IACjE;EACJ,CAAC;EAED,oBACIH,KAAA,CAAAe,aAAA,CAACV,kBAAkB;IAACW,OAAO,EAAEH,WAAY;IAACI,WAAW,EAAE,CAAC,CAACV,EAAE,IAAI,CAACC;EAAS,gBACrER,KAAA,CAAAe,aAAA,CAAChB,IAAI;IAACmB,KAAK,EAAEN,IAAK;IAACO,IAAI,EAAEX,QAAQ,GAAG,EAAE,GAAG;EAAG,CAAE,CAC9B,CAAC;AAE7B,CAAC;AAEDF,YAAY,CAACc,WAAW,GAAG,cAAc;AAEzC,eAAed,YAAY","ignoreList":[]}
|
package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js
CHANGED
|
@@ -7,19 +7,13 @@ export const StyledPresetButton = styled.div`
|
|
|
7
7
|
background-color: transparent;
|
|
8
8
|
width: 22px;
|
|
9
9
|
aspect-ratio: 1;
|
|
10
|
-
cursor: ${
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} = _ref;
|
|
14
|
-
return $isDisabled ? 'normal' : 'pointer';
|
|
15
|
-
}};
|
|
10
|
+
cursor: ${({
|
|
11
|
+
$isDisabled
|
|
12
|
+
}) => $isDisabled ? 'normal' : 'pointer'};
|
|
16
13
|
|
|
17
|
-
opacity: ${
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} = _ref2;
|
|
21
|
-
return $isDisabled ? 0.5 : 1;
|
|
22
|
-
}};
|
|
14
|
+
opacity: ${({
|
|
15
|
+
$isDisabled
|
|
16
|
+
}) => $isDisabled ? 0.5 : 1};
|
|
23
17
|
|
|
24
18
|
border-radius: 50px;
|
|
25
19
|
border: 1px solid rgba(160, 160, 160, 0.3);
|
package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetButton.styles.js","names":["styled","StyledPresetButton","div","
|
|
1
|
+
{"version":3,"file":"PresetButton.styles.js","names":["styled","StyledPresetButton","div","$isDisabled"],"sources":["../../../../../../src/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\ntype StyledPresetButtonProps = WithTheme<{ $isDisabled: boolean }>;\n\nexport const StyledPresetButton = styled.div<StyledPresetButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: transparent;\n width: 22px;\n aspect-ratio: 1;\n cursor: ${({ $isDisabled }) => ($isDisabled ? 'normal' : 'pointer')};\n\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n\n border-radius: 50px;\n border: 1px solid rgba(160, 160, 160, 0.3);\n`;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AAItC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,QAAQ,GAAG,SAAU;AACvE;AACA,eAAe,CAAC;EAAEA;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React, { useContext, useMemo } from 'react';
|
|
2
2
|
import { ColorPickerContext } from '../../../ColorPickerProvider';
|
|
3
3
|
import { StyledPresetColor, StyledPresetColorBackground, StyledPresetColorColor } from './PresetColor.styles';
|
|
4
|
-
const PresetColor =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} = _ref;
|
|
4
|
+
const PresetColor = ({
|
|
5
|
+
color
|
|
6
|
+
}) => {
|
|
8
7
|
const {
|
|
9
8
|
selectedColor,
|
|
10
9
|
updateSelectedColor,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetColor.js","names":["React","useContext","useMemo","ColorPickerContext","StyledPresetColor","StyledPresetColorBackground","StyledPresetColorColor","PresetColor","
|
|
1
|
+
{"version":3,"file":"PresetColor.js","names":["React","useContext","useMemo","ColorPickerContext","StyledPresetColor","StyledPresetColorBackground","StyledPresetColorColor","PresetColor","color","selectedColor","updateSelectedColor","updateHueColor","updateShouldCallOnSelect","updateShouldGetCoordinates","updateIsPresetColor","isSelected","handleClick","createElement","onClick","$isSelected","$color","displayName"],"sources":["../../../../../../src/components/color-picker-popup/preset-colors/preset-color/PresetColor.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react';\n\nimport type { IPresetColor } from '../../../../types/colorPicker';\nimport { ColorPickerContext } from '../../../ColorPickerProvider';\nimport {\n StyledPresetColor,\n StyledPresetColorBackground,\n StyledPresetColorColor,\n} from './PresetColor.styles';\n\ninterface PresetColorProps {\n color: IPresetColor['color'];\n}\n\nconst PresetColor = ({ color }: PresetColorProps) => {\n const {\n selectedColor,\n updateSelectedColor,\n updateHueColor,\n updateShouldCallOnSelect,\n updateShouldGetCoordinates,\n updateIsPresetColor,\n } = useContext(ColorPickerContext);\n\n const isSelected = useMemo(() => selectedColor === color, [color, selectedColor]);\n\n const handleClick = () => {\n if (typeof updateSelectedColor === 'function') {\n updateSelectedColor(color);\n }\n\n if (typeof updateHueColor === 'function') {\n updateHueColor(color);\n }\n\n if (typeof updateIsPresetColor === 'function') {\n updateIsPresetColor(true);\n }\n\n if (typeof updateShouldCallOnSelect === 'function') {\n updateShouldCallOnSelect(true);\n }\n\n if (typeof updateShouldGetCoordinates === 'function') {\n updateShouldGetCoordinates(true);\n }\n };\n\n return (\n <StyledPresetColor onClick={handleClick} $isSelected={isSelected}>\n <StyledPresetColorBackground />\n <StyledPresetColorColor $color={color} />\n </StyledPresetColor>\n );\n};\n\nPresetColor.displayName = 'PresetColor';\n\nexport default PresetColor;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAGlD,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SACIC,iBAAiB,EACjBC,2BAA2B,EAC3BC,sBAAsB,QACnB,sBAAsB;AAM7B,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAAwB,CAAC,KAAK;EACjD,MAAM;IACFC,aAAa;IACbC,mBAAmB;IACnBC,cAAc;IACdC,wBAAwB;IACxBC,0BAA0B;IAC1BC;EACJ,CAAC,GAAGb,UAAU,CAACE,kBAAkB,CAAC;EAElC,MAAMY,UAAU,GAAGb,OAAO,CAAC,MAAMO,aAAa,KAAKD,KAAK,EAAE,CAACA,KAAK,EAAEC,aAAa,CAAC,CAAC;EAEjF,MAAMO,WAAW,GAAGA,CAAA,KAAM;IACtB,IAAI,OAAON,mBAAmB,KAAK,UAAU,EAAE;MAC3CA,mBAAmB,CAACF,KAAK,CAAC;IAC9B;IAEA,IAAI,OAAOG,cAAc,KAAK,UAAU,EAAE;MACtCA,cAAc,CAACH,KAAK,CAAC;IACzB;IAEA,IAAI,OAAOM,mBAAmB,KAAK,UAAU,EAAE;MAC3CA,mBAAmB,CAAC,IAAI,CAAC;IAC7B;IAEA,IAAI,OAAOF,wBAAwB,KAAK,UAAU,EAAE;MAChDA,wBAAwB,CAAC,IAAI,CAAC;IAClC;IAEA,IAAI,OAAOC,0BAA0B,KAAK,UAAU,EAAE;MAClDA,0BAA0B,CAAC,IAAI,CAAC;IACpC;EACJ,CAAC;EAED,oBACIb,KAAA,CAAAiB,aAAA,CAACb,iBAAiB;IAACc,OAAO,EAAEF,WAAY;IAACG,WAAW,EAAEJ;EAAW,gBAC7Df,KAAA,CAAAiB,aAAA,CAACZ,2BAA2B,MAAE,CAAC,eAC/BL,KAAA,CAAAiB,aAAA,CAACX,sBAAsB;IAACc,MAAM,EAAEZ;EAAM,CAAE,CACzB,CAAC;AAE5B,CAAC;AAEDD,WAAW,CAACc,WAAW,GAAG,aAAa;AAEvC,eAAed,WAAW","ignoreList":[]}
|