consistency

svelte-custom-renderer-single-type-argument
Rich Harris 4 months ago
parent 42fcdb91a2
commit 2c5b556b56

@ -25,7 +25,8 @@ export function createRenderer(renderer) {
* @param {{} extends Props ? { target: TFragment | TElement | TTextNode | TComment, props?: Props, context?: Map<any, any> } : { target: TFragment | TElement | TTextNode | TComment, props: Props, context?: Map<any, any> }} options
*/
render(Component, { target, props, context }) {
var cleanup = push_renderer(compound_renderer);
var pop_renderer = push_renderer(compound_renderer);
try {
/** @type {Exports} */
// @ts-expect-error will be defined because the render effect runs synchronously
@ -51,7 +52,7 @@ export function createRenderer(renderer) {
});
return { component, unmount };
} finally {
cleanup();
pop_renderer();
}
}
};

@ -1,6 +1,4 @@
/**
* @import { Renderer } from "./types.js";
*/
/** @import { Renderer } from './types.js'; */
/**
* @type {Renderer<any, any, any, any> | null}
@ -19,10 +17,11 @@ export function set_renderer(value) {
* @param {Renderer<any, any, any, any> | null} value
*/
export function push_renderer(value) {
let old_renderer = current_renderer;
var previous_renderer = current_renderer;
current_renderer = value;
return () => {
current_renderer = old_renderer;
current_renderer = previous_renderer;
};
}
@ -32,9 +31,13 @@ export function push_renderer(value) {
* @returns {T}
*/
export function without_renderer(fn) {
if (current_renderer === null) return fn();
let previous_renderer = current_renderer;
if (current_renderer === null) {
return fn();
}
var previous_renderer = current_renderer;
current_renderer = null;
try {
return fn();
} finally {

Loading…
Cancel
Save