tuil
ReferencePackages@mwillbanks/tuil-storyAPI

TuilStoryCatalog

class exported by @mwillbanks/tuil-story.

View rawEdit

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

MemberTypeRequiredDescriptionRelated types
#setsMap<string, TuilStorySet>YesThe #sets member uses the Map<string, TuilStorySet> contract.TuilStorySet
register<TProps>(id: string, title: string, definition: TuilStoryDefinition<TProps, Readonly<Record<string, &#123; readonly args: Partial<TProps>; &#125;>>>) => DisposableYesThe register member uses the <TProps>(id: string, title: string, definition: TuilStoryDefinition<TProps, Readonly<Record<string, &#123; readonly args: Partial<TProps>; &#125;>>>) => Disposable contract.Disposable, TuilStoryDefinition
get(id: string) => TuilStorySet | undefinedYesThe get member uses the (id: string) => TuilStorySet | undefined contract.TuilStorySet
list() => readonly TuilStorySet[]YesThe 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.

Source

View the secondary source reference

Package

@mwillbanks/tuil-story

On this page