insta-toc
Version:
Simultaneously generate, update, and maintain a table of contents for your notes in real time.
34 lines (29 loc) • 1.27 kB
text/typescript
import type { icons } from "lucide-svelte/icons";
import type { Component, unmount } from "svelte";
import type InstaTocPlugin from "../Plugin";
export type PropsOf<TComponent extends Component<any>> = TComponent extends Component<infer TProps> ? TProps : never;
export type MountedSvelteComponent = Parameters<typeof unmount>[0];
export type YamlSchemaNode =
| { kind: "object"; children: Record<string, YamlSchemaNode>; }
| { kind: "enum"; values: string[]; }
| { kind: "array"; itemValues?: string[]; }
| { kind: "string"; };
export type ParseResult<T> = { ok: true; value: T; } | { ok: false; message: string; };
export type LucideIcon = typeof icons[keyof typeof icons];
export type LucideIconName = keyof typeof icons;
export type ToolbarIconName = "code-2";
/**
* @example
*
* type OnSubmit = MaybeAsyncFn<[string], boolean>;
* // equivalent to: (result: string) => boolean | Promise<boolean>
*/
export type MaybeAsyncFn<TArgs extends any[], TReturn> = (...args: TArgs) => TReturn | Promise<TReturn>;
export interface ModalComponentClass {
submit: (content: string) => Promise<void>;
close: () => Promise<void>;
}
export interface Context {
plugin: InstaTocPlugin;
componentClassInstance?: ModalComponentClass;
}