@datorama/akita
Version:
State Management Tailored-Made for JS Applications
59 lines • 4.26 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { hasEntity } from './hasEntity';
import { isArray } from './isArray';
// @internal
/**
* @template E
* @param {?} state
* @return {?}
*/
export function hasActiveState(state) {
return state.hasOwnProperty('active');
}
// @internal
/**
* @param {?} active
* @return {?}
*/
export function isMultiActiveState(active) {
return isArray(active);
}
// @internal
/**
* @template E
* @param {?} __0
* @return {?}
*/
export function resolveActiveEntity(_a) {
var active = _a.active, ids = _a.ids, entities = _a.entities;
if (isMultiActiveState(active)) {
return getExitingActives(active, ids);
}
if (hasEntity(entities, active) === false) {
return null;
}
return active;
}
// @internal
/**
* @param {?} currentActivesIds
* @param {?} newIds
* @return {?}
*/
export function getExitingActives(currentActivesIds, newIds) {
/** @type {?} */
var filtered = currentActivesIds.filter((/**
* @param {?} id
* @return {?}
*/
function (id) { return newIds.indexOf(id) > -1; }));
/** Return the same reference if nothing has changed */
if (filtered.length === currentActivesIds.length) {
return currentActivesIds;
}
return filtered;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlU3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYWN0aXZlU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQUdwQyxNQUFNLFVBQVUsY0FBYyxDQUFJLEtBQXFCO0lBQ3JELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDOzs7Ozs7QUFHRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBVztJQUM1QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDOzs7Ozs7O0FBR0QsTUFBTSxVQUFVLG1CQUFtQixDQUFJLEVBQTRFO1FBQTFFLGtCQUFNLEVBQUUsWUFBRyxFQUFFLHNCQUFRO0lBQzVELElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUIsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdkM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDOzs7Ozs7O0FBR0QsTUFBTSxVQUFVLGlCQUFpQixDQUFDLGlCQUF1QixFQUFFLE1BQVk7O1FBQy9ELFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNOzs7O0lBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUF2QixDQUF1QixFQUFDO0lBQ3hFLHVEQUF1RDtJQUN2RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1FBQ2hELE9BQU8saUJBQWlCLENBQUM7S0FDMUI7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZlU3RhdGUsIEVudGl0eVN0YXRlLCBJRCwgSURTLCBNdWx0aUFjdGl2ZVN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBoYXNFbnRpdHkgfSBmcm9tICcuL2hhc0VudGl0eSc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi9pc0FycmF5JztcblxuLy8gQGludGVybmFsXG5leHBvcnQgZnVuY3Rpb24gaGFzQWN0aXZlU3RhdGU8RT4oc3RhdGU6IEVudGl0eVN0YXRlPEU+KTogc3RhdGUgaXMgRW50aXR5U3RhdGU8RT4gJiAoQWN0aXZlU3RhdGUgfCBNdWx0aUFjdGl2ZVN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJyk7XG59XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIGlzTXVsdGlBY3RpdmVTdGF0ZShhY3RpdmU6IElEUyk6IGFjdGl2ZSBpcyBJRFtdIHtcbiAgcmV0dXJuIGlzQXJyYXkoYWN0aXZlKTtcbn1cblxuLy8gQGludGVybmFsXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjdGl2ZUVudGl0eTxFPih7IGFjdGl2ZSwgaWRzLCBlbnRpdGllcyB9OiBFbnRpdHlTdGF0ZTxFPiAmIChBY3RpdmVTdGF0ZSB8IE11bHRpQWN0aXZlU3RhdGUpKSB7XG4gIGlmIChpc011bHRpQWN0aXZlU3RhdGUoYWN0aXZlKSkge1xuICAgIHJldHVybiBnZXRFeGl0aW5nQWN0aXZlcyhhY3RpdmUsIGlkcyk7XG4gIH1cblxuICBpZiAoaGFzRW50aXR5KGVudGl0aWVzLCBhY3RpdmUpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGFjdGl2ZTtcbn1cblxuLy8gQGludGVybmFsXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhpdGluZ0FjdGl2ZXMoY3VycmVudEFjdGl2ZXNJZHM6IElEW10sIG5ld0lkczogSURbXSkge1xuICBjb25zdCBmaWx0ZXJlZCA9IGN1cnJlbnRBY3RpdmVzSWRzLmZpbHRlcihpZCA9PiBuZXdJZHMuaW5kZXhPZihpZCkgPiAtMSk7XG4gIC8qKiBSZXR1cm4gdGhlIHNhbWUgcmVmZXJlbmNlIGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQgKi9cbiAgaWYgKGZpbHRlcmVkLmxlbmd0aCA9PT0gY3VycmVudEFjdGl2ZXNJZHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGN1cnJlbnRBY3RpdmVzSWRzO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcmVkO1xufVxuIl19