@douyinfe/semi-foundation 2.63.0 → 2.64.0-beta.0
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/calendar/foundation.ts +20 -0
- package/chat/foundation.ts +18 -23
- package/colorPicker/AlphaSliderFoundation.ts +62 -0
- package/colorPicker/ColorChooseAreaFoundation.ts +86 -0
- package/colorPicker/ColorSliderFoundation.ts +61 -0
- package/colorPicker/DataPartFoundation.ts +113 -0
- package/colorPicker/colorPicker.scss +113 -0
- package/colorPicker/constants.ts +11 -0
- package/colorPicker/foundation.ts +206 -0
- package/colorPicker/interface.ts +51 -0
- package/colorPicker/utils/convert.ts +228 -0
- package/colorPicker/utils/round.ts +3 -0
- package/colorPicker/utils/split.ts +40 -0
- package/colorPicker/variables.scss +28 -0
- package/datePicker/foundation.ts +1 -1
- package/image/image.scss +6 -1
- package/image/previewImageFoundation.ts +233 -150
- package/image/previewInnerFoundation.ts +11 -6
- package/lib/cjs/calendar/foundation.js +18 -0
- package/lib/cjs/chat/foundation.d.ts +1 -2
- package/lib/cjs/chat/foundation.js +2 -7
- package/lib/cjs/colorPicker/AlphaSliderFoundation.d.ts +27 -0
- package/lib/cjs/colorPicker/AlphaSliderFoundation.js +40 -0
- package/lib/cjs/colorPicker/ColorChooseAreaFoundation.d.ts +42 -0
- package/lib/cjs/colorPicker/ColorChooseAreaFoundation.js +62 -0
- package/lib/cjs/colorPicker/ColorSliderFoundation.d.ts +26 -0
- package/lib/cjs/colorPicker/ColorSliderFoundation.js +40 -0
- package/lib/cjs/colorPicker/DataPartFoundation.d.ts +28 -0
- package/lib/cjs/colorPicker/DataPartFoundation.js +115 -0
- package/lib/cjs/colorPicker/colorPicker.css +84 -0
- package/lib/cjs/colorPicker/colorPicker.scss +113 -0
- package/lib/cjs/colorPicker/constants.d.ts +4 -0
- package/lib/cjs/colorPicker/constants.js +11 -0
- package/lib/cjs/colorPicker/foundation.d.ts +66 -0
- package/lib/cjs/colorPicker/foundation.js +150 -0
- package/lib/cjs/colorPicker/interface.d.ts +40 -0
- package/lib/cjs/colorPicker/interface.js +5 -0
- package/lib/cjs/colorPicker/utils/convert.d.ts +28 -0
- package/lib/cjs/colorPicker/utils/convert.js +306 -0
- package/lib/cjs/colorPicker/utils/round.d.ts +1 -0
- package/lib/cjs/colorPicker/utils/round.js +12 -0
- package/lib/cjs/colorPicker/utils/split.d.ts +18 -0
- package/lib/cjs/colorPicker/utils/split.js +40 -0
- package/lib/cjs/colorPicker/variables.scss +28 -0
- package/lib/cjs/datePicker/foundation.js +1 -1
- package/lib/cjs/image/image.css +5 -1
- package/lib/cjs/image/image.scss +6 -1
- package/lib/cjs/image/previewImageFoundation.d.ts +46 -13
- package/lib/cjs/image/previewImageFoundation.js +207 -181
- package/lib/cjs/image/previewInnerFoundation.d.ts +4 -3
- package/lib/cjs/image/previewInnerFoundation.js +5 -2
- package/lib/cjs/upload/foundation.d.ts +1 -0
- package/lib/cjs/upload/foundation.js +30 -14
- package/lib/es/calendar/foundation.js +18 -0
- package/lib/es/chat/foundation.d.ts +1 -2
- package/lib/es/chat/foundation.js +2 -7
- package/lib/es/colorPicker/AlphaSliderFoundation.d.ts +27 -0
- package/lib/es/colorPicker/AlphaSliderFoundation.js +33 -0
- package/lib/es/colorPicker/ColorChooseAreaFoundation.d.ts +42 -0
- package/lib/es/colorPicker/ColorChooseAreaFoundation.js +55 -0
- package/lib/es/colorPicker/ColorSliderFoundation.d.ts +26 -0
- package/lib/es/colorPicker/ColorSliderFoundation.js +33 -0
- package/lib/es/colorPicker/DataPartFoundation.d.ts +28 -0
- package/lib/es/colorPicker/DataPartFoundation.js +108 -0
- package/lib/es/colorPicker/colorPicker.css +84 -0
- package/lib/es/colorPicker/colorPicker.scss +113 -0
- package/lib/es/colorPicker/constants.d.ts +4 -0
- package/lib/es/colorPicker/constants.js +6 -0
- package/lib/es/colorPicker/foundation.d.ts +66 -0
- package/lib/es/colorPicker/foundation.js +143 -0
- package/lib/es/colorPicker/interface.d.ts +40 -0
- package/lib/es/colorPicker/interface.js +1 -0
- package/lib/es/colorPicker/utils/convert.d.ts +28 -0
- package/lib/es/colorPicker/utils/convert.js +277 -0
- package/lib/es/colorPicker/utils/round.d.ts +1 -0
- package/lib/es/colorPicker/utils/round.js +5 -0
- package/lib/es/colorPicker/utils/split.d.ts +18 -0
- package/lib/es/colorPicker/utils/split.js +34 -0
- package/lib/es/colorPicker/variables.scss +28 -0
- package/lib/es/datePicker/foundation.js +1 -1
- package/lib/es/image/image.css +5 -1
- package/lib/es/image/image.scss +6 -1
- package/lib/es/image/previewImageFoundation.d.ts +46 -13
- package/lib/es/image/previewImageFoundation.js +207 -181
- package/lib/es/image/previewInnerFoundation.d.ts +4 -3
- package/lib/es/image/previewInnerFoundation.js +5 -2
- package/lib/es/upload/foundation.d.ts +1 -0
- package/lib/es/upload/foundation.js +30 -14
- package/package.json +3 -3
- package/upload/foundation.ts +19 -3
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import BaseFoundation, { DefaultAdapter } from "../base/foundation";
|
|
2
|
+
import ColorPickerFoundation from "./foundation";
|
|
3
|
+
import { HsvaColor } from "./interface";
|
|
4
|
+
export interface ColorChooseAreaBaseProps {
|
|
5
|
+
hsva: HsvaColor;
|
|
6
|
+
onChange: (newColor: {
|
|
7
|
+
s: number;
|
|
8
|
+
v: number;
|
|
9
|
+
}) => void;
|
|
10
|
+
handleSize: number;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
foundation: ColorPickerFoundation;
|
|
14
|
+
}
|
|
15
|
+
export interface ColorChooseAreaBaseState {
|
|
16
|
+
handlePosition: {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
};
|
|
20
|
+
isHandleGrabbing: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface ColorChooseAreaAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
23
|
+
getColorPickerFoundation: () => ColorPickerFoundation;
|
|
24
|
+
handleMouseDown: (e: any) => void;
|
|
25
|
+
handleMouseUp: (e: any) => void;
|
|
26
|
+
getDOM: () => HTMLDivElement;
|
|
27
|
+
notifyChange: (newColor: {
|
|
28
|
+
s: number;
|
|
29
|
+
v: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
}
|
|
32
|
+
declare class ColorChooseAreaFoundation extends BaseFoundation<ColorChooseAreaAdapter<ColorChooseAreaBaseProps, ColorChooseAreaBaseState>, ColorChooseAreaBaseProps, ColorChooseAreaBaseState> {
|
|
33
|
+
constructor(adapter: ColorChooseAreaAdapter<ColorChooseAreaBaseProps, ColorChooseAreaBaseState>);
|
|
34
|
+
getHandlePositionByHSVA: () => {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
};
|
|
38
|
+
handleMouseDown: (e: any) => void;
|
|
39
|
+
handleMouseUp: (e: any) => void;
|
|
40
|
+
setHandlePositionByMousePosition: (e: globalThis.MouseEvent) => void;
|
|
41
|
+
}
|
|
42
|
+
export default ColorChooseAreaFoundation;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _foundation = _interopRequireDefault(require("../base/foundation"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
class ColorChooseAreaFoundation extends _foundation.default {
|
|
10
|
+
constructor(adapter) {
|
|
11
|
+
super(Object.assign({}, adapter));
|
|
12
|
+
this.getHandlePositionByHSVA = () => {
|
|
13
|
+
const {
|
|
14
|
+
hsva,
|
|
15
|
+
width,
|
|
16
|
+
height,
|
|
17
|
+
handleSize
|
|
18
|
+
} = this.getProps();
|
|
19
|
+
return this._adapter.getColorPickerFoundation().getHandlePositionByHSVA(hsva, {
|
|
20
|
+
width: width,
|
|
21
|
+
height: height
|
|
22
|
+
}, handleSize);
|
|
23
|
+
};
|
|
24
|
+
this.handleMouseDown = e => {
|
|
25
|
+
this._adapter.handleMouseDown(e);
|
|
26
|
+
};
|
|
27
|
+
this.handleMouseUp = e => {
|
|
28
|
+
this._adapter.handleMouseUp(e);
|
|
29
|
+
};
|
|
30
|
+
this.setHandlePositionByMousePosition = e => {
|
|
31
|
+
var _a;
|
|
32
|
+
const rect = (_a = this._adapter.getDOM()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
33
|
+
if (!rect) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const mousePosition = {
|
|
37
|
+
x: e.clientX - rect.x,
|
|
38
|
+
y: e.clientY - rect.y
|
|
39
|
+
};
|
|
40
|
+
const {
|
|
41
|
+
width,
|
|
42
|
+
height,
|
|
43
|
+
handleSize
|
|
44
|
+
} = this.getProps();
|
|
45
|
+
const colorPickerFoundation = this._adapter.getColorPickerFoundation();
|
|
46
|
+
const handlePosition = colorPickerFoundation.getHandlePositionByMousePosition(mousePosition, {
|
|
47
|
+
width,
|
|
48
|
+
height
|
|
49
|
+
}, handleSize);
|
|
50
|
+
if (handlePosition) {
|
|
51
|
+
this.setState({
|
|
52
|
+
handlePosition
|
|
53
|
+
});
|
|
54
|
+
this._adapter.notifyChange({
|
|
55
|
+
s: Math.round(mousePosition.x / width * 100),
|
|
56
|
+
v: Math.round(100 - Math.min(Math.max(mousePosition.y / height, 0), 1) * 100)
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
var _default = exports.default = ColorChooseAreaFoundation;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import BaseFoundation, { DefaultAdapter } from "../base/foundation";
|
|
2
|
+
import ColorPickerFoundation from "./foundation";
|
|
3
|
+
export interface ColorSliderBaseProps {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
hue: number;
|
|
7
|
+
handleSize: number;
|
|
8
|
+
foundation: ColorPickerFoundation;
|
|
9
|
+
}
|
|
10
|
+
export interface ColorSliderBaseState {
|
|
11
|
+
handlePosition: number;
|
|
12
|
+
isHandleGrabbing: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ColorSliderAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
15
|
+
handleMouseDown: (e: any) => void;
|
|
16
|
+
handleMouseUp: (e: any) => void;
|
|
17
|
+
getColorPickerFoundation: () => ColorPickerFoundation;
|
|
18
|
+
getDOM: () => HTMLDivElement;
|
|
19
|
+
}
|
|
20
|
+
declare class ColorSliderFoundation extends BaseFoundation<ColorSliderAdapter<ColorSliderBaseProps, ColorSliderBaseState>, ColorSliderBaseProps, ColorSliderBaseState> {
|
|
21
|
+
constructor(adapter: ColorSliderAdapter<ColorSliderBaseProps, ColorSliderBaseState>);
|
|
22
|
+
handleMouseDown: (e: any) => void;
|
|
23
|
+
handleMouseUp: (e: any) => void;
|
|
24
|
+
setHandlePositionByMousePosition: (e: MouseEvent) => void;
|
|
25
|
+
}
|
|
26
|
+
export default ColorSliderFoundation;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _foundation = _interopRequireDefault(require("../base/foundation"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
class ColorSliderFoundation extends _foundation.default {
|
|
10
|
+
constructor(adapter) {
|
|
11
|
+
super(Object.assign({}, adapter));
|
|
12
|
+
this.handleMouseDown = e => {
|
|
13
|
+
this._adapter.handleMouseDown(e);
|
|
14
|
+
};
|
|
15
|
+
this.handleMouseUp = e => {
|
|
16
|
+
this._adapter.handleMouseUp(e);
|
|
17
|
+
};
|
|
18
|
+
this.setHandlePositionByMousePosition = e => {
|
|
19
|
+
var _a;
|
|
20
|
+
const rect = (_a = this._adapter.getDOM()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
21
|
+
if (!rect) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const {
|
|
25
|
+
width,
|
|
26
|
+
handleSize
|
|
27
|
+
} = this._adapter.getProps();
|
|
28
|
+
const colorPickerFoundation = this._adapter.getColorPickerFoundation();
|
|
29
|
+
const mousePosition = e.clientX - rect.x;
|
|
30
|
+
colorPickerFoundation.handleColorChangeByHandle({
|
|
31
|
+
h: Math.round(Math.min(Math.max(mousePosition / width, 0), 1) * 360)
|
|
32
|
+
});
|
|
33
|
+
const handlePosition = colorPickerFoundation.getColorHandlePositionByMousePosition(mousePosition, width, handleSize);
|
|
34
|
+
this.setState({
|
|
35
|
+
handlePosition
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
var _default = exports.default = ColorSliderFoundation;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import BaseFoundation, { DefaultAdapter } from "../base/foundation";
|
|
2
|
+
import ColorPickerFoundation, { ColorPickerProps } from "./foundation";
|
|
3
|
+
import { HsvaColor, RgbaColor } from "./interface";
|
|
4
|
+
type Value = ColorPickerProps['value'];
|
|
5
|
+
export interface DataPartBaseProps {
|
|
6
|
+
currentColor: Value;
|
|
7
|
+
defaultFormat: 'hex' | 'rgba' | 'hsva';
|
|
8
|
+
width: number;
|
|
9
|
+
alpha?: boolean;
|
|
10
|
+
foundation: ColorPickerFoundation;
|
|
11
|
+
eyeDropper: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface DataPartBaseState {
|
|
14
|
+
format: 'hex' | 'rgba' | 'hsva';
|
|
15
|
+
inputValue: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DataPartAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
18
|
+
getColorPickerFoundation: () => ColorPickerFoundation;
|
|
19
|
+
}
|
|
20
|
+
declare class DataPartFoundation extends BaseFoundation<DataPartAdapter<DataPartBaseProps, DataPartBaseState>, DataPartBaseProps, DataPartBaseState> {
|
|
21
|
+
constructor(adapter: DataPartAdapter<DataPartBaseProps, DataPartBaseState>);
|
|
22
|
+
getInputValue: () => string;
|
|
23
|
+
getValueByInputValue: (value: string) => string | false | HsvaColor | RgbaColor;
|
|
24
|
+
handlePickValueWithStraw: () => Promise<void>;
|
|
25
|
+
handleInputValueChange: (value: string) => void;
|
|
26
|
+
handleFormatChange: (format: DataPartBaseState['format']) => void;
|
|
27
|
+
}
|
|
28
|
+
export default DataPartFoundation;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _foundation = _interopRequireDefault(require("../base/foundation"));
|
|
8
|
+
var _foundation2 = _interopRequireDefault(require("./foundation"));
|
|
9
|
+
var _split = _interopRequireDefault(require("./utils/split"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) {
|
|
13
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
14
|
+
resolve(value);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
18
|
+
function fulfilled(value) {
|
|
19
|
+
try {
|
|
20
|
+
step(generator.next(value));
|
|
21
|
+
} catch (e) {
|
|
22
|
+
reject(e);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function rejected(value) {
|
|
26
|
+
try {
|
|
27
|
+
step(generator["throw"](value));
|
|
28
|
+
} catch (e) {
|
|
29
|
+
reject(e);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function step(result) {
|
|
33
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
34
|
+
}
|
|
35
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
class DataPartFoundation extends _foundation.default {
|
|
39
|
+
constructor(adapter) {
|
|
40
|
+
super(Object.assign({}, adapter));
|
|
41
|
+
this.getInputValue = () => {
|
|
42
|
+
const {
|
|
43
|
+
currentColor
|
|
44
|
+
} = this._adapter.getProps();
|
|
45
|
+
const {
|
|
46
|
+
format
|
|
47
|
+
} = this._adapter.getStates();
|
|
48
|
+
const rgba = currentColor.rgba;
|
|
49
|
+
const hsva = currentColor.hsva;
|
|
50
|
+
const hex = currentColor.hex;
|
|
51
|
+
if (format === 'rgba') {
|
|
52
|
+
return `${rgba.r},${rgba.g},${rgba.b}`;
|
|
53
|
+
} else if (format === 'hsva') {
|
|
54
|
+
return `${hsva.h},${hsva.s},${hsva.v}`;
|
|
55
|
+
} else {
|
|
56
|
+
return hex.slice(0, 7);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
this.getValueByInputValue = value => {
|
|
60
|
+
const {
|
|
61
|
+
format
|
|
62
|
+
} = this.getStates();
|
|
63
|
+
if (format === 'rgba') {
|
|
64
|
+
const result = (0, _split.default)(value, format);
|
|
65
|
+
if (result) {
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
} else if (format === 'hsva') {
|
|
69
|
+
const result = (0, _split.default)(value, format);
|
|
70
|
+
if (result) {
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
} else if (format === 'hex') {
|
|
74
|
+
// hack chrome bug, format mismatch with w3c.
|
|
75
|
+
if (!value.startsWith('#')) {
|
|
76
|
+
value = '#' + value;
|
|
77
|
+
}
|
|
78
|
+
if (/#[\d\w]{6,8}/.test(value)) {
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
};
|
|
84
|
+
this.handlePickValueWithStraw = () => __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
const colorPickerFoundation = this._adapter.getColorPickerFoundation();
|
|
86
|
+
if (!window['EyeDropper']) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
//@ts-ignore
|
|
90
|
+
const eyeDropper = new EyeDropper();
|
|
91
|
+
try {
|
|
92
|
+
const result = yield eyeDropper.open();
|
|
93
|
+
const color = result['sRGBHex'];
|
|
94
|
+
if (color.startsWith("#")) {
|
|
95
|
+
colorPickerFoundation.handleChange(color, 'hex');
|
|
96
|
+
} else if (color.startsWith('rgba')) {
|
|
97
|
+
const rgba = _foundation2.default.rgbaStringToRgba(color);
|
|
98
|
+
rgba.a = 1;
|
|
99
|
+
colorPickerFoundation.handleChange(rgba, 'rgba');
|
|
100
|
+
}
|
|
101
|
+
} catch (e) {}
|
|
102
|
+
});
|
|
103
|
+
this.handleInputValueChange = value => {
|
|
104
|
+
this._adapter.setState({
|
|
105
|
+
inputValue: value
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
this.handleFormatChange = format => {
|
|
109
|
+
this._adapter.setState({
|
|
110
|
+
format
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
var _default = exports.default = DataPartFoundation;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* shadow */
|
|
2
|
+
/* sizing */
|
|
3
|
+
/* spacing */
|
|
4
|
+
.semi-colorPicker-colorChooseArea {
|
|
5
|
+
/**
|
|
6
|
+
* Referrer from https://github.com/web-padawan/vanilla-colorful/blob/5d219ee360ae2f29534864b28ca9e6074233b9ce/src/lib/styles/saturation.css
|
|
7
|
+
*/
|
|
8
|
+
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
|
|
9
|
+
position: relative;
|
|
10
|
+
flex-grow: 1;
|
|
11
|
+
border-color: transparent;
|
|
12
|
+
border-radius: 8px 8px 0px 0px;
|
|
13
|
+
background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0)), linear-gradient(to right, #fff, rgba(255, 255, 255, 0));
|
|
14
|
+
}
|
|
15
|
+
.semi-colorPicker-handle {
|
|
16
|
+
border-radius: var(--semi-border-radius-full);
|
|
17
|
+
border: 2px solid var(--semi-color-white);
|
|
18
|
+
position: absolute;
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
cursor: grab;
|
|
21
|
+
}
|
|
22
|
+
.semi-colorPicker-alphaSlider {
|
|
23
|
+
position: relative;
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
margin-top: 6px;
|
|
26
|
+
border-radius: var(--semi-border-radius-full);
|
|
27
|
+
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
|
|
28
|
+
}
|
|
29
|
+
.semi-colorPicker-alphaSlider .semi-colorPicker-alphaSliderInner {
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
border-radius: 4px;
|
|
33
|
+
}
|
|
34
|
+
.semi-colorPicker-alphaSlider .semi-colorPicker-alphaHandle {
|
|
35
|
+
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
|
|
36
|
+
border-radius: var(--semi-border-radius-full);
|
|
37
|
+
border: 2px solid var(--semi-color-white);
|
|
38
|
+
position: absolute;
|
|
39
|
+
box-sizing: border-box;
|
|
40
|
+
cursor: grab;
|
|
41
|
+
}
|
|
42
|
+
.semi-colorPicker-colorSlider {
|
|
43
|
+
position: relative;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
margin-top: 6px;
|
|
46
|
+
border-radius: var(--semi-border-radius-full);
|
|
47
|
+
background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);
|
|
48
|
+
}
|
|
49
|
+
.semi-colorPicker-dataPart {
|
|
50
|
+
margin-top: 8px;
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
}
|
|
54
|
+
.semi-colorPicker-dataPart .semi-colorPicker-colorDemoBlock {
|
|
55
|
+
border-radius: 4px;
|
|
56
|
+
}
|
|
57
|
+
.semi-colorPicker-dataPart .semi-colorPicker-inputGroup {
|
|
58
|
+
margin-left: 4px;
|
|
59
|
+
width: 100%;
|
|
60
|
+
flex: 1;
|
|
61
|
+
flex-wrap: nowrap;
|
|
62
|
+
}
|
|
63
|
+
.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInput {
|
|
64
|
+
flex: 1;
|
|
65
|
+
}
|
|
66
|
+
.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInputNumber {
|
|
67
|
+
width: 58px;
|
|
68
|
+
}
|
|
69
|
+
.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInputNumber .semi-colorPicker-inputNumberSuffix {
|
|
70
|
+
font-size: 14px;
|
|
71
|
+
padding: 4px 4px;
|
|
72
|
+
}
|
|
73
|
+
.semi-colorPicker-dataPart .semi-colorPicker-formatSelect {
|
|
74
|
+
width: 80px;
|
|
75
|
+
}
|
|
76
|
+
.semi-colorPicker-popover {
|
|
77
|
+
padding: 8px;
|
|
78
|
+
}
|
|
79
|
+
.semi-colorPicker-popover-defaultChildren {
|
|
80
|
+
width: 24px;
|
|
81
|
+
height: 24px;
|
|
82
|
+
border-radius: 4px;
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
@import "./variables.scss";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
$module: #{$prefix}-colorPicker;
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
.#{$module} {
|
|
8
|
+
|
|
9
|
+
&-colorChooseArea{
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Referrer from https://github.com/web-padawan/vanilla-colorful/blob/5d219ee360ae2f29534864b28ca9e6074233b9ce/src/lib/styles/saturation.css
|
|
13
|
+
*/
|
|
14
|
+
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
|
|
15
|
+
position: relative;
|
|
16
|
+
flex-grow: 1;
|
|
17
|
+
border-color: transparent;
|
|
18
|
+
border-radius: $radius-colorPicker-topLeft $radius-colorPicker-topRight $radius-colorPicker-bottomLeft $radius-colorPicker-bottomRight;
|
|
19
|
+
background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0)), linear-gradient(to right, #fff, rgba(255, 255, 255, 0));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
&-handle{
|
|
24
|
+
border-radius: $radius-colorPicker-handle;
|
|
25
|
+
border: $width-colorPicker_handle-border solid $color-colorPicker_handle-border;
|
|
26
|
+
position: absolute;
|
|
27
|
+
box-sizing: border-box;
|
|
28
|
+
cursor: grab;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
&-alphaSlider{
|
|
35
|
+
position: relative;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
margin-top: $spacing-colorPicker_slider-marginTop;
|
|
38
|
+
border-radius: $radius-colorPicker-handle;
|
|
39
|
+
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
.#{$module}-alphaSliderInner{
|
|
43
|
+
width: 100%;
|
|
44
|
+
height: 100%;
|
|
45
|
+
border-radius: $radius-colorPicker-alphaSliderInner;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.#{$module}-alphaHandle{
|
|
49
|
+
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
|
|
50
|
+
border-radius: $radius-colorPicker-handle;
|
|
51
|
+
border: $width-colorPicker_handle-border solid $color-colorPicker_handle-border;
|
|
52
|
+
position: absolute;
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
cursor: grab;
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&-colorSlider{
|
|
61
|
+
position: relative;
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
margin-top: $spacing-colorPicker_slider-marginTop;
|
|
64
|
+
border-radius: $radius-colorPicker-handle;
|
|
65
|
+
background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
&-dataPart{
|
|
71
|
+
margin-top: $spacing-colorPicker_dataPart-marginTop;
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
.#{$module}-colorDemoBlock{
|
|
75
|
+
border-radius: $radius-colorPicker-demoBlock;
|
|
76
|
+
}
|
|
77
|
+
.#{$module}-inputGroup{
|
|
78
|
+
margin-left: $spacing-colorPicker_inputGroup-marginLeft;
|
|
79
|
+
width: 100%;
|
|
80
|
+
flex:1;
|
|
81
|
+
flex-wrap: nowrap;
|
|
82
|
+
.#{$module}-colorPickerInput{
|
|
83
|
+
flex: 1;
|
|
84
|
+
}
|
|
85
|
+
.#{$module}-colorPickerInputNumber{
|
|
86
|
+
width: $width-colorPicker-colorPickerInputNumber;
|
|
87
|
+
.#{$module}-inputNumberSuffix{
|
|
88
|
+
font-size: $font-colorPicker_inputNumberSuffix-fontSize;
|
|
89
|
+
padding: $spacing-colorPicker_inputNumberSuffix-vertical $spacing-colorPicker_inputNumberSuffix-horizontal;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
.#{$module}-formatSelect{
|
|
94
|
+
width: $width-colorPicker-formatSelect;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
&-popover{
|
|
100
|
+
padding: $spacing-colorPicker_popover-padding;
|
|
101
|
+
|
|
102
|
+
&-defaultChildren{
|
|
103
|
+
width:$width-colorPicker-defaultTrigger;
|
|
104
|
+
height: $width-colorPicker-defaultTrigger;
|
|
105
|
+
border-radius: $radius-colorPicker-defaultTrigger;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.cssClasses = void 0;
|
|
7
|
+
var _constants = require("../base/constants");
|
|
8
|
+
const cssClasses = exports.cssClasses = {
|
|
9
|
+
PREFIX: `${_constants.BASE_CLASS_PREFIX}-colorPicker`
|
|
10
|
+
};
|
|
11
|
+
const strings = {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { HsvaColor, RgbaColor } from './interface';
|
|
2
|
+
import BaseFoundation, { DefaultAdapter } from '../base/foundation';
|
|
3
|
+
export type ColorValue = {
|
|
4
|
+
hsva: HsvaColor;
|
|
5
|
+
rgba: RgbaColor;
|
|
6
|
+
hex: string;
|
|
7
|
+
};
|
|
8
|
+
export interface ColorPickerProps {
|
|
9
|
+
eyeDropper?: boolean;
|
|
10
|
+
defaultValue?: ColorValue;
|
|
11
|
+
value?: ColorValue;
|
|
12
|
+
onChange: (value: ColorValue) => void;
|
|
13
|
+
alpha: boolean;
|
|
14
|
+
width?: number;
|
|
15
|
+
height?: number;
|
|
16
|
+
defaultFormat: 'hex' | 'rgba' | 'hsva';
|
|
17
|
+
}
|
|
18
|
+
export interface ColorPickerState {
|
|
19
|
+
currentColor: ColorValue;
|
|
20
|
+
}
|
|
21
|
+
export interface ColorPickerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
22
|
+
notifyChange: (value: ColorValue) => void;
|
|
23
|
+
}
|
|
24
|
+
declare class ColorPickerFoundation extends BaseFoundation<ColorPickerAdapter<ColorPickerProps, ColorPickerState>, ColorPickerProps, ColorPickerState> {
|
|
25
|
+
constructor(adapter: ColorPickerAdapter<ColorPickerProps, ColorPickerState>);
|
|
26
|
+
static hsvaToRgba: ({ h, s, v, a }: HsvaColor) => RgbaColor;
|
|
27
|
+
static rgbaToHsva: ({ r, g, b, a }: RgbaColor) => HsvaColor;
|
|
28
|
+
static rgbaToHex: ({ r, g, b, a }: RgbaColor) => string;
|
|
29
|
+
static hsvaToHex: (hsva: HsvaColor) => string;
|
|
30
|
+
static hexToRgba: (hex: string) => RgbaColor;
|
|
31
|
+
static hexToHsva: (hex: string) => HsvaColor;
|
|
32
|
+
static hsvaToHslaString: (hsva: HsvaColor) => string;
|
|
33
|
+
static hsvaToHslString: (hsva: HsvaColor) => string;
|
|
34
|
+
static rgbaStringToHsva: (rgbaString: string) => HsvaColor;
|
|
35
|
+
static rgbaStringToRgba: (rgbaString: string) => RgbaColor;
|
|
36
|
+
handleChangeH: (currentColor: ColorValue, newH: number) => void;
|
|
37
|
+
handleChangeA: (currentColor: ColorValue, newAlpha: number) => void;
|
|
38
|
+
getCurrentColor: () => any;
|
|
39
|
+
handleChange: (color: HsvaColor | RgbaColor | string, format: 'hex' | 'rgba' | 'hsva') => void;
|
|
40
|
+
handleAlphaChangeByHandle: (newAlpha: {
|
|
41
|
+
a: number;
|
|
42
|
+
}) => void;
|
|
43
|
+
handleColorChangeByHandle: (newHue: {
|
|
44
|
+
h: number;
|
|
45
|
+
}) => void;
|
|
46
|
+
getHandlePositionByHSVA: (hsva: HsvaColor, { width, height }: {
|
|
47
|
+
width: number;
|
|
48
|
+
height: number;
|
|
49
|
+
}, handleSize: number) => {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
};
|
|
53
|
+
getHandlePositionByMousePosition: (mousePosition: {
|
|
54
|
+
x: number;
|
|
55
|
+
y: number;
|
|
56
|
+
}, { width, height }: {
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
}, handleSize: number) => {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
};
|
|
63
|
+
getAlphaHandlePositionByMousePosition: (mousePosition: number, width: number, handleSize: number) => number;
|
|
64
|
+
getColorHandlePositionByMousePosition: (mousePosition: number, width: number, handleSize: number) => number;
|
|
65
|
+
}
|
|
66
|
+
export default ColorPickerFoundation;
|