2021-09-09 15:15:53 +01:00
|
|
|
import { parseColor, formatColor } from './color'
|
2021-04-30 15:09:58 +02:00
|
|
|
|
2021-04-30 09:27:56 -04:00
|
|
|
export function withAlphaValue(color, alphaValue, defaultValue) {
|
2021-09-06 20:15:10 +02:00
|
|
|
if (typeof color === 'function') {
|
2021-04-30 09:27:56 -04:00
|
|
|
return color({ opacityValue: alphaValue })
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-02 10:21:20 -04:00
|
|
|
let parsed = parseColor(color, { loose: true })
|
2021-08-04 21:25:57 -07:00
|
|
|
|
2021-09-09 15:15:53 +01:00
|
|
|
if (parsed === null) {
|
|
|
|
|
return defaultValue
|
2021-04-30 09:27:56 -04:00
|
|
|
}
|
2021-08-04 20:31:04 -07:00
|
|
|
|
2021-09-09 15:15:53 +01:00
|
|
|
return formatColor({ ...parsed, alpha: alphaValue })
|
2021-04-30 09:27:56 -04:00
|
|
|
}
|
|
|
|
|
|
2020-04-26 09:48:54 -04:00
|
|
|
export default function withAlphaVariable({ color, property, variable }) {
|
2021-09-29 10:32:31 -04:00
|
|
|
let properties = [].concat(property)
|
2021-09-06 20:15:10 +02:00
|
|
|
if (typeof color === 'function') {
|
2020-05-01 05:22:52 +02:00
|
|
|
return {
|
2020-10-07 14:07:18 -04:00
|
|
|
[variable]: '1',
|
2021-09-29 10:32:31 -04:00
|
|
|
...Object.fromEntries(
|
|
|
|
|
properties.map((p) => {
|
|
|
|
|
return [p, color({ opacityVariable: variable, opacityValue: `var(${variable})` })]
|
|
|
|
|
})
|
|
|
|
|
),
|
2020-05-01 05:22:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-09 15:15:53 +01:00
|
|
|
const parsed = parseColor(color)
|
2020-04-26 09:48:54 -04:00
|
|
|
|
2021-09-09 15:15:53 +01:00
|
|
|
if (parsed === null) {
|
2021-09-29 10:32:31 -04:00
|
|
|
return Object.fromEntries(properties.map((p) => [p, color]))
|
2021-09-09 15:15:53 +01:00
|
|
|
}
|
2020-04-26 09:48:54 -04:00
|
|
|
|
2021-09-09 15:15:53 +01:00
|
|
|
if (parsed.alpha !== undefined) {
|
|
|
|
|
// Has an alpha value, return color as-is
|
2021-09-29 10:32:31 -04:00
|
|
|
return Object.fromEntries(properties.map((p) => [p, color]))
|
2020-04-26 09:48:54 -04:00
|
|
|
}
|
2021-08-04 20:31:04 -07:00
|
|
|
|
|
|
|
|
return {
|
2021-09-09 15:15:53 +01:00
|
|
|
[variable]: '1',
|
2021-09-29 10:32:31 -04:00
|
|
|
...Object.fromEntries(
|
|
|
|
|
properties.map((p) => {
|
|
|
|
|
return [p, formatColor({ ...parsed, alpha: `var(${variable})` })]
|
|
|
|
|
})
|
|
|
|
|
),
|
2021-08-04 20:31:04 -07:00
|
|
|
}
|
2020-04-26 09:48:54 -04:00
|
|
|
}
|