UNPKG

svelte

Version:

Cybernetically enhanced web apps

25 lines (23 loc) 687 B
/** @import { Snippet } from 'svelte' */ /** @import { Renderer } from '../renderer' */ /** @import { Getters } from '#shared' */ /** * Create a snippet programmatically * @template {unknown[]} Params * @param {(...params: Getters<Params>) => { * render: () => string * setup?: (element: Element) => void | (() => void) * }} fn * @returns {Snippet<Params>} */ export function createRawSnippet(fn) { // @ts-expect-error the types are a lie return (/** @type {Renderer} */ renderer, /** @type {Params} */ ...args) => { var getters = /** @type {Getters<Params>} */ (args.map((value) => () => value)); renderer.push( fn(...getters) .render() .trim() ); }; }