From b63accbb03d09eb159db0806a0612ee49042ef8e Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Mon, 8 Jun 2026 08:55:05 +0200 Subject: [PATCH] chore: regenerate types --- packages/svelte/types/index.d.ts | 77 ++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 0eca28b442..5615ccee19 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -2584,7 +2584,7 @@ declare module 'svelte/reactivity/window' { } declare module 'svelte/renderer' { - export function createRenderer = DefaultNodes, TFragment extends object = T extends DefaultNodes ? object : T["fragment"], TElement extends object = T extends DefaultNodes ? object : T["element"], TTextNode extends object = T extends DefaultNodes ? object : T["text"], TComment extends object = T extends DefaultNodes ? object : T["comment"]>(renderer: Renderer): Renderer & { + export function createRenderer = DefaultNodes, TFragment extends object = T extends DefaultNodes ? object : T["fragment"], TElement extends object = T extends DefaultNodes ? object : T["element"], TTextNode extends object = T extends DefaultNodes ? object : T["text"], TComment extends object = T extends DefaultNodes ? object : T["comment"], TForeignNodes extends RendererNodes | undefined = T extends DefaultNodes ? RendererNodes : T["foreign"]>(renderer: Renderer): Renderer & { render: , Exports extends Record>(component: ComponentType> | Component, options: {} extends Props ? { target: TFragment | TElement | TTextNode | TComment; props?: Props; @@ -2603,6 +2603,13 @@ declare module 'svelte/renderer' { TElement extends object = object, TTextNode extends object = object, TComment extends object = object, + TForeignNodes extends RendererNodes | undefined = RendererNodes< + any, + any, + any, + any, + any + >, TNode extends TFragment | TElement | TTextNode | TComment = | TFragment | TElement @@ -2683,27 +2690,89 @@ declare module 'svelte/renderer' { /** Remove an event listener of the given type and handler from the target node. */ removeEventListener(target: TElement, type: string, handler: any, options?: any): void; + + /** Operations used when this renderer is interleaved with DOM or another custom renderer. */ + foreign?: { + /** + * Insert a node from this renderer into a different renderer's parent before the anchor. + * If anchor is null, insert at the end. + */ + insertIntoForeign( + parent: TForeignNodes extends undefined + ? never + : + | DefinedRendererNodes['element'] + | DefinedRendererNodes['fragment'], + element: TNode, + anchor: + | DefinedRendererNodes['element'] + | DefinedRendererNodes['text'] + | DefinedRendererNodes['comment'] + | null + ): void; + /** + * Insert a node from a different renderer into this renderer's parent before the anchor. + * If anchor is null, insert at the end. + */ + insertForeign( + parent: TElement | TFragment, + element: + | DefinedRendererNodes['element'] + | DefinedRendererNodes['fragment'] + | DefinedRendererNodes['text'] + | DefinedRendererNodes['comment'], + anchor: + | DefinedRendererNodes['element'] + | DefinedRendererNodes['text'] + | DefinedRendererNodes['comment'] + | null + ): void; + + /** Remove a node that was inserted across renderer boundaries. */ + removeForeign( + node: + | DefinedRendererNodes['element'] + | DefinedRendererNodes['fragment'] + | DefinedRendererNodes['text'] + | DefinedRendererNodes['comment'] + ): void; + /** Remove a node that was inserted across renderer boundaries. */ + removeFromForeign(node: TNode): void; + }; }; + type DefinedRendererNodes | undefined> = + TNodes extends RendererNodes + ? TNodes + : RendererNodes; + type RendererNodes< Fragment extends object, Element extends object, TextNode extends object, - Comment extends object + Comment extends object, + ForeignNode extends RendererNodes = RendererNodes< + any, + any, + any, + any, + any + > > = { fragment: Fragment; element: Element; text: TextNode; comment: Comment; + foreign?: ForeignNode; }; - type NodeType = keyof RendererNodes; + type NodeType = Exclude, 'foreign'>; // to detect if the user is passing a type or not we create this type utils that adds a unique symbol // that the user will never be able to pass in. We then create a a DefaultNodes type that is used as the default // type for the T generic of `createRenderer`. This means we can "detect" if the user is passing a type manually by // checking if the type extends DefaultNodes and using different default values - // for the other arguments (TFragment, TElement, TTextNode, TComment) + // for the other arguments (TFragment, TElement, TTextNode, TComment, TForeignNodes) type UnsetObject = object & { readonly __unset: unique symbol }; type DefaultNodes = RendererNodes; /**