mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-15 07:20:02 -04:00
fix: Improve srcset rewriter to handle descriptors correctly.
The previous implementation failed to properly rewrite srcset attributes when they contained descriptors (like 1.5x, 2x). Updated the parser to preserve descriptors while rewriting URLs.
This commit is contained in:
parent
73357d0172
commit
3015dff77d
1 changed files with 12 additions and 9 deletions
|
@ -283,17 +283,20 @@ function traverseParsedHtml(
|
||||||
}
|
}
|
||||||
|
|
||||||
export function rewriteSrcset(srcset: string, meta: URLMeta) {
|
export function rewriteSrcset(srcset: string, meta: URLMeta) {
|
||||||
const urls = srcset.split(/ [0-9]+x,? ?/g);
|
const sources = srcset.split(",").map((src) => src.trim());
|
||||||
if (!urls) return "";
|
const rewrittenSources = sources.map((source) => {
|
||||||
const sufixes = srcset.match(/ [0-9]+x,? ?/g);
|
// Split into URLs and descriptors (if any)
|
||||||
if (!sufixes) return "";
|
// e.g. url0, url1 1.5x, url2 2x
|
||||||
const rewrittenUrls = urls.map((url, i) => {
|
const [url, ...descriptors] = source.split(/\s+/);
|
||||||
if (url && sufixes[i]) {
|
|
||||||
return rewriteUrl(url, meta) + sufixes[i];
|
// Rewrite the URLs and keep the descriptors (if any)
|
||||||
}
|
const rewrittenUrl = rewriteUrl(url.trim(), meta);
|
||||||
|
return descriptors.length > 0
|
||||||
|
? `${rewrittenUrl} ${descriptors.join(" ")}`
|
||||||
|
: rewrittenUrl;
|
||||||
});
|
});
|
||||||
|
|
||||||
return rewrittenUrls.join("");
|
return rewrittenSources.join(", ");
|
||||||
}
|
}
|
||||||
|
|
||||||
// function base64ToBytes(base64) {
|
// function base64ToBytes(base64) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue