summaryrefslogtreecommitdiff
path: root/src/frontend/render/svelte.ts
blob: 6549d1dde2a8b8bdf35f79743f2d16337822b662 (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
import type { ComponentRenderer } from '../../@types/renderer';
import { createRenderer } from './renderer';

const SvelteRenderer: ComponentRenderer = {
  renderStatic(Component) {
    return async (props, ...children) => {
      const { html } = Component.render(props);
      return html;
    };
  },
  render({ Component, root, props }) {
    return `new ${Component}({
      target: ${root},
      props: ${props}
    })`;
  },
};

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;