The ItemList class collects items and then arranges them into an array by priority.

Type Parameters

  • T

Hierarchy

  • ItemList

Constructors

Properties

_items: Record<string, Item<T>> = {}

The items in the list.

Methods

  • Add an item to the list.

    Parameters

    • key: string

      A unique key for the item.

    • content: T

      The item's content.

    • priority: number = 0

      The priority of the item. Items with a higher priority will be positioned before items with a lower priority.

    Returns ItemList<T>

  • Internal

    Proxies an item's content, adding the itemName readonly property to it.

    Type Parameters

    • C extends object

    Parameters

    • content: C

      The item's content (objects only)

    • key: string

      The item's key

    Returns Readonly<C & {
        itemName: string;
    }>

    Proxied content

    Example

    createItemContentProxy({ foo: 'bar' }, 'myItem');
    // { foo: 'bar', itemName: 'myItem' }
  • Replaces an item's content, if the provided item key exists.

    If the provided key is not present, an error will be thrown.

    Parameters

    • key: string

      The key of the item in the list

    • content: T

      The item's new content

    Returns ItemList<T>

    Example

    Replace item content.

    items.setContent('myItem', <p>My new value.</p>);
    

    Example

    Replace item content and priority.

             items
    .setContent('myItem', <p>My new value.</p>)
    .setPriority('myItem', 10);

    Throws

    If the provided key is not present in the ItemList.

  • Replaces an item's priority, if the provided item key exists.

    If the provided key is not present, an error will be thrown.

    Parameters

    • key: string

      The key of the item in the list

    • priority: number

      The item's new priority

    Returns ItemList<T>

    Example

    Replace item priority.

    items.setPriority('myItem', 10);
    

    Example

    Replace item priority and content.

             items
    .setPriority('myItem', 10)
    .setContent('myItem', <p>My new value.</p>);

    Throws

    If the provided key is not present in the ItemList.

  • Convert the list into an array of item content arranged by priority.

    This does not preserve the original types of primitives and proxies all content values to make itemName accessible on them.

    NOTE: If your ItemList holds primitive types (such as numbers, booleans or strings), these will be converted to their object counterparts if you do not provide true to this function.

    NOTE: Modifying any objects in the final array may also update the content of the original ItemList.

    Parameters

    • Optional keepPrimitives: false

      Converts item content to objects and sets the itemName property on them.

    Returns (T & {
        itemName: string;
    })[]

  • Convert the list into an array of item content arranged by priority.

    Content values that are already objects will be proxied and have itemName accessible on them. Primitive values will not have the itemName property accessible.

    NOTE: Modifying any objects in the final array may also update the content of the original ItemList.

    Parameters

    • keepPrimitives: true

      Converts item content to objects and sets the itemName property on them.

    Returns (T extends object
        ? T & Readonly<{
            itemName: string;
        }>
        : T)[]

  • A read-only map of all keys to their respective items in no particular order.

    We don't allow adding new items to the ItemList via setting new properties, nor do we allow modifying existing items directly. You should use the add, setContent and setPriority methods instead.

    To match the old behaviour of the ItemList.items property, call Object.values(ItemList.toObject()).

    Returns DeepReadonly<Record<string, IItemObject<T>>>

    Example

    const items = new ItemList();
    items.add('b', 'My cool value', 20);
    items.add('a', 'My value', 10);
    items.toObject();
    // {
    // a: { content: 'My value', priority: 10, itemName: 'a' },
    // b: { content: 'My cool value', priority: 20, itemName: 'b' },
    // }

Generated using TypeDoc v0.24.8