@itwin/core-bentley
Version:
Bentley JavaScript core components
44 lines • 2.41 kB
TypeScript
/** @packageDocumentation
* @module Collections
*/
import { BeEvent } from "./BeEvent";
/** A standard [Set<T>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) that emits events when its contents change.
* @public
*/
export declare class ObservableSet<T> extends Set<T> {
/** Emitted after `item` is added to this set. */
readonly onAdded: BeEvent<(item: T) => void>;
/** Emitted after `item` is deleted from this set. */
readonly onDeleted: BeEvent<(item: T) => void>;
/** Emitted after this set's contents are cleared. */
readonly onCleared: BeEvent<() => void>;
/** Emitted after multiple items are added to this set via [[addAll]]. */
readonly onBatchAdded: BeEvent<() => void>;
/** Emitted after multiple items are deleted from this set via [[deleteAll]]. */
readonly onBatchDeleted: BeEvent<() => void>;
/** Construct a new ObservableSet.
* @param elements Optional elements with which to populate the new set.
*/
constructor(elements?: Iterable<T> | undefined);
/** Invokes [Set.delete](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete), raising
* the [[onDeleted]] event if the item was removed from the set.
*/
delete(item: T): boolean;
/** If this set is not already empty, invokes [Set.clear](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear)
* and raises the [[onCleared]] event.
*/
clear(): void;
/** Add multiple items to the set, raising [[onBatchAdded]] only once after all items are added.
* This is more efficient than calling [[add]] in a loop when listeners need not be notified of each individual addition.
* @param items The items to add.
* @returns The number of items that were actually added (i.e., were not already present).
*/
addAll(items: Iterable<T>): number;
/** Delete multiple items from the set, raising [[onBatchDeleted]] only once after all items are deleted.
* This is more efficient than calling [[delete]] in a loop when listeners need not be notified of each individual deletion.
* @param items The items to delete.
* @returns The number of items that were actually deleted (i.e., were present in the set).
*/
deleteAll(items: Iterable<T>): number;
}
//# sourceMappingURL=ObservableSet.d.ts.map