import * as dom from '../dom'; import { get } from '../../fetch/ajax'; function replaceVar(block, color) { block.innerHTML = block.innerHTML.replace( /var\(\s*--theme-color.*?\)/g, color ); } export default function(color) { // Variable support if (window.CSS && window.CSS.supports && window.CSS.supports('(--v:red)')) { return; } const styleBlocks = dom.findAll('style:not(.inserted),link'); [].forEach.call(styleBlocks, block => { if (block.nodeName === 'STYLE') { replaceVar(block, color); } else if (block.nodeName === 'LINK') { const href = block.getAttribute('href'); if (!/\.css$/.test(href)) { return; } get(href).then(res => { const style = dom.create('style', res); dom.head.appendChild(style); replaceVar(style, color); }); } }); }