@chayns-components/color-picker 5.0.0-beta.567 → 5.0.0-beta.569
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/components/ColorPickerProvider.d.ts +33 -0
- package/lib/components/ColorPickerProvider.js +70 -0
- package/lib/components/ColorPickerProvider.js.map +1 -0
- package/lib/components/color-picker/ColorPicker.d.ts +45 -0
- package/lib/components/color-picker/ColorPicker.js +32 -0
- package/lib/components/color-picker/ColorPicker.js.map +1 -0
- package/lib/components/color-picker/ColorPicker.styles.d.ts +2 -0
- package/lib/components/color-picker/ColorPicker.styles.js +5 -0
- package/lib/components/color-picker/ColorPicker.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.d.ts +16 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +35 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.d.ts +14 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +33 -0
- package/lib/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.d.ts +15 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.js +26 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.styles.d.ts +2 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.styles.js +6 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.d.ts +6 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.js +215 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.styles.d.ts +268 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.styles.js +38 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.d.ts +6 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.js +67 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.styles.d.ts +9 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.styles.js +36 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.d.ts +12 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.js +72 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.styles.d.ts +2 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.styles.js +8 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.d.ts +13 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.js +39 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.styles.d.ts +7 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +27 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.d.ts +10 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.js +42 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.styles.d.ts +8 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +21 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.d.ts +9 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.js +57 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.styles.d.ts +3 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.styles.js +13 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.d.ts +6 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.js +14 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.styles.d.ts +11 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +37 -0
- package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
- package/lib/components/hue-slider/HueSlider.d.ts +13 -1
- package/lib/components/hue-slider/HueSlider.js +56 -10
- package/lib/components/hue-slider/HueSlider.js.map +1 -1
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.js +2 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/transparency-slider/TransparencySlider.d.ts +24 -0
- package/lib/components/transparency-slider/TransparencySlider.js +107 -0
- package/lib/components/transparency-slider/TransparencySlider.js.map +1 -0
- package/lib/components/transparency-slider/TransparencySlider.styles.d.ts +24 -0
- package/lib/components/transparency-slider/TransparencySlider.styles.js +121 -0
- package/lib/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
- package/lib/constants/color.d.ts +2 -4
- package/lib/constants/color.js +44 -41
- package/lib/constants/color.js.map +1 -1
- package/lib/types.d.ts +8 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/color.d.ts +15 -4
- package/lib/utils/color.js +133 -37
- package/lib/utils/color.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
interface IColorPickerContext {
|
|
3
|
+
selectedColor?: string;
|
|
4
|
+
updateSelectedColor?: (color: string | undefined) => void;
|
|
5
|
+
hueColor?: string;
|
|
6
|
+
updateHueColor?: (color: string | undefined) => void;
|
|
7
|
+
isPresetColor?: boolean;
|
|
8
|
+
updateIsPresetColor?: (isPresetColor: boolean) => void;
|
|
9
|
+
shouldGetCoordinates?: boolean;
|
|
10
|
+
updateShouldGetCoordinates?: (shouldGetCoordinates: boolean) => void;
|
|
11
|
+
shouldCallOnSelect?: boolean;
|
|
12
|
+
updateShouldCallOnSelect?: (shouldCallOnSelect: boolean) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const ColorPickerContext: React.Context<IColorPickerContext>;
|
|
15
|
+
interface ColorPickerProviderProps {
|
|
16
|
+
/**
|
|
17
|
+
* The children of the provider.
|
|
18
|
+
*/
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Function to be executed when a color is selected.
|
|
22
|
+
*/
|
|
23
|
+
onSelect?: (color: string) => void;
|
|
24
|
+
/**
|
|
25
|
+
* The color that should be preselected.
|
|
26
|
+
*/
|
|
27
|
+
selectedColor?: string;
|
|
28
|
+
}
|
|
29
|
+
declare const ColorPickerProvider: {
|
|
30
|
+
({ children, selectedColor, onSelect }: ColorPickerProviderProps): React.JSX.Element;
|
|
31
|
+
displayName: string;
|
|
32
|
+
};
|
|
33
|
+
export default ColorPickerProvider;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
export const ColorPickerContext = /*#__PURE__*/React.createContext({
|
|
3
|
+
selectedColor: undefined,
|
|
4
|
+
updateSelectedColor: undefined,
|
|
5
|
+
hueColor: undefined,
|
|
6
|
+
updateHueColor: undefined,
|
|
7
|
+
isPresetColor: undefined,
|
|
8
|
+
updateIsPresetColor: undefined,
|
|
9
|
+
shouldGetCoordinates: undefined,
|
|
10
|
+
updateShouldGetCoordinates: undefined,
|
|
11
|
+
shouldCallOnSelect: undefined,
|
|
12
|
+
updateShouldCallOnSelect: undefined
|
|
13
|
+
});
|
|
14
|
+
ColorPickerContext.displayName = 'ColorPickerContext';
|
|
15
|
+
const ColorPickerProvider = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
children,
|
|
18
|
+
selectedColor,
|
|
19
|
+
onSelect
|
|
20
|
+
} = _ref;
|
|
21
|
+
const [internalSelectedColor, setInternalSelectedColor] = useState();
|
|
22
|
+
const [internalHueColor, setInternalHueColor] = useState();
|
|
23
|
+
const [internalIsPresetColor, setInternalIsPresetColor] = useState(false);
|
|
24
|
+
const [internalShouldGetCoordinates, setInternalShouldGetCoordinates] = useState(true);
|
|
25
|
+
const [internalShouldCallOnSelect, setInternalShouldCallOnSelect] = useState(false);
|
|
26
|
+
const updateSelectedColor = useCallback(color => {
|
|
27
|
+
setInternalSelectedColor(color);
|
|
28
|
+
}, []);
|
|
29
|
+
const updateHueColor = useCallback(color => {
|
|
30
|
+
setInternalHueColor(color);
|
|
31
|
+
}, []);
|
|
32
|
+
const updateIsPresetColor = useCallback(isPresetColor => {
|
|
33
|
+
setInternalIsPresetColor(isPresetColor);
|
|
34
|
+
}, []);
|
|
35
|
+
const updateShouldGetCoordinates = useCallback(shouldGetCoordinates => {
|
|
36
|
+
setInternalShouldGetCoordinates(shouldGetCoordinates);
|
|
37
|
+
}, []);
|
|
38
|
+
const updateShouldCallOnSelect = useCallback(shouldCallOnSelect => {
|
|
39
|
+
setInternalShouldCallOnSelect(shouldCallOnSelect);
|
|
40
|
+
}, []);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
setInternalSelectedColor(selectedColor);
|
|
43
|
+
setInternalHueColor(selectedColor);
|
|
44
|
+
setInternalIsPresetColor(true);
|
|
45
|
+
}, [selectedColor]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (typeof onSelect === 'function' && internalShouldCallOnSelect && internalSelectedColor) {
|
|
48
|
+
onSelect(internalSelectedColor);
|
|
49
|
+
setInternalShouldCallOnSelect(false);
|
|
50
|
+
}
|
|
51
|
+
}, [internalSelectedColor, internalShouldCallOnSelect, onSelect]);
|
|
52
|
+
const providerValue = useMemo(() => ({
|
|
53
|
+
selectedColor: internalSelectedColor,
|
|
54
|
+
updateSelectedColor,
|
|
55
|
+
hueColor: internalHueColor,
|
|
56
|
+
updateHueColor,
|
|
57
|
+
isPresetColor: internalIsPresetColor,
|
|
58
|
+
updateIsPresetColor,
|
|
59
|
+
shouldGetCoordinates: internalShouldGetCoordinates,
|
|
60
|
+
updateShouldGetCoordinates,
|
|
61
|
+
shouldCallOnSelect: internalShouldCallOnSelect,
|
|
62
|
+
updateShouldCallOnSelect
|
|
63
|
+
}), [internalHueColor, internalIsPresetColor, internalSelectedColor, internalShouldCallOnSelect, internalShouldGetCoordinates, updateHueColor, updateIsPresetColor, updateSelectedColor, updateShouldCallOnSelect, updateShouldGetCoordinates]);
|
|
64
|
+
return /*#__PURE__*/React.createElement(ColorPickerContext.Provider, {
|
|
65
|
+
value: providerValue
|
|
66
|
+
}, children);
|
|
67
|
+
};
|
|
68
|
+
ColorPickerProvider.displayName = 'ColorPickerProvider';
|
|
69
|
+
export default ColorPickerProvider;
|
|
70
|
+
//# sourceMappingURL=ColorPickerProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerProvider.js","names":["React","useCallback","useEffect","useMemo","useState","ColorPickerContext","createContext","selectedColor","undefined","updateSelectedColor","hueColor","updateHueColor","isPresetColor","updateIsPresetColor","shouldGetCoordinates","updateShouldGetCoordinates","shouldCallOnSelect","updateShouldCallOnSelect","displayName","ColorPickerProvider","_ref","children","onSelect","internalSelectedColor","setInternalSelectedColor","internalHueColor","setInternalHueColor","internalIsPresetColor","setInternalIsPresetColor","internalShouldGetCoordinates","setInternalShouldGetCoordinates","internalShouldCallOnSelect","setInternalShouldCallOnSelect","color","providerValue","createElement","Provider","value"],"sources":["../../src/components/ColorPickerProvider.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState, type ReactNode } from 'react';\n\ninterface IColorPickerContext {\n selectedColor?: string;\n updateSelectedColor?: (color: string | undefined) => void;\n hueColor?: string;\n updateHueColor?: (color: string | undefined) => void;\n isPresetColor?: boolean;\n updateIsPresetColor?: (isPresetColor: boolean) => void;\n shouldGetCoordinates?: boolean;\n updateShouldGetCoordinates?: (shouldGetCoordinates: boolean) => void;\n shouldCallOnSelect?: boolean;\n updateShouldCallOnSelect?: (shouldCallOnSelect: boolean) => void;\n}\n\nexport const ColorPickerContext = React.createContext<IColorPickerContext>({\n selectedColor: undefined,\n updateSelectedColor: undefined,\n hueColor: undefined,\n updateHueColor: undefined,\n isPresetColor: undefined,\n updateIsPresetColor: undefined,\n shouldGetCoordinates: undefined,\n updateShouldGetCoordinates: undefined,\n shouldCallOnSelect: undefined,\n updateShouldCallOnSelect: undefined,\n});\n\nColorPickerContext.displayName = 'ColorPickerContext';\n\ninterface ColorPickerProviderProps {\n /**\n * The children of the provider.\n */\n children: ReactNode;\n /**\n * Function to be executed when a color is selected.\n */\n onSelect?: (color: string) => void;\n /**\n * The color that should be preselected.\n */\n selectedColor?: string;\n}\n\nconst ColorPickerProvider = ({ children, selectedColor, onSelect }: ColorPickerProviderProps) => {\n const [internalSelectedColor, setInternalSelectedColor] = useState<string>();\n const [internalHueColor, setInternalHueColor] = useState<string>();\n const [internalIsPresetColor, setInternalIsPresetColor] = useState<boolean>(false);\n const [internalShouldGetCoordinates, setInternalShouldGetCoordinates] = useState<boolean>(true);\n const [internalShouldCallOnSelect, setInternalShouldCallOnSelect] = useState<boolean>(false);\n\n const updateSelectedColor = useCallback((color: string | undefined) => {\n setInternalSelectedColor(color);\n }, []);\n\n const updateHueColor = useCallback((color: string | undefined) => {\n setInternalHueColor(color);\n }, []);\n\n const updateIsPresetColor = useCallback((isPresetColor: boolean) => {\n setInternalIsPresetColor(isPresetColor);\n }, []);\n\n const updateShouldGetCoordinates = useCallback((shouldGetCoordinates: boolean) => {\n setInternalShouldGetCoordinates(shouldGetCoordinates);\n }, []);\n\n const updateShouldCallOnSelect = useCallback((shouldCallOnSelect: boolean) => {\n setInternalShouldCallOnSelect(shouldCallOnSelect);\n }, []);\n\n useEffect(() => {\n setInternalSelectedColor(selectedColor);\n setInternalHueColor(selectedColor);\n setInternalIsPresetColor(true);\n }, [selectedColor]);\n\n useEffect(() => {\n if (typeof onSelect === 'function' && internalShouldCallOnSelect && internalSelectedColor) {\n onSelect(internalSelectedColor);\n\n setInternalShouldCallOnSelect(false);\n }\n }, [internalSelectedColor, internalShouldCallOnSelect, onSelect]);\n\n const providerValue = useMemo<IColorPickerContext>(\n () => ({\n selectedColor: internalSelectedColor,\n updateSelectedColor,\n hueColor: internalHueColor,\n updateHueColor,\n isPresetColor: internalIsPresetColor,\n updateIsPresetColor,\n shouldGetCoordinates: internalShouldGetCoordinates,\n updateShouldGetCoordinates,\n shouldCallOnSelect: internalShouldCallOnSelect,\n updateShouldCallOnSelect,\n }),\n [\n internalHueColor,\n internalIsPresetColor,\n internalSelectedColor,\n internalShouldCallOnSelect,\n internalShouldGetCoordinates,\n updateHueColor,\n updateIsPresetColor,\n updateSelectedColor,\n updateShouldCallOnSelect,\n updateShouldGetCoordinates,\n ],\n );\n\n return (\n <ColorPickerContext.Provider value={providerValue}>{children}</ColorPickerContext.Provider>\n );\n};\n\nColorPickerProvider.displayName = 'ColorPickerProvider';\n\nexport default ColorPickerProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../types';
|
|
3
|
+
interface ColorPickerProps {
|
|
4
|
+
/**
|
|
5
|
+
* Function to be executed when a color is selected.
|
|
6
|
+
*/
|
|
7
|
+
onSelect?: (color: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* The color that should be preselected.
|
|
10
|
+
*/
|
|
11
|
+
selectedColor?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Colors the user can select from.
|
|
14
|
+
*/
|
|
15
|
+
presetColors?: IPresetColor[];
|
|
16
|
+
/**
|
|
17
|
+
* Whether the preset colors should be displayed.
|
|
18
|
+
*/
|
|
19
|
+
shouldShowPresetColors?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Function to be executed when a preset color is added.
|
|
22
|
+
*/
|
|
23
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Function to be executed when a preset color is removed.
|
|
26
|
+
*/
|
|
27
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the transparency slider should be displayed.
|
|
30
|
+
*/
|
|
31
|
+
shouldShowTransparencySlider?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the more options accordion should be displayed.
|
|
34
|
+
*/
|
|
35
|
+
shouldShowMoreOptions?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether the ColorPicker should be displayed inside a popup.
|
|
38
|
+
*/
|
|
39
|
+
shouldShowAsPopup?: boolean;
|
|
40
|
+
}
|
|
41
|
+
declare const ColorPicker: {
|
|
42
|
+
({ selectedColor, presetColors, onPresetColorRemove, onPresetColorAdd, shouldShowPresetColors, shouldShowAsPopup, shouldShowTransparencySlider, shouldShowMoreOptions, onSelect, }: ColorPickerProps): React.JSX.Element;
|
|
43
|
+
displayName: string;
|
|
44
|
+
};
|
|
45
|
+
export default ColorPicker;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ColorPickerProvider from '../ColorPickerProvider';
|
|
3
|
+
import ColorPickerWrapper from './color-picker-wrapper/ColorPickerWrapper';
|
|
4
|
+
import { StyledColorPicker } from './ColorPicker.styles';
|
|
5
|
+
const ColorPicker = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
selectedColor = 'rgba(255, 0, 0, 1)',
|
|
8
|
+
presetColors,
|
|
9
|
+
onPresetColorRemove,
|
|
10
|
+
onPresetColorAdd,
|
|
11
|
+
shouldShowPresetColors = false,
|
|
12
|
+
shouldShowAsPopup = true,
|
|
13
|
+
shouldShowTransparencySlider = false,
|
|
14
|
+
shouldShowMoreOptions = false,
|
|
15
|
+
onSelect
|
|
16
|
+
} = _ref;
|
|
17
|
+
return /*#__PURE__*/React.createElement(ColorPickerProvider, {
|
|
18
|
+
selectedColor: selectedColor,
|
|
19
|
+
onSelect: onSelect
|
|
20
|
+
}, /*#__PURE__*/React.createElement(StyledColorPicker, null, /*#__PURE__*/React.createElement(ColorPickerWrapper, {
|
|
21
|
+
shouldShowTransparencySlider: shouldShowTransparencySlider,
|
|
22
|
+
presetColors: presetColors,
|
|
23
|
+
onPresetColorAdd: onPresetColorAdd,
|
|
24
|
+
onPresetColorRemove: onPresetColorRemove,
|
|
25
|
+
shouldShowAsPopup: shouldShowAsPopup,
|
|
26
|
+
shouldShowMoreOptions: shouldShowMoreOptions,
|
|
27
|
+
shouldShowPresetColors: shouldShowPresetColors
|
|
28
|
+
})));
|
|
29
|
+
};
|
|
30
|
+
ColorPicker.displayName = 'ColorPicker';
|
|
31
|
+
export default ColorPicker;
|
|
32
|
+
//# sourceMappingURL=ColorPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","names":["React","ColorPickerProvider","ColorPickerWrapper","StyledColorPicker","ColorPicker","_ref","selectedColor","presetColors","onPresetColorRemove","onPresetColorAdd","shouldShowPresetColors","shouldShowAsPopup","shouldShowTransparencySlider","shouldShowMoreOptions","onSelect","createElement","displayName"],"sources":["../../../src/components/color-picker/ColorPicker.tsx"],"sourcesContent":["import React from 'react';\nimport type { IPresetColor } from '../../types';\nimport ColorPickerProvider from '../ColorPickerProvider';\nimport ColorPickerWrapper from './color-picker-wrapper/ColorPickerWrapper';\nimport { StyledColorPicker } from './ColorPicker.styles';\n\ninterface ColorPickerProps {\n /**\n * Function to be executed when a color is selected.\n */\n onSelect?: (color: string) => void;\n /**\n * The color that should be preselected.\n */\n selectedColor?: string;\n /**\n * Colors the user can select from.\n */\n presetColors?: IPresetColor[];\n /**\n * Whether the preset colors should be displayed.\n */\n shouldShowPresetColors?: boolean;\n /**\n * Function to be executed when a preset color is added.\n */\n onPresetColorAdd?: (presetColor: IPresetColor) => void;\n /**\n * Function to be executed when a preset color is removed.\n */\n onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;\n /**\n * Whether the transparency slider should be displayed.\n */\n shouldShowTransparencySlider?: boolean;\n /**\n * Whether the more options accordion should be displayed.\n */\n shouldShowMoreOptions?: boolean;\n /**\n * Whether the ColorPicker should be displayed inside a popup.\n */\n shouldShowAsPopup?: boolean;\n}\n\nconst ColorPicker = ({\n selectedColor = 'rgba(255, 0, 0, 1)',\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldShowPresetColors = false,\n shouldShowAsPopup = true,\n shouldShowTransparencySlider = false,\n shouldShowMoreOptions = false,\n onSelect,\n}: ColorPickerProps) => (\n <ColorPickerProvider selectedColor={selectedColor} onSelect={onSelect}>\n <StyledColorPicker>\n <ColorPickerWrapper\n shouldShowTransparencySlider={shouldShowTransparencySlider}\n presetColors={presetColors}\n onPresetColorAdd={onPresetColorAdd}\n onPresetColorRemove={onPresetColorRemove}\n shouldShowAsPopup={shouldShowAsPopup}\n shouldShowMoreOptions={shouldShowMoreOptions}\n shouldShowPresetColors={shouldShowPresetColors}\n />\n </StyledColorPicker>\n </ColorPickerProvider>\n);\n\nColorPicker.displayName = 'ColorPicker';\n\nexport default ColorPicker;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,mBAAmB,MAAM,wBAAwB;AACxD,OAAOC,kBAAkB,MAAM,2CAA2C;AAC1E,SAASC,iBAAiB,QAAQ,sBAAsB;AAyCxD,MAAMC,WAAW,GAAGC,IAAA;EAAA,IAAC;IACjBC,aAAa,GAAG,oBAAoB;IACpCC,YAAY;IACZC,mBAAmB;IACnBC,gBAAgB;IAChBC,sBAAsB,GAAG,KAAK;IAC9BC,iBAAiB,GAAG,IAAI;IACxBC,4BAA4B,GAAG,KAAK;IACpCC,qBAAqB,GAAG,KAAK;IAC7BC;EACc,CAAC,GAAAT,IAAA;EAAA,oBACfL,KAAA,CAAAe,aAAA,CAACd,mBAAmB;IAACK,aAAa,EAAEA,aAAc;IAACQ,QAAQ,EAAEA;EAAS,gBAClEd,KAAA,CAAAe,aAAA,CAACZ,iBAAiB,qBACdH,KAAA,CAAAe,aAAA,CAACb,kBAAkB;IACfU,4BAA4B,EAAEA,4BAA6B;IAC3DL,YAAY,EAAEA,YAAa;IAC3BE,gBAAgB,EAAEA,gBAAiB;IACnCD,mBAAmB,EAAEA,mBAAoB;IACzCG,iBAAiB,EAAEA,iBAAkB;IACrCE,qBAAqB,EAAEA,qBAAsB;IAC7CH,sBAAsB,EAAEA;EAAuB,CAClD,CACc,CACF,CAAC;AAAA,CACzB;AAEDN,WAAW,CAACY,WAAW,GAAG,aAAa;AAEvC,eAAeZ,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const StyledColorPicker: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPicker.styles.js","names":["styled","StyledColorPicker","div"],"sources":["../../../src/components/color-picker/ColorPicker.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledColorPicker = styled.div`\n width: 100%;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,iBAAiB,GAAGD,MAAM,CAACE,GAAI;AAC5C;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../../types';
|
|
3
|
+
interface ColorPickerWrapperProps {
|
|
4
|
+
presetColors?: IPresetColor[];
|
|
5
|
+
shouldShowPresetColors: boolean;
|
|
6
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
7
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
8
|
+
shouldShowTransparencySlider: boolean;
|
|
9
|
+
shouldShowMoreOptions: boolean;
|
|
10
|
+
shouldShowAsPopup: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const ColorPickerWrapper: {
|
|
13
|
+
({ presetColors, onPresetColorRemove, onPresetColorAdd, shouldShowPresetColors, shouldShowAsPopup, shouldShowTransparencySlider, shouldShowMoreOptions, }: ColorPickerWrapperProps): React.JSX.Element;
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
export default ColorPickerWrapper;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Popup } from '@chayns-components/core';
|
|
2
|
+
import React, { useContext, useMemo } from 'react';
|
|
3
|
+
import { ColorPickerContext } from '../../ColorPickerProvider';
|
|
4
|
+
import ColorPickerPopup from './color-picker-popup/ColorPickerPopup';
|
|
5
|
+
import { StyledColorPickerWrapper, StyledColorPickerWrapperInfo, StyledColorPickerWrapperInfoColor, StyledColorPickerWrapperInfoText } from './ColorPickerWrapper.styles';
|
|
6
|
+
const ColorPickerWrapper = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
presetColors,
|
|
9
|
+
onPresetColorRemove,
|
|
10
|
+
onPresetColorAdd,
|
|
11
|
+
shouldShowPresetColors,
|
|
12
|
+
shouldShowAsPopup,
|
|
13
|
+
shouldShowTransparencySlider,
|
|
14
|
+
shouldShowMoreOptions
|
|
15
|
+
} = _ref;
|
|
16
|
+
const {
|
|
17
|
+
selectedColor
|
|
18
|
+
} = useContext(ColorPickerContext);
|
|
19
|
+
const content = useMemo(() => /*#__PURE__*/React.createElement(ColorPickerPopup, {
|
|
20
|
+
shouldShowPresetColors: shouldShowPresetColors,
|
|
21
|
+
onPresetColorRemove: onPresetColorRemove,
|
|
22
|
+
onPresetColorAdd: onPresetColorAdd,
|
|
23
|
+
presetColors: presetColors,
|
|
24
|
+
shouldShowMoreOptions: shouldShowMoreOptions,
|
|
25
|
+
shouldShowTransparencySlider: shouldShowTransparencySlider
|
|
26
|
+
}), [onPresetColorAdd, onPresetColorRemove, presetColors, shouldShowMoreOptions, shouldShowPresetColors, shouldShowTransparencySlider]);
|
|
27
|
+
return /*#__PURE__*/React.createElement(StyledColorPickerWrapper, null, shouldShowAsPopup ? /*#__PURE__*/React.createElement(Popup, {
|
|
28
|
+
content: content
|
|
29
|
+
}, /*#__PURE__*/React.createElement(StyledColorPickerWrapperInfo, null, /*#__PURE__*/React.createElement(StyledColorPickerWrapperInfoColor, {
|
|
30
|
+
$color: selectedColor
|
|
31
|
+
}), /*#__PURE__*/React.createElement(StyledColorPickerWrapperInfoText, null, selectedColor))) : content);
|
|
32
|
+
};
|
|
33
|
+
ColorPickerWrapper.displayName = 'ColorPickerWrapper';
|
|
34
|
+
export default ColorPickerWrapper;
|
|
35
|
+
//# sourceMappingURL=ColorPickerWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerWrapper.js","names":["Popup","React","useContext","useMemo","ColorPickerContext","ColorPickerPopup","StyledColorPickerWrapper","StyledColorPickerWrapperInfo","StyledColorPickerWrapperInfoColor","StyledColorPickerWrapperInfoText","ColorPickerWrapper","_ref","presetColors","onPresetColorRemove","onPresetColorAdd","shouldShowPresetColors","shouldShowAsPopup","shouldShowTransparencySlider","shouldShowMoreOptions","selectedColor","content","createElement","$color","displayName"],"sources":["../../../../src/components/color-picker/color-picker-wrapper/ColorPickerWrapper.tsx"],"sourcesContent":["import { Popup } from '@chayns-components/core';\nimport React, { useContext, useMemo } from 'react';\nimport type { IPresetColor } from '../../../types';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport ColorPickerPopup from './color-picker-popup/ColorPickerPopup';\nimport {\n StyledColorPickerWrapper,\n StyledColorPickerWrapperInfo,\n StyledColorPickerWrapperInfoColor,\n StyledColorPickerWrapperInfoText,\n} from './ColorPickerWrapper.styles';\n\ninterface ColorPickerWrapperProps {\n presetColors?: IPresetColor[];\n shouldShowPresetColors: boolean;\n onPresetColorAdd?: (presetColor: IPresetColor) => void;\n onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;\n shouldShowTransparencySlider: boolean;\n shouldShowMoreOptions: boolean;\n shouldShowAsPopup: boolean;\n}\n\nconst ColorPickerWrapper = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldShowPresetColors,\n shouldShowAsPopup,\n shouldShowTransparencySlider,\n shouldShowMoreOptions,\n}: ColorPickerWrapperProps) => {\n const { selectedColor } = useContext(ColorPickerContext);\n\n const content = useMemo(\n () => (\n <ColorPickerPopup\n shouldShowPresetColors={shouldShowPresetColors}\n onPresetColorRemove={onPresetColorRemove}\n onPresetColorAdd={onPresetColorAdd}\n presetColors={presetColors}\n shouldShowMoreOptions={shouldShowMoreOptions}\n shouldShowTransparencySlider={shouldShowTransparencySlider}\n />\n ),\n [\n onPresetColorAdd,\n onPresetColorRemove,\n presetColors,\n shouldShowMoreOptions,\n shouldShowPresetColors,\n shouldShowTransparencySlider,\n ],\n );\n\n return (\n <StyledColorPickerWrapper>\n {shouldShowAsPopup ? (\n <Popup content={content}>\n <StyledColorPickerWrapperInfo>\n <StyledColorPickerWrapperInfoColor $color={selectedColor} />\n <StyledColorPickerWrapperInfoText>\n {selectedColor}\n </StyledColorPickerWrapperInfoText>\n </StyledColorPickerWrapperInfo>\n </Popup>\n ) : (\n content\n )}\n </StyledColorPickerWrapper>\n );\n};\n\nColorPickerWrapper.displayName = 'ColorPickerWrapper';\n\nexport default ColorPickerWrapper;\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,yBAAyB;AAC/C,OAAOC,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAElD,SAASC,kBAAkB,QAAQ,2BAA2B;AAC9D,OAAOC,gBAAgB,MAAM,uCAAuC;AACpE,SACIC,wBAAwB,EACxBC,4BAA4B,EAC5BC,iCAAiC,EACjCC,gCAAgC,QAC7B,6BAA6B;AAYpC,MAAMC,kBAAkB,GAAGC,IAAA,IAQI;EAAA,IARH;IACxBC,YAAY;IACZC,mBAAmB;IACnBC,gBAAgB;IAChBC,sBAAsB;IACtBC,iBAAiB;IACjBC,4BAA4B;IAC5BC;EACqB,CAAC,GAAAP,IAAA;EACtB,MAAM;IAAEQ;EAAc,CAAC,GAAGjB,UAAU,CAACE,kBAAkB,CAAC;EAExD,MAAMgB,OAAO,GAAGjB,OAAO,CACnB,mBACIF,KAAA,CAAAoB,aAAA,CAAChB,gBAAgB;IACbU,sBAAsB,EAAEA,sBAAuB;IAC/CF,mBAAmB,EAAEA,mBAAoB;IACzCC,gBAAgB,EAAEA,gBAAiB;IACnCF,YAAY,EAAEA,YAAa;IAC3BM,qBAAqB,EAAEA,qBAAsB;IAC7CD,4BAA4B,EAAEA;EAA6B,CAC9D,CACJ,EACD,CACIH,gBAAgB,EAChBD,mBAAmB,EACnBD,YAAY,EACZM,qBAAqB,EACrBH,sBAAsB,EACtBE,4BAA4B,CAEpC,CAAC;EAED,oBACIhB,KAAA,CAAAoB,aAAA,CAACf,wBAAwB,QACpBU,iBAAiB,gBACdf,KAAA,CAAAoB,aAAA,CAACrB,KAAK;IAACoB,OAAO,EAAEA;EAAQ,gBACpBnB,KAAA,CAAAoB,aAAA,CAACd,4BAA4B,qBACzBN,KAAA,CAAAoB,aAAA,CAACb,iCAAiC;IAACc,MAAM,EAAEH;EAAc,CAAE,CAAC,eAC5DlB,KAAA,CAAAoB,aAAA,CAACZ,gCAAgC,QAC5BU,aAC6B,CACR,CAC3B,CAAC,GAERC,OAEkB,CAAC;AAEnC,CAAC;AAEDV,kBAAkB,CAACa,WAAW,GAAG,oBAAoB;AAErD,eAAeb,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { WithTheme } from '@chayns-components/core';
|
|
3
|
+
export declare const StyledColorPickerWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
4
|
+
export declare const StyledColorPickerWrapperInfo: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
5
|
+
type StyledColorPickerWrapperInfoColorProps = WithTheme<{
|
|
6
|
+
$color?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const StyledColorPickerWrapperInfoColor: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").Substitute<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
9
|
+
ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
10
|
+
}>, StyledColorPickerWrapperInfoColorProps>, never>>;
|
|
11
|
+
export declare const StyledColorPickerWrapperInfoText: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
12
|
+
theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
13
|
+
}>>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
export const StyledColorPickerWrapper = styled.div``;
|
|
3
|
+
export const StyledColorPickerWrapperInfo = styled.div`
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: 8px;
|
|
7
|
+
`;
|
|
8
|
+
export const StyledColorPickerWrapperInfoColor = styled.div.attrs(_ref => {
|
|
9
|
+
let {
|
|
10
|
+
$color
|
|
11
|
+
} = _ref;
|
|
12
|
+
return {
|
|
13
|
+
style: {
|
|
14
|
+
backgroundColor: $color
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
})`
|
|
18
|
+
width: 15px;
|
|
19
|
+
aspect-ratio: 1;
|
|
20
|
+
border-radius: 50px;
|
|
21
|
+
`;
|
|
22
|
+
export const StyledColorPickerWrapperInfoText = styled.div`
|
|
23
|
+
border-bottom-style: dashed;
|
|
24
|
+
border-bottom-width: 1px;
|
|
25
|
+
|
|
26
|
+
color: ${_ref2 => {
|
|
27
|
+
let {
|
|
28
|
+
theme
|
|
29
|
+
} = _ref2;
|
|
30
|
+
return theme.text;
|
|
31
|
+
}};
|
|
32
|
+
`;
|
|
33
|
+
//# sourceMappingURL=ColorPickerWrapper.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerWrapper.styles.js","names":["styled","StyledColorPickerWrapper","div","StyledColorPickerWrapperInfo","StyledColorPickerWrapperInfoColor","attrs","_ref","$color","style","backgroundColor","StyledColorPickerWrapperInfoText","_ref2","theme","text"],"sources":["../../../../src/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\nexport const StyledColorPickerWrapper = styled.div``;\n\nexport const StyledColorPickerWrapperInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\ntype StyledColorPickerWrapperInfoColorProps = WithTheme<{ $color?: string }>;\n\nexport const StyledColorPickerWrapperInfoColor = styled.div.attrs<StyledColorPickerWrapperInfoColorProps>(\n ({ $color }) => ({\n style: {\n backgroundColor: $color,\n },\n }),\n)`\n width: 15px;\n aspect-ratio: 1;\n border-radius: 50px;\n`;\n\ntype StyledColorPickerWrapperInfoTextProps = WithTheme<unknown>;\n\nexport const StyledColorPickerWrapperInfoText = styled.div<StyledColorPickerWrapperInfoTextProps>`\n border-bottom-style: dashed;\n border-bottom-width: 1px;\n\n color: ${({ theme }: StyledColorPickerWrapperInfoTextProps) => theme.text};\n`;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,wBAAwB,GAAGD,MAAM,CAACE,GAAI,EAAC;AAEpD,OAAO,MAAMC,4BAA4B,GAAGH,MAAM,CAACE,GAAI;AACvD;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAME,iCAAiC,GAAGJ,MAAM,CAACE,GAAG,CAACG,KAAK,CAC7DC,IAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,IAAA;EAAA,OAAM;IACbE,KAAK,EAAE;MACHC,eAAe,EAAEF;IACrB;EACJ,CAAC;AAAA,CACL,CAAE;AACF;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMG,gCAAgC,GAAGV,MAAM,CAACE,GAA2C;AAClG;AACA;AACA;AACA,aAAaS,KAAA;EAAA,IAAC;IAAEC;EAA6C,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA,CAAC;AAC9E,CAAC","ignoreList":[]}
|
package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { IPresetColor } from '../../../../types';
|
|
3
|
+
interface ColorPickerPopupProps {
|
|
4
|
+
presetColors?: IPresetColor[];
|
|
5
|
+
shouldShowPresetColors: boolean;
|
|
6
|
+
onPresetColorAdd?: (presetColor: IPresetColor) => void;
|
|
7
|
+
onPresetColorRemove?: (presetColorId: IPresetColor['id']) => void;
|
|
8
|
+
shouldShowTransparencySlider: boolean;
|
|
9
|
+
shouldShowMoreOptions: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const ColorPickerPopup: {
|
|
12
|
+
({ presetColors, onPresetColorRemove, onPresetColorAdd, shouldShowPresetColors, shouldShowTransparencySlider, shouldShowMoreOptions, }: ColorPickerPopupProps): React.JSX.Element;
|
|
13
|
+
displayName: string;
|
|
14
|
+
};
|
|
15
|
+
export default ColorPickerPopup;
|
package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ColorArea from './color-area/ColorArea';
|
|
3
|
+
import { StyledColorPickerPopup } from './ColorPickerPopup.styles';
|
|
4
|
+
import MoreOptions from './more-options/MoreOptions';
|
|
5
|
+
import PresetColors from './preset-colors/PresetColors';
|
|
6
|
+
import Sliders from './sliders/Sliders';
|
|
7
|
+
const ColorPickerPopup = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
presetColors,
|
|
10
|
+
onPresetColorRemove,
|
|
11
|
+
onPresetColorAdd,
|
|
12
|
+
shouldShowPresetColors,
|
|
13
|
+
shouldShowTransparencySlider,
|
|
14
|
+
shouldShowMoreOptions
|
|
15
|
+
} = _ref;
|
|
16
|
+
return /*#__PURE__*/React.createElement(StyledColorPickerPopup, null, /*#__PURE__*/React.createElement(ColorArea, null), /*#__PURE__*/React.createElement(Sliders, {
|
|
17
|
+
shouldShowTransparencySlider: shouldShowTransparencySlider
|
|
18
|
+
}), shouldShowPresetColors && /*#__PURE__*/React.createElement(PresetColors, {
|
|
19
|
+
presetColors: presetColors,
|
|
20
|
+
onPresetColorAdd: onPresetColorAdd,
|
|
21
|
+
onPresetColorRemove: onPresetColorRemove
|
|
22
|
+
}), shouldShowMoreOptions && /*#__PURE__*/React.createElement(MoreOptions, null));
|
|
23
|
+
};
|
|
24
|
+
ColorPickerPopup.displayName = 'ColorPickerPopup';
|
|
25
|
+
export default ColorPickerPopup;
|
|
26
|
+
//# sourceMappingURL=ColorPickerPopup.js.map
|
package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerPopup.js","names":["React","ColorArea","StyledColorPickerPopup","MoreOptions","PresetColors","Sliders","ColorPickerPopup","_ref","presetColors","onPresetColorRemove","onPresetColorAdd","shouldShowPresetColors","shouldShowTransparencySlider","shouldShowMoreOptions","createElement","displayName"],"sources":["../../../../../src/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.tsx"],"sourcesContent":["import React from 'react';\nimport type { IPresetColor } from '../../../../types';\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}\n\nconst ColorPickerPopup = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldShowPresetColors,\n shouldShowTransparencySlider,\n shouldShowMoreOptions,\n}: ColorPickerPopupProps) => (\n <StyledColorPickerPopup>\n <ColorArea />\n <Sliders shouldShowTransparencySlider={shouldShowTransparencySlider} />\n {shouldShowPresetColors && (\n <PresetColors\n presetColors={presetColors}\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;AAWvC,MAAMC,gBAAgB,GAAGC,IAAA;EAAA,IAAC;IACtBC,YAAY;IACZC,mBAAmB;IACnBC,gBAAgB;IAChBC,sBAAsB;IACtBC,4BAA4B;IAC5BC;EACmB,CAAC,GAAAN,IAAA;EAAA,oBACpBP,KAAA,CAAAc,aAAA,CAACZ,sBAAsB,qBACnBF,KAAA,CAAAc,aAAA,CAACb,SAAS,MAAE,CAAC,eACbD,KAAA,CAAAc,aAAA,CAACT,OAAO;IAACO,4BAA4B,EAAEA;EAA6B,CAAE,CAAC,EACtED,sBAAsB,iBACnBX,KAAA,CAAAc,aAAA,CAACV,YAAY;IACTI,YAAY,EAAEA,YAAa;IAC3BE,gBAAgB,EAAEA,gBAAiB;IACnCD,mBAAmB,EAAEA;EAAoB,CAC5C,CACJ,EACAI,qBAAqB,iBAAIb,KAAA,CAAAc,aAAA,CAACX,WAAW,MAAE,CACpB,CAAC;AAAA,CAC5B;AAEDG,gBAAgB,CAACS,WAAW,GAAG,kBAAkB;AAEjD,eAAeT,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const StyledColorPickerPopup: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerPopup.styles.js","names":["styled","StyledColorPickerPopup","div"],"sources":["../../../../../src/components/color-picker/color-picker-wrapper/color-picker-popup/ColorPickerPopup.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledColorPickerPopup = styled.div`\n width: 320px;\n padding: 11px;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,sBAAsB,GAAGD,MAAM,CAACE,GAAI;AACjD;AACA;AACA,CAAC","ignoreList":[]}
|
package/lib/components/color-picker/color-picker-wrapper/color-picker-popup/color-area/ColorArea.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { StyledColorArea, StyledColorAreaCanvas, StyledColorAreaPseudo, StyledMotionColorAreaPointer } from './ColorArea.styles';
|
|
3
|
+
import { hsvToHex } from '@chayns/colors';
|
|
4
|
+
import { useDragControls, useMotionValue } from 'framer-motion';
|
|
5
|
+
import { extractRgbValues, getColorFromCoordinates, getCoordinatesFromColor, rgbToHsv } from '../../../../../utils/color';
|
|
6
|
+
import { ColorPickerContext } from '../../../../ColorPickerProvider';
|
|
7
|
+
const ColorArea = () => {
|
|
8
|
+
const {
|
|
9
|
+
selectedColor,
|
|
10
|
+
updateSelectedColor,
|
|
11
|
+
updateIsPresetColor,
|
|
12
|
+
isPresetColor,
|
|
13
|
+
shouldGetCoordinates,
|
|
14
|
+
updateShouldGetCoordinates,
|
|
15
|
+
updateShouldCallOnSelect,
|
|
16
|
+
hueColor
|
|
17
|
+
} = useContext(ColorPickerContext);
|
|
18
|
+
const [opacity, setOpacity] = useState(1);
|
|
19
|
+
const [scale, setScale] = useState({
|
|
20
|
+
scaleX: 0,
|
|
21
|
+
scaleY: 0
|
|
22
|
+
});
|
|
23
|
+
const isPresetColorRef = useRef(false);
|
|
24
|
+
const shouldGetCoordinatesRef = useRef(false);
|
|
25
|
+
const canDrag = useRef(false);
|
|
26
|
+
const canvasRef = useRef(null);
|
|
27
|
+
const pseudoRef = useRef(null);
|
|
28
|
+
const dragControls = useDragControls();
|
|
29
|
+
const x = useMotionValue(0);
|
|
30
|
+
const y = useMotionValue(0);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
isPresetColorRef.current = isPresetColor ?? false;
|
|
33
|
+
}, [isPresetColor]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
shouldGetCoordinatesRef.current = shouldGetCoordinates ?? true;
|
|
36
|
+
}, [shouldGetCoordinates]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (selectedColor) {
|
|
39
|
+
const {
|
|
40
|
+
a
|
|
41
|
+
} = extractRgbValues(selectedColor);
|
|
42
|
+
setOpacity(a);
|
|
43
|
+
}
|
|
44
|
+
}, [selectedColor]);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
const canvas = canvasRef.current;
|
|
47
|
+
if (!canvas) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const rect = canvas.getBoundingClientRect();
|
|
51
|
+
const scaleX = canvas.width / rect.width;
|
|
52
|
+
const scaleY = canvas.height / rect.height;
|
|
53
|
+
setScale({
|
|
54
|
+
scaleX,
|
|
55
|
+
scaleY
|
|
56
|
+
});
|
|
57
|
+
}, []);
|
|
58
|
+
const setColor = useCallback(() => {
|
|
59
|
+
const xCord = x.get();
|
|
60
|
+
const yCord = y.get();
|
|
61
|
+
if (typeof updateSelectedColor === 'function') {
|
|
62
|
+
const color = getColorFromCoordinates({
|
|
63
|
+
coordinates: {
|
|
64
|
+
x: xCord,
|
|
65
|
+
y: yCord
|
|
66
|
+
},
|
|
67
|
+
canvas: canvasRef,
|
|
68
|
+
opacity,
|
|
69
|
+
scale
|
|
70
|
+
});
|
|
71
|
+
if (color === 'transparent') {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
updateSelectedColor(color);
|
|
75
|
+
}
|
|
76
|
+
}, [opacity, scale, updateSelectedColor, x, y]);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
const ctx = canvasRef.current?.getContext('2d');
|
|
79
|
+
if (!ctx) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const hsv = rgbToHsv(hueColor);
|
|
83
|
+
const hex = hsvToHex({
|
|
84
|
+
h: hsv?.h ?? 1,
|
|
85
|
+
s: 1,
|
|
86
|
+
v: 1
|
|
87
|
+
});
|
|
88
|
+
const colorGradiant = ctx.createLinearGradient(0, 0, 300, 0);
|
|
89
|
+
colorGradiant.addColorStop(0, '#fff');
|
|
90
|
+
colorGradiant.addColorStop(1, hex ?? 'red');
|
|
91
|
+
ctx.fillStyle = colorGradiant;
|
|
92
|
+
ctx.fillRect(0, 0, 300, 150);
|
|
93
|
+
const transparentGradiant = ctx.createLinearGradient(0, 0, 0, 150);
|
|
94
|
+
transparentGradiant.addColorStop(0, 'transparent');
|
|
95
|
+
transparentGradiant.addColorStop(1, '#000');
|
|
96
|
+
ctx.fillStyle = transparentGradiant;
|
|
97
|
+
ctx.fillRect(0, 0, 300, 150);
|
|
98
|
+
if (isPresetColorRef.current) {
|
|
99
|
+
if (typeof updateIsPresetColor === 'function') {
|
|
100
|
+
updateIsPresetColor(false);
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
setColor();
|
|
105
|
+
}, [hueColor, setColor, updateIsPresetColor]);
|
|
106
|
+
const handleStartDrag = useCallback(() => {
|
|
107
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
108
|
+
updateShouldGetCoordinates(false);
|
|
109
|
+
}
|
|
110
|
+
canDrag.current = true;
|
|
111
|
+
}, [updateShouldGetCoordinates]);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (selectedColor && shouldGetCoordinatesRef.current) {
|
|
114
|
+
const cords = getCoordinatesFromColor({
|
|
115
|
+
color: selectedColor,
|
|
116
|
+
canvas: canvasRef,
|
|
117
|
+
tolerance: 10
|
|
118
|
+
});
|
|
119
|
+
if (cords) {
|
|
120
|
+
x.set(cords.x);
|
|
121
|
+
y.set(cords.y);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}, [selectedColor, x, y]);
|
|
125
|
+
const handleDrag = useCallback(() => {
|
|
126
|
+
setColor();
|
|
127
|
+
}, [setColor]);
|
|
128
|
+
const handleClick = useCallback(event => {
|
|
129
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
130
|
+
updateShouldGetCoordinates(false);
|
|
131
|
+
}
|
|
132
|
+
const {
|
|
133
|
+
left,
|
|
134
|
+
top
|
|
135
|
+
} = event.target.getBoundingClientRect();
|
|
136
|
+
x.set(event.clientX - left - 10);
|
|
137
|
+
y.set(event.clientY - top - 10);
|
|
138
|
+
setColor();
|
|
139
|
+
}, [setColor, updateShouldGetCoordinates, x, y]);
|
|
140
|
+
const handlePointerUp = useCallback(() => {
|
|
141
|
+
canDrag.current = false;
|
|
142
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
143
|
+
updateShouldGetCoordinates(true);
|
|
144
|
+
}
|
|
145
|
+
if (typeof updateShouldCallOnSelect === 'function') {
|
|
146
|
+
updateShouldCallOnSelect(true);
|
|
147
|
+
}
|
|
148
|
+
}, [updateShouldCallOnSelect, updateShouldGetCoordinates]);
|
|
149
|
+
const handleMouseMove = useCallback(event => {
|
|
150
|
+
if (canDrag.current && pseudoRef.current) {
|
|
151
|
+
const {
|
|
152
|
+
left,
|
|
153
|
+
top
|
|
154
|
+
} = pseudoRef.current.getBoundingClientRect();
|
|
155
|
+
let xCords = event.clientX - left - 10;
|
|
156
|
+
let yCords = event.clientY - top - 10;
|
|
157
|
+
switch (true) {
|
|
158
|
+
case xCords > 300:
|
|
159
|
+
xCords = 300;
|
|
160
|
+
break;
|
|
161
|
+
case xCords < 0:
|
|
162
|
+
xCords = 0;
|
|
163
|
+
break;
|
|
164
|
+
default:
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
switch (true) {
|
|
168
|
+
case yCords > 150:
|
|
169
|
+
yCords = 150;
|
|
170
|
+
break;
|
|
171
|
+
case yCords < 0:
|
|
172
|
+
yCords = 0;
|
|
173
|
+
break;
|
|
174
|
+
default:
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
x.set(xCords);
|
|
178
|
+
y.set(yCords);
|
|
179
|
+
setColor();
|
|
180
|
+
}
|
|
181
|
+
}, [setColor, x, y]);
|
|
182
|
+
useEffect(() => {
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
184
|
+
// @ts-ignore
|
|
185
|
+
window.addEventListener('mousemove', handleMouseMove);
|
|
186
|
+
window.addEventListener('pointerup', handlePointerUp);
|
|
187
|
+
return () => {
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
189
|
+
// @ts-ignore
|
|
190
|
+
window.removeEventListener('mousemove', handleMouseMove);
|
|
191
|
+
window.removeEventListener('pointerup', handlePointerUp);
|
|
192
|
+
};
|
|
193
|
+
}, [handleMouseMove, handlePointerUp]);
|
|
194
|
+
return useMemo(() => /*#__PURE__*/React.createElement(StyledColorArea, null, /*#__PURE__*/React.createElement(StyledColorAreaCanvas, {
|
|
195
|
+
ref: canvasRef
|
|
196
|
+
}), /*#__PURE__*/React.createElement(StyledColorAreaPseudo, {
|
|
197
|
+
ref: pseudoRef,
|
|
198
|
+
onPointerDown: handleStartDrag,
|
|
199
|
+
onClick: handleClick
|
|
200
|
+
}, /*#__PURE__*/React.createElement(StyledMotionColorAreaPointer, {
|
|
201
|
+
drag: true,
|
|
202
|
+
dragConstraints: pseudoRef,
|
|
203
|
+
style: {
|
|
204
|
+
x,
|
|
205
|
+
y
|
|
206
|
+
},
|
|
207
|
+
dragElastic: false,
|
|
208
|
+
dragMomentum: false,
|
|
209
|
+
dragControls: dragControls,
|
|
210
|
+
onDrag: handleDrag
|
|
211
|
+
}))), [dragControls, handleClick, handleDrag, handleStartDrag, x, y]);
|
|
212
|
+
};
|
|
213
|
+
ColorArea.displayName = 'ColorArea';
|
|
214
|
+
export default ColorArea;
|
|
215
|
+
//# sourceMappingURL=ColorArea.js.map
|