import { Observable } from 'rxjs'; import { scrollPosition } from "./models/scrollPosition"; /** * Returns all the entities are distinct by the * `property` value argument. * * Note that the implementation uses a `Map` to * index the entities by key. Therefore the more recent occurences * matching a key instance will overwrite the previous ones. * * @param property The name of the property to check for distinct values by. * @param entities The entities in the array. * * @example ``` let todos: Todo[] = [ { id: 1, title: "Lets do it!" }, { id: 1, title: "Lets do it again!" }, { id: 2, title: "All done!" } ]; let todos2: Todo[] = [ { id: 1, title: "Lets do it!" }, { id: 2, title: "All done!" } ]; expect(distinct(todos, "id").length).toEqual(2); expect(distinct(todos2, "id").length).toEqual(2); ``` */ export declare function distinct(entities: E[], property: K): E[]; /** * Returns true if all the entities are distinct by the * `property` value argument. * * @param property The name of the property to check for distinct values by. * @param entities The entities in the array. * * @example * ``` let todos: Todo[] = [ { id: 1, title: "Lets do it!" }, { id: 1, title: "Lets do it again!" }, { id: 2, title: "All done!" } ]; let todos2: Todo[] = [ { id: 1, title: "Lets do it!" }, { id: 2, title: "All done!" } ]; expect(unique(todos, "id")).toBeFalsy(); expect(unique(todos2, "id")).toBeTruthy(); ``` */ export declare function unique(entities: E[], property: keyof E): boolean; /** * Create a global ID * @return The global id. * * @example * let e.guid = GUID(); */ export declare function GUID(): string; /** * Set the global identfication property on the instance. * * @param e Entity we want to set the global identifier on. * @param gid The name of the `gid` property. If not specified it defaults to `ESTORE_CONFIG_DEFAULT.guidKey`. */ export declare function attachGUID(e: E, gid?: string): string; /** * Set the global identfication property on the instance. * * @param e[] Entity array we want to set the global identifiers on. * @param gid The name of the `gid` property. If not specified it defaults to `gid`. */ export declare function attachGUIDs(e: E[], gid?: string): void; /** * Create a shallow copy of the argument. * @param o The object to copy */ export declare function shallowCopy(o: E): E; /** * Create a deep copy of the argument. * @param o The object to copy */ export declare function deepCopy(o: E): any; /** * Gets the current active value from the `active` * Map. * * This is used for the scenario where we are managing * a single active instance. For example * when selecting a book from a collection of books. * * The selected `Book` instance becomes the active value. * * @example * const book:Book = getActiveValue(bookStore.active); * @param m */ export declare function getActiveValue(m: Map): any; /** * The method can be used to exclude keys from an instance * of type `E`. * * We can use this to exclude values when searching an object. * * @param entity An instance of type E * @param exclude The keys to exclude * * @example * todo = { id: '1', description: 'Do it!' } * let keys = excludeKeys(todo, ['id]); * // keys = ['description'] */ export declare function excludeKeys(entity: any, exclude: string[]): string[]; /** * * @param entities The entity to search * @param exclude Keys to exclude from each entity * * @return E[] Array of entities with properties containing the search term. */ export declare function search(query: string | undefined, entities: E[], exclude?: string[]): E[]; /** * @param scrollable The element being scrolled * @param debounceMS The number of milliseconds to debounce scroll events * @param sp The function returning the scroll position coordinates. * @return A boolean valued observable indicating whether the element is scrolling up or down */ export declare function scrollingUp(scrollable: any, debounceMS: number, sp: scrollPosition): Observable; /** * Filters the entities properties to the set contained in the * `keys` array. * * @param keys The array of keys that the entity be limited to * @param entity The entity to map * @return An entity instance that has only the keys provided in the keys array */ export declare function mapEntity(keys: string[], entity: any): any; /** * Returns an `Observable` instance that * filters for arguments where the property * value matches the provided value. * * @param value The value targeted * @param propertyName The name of the property to contain the value * @param obs The Slice Object Store Observable * @returns Observable */ export declare function onFilteredEvent(value: any, propertyName: string, obs: Observable): Observable;