tw-merge
Version:
Merge CSS utility classes without style conflicts - small and zero config
37 lines (35 loc) • 1.28 kB
JavaScript
function isNumericValue(value) {
var _value$match;
if (!value) return true;
var arbitraryValue = (_value$match = value.match(/^\[(.*)\]$/)) == null ? void 0 : _value$match[1];
return !isNaN(parseInt(arbitraryValue != null ? arbitraryValue : value));
}
function sortContextSection(section, separator) {
return section.sort(function (a, b) {
if (a.startsWith("[") || b.startsWith("[")) return 0;
return a.localeCompare(b);
}).join(separator);
}
function normalizeContext(context, separator) {
if (!context) return context;
var important = context.endsWith("!");
var variants = context.replace(/:!?$/, "").split(separator);
var section = [];
var normalizedSections = [];
function commitSection() {
if (section.length > 0) normalizedSections.push(sortContextSection(section, separator));
}
for (var i = 0; i < variants.length; i++) {
var variant = variants[i];
if (variant.startsWith("[")) {
// is arbitrary variant
commitSection();
normalizedSections.push(variant);
section = [];
} else section.push(variant);
}
commitSection();
return "" + normalizedSections.join(separator) + separator + (important ? "!" : "");
}
export { isNumericValue, normalizeContext };
//# sourceMappingURL=utils.mjs.map