Spaces:
Sleeping
Sleeping
| import postcss from 'postcss' | |
| import isPlainObject from './isPlainObject' | |
| export default function transformThemeValue(themeSection) { | |
| if (['fontSize', 'outline'].includes(themeSection)) { | |
| return (value) => { | |
| if (typeof value === 'function') value = value({}) | |
| if (Array.isArray(value)) value = value[0] | |
| return value | |
| } | |
| } | |
| if (themeSection === 'fontFamily') { | |
| return (value) => { | |
| if (typeof value === 'function') value = value({}) | |
| let families = Array.isArray(value) && isPlainObject(value[1]) ? value[0] : value | |
| return Array.isArray(families) ? families.join(', ') : families | |
| } | |
| } | |
| if ( | |
| [ | |
| 'boxShadow', | |
| 'transitionProperty', | |
| 'transitionDuration', | |
| 'transitionDelay', | |
| 'transitionTimingFunction', | |
| 'backgroundImage', | |
| 'backgroundSize', | |
| 'backgroundColor', | |
| 'cursor', | |
| 'animation', | |
| ].includes(themeSection) | |
| ) { | |
| return (value) => { | |
| if (typeof value === 'function') value = value({}) | |
| if (Array.isArray(value)) value = value.join(', ') | |
| return value | |
| } | |
| } | |
| // For backwards compatibility reasons, before we switched to underscores | |
| // instead of commas for arbitrary values. | |
| if (['gridTemplateColumns', 'gridTemplateRows', 'objectPosition'].includes(themeSection)) { | |
| return (value) => { | |
| if (typeof value === 'function') value = value({}) | |
| if (typeof value === 'string') value = postcss.list.comma(value).join(' ') | |
| return value | |
| } | |
| } | |
| return (value, opts = {}) => { | |
| if (typeof value === 'function') { | |
| value = value(opts) | |
| } | |
| return value | |
| } | |
| } | |