Skip to content

Commit 5372e8d

Browse files
committed
Refactoring with Generics
1 parent 0a58fe8 commit 5372e8d

File tree

4 files changed

+10
-15
lines changed

4 files changed

+10
-15
lines changed

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, updateAlphaFromHsla } from "../utils/convert";
6+
import { hslaToHsva, hsvaToHsla, updateAlphaFromObject } 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: updateAlphaFromHsla,
13+
updateAlpha: updateAlphaFromObject,
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, updateAlphaFromHsva } from "../utils/convert";
6+
import { roundHsva, updateAlphaFromObject } 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: updateAlphaFromHsva,
13+
updateAlpha: updateAlphaFromObject,
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, updateAlphaFromRgba } from "../utils/convert";
6+
import { rgbaToHsva, hsvaToRgba, updateAlphaFromObject } 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: updateAlphaFromRgba,
13+
updateAlpha: updateAlphaFromObject,
1414
};
1515

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

src/utils/convert.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,14 +209,9 @@ export const updateAlphaFromString = (color: string, alpha: number): string => {
209209
return color.replace(/\d+\.\d+\)/, `${alpha})`);
210210
};
211211

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 => {
212+
export const updateAlphaFromObject = <T extends RgbaColor | HslaColor | HsvaColor>(
213+
color: T,
214+
alpha: number
215+
): T => {
221216
return Object.assign({}, color, { a: alpha });
222217
};

0 commit comments

Comments
 (0)