@chayns-components/color-picker 5.0.0-beta.1000
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +34 -0
- package/lib/cjs/api/color/get.js +33 -0
- package/lib/cjs/api/color/get.js.map +1 -0
- package/lib/cjs/api/color/put.js +37 -0
- package/lib/cjs/api/color/put.js.map +1 -0
- package/lib/cjs/components/ColorPickerProvider.js +96 -0
- package/lib/cjs/components/ColorPickerProvider.js.map +1 -0
- package/lib/cjs/components/color-picker/ColorPicker.js +43 -0
- package/lib/cjs/components/color-picker/ColorPicker.js.map +1 -0
- package/lib/cjs/components/color-picker/ColorPicker.styles.js +12 -0
- package/lib/cjs/components/color-picker/ColorPicker.styles.js.map +1 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +50 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +64 -0
- package/lib/cjs/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js +32 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js +13 -0
- package/lib/cjs/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js +246 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js +45 -0
- package/lib/cjs/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js +90 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js +35 -0
- package/lib/cjs/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js +148 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js +15 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +47 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +28 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +50 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +44 -0
- package/lib/cjs/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js +75 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js +20 -0
- package/lib/cjs/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js +22 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +46 -0
- package/lib/cjs/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
- package/lib/cjs/components/hue-slider/HueSlider.js +135 -0
- package/lib/cjs/components/hue-slider/HueSlider.js.map +1 -0
- package/lib/cjs/components/hue-slider/HueSlider.styles.js +88 -0
- package/lib/cjs/components/hue-slider/HueSlider.styles.js.map +1 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.js +122 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.js.map +1 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js +123 -0
- package/lib/cjs/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
- package/lib/cjs/constants/color.js +72 -0
- package/lib/cjs/constants/color.js.map +1 -0
- package/lib/cjs/index.js +48 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types/colorPicker.js +2 -0
- package/lib/cjs/types/colorPicker.js.map +1 -0
- package/lib/cjs/utils/color.js +245 -0
- package/lib/cjs/utils/color.js.map +1 -0
- package/lib/esm/api/color/get.js +26 -0
- package/lib/esm/api/color/get.js.map +1 -0
- package/lib/esm/api/color/put.js +30 -0
- package/lib/esm/api/color/put.js.map +1 -0
- package/lib/esm/components/ColorPickerProvider.js +89 -0
- package/lib/esm/components/ColorPickerProvider.js.map +1 -0
- package/lib/esm/components/color-picker/ColorPicker.js +39 -0
- package/lib/esm/components/color-picker/ColorPicker.js.map +1 -0
- package/lib/esm/components/color-picker/ColorPicker.styles.js +5 -0
- package/lib/esm/components/color-picker/ColorPicker.styles.js.map +1 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js +42 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.js.map +1 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js +69 -0
- package/lib/esm/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js +28 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.js.map +1 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js +6 -0
- package/lib/esm/components/color-picker-popup/ColorPickerPopup.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js +237 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.js.map +1 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js +38 -0
- package/lib/esm/components/color-picker-popup/color-area/ColorArea.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js +82 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.js.map +1 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js +37 -0
- package/lib/esm/components/color-picker-popup/more-options/MoreOptions.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js +152 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js +8 -0
- package/lib/esm/components/color-picker-popup/preset-colors/PresetColors.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js +40 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js +27 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js +43 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.js.map +1 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js +43 -0
- package/lib/esm/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js +67 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js +13 -0
- package/lib/esm/components/color-picker-popup/sliders/Sliders.styles.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js +14 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.js.map +1 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js +42 -0
- package/lib/esm/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.js.map +1 -0
- package/lib/esm/components/hue-slider/HueSlider.js +128 -0
- package/lib/esm/components/hue-slider/HueSlider.js.map +1 -0
- package/lib/esm/components/hue-slider/HueSlider.styles.js +84 -0
- package/lib/esm/components/hue-slider/HueSlider.styles.js.map +1 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.js +115 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.js.map +1 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js +125 -0
- package/lib/esm/components/transparency-slider/TransparencySlider.styles.js.map +1 -0
- package/lib/esm/constants/color.js +66 -0
- package/lib/esm/constants/color.js.map +1 -0
- package/lib/esm/index.js +6 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types/colorPicker.js +2 -0
- package/lib/esm/types/colorPicker.js.map +1 -0
- package/lib/esm/utils/color.js +229 -0
- package/lib/esm/utils/color.js.map +1 -0
- package/lib/types/api/color/get.d.ts +1 -0
- package/lib/types/api/color/put.d.ts +2 -0
- package/lib/types/components/ColorPickerProvider.d.ts +35 -0
- package/lib/types/components/color-picker/ColorPicker.d.ts +61 -0
- package/lib/types/components/color-picker/ColorPicker.styles.d.ts +1 -0
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.d.ts +20 -0
- package/lib/types/components/color-picker/color-picker-wrapper/ColorPickerWrapper.styles.d.ts +18 -0
- package/lib/types/components/color-picker-popup/ColorPickerPopup.d.ts +16 -0
- package/lib/types/components/color-picker-popup/ColorPickerPopup.styles.d.ts +1 -0
- package/lib/types/components/color-picker-popup/color-area/ColorArea.d.ts +6 -0
- package/lib/types/components/color-picker-popup/color-area/ColorArea.styles.d.ts +267 -0
- package/lib/types/components/color-picker-popup/more-options/MoreOptions.d.ts +6 -0
- package/lib/types/components/color-picker-popup/more-options/MoreOptions.styles.d.ts +9 -0
- package/lib/types/components/color-picker-popup/preset-colors/PresetColors.d.ts +13 -0
- package/lib/types/components/color-picker-popup/preset-colors/PresetColors.styles.d.ts +1 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.d.ts +13 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-button/PresetButton.styles.d.ts +6 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.d.ts +10 -0
- package/lib/types/components/color-picker-popup/preset-colors/preset-color/PresetColor.styles.d.ts +12 -0
- package/lib/types/components/color-picker-popup/sliders/Sliders.d.ts +9 -0
- package/lib/types/components/color-picker-popup/sliders/Sliders.styles.d.ts +2 -0
- package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.d.ts +6 -0
- package/lib/types/components/color-picker-popup/sliders/color-preview/ColorPreview.styles.d.ts +10 -0
- package/lib/types/components/hue-slider/HueSlider.d.ts +25 -0
- package/lib/types/components/hue-slider/HueSlider.styles.d.ts +15 -0
- package/lib/types/components/transparency-slider/TransparencySlider.d.ts +24 -0
- package/lib/types/components/transparency-slider/TransparencySlider.styles.d.ts +24 -0
- package/lib/types/constants/color.d.ts +3 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/types/types/colorPicker.d.ts +27 -0
- package/lib/types/utils/color.d.ts +32 -0
- package/package.json +86 -0
|
@@ -0,0 +1,69 @@
|
|
|
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 StyledColorPickerWrapperInfoColorWrapper = styled.div`
|
|
9
|
+
border-radius: ${_ref => {
|
|
10
|
+
let {
|
|
11
|
+
$shouldShowRoundPreviewColor
|
|
12
|
+
} = _ref;
|
|
13
|
+
return $shouldShowRoundPreviewColor ? '50px' : '0px';
|
|
14
|
+
}};
|
|
15
|
+
border: 1px ${_ref2 => {
|
|
16
|
+
let {
|
|
17
|
+
theme
|
|
18
|
+
} = _ref2;
|
|
19
|
+
return theme.text;
|
|
20
|
+
}} solid;
|
|
21
|
+
|
|
22
|
+
width: 15px;
|
|
23
|
+
aspect-ratio: 1;
|
|
24
|
+
position: relative;
|
|
25
|
+
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
`;
|
|
28
|
+
export const StyledColorPickerWrapperInfoColorBackground = styled.div`
|
|
29
|
+
position: absolute;
|
|
30
|
+
background-color: #fff;
|
|
31
|
+
background-image: linear-gradient(45deg, #a0a0a0 25%, #0000 0),
|
|
32
|
+
linear-gradient(-45deg, #a0a0a0 25%, #0000 0), linear-gradient(45deg, #0000 75%, #a0a0a0 0),
|
|
33
|
+
linear-gradient(-45deg, #0000 75%, #a0a0a0 0);
|
|
34
|
+
background-position:
|
|
35
|
+
0 0,
|
|
36
|
+
0 4px,
|
|
37
|
+
4px -4px,
|
|
38
|
+
-4px 0;
|
|
39
|
+
background-repeat: repeat;
|
|
40
|
+
background-size: 8px 8px;
|
|
41
|
+
height: 100%;
|
|
42
|
+
width: 100%;
|
|
43
|
+
`;
|
|
44
|
+
export const StyledColorPickerWrapperInfoColor = styled.div.attrs(_ref3 => {
|
|
45
|
+
let {
|
|
46
|
+
$color
|
|
47
|
+
} = _ref3;
|
|
48
|
+
return {
|
|
49
|
+
style: {
|
|
50
|
+
backgroundColor: $color
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
})`
|
|
54
|
+
height: 100%;
|
|
55
|
+
width: 100%;
|
|
56
|
+
position: absolute;
|
|
57
|
+
`;
|
|
58
|
+
export const StyledColorPickerWrapperInfoText = styled.div`
|
|
59
|
+
border-bottom-style: dashed;
|
|
60
|
+
border-bottom-width: 1px;
|
|
61
|
+
|
|
62
|
+
color: ${_ref4 => {
|
|
63
|
+
let {
|
|
64
|
+
theme
|
|
65
|
+
} = _ref4;
|
|
66
|
+
return theme.text;
|
|
67
|
+
}};
|
|
68
|
+
`;
|
|
69
|
+
//# sourceMappingURL=ColorPickerWrapper.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerWrapper.styles.js","names":["styled","StyledColorPickerWrapper","div","StyledColorPickerWrapperInfo","StyledColorPickerWrapperInfoColorWrapper","_ref","$shouldShowRoundPreviewColor","_ref2","theme","text","StyledColorPickerWrapperInfoColorBackground","StyledColorPickerWrapperInfoColor","attrs","_ref3","$color","style","backgroundColor","StyledColorPickerWrapperInfoText","_ref4"],"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<{\n $color?: string;\n}>;\n\ntype StyledColorPickerWrapperInfoColorWrapperProps = WithTheme<{\n $shouldShowRoundPreviewColor: boolean;\n}>;\n\nexport const StyledColorPickerWrapperInfoColorWrapper = styled.div<StyledColorPickerWrapperInfoColorWrapperProps>`\n border-radius: ${({ $shouldShowRoundPreviewColor }) =>\n $shouldShowRoundPreviewColor ? '50px' : '0px'};\n border: 1px ${({ theme }: StyledColorPickerWrapperInfoColorProps) => theme.text} solid;\n\n width: 15px;\n aspect-ratio: 1;\n position: relative;\n\n overflow: hidden;\n`;\n\nexport const StyledColorPickerWrapperInfoColorBackground = styled.div`\n position: absolute;\n background-color: #fff;\n background-image: linear-gradient(45deg, #a0a0a0 25%, #0000 0),\n linear-gradient(-45deg, #a0a0a0 25%, #0000 0), linear-gradient(45deg, #0000 75%, #a0a0a0 0),\n linear-gradient(-45deg, #0000 75%, #a0a0a0 0);\n background-position:\n 0 0,\n 0 4px,\n 4px -4px,\n -4px 0;\n background-repeat: repeat;\n background-size: 8px 8px;\n height: 100%;\n width: 100%;\n`;\n\nexport const StyledColorPickerWrapperInfoColor = styled.div.attrs<StyledColorPickerWrapperInfoColorProps>(\n ({ $color }) => ({\n style: {\n backgroundColor: $color,\n },\n }),\n)`\n height: 100%;\n width: 100%;\n position: absolute;\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,GAAG,EAAE;AAEpD,OAAO,MAAMC,4BAA4B,GAAGH,MAAM,CAACE,GAAG;AACtD;AACA;AACA;AACA,CAAC;AAUD,OAAO,MAAME,wCAAwC,GAAGJ,MAAM,CAACE,GAAkD;AACjH,qBAAqBG,IAAA;EAAA,IAAC;IAAEC;EAA6B,CAAC,GAAAD,IAAA;EAAA,OAC9CC,4BAA4B,GAAG,MAAM,GAAG,KAAK;AAAA;AACrD,kBAAkBC,KAAA;EAAA,IAAC;IAAEC;EAA8C,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,2CAA2C,GAAGV,MAAM,CAACE,GAAG;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMS,iCAAiC,GAAGX,MAAM,CAACE,GAAG,CAACU,KAAK,CAC7DC,KAAA;EAAA,IAAC;IAAEC;EAAO,CAAC,GAAAD,KAAA;EAAA,OAAM;IACbE,KAAK,EAAE;MACHC,eAAe,EAAEF;IACrB;EACJ,CAAC;AAAA,CACL,CAAC;AACD;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMG,gCAAgC,GAAGjB,MAAM,CAACE,GAA0C;AACjG;AACA;AACA;AACA,aAAagB,KAAA;EAAA,IAAC;IAAEV;EAA6C,CAAC,GAAAU,KAAA;EAAA,OAAKV,KAAK,CAACC,IAAI;AAAA;AAC7E,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
shouldUseSiteColors,
|
|
15
|
+
shouldShowMoreOptions
|
|
16
|
+
} = _ref;
|
|
17
|
+
return /*#__PURE__*/React.createElement(StyledColorPickerPopup, null, /*#__PURE__*/React.createElement(ColorArea, null), /*#__PURE__*/React.createElement(Sliders, {
|
|
18
|
+
shouldShowTransparencySlider: shouldShowTransparencySlider
|
|
19
|
+
}), shouldShowPresetColors && /*#__PURE__*/React.createElement(PresetColors, {
|
|
20
|
+
presetColors: presetColors,
|
|
21
|
+
shouldUseSiteColors: shouldUseSiteColors,
|
|
22
|
+
onPresetColorAdd: onPresetColorAdd,
|
|
23
|
+
onPresetColorRemove: onPresetColorRemove
|
|
24
|
+
}), shouldShowMoreOptions && /*#__PURE__*/React.createElement(MoreOptions, null));
|
|
25
|
+
};
|
|
26
|
+
ColorPickerPopup.displayName = 'ColorPickerPopup';
|
|
27
|
+
export default ColorPickerPopup;
|
|
28
|
+
//# sourceMappingURL=ColorPickerPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerPopup.js","names":["React","ColorArea","StyledColorPickerPopup","MoreOptions","PresetColors","Sliders","ColorPickerPopup","_ref","presetColors","onPresetColorRemove","onPresetColorAdd","shouldShowPresetColors","shouldShowTransparencySlider","shouldUseSiteColors","shouldShowMoreOptions","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}\n\nconst ColorPickerPopup = ({\n presetColors,\n onPresetColorRemove,\n onPresetColorAdd,\n shouldShowPresetColors,\n shouldShowTransparencySlider,\n shouldUseSiteColors,\n shouldShowMoreOptions,\n}: ColorPickerPopupProps) => (\n <StyledColorPickerPopup>\n <ColorArea />\n <Sliders shouldShowTransparencySlider={shouldShowTransparencySlider} />\n {shouldShowPresetColors && (\n <PresetColors\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;AAYvC,MAAMC,gBAAgB,GAAGC,IAAA;EAAA,IAAC;IACtBC,YAAY;IACZC,mBAAmB;IACnBC,gBAAgB;IAChBC,sBAAsB;IACtBC,4BAA4B;IAC5BC,mBAAmB;IACnBC;EACmB,CAAC,GAAAP,IAAA;EAAA,oBACpBP,KAAA,CAAAe,aAAA,CAACb,sBAAsB,qBACnBF,KAAA,CAAAe,aAAA,CAACd,SAAS,MAAE,CAAC,eACbD,KAAA,CAAAe,aAAA,CAACV,OAAO;IAACO,4BAA4B,EAAEA;EAA6B,CAAE,CAAC,EACtED,sBAAsB,iBACnBX,KAAA,CAAAe,aAAA,CAACX,YAAY;IACTI,YAAY,EAAEA,YAAa;IAC3BK,mBAAmB,EAAEA,mBAAoB;IACzCH,gBAAgB,EAAEA,gBAAiB;IACnCD,mBAAmB,EAAEA;EAAoB,CAC5C,CACJ,EACAK,qBAAqB,iBAAId,KAAA,CAAAe,aAAA,CAACZ,WAAW,MAAE,CACpB,CAAC;AAAA,CAC5B;AAEDG,gBAAgB,CAACU,WAAW,GAAG,kBAAkB;AAEjD,eAAeV,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorPickerPopup.styles.js","names":["styled","StyledColorPickerPopup","div"],"sources":["../../../../src/components/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,GAAG;AAChD;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,237 @@
|
|
|
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 { setRefreshScrollEnabled } from 'chayns-api';
|
|
5
|
+
import { useDragControls, useMotionValue } from 'framer-motion';
|
|
6
|
+
import { extractRgbValues, getColorFromCoordinates, getCoordinatesFromColor, rgbToHsv } from '../../../utils/color';
|
|
7
|
+
import { ColorPickerContext } from '../../ColorPickerProvider';
|
|
8
|
+
const ColorArea = () => {
|
|
9
|
+
const {
|
|
10
|
+
selectedColor,
|
|
11
|
+
updateSelectedColor,
|
|
12
|
+
updateIsPresetColor,
|
|
13
|
+
isPresetColor,
|
|
14
|
+
shouldGetCoordinates,
|
|
15
|
+
canGetColorFromArea,
|
|
16
|
+
updateShouldGetCoordinates,
|
|
17
|
+
updateShouldCallOnSelect,
|
|
18
|
+
hueColor
|
|
19
|
+
} = useContext(ColorPickerContext);
|
|
20
|
+
const [opacity, setOpacity] = useState(1);
|
|
21
|
+
const [scale, setScale] = useState({
|
|
22
|
+
scaleX: 0,
|
|
23
|
+
scaleY: 0
|
|
24
|
+
});
|
|
25
|
+
const isPresetColorRef = useRef(false);
|
|
26
|
+
const shouldGetCoordinatesRef = useRef(false);
|
|
27
|
+
const canDrag = useRef(false);
|
|
28
|
+
const canvasRef = useRef(null);
|
|
29
|
+
const pseudoRef = useRef(null);
|
|
30
|
+
const dragControls = useDragControls();
|
|
31
|
+
const x = useMotionValue(0);
|
|
32
|
+
const y = useMotionValue(0);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
isPresetColorRef.current = isPresetColor ?? false;
|
|
35
|
+
}, [isPresetColor]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
shouldGetCoordinatesRef.current = shouldGetCoordinates ?? true;
|
|
38
|
+
}, [shouldGetCoordinates]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (selectedColor) {
|
|
41
|
+
const {
|
|
42
|
+
a
|
|
43
|
+
} = extractRgbValues(selectedColor);
|
|
44
|
+
setOpacity(a);
|
|
45
|
+
}
|
|
46
|
+
}, [selectedColor]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const canvas = canvasRef.current;
|
|
49
|
+
if (!canvas) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const rect = canvas.getBoundingClientRect();
|
|
53
|
+
const scaleX = canvas.width / rect.width;
|
|
54
|
+
const scaleY = canvas.height / rect.height;
|
|
55
|
+
setScale({
|
|
56
|
+
scaleX,
|
|
57
|
+
scaleY
|
|
58
|
+
});
|
|
59
|
+
}, []);
|
|
60
|
+
const setColor = useCallback(() => {
|
|
61
|
+
const xCord = x.get();
|
|
62
|
+
const yCord = y.get();
|
|
63
|
+
if (typeof updateSelectedColor === 'function') {
|
|
64
|
+
const color = getColorFromCoordinates({
|
|
65
|
+
coordinates: {
|
|
66
|
+
x: xCord,
|
|
67
|
+
y: yCord
|
|
68
|
+
},
|
|
69
|
+
canvas: canvasRef,
|
|
70
|
+
opacity,
|
|
71
|
+
scale
|
|
72
|
+
});
|
|
73
|
+
if (color === 'transparent') {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
updateSelectedColor(color);
|
|
77
|
+
}
|
|
78
|
+
}, [opacity, scale, updateSelectedColor, x, y]);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
const ctx = canvasRef.current?.getContext('2d');
|
|
81
|
+
if (!ctx) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const hsv = rgbToHsv(hueColor);
|
|
85
|
+
const hex = hsvToHex({
|
|
86
|
+
h: hsv?.h ?? 1,
|
|
87
|
+
s: 1,
|
|
88
|
+
v: 1
|
|
89
|
+
});
|
|
90
|
+
const colorGradiant = ctx.createLinearGradient(0, 0, 300, 0);
|
|
91
|
+
colorGradiant.addColorStop(0, '#fff');
|
|
92
|
+
colorGradiant.addColorStop(1, hex ?? 'red');
|
|
93
|
+
ctx.fillStyle = colorGradiant;
|
|
94
|
+
ctx.fillRect(0, 0, 300, 150);
|
|
95
|
+
const transparentGradiant = ctx.createLinearGradient(0, 0, 0, 150);
|
|
96
|
+
transparentGradiant.addColorStop(0, 'transparent');
|
|
97
|
+
transparentGradiant.addColorStop(1, '#000');
|
|
98
|
+
ctx.fillStyle = transparentGradiant;
|
|
99
|
+
ctx.fillRect(0, 0, 300, 150);
|
|
100
|
+
if (isPresetColorRef.current) {
|
|
101
|
+
if (typeof updateIsPresetColor === 'function') {
|
|
102
|
+
updateIsPresetColor(false);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (canGetColorFromArea) {
|
|
107
|
+
setColor();
|
|
108
|
+
}
|
|
109
|
+
}, [canGetColorFromArea, hueColor, setColor, updateIsPresetColor]);
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
if (selectedColor && shouldGetCoordinatesRef.current) {
|
|
112
|
+
const cords = getCoordinatesFromColor({
|
|
113
|
+
color: selectedColor,
|
|
114
|
+
canvas: canvasRef,
|
|
115
|
+
tolerance: 10
|
|
116
|
+
});
|
|
117
|
+
if (cords) {
|
|
118
|
+
x.set(cords.x);
|
|
119
|
+
y.set(cords.y);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, [selectedColor, x, y]);
|
|
123
|
+
const handleDrag = useCallback(() => {
|
|
124
|
+
setColor();
|
|
125
|
+
}, [setColor]);
|
|
126
|
+
const handleClick = useCallback(event => {
|
|
127
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
128
|
+
updateShouldGetCoordinates(false);
|
|
129
|
+
}
|
|
130
|
+
const {
|
|
131
|
+
left,
|
|
132
|
+
top
|
|
133
|
+
} = event.target.getBoundingClientRect();
|
|
134
|
+
x.set(event.clientX - left - 10);
|
|
135
|
+
y.set(event.clientY - top - 10);
|
|
136
|
+
setColor();
|
|
137
|
+
}, [setColor, updateShouldGetCoordinates, x, y]);
|
|
138
|
+
const handlePointerUp = useCallback(() => {
|
|
139
|
+
canDrag.current = false;
|
|
140
|
+
void setRefreshScrollEnabled(true);
|
|
141
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
142
|
+
updateShouldGetCoordinates(true);
|
|
143
|
+
}
|
|
144
|
+
if (typeof updateShouldCallOnSelect === 'function') {
|
|
145
|
+
updateShouldCallOnSelect(true);
|
|
146
|
+
}
|
|
147
|
+
}, [updateShouldCallOnSelect, updateShouldGetCoordinates]);
|
|
148
|
+
const move = useCallback((xCords, yCords) => {
|
|
149
|
+
let newXCords = xCords;
|
|
150
|
+
let newYCords = yCords;
|
|
151
|
+
switch (true) {
|
|
152
|
+
case xCords > 300:
|
|
153
|
+
newXCords = 300;
|
|
154
|
+
break;
|
|
155
|
+
case xCords < 0:
|
|
156
|
+
newXCords = 0;
|
|
157
|
+
break;
|
|
158
|
+
default:
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
switch (true) {
|
|
162
|
+
case yCords > 150:
|
|
163
|
+
newYCords = 150;
|
|
164
|
+
break;
|
|
165
|
+
case yCords < 0:
|
|
166
|
+
newYCords = 0;
|
|
167
|
+
break;
|
|
168
|
+
default:
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
x.set(newXCords);
|
|
172
|
+
y.set(newYCords);
|
|
173
|
+
setColor();
|
|
174
|
+
}, [setColor, x, y]);
|
|
175
|
+
const handleMouseMove = useCallback(event => {
|
|
176
|
+
if (canDrag.current && pseudoRef.current) {
|
|
177
|
+
const {
|
|
178
|
+
left,
|
|
179
|
+
top
|
|
180
|
+
} = pseudoRef.current.getBoundingClientRect();
|
|
181
|
+
const xCords = event.clientX - left - 10;
|
|
182
|
+
const yCords = event.clientY - top - 10;
|
|
183
|
+
move(xCords, yCords);
|
|
184
|
+
}
|
|
185
|
+
}, [move]);
|
|
186
|
+
const handleTouchMove = useCallback(event => {
|
|
187
|
+
if (canDrag.current && pseudoRef.current) {
|
|
188
|
+
event.preventDefault();
|
|
189
|
+
void setRefreshScrollEnabled(false);
|
|
190
|
+
const {
|
|
191
|
+
left,
|
|
192
|
+
top
|
|
193
|
+
} = pseudoRef.current.getBoundingClientRect();
|
|
194
|
+
const xCords = event.changedTouches[0] ? event.changedTouches[0].clientX - left - 10 : event.pageX;
|
|
195
|
+
const yCords = event.changedTouches[0] ? event.changedTouches[0].clientY - top - 10 : event.pageY;
|
|
196
|
+
move(xCords, yCords);
|
|
197
|
+
}
|
|
198
|
+
}, [move]);
|
|
199
|
+
const handleStartDrag = useCallback(() => {
|
|
200
|
+
if (typeof updateShouldGetCoordinates === 'function') {
|
|
201
|
+
updateShouldGetCoordinates(false);
|
|
202
|
+
}
|
|
203
|
+
canDrag.current = true;
|
|
204
|
+
window.addEventListener('mousemove', handleMouseMove);
|
|
205
|
+
window.addEventListener('touchmove', handleTouchMove);
|
|
206
|
+
const endTouching = () => {
|
|
207
|
+
handlePointerUp();
|
|
208
|
+
window.removeEventListener('mousemove', handleMouseMove);
|
|
209
|
+
window.removeEventListener('touchmove', handleTouchMove);
|
|
210
|
+
window.removeEventListener('pointerup', endTouching);
|
|
211
|
+
window.removeEventListener('touchend', endTouching);
|
|
212
|
+
};
|
|
213
|
+
window.addEventListener('pointerup', endTouching);
|
|
214
|
+
window.addEventListener('touchend', endTouching);
|
|
215
|
+
}, [handleMouseMove, handlePointerUp, handleTouchMove, updateShouldGetCoordinates]);
|
|
216
|
+
return useMemo(() => /*#__PURE__*/React.createElement(StyledColorArea, null, /*#__PURE__*/React.createElement(StyledColorAreaCanvas, {
|
|
217
|
+
ref: canvasRef
|
|
218
|
+
}), /*#__PURE__*/React.createElement(StyledColorAreaPseudo, {
|
|
219
|
+
ref: pseudoRef,
|
|
220
|
+
onPointerDown: handleStartDrag,
|
|
221
|
+
onClick: handleClick
|
|
222
|
+
}, /*#__PURE__*/React.createElement(StyledMotionColorAreaPointer, {
|
|
223
|
+
drag: true,
|
|
224
|
+
dragConstraints: pseudoRef,
|
|
225
|
+
style: {
|
|
226
|
+
x,
|
|
227
|
+
y
|
|
228
|
+
},
|
|
229
|
+
dragElastic: false,
|
|
230
|
+
dragMomentum: false,
|
|
231
|
+
dragControls: dragControls,
|
|
232
|
+
onDrag: handleDrag
|
|
233
|
+
}))), [dragControls, handleClick, handleDrag, handleStartDrag, x, y]);
|
|
234
|
+
};
|
|
235
|
+
ColorArea.displayName = 'ColorArea';
|
|
236
|
+
export default ColorArea;
|
|
237
|
+
//# sourceMappingURL=ColorArea.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
export const StyledColorArea = styled.div`
|
|
4
|
+
height: 150px;
|
|
5
|
+
width: 300px;
|
|
6
|
+
position: relative;
|
|
7
|
+
user-select: none;
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
cursor: crosshair;
|
|
10
|
+
`;
|
|
11
|
+
export const StyledColorAreaCanvas = styled.canvas`
|
|
12
|
+
user-select: none;
|
|
13
|
+
`;
|
|
14
|
+
export const StyledColorAreaPseudo = styled.div`
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: -10px;
|
|
17
|
+
left: -10px;
|
|
18
|
+
touch-action: none;
|
|
19
|
+
user-select: none;
|
|
20
|
+
|
|
21
|
+
height: 170px;
|
|
22
|
+
width: 320px;
|
|
23
|
+
`;
|
|
24
|
+
export const StyledMotionColorAreaPointer = styled(motion.div)`
|
|
25
|
+
position: absolute;
|
|
26
|
+
border-radius: 100%;
|
|
27
|
+
border: 2px solid white;
|
|
28
|
+
width: 20px;
|
|
29
|
+
height: 20px;
|
|
30
|
+
box-shadow:
|
|
31
|
+
0 0 5px 0 rgba(0, 0, 0, 0.5),
|
|
32
|
+
0 0 3px 0 rgba(0, 0, 0, 0.5) inset;
|
|
33
|
+
pointer-events: none;
|
|
34
|
+
user-select: none;
|
|
35
|
+
top: 0;
|
|
36
|
+
left: 0;
|
|
37
|
+
`;
|
|
38
|
+
//# sourceMappingURL=ColorArea.styles.js.map
|
|
@@ -0,0 +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 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledColorArea = styled.div`\n height: 150px;\n width: 300px;\n position: relative;\n user-select: none;\n overflow: hidden;\n cursor: crosshair;\n`;\n\nexport const StyledColorAreaCanvas = styled.canvas`\n user-select: none;\n`;\n\nexport const StyledColorAreaPseudo = styled.div`\n position: absolute;\n top: -10px;\n left: -10px;\n touch-action: none;\n user-select: none;\n\n height: 170px;\n width: 320px;\n`;\n\nexport const StyledMotionColorAreaPointer = styled(motion.div)`\n position: absolute;\n border-radius: 100%;\n border: 2px solid white;\n width: 20px;\n height: 20px;\n box-shadow:\n 0 0 5px 0 rgba(0, 0, 0, 0.5),\n 0 0 3px 0 rgba(0, 0, 0, 0.5) inset;\n pointer-events: none;\n user-select: none;\n top: 0;\n left: 0;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,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":[]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Accordion, AccordionGroup, AreaContext } from '@chayns-components/core';
|
|
2
|
+
import { isHex } from '@chayns/colors';
|
|
3
|
+
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
|
4
|
+
import { extractRgbValues, hexToRgb, isValidRGBA, rgbToHex } from '../../../utils/color';
|
|
5
|
+
import { ColorPickerContext } from '../../ColorPickerProvider';
|
|
6
|
+
import { StyledMoreOptions, StyledMoreOptionsInput, StyledMoreOptionsInputWrapper } from './MoreOptions.styles';
|
|
7
|
+
const MoreOptions = () => {
|
|
8
|
+
const {
|
|
9
|
+
selectedColor,
|
|
10
|
+
updateSelectedColor,
|
|
11
|
+
updateShouldCallOnSelect
|
|
12
|
+
} = useContext(ColorPickerContext);
|
|
13
|
+
const areaProvider = useContext(AreaContext);
|
|
14
|
+
const [tmpHexValue, setTmpHexValue] = useState('');
|
|
15
|
+
const [tmpRgbValue, setTmpRgbValue] = useState('');
|
|
16
|
+
const [isHexInvalid, setIsHexInvalid] = useState(false);
|
|
17
|
+
const [isRgbInvalid, setIsRgbInvalid] = useState(false);
|
|
18
|
+
const shouldChangeColor = useMemo(() => areaProvider.shouldChangeColor ?? false, [areaProvider.shouldChangeColor]);
|
|
19
|
+
const handleHexChange = event => {
|
|
20
|
+
setTmpHexValue(event.target.value);
|
|
21
|
+
const isValid = isHex(event.target.value);
|
|
22
|
+
setIsHexInvalid(!isValid);
|
|
23
|
+
if (typeof updateSelectedColor === 'function' && isValid) {
|
|
24
|
+
const {
|
|
25
|
+
r,
|
|
26
|
+
g,
|
|
27
|
+
b,
|
|
28
|
+
a
|
|
29
|
+
} = hexToRgb(event.target.value);
|
|
30
|
+
updateSelectedColor(`rgba(${r},${g},${b},${a})`);
|
|
31
|
+
}
|
|
32
|
+
if (typeof updateShouldCallOnSelect === 'function' && isValid) {
|
|
33
|
+
updateShouldCallOnSelect(true);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const handleRgbChange = event => {
|
|
37
|
+
setTmpRgbValue(event.target.value);
|
|
38
|
+
const isValid = isValidRGBA(event.target.value);
|
|
39
|
+
setIsRgbInvalid(!isValid);
|
|
40
|
+
if (typeof updateSelectedColor === 'function' && isValid) {
|
|
41
|
+
updateSelectedColor(event.target.value);
|
|
42
|
+
}
|
|
43
|
+
if (typeof updateShouldCallOnSelect === 'function' && isValid) {
|
|
44
|
+
updateShouldCallOnSelect(true);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (selectedColor) {
|
|
49
|
+
if (isValidRGBA(selectedColor)) {
|
|
50
|
+
setTmpRgbValue(selectedColor);
|
|
51
|
+
setTmpHexValue(rgbToHex(extractRgbValues(selectedColor ?? '')));
|
|
52
|
+
} else {
|
|
53
|
+
const {
|
|
54
|
+
r,
|
|
55
|
+
g,
|
|
56
|
+
b,
|
|
57
|
+
a
|
|
58
|
+
} = hexToRgb(selectedColor);
|
|
59
|
+
setTmpRgbValue(`rgba(${r},${g},${b},${a})`);
|
|
60
|
+
setTmpHexValue(selectedColor);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, [selectedColor]);
|
|
64
|
+
return /*#__PURE__*/React.createElement(StyledMoreOptions, null, /*#__PURE__*/React.createElement(AccordionGroup, {
|
|
65
|
+
isWrapped: true
|
|
66
|
+
}, /*#__PURE__*/React.createElement(Accordion, {
|
|
67
|
+
title: "Erweitert"
|
|
68
|
+
}, /*#__PURE__*/React.createElement(StyledMoreOptionsInputWrapper, null, /*#__PURE__*/React.createElement(StyledMoreOptionsInput, {
|
|
69
|
+
$shouldChangeColor: shouldChangeColor,
|
|
70
|
+
value: tmpHexValue,
|
|
71
|
+
onChange: handleHexChange,
|
|
72
|
+
$isInvalid: isHexInvalid
|
|
73
|
+
}), /*#__PURE__*/React.createElement(StyledMoreOptionsInput, {
|
|
74
|
+
$shouldChangeColor: shouldChangeColor,
|
|
75
|
+
value: tmpRgbValue,
|
|
76
|
+
onChange: handleRgbChange,
|
|
77
|
+
$isInvalid: isRgbInvalid
|
|
78
|
+
})))));
|
|
79
|
+
};
|
|
80
|
+
MoreOptions.displayName = 'MoreOptions';
|
|
81
|
+
export default MoreOptions;
|
|
82
|
+
//# sourceMappingURL=MoreOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoreOptions.js","names":["Accordion","AccordionGroup","AreaContext","isHex","React","useContext","useEffect","useMemo","useState","extractRgbValues","hexToRgb","isValidRGBA","rgbToHex","ColorPickerContext","StyledMoreOptions","StyledMoreOptionsInput","StyledMoreOptionsInputWrapper","MoreOptions","selectedColor","updateSelectedColor","updateShouldCallOnSelect","areaProvider","tmpHexValue","setTmpHexValue","tmpRgbValue","setTmpRgbValue","isHexInvalid","setIsHexInvalid","isRgbInvalid","setIsRgbInvalid","shouldChangeColor","handleHexChange","event","target","value","isValid","r","g","b","a","handleRgbChange","createElement","isWrapped","title","$shouldChangeColor","onChange","$isInvalid","displayName"],"sources":["../../../../../src/components/color-picker-popup/more-options/MoreOptions.tsx"],"sourcesContent":["import { Accordion, AccordionGroup, AreaContext } from '@chayns-components/core';\nimport { isHex } from '@chayns/colors';\nimport React, { useContext, useEffect, useMemo, useState, type ChangeEvent } from 'react';\n\nimport { extractRgbValues, hexToRgb, isValidRGBA, rgbToHex } from '../../../utils/color';\nimport { ColorPickerContext } from '../../ColorPickerProvider';\nimport {\n StyledMoreOptions,\n StyledMoreOptionsInput,\n StyledMoreOptionsInputWrapper,\n} from './MoreOptions.styles';\n\nconst MoreOptions = () => {\n const { selectedColor, updateSelectedColor, updateShouldCallOnSelect } =\n useContext(ColorPickerContext);\n const areaProvider = useContext(AreaContext);\n\n const [tmpHexValue, setTmpHexValue] = useState('');\n const [tmpRgbValue, setTmpRgbValue] = useState('');\n const [isHexInvalid, setIsHexInvalid] = useState(false);\n const [isRgbInvalid, setIsRgbInvalid] = useState(false);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const handleHexChange = (event: ChangeEvent<HTMLInputElement>) => {\n setTmpHexValue(event.target.value);\n\n const isValid = isHex(event.target.value);\n\n setIsHexInvalid(!isValid);\n\n if (typeof updateSelectedColor === 'function' && isValid) {\n const { r, g, b, a } = hexToRgb(event.target.value);\n\n updateSelectedColor(`rgba(${r},${g},${b},${a})`);\n }\n\n if (typeof updateShouldCallOnSelect === 'function' && isValid) {\n updateShouldCallOnSelect(true);\n }\n };\n\n const handleRgbChange = (event: ChangeEvent<HTMLInputElement>) => {\n setTmpRgbValue(event.target.value);\n\n const isValid = isValidRGBA(event.target.value);\n\n setIsRgbInvalid(!isValid);\n\n if (typeof updateSelectedColor === 'function' && isValid) {\n updateSelectedColor(event.target.value);\n }\n\n if (typeof updateShouldCallOnSelect === 'function' && isValid) {\n updateShouldCallOnSelect(true);\n }\n };\n\n useEffect(() => {\n if (selectedColor) {\n if (isValidRGBA(selectedColor)) {\n setTmpRgbValue(selectedColor);\n setTmpHexValue(rgbToHex(extractRgbValues(selectedColor ?? '')));\n } else {\n const { r, g, b, a } = hexToRgb(selectedColor);\n\n setTmpRgbValue(`rgba(${r},${g},${b},${a})`);\n setTmpHexValue(selectedColor);\n }\n }\n }, [selectedColor]);\n\n return (\n <StyledMoreOptions>\n <AccordionGroup isWrapped>\n <Accordion title=\"Erweitert\">\n <StyledMoreOptionsInputWrapper>\n <StyledMoreOptionsInput\n $shouldChangeColor={shouldChangeColor}\n value={tmpHexValue}\n onChange={handleHexChange}\n $isInvalid={isHexInvalid}\n />\n <StyledMoreOptionsInput\n $shouldChangeColor={shouldChangeColor}\n value={tmpRgbValue}\n onChange={handleRgbChange}\n $isInvalid={isRgbInvalid}\n />\n </StyledMoreOptionsInputWrapper>\n </Accordion>\n </AccordionGroup>\n </StyledMoreOptions>\n );\n};\n\nMoreOptions.displayName = 'MoreOptions';\n\nexport default MoreOptions;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
export const StyledMoreOptions = styled.div``;
|
|
3
|
+
export const StyledMoreOptionsInputWrapper = styled.div`
|
|
4
|
+
display: flex;
|
|
5
|
+
justify-content: space-between;
|
|
6
|
+
gap: 8px;
|
|
7
|
+
align-items: center;
|
|
8
|
+
`;
|
|
9
|
+
export const StyledMoreOptionsInput = styled.input`
|
|
10
|
+
width: 100%;
|
|
11
|
+
border-radius: 3px;
|
|
12
|
+
border: 1px solid
|
|
13
|
+
${_ref => {
|
|
14
|
+
let {
|
|
15
|
+
theme,
|
|
16
|
+
$isInvalid
|
|
17
|
+
} = _ref;
|
|
18
|
+
return $isInvalid ? theme.wrong : 'rgba(160, 160, 160, 0.3)';
|
|
19
|
+
}};
|
|
20
|
+
background-color: ${_ref2 => {
|
|
21
|
+
let {
|
|
22
|
+
theme,
|
|
23
|
+
$shouldChangeColor
|
|
24
|
+
} = _ref2;
|
|
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
|
+
}};
|
|
34
|
+
padding: 8px 10px;
|
|
35
|
+
font-size: 11px;
|
|
36
|
+
`;
|
|
37
|
+
//# sourceMappingURL=MoreOptions.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoreOptions.styles.js","names":["styled","StyledMoreOptions","div","StyledMoreOptionsInputWrapper","StyledMoreOptionsInput","input","_ref","theme","$isInvalid","wrong","_ref2","$shouldChangeColor","colorMode","_ref3","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,UAAUC,IAAA;EAAA,IAAC;IAAEC,KAAK;IAAEC;EAAwC,CAAC,GAAAF,IAAA;EAAA,OACjDE,UAAU,GAAGD,KAAK,CAACE,KAAK,GAAG,0BAA0B;AAAA;AACjE,wBAAwBC,KAAA;EAAA,IAAC;IAAEH,KAAK;IAAEI;EAAgD,CAAC,GAAAD,KAAA;EAAA,OAC3EH,KAAK,CAACK,SAAS,KAAK,SAAS,IAAID,kBAAkB,GAAGJ,KAAK,CAAC,KAAK,CAAC,GAAGA,KAAK,CAAC,KAAK,CAAC;AAAA;AACzF,aAAaM,KAAA;EAAA,IAAC;IAAEN,KAAK;IAAEC;EAAwC,CAAC,GAAAK,KAAA;EAAA,OACxDL,UAAU,GAAGD,KAAK,CAACE,KAAK,GAAGF,KAAK,CAACO,IAAI;AAAA;AAC7C;AACA;AACA,CAAC","ignoreList":[]}
|