import type ColorName from '@/types/colors' import colorVolumes from '@/assets/colorVolumes' export const getColorVolume = (className: ColorName): number => { if (className === 'black' || className === 'white') { return 0 } return parseInt(className.split('-')[1], 10) } export const getColorName = (className: ColorName): ColorName => { return className.split('-')[0] as ColorName } export const setColorVolume = ( className: ColorName, volume: number ): ColorName => { const color = getColorName(className) if (color === 'black' || color === 'white' || volume === 0) { return color as ColorName } return (color + '-' + volume) as ColorName } export const calculateColorVolume = ( className: ColorName, volume: number ): number => { if (className === 'black' || className === 'white') { return 0 } let newVolume = getColorVolume(className) + volume if (newVolume <= colorVolumes[0]) { newVolume = colorVolumes[0] } if (newVolume > colorVolumes[colorVolumes.length - 1]) { newVolume = colorVolumes[colorVolumes.length - 1] } newVolume = colorVolumes.find((v) => v >= newVolume) || colorVolumes[0] return newVolume } export const getNextColorVolume = (className: ColorName): number => { if (className === 'black' || className === 'white') { return 0 } const colorIndex = colorVolumes.indexOf(getColorVolume(className)) const newColorVolume = colorVolumes[colorIndex + 1] if (colorIndex === colorVolumes.length - 1) { return colorVolumes[colorIndex] } return newColorVolume } export const getNextColor = (className: ColorName): ColorName => { if (className === 'black' || className === 'white') { return className } return setColorVolume(className, getNextColorVolume(className)) } export const changeColorName = ( className: ColorName, volume: number ): ColorName => { if (className === 'black' || className === 'white') { return className } return setColorVolume(className, calculateColorVolume(className, volume)) }