parent
							
								
									81a7819535
								
							
						
					
					
						commit
						2024d11db0
					
				@ -1,3 +1,4 @@
 | 
			
		||||
import { BindingTypes } from '@vue/compiler-dom'
 | 
			
		||||
import { compile } from '../src'
 | 
			
		||||
 | 
			
		||||
describe('ssr: inject <style vars>', () => {
 | 
			
		||||
@ -111,4 +112,25 @@ describe('ssr: inject <style vars>', () => {
 | 
			
		||||
      }"
 | 
			
		||||
    `)
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test('inject helpers', () => {
 | 
			
		||||
    const result = compile(`<div/>`, {
 | 
			
		||||
      inline: true,
 | 
			
		||||
      bindingMetadata: { dynamic: BindingTypes.SETUP_MAYBE_REF },
 | 
			
		||||
      ssrCssVars: '{ "--hash": (dynamic) }'
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    expect(result.code).toMatchInlineSnapshot(`
 | 
			
		||||
      "(_ctx, _push, _parent, _attrs) => {
 | 
			
		||||
        const _cssVars = { style: { \\"--hash\\": (_unref(dynamic)) }}
 | 
			
		||||
        _push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, _cssVars))}></div>\`)
 | 
			
		||||
      }"
 | 
			
		||||
    `)
 | 
			
		||||
    expect(result.ast.helpers).toMatchInlineSnapshot(`
 | 
			
		||||
      Array [
 | 
			
		||||
        Symbol(mergeProps),
 | 
			
		||||
        Symbol(unref),
 | 
			
		||||
      ]
 | 
			
		||||
    `)
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -40,13 +40,17 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) {
 | 
			
		||||
  // we do this instead of inlining the expression to ensure the vars are
 | 
			
		||||
  // only resolved once per render
 | 
			
		||||
  if (options.ssrCssVars) {
 | 
			
		||||
    const cssContext = createTransformContext(createRoot([]), options)
 | 
			
		||||
    const varsExp = processExpression(
 | 
			
		||||
      createSimpleExpression(options.ssrCssVars, false),
 | 
			
		||||
      createTransformContext(createRoot([]), options)
 | 
			
		||||
      cssContext
 | 
			
		||||
    )
 | 
			
		||||
    context.body.push(
 | 
			
		||||
      createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`])
 | 
			
		||||
    )
 | 
			
		||||
    Array.from(cssContext.helpers.keys()).forEach(helper =>
 | 
			
		||||
      ast.helpers.push(helper)
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const isFragment =
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user