Home / File/ migrate-media-screen.ts — tailwindcss Source File

migrate-media-screen.ts — tailwindcss Source File

Architecture documentation for migrate-media-screen.ts, a typescript file in the tailwindcss codebase. 9 imports, 2 dependents.

File typescript UpgradeToolkit Codemods 9 imports 2 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  b1548999_24c2_f98a_628a_e4dd9606794b["migrate-media-screen.ts"]
  9b5d2e3d_392e_c654_c350_1352ed70f5e8["resolve-config.ts"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> 9b5d2e3d_392e_c654_c350_1352ed70f5e8
  0ed24ba5_7c39_3f5a_fdbb_f973a617a172["resolveConfig"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> 0ed24ba5_7c39_3f5a_fdbb_f973a617a172
  af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> af1a6ece_0432_a556_fd63_8cb4a91f12ad
  09dea224_4143_d043_b336_121f3fdb8f12["screens-config.ts"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> 09dea224_4143_d043_b336_121f3fdb8f12
  f0ae2c26_da7d_2117_70b3_216a8890f916["buildMediaQuery"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> f0ae2c26_da7d_2117_70b3_216a8890f916
  7fd72d4c_e95c_d849_1002_1e1c9d8aca1a["design-system.ts"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a
  c056448b_f7a2_9149_54e8_f0f8470fe3aa["default-map.ts"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> c056448b_f7a2_9149_54e8_f0f8470fe3aa
  bf2992f6_4a37_8536_70f8_94b13631027d["DefaultMap"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> bf2992f6_4a37_8536_70f8_94b13631027d
  ba54c7c3_7b1e_9984_bfef_a693a3df2d84["postcss"]
  b1548999_24c2_f98a_628a_e4dd9606794b --> ba54c7c3_7b1e_9984_bfef_a693a3df2d84
  2a2fbf55_42db_0140_9db5_094f5369e747["migrate-media-screen.test.ts"]
  2a2fbf55_42db_0140_9db5_094f5369e747 --> b1548999_24c2_f98a_628a_e4dd9606794b
  67f80607_3a88_f275_79a1_b9557100d939["migrate.ts"]
  67f80607_3a88_f275_79a1_b9557100d939 --> b1548999_24c2_f98a_628a_e4dd9606794b
  style b1548999_24c2_f98a_628a_e4dd9606794b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { type Plugin, type Root } from 'postcss'
import { resolveConfig } from '../../../../tailwindcss/src/compat/config/resolve-config'
import type { Config } from '../../../../tailwindcss/src/compat/plugin-api'
import { buildMediaQuery } from '../../../../tailwindcss/src/compat/screens-config'
import type { DesignSystem } from '../../../../tailwindcss/src/design-system'
import { DefaultMap } from '../../../../tailwindcss/src/utils/default-map'

export function migrateMediaScreen({
  designSystem,
  userConfig,
}: {
  designSystem?: DesignSystem | null
  userConfig?: Config | null
} = {}): Plugin {
  function migrate(root: Root) {
    if (!designSystem || !userConfig) return

    let { resolvedConfig } = resolveConfig(designSystem, [
      { base: '', config: userConfig, reference: false, src: undefined },
    ])
    let screens = resolvedConfig?.theme?.screens || {}

    let mediaQueries = new DefaultMap<string, string | null>((name) => {
      let value = designSystem?.resolveThemeValue(`--breakpoint-${name}`, true) ?? screens?.[name]
      if (typeof value === 'string') return `(width >= theme(--breakpoint-${name}))`
      return value ? buildMediaQuery(value) : null
    })

    // First migrate `@screen md` to `@media screen(md)`
    root.walkAtRules('screen', (node) => {
      node.name = 'media'
      node.params = `screen(${node.params})`
    })

    // Then migrate the `screen(…)` function
    root.walkAtRules((rule) => {
      if (rule.name !== 'media') return

      let screen = rule.params.match(/screen\(([^)]+)\)/)
      if (!screen) return

      let value = mediaQueries.get(screen[1])
      if (!value) return

      rule.params = value
    })
  }

  return {
    postcssPlugin: '@tailwindcss/upgrade/migrate-media-screen',
    OnceExit: migrate,
  }
}

Subdomains

Frequently Asked Questions

What does migrate-media-screen.ts do?
migrate-media-screen.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, Codemods subdomain.
What functions are defined in migrate-media-screen.ts?
migrate-media-screen.ts defines 1 function(s): migrateMediaScreen.
What does migrate-media-screen.ts depend on?
migrate-media-screen.ts imports 9 module(s): DefaultMap, buildMediaQuery, default-map.ts, design-system.ts, plugin-api.ts, postcss, resolve-config.ts, resolveConfig, and 1 more.
What files import migrate-media-screen.ts?
migrate-media-screen.ts is imported by 2 file(s): migrate-media-screen.test.ts, migrate.ts.
Where is migrate-media-screen.ts in the architecture?
migrate-media-screen.ts is located at packages/@tailwindcss-upgrade/src/codemods/css/migrate-media-screen.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/@tailwindcss-upgrade/src/codemods/css).

Analyze Your Own Codebase

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

Try Supermodel Free