Skip to content

Commit 0a58fe8

Browse files
committed
Fix type error
1 parent a9268f9 commit 0a58fe8

File tree

7 files changed

+20
-23
lines changed

7 files changed

+20
-23
lines changed

src/components/HexAlphaColorPicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import React from "react";
33
import { AlphaColorPicker } from "./common/AlphaColorPicker";
44
import { ColorModel, ColorPickerBaseProps } from "../types";
55
import { equalHex } from "../utils/compare";
6-
import { hexToHsva, hsvaToHex } from "../utils/convert";
6+
import { hexToHsva, hsvaToHex, updateAlphaFromString } from "../utils/convert";
77

88
const colorModel: ColorModel<string> = {
99
defaultColor: "0001",
1010
toHsva: hexToHsva,
1111
fromHsva: hsvaToHex,
1212
equal: equalHex,
13+
updateAlpha: updateAlphaFromString,
1314
};
1415

1516
export const HexAlphaColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (

src/components/HslaColorPicker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import React from "react";
33
import { AlphaColorPicker } from "./common/AlphaColorPicker";
44
import { ColorModel, ColorPickerBaseProps, HslaColor } from "../types";
55
import { equalColorObjects } from "../utils/compare";
6-
import { hslaToHsva, hsvaToHsla, updateAlphaFromObject } from "../utils/convert";
6+
import { hslaToHsva, hsvaToHsla, updateAlphaFromHsla } from "../utils/convert";
77

88
const colorModel: ColorModel<HslaColor> = {
99
defaultColor: { h: 0, s: 0, l: 0, a: 1 },
1010
toHsva: hslaToHsva,
1111
fromHsva: hsvaToHsla,
1212
equal: equalColorObjects,
13-
updateAlpha: updateAlphaFromObject,
13+
updateAlpha: updateAlphaFromHsla,
1414
};
1515

1616
export const HslaColorPicker = (props: Partial<ColorPickerBaseProps<HslaColor>>): JSX.Element => (

src/components/HsvaColorPicker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import React from "react";
33
import { AlphaColorPicker } from "./common/AlphaColorPicker";
44
import { ColorModel, ColorPickerBaseProps, HsvaColor } from "../types";
55
import { equalColorObjects } from "../utils/compare";
6-
import { roundHsva, updateAlphaFromObject } from "../utils/convert";
6+
import { roundHsva, updateAlphaFromHsva } from "../utils/convert";
77

88
const colorModel: ColorModel<HsvaColor> = {
99
defaultColor: { h: 0, s: 0, v: 0, a: 1 },
1010
toHsva: (hsva) => hsva,
1111
fromHsva: roundHsva,
1212
equal: equalColorObjects,
13-
updateAlpha: updateAlphaFromObject,
13+
updateAlpha: updateAlphaFromHsva,
1414
};
1515

1616
export const HsvaColorPicker = (props: Partial<ColorPickerBaseProps<HsvaColor>>): JSX.Element => (

src/components/RgbaColorPicker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import React from "react";
33
import { AlphaColorPicker } from "./common/AlphaColorPicker";
44
import { ColorModel, ColorPickerBaseProps, RgbaColor } from "../types";
55
import { equalColorObjects } from "../utils/compare";
6-
import { rgbaToHsva, hsvaToRgba, updateAlphaFromObject } from "../utils/convert";
6+
import { rgbaToHsva, hsvaToRgba, updateAlphaFromRgba } from "../utils/convert";
77

88
const colorModel: ColorModel<RgbaColor> = {
99
defaultColor: { r: 0, g: 0, b: 0, a: 1 },
1010
toHsva: rgbaToHsva,
1111
fromHsva: hsvaToRgba,
1212
equal: equalColorObjects,
13-
updateAlpha: updateAlphaFromObject,
13+
updateAlpha: updateAlphaFromRgba,
1414
};
1515

1616
export const RgbaColorPicker = (props: Partial<ColorPickerBaseProps<RgbaColor>>): JSX.Element => (

src/hooks/useColorManipulation.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,9 @@ export function useColorManipulation<T extends AnyColor>(
3636
// eslint-disable-next-line @typescript-eslint/no-unused-vars
3737
const { a: _, ...cacheHsv } = cache.current.hsva;
3838

39-
const isSupportAlpha = "updateAlpha" in colorModel;
40-
4139
// When alpha channel is changed, use cached RGB values to prevent rounding errors
4240
const newColor = equalColorObjects(hsv, cacheHsv)
43-
? isSupportAlpha
41+
? colorModel.updateAlpha
4442
? colorModel.updateAlpha(cache.current.color, a)
4543
: cache.current.color
4644
: colorModel.fromHsva(hsva);

src/types.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ export interface ColorModel<T extends AnyColor> {
3939
toHsva: (defaultColor: T) => HsvaColor;
4040
fromHsva: (hsva: HsvaColor) => T;
4141
equal: (first: T, second: T) => boolean;
42-
updateAlpha?:
43-
| ((color: string, alpha: number) => string)
44-
| ((color: ObjectColor, alpha: number) => ObjectColor);
42+
updateAlpha?: (color: T, alpha: number) => T;
4543
}
4644

4745
type ColorPickerHTMLAttributes = Omit<

src/utils/convert.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
import { round } from "./round";
2-
import {
3-
RgbaColor,
4-
RgbColor,
5-
HslaColor,
6-
HslColor,
7-
HsvaColor,
8-
HsvColor,
9-
ObjectColor,
10-
} from "../types";
2+
import { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from "../types";
113

124
/**
135
* Valid CSS <angle> units.
@@ -217,6 +209,14 @@ export const updateAlphaFromString = (color: string, alpha: number): string => {
217209
return color.replace(/\d+\.\d+\)/, `${alpha})`);
218210
};
219211

220-
export const updateAlphaFromObject = (color: ObjectColor, alpha: number): ObjectColor => {
212+
export const updateAlphaFromHsla = (color: HslaColor, alpha: number): HslaColor => {
213+
return Object.assign({}, color, { a: alpha });
214+
};
215+
216+
export const updateAlphaFromHsva = (color: HsvaColor, alpha: number): HsvaColor => {
217+
return Object.assign({}, color, { a: alpha });
218+
};
219+
220+
export const updateAlphaFromRgba = (color: RgbaColor, alpha: number): RgbaColor => {
221221
return Object.assign({}, color, { a: alpha });
222222
};

0 commit comments

Comments
 (0)