md-sandbox: fix css url rewriter; closes #74

`@import url(https://...)` would get rewritten to baseURL + https://...

also reorder the generated csstext so that @imports appear first;
necessary for stuff like googlefonts to take effect
This commit is contained in:
ed 2024-02-26 22:13:40 +00:00
parent c8ea4066b1
commit 8016e6711b

View file

@ -7569,12 +7569,25 @@ var globalcss = (function () {
var css = ds[b].cssText.split(/\burl\(/g); var css = ds[b].cssText.split(/\burl\(/g);
ret += css[0]; ret += css[0];
for (var c = 1; c < css.length; c++) { for (var c = 1; c < css.length; c++) {
var delim = (/^["']/.exec(css[c])) ? css[c].slice(0, 1) : ''; var m = /(^ *["']?)(.*)/.exec(css[c]),
ret += 'url(' + delim + ((css[c].slice(0, 8).indexOf('://') + 1 || css[c].startsWith('/')) ? '' : base) + delim = m[1],
css[c].slice(delim ? 1 : 0); ctxt = m[2],
is_abs = /^\/|[^)/:]+:\/\//.exec(ctxt);
ret += 'url(' + delim + (is_abs ? '' : base) + ctxt;
} }
ret += '\n'; ret += '\n';
} }
if (ret.indexOf('\n@import') + 1) {
var c0 = ret.split('\n'),
c1 = [],
c2 = [];
for (var a = 0; a < c0.length; a++)
(c0[a].startsWith('@import') ? c1 : c2).push(c0[a]);
ret = c1.concat(c2).join('\n');
}
} }
catch (ex) { catch (ex) {
console.log('could not read css', a, base); console.log('could not read css', a, base);