Home / Function/ objectToAst() — tailwindcss Function Reference

objectToAst() — tailwindcss Function Reference

Architecture documentation for the objectToAst() function in plugin-api.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6["objectToAst()"]
  af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"]
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 -->|defined in| af1a6ece_0432_a556_fd63_8cb4a91f12ad
  53bccebe_7dfe_9987_589d_32686d3b1037["keyframesToRules()"]
  53bccebe_7dfe_9987_589d_32686d3b1037 -->|calls| e9bc21ee_17e0_ae31_b0b1_588755ffe2c6
  2efa0a66_c375_c031_24ad_1f7509bb9b14["buildPluginApi()"]
  2efa0a66_c375_c031_24ad_1f7509bb9b14 -->|calls| e9bc21ee_17e0_ae31_b0b1_588755ffe2c6
  18a889b1_55e1_f503_1b79_6fc01095ebca["entries()"]
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 -->|calls| 18a889b1_55e1_f503_1b79_6fc01095ebca
  f9b19679_c1f0_28d6_4d1a_31a10c52e42d["atRule()"]
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 -->|calls| f9b19679_c1f0_28d6_4d1a_31a10c52e42d
  c203f636_607a_d332_b4c5_6a40c108f778["decl()"]
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 -->|calls| c203f636_607a_d332_b4c5_6a40c108f778
  66319c06_7c38_f9ea_4bf0_2a0e18bac1a4["rule()"]
  e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 -->|calls| 66319c06_7c38_f9ea_4bf0_2a0e18bac1a4
  style e9bc21ee_17e0_ae31_b0b1_588755ffe2c6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/tailwindcss/src/compat/plugin-api.ts lines 546–588

export function objectToAst(rules: CssInJs | CssInJs[]): AstNode[] {
  let ast: AstNode[] = []

  rules = Array.isArray(rules) ? rules : [rules]

  let entries = rules.flatMap((rule) => Object.entries(rule))

  for (let [name, value] of entries) {
    if (value === null || value === undefined) continue

    // @ts-expect-error
    // We do not want `false` present in the types but still need to discard these nodes for
    // compatibility purposes
    if (value === false) continue

    if (typeof value !== 'object') {
      if (!name.startsWith('--')) {
        if (value === '@slot') {
          ast.push(rule(name, [atRule('@slot')]))
          continue
        }

        // Convert camelCase to kebab-case:
        // https://github.com/postcss/postcss-js/blob/b3db658b932b42f6ac14ca0b1d50f50c4569805b/parser.js#L30-L35
        name = name.replace(/([A-Z])/g, '-$1').toLowerCase()
      }

      ast.push(decl(name, String(value)))
    } else if (Array.isArray(value)) {
      for (let item of value) {
        if (typeof item === 'string') {
          ast.push(decl(name, item))
        } else {
          ast.push(rule(name, objectToAst(item)))
        }
      }
    } else {
      ast.push(rule(name, objectToAst(value)))
    }
  }

  return ast
}

Subdomains

Frequently Asked Questions

What does objectToAst() do?
objectToAst() is a function in the tailwindcss codebase, defined in packages/tailwindcss/src/compat/plugin-api.ts.
Where is objectToAst() defined?
objectToAst() is defined in packages/tailwindcss/src/compat/plugin-api.ts at line 546.
What does objectToAst() call?
objectToAst() calls 4 function(s): atRule, decl, entries, rule.
What calls objectToAst()?
objectToAst() is called by 2 function(s): buildPluginApi, keyframesToRules.

Analyze Your Own Codebase

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

Try Supermodel Free