37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import { isColorGradient } from "./color";
|
|
|
|
/**
|
|
* Extracts url and gradient parts from the background-image CSS property.
|
|
*
|
|
* @param {string} CSS 'background-image' property value
|
|
* @returns {Object} contains the separated 'url' and 'gradient' parts
|
|
*/
|
|
export function backgroundImageCssToParts(css) {
|
|
const parts = {};
|
|
css = css || "";
|
|
if (css.startsWith("url(")) {
|
|
const urlEnd = css.indexOf(")") + 1;
|
|
parts.url = css.substring(0, urlEnd).trim();
|
|
const commaPos = css.indexOf(",", urlEnd);
|
|
css = commaPos > 0 ? css.substring(commaPos + 1) : "";
|
|
}
|
|
if (isColorGradient(css)) {
|
|
parts.gradient = css.trim();
|
|
}
|
|
return parts;
|
|
}
|
|
|
|
/**
|
|
* Combines url and gradient parts into a background-image CSS property value
|
|
*
|
|
* @param {Object} contains the separated 'url' and 'gradient' parts
|
|
* @returns {string} CSS 'background-image' property value
|
|
*/
|
|
export function backgroundImagePartsToCss(parts) {
|
|
let css = parts.url || "";
|
|
if (parts.gradient) {
|
|
css += (css ? ", " : "") + parts.gradient;
|
|
}
|
|
return css || "none";
|
|
}
|