@hoosei/voxweave-react
Version:
A customizable and interactive voice UI component for React applications
101 lines (100 loc) • 2.38 kB
JavaScript
var p = "-";
function h(r) {
var t = C(r), e = r.conflictingClassGroups, n = r.conflictingClassGroupModifiers, u = n === void 0 ? {} : n;
function i(o) {
var s = o.split(p);
return s[0] === "" && s.length !== 1 && s.shift(), d(s, t) || g(o);
}
function a(o, s) {
var f = e[o] || [];
return s && u[o] ? [].concat(f, u[o]) : f;
}
return {
getClassGroupId: i,
getConflictingClassGroupIds: a
};
}
function d(r, t) {
if (r.length === 0)
return t.classGroupId;
var e = r[0], n = t.nextPart.get(e), u = n ? d(r.slice(1), n) : void 0;
if (u)
return u;
if (t.validators.length !== 0) {
var i = r.join(p);
return t.validators.find(function(a) {
var o = a.validator;
return o(i);
})?.classGroupId;
}
}
var c = /^\[(.+)\]$/;
function g(r) {
if (c.test(r)) {
var t = c.exec(r)[1], e = t?.substring(0, t.indexOf(":"));
if (e)
return "arbitrary.." + e;
}
}
function C(r) {
var t = r.theme, e = r.prefix, n = {
nextPart: /* @__PURE__ */ new Map(),
validators: []
}, u = x(Object.entries(r.classGroups), e);
return u.forEach(function(i) {
var a = i[0], o = i[1];
v(o, n, a, t);
}), n;
}
function v(r, t, e, n) {
r.forEach(function(u) {
if (typeof u == "string") {
var i = u === "" ? t : l(t, u);
i.classGroupId = e;
return;
}
if (typeof u == "function") {
if (G(u)) {
v(u(n), t, e, n);
return;
}
t.validators.push({
validator: u,
classGroupId: e
});
return;
}
Object.entries(u).forEach(function(a) {
var o = a[0], s = a[1];
v(s, l(t, o), e, n);
});
});
}
function l(r, t) {
var e = r;
return t.split(p).forEach(function(n) {
e.nextPart.has(n) || e.nextPart.set(n, {
nextPart: /* @__PURE__ */ new Map(),
validators: []
}), e = e.nextPart.get(n);
}), e;
}
function G(r) {
return r.isThemeGetter;
}
function x(r, t) {
return t ? r.map(function(e) {
var n = e[0], u = e[1], i = u.map(function(a) {
return typeof a == "string" ? t + a : typeof a == "object" ? Object.fromEntries(Object.entries(a).map(function(o) {
var s = o[0], f = o[1];
return [t + s, f];
})) : a;
});
return [n, i];
}) : r;
}
export {
C as createClassMap,
h as createClassUtils
};
//# sourceMappingURL=index72.js.map