UNPKG

@thi.ng/hiccup

Version:

HTML/SVG/XML serialization of nested data structures, iterables & closures

31 lines (30 loc) 1.04 kB
import { deref } from "@thi.ng/api/deref"; import { isArray } from "@thi.ng/checks/is-array"; import { isString } from "@thi.ng/checks/is-string"; const mergeClasses = (existing, val) => { val = deref(val); const $existing = existing.baseVal != void 0 ? existing.baseVal : existing; if (val == null) return $existing; if (isArray(val)) val = val.join(" "); if (isString(val)) return $existing ? $existing + " " + val : val; const classes = new Set($existing ? $existing.split(" ") : void 0); for (let id in val) { deref(val[id]) ? classes.add(id) : classes.delete(id); } return [...classes].join(" "); }; const mergeEmmetAttribs = (attribs, id, classes) => { id && (attribs.id = id); let aclass = deref(attribs.class); if (classes) { classes = classes.replace(/\./g, " "); attribs.class = aclass ? mergeClasses(classes, aclass) : classes; } else if (aclass) { attribs.class = isString(aclass) ? aclass : mergeClasses("", aclass); } return attribs; }; export { mergeClasses, mergeEmmetAttribs };