class TailwindMerge::Merger
def initialize(config: {})
def initialize(config: {}) @config = merge_config(config) @config[:important_modifier] = @config[:important_modifier].to_s @class_utils = TailwindMerge::ClassGroupUtils.new(@config) @cache = LruRedux::Cache.new(@config[:cache_size], @config[:ignore_empty_cache]) end
def merge(classes)
def merge(classes) normalized = classes.is_a?(Array) ? classes.compact.join(" ") : classes.to_s @cache.getset(normalized) do merge_class_list(normalized).freeze end end
def merge_class_list(class_list)
def merge_class_list(class_list) of class_group_ids in following format: portantModifier}{variantModifiers}{classGroupId}` mple 'float' mple 'hover:focus:bg-color' mple 'md:!pr' d = class_list.strip "" if trimmed.empty? groups_in_conflict = Set.new _classes = [] d.split(SPLIT_CLASSES_REGEX).reverse_each do |original_class_name| lt = parse_class_name(original_class_name, prefix: @config[:prefix]) xternal = result.is_external fiers = result.modifiers important_modifier = result.has_important_modifier _class_name = result.base_class_name e_postfix_modifier_position = result.maybe_postfix_modifier_position s_external rged_classes.push(original_class_name) xt postfix_modifier = maybe_postfix_modifier_position ? true : false al_base_class_name = has_postfix_modifier ? base_class_name[0...maybe_postfix_modifier_position] : base_class_name s_group_id = @class_utils.class_group_id(actual_base_class_name) ss class_group_id less has_postfix_modifier # Not a Tailwind class merged_classes << original_class_name next d ass_group_id = @class_utils.class_group_id(base_class_name) less class_group_id # Not a Tailwind class merged_classes << original_class_name next d s_postfix_modifier = false ant_modifier = sort_modifiers(modifiers, @config[:order_sensitive_modifiers]).join(":") fier_id = has_important_modifier ? "#{variant_modifier}#{IMPORTANT_MODIFIER}" : variant_modifier s_id = "#{modifier_id}#{class_group_id}" ilwind class omitted due to conflict if class_groups_in_conflict.include?(class_id) s_groups_in_conflict << class_id ss_utils.get_conflicting_class_group_ids(class_group_id, has_postfix_modifier).each do |conflicting_id| ass_groups_in_conflict << "#{modifier_id}#{conflicting_id}" ilwind class not in conflict ed_classes << original_class_name _classes.reverse.join(" ")