mirror of https://github.com/sveltejs/svelte
parent
98e8b635fa
commit
a03b3f3014
@ -0,0 +1 @@
|
|||||||
|
import './types/index.js';
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
import { branch, effect_root } from "../reactivity/effects";
|
||||||
|
import { push_renderer } from "./state";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {*} renderer
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function createRenderer(renderer) {
|
||||||
|
return {
|
||||||
|
...renderer,
|
||||||
|
/**
|
||||||
|
* @param {*} Component
|
||||||
|
* @param {*} options
|
||||||
|
*/
|
||||||
|
render(Component, { target, props }) {
|
||||||
|
var cleanup = push_renderer(renderer);
|
||||||
|
const unmount = effect_root(() => {
|
||||||
|
var anchor = renderer.createComment('');
|
||||||
|
renderer.insert(target, anchor, null);
|
||||||
|
branch(() => {
|
||||||
|
Component(anchor, props);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cleanup();
|
||||||
|
return unmount;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* @type {any}
|
||||||
|
*/
|
||||||
|
let renderer = null;
|
||||||
|
|
||||||
|
export function get_renderer() {
|
||||||
|
return renderer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {any} $renderer
|
||||||
|
*/
|
||||||
|
export function push_renderer($renderer) {
|
||||||
|
let old_renderer = renderer;
|
||||||
|
renderer = $renderer;
|
||||||
|
return () => {
|
||||||
|
renderer = old_renderer;
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export { createRenderer } from '../internal/client/custom-renderer/index.js';
|
||||||
Loading…
Reference in new issue