UNPKG

ember-sortable

Version:
58 lines (56 loc) 1.6 kB
import Service from '@ember/service'; import type SortableGroupModifier from '../modifiers/sortable-group'; import type SortableItemModifier from '../modifiers/sortable-item'; export interface Group<T> { groupModifier: SortableGroupModifier<T> | undefined; items: SortableItemModifier<T>[]; } export default class EmberSortableService<T> extends Service { /** * Internal State for any groups currently in DOM * * { * groupName: { * groupModifier: object, * items: [] * } * } * @type {{}} */ groups: Record<string, Group<T>>; /** * Register a new group with the service * * @param {String} groupName * @param {SortableGroupModifier} groupModifier */ registerGroup(groupName: string, groupModifier: SortableGroupModifier<T> | undefined): void; /** * De-register a group with the service * * @param {String} groupName */ deregisterGroup(groupName: string): void; /** * Register an item with this group * * @method registerItem * @param {String} groupName * @param {SortableItemModifier} item */ registerItem(groupName: string, item: SortableItemModifier<T>): void; /** De-register an item with this group. @method deregisterItem @param groupName @param item */ deregisterItem(groupName: string, item: SortableItemModifier<T>): void; /** * Fetch a group definition * * @param {String} groupName * @returns {*} */ fetchGroup(groupName: string): Group<T>; }