11import { color , getContrastingColor } from '../packages/color-convert/src' ;
22// HEX
3- import { hexToHsva , hexToRgba , hsvaToHex , hsvaToHexa } from '../packages/color-convert/src' ;
3+ import { hexToHsva , hexToRgba , hsvaToHex , hsvaToHexa , hexToXY } from '../packages/color-convert/src' ;
44import { equalHex } from '../packages/color-convert/src' ;
55// HSLA
66import { hsvaToHsla , hslaToHsva , HsvaColor , HslaColor } from '../packages/color-convert/src' ;
@@ -15,7 +15,7 @@ import { hsvaToRgba, rgbaToHsva, RgbaColor } from '../packages/color-convert/src
1515// RGBA string
1616import { hsvaToRgbaString , rgbaStringToHsva } from '../packages/color-convert/src' ;
1717// RGB
18- import { rgbaToRgb , rgbaToHex , rgbaToHexa } from '../packages/color-convert/src' ;
18+ import { rgbaToRgb , rgbaToHex , rgbaToHexa , rgbToXY } from '../packages/color-convert/src' ;
1919// RGB string
2020import { hsvaToRgbString , rgbStringToHsva } from '../packages/color-convert/src' ;
2121// HSVA String
@@ -25,6 +25,8 @@ import { hsvaToHsv } from '../packages/color-convert/src';
2525// HSV string
2626import { hsvaToHsvString , hsvStringToHsva } from '../packages/color-convert/src' ;
2727import { equalColorString , equalColorObjects , validHex } from '../packages/color-convert/src' ;
28+ // XY
29+ import { xyToHex , xyToRgb } from '../packages/color-convert/src' ;
2830
2931it ( 'Converts color => getContrastingColor' , ( ) => {
3032 expect ( getContrastingColor ( '#d0021b' ) ) . toEqual ( '#ffffff' ) ;
@@ -41,7 +43,7 @@ it('Converts color => hslString To Hsl', () => {
4143} ) ;
4244
4345it ( 'Converts color => HEX to ColorResult' , ( ) => {
44- const { rgb, rgba, hex, hexa, hsl, hsla, hsv, hsva } = color ( '#d1021a' ) ;
46+ const { rgb, rgba, hex, hexa, hsl, hsla, hsv, hsva, xy } = color ( '#d1021a' ) ;
4547 expect ( hex ) . toEqual ( '#d1021a' ) ;
4648 expect ( hexa ) . toEqual ( '#d1021aff' ) ;
4749 expect ( color ( { h : 353.04347826086956 , s : 99.04306220095694 , v : 81.96078431372548 , a : 1 } ) . hex ) . toEqual ( '#d1021a' ) ;
@@ -52,6 +54,7 @@ it('Converts color => HEX to ColorResult', () => {
5254 expect ( hsla ) . toEqual ( { h : 353.04347826086956 , l : 41.37254901960784 , s : 98.10426540284361 , a : 1 } ) ;
5355 expect ( hsv ) . toEqual ( { h : 353.04347826086956 , s : 99.04306220095694 , v : 81.96078431372548 } ) ;
5456 expect ( hsva ) . toEqual ( { h : 353.04347826086956 , s : 99.04306220095694 , v : 81.96078431372548 , a : 1 } ) ;
57+ expect ( xy ) . toEqual ( { x : 0.26502656639062083 , y : 0.13673307363113865 , bri : 0.022196477290623278 } ) ;
5558} ) ;
5659
5760it ( 'Converts color => HEXA to ColorResult' , ( ) => {
@@ -95,6 +98,16 @@ it('Converts RGBA to HEXA', () => {
9598 expect ( rgbaToHexa ( { b : 26 , g : 2 , r : 209 } as any ) ) . toEqual ( '#d1021a' ) ;
9699} ) ;
97100
101+ it ( 'Converts RGB to XY' , ( ) => {
102+ expect ( rgbToXY ( { r : 255 , g : 255 , b : 255 } ) ) . toMatchObject ( { x : 0.9505 , y : 1 , bri : 1.089 } ) ;
103+ expect ( rgbToXY ( { r : 0 , g : 0 , b : 0 } ) ) . toMatchObject ( { x : 0.0 , y : 0.0 , bri : 0 } ) ;
104+ expect ( rgbToXY ( { r : 71 , g : 128 , b : 241 } ) ) . toMatchObject ( {
105+ x : 0.26194888875915034 ,
106+ y : 0.23128809648982562 ,
107+ bri : 0.863027753196167 ,
108+ } ) ;
109+ } ) ;
110+
98111it ( 'Converts HEX to RGBA' , ( ) => {
99112 expect ( hsvaToHslString ( hexToHsva ( '#d0021b' ) ) ) . toEqual ( 'hsl(352.71844660194176, 98%, 41%)' ) ;
100113 expect ( hsvaToHex ( rgbaToHsva ( hexToRgba ( '#d0021b' ) ) ) ) . toEqual ( '#d0021b' ) ;
@@ -115,6 +128,12 @@ it('Converts HEX to HSVA', () => {
115128 expect ( hexToHsva ( '#c62182' ) ) . toMatchObject ( { h : 324.72727272727275 , s : 83.33333333333334 , v : 77.64705882352942 , a : 1 } ) ;
116129} ) ;
117130
131+ it ( 'Converts HEX to XY' , ( ) => {
132+ expect ( hexToXY ( '#ffffff' ) ) . toMatchObject ( { x : 0.9505 , y : 1 , bri : 1.089 } ) ;
133+ expect ( hexToXY ( '#000000' ) ) . toMatchObject ( { x : 0.0 , y : 0.0 , bri : 0 } ) ;
134+ expect ( hexToXY ( '#4780f1' ) ) . toMatchObject ( { x : 0.26194888875915034 , y : 0.23128809648982562 , bri : 0.863027753196167 } ) ;
135+ } ) ;
136+
118137it ( 'Converts shorthand HEX to HSVA' , ( ) => {
119138 expect ( hexToHsva ( '#FFF' ) ) . toMatchObject ( { h : 0 , s : 0 , v : 100 , a : 1 } ) ;
120139 expect ( hexToHsva ( '#FF0' ) ) . toMatchObject ( { h : 60 , s : 100 , v : 100 , a : 1 } ) ;
@@ -409,3 +428,19 @@ it('Validates HEX colors', () => {
409428 // @ts -ignore
410429 expect ( validHex ( ) ) . toBe ( false ) ;
411430} ) ;
431+
432+ it ( 'Converts XY to RGB' , ( ) => {
433+ expect ( xyToRgb ( { x : 0.9505 , y : 1 , bri : 1.089 } ) ) . toMatchObject ( { r : 255 , g : 255 , b : 255 } ) ;
434+ expect ( xyToRgb ( { x : 0.0 , y : 0.0 , bri : 0 } ) ) . toMatchObject ( { r : 0 , g : 0 , b : 0 } ) ;
435+ expect ( xyToRgb ( { x : 0.26194888875915034 , y : 0.23128809648982562 , bri : 0.863027753196167 } ) ) . toMatchObject ( {
436+ r : 71 ,
437+ g : 128 ,
438+ b : 241 ,
439+ } ) ;
440+ } ) ;
441+
442+ it ( 'Converts XY to HEX' , ( ) => {
443+ expect ( xyToHex ( { x : 0.9505 , y : 1 , bri : 1.089 } ) ) . toBe ( '#ffffff' ) ;
444+ expect ( xyToHex ( { x : 0.0 , y : 0.0 , bri : 0 } ) ) . toBe ( '#000000' ) ;
445+ expect ( xyToHex ( { x : 0.26194888875915034 , y : 0.23128809648982562 , bri : 0.863027753196167 } ) ) . toBe ( '#4780f1' ) ;
446+ } ) ;
0 commit comments