/* IMPORT */ | |
import _ from '~/utils'; | |
import ChannelsReusable from '~/channels/reusable'; | |
import Color from '~/color'; | |
import change from '~/methods/change'; | |
import type {Channels} from '~/types'; | |
/* TYPES */ | |
type IRgba = { | |
( color: string | Channels, opacity: number ): string, | |
( r: number, g: number, b: number, a?: number ): string | |
}; | |
/* MAIN */ | |
const rgba: IRgba = ( r: string | Channels | number, g: number, b: number = 0, a: number = 1 ): string => { //TSC: `b` shouldn't have a default value | |
if ( typeof r !== 'number' ) return change ( r, { a: g } ); | |
const channels = ChannelsReusable.set ({ | |
r: _.channel.clamp.r ( r ), | |
g: _.channel.clamp.g ( g ), | |
b: _.channel.clamp.b ( b ), | |
a: _.channel.clamp.a ( a ) | |
}); | |
return Color.stringify ( channels ); | |
}; | |
/* EXPORT */ | |
export default rgba; | |