{"ast":null,"code":"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction _export(target, all) {\n  for (var name in all) Object.defineProperty(target, name, {\n    enumerable: true,\n    get: all[name]\n  });\n}\n_export(exports, {\n  getClassNameFromSelector: function () {\n    return getClassNameFromSelector;\n  },\n  resolveMatches: function () {\n    return resolveMatches;\n  },\n  generateRules: function () {\n    return generateRules;\n  }\n});\nconst _postcss = /*#__PURE__*/_interop_require_default(require(\"postcss\"));\nconst _postcssselectorparser = /*#__PURE__*/_interop_require_default(require(\"postcss-selector-parser\"));\nconst _parseObjectStyles = /*#__PURE__*/_interop_require_default(require(\"../util/parseObjectStyles\"));\nconst _isPlainObject = /*#__PURE__*/_interop_require_default(require(\"../util/isPlainObject\"));\nconst _prefixSelector = /*#__PURE__*/_interop_require_default(require(\"../util/prefixSelector\"));\nconst _pluginUtils = require(\"../util/pluginUtils\");\nconst _log = /*#__PURE__*/_interop_require_default(require(\"../util/log\"));\nconst _sharedState = /*#__PURE__*/_interop_require_wildcard(require(\"./sharedState\"));\nconst _formatVariantSelector = require(\"../util/formatVariantSelector\");\nconst _nameClass = require(\"../util/nameClass\");\nconst _dataTypes = require(\"../util/dataTypes\");\nconst _setupContextUtils = require(\"./setupContextUtils\");\nconst _isSyntacticallyValidPropertyValue = /*#__PURE__*/_interop_require_default(require(\"../util/isSyntacticallyValidPropertyValue\"));\nconst _splitAtTopLevelOnly = require(\"../util/splitAtTopLevelOnly.js\");\nconst _featureFlags = require(\"../featureFlags\");\nconst _applyImportantSelector = require(\"../util/applyImportantSelector\");\nfunction _interop_require_default(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== \"function\") return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n    return {\n      default: obj\n    };\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\nlet classNameParser = (0, _postcssselectorparser.default)(selectors => {\n  return selectors.first.filter(({\n    type\n  }) => type === \"class\").pop().value;\n});\nfunction getClassNameFromSelector(selector) {\n  return classNameParser.transformSync(selector);\n}\n// Generate match permutations for a class candidate, like:\n// ['ring-offset-blue', '100']\n// ['ring-offset', 'blue-100']\n// ['ring', 'offset-blue-100']\n// Example with dynamic classes:\n// ['grid-cols', '[[linename],1fr,auto]']\n// ['grid', 'cols-[[linename],1fr,auto]']\nfunction* candidatePermutations(candidate) {\n  let lastIndex = Infinity;\n  while (lastIndex >= 0) {\n    let dashIdx;\n    let wasSlash = false;\n    if (lastIndex === Infinity && candidate.endsWith(\"]\")) {\n      let bracketIdx = candidate.indexOf(\"[\");\n      // If character before `[` isn't a dash or a slash, this isn't a dynamic class\n      // eg. string[]\n      if (candidate[bracketIdx - 1] === \"-\") {\n        dashIdx = bracketIdx - 1;\n      } else if (candidate[bracketIdx - 1] === \"/\") {\n        dashIdx = bracketIdx - 1;\n        wasSlash = true;\n      } else {\n        dashIdx = -1;\n      }\n    } else if (lastIndex === Infinity && candidate.includes(\"/\")) {\n      dashIdx = candidate.lastIndexOf(\"/\");\n      wasSlash = true;\n    } else {\n      dashIdx = candidate.lastIndexOf(\"-\", lastIndex);\n    }\n    if (dashIdx < 0) {\n      break;\n    }\n    let prefix = candidate.slice(0, dashIdx);\n    let modifier = candidate.slice(wasSlash ? dashIdx : dashIdx + 1);\n    lastIndex = dashIdx - 1;\n    // TODO: This feels a bit hacky\n    if (prefix === \"\" || modifier === \"/\") {\n      continue;\n    }\n    yield [prefix, modifier];\n  }\n}\nfunction applyPrefix(matches, context) {\n  if (matches.length === 0 || context.tailwindConfig.prefix === \"\") {\n    return matches;\n  }\n  for (let match of matches) {\n    let [meta] = match;\n    if (meta.options.respectPrefix) {\n      let container = _postcss.default.root({\n        nodes: [match[1].clone()]\n      });\n      let classCandidate = match[1].raws.tailwind.classCandidate;\n      container.walkRules(r => {\n        // If this is a negative utility with a dash *before* the prefix we\n        // have to ensure that the generated selector matches the candidate\n        // Not doing this will cause `-tw-top-1` to generate the class `.tw--top-1`\n        // The disconnect between candidate <-> class can cause @apply to hard crash.\n        let shouldPrependNegative = classCandidate.startsWith(\"-\");\n        r.selector = (0, _prefixSelector.default)(context.tailwindConfig.prefix, r.selector, shouldPrependNegative);\n      });\n      match[1] = container.nodes[0];\n    }\n  }\n  return matches;\n}\nfunction applyImportant(matches, classCandidate) {\n  if (matches.length === 0) {\n    return matches;\n  }\n  let result = [];\n  for (let [meta, rule] of matches) {\n    let container = _postcss.default.root({\n      nodes: [rule.clone()]\n    });\n    container.walkRules(r => {\n      let ast = (0, _postcssselectorparser.default)().astSync(r.selector);\n      // Remove extraneous selectors that do not include the base candidate\n      ast.each(sel => (0, _formatVariantSelector.eliminateIrrelevantSelectors)(sel, classCandidate));\n      // Update all instances of the base candidate to include the important marker\n      (0, _pluginUtils.updateAllClasses)(ast, className => className === classCandidate ? `!${className}` : className);\n      r.selector = ast.toString();\n      r.walkDecls(d => d.important = true);\n    });\n    result.push([{\n      ...meta,\n      important: true\n    }, container.nodes[0]]);\n  }\n  return result;\n}\n// Takes a list of rule tuples and applies a variant like `hover`, sm`,\n// whatever to it. We used to do some extra caching here to avoid generating\n// a variant of the same rule more than once, but this was never hit because\n// we cache at the entire selector level further up the tree.\n//\n// Technically you can get a cache hit if you have `hover:focus:text-center`\n// and `focus:hover:text-center` in the same project, but it doesn't feel\n// worth the complexity for that case.\nfunction applyVariant(variant, matches, context) {\n  if (matches.length === 0) {\n    return matches;\n  }\n  /** @type {{modifier: string | null, value: string | null}} */\n  let args = {\n    modifier: null,\n    value: _sharedState.NONE\n  };\n  // Retrieve \"modifier\"\n  {\n    let [baseVariant, ...modifiers] = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(variant, \"/\");\n    // This is a hack to support variants with `/` in them, like `ar-1/10/20:text-red-500`\n    // In this case 1/10 is a value but /20 is a modifier\n    if (modifiers.length > 1) {\n      baseVariant = baseVariant + \"/\" + modifiers.slice(0, -1).join(\"/\");\n      modifiers = modifiers.slice(-1);\n    }\n    if (modifiers.length && !context.variantMap.has(variant)) {\n      variant = baseVariant;\n      args.modifier = modifiers[0];\n      if (!(0, _featureFlags.flagEnabled)(context.tailwindConfig, \"generalizedModifiers\")) {\n        return [];\n      }\n    }\n  }\n  // Retrieve \"arbitrary value\"\n  if (variant.endsWith(\"]\") && !variant.startsWith(\"[\")) {\n    // We either have:\n    //   @[200px]\n    //   group-[:hover]\n    //\n    // But we don't want:\n    //   @-[200px]        (`-` is incorrect)\n    //   group[:hover]    (`-` is missing)\n    let match = /(.)(-?)\\[(.*)\\]/g.exec(variant);\n    if (match) {\n      let [, char, separator, value] = match;\n      // @-[200px] case\n      if (char === \"@\" && separator === \"-\") return [];\n      // group[:hover] case\n      if (char !== \"@\" && separator === \"\") return [];\n      variant = variant.replace(`${separator}[${value}]`, \"\");\n      args.value = value;\n    }\n  }\n  // Register arbitrary variants\n  if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {\n    let sort = context.offsets.recordVariant(variant);\n    let selector = (0, _dataTypes.normalize)(variant.slice(1, -1));\n    let selectors = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(selector, \",\");\n    // We do not support multiple selectors for arbitrary variants\n    if (selectors.length > 1) {\n      return [];\n    }\n    if (!selectors.every(_setupContextUtils.isValidVariantFormatString)) {\n      return [];\n    }\n    let records = selectors.map((sel, idx) => [context.offsets.applyParallelOffset(sort, idx), (0, _setupContextUtils.parseVariant)(sel.trim())]);\n    context.variantMap.set(variant, records);\n  }\n  if (context.variantMap.has(variant)) {\n    var _context_variantOptions_get;\n    let isArbitraryVariant = isArbitraryValue(variant);\n    var _context_variantOptions_get_INTERNAL_FEATURES;\n    let internalFeatures = (_context_variantOptions_get_INTERNAL_FEATURES = (_context_variantOptions_get = context.variantOptions.get(variant)) === null || _context_variantOptions_get === void 0 ? void 0 : _context_variantOptions_get[_setupContextUtils.INTERNAL_FEATURES]) !== null && _context_variantOptions_get_INTERNAL_FEATURES !== void 0 ? _context_variantOptions_get_INTERNAL_FEATURES : {};\n    let variantFunctionTuples = context.variantMap.get(variant).slice();\n    let result = [];\n    let respectPrefix = (() => {\n      if (isArbitraryVariant) return false;\n      if (internalFeatures.respectPrefix === false) return false;\n      return true;\n    })();\n    for (let [meta, rule] of matches) {\n      // Don't generate variants for user css\n      if (meta.layer === \"user\") {\n        continue;\n      }\n      let container = _postcss.default.root({\n        nodes: [rule.clone()]\n      });\n      for (let [variantSort, variantFunction, containerFromArray] of variantFunctionTuples) {\n        let clone = (containerFromArray !== null && containerFromArray !== void 0 ? containerFromArray : container).clone();\n        let collectedFormats = [];\n        function prepareBackup() {\n          // Already prepared, chicken out\n          if (clone.raws.neededBackup) {\n            return;\n          }\n          clone.raws.neededBackup = true;\n          clone.walkRules(rule => rule.raws.originalSelector = rule.selector);\n        }\n        function modifySelectors(modifierFunction) {\n          prepareBackup();\n          clone.each(rule => {\n            if (rule.type !== \"rule\") {\n              return;\n            }\n            rule.selectors = rule.selectors.map(selector => {\n              return modifierFunction({\n                get className() {\n                  return getClassNameFromSelector(selector);\n                },\n                selector\n              });\n            });\n          });\n          return clone;\n        }\n        let ruleWithVariant = variantFunction({\n          // Public API\n          get container() {\n            prepareBackup();\n            return clone;\n          },\n          separator: context.tailwindConfig.separator,\n          modifySelectors,\n          // Private API for now\n          wrap(wrapper) {\n            let nodes = clone.nodes;\n            clone.removeAll();\n            wrapper.append(nodes);\n            clone.append(wrapper);\n          },\n          format(selectorFormat) {\n            collectedFormats.push({\n              format: selectorFormat,\n              respectPrefix\n            });\n          },\n          args\n        });\n        // It can happen that a list of format strings is returned from within the function. In that\n        // case, we have to process them as well. We can use the existing `variantSort`.\n        if (Array.isArray(ruleWithVariant)) {\n          for (let [idx, variantFunction] of ruleWithVariant.entries()) {\n            // This is a little bit scary since we are pushing to an array of items that we are\n            // currently looping over. However, you can also think of it like a processing queue\n            // where you keep handling jobs until everything is done and each job can queue more\n            // jobs if needed.\n            variantFunctionTuples.push([context.offsets.applyParallelOffset(variantSort, idx), variantFunction,\n            // If the clone has been modified we have to pass that back\n            // though so each rule can use the modified container\n            clone.clone()]);\n          }\n          continue;\n        }\n        if (typeof ruleWithVariant === \"string\") {\n          collectedFormats.push({\n            format: ruleWithVariant,\n            respectPrefix\n          });\n        }\n        if (ruleWithVariant === null) {\n          continue;\n        }\n        // We had to backup selectors, therefore we assume that somebody touched\n        // `container` or `modifySelectors`. Let's see if they did, so that we\n        // can restore the selectors, and collect the format strings.\n        if (clone.raws.neededBackup) {\n          delete clone.raws.neededBackup;\n          clone.walkRules(rule => {\n            let before = rule.raws.originalSelector;\n            if (!before) return;\n            delete rule.raws.originalSelector;\n            if (before === rule.selector) return; // No mutation happened\n            let modified = rule.selector;\n            // Rebuild the base selector, this is what plugin authors would do\n            // as well. E.g.: `${variant}${separator}${className}`.\n            // However, plugin authors probably also prepend or append certain\n            // classes, pseudos, ids, ...\n            let rebuiltBase = (0, _postcssselectorparser.default)(selectors => {\n              selectors.walkClasses(classNode => {\n                classNode.value = `${variant}${context.tailwindConfig.separator}${classNode.value}`;\n              });\n            }).processSync(before);\n            // Now that we know the original selector, the new selector, and\n            // the rebuild part in between, we can replace the part that plugin\n            // authors need to rebuild with `&`, and eventually store it in the\n            // collectedFormats. Similar to what `format('...')` would do.\n            //\n            // E.g.:\n            //                   variant: foo\n            //                  selector: .markdown > p\n            //      modified (by plugin): .foo .foo\\\\:markdown > p\n            //    rebuiltBase (internal): .foo\\\\:markdown > p\n            //                    format: .foo &\n            collectedFormats.push({\n              format: modified.replace(rebuiltBase, \"&\"),\n              respectPrefix\n            });\n            rule.selector = before;\n          });\n        }\n        // This tracks the originating layer for the variant\n        // For example:\n        // .sm:underline {} is a variant of something in the utilities layer\n        // .sm:container {} is a variant of the container component\n        clone.nodes[0].raws.tailwind = {\n          ...clone.nodes[0].raws.tailwind,\n          parentLayer: meta.layer\n        };\n        var _meta_collectedFormats;\n        let withOffset = [{\n          ...meta,\n          sort: context.offsets.applyVariantOffset(meta.sort, variantSort, Object.assign(args, context.variantOptions.get(variant))),\n          collectedFormats: ((_meta_collectedFormats = meta.collectedFormats) !== null && _meta_collectedFormats !== void 0 ? _meta_collectedFormats : []).concat(collectedFormats)\n        }, clone.nodes[0]];\n        result.push(withOffset);\n      }\n    }\n    return result;\n  }\n  return [];\n}\nfunction parseRules(rule, cache, options = {}) {\n  // PostCSS node\n  if (!(0, _isPlainObject.default)(rule) && !Array.isArray(rule)) {\n    return [[rule], options];\n  }\n  // Tuple\n  if (Array.isArray(rule)) {\n    return parseRules(rule[0], cache, rule[1]);\n  }\n  // Simple object\n  if (!cache.has(rule)) {\n    cache.set(rule, (0, _parseObjectStyles.default)(rule));\n  }\n  return [cache.get(rule), options];\n}\nconst IS_VALID_PROPERTY_NAME = /^[a-z_-]/;\nfunction isValidPropName(name) {\n  return IS_VALID_PROPERTY_NAME.test(name);\n}\n/**\n * @param {string} declaration\n * @returns {boolean}\n */\nfunction looksLikeUri(declaration) {\n  // Quick bailout for obvious non-urls\n  // This doesn't support schemes that don't use a leading // but that's unlikely to be a problem\n  if (!declaration.includes(\"://\")) {\n    return false;\n  }\n  try {\n    const url = new URL(declaration);\n    return url.scheme !== \"\" && url.host !== \"\";\n  } catch (err) {\n    // Definitely not a valid url\n    return false;\n  }\n}\nfunction isParsableNode(node) {\n  let isParsable = true;\n  node.walkDecls(decl => {\n    if (!isParsableCssValue(decl.prop, decl.value)) {\n      isParsable = false;\n      return false;\n    }\n  });\n  return isParsable;\n}\nfunction isParsableCssValue(property, value) {\n  // We don't want to to treat [https://example.com] as a custom property\n  // Even though, according to the CSS grammar, it's a totally valid CSS declaration\n  // So we short-circuit here by checking if the custom property looks like a url\n  if (looksLikeUri(`${property}:${value}`)) {\n    return false;\n  }\n  try {\n    _postcss.default.parse(`a{${property}:${value}}`).toResult();\n    return true;\n  } catch (err) {\n    return false;\n  }\n}\nfunction extractArbitraryProperty(classCandidate, context) {\n  var _classCandidate_match;\n  let [, property, value] = (_classCandidate_match = classCandidate.match(/^\\[([a-zA-Z0-9-_]+):(\\S+)\\]$/)) !== null && _classCandidate_match !== void 0 ? _classCandidate_match : [];\n  if (value === undefined) {\n    return null;\n  }\n  if (!isValidPropName(property)) {\n    return null;\n  }\n  if (!(0, _isSyntacticallyValidPropertyValue.default)(value)) {\n    return null;\n  }\n  let normalized = (0, _dataTypes.normalize)(value);\n  if (!isParsableCssValue(property, normalized)) {\n    return null;\n  }\n  let sort = context.offsets.arbitraryProperty();\n  return [[{\n    sort,\n    layer: \"utilities\"\n  }, () => ({\n    [(0, _nameClass.asClass)(classCandidate)]: {\n      [property]: normalized\n    }\n  })]];\n}\nfunction* resolveMatchedPlugins(classCandidate, context) {\n  if (context.candidateRuleMap.has(classCandidate)) {\n    yield [context.candidateRuleMap.get(classCandidate), \"DEFAULT\"];\n  }\n  yield* function* (arbitraryPropertyRule) {\n    if (arbitraryPropertyRule !== null) {\n      yield [arbitraryPropertyRule, \"DEFAULT\"];\n    }\n  }(extractArbitraryProperty(classCandidate, context));\n  let candidatePrefix = classCandidate;\n  let negative = false;\n  const twConfigPrefix = context.tailwindConfig.prefix;\n  const twConfigPrefixLen = twConfigPrefix.length;\n  const hasMatchingPrefix = candidatePrefix.startsWith(twConfigPrefix) || candidatePrefix.startsWith(`-${twConfigPrefix}`);\n  if (candidatePrefix[twConfigPrefixLen] === \"-\" && hasMatchingPrefix) {\n    negative = true;\n    candidatePrefix = twConfigPrefix + candidatePrefix.slice(twConfigPrefixLen + 1);\n  }\n  if (negative && context.candidateRuleMap.has(candidatePrefix)) {\n    yield [context.candidateRuleMap.get(candidatePrefix), \"-DEFAULT\"];\n  }\n  for (let [prefix, modifier] of candidatePermutations(candidatePrefix)) {\n    if (context.candidateRuleMap.has(prefix)) {\n      yield [context.candidateRuleMap.get(prefix), negative ? `-${modifier}` : modifier];\n    }\n  }\n}\nfunction splitWithSeparator(input, separator) {\n  if (input === _sharedState.NOT_ON_DEMAND) {\n    return [_sharedState.NOT_ON_DEMAND];\n  }\n  return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, separator);\n}\nfunction* recordCandidates(matches, classCandidate) {\n  for (const match of matches) {\n    var _match__options;\n    var _match__options_preserveSource;\n    match[1].raws.tailwind = {\n      ...match[1].raws.tailwind,\n      classCandidate,\n      preserveSource: (_match__options_preserveSource = (_match__options = match[0].options) === null || _match__options === void 0 ? void 0 : _match__options.preserveSource) !== null && _match__options_preserveSource !== void 0 ? _match__options_preserveSource : false\n    };\n    yield match;\n  }\n}\nfunction* resolveMatches(candidate, context, original = candidate) {\n  let separator = context.tailwindConfig.separator;\n  let [classCandidate, ...variants] = splitWithSeparator(candidate, separator).reverse();\n  let important = false;\n  if (classCandidate.startsWith(\"!\")) {\n    important = true;\n    classCandidate = classCandidate.slice(1);\n  }\n  if ((0, _featureFlags.flagEnabled)(context.tailwindConfig, \"variantGrouping\")) {\n    if (classCandidate.startsWith(\"(\") && classCandidate.endsWith(\")\")) {\n      let base = variants.slice().reverse().join(separator);\n      for (let part of (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(classCandidate.slice(1, -1), \",\")) {\n        yield* resolveMatches(base + separator + part, context, original);\n      }\n    }\n  }\n  // TODO: Reintroduce this in ways that doesn't break on false positives\n  // function sortAgainst(toSort, against) {\n  //   return toSort.slice().sort((a, z) => {\n  //     return bigSign(against.get(a)[0] - against.get(z)[0])\n  //   })\n  // }\n  // let sorted = sortAgainst(variants, context.variantMap)\n  // if (sorted.toString() !== variants.toString()) {\n  //   let corrected = sorted.reverse().concat(classCandidate).join(':')\n  //   throw new Error(`Class ${candidate} should be written as ${corrected}`)\n  // }\n  for (let matchedPlugins of resolveMatchedPlugins(classCandidate, context)) {\n    let matches = [];\n    let typesByMatches = new Map();\n    let [plugins, modifier] = matchedPlugins;\n    let isOnlyPlugin = plugins.length === 1;\n    for (let [sort, plugin] of plugins) {\n      let matchesPerPlugin = [];\n      if (typeof plugin === \"function\") {\n        for (let ruleSet of [].concat(plugin(modifier, {\n          isOnlyPlugin\n        }))) {\n          let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);\n          for (let rule of rules) {\n            matchesPerPlugin.push([{\n              ...sort,\n              options: {\n                ...sort.options,\n                ...options\n              }\n            }, rule]);\n          }\n        }\n      } else if (modifier === \"DEFAULT\" || modifier === \"-DEFAULT\") {\n        let ruleSet = plugin;\n        let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);\n        for (let rule of rules) {\n          matchesPerPlugin.push([{\n            ...sort,\n            options: {\n              ...sort.options,\n              ...options\n            }\n          }, rule]);\n        }\n      }\n      if (matchesPerPlugin.length > 0) {\n        var _sort_options;\n        var _sort_options_types, _sort_options1;\n        let matchingTypes = Array.from((0, _pluginUtils.getMatchingTypes)((_sort_options_types = (_sort_options = sort.options) === null || _sort_options === void 0 ? void 0 : _sort_options.types) !== null && _sort_options_types !== void 0 ? _sort_options_types : [], modifier, (_sort_options1 = sort.options) !== null && _sort_options1 !== void 0 ? _sort_options1 : {}, context.tailwindConfig)).map(([_, type]) => type);\n        if (matchingTypes.length > 0) {\n          typesByMatches.set(matchesPerPlugin, matchingTypes);\n        }\n        matches.push(matchesPerPlugin);\n      }\n    }\n    if (isArbitraryValue(modifier)) {\n      if (matches.length > 1) {\n        // Partition plugins in 2 categories so that we can start searching in the plugins that\n        // don't have `any` as a type first.\n        let [withAny, withoutAny] = matches.reduce((group, plugin) => {\n          let hasAnyType = plugin.some(([{\n            options\n          }]) => options.types.some(({\n            type\n          }) => type === \"any\"));\n          if (hasAnyType) {\n            group[0].push(plugin);\n          } else {\n            group[1].push(plugin);\n          }\n          return group;\n        }, [[], []]);\n        function findFallback(matches) {\n          // If only a single plugin matches, let's take that one\n          if (matches.length === 1) {\n            return matches[0];\n          }\n          // Otherwise, find the plugin that creates a valid rule given the arbitrary value, and\n          // also has the correct type which preferOnConflicts the plugin in case of clashes.\n          return matches.find(rules => {\n            let matchingTypes = typesByMatches.get(rules);\n            return rules.some(([{\n              options\n            }, rule]) => {\n              if (!isParsableNode(rule)) {\n                return false;\n              }\n              return options.types.some(({\n                type,\n                preferOnConflict\n              }) => matchingTypes.includes(type) && preferOnConflict);\n            });\n          });\n        }\n        var _findFallback;\n        // Try to find a fallback plugin, because we already know that multiple plugins matched for\n        // the given arbitrary value.\n        let fallback = (_findFallback = findFallback(withoutAny)) !== null && _findFallback !== void 0 ? _findFallback : findFallback(withAny);\n        if (fallback) {\n          matches = [fallback];\n        } else {\n          var _typesByMatches_get;\n          let typesPerPlugin = matches.map(match => new Set([...((_typesByMatches_get = typesByMatches.get(match)) !== null && _typesByMatches_get !== void 0 ? _typesByMatches_get : [])]));\n          // Remove duplicates, so that we can detect proper unique types for each plugin.\n          for (let pluginTypes of typesPerPlugin) {\n            for (let type of pluginTypes) {\n              let removeFromOwnGroup = false;\n              for (let otherGroup of typesPerPlugin) {\n                if (pluginTypes === otherGroup) continue;\n                if (otherGroup.has(type)) {\n                  otherGroup.delete(type);\n                  removeFromOwnGroup = true;\n                }\n              }\n              if (removeFromOwnGroup) pluginTypes.delete(type);\n            }\n          }\n          let messages = [];\n          for (let [idx, group] of typesPerPlugin.entries()) {\n            for (let type of group) {\n              let rules = matches[idx].map(([, rule]) => rule).flat().map(rule => rule.toString().split(\"\\n\").slice(1, -1) // Remove selector and closing '}'\n              .map(line => line.trim()).map(x => `      ${x}`) // Re-indent\n              .join(\"\\n\")).join(\"\\n\\n\");\n              messages.push(`  Use \\`${candidate.replace(\"[\", `[${type}:`)}\\` for \\`${rules.trim()}\\``);\n              break;\n            }\n          }\n          _log.default.warn([`The class \\`${candidate}\\` is ambiguous and matches multiple utilities.`, ...messages, `If this is content and not a class, replace it with \\`${candidate.replace(\"[\", \"&lsqb;\").replace(\"]\", \"&rsqb;\")}\\` to silence this warning.`]);\n          continue;\n        }\n      }\n      matches = matches.map(list => list.filter(match => isParsableNode(match[1])));\n    }\n    matches = matches.flat();\n    matches = Array.from(recordCandidates(matches, classCandidate));\n    matches = applyPrefix(matches, context);\n    if (important) {\n      matches = applyImportant(matches, classCandidate);\n    }\n    for (let variant of variants) {\n      matches = applyVariant(variant, matches, context);\n    }\n    for (let match of matches) {\n      match[1].raws.tailwind = {\n        ...match[1].raws.tailwind,\n        candidate\n      };\n      // Apply final format selector\n      match = applyFinalFormat(match, {\n        context,\n        candidate,\n        original\n      });\n      // Skip rules with invalid selectors\n      // This will cause the candidate to be added to the \"not class\"\n      // cache skipping it entirely for future builds\n      if (match === null) {\n        continue;\n      }\n      yield match;\n    }\n  }\n}\nfunction applyFinalFormat(match, {\n  context,\n  candidate,\n  original\n}) {\n  if (!match[0].collectedFormats) {\n    return match;\n  }\n  let isValid = true;\n  let finalFormat;\n  try {\n    finalFormat = (0, _formatVariantSelector.formatVariantSelector)(match[0].collectedFormats, {\n      context,\n      candidate\n    });\n  } catch {\n    // The format selector we produced is invalid\n    // This could be because:\n    // - A bug exists\n    // - A plugin introduced an invalid variant selector (ex: `addVariant('foo', '&;foo')`)\n    // - The user used an invalid arbitrary variant (ex: `[&;foo]:underline`)\n    // Either way the build will fail because of this\n    // We would rather that the build pass \"silently\" given that this could\n    // happen because of picking up invalid things when scanning content\n    // So we'll throw out the candidate instead\n    return null;\n  }\n  let container = _postcss.default.root({\n    nodes: [match[1].clone()]\n  });\n  container.walkRules(rule => {\n    if (inKeyframes(rule)) {\n      return;\n    }\n    try {\n      rule.selector = (0, _formatVariantSelector.finalizeSelector)(rule.selector, finalFormat, {\n        candidate: original,\n        context\n      });\n    } catch {\n      // If this selector is invalid we also want to skip it\n      // But it's likely that being invalid here means there's a bug in a plugin rather than too loosely matching content\n      isValid = false;\n      return false;\n    }\n  });\n  if (!isValid) {\n    return null;\n  }\n  match[1] = container.nodes[0];\n  return match;\n}\nfunction inKeyframes(rule) {\n  return rule.parent && rule.parent.type === \"atrule\" && rule.parent.name === \"keyframes\";\n}\nfunction getImportantStrategy(important) {\n  if (important === true) {\n    return rule => {\n      if (inKeyframes(rule)) {\n        return;\n      }\n      rule.walkDecls(d => {\n        if (d.parent.type === \"rule\" && !inKeyframes(d.parent)) {\n          d.important = true;\n        }\n      });\n    };\n  }\n  if (typeof important === \"string\") {\n    return rule => {\n      if (inKeyframes(rule)) {\n        return;\n      }\n      rule.selectors = rule.selectors.map(selector => {\n        return (0, _applyImportantSelector.applyImportantSelector)(selector, important);\n      });\n    };\n  }\n}\nfunction generateRules(candidates, context) {\n  let allRules = [];\n  let strategy = getImportantStrategy(context.tailwindConfig.important);\n  for (let candidate of candidates) {\n    if (context.notClassCache.has(candidate)) {\n      continue;\n    }\n    if (context.candidateRuleCache.has(candidate)) {\n      allRules = allRules.concat(Array.from(context.candidateRuleCache.get(candidate)));\n      continue;\n    }\n    let matches = Array.from(resolveMatches(candidate, context));\n    if (matches.length === 0) {\n      context.notClassCache.add(candidate);\n      continue;\n    }\n    context.classCache.set(candidate, matches);\n    var _context_candidateRuleCache_get;\n    let rules = (_context_candidateRuleCache_get = context.candidateRuleCache.get(candidate)) !== null && _context_candidateRuleCache_get !== void 0 ? _context_candidateRuleCache_get : new Set();\n    context.candidateRuleCache.set(candidate, rules);\n    for (const match of matches) {\n      let [{\n        sort,\n        options\n      }, rule] = match;\n      if (options.respectImportant && strategy) {\n        let container = _postcss.default.root({\n          nodes: [rule.clone()]\n        });\n        container.walkRules(strategy);\n        rule = container.nodes[0];\n      }\n      let newEntry = [sort, rule];\n      rules.add(newEntry);\n      context.ruleCache.add(newEntry);\n      allRules.push(newEntry);\n    }\n  }\n  return allRules;\n}\nfunction isArbitraryValue(input) {\n  return input.startsWith(\"[\") && input.endsWith(\"]\");\n}","map":{"version":3,"names":["Object","defineProperty","exports","value","_export","target","all","name","enumerable","get","getClassNameFromSelector","resolveMatches","generateRules","_postcss","_interop_require_default","require","_postcssselectorparser","_parseObjectStyles","_isPlainObject","_prefixSelector","_pluginUtils","_log","_sharedState","_interop_require_wildcard","_formatVariantSelector","_nameClass","_dataTypes","_setupContextUtils","_isSyntacticallyValidPropertyValue","_splitAtTopLevelOnly","_featureFlags","_applyImportantSelector","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","classNameParser","selectors","first","filter","type","pop","selector","transformSync","candidatePermutations","candidate","lastIndex","Infinity","dashIdx","wasSlash","endsWith","bracketIdx","indexOf","includes","lastIndexOf","prefix","slice","modifier","applyPrefix","matches","context","length","tailwindConfig","match","meta","options","respectPrefix","container","root","nodes","clone","classCandidate","raws","tailwind","walkRules","r","shouldPrependNegative","startsWith","applyImportant","result","rule","ast","astSync","each","sel","eliminateIrrelevantSelectors","updateAllClasses","className","toString","walkDecls","d","important","push","applyVariant","variant","args","NONE","baseVariant","modifiers","splitAtTopLevelOnly","join","variantMap","flagEnabled","exec","char","separator","replace","isArbitraryValue","sort","offsets","recordVariant","normalize","every","isValidVariantFormatString","records","map","idx","applyParallelOffset","parseVariant","trim","_context_variantOptions_get","isArbitraryVariant","_context_variantOptions_get_INTERNAL_FEATURES","internalFeatures","variantOptions","INTERNAL_FEATURES","variantFunctionTuples","layer","variantSort","variantFunction","containerFromArray","collectedFormats","prepareBackup","neededBackup","originalSelector","modifySelectors","modifierFunction","ruleWithVariant","wrap","wrapper","removeAll","append","format","selectorFormat","Array","isArray","entries","before","modified","rebuiltBase","walkClasses","classNode","processSync","parentLayer","_meta_collectedFormats","withOffset","applyVariantOffset","assign","concat","parseRules","IS_VALID_PROPERTY_NAME","isValidPropName","test","looksLikeUri","declaration","url","URL","scheme","host","err","isParsableNode","node","isParsable","decl","isParsableCssValue","prop","property","parse","toResult","extractArbitraryProperty","_classCandidate_match","undefined","normalized","arbitraryProperty","asClass","resolveMatchedPlugins","candidateRuleMap","arbitraryPropertyRule","candidatePrefix","negative","twConfigPrefix","twConfigPrefixLen","hasMatchingPrefix","splitWithSeparator","input","NOT_ON_DEMAND","recordCandidates","_match__options","_match__options_preserveSource","preserveSource","original","variants","reverse","base","part","matchedPlugins","typesByMatches","Map","plugins","isOnlyPlugin","plugin","matchesPerPlugin","ruleSet","rules","postCssNodeCache","_sort_options","_sort_options_types","_sort_options1","matchingTypes","from","getMatchingTypes","types","_","withAny","withoutAny","reduce","group","hasAnyType","some","findFallback","find","preferOnConflict","_findFallback","fallback","_typesByMatches_get","typesPerPlugin","Set","pluginTypes","removeFromOwnGroup","otherGroup","delete","messages","flat","split","line","x","warn","list","applyFinalFormat","isValid","finalFormat","formatVariantSelector","inKeyframes","finalizeSelector","parent","getImportantStrategy","applyImportantSelector","candidates","allRules","strategy","notClassCache","candidateRuleCache","add","classCache","_context_candidateRuleCache_get","respectImportant","newEntry","ruleCache"],"sources":["C:/Users/user/Desktop/000newport/node_modules/tailwindcss/lib/lib/generateRules.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    getClassNameFromSelector: function() {\n        return getClassNameFromSelector;\n    },\n    resolveMatches: function() {\n        return resolveMatches;\n    },\n    generateRules: function() {\n        return generateRules;\n    }\n});\nconst _postcss = /*#__PURE__*/ _interop_require_default(require(\"postcss\"));\nconst _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require(\"postcss-selector-parser\"));\nconst _parseObjectStyles = /*#__PURE__*/ _interop_require_default(require(\"../util/parseObjectStyles\"));\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"../util/isPlainObject\"));\nconst _prefixSelector = /*#__PURE__*/ _interop_require_default(require(\"../util/prefixSelector\"));\nconst _pluginUtils = require(\"../util/pluginUtils\");\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nconst _sharedState = /*#__PURE__*/ _interop_require_wildcard(require(\"./sharedState\"));\nconst _formatVariantSelector = require(\"../util/formatVariantSelector\");\nconst _nameClass = require(\"../util/nameClass\");\nconst _dataTypes = require(\"../util/dataTypes\");\nconst _setupContextUtils = require(\"./setupContextUtils\");\nconst _isSyntacticallyValidPropertyValue = /*#__PURE__*/ _interop_require_default(require(\"../util/isSyntacticallyValidPropertyValue\"));\nconst _splitAtTopLevelOnly = require(\"../util/splitAtTopLevelOnly.js\");\nconst _featureFlags = require(\"../featureFlags\");\nconst _applyImportantSelector = require(\"../util/applyImportantSelector\");\nfunction _interop_require_default(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n    if (typeof WeakMap !== \"function\") return null;\n    var cacheBabelInterop = new WeakMap();\n    var cacheNodeInterop = new WeakMap();\n    return (_getRequireWildcardCache = function(nodeInterop) {\n        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n    })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n    if (!nodeInterop && obj && obj.__esModule) {\n        return obj;\n    }\n    if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n        return {\n            default: obj\n        };\n    }\n    var cache = _getRequireWildcardCache(nodeInterop);\n    if (cache && cache.has(obj)) {\n        return cache.get(obj);\n    }\n    var newObj = {};\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n    for(var key in obj){\n        if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n            if (desc && (desc.get || desc.set)) {\n                Object.defineProperty(newObj, key, desc);\n            } else {\n                newObj[key] = obj[key];\n            }\n        }\n    }\n    newObj.default = obj;\n    if (cache) {\n        cache.set(obj, newObj);\n    }\n    return newObj;\n}\nlet classNameParser = (0, _postcssselectorparser.default)((selectors)=>{\n    return selectors.first.filter(({ type  })=>type === \"class\").pop().value;\n});\nfunction getClassNameFromSelector(selector) {\n    return classNameParser.transformSync(selector);\n}\n// Generate match permutations for a class candidate, like:\n// ['ring-offset-blue', '100']\n// ['ring-offset', 'blue-100']\n// ['ring', 'offset-blue-100']\n// Example with dynamic classes:\n// ['grid-cols', '[[linename],1fr,auto]']\n// ['grid', 'cols-[[linename],1fr,auto]']\nfunction* candidatePermutations(candidate) {\n    let lastIndex = Infinity;\n    while(lastIndex >= 0){\n        let dashIdx;\n        let wasSlash = false;\n        if (lastIndex === Infinity && candidate.endsWith(\"]\")) {\n            let bracketIdx = candidate.indexOf(\"[\");\n            // If character before `[` isn't a dash or a slash, this isn't a dynamic class\n            // eg. string[]\n            if (candidate[bracketIdx - 1] === \"-\") {\n                dashIdx = bracketIdx - 1;\n            } else if (candidate[bracketIdx - 1] === \"/\") {\n                dashIdx = bracketIdx - 1;\n                wasSlash = true;\n            } else {\n                dashIdx = -1;\n            }\n        } else if (lastIndex === Infinity && candidate.includes(\"/\")) {\n            dashIdx = candidate.lastIndexOf(\"/\");\n            wasSlash = true;\n        } else {\n            dashIdx = candidate.lastIndexOf(\"-\", lastIndex);\n        }\n        if (dashIdx < 0) {\n            break;\n        }\n        let prefix = candidate.slice(0, dashIdx);\n        let modifier = candidate.slice(wasSlash ? dashIdx : dashIdx + 1);\n        lastIndex = dashIdx - 1;\n        // TODO: This feels a bit hacky\n        if (prefix === \"\" || modifier === \"/\") {\n            continue;\n        }\n        yield [\n            prefix,\n            modifier\n        ];\n    }\n}\nfunction applyPrefix(matches, context) {\n    if (matches.length === 0 || context.tailwindConfig.prefix === \"\") {\n        return matches;\n    }\n    for (let match of matches){\n        let [meta] = match;\n        if (meta.options.respectPrefix) {\n            let container = _postcss.default.root({\n                nodes: [\n                    match[1].clone()\n                ]\n            });\n            let classCandidate = match[1].raws.tailwind.classCandidate;\n            container.walkRules((r)=>{\n                // If this is a negative utility with a dash *before* the prefix we\n                // have to ensure that the generated selector matches the candidate\n                // Not doing this will cause `-tw-top-1` to generate the class `.tw--top-1`\n                // The disconnect between candidate <-> class can cause @apply to hard crash.\n                let shouldPrependNegative = classCandidate.startsWith(\"-\");\n                r.selector = (0, _prefixSelector.default)(context.tailwindConfig.prefix, r.selector, shouldPrependNegative);\n            });\n            match[1] = container.nodes[0];\n        }\n    }\n    return matches;\n}\nfunction applyImportant(matches, classCandidate) {\n    if (matches.length === 0) {\n        return matches;\n    }\n    let result = [];\n    for (let [meta, rule] of matches){\n        let container = _postcss.default.root({\n            nodes: [\n                rule.clone()\n            ]\n        });\n        container.walkRules((r)=>{\n            let ast = (0, _postcssselectorparser.default)().astSync(r.selector);\n            // Remove extraneous selectors that do not include the base candidate\n            ast.each((sel)=>(0, _formatVariantSelector.eliminateIrrelevantSelectors)(sel, classCandidate));\n            // Update all instances of the base candidate to include the important marker\n            (0, _pluginUtils.updateAllClasses)(ast, (className)=>className === classCandidate ? `!${className}` : className);\n            r.selector = ast.toString();\n            r.walkDecls((d)=>d.important = true);\n        });\n        result.push([\n            {\n                ...meta,\n                important: true\n            },\n            container.nodes[0]\n        ]);\n    }\n    return result;\n}\n// Takes a list of rule tuples and applies a variant like `hover`, sm`,\n// whatever to it. We used to do some extra caching here to avoid generating\n// a variant of the same rule more than once, but this was never hit because\n// we cache at the entire selector level further up the tree.\n//\n// Technically you can get a cache hit if you have `hover:focus:text-center`\n// and `focus:hover:text-center` in the same project, but it doesn't feel\n// worth the complexity for that case.\nfunction applyVariant(variant, matches, context) {\n    if (matches.length === 0) {\n        return matches;\n    }\n    /** @type {{modifier: string | null, value: string | null}} */ let args = {\n        modifier: null,\n        value: _sharedState.NONE\n    };\n    // Retrieve \"modifier\"\n    {\n        let [baseVariant, ...modifiers] = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(variant, \"/\");\n        // This is a hack to support variants with `/` in them, like `ar-1/10/20:text-red-500`\n        // In this case 1/10 is a value but /20 is a modifier\n        if (modifiers.length > 1) {\n            baseVariant = baseVariant + \"/\" + modifiers.slice(0, -1).join(\"/\");\n            modifiers = modifiers.slice(-1);\n        }\n        if (modifiers.length && !context.variantMap.has(variant)) {\n            variant = baseVariant;\n            args.modifier = modifiers[0];\n            if (!(0, _featureFlags.flagEnabled)(context.tailwindConfig, \"generalizedModifiers\")) {\n                return [];\n            }\n        }\n    }\n    // Retrieve \"arbitrary value\"\n    if (variant.endsWith(\"]\") && !variant.startsWith(\"[\")) {\n        // We either have:\n        //   @[200px]\n        //   group-[:hover]\n        //\n        // But we don't want:\n        //   @-[200px]        (`-` is incorrect)\n        //   group[:hover]    (`-` is missing)\n        let match = /(.)(-?)\\[(.*)\\]/g.exec(variant);\n        if (match) {\n            let [, char, separator, value] = match;\n            // @-[200px] case\n            if (char === \"@\" && separator === \"-\") return [];\n            // group[:hover] case\n            if (char !== \"@\" && separator === \"\") return [];\n            variant = variant.replace(`${separator}[${value}]`, \"\");\n            args.value = value;\n        }\n    }\n    // Register arbitrary variants\n    if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {\n        let sort = context.offsets.recordVariant(variant);\n        let selector = (0, _dataTypes.normalize)(variant.slice(1, -1));\n        let selectors = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(selector, \",\");\n        // We do not support multiple selectors for arbitrary variants\n        if (selectors.length > 1) {\n            return [];\n        }\n        if (!selectors.every(_setupContextUtils.isValidVariantFormatString)) {\n            return [];\n        }\n        let records = selectors.map((sel, idx)=>[\n                context.offsets.applyParallelOffset(sort, idx),\n                (0, _setupContextUtils.parseVariant)(sel.trim())\n            ]);\n        context.variantMap.set(variant, records);\n    }\n    if (context.variantMap.has(variant)) {\n        var _context_variantOptions_get;\n        let isArbitraryVariant = isArbitraryValue(variant);\n        var _context_variantOptions_get_INTERNAL_FEATURES;\n        let internalFeatures = (_context_variantOptions_get_INTERNAL_FEATURES = (_context_variantOptions_get = context.variantOptions.get(variant)) === null || _context_variantOptions_get === void 0 ? void 0 : _context_variantOptions_get[_setupContextUtils.INTERNAL_FEATURES]) !== null && _context_variantOptions_get_INTERNAL_FEATURES !== void 0 ? _context_variantOptions_get_INTERNAL_FEATURES : {};\n        let variantFunctionTuples = context.variantMap.get(variant).slice();\n        let result = [];\n        let respectPrefix = (()=>{\n            if (isArbitraryVariant) return false;\n            if (internalFeatures.respectPrefix === false) return false;\n            return true;\n        })();\n        for (let [meta, rule] of matches){\n            // Don't generate variants for user css\n            if (meta.layer === \"user\") {\n                continue;\n            }\n            let container = _postcss.default.root({\n                nodes: [\n                    rule.clone()\n                ]\n            });\n            for (let [variantSort, variantFunction, containerFromArray] of variantFunctionTuples){\n                let clone = (containerFromArray !== null && containerFromArray !== void 0 ? containerFromArray : container).clone();\n                let collectedFormats = [];\n                function prepareBackup() {\n                    // Already prepared, chicken out\n                    if (clone.raws.neededBackup) {\n                        return;\n                    }\n                    clone.raws.neededBackup = true;\n                    clone.walkRules((rule)=>rule.raws.originalSelector = rule.selector);\n                }\n                function modifySelectors(modifierFunction) {\n                    prepareBackup();\n                    clone.each((rule)=>{\n                        if (rule.type !== \"rule\") {\n                            return;\n                        }\n                        rule.selectors = rule.selectors.map((selector)=>{\n                            return modifierFunction({\n                                get className () {\n                                    return getClassNameFromSelector(selector);\n                                },\n                                selector\n                            });\n                        });\n                    });\n                    return clone;\n                }\n                let ruleWithVariant = variantFunction({\n                    // Public API\n                    get container () {\n                        prepareBackup();\n                        return clone;\n                    },\n                    separator: context.tailwindConfig.separator,\n                    modifySelectors,\n                    // Private API for now\n                    wrap (wrapper) {\n                        let nodes = clone.nodes;\n                        clone.removeAll();\n                        wrapper.append(nodes);\n                        clone.append(wrapper);\n                    },\n                    format (selectorFormat) {\n                        collectedFormats.push({\n                            format: selectorFormat,\n                            respectPrefix\n                        });\n                    },\n                    args\n                });\n                // It can happen that a list of format strings is returned from within the function. In that\n                // case, we have to process them as well. We can use the existing `variantSort`.\n                if (Array.isArray(ruleWithVariant)) {\n                    for (let [idx, variantFunction] of ruleWithVariant.entries()){\n                        // This is a little bit scary since we are pushing to an array of items that we are\n                        // currently looping over. However, you can also think of it like a processing queue\n                        // where you keep handling jobs until everything is done and each job can queue more\n                        // jobs if needed.\n                        variantFunctionTuples.push([\n                            context.offsets.applyParallelOffset(variantSort, idx),\n                            variantFunction,\n                            // If the clone has been modified we have to pass that back\n                            // though so each rule can use the modified container\n                            clone.clone()\n                        ]);\n                    }\n                    continue;\n                }\n                if (typeof ruleWithVariant === \"string\") {\n                    collectedFormats.push({\n                        format: ruleWithVariant,\n                        respectPrefix\n                    });\n                }\n                if (ruleWithVariant === null) {\n                    continue;\n                }\n                // We had to backup selectors, therefore we assume that somebody touched\n                // `container` or `modifySelectors`. Let's see if they did, so that we\n                // can restore the selectors, and collect the format strings.\n                if (clone.raws.neededBackup) {\n                    delete clone.raws.neededBackup;\n                    clone.walkRules((rule)=>{\n                        let before = rule.raws.originalSelector;\n                        if (!before) return;\n                        delete rule.raws.originalSelector;\n                        if (before === rule.selector) return; // No mutation happened\n                        let modified = rule.selector;\n                        // Rebuild the base selector, this is what plugin authors would do\n                        // as well. E.g.: `${variant}${separator}${className}`.\n                        // However, plugin authors probably also prepend or append certain\n                        // classes, pseudos, ids, ...\n                        let rebuiltBase = (0, _postcssselectorparser.default)((selectors)=>{\n                            selectors.walkClasses((classNode)=>{\n                                classNode.value = `${variant}${context.tailwindConfig.separator}${classNode.value}`;\n                            });\n                        }).processSync(before);\n                        // Now that we know the original selector, the new selector, and\n                        // the rebuild part in between, we can replace the part that plugin\n                        // authors need to rebuild with `&`, and eventually store it in the\n                        // collectedFormats. Similar to what `format('...')` would do.\n                        //\n                        // E.g.:\n                        //                   variant: foo\n                        //                  selector: .markdown > p\n                        //      modified (by plugin): .foo .foo\\\\:markdown > p\n                        //    rebuiltBase (internal): .foo\\\\:markdown > p\n                        //                    format: .foo &\n                        collectedFormats.push({\n                            format: modified.replace(rebuiltBase, \"&\"),\n                            respectPrefix\n                        });\n                        rule.selector = before;\n                    });\n                }\n                // This tracks the originating layer for the variant\n                // For example:\n                // .sm:underline {} is a variant of something in the utilities layer\n                // .sm:container {} is a variant of the container component\n                clone.nodes[0].raws.tailwind = {\n                    ...clone.nodes[0].raws.tailwind,\n                    parentLayer: meta.layer\n                };\n                var _meta_collectedFormats;\n                let withOffset = [\n                    {\n                        ...meta,\n                        sort: context.offsets.applyVariantOffset(meta.sort, variantSort, Object.assign(args, context.variantOptions.get(variant))),\n                        collectedFormats: ((_meta_collectedFormats = meta.collectedFormats) !== null && _meta_collectedFormats !== void 0 ? _meta_collectedFormats : []).concat(collectedFormats)\n                    },\n                    clone.nodes[0]\n                ];\n                result.push(withOffset);\n            }\n        }\n        return result;\n    }\n    return [];\n}\nfunction parseRules(rule, cache, options = {}) {\n    // PostCSS node\n    if (!(0, _isPlainObject.default)(rule) && !Array.isArray(rule)) {\n        return [\n            [\n                rule\n            ],\n            options\n        ];\n    }\n    // Tuple\n    if (Array.isArray(rule)) {\n        return parseRules(rule[0], cache, rule[1]);\n    }\n    // Simple object\n    if (!cache.has(rule)) {\n        cache.set(rule, (0, _parseObjectStyles.default)(rule));\n    }\n    return [\n        cache.get(rule),\n        options\n    ];\n}\nconst IS_VALID_PROPERTY_NAME = /^[a-z_-]/;\nfunction isValidPropName(name) {\n    return IS_VALID_PROPERTY_NAME.test(name);\n}\n/**\n * @param {string} declaration\n * @returns {boolean}\n */ function looksLikeUri(declaration) {\n    // Quick bailout for obvious non-urls\n    // This doesn't support schemes that don't use a leading // but that's unlikely to be a problem\n    if (!declaration.includes(\"://\")) {\n        return false;\n    }\n    try {\n        const url = new URL(declaration);\n        return url.scheme !== \"\" && url.host !== \"\";\n    } catch (err) {\n        // Definitely not a valid url\n        return false;\n    }\n}\nfunction isParsableNode(node) {\n    let isParsable = true;\n    node.walkDecls((decl)=>{\n        if (!isParsableCssValue(decl.prop, decl.value)) {\n            isParsable = false;\n            return false;\n        }\n    });\n    return isParsable;\n}\nfunction isParsableCssValue(property, value) {\n    // We don't want to to treat [https://example.com] as a custom property\n    // Even though, according to the CSS grammar, it's a totally valid CSS declaration\n    // So we short-circuit here by checking if the custom property looks like a url\n    if (looksLikeUri(`${property}:${value}`)) {\n        return false;\n    }\n    try {\n        _postcss.default.parse(`a{${property}:${value}}`).toResult();\n        return true;\n    } catch (err) {\n        return false;\n    }\n}\nfunction extractArbitraryProperty(classCandidate, context) {\n    var _classCandidate_match;\n    let [, property, value] = (_classCandidate_match = classCandidate.match(/^\\[([a-zA-Z0-9-_]+):(\\S+)\\]$/)) !== null && _classCandidate_match !== void 0 ? _classCandidate_match : [];\n    if (value === undefined) {\n        return null;\n    }\n    if (!isValidPropName(property)) {\n        return null;\n    }\n    if (!(0, _isSyntacticallyValidPropertyValue.default)(value)) {\n        return null;\n    }\n    let normalized = (0, _dataTypes.normalize)(value);\n    if (!isParsableCssValue(property, normalized)) {\n        return null;\n    }\n    let sort = context.offsets.arbitraryProperty();\n    return [\n        [\n            {\n                sort,\n                layer: \"utilities\"\n            },\n            ()=>({\n                    [(0, _nameClass.asClass)(classCandidate)]: {\n                        [property]: normalized\n                    }\n                })\n        ]\n    ];\n}\nfunction* resolveMatchedPlugins(classCandidate, context) {\n    if (context.candidateRuleMap.has(classCandidate)) {\n        yield [\n            context.candidateRuleMap.get(classCandidate),\n            \"DEFAULT\"\n        ];\n    }\n    yield* function*(arbitraryPropertyRule) {\n        if (arbitraryPropertyRule !== null) {\n            yield [\n                arbitraryPropertyRule,\n                \"DEFAULT\"\n            ];\n        }\n    }(extractArbitraryProperty(classCandidate, context));\n    let candidatePrefix = classCandidate;\n    let negative = false;\n    const twConfigPrefix = context.tailwindConfig.prefix;\n    const twConfigPrefixLen = twConfigPrefix.length;\n    const hasMatchingPrefix = candidatePrefix.startsWith(twConfigPrefix) || candidatePrefix.startsWith(`-${twConfigPrefix}`);\n    if (candidatePrefix[twConfigPrefixLen] === \"-\" && hasMatchingPrefix) {\n        negative = true;\n        candidatePrefix = twConfigPrefix + candidatePrefix.slice(twConfigPrefixLen + 1);\n    }\n    if (negative && context.candidateRuleMap.has(candidatePrefix)) {\n        yield [\n            context.candidateRuleMap.get(candidatePrefix),\n            \"-DEFAULT\"\n        ];\n    }\n    for (let [prefix, modifier] of candidatePermutations(candidatePrefix)){\n        if (context.candidateRuleMap.has(prefix)) {\n            yield [\n                context.candidateRuleMap.get(prefix),\n                negative ? `-${modifier}` : modifier\n            ];\n        }\n    }\n}\nfunction splitWithSeparator(input, separator) {\n    if (input === _sharedState.NOT_ON_DEMAND) {\n        return [\n            _sharedState.NOT_ON_DEMAND\n        ];\n    }\n    return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, separator);\n}\nfunction* recordCandidates(matches, classCandidate) {\n    for (const match of matches){\n        var _match__options;\n        var _match__options_preserveSource;\n        match[1].raws.tailwind = {\n            ...match[1].raws.tailwind,\n            classCandidate,\n            preserveSource: (_match__options_preserveSource = (_match__options = match[0].options) === null || _match__options === void 0 ? void 0 : _match__options.preserveSource) !== null && _match__options_preserveSource !== void 0 ? _match__options_preserveSource : false\n        };\n        yield match;\n    }\n}\nfunction* resolveMatches(candidate, context, original = candidate) {\n    let separator = context.tailwindConfig.separator;\n    let [classCandidate, ...variants] = splitWithSeparator(candidate, separator).reverse();\n    let important = false;\n    if (classCandidate.startsWith(\"!\")) {\n        important = true;\n        classCandidate = classCandidate.slice(1);\n    }\n    if ((0, _featureFlags.flagEnabled)(context.tailwindConfig, \"variantGrouping\")) {\n        if (classCandidate.startsWith(\"(\") && classCandidate.endsWith(\")\")) {\n            let base = variants.slice().reverse().join(separator);\n            for (let part of (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(classCandidate.slice(1, -1), \",\")){\n                yield* resolveMatches(base + separator + part, context, original);\n            }\n        }\n    }\n    // TODO: Reintroduce this in ways that doesn't break on false positives\n    // function sortAgainst(toSort, against) {\n    //   return toSort.slice().sort((a, z) => {\n    //     return bigSign(against.get(a)[0] - against.get(z)[0])\n    //   })\n    // }\n    // let sorted = sortAgainst(variants, context.variantMap)\n    // if (sorted.toString() !== variants.toString()) {\n    //   let corrected = sorted.reverse().concat(classCandidate).join(':')\n    //   throw new Error(`Class ${candidate} should be written as ${corrected}`)\n    // }\n    for (let matchedPlugins of resolveMatchedPlugins(classCandidate, context)){\n        let matches = [];\n        let typesByMatches = new Map();\n        let [plugins, modifier] = matchedPlugins;\n        let isOnlyPlugin = plugins.length === 1;\n        for (let [sort, plugin] of plugins){\n            let matchesPerPlugin = [];\n            if (typeof plugin === \"function\") {\n                for (let ruleSet of [].concat(plugin(modifier, {\n                    isOnlyPlugin\n                }))){\n                    let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);\n                    for (let rule of rules){\n                        matchesPerPlugin.push([\n                            {\n                                ...sort,\n                                options: {\n                                    ...sort.options,\n                                    ...options\n                                }\n                            },\n                            rule\n                        ]);\n                    }\n                }\n            } else if (modifier === \"DEFAULT\" || modifier === \"-DEFAULT\") {\n                let ruleSet = plugin;\n                let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);\n                for (let rule of rules){\n                    matchesPerPlugin.push([\n                        {\n                            ...sort,\n                            options: {\n                                ...sort.options,\n                                ...options\n                            }\n                        },\n                        rule\n                    ]);\n                }\n            }\n            if (matchesPerPlugin.length > 0) {\n                var _sort_options;\n                var _sort_options_types, _sort_options1;\n                let matchingTypes = Array.from((0, _pluginUtils.getMatchingTypes)((_sort_options_types = (_sort_options = sort.options) === null || _sort_options === void 0 ? void 0 : _sort_options.types) !== null && _sort_options_types !== void 0 ? _sort_options_types : [], modifier, (_sort_options1 = sort.options) !== null && _sort_options1 !== void 0 ? _sort_options1 : {}, context.tailwindConfig)).map(([_, type])=>type);\n                if (matchingTypes.length > 0) {\n                    typesByMatches.set(matchesPerPlugin, matchingTypes);\n                }\n                matches.push(matchesPerPlugin);\n            }\n        }\n        if (isArbitraryValue(modifier)) {\n            if (matches.length > 1) {\n                // Partition plugins in 2 categories so that we can start searching in the plugins that\n                // don't have `any` as a type first.\n                let [withAny, withoutAny] = matches.reduce((group, plugin)=>{\n                    let hasAnyType = plugin.some(([{ options  }])=>options.types.some(({ type  })=>type === \"any\"));\n                    if (hasAnyType) {\n                        group[0].push(plugin);\n                    } else {\n                        group[1].push(plugin);\n                    }\n                    return group;\n                }, [\n                    [],\n                    []\n                ]);\n                function findFallback(matches) {\n                    // If only a single plugin matches, let's take that one\n                    if (matches.length === 1) {\n                        return matches[0];\n                    }\n                    // Otherwise, find the plugin that creates a valid rule given the arbitrary value, and\n                    // also has the correct type which preferOnConflicts the plugin in case of clashes.\n                    return matches.find((rules)=>{\n                        let matchingTypes = typesByMatches.get(rules);\n                        return rules.some(([{ options  }, rule])=>{\n                            if (!isParsableNode(rule)) {\n                                return false;\n                            }\n                            return options.types.some(({ type , preferOnConflict  })=>matchingTypes.includes(type) && preferOnConflict);\n                        });\n                    });\n                }\n                var _findFallback;\n                // Try to find a fallback plugin, because we already know that multiple plugins matched for\n                // the given arbitrary value.\n                let fallback = (_findFallback = findFallback(withoutAny)) !== null && _findFallback !== void 0 ? _findFallback : findFallback(withAny);\n                if (fallback) {\n                    matches = [\n                        fallback\n                    ];\n                } else {\n                    var _typesByMatches_get;\n                    let typesPerPlugin = matches.map((match)=>new Set([\n                            ...(_typesByMatches_get = typesByMatches.get(match)) !== null && _typesByMatches_get !== void 0 ? _typesByMatches_get : []\n                        ]));\n                    // Remove duplicates, so that we can detect proper unique types for each plugin.\n                    for (let pluginTypes of typesPerPlugin){\n                        for (let type of pluginTypes){\n                            let removeFromOwnGroup = false;\n                            for (let otherGroup of typesPerPlugin){\n                                if (pluginTypes === otherGroup) continue;\n                                if (otherGroup.has(type)) {\n                                    otherGroup.delete(type);\n                                    removeFromOwnGroup = true;\n                                }\n                            }\n                            if (removeFromOwnGroup) pluginTypes.delete(type);\n                        }\n                    }\n                    let messages = [];\n                    for (let [idx, group] of typesPerPlugin.entries()){\n                        for (let type of group){\n                            let rules = matches[idx].map(([, rule])=>rule).flat().map((rule)=>rule.toString().split(\"\\n\").slice(1, -1) // Remove selector and closing '}'\n                                .map((line)=>line.trim()).map((x)=>`      ${x}`) // Re-indent\n                                .join(\"\\n\")).join(\"\\n\\n\");\n                            messages.push(`  Use \\`${candidate.replace(\"[\", `[${type}:`)}\\` for \\`${rules.trim()}\\``);\n                            break;\n                        }\n                    }\n                    _log.default.warn([\n                        `The class \\`${candidate}\\` is ambiguous and matches multiple utilities.`,\n                        ...messages,\n                        `If this is content and not a class, replace it with \\`${candidate.replace(\"[\", \"&lsqb;\").replace(\"]\", \"&rsqb;\")}\\` to silence this warning.`\n                    ]);\n                    continue;\n                }\n            }\n            matches = matches.map((list)=>list.filter((match)=>isParsableNode(match[1])));\n        }\n        matches = matches.flat();\n        matches = Array.from(recordCandidates(matches, classCandidate));\n        matches = applyPrefix(matches, context);\n        if (important) {\n            matches = applyImportant(matches, classCandidate);\n        }\n        for (let variant of variants){\n            matches = applyVariant(variant, matches, context);\n        }\n        for (let match of matches){\n            match[1].raws.tailwind = {\n                ...match[1].raws.tailwind,\n                candidate\n            };\n            // Apply final format selector\n            match = applyFinalFormat(match, {\n                context,\n                candidate,\n                original\n            });\n            // Skip rules with invalid selectors\n            // This will cause the candidate to be added to the \"not class\"\n            // cache skipping it entirely for future builds\n            if (match === null) {\n                continue;\n            }\n            yield match;\n        }\n    }\n}\nfunction applyFinalFormat(match, { context , candidate , original  }) {\n    if (!match[0].collectedFormats) {\n        return match;\n    }\n    let isValid = true;\n    let finalFormat;\n    try {\n        finalFormat = (0, _formatVariantSelector.formatVariantSelector)(match[0].collectedFormats, {\n            context,\n            candidate\n        });\n    } catch  {\n        // The format selector we produced is invalid\n        // This could be because:\n        // - A bug exists\n        // - A plugin introduced an invalid variant selector (ex: `addVariant('foo', '&;foo')`)\n        // - The user used an invalid arbitrary variant (ex: `[&;foo]:underline`)\n        // Either way the build will fail because of this\n        // We would rather that the build pass \"silently\" given that this could\n        // happen because of picking up invalid things when scanning content\n        // So we'll throw out the candidate instead\n        return null;\n    }\n    let container = _postcss.default.root({\n        nodes: [\n            match[1].clone()\n        ]\n    });\n    container.walkRules((rule)=>{\n        if (inKeyframes(rule)) {\n            return;\n        }\n        try {\n            rule.selector = (0, _formatVariantSelector.finalizeSelector)(rule.selector, finalFormat, {\n                candidate: original,\n                context\n            });\n        } catch  {\n            // If this selector is invalid we also want to skip it\n            // But it's likely that being invalid here means there's a bug in a plugin rather than too loosely matching content\n            isValid = false;\n            return false;\n        }\n    });\n    if (!isValid) {\n        return null;\n    }\n    match[1] = container.nodes[0];\n    return match;\n}\nfunction inKeyframes(rule) {\n    return rule.parent && rule.parent.type === \"atrule\" && rule.parent.name === \"keyframes\";\n}\nfunction getImportantStrategy(important) {\n    if (important === true) {\n        return (rule)=>{\n            if (inKeyframes(rule)) {\n                return;\n            }\n            rule.walkDecls((d)=>{\n                if (d.parent.type === \"rule\" && !inKeyframes(d.parent)) {\n                    d.important = true;\n                }\n            });\n        };\n    }\n    if (typeof important === \"string\") {\n        return (rule)=>{\n            if (inKeyframes(rule)) {\n                return;\n            }\n            rule.selectors = rule.selectors.map((selector)=>{\n                return (0, _applyImportantSelector.applyImportantSelector)(selector, important);\n            });\n        };\n    }\n}\nfunction generateRules(candidates, context) {\n    let allRules = [];\n    let strategy = getImportantStrategy(context.tailwindConfig.important);\n    for (let candidate of candidates){\n        if (context.notClassCache.has(candidate)) {\n            continue;\n        }\n        if (context.candidateRuleCache.has(candidate)) {\n            allRules = allRules.concat(Array.from(context.candidateRuleCache.get(candidate)));\n            continue;\n        }\n        let matches = Array.from(resolveMatches(candidate, context));\n        if (matches.length === 0) {\n            context.notClassCache.add(candidate);\n            continue;\n        }\n        context.classCache.set(candidate, matches);\n        var _context_candidateRuleCache_get;\n        let rules = (_context_candidateRuleCache_get = context.candidateRuleCache.get(candidate)) !== null && _context_candidateRuleCache_get !== void 0 ? _context_candidateRuleCache_get : new Set();\n        context.candidateRuleCache.set(candidate, rules);\n        for (const match of matches){\n            let [{ sort , options  }, rule] = match;\n            if (options.respectImportant && strategy) {\n                let container = _postcss.default.root({\n                    nodes: [\n                        rule.clone()\n                    ]\n                });\n                container.walkRules(strategy);\n                rule = container.nodes[0];\n            }\n            let newEntry = [\n                sort,\n                rule\n            ];\n            rules.add(newEntry);\n            context.ruleCache.add(newEntry);\n            allRules.push(newEntry);\n        }\n    }\n    return allRules;\n}\nfunction isArbitraryValue(input) {\n    return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\n"],"mappings":"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"},"metadata":{},"sourceType":"script","externalDependencies":[]}