UNPKG

tracked-instance

Version:
19 lines (18 loc) 804 B
import { ComputedRef, Raw, Ref } from 'vue'; import { TrackedInstance } from './tracked-instance'; export type CollectionItem<Item, Meta = undefined> = Raw<{ instance: TrackedInstance<Item>; meta: Meta; isRemoved: Ref<boolean>; isNew: Ref<boolean>; remove: (isHardRemoved?: boolean) => void; }>; export interface Collection<Item, Meta = undefined> { items: Ref<CollectionItem<Item, Meta>[]>; isDirty: ComputedRef<boolean>; add: (item: Item, afterIndex?: number) => CollectionItem<Item, Meta>; remove: (index: number, isHardRemove?: boolean) => void; loadData: (items: Item[]) => void; reset: () => void; } export declare const useCollection: <Item = any, Meta = undefined>(createItemMeta?: (instance: TrackedInstance<Item>) => Meta) => Collection<Item, Meta>;