fix: allow one "window" for each renderer

pull/18058/head
paoloricciuti 4 months ago
parent f68d6af173
commit 28e70f8990

@ -7,8 +7,8 @@
*/
export let renderer = null;
// to use with $props.id()
export let custom_renderer_window = {};
// allow for a "window" for each custom renderer...to use with `$props.id`
export let custom_renderer_window_map = new WeakMap();
/**
* @param {Renderer<any, any, any, any> | null} $renderer

@ -13,7 +13,7 @@ import {
} from '#client/constants';
import { eager_block_effects } from '../reactivity/batch.js';
import { NAMESPACE_HTML } from '../../../constants.js';
import { custom_renderer_window, renderer } from '../custom-renderer/state.js';
import { custom_renderer_window_map, renderer } from '../custom-renderer/state.js';
// export these for reference in the compiled code, making global name deduplication unnecessary
/** @type {Window} */
@ -791,6 +791,11 @@ export function class_list_toggle(element, name, force) {
export function get_window() {
if (renderer) {
var custom_renderer_window = custom_renderer_window_map.get(renderer);
if (!custom_renderer_window) {
custom_renderer_window = {};
custom_renderer_window_map.set(renderer, custom_renderer_window);
}
return custom_renderer_window;
}
return window;

@ -420,9 +420,8 @@ export function props_id() {
let window = get_window();
// @ts-expect-error This way we ensure the id is unique even across Svelte runtimes
// This way we ensure the id is unique even across Svelte runtimes
(window.__svelte ??= {}).uid ??= 1;
// @ts-expect-error
return `c${window.__svelte.uid++}`;
}

Loading…
Cancel
Save