Home / Function/ nestSpreadProperties() — ui Function Reference

nestSpreadProperties() — ui Function Reference

Architecture documentation for the nestSpreadProperties() function in update-tailwind-config.ts from the ui codebase.

Entity Profile

Dependency Diagram

graph TD
  07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a["nestSpreadProperties()"]
  ef3e192c_eced_bc46_1021_689faf6b7065["update-tailwind-config.ts"]
  07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a -->|defined in| ef3e192c_eced_bc46_1021_689faf6b7065
  c25108fa_c2e6_295b_b5ed_e67e55e05d20["addTailwindConfigTheme()"]
  c25108fa_c2e6_295b_b5ed_e67e55e05d20 -->|calls| 07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a
  c1c7ccf8_1702_08a4_0680_3abdcc3c18e0["nestSpreadElements()"]
  c1c7ccf8_1702_08a4_0680_3abdcc3c18e0 -->|calls| 07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a
  c1c7ccf8_1702_08a4_0680_3abdcc3c18e0["nestSpreadElements()"]
  07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a -->|calls| c1c7ccf8_1702_08a4_0680_3abdcc3c18e0
  style 07fc0309_c10f_8b0d_c1ac_97cd8f9a1f5a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/shadcn/src/utils/updaters/update-tailwind-config.ts lines 294–334

export function nestSpreadProperties(obj: ObjectLiteralExpression) {
  const properties = obj.getProperties()

  for (let i = 0; i < properties.length; i++) {
    const prop = properties[i]
    if (prop.isKind(SyntaxKind.SpreadAssignment)) {
      const spreadAssignment = prop.asKindOrThrow(SyntaxKind.SpreadAssignment)
      const spreadText = spreadAssignment.getExpression().getText()

      // Replace spread with a property assignment
      obj.insertPropertyAssignment(i, {
        // Need to escape the name with " so that deepmerge doesn't mishandle the key
        name: `"___${spreadText.replace(/^\.\.\./, "")}"`,
        initializer: `"...${spreadText.replace(/^\.\.\./, "")}"`,
      })

      // Remove the original spread assignment
      spreadAssignment.remove()
    } else if (prop.isKind(SyntaxKind.PropertyAssignment)) {
      const propAssignment = prop.asKindOrThrow(SyntaxKind.PropertyAssignment)
      const initializer = propAssignment.getInitializer()

      if (
        initializer &&
        initializer.isKind(SyntaxKind.ObjectLiteralExpression)
      ) {
        // Recursively process nested object literals
        nestSpreadProperties(
          initializer.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)
        )
      } else if (
        initializer &&
        initializer.isKind(SyntaxKind.ArrayLiteralExpression)
      ) {
        nestSpreadElements(
          initializer.asKindOrThrow(SyntaxKind.ArrayLiteralExpression)
        )
      }
    }
  }
}

Subdomains

Frequently Asked Questions

What does nestSpreadProperties() do?
nestSpreadProperties() is a function in the ui codebase, defined in packages/shadcn/src/utils/updaters/update-tailwind-config.ts.
Where is nestSpreadProperties() defined?
nestSpreadProperties() is defined in packages/shadcn/src/utils/updaters/update-tailwind-config.ts at line 294.
What does nestSpreadProperties() call?
nestSpreadProperties() calls 1 function(s): nestSpreadElements.
What calls nestSpreadProperties()?
nestSpreadProperties() is called by 2 function(s): addTailwindConfigTheme, nestSpreadElements.

Analyze Your Own Codebase

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

Try Supermodel Free