UNPKG

svelte

Version:

Cybernetically enhanced web apps

23 lines (21 loc) 674 B
/** @import { Snippet } from 'svelte' */ /** @import { Payload } from '../payload' */ /** @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 {Payload} */ payload, /** @type {Params} */ ...args) => { var getters = /** @type {Getters<Params>} */ (args.map((value) => () => value)); payload.out += fn(...getters) .render() .trim(); }; }