diff --git a/packages/svelte/src/internal/client/custom-renderer/index.js b/packages/svelte/src/internal/client/custom-renderer/index.js index 29f8bb19a6..b7ade121f8 100644 --- a/packages/svelte/src/internal/client/custom-renderer/index.js +++ b/packages/svelte/src/internal/client/custom-renderer/index.js @@ -1,9 +1,34 @@ -import { branch, effect_root } from "../reactivity/effects"; -import { push_renderer } from "./state"; +import { branch, effect_root } from '../reactivity/effects'; +import { push_renderer } from './state'; /** - * @param {*} renderer - * @returns + * @template [TFragment=any] + * @template [TElement=any] + * @template [TTextNode=any] + * @template [TComment=any] + * @template [TNode=TElement | TTextNode | TComment | TFragment] + * @typedef {Object} Renderer + * @property {()=>TFragment} createFragment + * @property {(name: string)=>TElement} createElement + * @property {(data: string)=>TTextNode} createTextNode + * @property {(element: TElement, key: string, value: any)=>void} setAttribute + * @property {(node: TNode, text: string)=>void} setText + * @property {(data: string)=>TComment} createComment + * @property {(element: TNode)=>TNode} getFirstChild + * @property {(element: TNode)=>TNode} getLastChild + * @property {(element: TNode)=>TNode} getNextSibling + * @property {(parent: TNode, element: TNode, anchor: TNode | null)=>void} insert + * @property {(node: TNode)=>void} remove + * @property {(element: TNode)=>TNode} getParent + */ + +/** + * @template [const TFragment=unknown] + * @template [const TElement=unknown] + * @template [const TTextNode=unknown] + * @template [const TComment=unknown] + * @param {Renderer} renderer + * @returns {Renderer & { render: (Component: any, options: { target: TNode, props?: any }) => () => void }} */ export function createRenderer(renderer) { return { @@ -25,4 +50,4 @@ export function createRenderer(renderer) { return unmount; } }; -} \ No newline at end of file +} diff --git a/packages/svelte/src/internal/client/custom-renderer/state.js b/packages/svelte/src/internal/client/custom-renderer/state.js index c1075ed454..9eee42e14a 100644 --- a/packages/svelte/src/internal/client/custom-renderer/state.js +++ b/packages/svelte/src/internal/client/custom-renderer/state.js @@ -1,15 +1,23 @@ /** - * @type {any} + * @import { Renderer } from "."; + */ + +/** + * @type {Renderer | null} */ let renderer = null; +/** + * + * @returns {Renderer | null} + */ export function get_renderer() { return renderer; } /** * - * @param {any} $renderer + * @param {Renderer} $renderer */ export function push_renderer($renderer) { let old_renderer = renderer; @@ -17,4 +25,4 @@ export function push_renderer($renderer) { return () => { renderer = old_renderer; }; -} \ No newline at end of file +}