|
|
|
|
@ -308,25 +308,7 @@ export type ComponentProps<Component extends SvelteComponent> = Component extend
|
|
|
|
|
* import type { ComponentEvents } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* type $$Events = ComponentEvents<Component>;
|
|
|
|
|
* </script>
|
|
|
|
|
*
|
|
|
|
|
* <div class="wrapper">
|
|
|
|
|
* <Component on:close />
|
|
|
|
|
* </div>
|
|
|
|
|
* ```
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentEvents<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentTyped<any, infer Events> ? Events : never;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convenience type to get an event the given component expects. Example:
|
|
|
|
|
* ```html
|
|
|
|
|
* <script lang="ts">
|
|
|
|
|
* import type { ComponentEvent } from 'svelte';
|
|
|
|
|
* import Component from './Component.svelte';
|
|
|
|
|
*
|
|
|
|
|
* function handleCloseEvent(event: ComponentEvent<Component, 'close'>) {
|
|
|
|
|
* function handleCloseEvent(event: ComponentEvents<Component>['close']) {
|
|
|
|
|
* console.log(event.detail);
|
|
|
|
|
* };
|
|
|
|
|
* </script>
|
|
|
|
|
@ -334,9 +316,8 @@ export type ComponentEvents<Component extends SvelteComponent> =
|
|
|
|
|
* <Component on:close={handleCloseEvent} />
|
|
|
|
|
* ```
|
|
|
|
|
*/
|
|
|
|
|
export type ComponentEvent<Component extends SvelteComponent, Name extends string> = Component extends SvelteComponentTyped<any, infer Events>
|
|
|
|
|
? never extends Events[Name] ? CustomEvent<unknown> : Events[Name]
|
|
|
|
|
: never;
|
|
|
|
|
export type ComponentEvents<Component extends SvelteComponent> =
|
|
|
|
|
Component extends SvelteComponentTyped<any, infer Events> ? Events : never;
|
|
|
|
|
|
|
|
|
|
export function loop_guard(timeout) {
|
|
|
|
|
const start = Date.now();
|
|
|
|
|
|