@ribajs/core
Version:
Core module of Riba.js
30 lines (27 loc) • 914 B
text/typescript
import { Binder } from "../binder.js";
/**
* srcset-size
* Sets an url with size to the `srcset` attribute
*/
export class SrcsetSizeBinder extends Binder<string, HTMLElement> {
static key = "srcset-*";
routine(el: HTMLUnknownElement, url: string) {
const size: string = this.args[0] as string;
let srcset = el.getAttribute("srcset");
if (typeof srcset !== "string") {
srcset = "";
}
if (typeof url === "string" && url.length > 0) {
const seperator = srcset.length > 0 ? ", " : "";
// Add size to srcset attribute
srcset += `${seperator}${url} ${size}`;
} else {
// Remove size from srcset attribute
let sizes = srcset.split(",");
sizes = sizes.map((iterSize) => iterSize.trim());
sizes = sizes.filter((iterSize) => !iterSize.includes(size));
srcset = sizes.join(", ") || "";
}
el.setAttribute("srcset", srcset);
}
}