svelte-object
Version:
A nested component Svelte 5 Runes pattern for structuring objects/arrays and their properties
56 lines (55 loc) • 2.48 kB
TypeScript
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 */
origin?: T;
/** Whether there's a difference between the modified and unmodified */
modified?: boolean;
attributes?: Record<PropertyKey, unknown>;
onSubmit?: (value: T) => void;
}
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 class __sveltets_Render<T extends SvelteObjectGeneric> {
props(): Props<T>;
events(): {};
slots(): {};
bindings(): "value" | "modified" | "attributes";
exports(): {
submit: () => 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;