/* @flow */ const join = (value, by) => { let result = '' for (let i = 0; i < value.length; i++) { // Remove !important from the value, it will be readded later. if (value[i] === '!important') break if (result) result += by result += value[i] } return result } /** * Converts array values to string. * * `margin: [['5px', '10px']]` > `margin: 5px 10px;` * `border: ['1px', '2px']` > `border: 1px, 2px;` * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;` * `color: ['red', !important]` > `color: red !important;` */ export default function toCssValue(value: any, ignoreImportant: boolean = false) { if (!Array.isArray(value)) return value let cssValue = '' // Support space separated values via `[['5px', '10px']]`. if (Array.isArray(value[0])) { for (let i = 0; i < value.length; i++) { if (value[i] === '!important') break if (cssValue) cssValue += ', ' cssValue += join(value[i], ' ') } } else cssValue = join(value, ', ') // Add !important, because it was ignored. if (!ignoreImportant && value[value.length - 1] === '!important') { cssValue += ' !important' } return cssValue }