Home / Function/ canonicalizeDimension() — tailwindcss Function Reference

canonicalizeDimension() — tailwindcss Function Reference

Architecture documentation for the canonicalizeDimension() function in constant-fold-declaration.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  8da43da0_6459_abf1_120f_6b4af193f3cf["canonicalizeDimension()"]
  b567fa55_8905_40fc_b0c8_f7b1041653f6["constant-fold-declaration.ts"]
  8da43da0_6459_abf1_120f_6b4af193f3cf -->|defined in| b567fa55_8905_40fc_b0c8_f7b1041653f6
  9ab273b1_6701_5494_7f88_e2e72f74ddf7["constantFoldDeclaration()"]
  9ab273b1_6701_5494_7f88_e2e72f74ddf7 -->|calls| 8da43da0_6459_abf1_120f_6b4af193f3cf
  978cd83c_b489_4dd0_bddf_ab7b6f0970c6["isLength()"]
  8da43da0_6459_abf1_120f_6b4af193f3cf -->|calls| 978cd83c_b489_4dd0_bddf_ab7b6f0970c6
  style 8da43da0_6459_abf1_120f_6b4af193f3cf fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/tailwindcss/src/constant-fold-declaration.ts lines 117–151

function canonicalizeDimension(input: string, rem: number | null = null): string | null {
  let dimension = dimensions.get(input)
  if (dimension === null) return null // This shouldn't happen

  let [value, unit] = dimension
  if (unit === null) return `${value}` // Already unitless, nothing to do

  // Replace `0<length>` units with just `0`
  if (value === 0 && isLength(input)) return '0'

  // prettier-ignore
  switch (unit.toLowerCase()) {
    // <length> to px, https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units#lengths
    case 'in':  return `${value * 96}px`                  // 1in  = 96.000px
    case 'cm':  return `${value * 96 / 2.54}px`           // 1cm  = 37.795px
    case 'mm':  return `${value * 96 / 2.54 / 10}px`      // 1mm  =  3.779px
    case 'q':   return `${value * 96 / 2.54 / 10 / 4}px`  //  1q  =  0.945px
    case 'pc':  return `${value * 96 / 6}px`              // 1pc  = 16.000px
    case 'pt':  return `${value * 96 / 72}px`             // 1pt  =  1.333px
    case 'rem': return rem !== null ? `${value * rem}px` : null    // 1rem = 16.000px (Assuming root font-size is 16px)

    // <angle> to deg, https://developer.mozilla.org/en-US/docs/Web/CSS/angle
    case 'grad': return `${value * 0.9}deg`               // 1grad =   0.900deg
    case 'rad':  return `${value * 180 / Math.PI}deg`     //  1rad =  57.296deg
    case 'turn': return `${value * 360}deg`               // 1turn = 360.000deg

    // <time> to s, https://developer.mozilla.org/en-US/docs/Web/CSS/time
    case 'ms':   return `${value / 1000}s`                // 1ms = 0.001s

    // <frequency> to hz, https://developer.mozilla.org/en-US/docs/Web/CSS/frequency
    case 'khz':  return `${value * 1000}hz`               // 1kHz = 1000Hz

    default: return `${value}${unit}` // No canonicalization possible, return as-is
  }
}

Domain

Subdomains

Calls

Frequently Asked Questions

What does canonicalizeDimension() do?
canonicalizeDimension() is a function in the tailwindcss codebase, defined in packages/tailwindcss/src/constant-fold-declaration.ts.
Where is canonicalizeDimension() defined?
canonicalizeDimension() is defined in packages/tailwindcss/src/constant-fold-declaration.ts at line 117.
What does canonicalizeDimension() call?
canonicalizeDimension() calls 1 function(s): isLength.
What calls canonicalizeDimension()?
canonicalizeDimension() is called by 1 function(s): constantFoldDeclaration.

Analyze Your Own Codebase

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

Try Supermodel Free