Home / Function/ transform() — vue Function Reference

transform() — vue Function Reference

Architecture documentation for the transform() function in srcset.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  0f70d60f_22b7_52fe_ab25_711c3bc297a9["transform()"]
  b079557f_1b35_1202_e466_a7574ca75db9["srcset.ts"]
  0f70d60f_22b7_52fe_ab25_711c3bc297a9 -->|defined in| b079557f_1b35_1202_e466_a7574ca75db9
  2ba2c5dc_e31c_4154_c50d_941c9a6d9680["transform()"]
  0f70d60f_22b7_52fe_ab25_711c3bc297a9 -->|calls| 2ba2c5dc_e31c_4154_c50d_941c9a6d9680
  084fbb63_6e20_b1c4_c59e_540beed57a4e["urlToRequire()"]
  0f70d60f_22b7_52fe_ab25_711c3bc297a9 -->|calls| 084fbb63_6e20_b1c4_c59e_540beed57a4e
  style 0f70d60f_22b7_52fe_ab25_711c3bc297a9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/compiler-sfc/src/templateCompilerModules/srcset.ts lines 21–76

function transform(
  node: ASTNode,
  transformAssetUrlsOptions?: TransformAssetUrlsOptions
) {
  if (node.type !== 1 || !node.attrs) {
    return
  }

  if (node.tag === 'img' || node.tag === 'source') {
    node.attrs.forEach(attr => {
      if (attr.name === 'srcset') {
        // same logic as in transform-require.js
        const value = attr.value
        const isStatic =
          value.charAt(0) === '"' && value.charAt(value.length - 1) === '"'
        if (!isStatic) {
          return
        }

        const imageCandidates: ImageCandidate[] = value
          .slice(1, -1)
          .split(',')
          .map(s => {
            // The attribute value arrives here with all whitespace, except
            // normal spaces, represented by escape sequences
            const [url, descriptor] = s
              .replace(escapedSpaceCharacters, ' ')
              .trim()
              .split(' ', 2)
            return {
              require: urlToRequire(url, transformAssetUrlsOptions),
              descriptor
            }
          })

        // "require(url1)"
        // "require(url1) 1x"
        // "require(url1), require(url2)"
        // "require(url1), require(url2) 2x"
        // "require(url1) 1x, require(url2)"
        // "require(url1) 1x, require(url2) 2x"
        const code = imageCandidates
          .map(
            ({ require, descriptor }) =>
              `${require} + "${descriptor ? ' ' + descriptor : ''}, " + `
          )
          .join('')
          .slice(0, -6)
          .concat('"')
          .replace(/ \+ ""$/, '')

        attr.value = code
      }
    })
  }
}

Domain

Subdomains

Frequently Asked Questions

What does transform() do?
transform() is a function in the vue codebase, defined in packages/compiler-sfc/src/templateCompilerModules/srcset.ts.
Where is transform() defined?
transform() is defined in packages/compiler-sfc/src/templateCompilerModules/srcset.ts at line 21.
What does transform() call?
transform() calls 2 function(s): transform, urlToRequire.

Analyze Your Own Codebase

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

Try Supermodel Free