|
|
|
|
@ -1,19 +1,5 @@
|
|
|
|
|
import type { SvelteComponent } from './Component';
|
|
|
|
|
|
|
|
|
|
export interface SvelteComponentDev<
|
|
|
|
|
Props extends Record<string, any> = any,
|
|
|
|
|
Events extends Record<string, any> = any,
|
|
|
|
|
Slots extends Record<string, any> = any // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
|
|
|
> {
|
|
|
|
|
$set(props?: Partial<Props>): void;
|
|
|
|
|
$on<K extends Extract<keyof Events, string>>(
|
|
|
|
|
type: K,
|
|
|
|
|
callback: ((e: Events[K]) => void) | null | undefined
|
|
|
|
|
): () => void;
|
|
|
|
|
$destroy(): void;
|
|
|
|
|
[accessor: string]: any;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ComponentConstructorOptions<
|
|
|
|
|
Props extends Record<string, any> = Record<string, any>
|
|
|
|
|
> {
|
|
|
|
|
@ -26,12 +12,37 @@ export interface ComponentConstructorOptions<
|
|
|
|
|
$$inline?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
|
|
|
export interface SvelteComponentTyped<
|
|
|
|
|
Props extends Record<string, any> = any,
|
|
|
|
|
Events extends Record<string, any> = any,
|
|
|
|
|
Slots extends Record<string, any> = any
|
|
|
|
|
> extends SvelteComponentDev<Props, Events, Slots> {}
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get the events the given component expects. Example:
|
|
|
|
|
* ```html
|
|
|
|
|
* <script lang="ts">
|
|
|
|
|
* import type { ComponentEvents } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* function handleCloseEvent(event: ComponentEvents<Component>['close']) {
|
|
|
|
|
* console.log(event.detail);
|
|
|
|
|
* }
|
|
|
|
|
* </script>
|
|
|
|
|
*
|
|
|
|
|
* <Component on:close={handleCloseEvent} />
|
|
|
|
|
* ```
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentEvents<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentDev<any, infer Events> ? Events : never;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get the props the given component expects. Example:
|
|
|
|
|
* ```html
|
|
|
|
|
* <script lang="ts">
|
|
|
|
|
* import type { ComponentProps } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* const props: ComponentProps<Component> = { foo: 'bar' }; // Errors if these aren't the correct props
|
|
|
|
|
* </script>
|
|
|
|
|
* ```
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentProps<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentDev<infer Props> ? Props : never;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get the type of a Svelte component. Useful for example in combination with
|
|
|
|
|
@ -61,34 +72,87 @@ export type ComponentType<Component extends SvelteComponentDev = SvelteComponent
|
|
|
|
|
element?: typeof HTMLElement;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get the props the given component expects. Example:
|
|
|
|
|
* ```html
|
|
|
|
|
* <script lang="ts">
|
|
|
|
|
* import type { ComponentProps } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* const props: ComponentProps<Component> = { foo: 'bar' }; // Errors if these aren't the correct props
|
|
|
|
|
* </script>
|
|
|
|
|
* ```
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentProps<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentDev<infer Props> ? Props : never;
|
|
|
|
|
export interface DispatchOptions {
|
|
|
|
|
cancelable?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface EventDispatcher<EventMap extends Record<string, any>> {
|
|
|
|
|
// Implementation notes:
|
|
|
|
|
// - undefined extends X instead of X extends undefined makes this work better with both strict and nonstrict mode
|
|
|
|
|
// - [X] extends [never] is needed, X extends never would reduce the whole resulting type to never and not to one of the condition outcomes
|
|
|
|
|
<Type extends keyof EventMap>(
|
|
|
|
|
...args: [EventMap[Type]] extends [never]
|
|
|
|
|
? [type: Type, parameter?: null | undefined, options?: DispatchOptions]
|
|
|
|
|
: null extends EventMap[Type]
|
|
|
|
|
? [type: Type, parameter?: EventMap[Type], options?: DispatchOptions]
|
|
|
|
|
: undefined extends EventMap[Type]
|
|
|
|
|
? [type: Type, parameter?: EventMap[Type], options?: DispatchOptions]
|
|
|
|
|
: [type: Type, parameter: EventMap[Type], options?: DispatchOptions]
|
|
|
|
|
): boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get the events the given component expects. Example:
|
|
|
|
|
* ```html
|
|
|
|
|
* <script lang="ts">
|
|
|
|
|
* import type { ComponentEvents } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* function handleCloseEvent(event: ComponentEvents<Component>['close']) {
|
|
|
|
|
* console.log(event.detail);
|
|
|
|
|
* }
|
|
|
|
|
* </script>
|
|
|
|
|
*
|
|
|
|
|
* <Component on:close={handleCloseEvent} />
|
|
|
|
|
* ```
|
|
|
|
|
* INTERNAL, DO NOT USE. Code may change at any time.
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentEvents<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentDev<any, infer Events> ? Events : never;
|
|
|
|
|
export interface Fragment {
|
|
|
|
|
key: string | null;
|
|
|
|
|
first: null;
|
|
|
|
|
/* create */ c: () => void;
|
|
|
|
|
/* claim */ l: (nodes: any) => void;
|
|
|
|
|
/* hydrate */ h: () => void;
|
|
|
|
|
/* mount */ m: (target: HTMLElement, anchor: any) => void;
|
|
|
|
|
/* update */ p: (ctx: T$$['ctx'], dirty: T$$['dirty']) => void;
|
|
|
|
|
/* measure */ r: () => void;
|
|
|
|
|
/* fix */ f: () => void;
|
|
|
|
|
/* animate */ a: () => void;
|
|
|
|
|
/* intro */ i: (local: any) => void;
|
|
|
|
|
/* outro */ o: (local: any) => void;
|
|
|
|
|
/* destroy */ d: (detaching: 0 | 1) => void;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type FragmentFactory = (ctx: any) => Fragment;
|
|
|
|
|
|
|
|
|
|
export interface SvelteComponentDev<
|
|
|
|
|
Props extends Record<string, any> = any,
|
|
|
|
|
Events extends Record<string, any> = any,
|
|
|
|
|
Slots extends Record<string, any> = any // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
|
|
|
> {
|
|
|
|
|
$set(props?: Partial<Props>): void;
|
|
|
|
|
$on<K extends Extract<keyof Events, string>>(
|
|
|
|
|
type: K,
|
|
|
|
|
callback: ((e: Events[K]) => void) | null | undefined
|
|
|
|
|
): () => void;
|
|
|
|
|
$destroy(): void;
|
|
|
|
|
[accessor: string]: any;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface T$$ {
|
|
|
|
|
dirty: number[];
|
|
|
|
|
ctx: any[];
|
|
|
|
|
bound: any;
|
|
|
|
|
update: () => void;
|
|
|
|
|
callbacks: any;
|
|
|
|
|
after_update: any[];
|
|
|
|
|
props: Record<string, 0 | string>;
|
|
|
|
|
fragment: null | false | Fragment;
|
|
|
|
|
not_equal: any;
|
|
|
|
|
before_update: any[];
|
|
|
|
|
context: Map<any, any>;
|
|
|
|
|
on_mount: any[];
|
|
|
|
|
on_destroy: any[];
|
|
|
|
|
skip_bound: boolean;
|
|
|
|
|
on_disconnect: any[];
|
|
|
|
|
root: Element | ShadowRoot;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
|
|
|
export interface SvelteComponentTyped<
|
|
|
|
|
Props extends Record<string, any> = any,
|
|
|
|
|
Events extends Record<string, any> = any,
|
|
|
|
|
Slots extends Record<string, any> = any
|
|
|
|
|
> extends SvelteComponentDev<Props, Events, Slots> {}
|
|
|
|
|
|
|
|
|
|
export interface Task {
|
|
|
|
|
abort(): void;
|
|
|
|
|
promise: Promise<void>;
|
|
|
|
|
}
|