Home / Function/ migrateArbitraryVariants() — tailwindcss Function Reference

migrateArbitraryVariants() — tailwindcss Function Reference

Architecture documentation for the migrateArbitraryVariants() function in migrate-arbitrary-variants.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  707ef5d3_1654_7094_06d2_99e8004cab43["migrateArbitraryVariants()"]
  207ada18_60f2_10b9_7c9e_99bdb32f4ed7["prepareDesignSystemStorage()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| 207ada18_60f2_10b9_7c9e_99bdb32f4ed7
  d36b0f78_79bb_ae15_f4f6_4a1b7f01d29f["cloneCandidate()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| d36b0f78_79bb_ae15_f4f6_4a1b7f01d29f
  1febc78c_5fc5_7a9e_bbde_e23926ba37fc["printVariant()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| 1febc78c_5fc5_7a9e_bbde_e23926ba37fc
  ceb1ff41_a641_27dd_6289_7f779710b411["parseVariant()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| ceb1ff41_a641_27dd_6289_7f779710b411
  f79e35a4_ca5c_11c1_36f2_8974eceaf515["replaceObject()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| f79e35a4_ca5c_11c1_36f2_8974eceaf515
  4c29981d_a61a_00fb_b3b5_5a69228c4fff["printCandidate()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| 4c29981d_a61a_00fb_b3b5_5a69228c4fff
  0bec5ca9_74c8_dcc7_ec12_6404fb6493bd["parseCandidate()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| 0bec5ca9_74c8_dcc7_ec12_6404fb6493bd
  cf5ed94c_2a39_949e_c10b_db625fe113d8["walkVariants()"]
  707ef5d3_1654_7094_06d2_99e8004cab43 -->|calls| cf5ed94c_2a39_949e_c10b_db625fe113d8
  style 707ef5d3_1654_7094_06d2_99e8004cab43 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/@tailwindcss-upgrade/src/codemods/template/migrate-arbitrary-variants.ts lines 13–51

export function migrateArbitraryVariants(
  baseDesignSystem: DesignSystem,
  _userConfig: Config | null,
  rawCandidate: string,
): string {
  let designSystem = prepareDesignSystemStorage(baseDesignSystem)
  let signatures = designSystem.storage[VARIANT_SIGNATURE_KEY]
  let variants = designSystem.storage[PRE_COMPUTED_VARIANTS_KEY]

  for (let readonlyCandidate of designSystem.parseCandidate(rawCandidate)) {
    // We are only interested in the variants
    if (readonlyCandidate.variants.length <= 0) return rawCandidate

    // The below logic makes use of mutation. Since candidates in the
    // DesignSystem are cached, we can't mutate them directly.
    let candidate = cloneCandidate(readonlyCandidate) as Writable<typeof readonlyCandidate>

    for (let [variant] of walkVariants(candidate)) {
      if (variant.kind === 'compound') continue

      let targetString = designSystem.printVariant(variant)
      let targetSignature = signatures.get(targetString)
      if (typeof targetSignature !== 'string') continue

      let foundVariants = variants.get(targetSignature)
      if (foundVariants.length !== 1) continue

      let foundVariant = foundVariants[0]
      let parsedVariant = designSystem.parseVariant(foundVariant)
      if (parsedVariant === null) continue

      replaceObject(variant, parsedVariant)
    }

    return designSystem.printCandidate(candidate)
  }

  return rawCandidate
}

Domain

Subdomains

Frequently Asked Questions

What does migrateArbitraryVariants() do?
migrateArbitraryVariants() is a function in the tailwindcss codebase.
What does migrateArbitraryVariants() call?
migrateArbitraryVariants() calls 8 function(s): cloneCandidate, parseCandidate, parseVariant, prepareDesignSystemStorage, printCandidate, printVariant, replaceObject, walkVariants.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free