summaryrefslogtreecommitdiff
path: root/src/frontend/render/svelte.ts
blob: 13e2b8f580d65db73ea669e3343c33db42b2b198 (plain) (blame)
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
import type { ComponentRenderer } from '../../@types/renderer';
import type { SvelteComponent } from 'svelte';
import { createRenderer } from './renderer';
import SvelteWrapper from '../SvelteWrapper.svelte.server';

const SvelteRenderer: ComponentRenderer<SvelteComponent> = {
  renderStatic(Component) {
    return async (props, ...children) => {
      const { html } = SvelteWrapper.render({ __astro_component: Component, __astro_children: children.join('\n'), ...props });
      return html;
    };
  },
  imports: {
    'svelte-runtime': ['default: render'],
  },
  render({ Component, root, props, childrenAsString }) {
    return `render(${root}, ${Component}, ${props}, ${childrenAsString});`;
  },
};

const renderer = createRenderer(SvelteRenderer);

export const __svelte_static = renderer.static;
export const __svelte_load = renderer.load;
export const __svelte_idle = renderer.idle;
export const __svelte_visible = renderer.visible;