/**
* Svelte action that applies single-line text truncation to an element
* @param {HTMLElement} node
* @param {{ clamp?: "end" | "front" }} params
* @example
*
*
*
...
* ...
*/
export function truncate(node, params = {}) {
const prefix = "bx--text-truncate--";
function toggleClass(front = false) {
const classes = [...node.classList]
.filter((name) => !name.startsWith(prefix))
.join(" ");
node.className = `${classes} ${prefix}${front ? "front" : "end"}`;
}
toggleClass(params.clamp === "front");
return {
update(params) {
toggleClass(params.clamp === "front");
},
};
}