All files index.ts

100% Statements 10/10
50% Branches 1/2
100% Functions 4/4
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35              1x     1x       1x 1x 1x       1x     1x       1x 1x            
import { defineComponent, provide, inject, InjectionKey, renderSlot, Fragment, h } from 'vue'
 
interface StyleVNodeProps {
  class: string
  innerHTML: string
}
 
const ssrContextKey: InjectionKey<StyleVNodeProps> = Symbol('@css-render/vue3-ssr')
 
function createStyleString (id: string, style: string): string {
  return `<style cssr-id="${id}">\n${style}\n</style>`
}
 
export function ssrAdapter (id: string, style: string): void {
  const styleVNodeProps = inject(ssrContextKey, null)
  Eif (styleVNodeProps !== null) {
    styleVNodeProps.innerHTML += createStyleString(id, style)
  }
}
 
export const SsrContext = defineComponent({
  name: 'CssRenderVue3SsrContext',
  setup (_, { slots }) {
    const styleVNodeProps: StyleVNodeProps = {
      class: 'cssr-ssr-container',
      innerHTML: ''
    }
    provide(ssrContextKey, styleVNodeProps)
    return () => h(Fragment, null, [
      renderSlot(slots, 'default'),
      h('div', styleVNodeProps)
    ])
  }
})