UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

1,222 lines 76.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { isEmpty } from './isEmpty'; import { setEntities } from './setEntities'; import { Store } from './store'; import { getActiveEntities } from './getActiveEntities'; import { addEntities } from './addEntities'; import { coerceArray } from './coerceArray'; import { removeEntities } from './removeEntities'; import { getInitialEntitiesState } from './getInitialEntitiesState'; import { isDefined } from './isDefined'; import { updateEntities } from './updateEntities'; import { transaction } from './transaction'; import { isNil } from './isNil'; import { isFunction } from './isFunction'; import { isUndefined } from './isUndefined'; import { logAction, setAction } from './actions'; import { isDev } from './env'; import { hasEntity } from './hasEntity'; import { Subject } from 'rxjs'; import { EntityActions } from './entityActions'; import { DEFAULT_ID_KEY } from './defaultIDKey'; /** * * Store for managing a collection of entities * * \@example * * export interface WidgetsState extends EntityState<Widget> { } * * \@StoreConfig({ name: 'widgets' }) * export class WidgetsStore extends EntityStore<WidgetsState> { * constructor() { * super(); * } * } * * * @template S, EntityType, IDType */ var EntityStore = /** @class */ (function (_super) { tslib_1.__extends(EntityStore, _super); function EntityStore(initialState, options) { if (initialState === void 0) { initialState = {}; } if (options === void 0) { options = {}; } var _this = _super.call(this, tslib_1.__assign({}, getInitialEntitiesState(), initialState), options) || this; _this.options = options; _this.entityActions = new Subject(); return _this; } Object.defineProperty(EntityStore.prototype, "selectEntityAction$", { // @internal get: // @internal /** * @return {?} */ function () { return this.entityActions.asObservable(); }, enumerable: true, configurable: true }); Object.defineProperty(EntityStore.prototype, "idKey", { // @internal get: // @internal /** * @return {?} */ function () { return ((/** @type {?} */ (this.config))).idKey || this.options.idKey || DEFAULT_ID_KEY; }, enumerable: true, configurable: true }); /** * * Replace current collection with provided collection * * @example * * this.store.set([Entity, Entity]) * this.store.set({ids: [], entities: {}}) * this.store.set({ 1: {}, 2: {}}) * */ /** * * Replace current collection with provided collection * * \@example * * this.store.set([Entity, Entity]) * this.store.set({ids: [], entities: {}}) * this.store.set({ 1: {}, 2: {}}) * * @param {?} entities * @return {?} */ EntityStore.prototype.set = /** * * Replace current collection with provided collection * * \@example * * this.store.set([Entity, Entity]) * this.store.set({ids: [], entities: {}}) * this.store.set({ 1: {}, 2: {}}) * * @param {?} entities * @return {?} */ function (entities) { var _this = this; if (isNil(entities)) return; isDev() && setAction('Set Entity'); /** @type {?} */ var isNativePreAdd = this.akitaPreAddEntity === EntityStore.prototype.akitaPreAddEntity; this._setState((/** * @param {?} state * @return {?} */ function (state) { return setEntities({ state: state, entities: entities, idKey: _this.idKey, preAddEntity: _this.akitaPreAddEntity, isNativePreAdd: isNativePreAdd }); })); this.setHasCache(true, { restartTTL: true }); if (this.hasInitialUIState()) { this.handleUICreation(); } this.entityActions.next({ type: EntityActions.Set, ids: this.ids }); }; /** * Add entities * * @example * * this.store.add([Entity, Entity]) * this.store.add(Entity) * this.store.add(Entity, { prepend: true }) * * this.store.add(Entity, { loading: false }) */ /** * Add entities * * \@example * * this.store.add([Entity, Entity]) * this.store.add(Entity) * this.store.add(Entity, { prepend: true }) * * this.store.add(Entity, { loading: false }) * @param {?} entities * @param {?=} options * @return {?} */ EntityStore.prototype.add = /** * Add entities * * \@example * * this.store.add([Entity, Entity]) * this.store.add(Entity) * this.store.add(Entity, { prepend: true }) * * this.store.add(Entity, { loading: false }) * @param {?} entities * @param {?=} options * @return {?} */ function (entities, options) { if (options === void 0) { options = { loading: false }; } /** @type {?} */ var collection = coerceArray(entities); if (isEmpty(collection)) return; /** @type {?} */ var data = addEntities({ state: this._value(), preAddEntity: this.akitaPreAddEntity, entities: collection, idKey: this.idKey, options: options }); if (data) { isDev() && setAction('Add Entity'); data.newState.loading = options.loading; this._setState((/** * @return {?} */ function () { return data.newState; })); if (this.hasInitialUIState()) { this.handleUICreation(true); } this.entityActions.next({ type: EntityActions.Add, ids: data.newIds }); } }; /** * @param {?} idsOrFnOrState * @param {?=} newStateOrFn * @return {?} */ EntityStore.prototype.update = /** * @param {?} idsOrFnOrState * @param {?=} newStateOrFn * @return {?} */ function (idsOrFnOrState, newStateOrFn) { var _this = this; if (isUndefined(newStateOrFn)) { _super.prototype.update.call(this, (/** @type {?} */ (idsOrFnOrState))); return; } /** @type {?} */ var ids = []; if (isFunction(idsOrFnOrState)) { // We need to filter according the predicate function ids = this.ids.filter((/** * @param {?} id * @return {?} */ function (id) { return ((/** @type {?} */ (idsOrFnOrState)))(_this.entities[id]); })); } else { // If it's nil we want all of them ids = isNil(idsOrFnOrState) ? this.ids : coerceArray((/** @type {?} */ (idsOrFnOrState))); } if (isEmpty(ids)) return; isDev() && setAction('Update Entity', ids); this._setState((/** * @param {?} state * @return {?} */ function (state) { return updateEntities({ idKey: _this.idKey, ids: ids, preUpdateEntity: _this.akitaPreUpdateEntity, state: state, newStateOrFn: newStateOrFn }); })); this.entityActions.next({ type: EntityActions.Update, ids: ids }); }; /** * * Create or update * * @example * * store.upsert(1, { active: true }) * store.upsert([2, 3], { active: true }) * store.upsert([2, 3], entity => ({ isOpen: !entity.isOpen})) * */ /** * * Create or update * * \@example * * store.upsert(1, { active: true }) * store.upsert([2, 3], { active: true }) * store.upsert([2, 3], entity => ({ isOpen: !entity.isOpen})) * * @param {?} ids * @param {?} newState * @param {?=} options * @return {?} */ EntityStore.prototype.upsert = /** * * Create or update * * \@example * * store.upsert(1, { active: true }) * store.upsert([2, 3], { active: true }) * store.upsert([2, 3], entity => ({ isOpen: !entity.isOpen})) * * @param {?} ids * @param {?} newState * @param {?=} options * @return {?} */ function (ids, newState, options) { var _this = this; if (options === void 0) { options = {}; } /** @type {?} */ var toArray = coerceArray(ids); /** @type {?} */ var predicate = (/** * @param {?} isUpdate * @return {?} */ function (isUpdate) { return (/** * @param {?} id * @return {?} */ function (id) { return hasEntity(_this.entities, id) === isUpdate; }); }); /** @type {?} */ var isClassBased = isFunction(options.baseClass); /** @type {?} */ var updateIds = toArray.filter(predicate(true)); /** @type {?} */ var newEntities = toArray.filter(predicate(false)).map((/** * @param {?} id * @return {?} */ function (id) { var _a; /** @type {?} */ var entity = isFunction(newState) ? newState((/** @type {?} */ ({}))) : newState; /** @type {?} */ var withId = tslib_1.__assign({}, ((/** @type {?} */ (entity))), (_a = {}, _a[_this.idKey] = id, _a)); if (isClassBased) { return new options.baseClass(withId); } return withId; })); // it can be any of the three types this.update((/** @type {?} */ (updateIds)), (/** @type {?} */ (newState))); this.add(newEntities); isDev() && logAction('Upsert Entity'); }; /** * * Upsert entity collection (idKey must be present) * * @example * * store.upsertMany([ { id: 1 }, { id: 2 }]); * * store.upsertMany([ { id: 1 }, { id: 2 }], { loading: true }); * store.upsertMany([ { id: 1 }, { id: 2 }], { baseClass: Todo }); * */ /** * * Upsert entity collection (idKey must be present) * * \@example * * store.upsertMany([ { id: 1 }, { id: 2 }]); * * store.upsertMany([ { id: 1 }, { id: 2 }], { loading: true }); * store.upsertMany([ { id: 1 }, { id: 2 }], { baseClass: Todo }); * * @param {?} entities * @param {?=} options * @return {?} */ EntityStore.prototype.upsertMany = /** * * Upsert entity collection (idKey must be present) * * \@example * * store.upsertMany([ { id: 1 }, { id: 2 }]); * * store.upsertMany([ { id: 1 }, { id: 2 }], { loading: true }); * store.upsertMany([ { id: 1 }, { id: 2 }], { baseClass: Todo }); * * @param {?} entities * @param {?=} options * @return {?} */ function (entities, options) { if (options === void 0) { options = {}; } var e_1, _a; /** @type {?} */ var addedIds = []; /** @type {?} */ var updatedIds = []; /** @type {?} */ var updatedEntities = {}; try { // Update the state directly to optimize performance for (var entities_1 = tslib_1.__values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) { var entity = entities_1_1.value; /** @type {?} */ var withPreCheckHook = this.akitaPreCheckEntity(entity); /** @type {?} */ var id = withPreCheckHook[this.idKey]; if (hasEntity(this.entities, id)) { /** @type {?} */ var prev = this._value().entities[id]; /** @type {?} */ var merged = tslib_1.__assign({}, this._value().entities[id], withPreCheckHook); /** @type {?} */ var next = options.baseClass ? new options.baseClass(merged) : merged; /** @type {?} */ var withHook = this.akitaPreUpdateEntity(prev, next); /** @type {?} */ var nextId = withHook[this.idKey]; updatedEntities[nextId] = withHook; updatedIds.push(nextId); } else { /** @type {?} */ var newEntity = options.baseClass ? new options.baseClass(withPreCheckHook) : withPreCheckHook; /** @type {?} */ var withHook = this.akitaPreAddEntity(newEntity); /** @type {?} */ var nextId = withHook[this.idKey]; addedIds.push(nextId); updatedEntities[nextId] = withHook; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1); } finally { if (e_1) throw e_1.error; } } isDev() && logAction('Upsert Many'); this._setState((/** * @param {?} state * @return {?} */ function (state) { return (tslib_1.__assign({}, state, { ids: addedIds.length ? tslib_1.__spread(state.ids, addedIds) : state.ids, entities: tslib_1.__assign({}, state.entities, updatedEntities), loading: !!options.loading })); })); updatedIds.length && this.entityActions.next({ type: EntityActions.Update, ids: updatedIds }); addedIds.length && this.entityActions.next({ type: EntityActions.Add, ids: addedIds }); if (addedIds.length && this.hasUIStore()) { this.handleUICreation(true); } }; /** * * Replace one or more entities (except the id property) * * * @example * * this.store.replace(5, newEntity) * this.store.replace([1,2,3], newEntity) */ /** * * Replace one or more entities (except the id property) * * * \@example * * this.store.replace(5, newEntity) * this.store.replace([1,2,3], newEntity) * @param {?} ids * @param {?} newState * @return {?} */ EntityStore.prototype.replace = /** * * Replace one or more entities (except the id property) * * * \@example * * this.store.replace(5, newEntity) * this.store.replace([1,2,3], newEntity) * @param {?} ids * @param {?} newState * @return {?} */ function (ids, newState) { var e_2, _a; /** @type {?} */ var toArray = coerceArray(ids); if (isEmpty(toArray)) return; /** @type {?} */ var replaced = {}; try { for (var toArray_1 = tslib_1.__values(toArray), toArray_1_1 = toArray_1.next(); !toArray_1_1.done; toArray_1_1 = toArray_1.next()) { var id = toArray_1_1.value; newState[this.idKey] = id; replaced[id] = newState; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (toArray_1_1 && !toArray_1_1.done && (_a = toArray_1.return)) _a.call(toArray_1); } finally { if (e_2) throw e_2.error; } } isDev() && setAction('Replace Entity', ids); this._setState((/** * @param {?} state * @return {?} */ function (state) { return (tslib_1.__assign({}, state, { entities: tslib_1.__assign({}, state.entities, replaced) })); })); }; /** * * Move entity inside the collection * * * @example * * this.store.move(fromIndex, toIndex) */ /** * * Move entity inside the collection * * * \@example * * this.store.move(fromIndex, toIndex) * @param {?} from * @param {?} to * @return {?} */ EntityStore.prototype.move = /** * * Move entity inside the collection * * * \@example * * this.store.move(fromIndex, toIndex) * @param {?} from * @param {?} to * @return {?} */ function (from, to) { /** @type {?} */ var ids = this.ids.slice(); ids.splice(to < 0 ? ids.length + to : to, 0, ids.splice(from, 1)[0]); isDev() && setAction('Move Entity'); this._setState((/** * @param {?} state * @return {?} */ function (state) { return (tslib_1.__assign({}, state, { entities: tslib_1.__assign({}, state.entities), ids: ids })); })); }; /** * @param {?=} idsOrFn * @return {?} */ EntityStore.prototype.remove = /** * @param {?=} idsOrFn * @return {?} */ function (idsOrFn) { var _this = this; if (isEmpty(this.ids)) return; /** @type {?} */ var idPassed = isDefined(idsOrFn); // null means remove all /** @type {?} */ var ids = []; if (isFunction(idsOrFn)) { ids = this.ids.filter((/** * @param {?} entityId * @return {?} */ function (entityId) { return idsOrFn(_this.entities[entityId]); })); } else { ids = idPassed ? coerceArray(idsOrFn) : null; } if (isEmpty(ids)) return; isDev() && setAction('Remove Entity', ids); this._setState((/** * @param {?} state * @return {?} */ function (state) { return removeEntities({ state: state, ids: ids }); })); if (ids === null) { this.setHasCache(false); } this.handleUIRemove(ids); this.entityActions.next({ type: EntityActions.Remove, ids: ids }); }; /** * * Update the active entity * * @example * * this.store.updateActive({ completed: true }) * this.store.updateActive(active => { * return { * config: { * ..active.config, * date * } * } * }) */ /** * * Update the active entity * * \@example * * this.store.updateActive({ completed: true }) * this.store.updateActive(active => { * return { * config: { * ..active.config, * date * } * } * }) * @param {?} newStateOrCallback * @return {?} */ EntityStore.prototype.updateActive = /** * * Update the active entity * * \@example * * this.store.updateActive({ completed: true }) * this.store.updateActive(active => { * return { * config: { * ..active.config, * date * } * } * }) * @param {?} newStateOrCallback * @return {?} */ function (newStateOrCallback) { /** @type {?} */ var ids = coerceArray(this.active); isDev() && setAction('Update Active', ids); this.update(ids, (/** @type {?} */ (newStateOrCallback))); }; /** * @param {?} idOrOptions * @return {?} */ EntityStore.prototype.setActive = /** * @param {?} idOrOptions * @return {?} */ function (idOrOptions) { /** @type {?} */ var active = getActiveEntities(idOrOptions, this.ids, this.active); if (active === undefined) { return; } isDev() && setAction('Set Active', active); this._setActive(active); }; /** * Add active entities * * @example * * store.addActive(2); * store.addActive([3, 4, 5]); */ /** * Add active entities * * \@example * * store.addActive(2); * store.addActive([3, 4, 5]); * @template T * @param {?} ids * @return {?} */ EntityStore.prototype.addActive = /** * Add active entities * * \@example * * store.addActive(2); * store.addActive([3, 4, 5]); * @template T * @param {?} ids * @return {?} */ function (ids) { var _this = this; /** @type {?} */ var toArray = coerceArray(ids); if (isEmpty(toArray)) return; /** @type {?} */ var everyExist = toArray.every((/** * @param {?} id * @return {?} */ function (id) { return _this.active.indexOf(id) > -1; })); if (everyExist) return; isDev() && setAction('Add Active', ids); this._setState((/** * @param {?} state * @return {?} */ function (state) { /** * Protect against case that one of the items in the array exist * @type {?} */ var uniques = Array.from(new Set(tslib_1.__spread(((/** @type {?} */ (state.active))), toArray))); return tslib_1.__assign({}, state, { active: uniques }); })); }; /** * Remove active entities * * @example * * store.removeActive(2) * store.removeActive([3, 4, 5]) */ /** * Remove active entities * * \@example * * store.removeActive(2) * store.removeActive([3, 4, 5]) * @template T * @param {?} ids * @return {?} */ EntityStore.prototype.removeActive = /** * Remove active entities * * \@example * * store.removeActive(2) * store.removeActive([3, 4, 5]) * @template T * @param {?} ids * @return {?} */ function (ids) { var _this = this; /** @type {?} */ var toArray = coerceArray(ids); if (isEmpty(toArray)) return; /** @type {?} */ var someExist = toArray.some((/** * @param {?} id * @return {?} */ function (id) { return _this.active.indexOf(id) > -1; })); if (!someExist) return; isDev() && setAction('Remove Active', ids); this._setState((/** * @param {?} state * @return {?} */ function (state) { return tslib_1.__assign({}, state, { active: Array.isArray(state.active) ? state.active.filter((/** * @param {?} currentId * @return {?} */ function (currentId) { return toArray.indexOf(currentId) === -1; })) : null }); })); }; /** * Toggle active entities * * @example * * store.toggle(2) * store.toggle([3, 4, 5]) */ /** * Toggle active entities * * \@example * * store.toggle(2) * store.toggle([3, 4, 5]) * @template T * @param {?} ids * @return {?} */ EntityStore.prototype.toggleActive = /** * Toggle active entities * * \@example * * store.toggle(2) * store.toggle([3, 4, 5]) * @template T * @param {?} ids * @return {?} */ function (ids) { var _this = this; /** @type {?} */ var toArray = coerceArray(ids); /** @type {?} */ var filterExists = (/** * @param {?} remove * @return {?} */ function (remove) { return (/** * @param {?} id * @return {?} */ function (id) { return _this.active.includes(id) === remove; }); }); /** @type {?} */ var remove = toArray.filter(filterExists(true)); /** @type {?} */ var add = toArray.filter(filterExists(false)); this.removeActive(remove); this.addActive(add); isDev() && logAction('Toggle Active'); }; /** * * Create sub UI store for managing Entity's UI state * * @example * * export type ProductUI = { * isLoading: boolean; * isOpen: boolean * } * * interface ProductsUIState extends EntityState<ProductUI> {} * * export class ProductsStore EntityStore<ProductsState, Product> { * ui: EntityUIStore<ProductsUIState, ProductUI>; * * constructor() { * super(); * this.createUIStore(); * } * * } */ /** * * Create sub UI store for managing Entity's UI state * * \@example * * export type ProductUI = { * isLoading: boolean; * isOpen: boolean * } * * interface ProductsUIState extends EntityState<ProductUI> {} * * export class ProductsStore EntityStore<ProductsState, Product> { * ui: EntityUIStore<ProductsUIState, ProductUI>; * * constructor() { * super(); * this.createUIStore(); * } * * } * @param {?=} initialState * @param {?=} storeConfig * @return {?} */ EntityStore.prototype.createUIStore = /** * * Create sub UI store for managing Entity's UI state * * \@example * * export type ProductUI = { * isLoading: boolean; * isOpen: boolean * } * * interface ProductsUIState extends EntityState<ProductUI> {} * * export class ProductsStore EntityStore<ProductsState, Product> { * ui: EntityUIStore<ProductsUIState, ProductUI>; * * constructor() { * super(); * this.createUIStore(); * } * * } * @param {?=} initialState * @param {?=} storeConfig * @return {?} */ function (initialState, storeConfig) { if (initialState === void 0) { initialState = {}; } if (storeConfig === void 0) { storeConfig = {}; } /** @type {?} */ var defaults = { name: "UI/" + this.storeName, idKey: this.idKey }; this.ui = new EntityUIStore(initialState, tslib_1.__assign({}, defaults, storeConfig)); return this.ui; }; // @internal // @internal /** * @return {?} */ EntityStore.prototype.destroy = // @internal /** * @return {?} */ function () { _super.prototype.destroy.call(this); if (this.ui instanceof EntityStore) { this.ui.destroy(); } this.entityActions.complete(); }; // @internal // @internal /** * @param {?} _ * @param {?} nextEntity * @return {?} */ EntityStore.prototype.akitaPreUpdateEntity = // @internal /** * @param {?} _ * @param {?} nextEntity * @return {?} */ function (_, nextEntity) { return nextEntity; }; // @internal // @internal /** * @param {?} newEntity * @return {?} */ EntityStore.prototype.akitaPreAddEntity = // @internal /** * @param {?} newEntity * @return {?} */ function (newEntity) { return newEntity; }; // @internal // @internal /** * @param {?} newEntity * @return {?} */ EntityStore.prototype.akitaPreCheckEntity = // @internal /** * @param {?} newEntity * @return {?} */ function (newEntity) { return newEntity; }; Object.defineProperty(EntityStore.prototype, "ids", { get: /** * @private * @return {?} */ function () { return this._value().ids; }, enumerable: true, configurable: true }); Object.defineProperty(EntityStore.prototype, "entities", { get: /** * @private * @return {?} */ function () { return this._value().entities; }, enumerable: true, configurable: true }); Object.defineProperty(EntityStore.prototype, "active", { get: /** * @private * @return {?} */ function () { return this._value().active; }, enumerable: true, configurable: true }); /** * @private * @param {?} ids * @return {?} */ EntityStore.prototype._setActive = /** * @private * @param {?} ids * @return {?} */ function (ids) { this._setState((/** * @param {?} state * @return {?} */ function (state) { return tslib_1.__assign({}, state, { active: ids }); })); }; /** * @private * @param {?=} add * @return {?} */ EntityStore.prototype.handleUICreation = /** * @private * @param {?=} add * @return {?} */ function (add) { var _this = this; if (add === void 0) { add = false; } /** @type {?} */ var ids = this.ids; /** @type {?} */ var isFunc = isFunction(this.ui._akitaCreateEntityFn); /** @type {?} */ var uiEntities; /** @type {?} */ var createFn = (/** * @param {?} id * @return {?} */ function (id) { var _a; /** @type {?} */ var current = _this.entities[id]; /** @type {?} */ var ui = isFunc ? _this.ui._akitaCreateEntityFn(current) : _this.ui._akitaCreateEntityFn; return tslib_1.__assign((_a = {}, _a[_this.idKey] = current[_this.idKey], _a), ui); }); if (add) { uiEntities = this.ids.filter((/** * @param {?} id * @return {?} */ function (id) { return isUndefined(_this.ui.entities[id]); })).map(createFn); } else { uiEntities = ids.map(createFn); } add ? this.ui.add(uiEntities) : this.ui.set(uiEntities); }; /** * @private * @return {?} */ EntityStore.prototype.hasInitialUIState = /** * @private * @return {?} */ function () { return this.hasUIStore() && isUndefined(this.ui._akitaCreateEntityFn) === false; }; /** * @private * @param {?} ids * @return {?} */ EntityStore.prototype.handleUIRemove = /** * @private * @param {?} ids * @return {?} */ function (ids) { if (this.hasUIStore()) { this.ui.remove(ids); } }; /** * @private * @return {?} */ EntityStore.prototype.hasUIStore = /** * @private * @return {?} */ function () { return this.ui instanceof EntityUIStore; }; var _a; tslib_1.__decorate([ transaction(), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object, Object, Object]), tslib_1.__metadata("design:returntype", void 0) ], EntityStore.prototype, "upsert", null); tslib_1.__decorate([ transaction(), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof T !== "undefined" && T) === "function" ? _a : Object]), tslib_1.__metadata("design:returntype", void 0) ], EntityStore.prototype, "toggleActive", null); return EntityStore; }(Store)); export { EntityStore }; if (false) { /** @type {?} */ EntityStore.prototype.ui; /** * @type {?} * @private */ EntityStore.prototype.entityActions; /** * @type {?} * @protected */ EntityStore.prototype.options; } // @internal /** * @template UIState, DEPRECATED */ var // @internal /** * @template UIState, DEPRECATED */ EntityUIStore = /** @class */ (function (_super) { tslib_1.__extends(EntityUIStore, _super); function EntityUIStore(initialState, storeConfig) { if (initialState === void 0) { initialState = {}; } if (storeConfig === void 0) { storeConfig = {}; } return _super.call(this, initialState, storeConfig) || this; } /** * * Set the initial UI entity state. This function will determine the entity's * initial state when we call `set()` or `add()`. * * @example * * constructor() { * super(); * this.createUIStore().setInitialEntityState(entity => ({ isLoading: false, isOpen: true })); * this.createUIStore().setInitialEntityState({ isLoading: false, isOpen: true }); * } * */ /** * * Set the initial UI entity state. This function will determine the entity's * initial state when we call `set()` or `add()`. * * \@example * * constructor() { * super(); * this.createUIStore().setInitialEntityState(entity => ({ isLoading: false, isOpen: true })); * this.createUIStore().setInitialEntityState({ isLoading: false, isOpen: true }); * } * * @template EntityUI, Entity * @param {?} createFn * @return {?} */ EntityUIStore.prototype.setInitialEntityState = /** * * Set the initial UI entity state. This function will determine the entity's * initial state when we call `set()` or `add()`. * * \@example * * constructor() { * super(); * this.createUIStore().setInitialEntityState(entity => ({ isLoading: false, isOpen: true })); * this.createUIStore().setInitialEntityState({ isLoading: false, isOpen: true }); * } * * @template EntityUI, Entity * @param {?} createFn * @return {?} */ function (createFn) { this._akitaCreateEntityFn = createFn; }; return EntityUIStore; }(EntityStore)); // @internal /** * @template UIState, DEPRECATED */ export { EntityUIStore }; if (false) { /** @type {?} */ EntityUIStore.prototype._akitaCreateEntityFn; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5U3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvZW50aXR5U3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMz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