fix: allow usage of `$props.id`

pull/18058/head
paoloricciuti 4 months ago
parent 61ea8e9f19
commit 206bdf42ed

@ -7,6 +7,9 @@
*/
export let renderer = null;
// to use with $props.id()
export let custom_renderer_window = {};
/**
* @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 { renderer } from '../custom-renderer/state.js';
import { custom_renderer_window, renderer } from '../custom-renderer/state.js';
// export these for reference in the compiled code, making global name deduplication unnecessary
/** @type {Window} */
@ -788,3 +788,10 @@ export function class_list_toggle(element, name, force) {
}
element.classList.toggle(name, force);
}
export function get_window() {
if (renderer) {
return custom_renderer_window;
}
return window;
}

@ -20,7 +20,8 @@ import {
replace_with,
node_type,
get_node_value,
node_name
node_name,
get_window
} from './operations.js';
import { create_fragment_from_html } from './reconciler.js';
import { active_effect } from '../runtime.js';
@ -417,7 +418,8 @@ export function props_id() {
return id;
}
// TODO RENDERER: figure out what to do here
let window = get_window();
// @ts-expect-error This way we ensure the id is unique even across Svelte runtimes
(window.__svelte ??= {}).uid ??= 1;

@ -0,0 +1,5 @@
import { test } from '../../test';
export default test({
html: 'c1'
});

@ -0,0 +1,5 @@
<script>
let id = $props.id();
</script>
{id}
Loading…
Cancel
Save