@datorama/akita
Version:
State Management Tailored-Made for JS Applications
159 lines • 9.43 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { StateHistoryPlugin } from './stateHistoryPlugin';
import { toBoolean } from '../../toBoolean';
import { skip } from 'rxjs/operators';
import { EntityCollectionPlugin } from '../entityCollectionPlugin';
/**
* @record
* @template IDType
*/
export function StateHistoryEntityParams() { }
if (false) {
/** @type {?|undefined} */
StateHistoryEntityParams.prototype.entityIds;
}
/**
* @template State, P
*/
export class EntityStateHistoryPlugin extends EntityCollectionPlugin {
/**
* @param {?} query
* @param {?=} params
*/
constructor(query, params = {}) {
super(query, params.entityIds);
this.query = query;
this.params = params;
params.maxAge = toBoolean(params.maxAge) ? params.maxAge : 10;
this.activate();
this.selectIds()
.pipe(skip(1))
.subscribe((/**
* @param {?} ids
* @return {?}
*/
ids => this.activate(ids)));
}
/**
* @param {?=} ids
* @return {?}
*/
redo(ids) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.redo()));
}
/**
* @param {?=} ids
* @return {?}
*/
undo(ids) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.undo()));
}
/**
* @param {?} id
* @return {?}
*/
hasPast(id) {
if (this.hasEntity(id)) {
return this.getEntity(id).hasPast;
}
}
/**
* @param {?} id
* @return {?}
*/
hasFuture(id) {
if (this.hasEntity(id)) {
return this.getEntity(id).hasFuture;
}
}
/**
* @param {?} ids
* @param {?} index
* @return {?}
*/
jumpToFuture(ids, index) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.jumpToFuture(index)));
}
/**
* @param {?} ids
* @param {?} index
* @return {?}
*/
jumpToPast(ids, index) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.jumpToPast(index)));
}
/**
* @param {?=} ids
* @return {?}
*/
clear(ids) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.clear()));
}
/**
* @param {?=} ids
* @param {?=} clearHistory
* @return {?}
*/
destroy(ids, clearHistory = false) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.destroy(clearHistory)));
}
/**
* @param {?=} ids
* @return {?}
*/
ignoreNext(ids) {
this.forEachId(ids, (/**
* @param {?} e
* @return {?}
*/
e => e.ignoreNext()));
}
/**
* @protected
* @param {?} id
* @return {?}
*/
instantiatePlugin(id) {
return (/** @type {?} */ (new StateHistoryPlugin(this.query, this.params, id)));
}
}
if (false) {
/**
* @type {?}
* @protected
*/
EntityStateHistoryPlugin.prototype.query;
/**
* @type {?}
* @protected
*/
EntityStateHistoryPlugin.prototype.params;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5U3RhdGVIaXN0b3J5UGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhLyIsInNvdXJjZXMiOlsic3JjL3BsdWdpbnMvc3RhdGVIaXN0b3J5L2VudGl0eVN0YXRlSGlzdG9yeVBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRW5FLDhDQUVDOzs7SUFEQyw2Q0FBNEI7Ozs7O0FBRzlCLE1BQU0sT0FBTyx3QkFBMkgsU0FBUSxzQkFBZ0M7Ozs7O0lBQzlLLFlBQXNCLEtBQXlCLEVBQXFCLFNBQXFELEVBQUU7UUFDekgsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEWCxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUFxQixXQUFNLEdBQU4sTUFBTSxDQUFpRDtRQUV6SCxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTOzs7O1FBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7SUFFRCxJQUFJLENBQUMsR0FBK0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUMsQ0FBQztJQUNyQyxDQUFDOzs7OztJQUVELElBQUksQ0FBQyxHQUErQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLEVBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxTQUFTLENBQUMsRUFBb0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDckM7SUFDSCxDQUFDOzs7Ozs7SUFFRCxZQUFZLENBQUMsR0FBOEIsRUFBRSxLQUFhO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRzs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDO0lBQ2xELENBQUM7Ozs7OztJQUVELFVBQVUsQ0FBQyxHQUE4QixFQUFFLEtBQWE7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDaEQsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsR0FBK0I7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7SUFFRCxPQUFPLENBQUMsR0FBK0IsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQztJQUNwRCxDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxHQUErQjtRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBQyxDQUFDO0lBQzNDLENBQUM7Ozs7OztJQUVTLGlCQUFpQixDQUFDLEVBQW9CO1FBQzlDLE9BQU8sbUJBQUEsSUFBSSxrQkFBa0IsQ0FBUSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUssQ0FBQztJQUN6RSxDQUFDO0NBQ0Y7Ozs7OztJQXBEYSx5Q0FBbUM7Ozs7O0lBQUUsMENBQTBFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUsIE9yQXJyYXksIGdldElEVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFF1ZXJ5RW50aXR5IH0gZnJvbSAnLi4vLi4vcXVlcnlFbnRpdHknO1xuaW1wb3J0IHsgU3RhdGVIaXN0b3J5UGFyYW1zLCBTdGF0ZUhpc3RvcnlQbHVnaW4gfSBmcm9tICcuL3N0YXRlSGlzdG9yeVBsdWdpbic7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi90b0Jvb2xlYW4nO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eUNvbGxlY3Rpb25QbHVnaW4gfSBmcm9tICcuLi9lbnRpdHlDb2xsZWN0aW9uUGx1Z2luJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUhpc3RvcnlFbnRpdHlQYXJhbXM8SURUeXBlPiBleHRlbmRzIFN0YXRlSGlzdG9yeVBhcmFtcyB7XG4gIGVudGl0eUlkcz86IE9yQXJyYXk8SURUeXBlPjtcbn1cblxuZXhwb3J0IGNsYXNzIEVudGl0eVN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZSBleHRlbmRzIEVudGl0eVN0YXRlID0gYW55LCBQIGV4dGVuZHMgU3RhdGVIaXN0b3J5UGx1Z2luPFN0YXRlPiA9IFN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZT4+IGV4dGVuZHMgRW50aXR5Q29sbGVjdGlvblBsdWdpbjxTdGF0ZSwgUD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcXVlcnk6IFF1ZXJ5RW50aXR5PFN0YXRlPiwgcHJvdGVjdGVkIHJlYWRvbmx5IHBhcmFtczogU3RhdGVIaXN0b3J5RW50aXR5UGFyYW1zPGdldElEVHlwZTxTdGF0ZT4+ID0ge30pIHtcbiAgICBzdXBlcihxdWVyeSwgcGFyYW1zLmVudGl0eUlkcyk7XG4gICAgcGFyYW1zLm1heEFnZSA9IHRvQm9vbGVhbihwYXJhbXMubWF4QWdlKSA/IHBhcmFtcy5tYXhBZ2UgOiAxMDtcbiAgICB0aGlzLmFjdGl2YXRlKCk7XG4gICAgdGhpcy5zZWxlY3RJZHMoKVxuICAgICAgLnBpcGUoc2tpcCgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaWRzID0+IHRoaXMuYWN0aXZhdGUoaWRzKSk7XG4gIH1cblxuICByZWRvKGlkcz86IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4pIHtcbiAgICB0aGlzLmZvckVhY2hJZChpZHMsIGUgPT4gZS5yZWRvKCkpO1xuICB9XG5cbiAgdW5kbyhpZHM/OiBPckFycmF5PGdldElEVHlwZTxTdGF0ZT4+KSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUudW5kbygpKTtcbiAgfVxuXG4gIGhhc1Bhc3QoaWQ6IGdldElEVHlwZTxTdGF0ZT4pIHtcbiAgICBpZiAodGhpcy5oYXNFbnRpdHkoaWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHkoaWQpLmhhc1Bhc3Q7XG4gICAgfVxuICB9XG5cbiAgaGFzRnV0dXJlKGlkOiBnZXRJRFR5cGU8U3RhdGU+KSB7XG4gICAgaWYgKHRoaXMuaGFzRW50aXR5KGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5KGlkKS5oYXNGdXR1cmU7XG4gICAgfVxuICB9XG5cbiAganVtcFRvRnV0dXJlKGlkczogT3JBcnJheTxnZXRJRFR5cGU8U3RhdGU+PiwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9yRWFjaElkKGlkcywgZSA9PiBlLmp1bXBUb0Z1dHVyZShpbmRleCkpO1xuICB9XG5cbiAganVtcFRvUGFzdChpZHM6IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4sIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvckVhY2hJZChpZHMsIGUgPT4gZS5qdW1wVG9QYXN0KGluZGV4KSk7XG4gIH1cblxuICBjbGVhcihpZHM/OiBPckFycmF5PGdldElEVHlwZTxTdGF0ZT4+KSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUuY2xlYXIoKSk7XG4gIH1cblxuICBkZXN0cm95KGlkcz86IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4sIGNsZWFySGlzdG9yeSA9IGZhbHNlKSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUuZGVzdHJveShjbGVhckhpc3RvcnkpKTtcbiAgfVxuXG4gIGlnbm9yZU5leHQoaWRzPzogT3JBcnJheTxnZXRJRFR5cGU8U3RhdGU+Pikge1xuICAgIHRoaXMuZm9yRWFjaElkKGlkcywgZSA9PiBlLmlnbm9yZU5leHQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zdGFudGlhdGVQbHVnaW4oaWQ6IGdldElEVHlwZTxTdGF0ZT4pIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZT4odGhpcy5xdWVyeSwgdGhpcy5wYXJhbXMsIGlkKSBhcyBQO1xuICB9XG59XG4iXX0=