var IMPORTANT_MODIFIER = '!'; function createSplitModifiers(config) { var separator = config.separator || ':'; var isSeparatorSingleCharacter = separator.length === 1; var firstSeparatorCharacter = separator[0]; var separatorLength = separator.length; // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js return function splitModifiers(className) { var modifiers = []; var bracketDepth = 0; var modifierStart = 0; var postfixModifierPosition; for (var index = 0; index < className.length; index++) { var currentCharacter = className[index]; if (bracketDepth === 0) { if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) { modifiers.push(className.slice(modifierStart, index)); modifierStart = index + separatorLength; continue; } if (currentCharacter === '/') { postfixModifierPosition = index; continue; } } if (currentCharacter === '[') { bracketDepth++; } else if (currentCharacter === ']') { bracketDepth--; } } var baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart); var hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER); var baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier; var maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined; return { modifiers: modifiers, hasImportantModifier: hasImportantModifier, baseClassName: baseClassName, maybePostfixModifierPosition: maybePostfixModifierPosition }; }; } /** * Sorts modifiers according to following schema: * - Predefined modifiers are sorted alphabetically * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it */ function sortModifiers(modifiers) { if (modifiers.length <= 1) { return modifiers; } var sortedModifiers = []; var unsortedModifiers = []; modifiers.forEach(function (modifier) { var isArbitraryVariant = modifier[0] === '['; if (isArbitraryVariant) { sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort().concat([modifier])); unsortedModifiers = []; } else { unsortedModifiers.push(modifier); } }); sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort()); return sortedModifiers; } export { IMPORTANT_MODIFIER, createSplitModifiers, sortModifiers }; //# sourceMappingURL=modifier-utils.mjs.map