Home / Function/ cloneCandidate() — tailwindcss Function Reference

cloneCandidate() — tailwindcss Function Reference

Architecture documentation for the cloneCandidate() function in candidate.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  6aa3d960_a2f2_03a4_9eb3_642a5598b141["cloneCandidate()"]
  8a068325_2349_1f6e_50da_da53008019d1["baseCandidate()"]
  8a068325_2349_1f6e_50da_da53008019d1 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  c0ed9081_e732_ecfa_0427_6bc0211bcee4["migrateArbitraryVariants()"]
  c0ed9081_e732_ecfa_0427_6bc0211bcee4 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  39857840_c6e7_0594_122a_445c1ca9d108["migrateAutomaticVarInjection()"]
  39857840_c6e7_0594_122a_445c1ca9d108 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  dea7ced9_f1f5_2ff1_f4bc_f35a2d35ce09["migrateCamelcaseInNamedValue()"]
  dea7ced9_f1f5_2ff1_f4bc_f35a2d35ce09 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  e186eef0_e5f2_5d47_3825_19ab57be2de9["migrateLegacyArbitraryValues()"]
  e186eef0_e5f2_5d47_3825_19ab57be2de9 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  4ed0d823_ca6a_b1cd_308d_86008a627784["migrateLegacyClasses()"]
  4ed0d823_ca6a_b1cd_308d_86008a627784 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  486b36da_67cd_fb5a_cf7f_c5aca1c480be["migrateModernizeArbitraryValues()"]
  486b36da_67cd_fb5a_cf7f_c5aca1c480be -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  19312e09_c0b9_b4d3_7181_315ee63b4c14["createCanonicalizeUtilityCache()"]
  19312e09_c0b9_b4d3_7181_315ee63b4c14 -->|calls| 6aa3d960_a2f2_03a4_9eb3_642a5598b141
  style 6aa3d960_a2f2_03a4_9eb3_642a5598b141 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/tailwindcss/src/candidate.ts lines 220–273

export function cloneCandidate<T extends Candidate>(candidate: T): T {
  switch (candidate.kind) {
    case 'arbitrary':
      return {
        kind: candidate.kind,
        property: candidate.property,
        value: candidate.value,
        modifier: candidate.modifier
          ? { kind: candidate.modifier.kind, value: candidate.modifier.value }
          : null,
        variants: candidate.variants.map(cloneVariant),
        important: candidate.important,
        raw: candidate.raw,
      } satisfies Extract<Candidate, { kind: 'arbitrary' }> as T

    case 'static':
      return {
        kind: candidate.kind,
        root: candidate.root,
        variants: candidate.variants.map(cloneVariant),
        important: candidate.important,
        raw: candidate.raw,
      } satisfies Extract<Candidate, { kind: 'static' }> as T

    case 'functional':
      return {
        kind: candidate.kind,
        root: candidate.root,
        value: candidate.value
          ? candidate.value.kind === 'arbitrary'
            ? {
                kind: candidate.value.kind,
                dataType: candidate.value.dataType,
                value: candidate.value.value,
              }
            : {
                kind: candidate.value.kind,
                value: candidate.value.value,
                fraction: candidate.value.fraction,
              }
          : null,
        modifier: candidate.modifier
          ? { kind: candidate.modifier.kind, value: candidate.modifier.value }
          : null,
        variants: candidate.variants.map(cloneVariant),
        important: candidate.important,
        raw: candidate.raw,
      } satisfies Extract<Candidate, { kind: 'functional' }> as T

    default:
      candidate satisfies never
      throw new Error('Unknown candidate kind')
  }
}

Subdomains

Frequently Asked Questions

What does cloneCandidate() do?
cloneCandidate() is a function in the tailwindcss codebase.
What calls cloneCandidate()?
cloneCandidate() is called by 8 function(s): baseCandidate, createCanonicalizeUtilityCache, migrateArbitraryVariants, migrateAutomaticVarInjection, migrateCamelcaseInNamedValue, migrateLegacyArbitraryValues, migrateLegacyClasses, migrateModernizeArbitraryValues.

Analyze Your Own Codebase

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

Try Supermodel Free