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)
])
}
})
|