UNPKG

@ribajs/core

Version:

Core module of Riba.js

30 lines (27 loc) 914 B
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); } }