preserve const refX = 0.95047 ; const refY = 1.0 ; const refZ = 1.08883 ; function pivot ( n ) { return n > 0.008856 ? n ** ( 1 / 3 ) : 7.787 * n + 16 / 116 ; } export function xyz2lab ( x , y , z ) { x = pivot ( x / refX ) ; y = pivot ( y / refY ) ; z = pivot ( z / refZ ) ; if ( 116 * y - 16 < 0 ) throw new Error ( 'xxx' ) ; return { L : Math . max ( 0 , 116 * y - 16 ) , a : 500 * ( x - y ) , b : 200 * ( y - z ) , } ; }