UNPKG

svelte-object

Version:

A nested component Svelte 5 Runes pattern for structuring objects/arrays and their properties

77 lines (76 loc) 3.23 kB
export interface Props<T extends Record<PropertyKey, unknown> | unknown[]> { children?: Snippet<[ props: { value: T; attributes: Record<PropertyKey, unknown>; } ]>; name?: string | number; default?: T; value?: T; /** * What the unmodified object is * * Note: Set it with snapshot and untracked; * `origin={untrack(() => $state.snapshot(value))}` * * Alternatively, use `object.setOrigin(value)`. */ origin?: T; /** Whether there's a difference between the modified and unmodified */ modified?: boolean; attributes?: Record<PropertyKey, unknown>; onSubmit?: (value: T) => void; /** Validate with parent, even if unnamed */ withParent?: boolean; } type Prescriptor = { name: PropertyKey; get: () => unknown; set: (value: unknown) => void; }; type SvelteObjectGeneric = Record<PropertyKey, unknown> | unknown[]; type SvelteObjectContext<T extends SvelteObjectGeneric = SvelteObjectGeneric> = { addPrescriptor: (name: Prescriptor['name'], getter: Prescriptor['get'], setter: Prescriptor['set']) => () => void; addValidator(fn: (trigger?: ValidationType) => boolean): void; removeValidator(fn: (trigger?: ValidationType) => boolean): void; submit: () => void; validate: (trigger?: ValidationType) => boolean; value: T | undefined; attributes: Record<string, unknown>; }; export declare function getContextSvelteObject(): SvelteObjectContext; import { type Snippet } from 'svelte'; import type { ValidationType } from './validation-types'; declare function $$render<T extends SvelteObjectGeneric>(): { props: Props<T>; exports: { submit: () => void; setOrigin: (newOrigin: T) => void; validate: (trigger?: ValidationType) => boolean; }; bindings: "value" | "origin" | "modified" | "attributes"; slots: {}; events: {}; }; declare class __sveltets_Render<T extends SvelteObjectGeneric> { props(): ReturnType<typeof $$render<T>>['props']; events(): ReturnType<typeof $$render<T>>['events']; slots(): ReturnType<typeof $$render<T>>['slots']; bindings(): "value" | "origin" | "modified" | "attributes"; exports(): { submit: () => void; setOrigin: (newOrigin: T) => void; validate: (trigger?: ValidationType) => boolean; }; } interface $$IsomorphicComponent { new <T extends SvelteObjectGeneric>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & { $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>; } & ReturnType<__sveltets_Render<T>['exports']>; <T extends SvelteObjectGeneric>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>; z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>; } declare const SvelteObject: $$IsomorphicComponent; type SvelteObject<T extends SvelteObjectGeneric> = InstanceType<typeof SvelteObject<T>>; export default SvelteObject;