TuilStoryCatalog
class exported by @mwillbanks/tuil-story.
class
Public class exported by @mwillbanks/tuil-story.
export class TuilStoryCatalog {
readonly #sets = new Map<string, TuilStorySet>();
register<TProps>(
id: string,
title: string,
definition: TuilStoryDefinition<
TProps,
Readonly<Record<string, { readonly args: Partial<TProps> }>>
>,
): Disposable {
if (!id.trim()) throw new Error("Story set id cannot be empty");
if (this.#sets.has(id)) {
throw new Error(`Story set "${id}" is already registered`);
}
const registered = Object.freeze(asStorySet(id, title, definition));
this.#sets.set(id, registered);
return {
dispose: () => {
if (this.#sets.get(id) === registered) this.#sets.delete(id);
},
};
}
get(id: string): TuilStorySet | undefined {
return this.#sets.get(id);
}
list(): readonly TuilStorySet[] {
return [...this.#sets.values()].sort((left, right) =>
left.title.localeCompare(right.title),
);
}
}Members
| Member | Type | Required | Description | Related types |
|---|---|---|---|---|
#sets | Map<string, TuilStorySet> | Yes | The #sets member uses the Map<string, TuilStorySet> contract. | TuilStorySet |
register | <TProps>(id: string, title: string, definition: TuilStoryDefinition<TProps, Readonly<Record<string, { readonly args: Partial<TProps>; }>>>) => Disposable | Yes | The register member uses the <TProps>(id: string, title: string, definition: TuilStoryDefinition<TProps, Readonly<Record<string, { readonly args: Partial<TProps>; }>>>) => Disposable contract. | Disposable, TuilStoryDefinition |
get | (id: string) => TuilStorySet | undefined | Yes | The get member uses the (id: string) => TuilStorySet | undefined contract. | TuilStorySet |
list | () => readonly TuilStorySet[] | Yes | The list member uses the () => readonly TuilStorySet[] contract. | TuilStorySet |
Parameters
This declaration has no public members.
Returns
This declaration does not return a value.
Throws
No thrown errors are documented for this declaration.
Related types
Source
View the secondary source reference