UNPKG

@sveltejs/kit

Version:

SvelteKit is the fastest way to build Svelte apps

73 lines (58 loc) • 1.54 kB
/** @import { Component } from 'svelte'; */ /** @import { Page } from '$app/state'; */ import { noop } from '../utils/functions.js'; export class Props { /** @type {Page} */ page; /** * An array of the `+layout.svelte` and `+page.svelte` component instances * that currently live on the page — used for capturing and restoring snapshots. * It's updated/manipulated through `bind:this` in `Root.svelte`. * @type {Array<Record<string, any>>} * @deprecated only used for `export const snapshot` — TODO 4.0 get rid */ components = []; /** @type {any} */ form; /** @type {App.Error | undefined} */ error; /** @type {RenderNode} */ tree; /** @type {(error: unknown, reset: () => void) => void} */ onerror; /** * @param {{ * page: Page; * tree: RenderNode; * form: any; * error: App.Error | undefined; * onerror?: (error: unknown, reset: () => void) => void; * }} props */ constructor({ page, tree, form, error, onerror = noop }) { this.page = page; this.tree = tree; this.onerror = onerror; this.form = $state.raw(form); this.error = $state.raw(error); } } export class RenderNode { /** @type {Component} */ component; /** @type {Component | undefined} */ error; /** @type {Record<string, any>} */ data = $state.raw({}); /** @type {RenderNode | undefined} */ child = $state.raw(); /** * * @param {Component} component * @param {Component | undefined} error */ constructor(component, error) { this.component = component; this.error = error; } }