Home / File/ sort.ts — tailwindcss Source File

sort.ts — tailwindcss Source File

Architecture documentation for sort.ts, a typescript file in the tailwindcss codebase. 4 imports, 1 dependents.

File typescript Oxide PreProcessors 4 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  e328ae01_a9d9_2f37_36fd_43da9fe10599["sort.ts"]
  eea0ec96_6369_abc2_64b3_490868392e31["compile.ts"]
  e328ae01_a9d9_2f37_36fd_43da9fe10599 --> eea0ec96_6369_abc2_64b3_490868392e31
  ad08c258_e5c2_4cd4_c935_0925a940458e["compileCandidates"]
  e328ae01_a9d9_2f37_36fd_43da9fe10599 --> ad08c258_e5c2_4cd4_c935_0925a940458e
  bdedd2f6_da4b_69dc_e990_0814b59fbe6e["design-system.ts"]
  e328ae01_a9d9_2f37_36fd_43da9fe10599 --> bdedd2f6_da4b_69dc_e990_0814b59fbe6e
  665aa4ed_d86e_30e5_80d5_cd56b8ca8b62["DesignSystem"]
  e328ae01_a9d9_2f37_36fd_43da9fe10599 --> 665aa4ed_d86e_30e5_80d5_cd56b8ca8b62
  bdedd2f6_da4b_69dc_e990_0814b59fbe6e["design-system.ts"]
  bdedd2f6_da4b_69dc_e990_0814b59fbe6e --> e328ae01_a9d9_2f37_36fd_43da9fe10599
  style e328ae01_a9d9_2f37_36fd_43da9fe10599 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { compileCandidates } from './compile'
import type { DesignSystem } from './design-system'

export function getClassOrder(design: DesignSystem, classes: string[]): [string, bigint | null][] {
  // Generate a sorted AST
  let { astNodes, nodeSorting } = compileCandidates(Array.from(classes), design)

  // Map class names to their order in the AST
  // `null` indicates a non-Tailwind class
  let sorted = new Map<string, bigint | null>(classes.map((className) => [className, null]))

  // Assign each class a unique, sorted number
  let idx = 0n

  for (let node of astNodes) {
    let candidate = nodeSorting.get(node)?.candidate
    if (!candidate) continue

    // When multiple rules match a candidate
    // always take the position of the first one
    sorted.set(candidate, sorted.get(candidate) ?? idx++)
  }

  // Pair classes with their assigned sorting number
  return classes.map((className) => [
    //
    className,
    sorted.get(className) ?? null,
  ])
}

Domain

Subdomains

Functions

Frequently Asked Questions

What does sort.ts do?
sort.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the Oxide domain, PreProcessors subdomain.
What functions are defined in sort.ts?
sort.ts defines 1 function(s): getClassOrder.
What does sort.ts depend on?
sort.ts imports 4 module(s): DesignSystem, compile.ts, compileCandidates, design-system.ts.
What files import sort.ts?
sort.ts is imported by 1 file(s): design-system.ts.
Where is sort.ts in the architecture?
sort.ts is located at packages/tailwindcss/src/sort.ts (domain: Oxide, subdomain: PreProcessors, directory: packages/tailwindcss/src).

Analyze Your Own Codebase

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

Try Supermodel Free