@ngrx-traits/common 20.0.0 → 21.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ngrx-traits-common.mjs","sources":["../tmp-esm2022/load-entities/load-entities.model.js","../tmp-esm2022/load-entities/load-entities.trait.reducer.js","../tmp-esm2022/load-entities/load-entities.mutators.js","../tmp-esm2022/load-entities/load-entities.trait.actions.js","../tmp-esm2022/load-entities/load-entities.utils.js","../tmp-esm2022/filter-entities/filter-entities.trait.selectors.js","../tmp-esm2022/load-entities/load-entities.trait.selectors.js","../tmp-esm2022/load-entities/load-entities.trait.js","../tmp-esm2022/entities-pagination/entities-pagination.model.js","../tmp-esm2022/filter-entities/filter-entities.trait.effect.js","../tmp-esm2022/filter-entities/filter-entities.trait.reducer.js","../tmp-esm2022/filter-entities/filter-entities.model.js","../tmp-esm2022/filter-entities/filter-entities.trait.mutators.js","../tmp-esm2022/filter-entities/filter-entities.trait.actions.js","../tmp-esm2022/filter-entities/filter-entities.trait.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.selectors.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.actions.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.reducer.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.effects.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.mutators.js","../tmp-esm2022/entities-pagination/entities-pagination.trait.js","../tmp-esm2022/select-entities/select-entities.trait.actions.js","../tmp-esm2022/select-entities/select-entities.utils.js","../tmp-esm2022/select-entities/select-entities.trait.selectors.js","../tmp-esm2022/select-entities/select-entities.trait.reducer.js","../tmp-esm2022/select-entities/select-entities.trait.mutators.js","../tmp-esm2022/select-entities/select-entities.trait.js","../tmp-esm2022/select-entity/select-entity.trait.actions.js","../tmp-esm2022/select-entity/select-entity.trait.selectors.js","../tmp-esm2022/select-entity/select-entity.trait.reducer.js","../tmp-esm2022/select-entity/select-entity.trait.mutators.js","../tmp-esm2022/select-entity/select-entity.trait.js","../tmp-esm2022/select-entity/select-entity.model.js","../tmp-esm2022/crud-entities/crud-entities.model.js","../tmp-esm2022/crud-entities/crud-entities.trait.actions.js","../tmp-esm2022/crud-entities/crud-entities.trait.selectors.js","../tmp-esm2022/crud-entities/crud-entities.trait.reducer.js","../tmp-esm2022/crud-entities/crud-entities.trait.mutators.js","../tmp-esm2022/crud-entities/crud-entities.trait.js","../tmp-esm2022/sort-entities/sort-entities.model.js","../tmp-esm2022/sort-entities/sort-entities.utils.js","../tmp-esm2022/sort-entities/sort-entities.trait.mutators.js","../tmp-esm2022/sort-entities/sort-entities.trait.reducer.js","../tmp-esm2022/sort-entities/sort-entities.trait.selectors.js","../tmp-esm2022/sort-entities/sort-entities.trait.effect.js","../tmp-esm2022/sort-entities/sort-entities.trait.actions.js","../tmp-esm2022/sort-entities/sort-entities.trait.js","../tmp-esm2022/reset/reset.trait.js","../tmp-esm2022/async-action/async-action.trait.js","../tmp-esm2022/load-entity/load-entity.traits.js","../tmp-esm2022/set-entity/set-entity.trait.js","../tmp-esm2022/entities-sync-to-route-query-params/entities-sync-to-route-query-params.js","../tmp-esm2022/ngrx-traits-common.js"],"sourcesContent":["export const loadEntitiesTraitKey = 'loadEntities';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlGQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXllZENvbmZpZyB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IENvbXBhcmVyLCBFbnRpdHlBZGFwdGVyLCBFbnRpdHlTdGF0ZSwgSWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uQ3JlYXRvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IHR5cGUgU3RhdHVzID0gJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2ZhaWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c1N0YXRlIHtcbiAgc3RhdHVzPzogU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRFbnRpdGllc1N0YXRlPFQ+IGV4dGVuZHMgRW50aXR5U3RhdGU8VD4sIFN0YXR1c1N0YXRlIHt9XG5cbmV4cG9ydCB0eXBlIExvYWRFbnRpdGllc0FjdGlvbnM8VD4gPSB7XG4gIC8qKlxuICAgKiBsb2FkIGVudGl0aWVzIGZyb20gYmFja2VuZFxuICAgKi9cbiAgbG9hZEVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xuICAvKipcbiAgICogZW50aXRpZXMgd2hlcmUgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuICAgKi9cbiAgbG9hZEVudGl0aWVzU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByb3BzOiB7XG4gICAgICBlbnRpdGllczogVFtdO1xuICAgICAgdG90YWw/OiBudW1iZXI7XG4gICAgfSkgPT4geyBlbnRpdGllczogVFtdOyB0b3RhbD86IG51bWJlciB9ICYgQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgLyoqXG4gICAqIGVudGl0aWVzIGZhaWxlZCBsb2FkaW5nXG4gICAqL1xuICBsb2FkRW50aXRpZXNGYWlsOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM/OiB7IGVycm9yPzogc3RyaW5nIH0pID0+IHsgZXJyb3I/OiBzdHJpbmcgfSAmIEFjdGlvbjxzdHJpbmc+XG4gID47XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkRW50aXRpZXNTZWxlY3RvcnM8VD4gPSB7XG4gIC8qKlxuICAgKiByZXR1cm5zIGFsbCBpZHMgb2YgdGhlIGVudGl0aWVzIGluIGFuIGFycmF5XG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKi9cbiAgc2VsZWN0RW50aXRpZXNJZHNMaXN0OiAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+KSA9PiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICAvKipcbiAgICogcmV0dXJucyBhbGwgZW50aXRpZXMgaW4gYSBtYXAgd2l0aCB0aGUgaWQgYXMga2V5IG9mIHRoZSBtYXBcbiAgICogQHBhcmFtIHN0YXRlXG4gICAqL1xuICBzZWxlY3RFbnRpdGllc01hcDogKHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPikgPT4gRGljdGlvbmFyeTxUPjtcbiAgLyoqXG4gICAqIHJldHVybnMgYWxsIGVudGl0aWVzIGluIGFuIGFycmF5XG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKi9cbiAgc2VsZWN0RW50aXRpZXNMaXN0OiAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+KSA9PiBUW107XG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgZW50aXRpZXNcbiAgICogQHBhcmFtIHN0YXRlXG4gICAqL1xuICBzZWxlY3RFbnRpdGllc1RvdGFsOiAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+KSA9PiBudW1iZXI7XG4gIC8qKlxuICAgKiBpcyBjdXJyZW50bHkgbG9hZGluZyBlbnRpdGllc1xuICAgKiBAcGFyYW0gc3RhdGVcbiAgICovXG4gIGlzRW50aXRpZXNMb2FkaW5nOiAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogd2VyZSB0aGUgZW50aXRpZXMgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuICAgKiBAcGFyYW0gc3RhdGVcbiAgICovXG4gIGlzRW50aXRpZXNMb2FkaW5nU3VjY2VzczogKHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPikgPT4gYm9vbGVhbjtcbiAgLyoqXG4gICAqIGRpZCB0aGUgZW50aXRpZXMgZmFpbCBsb2FkaW5nXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKi9cbiAgaXNFbnRpdGllc0xvYWRpbmdGYWlsOiAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+KSA9PiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTG9hZEVudGl0aWVzTXV0YXRvcnM8VD4gPSB7XG4gIC8qKlxuICAgKiBzZXQgb3IgcmVwbGFjZSBhbGwgZW50aXRpZXMgY3VycmVudGx5IGluIHN0b3JlXG4gICAqIEBwYXJhbSBlbnRpdGllc1xuICAgKiBAcGFyYW0gc3RhdGVcbiAgICovXG4gIHNldEVudGl0aWVzTGlzdDxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VD4+KGVudGl0aWVzOiBUW10sIHN0YXRlOiBTKTogUztcbn07XG5cbmV4cG9ydCB0eXBlIEdlbmVyaWNBY3Rpb25DcmVhdG9yID0gQWN0aW9uQ3JlYXRvcjxcbiAgc3RyaW5nLFxuICAoLi4uYXJnczogdW5rbm93bltdKSA9PiBBY3Rpb248c3RyaW5nPlxuPjtcblxuZXhwb3J0IGNvbnN0IGxvYWRFbnRpdGllc1RyYWl0S2V5ID0gJ2xvYWRFbnRpdGllcyc7XG5cbmV4cG9ydCB0eXBlIExvYWRFbnRpdGllc0NvbmZpZzxUID0gdW5rbm93bj4gPSB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGlkIG9mIGFuIGVudGl0eSBpZiBub3Qgc2V0IGl0IGF0dGVtcHRzIHRvIHJldHVybiB0aGUgdmFsdWVzXG4gICAqIG9mIGEgcHJvcGVydHkgY2FsbCBpZCwgdGhpcyBpcyBwYXNzIHRvIEBuZ3J4L2VudGl0eSBFbnRpdHlBZGFwdGVyXG4gICAqL1xuICBzZWxlY3RJZD86IElkU2VsZWN0b3I8VD47XG4gIC8qKlxuICAgKiAgRGVmYXVsdCBzb3J0IGZ1bmN0aW9uIGZvciB0byBAbmdyeC9lbnRpdHkgRW50aXR5QWRhcHRlclxuICAgKi9cbiAgc29ydENvbXBhcmVyPzogZmFsc2UgfCBDb21wYXJlcjxUPjtcbiAgLyoqXG4gICAqICBAbmdyeC9lbnRpdHkgRW50aXR5QWRhcHRlclxuICAgKi9cbiAgYWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPFQ+ID0gS2V5ZWRDb25maWc8XG4gIHR5cGVvZiBsb2FkRW50aXRpZXNUcmFpdEtleSxcbiAgTG9hZEVudGl0aWVzQ29uZmlnPFQ+XG4+O1xuIl19","import { createReducer, on } from '@ngrx/store';\nimport { insertIf } from '@ngrx-traits/core';\nexport function createLoadEntitiesInitialState(previousInitialState = {}, allConfigs) {\n const traitConfig = allConfigs.loadEntities;\n const adapter = traitConfig.adapter;\n return {\n ...previousInitialState,\n ...adapter.getInitialState(),\n status: undefined,\n };\n}\nexport function createLoadEntitiesTraitReducer(initialState, actions, allMutators, allConfigs) {\n const handleEntitiesMerge = !allConfigs?.pagination;\n return createReducer(initialState, on(actions.loadEntities, (state) => ({\n ...state,\n status: 'loading',\n })), on(actions.loadEntitiesFail, (state) => ({\n ...state,\n status: 'fail',\n })), on(actions.loadEntitiesSuccess, (state) => ({\n ...state,\n status: 'success',\n })), ...insertIf(handleEntitiesMerge, () => on(actions.loadEntitiesSuccess, (state, { entities }) => allMutators.setEntitiesList(entities, {\n ...state,\n }))));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0MsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxvQkFBb0IsR0FBRyxFQUFFLEVBQ3pCLFVBQTJDO0lBRTNDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsV0FBWSxDQUFDLE9BQU8sQ0FBQztJQUVyQyxPQUFPO1FBQ0wsR0FBRyxvQkFBb0I7UUFDdkIsR0FBRyxPQUFRLENBQUMsZUFBZSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUk1QyxZQUFlLEVBQ2YsT0FBK0IsRUFDL0IsV0FBb0MsRUFDcEMsVUFBc0U7SUFFdEUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFFcEQsT0FBTyxhQUFhLENBQ2xCLFlBQVksRUFDWixFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQyxHQUFHLEtBQUs7UUFDUixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsRUFDSCxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsS0FBSztRQUNSLE1BQU0sRUFBRSxNQUFNO0tBQ2YsQ0FBQyxDQUFDLEVBQ0gsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxHQUFHLEtBQUs7UUFDUixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsRUFDSCxHQUFHLFFBQVEsQ0FBSSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FDdkMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FDdEQsV0FBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUU7UUFDcEMsR0FBRyxLQUFLO0tBQ1QsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc1N0YXRlLFxuICBMb2FkRW50aXRpZXNBY3Rpb25zLFxuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzTXV0YXRvcnMsXG59IGZyb20gJy4vbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnIH0gZnJvbSAnLi4vZW50aXRpZXMtcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBpbnNlcnRJZiB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvYWRFbnRpdGllc0luaXRpYWxTdGF0ZTxFbnRpdHk+KFxuICBwcmV2aW91c0luaXRpYWxTdGF0ZSA9IHt9LFxuICBhbGxDb25maWdzOiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4pOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+IHtcbiAgY29uc3QgdHJhaXRDb25maWcgPSBhbGxDb25maWdzLmxvYWRFbnRpdGllcztcbiAgY29uc3QgYWRhcHRlciA9IHRyYWl0Q29uZmlnIS5hZGFwdGVyO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgLi4uYWRhcHRlciEuZ2V0SW5pdGlhbFN0YXRlKCksXG4gICAgc3RhdHVzOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRW50aXRpZXNUcmFpdFJlZHVjZXI8XG4gIFQsXG4gIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxUPlxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhY3Rpb25zOiBMb2FkRW50aXRpZXNBY3Rpb25zPFQ+LFxuICBhbGxNdXRhdG9yczogTG9hZEVudGl0aWVzTXV0YXRvcnM8VD4sXG4gIGFsbENvbmZpZ3M6IExvYWRFbnRpdGllc0tleWVkQ29uZmlnPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWdcbikge1xuICBjb25zdCBoYW5kbGVFbnRpdGllc01lcmdlID0gIWFsbENvbmZpZ3M/LnBhZ2luYXRpb247XG5cbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXIoXG4gICAgaW5pdGlhbFN0YXRlLFxuICAgIG9uKGFjdGlvbnMubG9hZEVudGl0aWVzLCAoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHN0YXR1czogJ2xvYWRpbmcnLFxuICAgIH0pKSxcbiAgICBvbihhY3Rpb25zLmxvYWRFbnRpdGllc0ZhaWwsIChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc3RhdHVzOiAnZmFpbCcsXG4gICAgfSkpLFxuICAgIG9uKGFjdGlvbnMubG9hZEVudGl0aWVzU3VjY2VzcywgKHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICB9KSksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oaGFuZGxlRW50aXRpZXNNZXJnZSwgKCkgPT5cbiAgICAgIG9uKGFjdGlvbnMubG9hZEVudGl0aWVzU3VjY2VzcywgKHN0YXRlLCB7IGVudGl0aWVzIH0pID0+XG4gICAgICAgIGFsbE11dGF0b3JzLnNldEVudGl0aWVzTGlzdChlbnRpdGllcywge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==","export function createLoadEntitiesTraitMutators(allConfigs) {\n const adapter = allConfigs?.loadEntities?.adapter;\n return {\n setEntitiesList: adapter?.setAll,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsVUFBMkU7SUFFM0UsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7SUFFbEQsT0FBTztRQUNMLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTTtLQUNELENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNNdXRhdG9ycyxcbn0gZnJvbSAnLi9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnIH0gZnJvbSAnLi4vZW50aXRpZXMtcGFnaW5hdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRW50aXRpZXNUcmFpdE11dGF0b3JzPEVudGl0eT4oXG4gIGFsbENvbmZpZ3M6IExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZ1xuKSB7XG4gIGNvbnN0IGFkYXB0ZXIgPSBhbGxDb25maWdzPy5sb2FkRW50aXRpZXM/LmFkYXB0ZXI7XG5cbiAgcmV0dXJuIHtcbiAgICBzZXRFbnRpdGllc0xpc3Q6IGFkYXB0ZXI/LnNldEFsbCxcbiAgfSBhcyBMb2FkRW50aXRpZXNNdXRhdG9yczxFbnRpdHk+O1xufVxuIl19","import { createAction, props } from '@ngrx/store';\nexport function createLoadEntitiesTraitActions(actionsGroupKey, entitiesName) {\n const actions = {\n loadEntities: createAction(`${actionsGroupKey} Load ${entitiesName}`),\n loadEntitiesSuccess: createAction(`${actionsGroupKey} Load ${entitiesName} Success`, props()),\n loadEntitiesFail: createAction(`${actionsGroupKey} Load ${entitiesName} Fail`, (props) => ({ error: props?.error })),\n };\n return actions;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLGVBQXVCLEVBQ3ZCLFlBQW9CO0lBRXBCLE1BQU0sT0FBTyxHQUFHO1FBQ2QsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHLGVBQWUsU0FBUyxZQUFZLEVBQUUsQ0FBQztRQUNyRSxtQkFBbUIsRUFBRSxZQUFZLENBQy9CLEdBQUcsZUFBZSxTQUFTLFlBQVksVUFBVSxFQUNqRCxLQUFLLEVBQTBDLENBQ2hEO1FBQ0QsZ0JBQWdCLEVBQUUsWUFBWSxDQUM1QixHQUFHLGVBQWUsU0FBUyxZQUFZLE9BQU8sRUFDOUMsQ0FBQyxLQUEwQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUMxRDtLQUNGLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9hZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9hZEVudGl0aWVzVHJhaXRBY3Rpb25zPEVudGl0eT4oXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdGllc05hbWU6IHN0cmluZ1xuKTogTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+IHtcbiAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICBsb2FkRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgJHtlbnRpdGllc05hbWV9YCksXG4gICAgbG9hZEVudGl0aWVzU3VjY2VzczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBMb2FkICR7ZW50aXRpZXNOYW1lfSBTdWNjZXNzYCxcbiAgICAgIHByb3BzPHsgZW50aXRpZXM6IEVudGl0eVtdOyB0b3RhbD86IG51bWJlciB9PigpXG4gICAgKSxcbiAgICBsb2FkRW50aXRpZXNGYWlsOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgJHtlbnRpdGllc05hbWV9IEZhaWxgLFxuICAgICAgKHByb3BzPzogeyBlcnJvcj86IHN0cmluZyB9KSA9PiAoeyBlcnJvcjogcHJvcHM/LmVycm9yIH0pXG4gICAgKSxcbiAgfTtcblxuICByZXR1cm4gYWN0aW9ucztcbn1cbiJdfQ==","export function isLoading(state) {\n return state.status === 'loading';\n}\nexport function isSuccess(state) {\n return state.status === 'success';\n}\nexport function isFail(state) {\n return state.status === 'fail';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxTQUFTLENBQXdCLEtBQVE7SUFDdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQztBQUNwQyxDQUFDO0FBQ0QsTUFBTSxVQUFVLFNBQVMsQ0FBd0IsS0FBUTtJQUN2RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDO0FBQ3BDLENBQUM7QUFDRCxNQUFNLFVBQVUsTUFBTSxDQUF3QixLQUFRO0lBQ3BELE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXR1c1N0YXRlIH0gZnJvbSAnLi9sb2FkLWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9hZGluZzxTIGV4dGVuZHMgU3RhdHVzU3RhdGU+KHN0YXRlOiBTKSB7XG4gIHJldHVybiBzdGF0ZS5zdGF0dXMgPT09ICdsb2FkaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N1Y2Nlc3M8UyBleHRlbmRzIFN0YXR1c1N0YXRlPihzdGF0ZTogUykge1xuICByZXR1cm4gc3RhdGUuc3RhdHVzID09PSAnc3VjY2Vzcyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGYWlsPFMgZXh0ZW5kcyBTdGF0dXNTdGF0ZT4oc3RhdGU6IFMpIHtcbiAgcmV0dXJuIHN0YXRlLnN0YXR1cyA9PT0gJ2ZhaWwnO1xufVxuIl19","export function selectEntitiesFilter(state) {\n return state.filters;\n}\nexport function createFilterTraitSelectors() {\n return {\n selectEntitiesFilter,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZmlsdGVyLWVudGl0aWVzL2ZpbHRlci1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUF5RDtJQUV6RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEI7SUFJeEMsT0FBTztRQUNMLG9CQUFvQjtLQUNyQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZpbHRlckVudGl0aWVzU2VsZWN0b3JzLFxuICBGaWx0ZXJFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEVudGl0aWVzRmlsdGVyPEVudGl0eSwgRj4oXG4gIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRmlsdGVyRW50aXRpZXNTdGF0ZTxGPlxuKSB7XG4gIHJldHVybiBzdGF0ZS5maWx0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsdGVyVHJhaXRTZWxlY3RvcnM8XG4gIEVudGl0eSxcbiAgRlxuPigpOiBGaWx0ZXJFbnRpdGllc1NlbGVjdG9yczxFbnRpdHksIEY+IHtcbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RFbnRpdGllc0ZpbHRlcixcbiAgfTtcbn1cbiJdfQ==","import { isFail, isLoading, isSuccess } from './load-entities.utils';\nimport { createSelector } from '@ngrx/store';\nimport { selectEntitiesFilter } from '../filter-entities/filter-entities.trait.selectors';\nexport function createLoadEntitiesTraitSelectors(allConfigs) {\n const adapter = allConfigs?.loadEntities?.adapter;\n const entitySelectors = adapter.getSelectors();\n const filterFunction = allConfigs?.filter?.filterFn;\n let selectors = {\n selectEntitiesList: entitySelectors.selectAll,\n selectEntitiesMap: entitySelectors.selectEntities,\n selectEntitiesIdsList: entitySelectors.selectIds,\n selectEntitiesTotal: entitySelectors.selectTotal,\n isEntitiesLoadingFail: isFail,\n isEntitiesLoading: isLoading,\n isEntitiesLoadingSuccess: isSuccess,\n };\n if (filterFunction && entitySelectors) {\n const selectEntitiesList = createSelector(entitySelectors.selectAll, selectEntitiesFilter, (entities, filters) => filters ? entities.filter((e) => filterFunction(filters, e)) : entities);\n selectors = {\n ...selectors,\n selectEntitiesList,\n selectEntitiesMap: createSelector(selectors.selectEntitiesMap, selectEntitiesFilter, (entities, filters) => {\n const result = {};\n for (const id in entities) {\n const e = entities[id];\n if (filterFunction(filters, e)) {\n result[id] = e;\n }\n }\n return result;\n }),\n selectEntitiesTotal: createSelector(selectEntitiesList, (entities) => entities.length),\n selectEntitiesIdsList: createSelector(selectEntitiesList, (entities) => entities.map((e) => adapter?.selectId(e))),\n };\n }\n return selectors;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUUxRixNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLFVBQzRDO0lBRTVDLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO0lBQ2xELE1BQU0sZUFBZSxHQUFHLE9BQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRCxNQUFNLGNBQWMsR0FBRyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztJQUNwRCxJQUFJLFNBQVMsR0FBa0M7UUFDN0Msa0JBQWtCLEVBQUUsZUFBZSxDQUFDLFNBQVM7UUFDN0MsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLGNBQWM7UUFDakQscUJBQXFCLEVBQUUsZUFBZSxDQUFDLFNBQVM7UUFDaEQsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLFdBQVc7UUFDaEQscUJBQXFCLEVBQUUsTUFBTTtRQUM3QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLHdCQUF3QixFQUFFLFNBQVM7S0FDcEMsQ0FBQztJQUNGLElBQUksY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUN2QyxlQUFlLENBQUMsU0FBUyxFQUN6QixvQkFBb0IsRUFDcEIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDMUUsQ0FBQztRQUVGLFNBQVMsR0FBRztZQUNWLEdBQUcsU0FBUztZQUNaLGtCQUFrQjtZQUNsQixpQkFBaUIsRUFBRSxjQUFjLENBQy9CLFNBQVMsQ0FBQyxpQkFBaUIsRUFDM0Isb0JBQW9CLEVBQ3BCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO2dCQUN0QyxLQUFLLE1BQU0sRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUMxQixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZCLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFFLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxDQUNGO1lBQ0QsbUJBQW1CLEVBQUUsY0FBYyxDQUNqQyxrQkFBa0IsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzlCO1lBQ0QscUJBQXFCLEVBQUUsY0FBYyxDQUNuQyxrQkFBa0IsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQXdCLENBQ25FO1NBQzBDLENBQUM7SUFDaEQsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTZWxlY3RvcnMsXG59IGZyb20gJy4vbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnIH0gZnJvbSAnLi4vZmlsdGVyLWVudGl0aWVzJztcbmltcG9ydCB7IGlzRmFpbCwgaXNMb2FkaW5nLCBpc1N1Y2Nlc3MgfSBmcm9tICcuL2xvYWQtZW50aXRpZXMudXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RFbnRpdGllc0ZpbHRlciB9IGZyb20gJy4uL2ZpbHRlci1lbnRpdGllcy9maWx0ZXItZW50aXRpZXMudHJhaXQuc2VsZWN0b3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0U2VsZWN0b3JzPEVudGl0eT4oXG4gIGFsbENvbmZpZ3M/OiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgdW5rbm93bj5cbikge1xuICBjb25zdCBhZGFwdGVyID0gYWxsQ29uZmlncz8ubG9hZEVudGl0aWVzPy5hZGFwdGVyO1xuICBjb25zdCBlbnRpdHlTZWxlY3RvcnMgPSBhZGFwdGVyIS5nZXRTZWxlY3RvcnMoKTtcblxuICBjb25zdCBmaWx0ZXJGdW5jdGlvbiA9IGFsbENvbmZpZ3M/LmZpbHRlcj8uZmlsdGVyRm47XG4gIGxldCBzZWxlY3RvcnM6IExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+ID0ge1xuICAgIHNlbGVjdEVudGl0aWVzTGlzdDogZW50aXR5U2VsZWN0b3JzLnNlbGVjdEFsbCxcbiAgICBzZWxlY3RFbnRpdGllc01hcDogZW50aXR5U2VsZWN0b3JzLnNlbGVjdEVudGl0aWVzLFxuICAgIHNlbGVjdEVudGl0aWVzSWRzTGlzdDogZW50aXR5U2VsZWN0b3JzLnNlbGVjdElkcyxcbiAgICBzZWxlY3RFbnRpdGllc1RvdGFsOiBlbnRpdHlTZWxlY3RvcnMuc2VsZWN0VG90YWwsXG4gICAgaXNFbnRpdGllc0xvYWRpbmdGYWlsOiBpc0ZhaWwsXG4gICAgaXNFbnRpdGllc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICBpc0VudGl0aWVzTG9hZGluZ1N1Y2Nlc3M6IGlzU3VjY2VzcyxcbiAgfTtcbiAgaWYgKGZpbHRlckZ1bmN0aW9uICYmIGVudGl0eVNlbGVjdG9ycykge1xuICAgIGNvbnN0IHNlbGVjdEVudGl0aWVzTGlzdCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgZW50aXR5U2VsZWN0b3JzLnNlbGVjdEFsbCxcbiAgICAgIHNlbGVjdEVudGl0aWVzRmlsdGVyLFxuICAgICAgKGVudGl0aWVzLCBmaWx0ZXJzKSA9PlxuICAgICAgICBmaWx0ZXJzID8gZW50aXRpZXMuZmlsdGVyKChlKSA9PiBmaWx0ZXJGdW5jdGlvbihmaWx0ZXJzLCBlKSkgOiBlbnRpdGllc1xuICAgICk7XG5cbiAgICBzZWxlY3RvcnMgPSB7XG4gICAgICAuLi5zZWxlY3RvcnMsXG4gICAgICBzZWxlY3RFbnRpdGllc0xpc3QsXG4gICAgICBzZWxlY3RFbnRpdGllc01hcDogY3JlYXRlU2VsZWN0b3IoXG4gICAgICAgIHNlbGVjdG9ycy5zZWxlY3RFbnRpdGllc01hcCxcbiAgICAgICAgc2VsZWN0RW50aXRpZXNGaWx0ZXIsXG4gICAgICAgIChlbnRpdGllcywgZmlsdGVycykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogRGljdGlvbmFyeTxFbnRpdHk+ID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBpZCBpbiBlbnRpdGllcykge1xuICAgICAgICAgICAgY29uc3QgZSA9IGVudGl0aWVzW2lkXTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJGdW5jdGlvbihmaWx0ZXJzLCBlISkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2lkXSA9IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzZWxlY3RFbnRpdGllc1RvdGFsOiBjcmVhdGVTZWxlY3RvcihcbiAgICAgICAgc2VsZWN0RW50aXRpZXNMaXN0LFxuICAgICAgICAoZW50aXRpZXMpID0+IGVudGl0aWVzLmxlbmd0aFxuICAgICAgKSxcbiAgICAgIHNlbGVjdEVudGl0aWVzSWRzTGlzdDogY3JlYXRlU2VsZWN0b3IoXG4gICAgICAgIHNlbGVjdEVudGl0aWVzTGlzdCxcbiAgICAgICAgKGVudGl0aWVzKSA9PlxuICAgICAgICAgIGVudGl0aWVzLm1hcCgoZSkgPT4gYWRhcHRlcj8uc2VsZWN0SWQoZSkpIGFzIHN0cmluZ1tdIHwgbnVtYmVyW11cbiAgICAgICksXG4gICAgfSBhcyB1bmtub3duIGFzIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+O1xuICB9XG4gIHJldHVybiBzZWxlY3RvcnM7XG59XG4iXX0=","import { createLoadEntitiesInitialState, createLoadEntitiesTraitReducer, } from './load-entities.trait.reducer';\nimport { loadEntitiesTraitKey, } from './load-entities.model';\nimport { createLoadEntitiesTraitMutators } from './load-entities.mutators';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createEntityAdapter } from '@ngrx/entity';\nimport { createLoadEntitiesTraitActions } from './load-entities.trait.actions';\nimport { createLoadEntitiesTraitSelectors } from './load-entities.trait.selectors';\n/**\n * Generates the ngrx code needed to load a list of entities from the backend. This trait is the base for all other traits related\n * to a list of entities, the other will call loadEntities when needing data. See the example for the list of actions and selectors this generates\n *\n * @param traitConfig - Config object for the trait factory\n * @param traitConfig.selectId - Function that returns the id of an entity\n * @param traitConfig.sortComparer - Default sort function for to @ngrx/entity EntityAdapter\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends LoadEntitiesState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // ids: string[] | number[];\n * // entities: Dictionary<Todo>;\n * // status?: 'loading' | 'success' | 'fail';\n *\n * // generated actions\n * traits.actions.loadTodos()\n * traits.actions.loadTodosSuccess({entities: todos})\n * traits.actions.loadTodosFail();\n * // generated selectors\n * traits.selectors.selectTodosList\n * traits.selectors.selectTodosMap\n * traits.selectors.selectTodosIds\n * traits.selectors.selectTodosTotal\n * traits.selectors.isTodosLoading\n * traits.selectors.isTodosLoadingSuccess\n * traits.selectors.isTodosLoadingFail\n */\nexport function addLoadEntitiesTrait(traitConfig) {\n const adapter = createEntityAdapter(traitConfig);\n return createTraitFactory({\n key: loadEntitiesTraitKey,\n config: { ...traitConfig, adapter },\n actions: ({ actionsGroupKey, entitiesName }) => createLoadEntitiesTraitActions(actionsGroupKey, entitiesName),\n selectors: ({ allConfigs }) => createLoadEntitiesTraitSelectors(allConfigs),\n mutators: ({ allConfigs }) => createLoadEntitiesTraitMutators(allConfigs),\n initialState: ({ previousInitialState, allConfigs, }) => createLoadEntitiesInitialState(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) => createLoadEntitiesTraitReducer(initialState, allActions, allMutators, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdGllcy50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsOEJBQThCLEdBQy9CLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUlMLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFDO0FBUS9CLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxXQUF5RDtJQUV6RCxNQUFNLE9BQU8sR0FBMEIsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFeEUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLE9BQU8sRUFBZ0M7UUFDakUsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUE2QixFQUFFLEVBQUUsQ0FDeEUsOEJBQThCLENBQVMsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUN2RSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBK0IsRUFBRSxFQUFFLENBQ3pELGdDQUFnQyxDQUM5QixVQUMrQixDQUNoQztRQUNILFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFtQyxFQUFFLEVBQUUsQ0FDNUQsK0JBQStCLENBQzdCLFVBQytCLENBQ2hDO1FBQ0gsWUFBWSxFQUFFLENBQUMsRUFDYixvQkFBb0IsRUFDcEIsVUFBVSxHQUNxQixFQUFFLEVBQUUsQ0FDbkMsOEJBQThCLENBQVMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDO1FBQzFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUNqRSw4QkFBOEIsQ0FDNUIsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFDK0IsQ0FDaEM7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlTG9hZEVudGl0aWVzSW5pdGlhbFN0YXRlLFxuICBjcmVhdGVMb2FkRW50aXRpZXNUcmFpdFJlZHVjZXIsXG59IGZyb20gJy4vbG9hZC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc1N0YXRlLFxuICBMb2FkRW50aXRpZXNDb25maWcsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBsb2FkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcsXG4gIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRTZWxlY3RvcnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFN0YXRlTXV0YXRvcnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyB9IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlTG9hZEVudGl0aWVzVHJhaXRNdXRhdG9ycyB9IGZyb20gJy4vbG9hZC1lbnRpdGllcy5tdXRhdG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnkgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHlBZGFwdGVyLCBFbnRpdHlBZGFwdGVyIH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7IGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0QWN0aW9ucyB9IGZyb20gJy4vbG9hZC1lbnRpdGllcy50cmFpdC5hY3Rpb25zJztcbmltcG9ydCB7IGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0U2VsZWN0b3JzIH0gZnJvbSAnLi9sb2FkLWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBuZ3J4IGNvZGUgbmVlZGVkIHRvIGxvYWQgYSBsaXN0IG9mIGVudGl0aWVzIGZyb20gdGhlIGJhY2tlbmQuIFRoaXMgdHJhaXQgaXMgdGhlIGJhc2UgZm9yIGFsbCBvdGhlciB0cmFpdHMgcmVsYXRlZFxuICogdG8gYSBsaXN0IG9mIGVudGl0aWVzLCB0aGUgb3RoZXIgd2lsbCBjYWxsIGxvYWRFbnRpdGllcyB3aGVuIG5lZWRpbmcgZGF0YS4gU2VlIHRoZSBleGFtcGxlIGZvciB0aGUgbGlzdCBvZiBhY3Rpb25zIGFuZCBzZWxlY3RvcnMgdGhpcyBnZW5lcmF0ZXNcbiAqXG4gKiBAcGFyYW0gdHJhaXRDb25maWcgLSBDb25maWcgb2JqZWN0IGZvciB0aGUgdHJhaXQgZmFjdG9yeVxuICogQHBhcmFtIHRyYWl0Q29uZmlnLnNlbGVjdElkIC0gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpZCBvZiBhbiBlbnRpdHlcbiAqIEBwYXJhbSB0cmFpdENvbmZpZy5zb3J0Q29tcGFyZXIgLSBEZWZhdWx0IHNvcnQgZnVuY3Rpb24gZm9yIHRvIEBuZ3J4L2VudGl0eSBFbnRpdHlBZGFwdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKlxuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VG9kbz57fVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkTG9hZEVudGl0aWVzVHJhaXQ8VG9kbz4oKSxcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICpcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgaWRzOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICogLy8gICAgZW50aXRpZXM6IERpY3Rpb25hcnk8VG9kbz47XG4gKiAvLyAgICBzdGF0dXM/OiAnbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZmFpbCc7XG4gKlxuICogLy8gZ2VuZXJhdGVkIGFjdGlvbnNcbiAqIHRyYWl0cy5hY3Rpb25zLmxvYWRUb2RvcygpXG4gKiB0cmFpdHMuYWN0aW9ucy5sb2FkVG9kb3NTdWNjZXNzKHtlbnRpdGllczogdG9kb3N9KVxuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zRmFpbCgpO1xuICogLy8gZ2VuZXJhdGVkIHNlbGVjdG9yc1xuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2Rvc0xpc3RcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NNYXBcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NJZHNcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NUb3RhbFxuICogdHJhaXRzLnNlbGVjdG9ycy5pc1RvZG9zTG9hZGluZ1xuICogdHJhaXRzLnNlbGVjdG9ycy5pc1RvZG9zTG9hZGluZ1N1Y2Nlc3NcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNUb2Rvc0xvYWRpbmdGYWlsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRMb2FkRW50aXRpZXNUcmFpdDxFbnRpdHk+KFxuICB0cmFpdENvbmZpZz86IE9taXQ8TG9hZEVudGl0aWVzQ29uZmlnPEVudGl0eT4sICdhZGFwdGVyJz5cbikge1xuICBjb25zdCBhZGFwdGVyOiBFbnRpdHlBZGFwdGVyPEVudGl0eT4gPSBjcmVhdGVFbnRpdHlBZGFwdGVyKHRyYWl0Q29uZmlnKTtcblxuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6IGxvYWRFbnRpdGllc1RyYWl0S2V5LFxuICAgIGNvbmZpZzogeyAuLi50cmFpdENvbmZpZywgYWRhcHRlciB9IGFzIExvYWRFbnRpdGllc0NvbmZpZzxFbnRpdHk+LFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lIH06IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVMb2FkRW50aXRpZXNUcmFpdEFjdGlvbnM8RW50aXR5PihhY3Rpb25zR3JvdXBLZXksIGVudGl0aWVzTmFtZSksXG4gICAgc2VsZWN0b3JzOiAoeyBhbGxDb25maWdzIH06IFRyYWl0U2VsZWN0b3JzRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0U2VsZWN0b3JzPEVudGl0eT4oXG4gICAgICAgIGFsbENvbmZpZ3MgYXMgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWdcbiAgICAgICksXG4gICAgbXV0YXRvcnM6ICh7IGFsbENvbmZpZ3MgfTogVHJhaXRTdGF0ZU11dGF0b3JzRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0TXV0YXRvcnM8RW50aXR5PihcbiAgICAgICAgYWxsQ29uZmlncyBhcyBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZ1xuICAgICAgKSxcbiAgICBpbml0aWFsU3RhdGU6ICh7XG4gICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICAgIGFsbENvbmZpZ3MsXG4gICAgfTogVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlTG9hZEVudGl0aWVzSW5pdGlhbFN0YXRlPEVudGl0eT4ocHJldmlvdXNJbml0aWFsU3RhdGUsIGFsbENvbmZpZ3MpLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucywgYWxsTXV0YXRvcnMsIGFsbENvbmZpZ3MgfSkgPT5cbiAgICAgIGNyZWF0ZUxvYWRFbnRpdGllc1RyYWl0UmVkdWNlcjxFbnRpdHksIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4+KFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIGFsbEFjdGlvbnMsXG4gICAgICAgIGFsbE11dGF0b3JzLFxuICAgICAgICBhbGxDb25maWdzIGFzIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgICAgICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnXG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==","export const entitiesPaginationTraitKey = 'pagination';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVHQSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlICovXG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbkNyZWF0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCB0eXBlIENhY2hlVHlwZSA9ICdmdWxsJyB8ICdwYXJ0aWFsJyB8ICdncm93JztcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGUge1xuICBwYWdpbmF0aW9uOiB7XG4gICAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgICByZXF1ZXN0UGFnZTogbnVtYmVyO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgdG90YWw/OiBudW1iZXI7XG4gICAgcGFnZXNUb0NhY2hlOiBudW1iZXI7XG4gICAgY2FjaGU6IHtcbiAgICAgIHR5cGU6IENhY2hlVHlwZTtcbiAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zID0ge1xuICBsb2FkRW50aXRpZXNQYWdlOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHtcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICBmb3JjZUxvYWQ/OiBib29sZWFuO1xuICAgIH0pID0+IHsgaW5kZXg6IG51bWJlcjsgZm9yY2VMb2FkPzogYm9vbGVhbiB9ICYgQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgbG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBBY3Rpb248c3RyaW5nPj47XG4gIGxvYWRFbnRpdGllc1BhZ2VGYWlsOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xuICBsb2FkRW50aXRpZXNOZXh0UGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZEVudGl0aWVzUHJldmlvdXNQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xuICBsb2FkRW50aXRpZXNGaXJzdFBhZ2U6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChmb3JjZUxvYWQ/OiBib29sZWFuKSA9PiB7IGZvcmNlTG9hZD86IGJvb2xlYW4gfSAmIEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIGxvYWRFbnRpdGllc0xhc3RQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xuICBjbGVhckVudGl0aWVzUGFnZXNDYWNoZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IEFjdGlvbjxzdHJpbmc+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEVudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxUPiA9IHtcbiAgc2VsZWN0RW50aXRpZXNDdXJyZW50UGFnZUxpc3Q6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbiAgKSA9PiBUW107XG4gIHNlbGVjdEVudGl0aWVzQ3VycmVudFBhZ2U6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbiAgKSA9PiBQYWdlTW9kZWw8VD47XG4gIHNlbGVjdEVudGl0aWVzUGFnZWRSZXF1ZXN0OiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGUsXG4gICkgPT4gUGFnZWRSZXF1ZXN0O1xuICBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlSW5mbzogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlLFxuICApID0+IFBhZ2VJbmZvTW9kZWw7XG4gIGlzTG9hZGluZ0VudGl0aWVzQ3VycmVudFBhZ2U6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbiAgKSA9PiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNQYWdpbmF0aW9uTXV0YXRvcnM8RW50aXR5PiA9IHtcbiAgbWVyZ2VQYWdpbmF0ZWRFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlLFxuICA+KFxuICAgIGVudGl0aWVzOiBFbnRpdHlbXSxcbiAgICB0b3RhbDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIHN0YXRlOiBTLFxuICApOiBTO1xuICBzZXRFbnRpdGllc1BhZ2U8XG4gICAgRW50aXR5LFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGUsXG4gID4oXG4gICAgc3RhdGU6IFMsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgKTogUztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZU1vZGVsPFQ+IHtcbiAgZW50aXRpZXM6IFRbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgcGFnZXNDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBoYXNQcmV2aW91czogYm9vbGVhbjtcbiAgaGFzTmV4dDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlSW5mb01vZGVsIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHBhZ2VzQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaGFzUHJldmlvdXM6IGJvb2xlYW47XG4gIGhhc05leHQ6IGJvb2xlYW47XG4gIGNhY2hlVHlwZTogQ2FjaGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VkUmVxdWVzdCB7XG4gIHN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBlbnRpdGllc1BhZ2luYXRpb25UcmFpdEtleSA9ICdwYWdpbmF0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllc1BhZ2luYXRpb25Db25maWcge1xuICBjYWNoZVR5cGU/OiBDYWNoZVR5cGU7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBjdXJyZW50UGFnZT86IG51bWJlcjtcbiAgcGFnZXNUb0NhY2hlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnIHtcbiAgcGFnaW5hdGlvbj86IEVudGl0aWVzUGFnaW5hdGlvbkNvbmZpZztcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { TraitEffect } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { asyncScheduler, of, pipe, timer } from 'rxjs';\nimport { concatMap, debounce, distinctUntilChanged, first, map, pairwise, startWith, } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport function createFilterTraitEffects(allActions, allSelectors, allConfigs) {\n const traitConfig = allConfigs.filter;\n class FilterEffect extends TraitEffect {\n constructor() {\n super(...arguments);\n this.storeFilter$ = createEffect(() => ({ debounce: debounceTime = traitConfig.defaultDebounceTime, scheduler = asyncScheduler, } = {}) => this.actions$.pipe(ofType(allActions.filterEntities), debounce((value) => value?.forceLoad ? of({}) : timer(debounceTime, scheduler)), concatMap((payload) => payload.patch\n ? this.store.select(allSelectors.selectEntitiesFilter).pipe(first(), map((storedFilters) => ({\n ...payload,\n filters: { ...storedFilters, ...payload?.filters },\n })))\n : of(payload)), distinctUntilChanged((previous, current) => !current?.forceLoad &&\n JSON.stringify(previous?.filters) ===\n JSON.stringify(current?.filters)), traitConfig?.isRemoteFilter\n ? pipe(startWith({\n filters: traitConfig.defaultFilter,\n patch: false,\n }), pairwise(), concatMap(([previous, current]) => traitConfig?.isRemoteFilter(previous?.filters, current?.filters)\n ? [\n allActions.storeEntitiesFilter({\n filters: current?.filters,\n patch: current?.patch,\n }),\n allActions.loadEntities(),\n ]\n : [\n allActions.storeEntitiesFilter({\n filters: current?.filters,\n patch: current?.patch,\n }),\n ]))\n : map((action) => allActions.storeEntitiesFilter({\n filters: action?.filters,\n patch: action?.patch,\n }))));\n this.loadEntities$ = (!traitConfig?.filterFn || traitConfig?.isRemoteFilter) &&\n createEffect(() => {\n return this.actions$.pipe(ofType(allActions['storeEntitiesFilter']), concatMap(() => allActions?.loadEntitiesFirstPage\n ? [\n allActions.clearEntitiesPagesCache(),\n allActions.loadEntitiesFirstPage(),\n ]\n : [allActions.loadEntities()]));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: FilterEffect, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: FilterEffect }); }\n }\n i0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: FilterEffect, decorators: [{\n type: Injectable\n }] });\n return [FilterEffect];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0LmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZmlsdGVyLWVudGl0aWVzL2ZpbHRlci1lbnRpdGllcy50cmFpdC5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7O0FBYXhCLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsVUFFMkIsRUFDM0IsWUFDK0IsRUFDL0IsVUFBZ0Q7SUFFaEQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxNQUNNLFlBQWEsU0FBUSxXQUFXO1FBRHRDOztZQUVFLGlCQUFZLEdBQUcsWUFBWSxDQUN6QixHQUFHLEVBQUUsQ0FDSCxDQUFDLEVBQ0MsUUFBUSxFQUFFLFlBQVksR0FBRyxXQUFZLENBQUMsbUJBQW1CLEVBQ3pELFNBQVMsR0FBRyxjQUFjLE1BQ3hCLEVBQUUsRUFBRSxFQUFFLENBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQ2pDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEtBQUssRUFBRSxT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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhaXRFZmZlY3QsIFR5cGUgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIsIEVNUFRZLCBvZiwgcGlwZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNvbmNhdE1hcCxcbiAgZGVib3VuY2UsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaXJzdCxcbiAgbWFwLFxuICBwYWlyd2lzZSxcbiAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMgfSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc1NlbGVjdG9ycyxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWcsXG4gIEZpbHRlckVudGl0aWVzU2VsZWN0b3JzLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyDGn0ZpbHRlckVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vZmlsdGVyLWVudGl0aWVzLm1vZGVsLmludGVybmFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlclRyYWl0RWZmZWN0czxFbnRpdHksIEY+KFxuICBhbGxBY3Rpb25zOiDGn0ZpbHRlckVudGl0aWVzQWN0aW9uczxGPiAmXG4gICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBhbGxTZWxlY3RvcnM6IEZpbHRlckVudGl0aWVzU2VsZWN0b3JzPEVudGl0eSwgRj4gJlxuICAgIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+LFxuICBhbGxDb25maWdzOiBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgRj4sXG4pOiBUeXBlPFRyYWl0RWZmZWN0PltdIHtcbiAgY29uc3QgdHJhaXRDb25maWcgPSBhbGxDb25maWdzLmZpbHRlcjtcbiAgQEluamVjdGFibGUoKVxuICBjbGFzcyBGaWx0ZXJFZmZlY3QgZXh0ZW5kcyBUcmFpdEVmZmVjdCB7XG4gICAgc3RvcmVGaWx0ZXIkID0gY3JlYXRlRWZmZWN0KFxuICAgICAgKCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBkZWJvdW5jZTogZGVib3VuY2VUaW1lID0gdHJhaXRDb25maWchLmRlZmF1bHREZWJvdW5jZVRpbWUsXG4gICAgICAgICAgc2NoZWR1bGVyID0gYXN5bmNTY2hlZHVsZXIsXG4gICAgICAgIH0gPSB7fSkgPT5cbiAgICAgICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgICBvZlR5cGUoYWxsQWN0aW9ucy5maWx0ZXJFbnRpdGllcyksXG4gICAgICAgICAgICBkZWJvdW5jZSgodmFsdWUpID0+XG4gICAgICAgICAgICAgIHZhbHVlPy5mb3JjZUxvYWQgPyBvZih7fSkgOiB0aW1lcihkZWJvdW5jZVRpbWUsIHNjaGVkdWxlciksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29uY2F0TWFwKChwYXlsb2FkKSA9PlxuICAgICAgICAgICAgICBwYXlsb2FkLnBhdGNoXG4gICAgICAgICAgICAgICAgPyB0aGlzLnN0b3JlLnNlbGVjdChhbGxTZWxlY3RvcnMuc2VsZWN0RW50aXRpZXNGaWx0ZXIpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoc3RvcmVkRmlsdGVycykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IHsgLi4uc3RvcmVkRmlsdGVycywgLi4ucGF5bG9hZD8uZmlsdGVycyB9LFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBvZihwYXlsb2FkKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICFjdXJyZW50Py5mb3JjZUxvYWQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShwcmV2aW91cz8uZmlsdGVycykgPT09XG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjdXJyZW50Py5maWx0ZXJzKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFpdENvbmZpZz8uaXNSZW1vdGVGaWx0ZXJcbiAgICAgICAgICAgICAgPyBwaXBlKFxuICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogdHJhaXRDb25maWcuZGVmYXVsdEZpbHRlciBhcyBGLFxuICAgICAgICAgICAgICAgICAgICBwYXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICAgICAgICBjb25jYXRNYXAoKFtwcmV2aW91cywgY3VycmVudF0pID0+XG4gICAgICAgICAgICAgICAgICAgIHRyYWl0Q29uZmlnPy5pc1JlbW90ZUZpbHRlciEoXG4gICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM/LmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudD8uZmlsdGVycyxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxBY3Rpb25zLnN0b3JlRW50aXRpZXNGaWx0ZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IGN1cnJlbnQ/LmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2g6IGN1cnJlbnQ/LnBhdGNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsQWN0aW9ucy5sb2FkRW50aXRpZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsQWN0aW9ucy5zdG9yZUVudGl0aWVzRmlsdGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBjdXJyZW50Py5maWx0ZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoOiBjdXJyZW50Py5wYXRjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogbWFwKChhY3Rpb24pID0+XG4gICAgICAgICAgICAgICAgICBhbGxBY3Rpb25zLnN0b3JlRW50aXRpZXNGaWx0ZXIoe1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBhY3Rpb24/LmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoOiBhY3Rpb24/LnBhdGNoLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICk7XG5cbiAgICBsb2FkRW50aXRpZXMkID1cbiAgICAgICghdHJhaXRDb25maWc/LmZpbHRlckZuIHx8IHRyYWl0Q29uZmlnPy5pc1JlbW90ZUZpbHRlcikgJiZcbiAgICAgIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgb2ZUeXBlKGFsbEFjdGlvbnNbJ3N0b3JlRW50aXRpZXNGaWx0ZXInXSksXG4gICAgICAgICAgY29uY2F0TWFwKCgpID0+XG4gICAgICAgICAgICBhbGxBY3Rpb25zPy5sb2FkRW50aXRpZXNGaXJzdFBhZ2VcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBhbGxBY3Rpb25zLmNsZWFyRW50aXRpZXNQYWdlc0NhY2hlKCksXG4gICAgICAgICAgICAgICAgICBhbGxBY3Rpb25zLmxvYWRFbnRpdGllc0ZpcnN0UGFnZSgpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbYWxsQWN0aW9ucy5sb2FkRW50aXRpZXMoKV0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFtGaWx0ZXJFZmZlY3RdO1xufVxuIl19","import { createReducer, on } from '@ngrx/store';\nexport function createFilterInitialState(previousInitialState, allConfigs) {\n return {\n ...previousInitialState,\n filters: allConfigs?.filter?.defaultFilter,\n };\n}\nexport function createFilterTraitReducer(initialState, allActions, allMutators) {\n return createReducer(initialState, on(allActions.storeEntitiesFilter, (state, { filters }) => allMutators.setEntitiesFilters(filters, state)));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0LnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2ZpbHRlci1lbnRpdGllcy9maWx0ZXItZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVloRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLG9CQUF5QixFQUN6QixVQUFnRDtJQUVoRCxPQUFPO1FBQ0wsR0FBRyxvQkFBb0I7UUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYTtLQUMzQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FLdEMsWUFBZSxFQUNmLFVBQThELEVBQzlELFdBQXlDO0lBRXpDLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FDeEQsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FDL0MsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxuICBGaWx0ZXJFbnRpdGllc011dGF0b3JzLFxuICBGaWx0ZXJFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyDGn0ZpbHRlckVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vZmlsdGVyLWVudGl0aWVzLm1vZGVsLmludGVybmFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlckluaXRpYWxTdGF0ZTxFbnRpdHksIEY+KFxuICBwcmV2aW91c0luaXRpYWxTdGF0ZTogYW55LFxuICBhbGxDb25maWdzOiBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgRj5cbik6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBGaWx0ZXJFbnRpdGllc1N0YXRlPEY+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICBmaWx0ZXJzOiBhbGxDb25maWdzPy5maWx0ZXI/LmRlZmF1bHRGaWx0ZXIsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWx0ZXJUcmFpdFJlZHVjZXI8XG4gIFQsXG4gIEYsXG4gIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIEZpbHRlckVudGl0aWVzU3RhdGU8Rj5cbj4oXG4gIGluaXRpYWxTdGF0ZTogUyxcbiAgYWxsQWN0aW9uczogxp9GaWx0ZXJFbnRpdGllc0FjdGlvbnM8Rj4gJiBMb2FkRW50aXRpZXNBY3Rpb25zPFQ+LFxuICBhbGxNdXRhdG9yczogRmlsdGVyRW50aXRpZXNNdXRhdG9yczxULCBGPlxuKSB7XG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLnN0b3JlRW50aXRpZXNGaWx0ZXIsIChzdGF0ZSwgeyBmaWx0ZXJzIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy5zZXRFbnRpdGllc0ZpbHRlcnMoZmlsdGVycywgc3RhdGUpXG4gICAgKVxuICApO1xufVxuIl19","export const filterEntitiesTraitKey = 'filter';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVEQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIEFjdGlvbkNyZWF0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJFbnRpdGllc1N0YXRlPEY+IHtcbiAgZmlsdGVycz86IEY7XG59XG5cbnR5cGUgRmlsdGVyUGF0Y2hDb25kaXRpb25hbFR5cGU8RiwgUD4gPSBQIGV4dGVuZHMgdHJ1ZSA/IFBhcnRpYWw8Rj4gOiBGO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckFjdGlvbk92ZXJsb2FkPEY+IHtcbiAgPFAgZXh0ZW5kcyBib29sZWFuPihwcm9wcz86IHtcbiAgICBmaWx0ZXJzOiBGaWx0ZXJQYXRjaENvbmRpdGlvbmFsVHlwZTxGLCBQPjtcbiAgICBmb3JjZUxvYWQ/OiBib29sZWFuO1xuICAgIHBhdGNoOiBQO1xuICB9KToge1xuICAgIGZpbHRlcnM6IEZpbHRlclBhdGNoQ29uZGl0aW9uYWxUeXBlPEYsIFA+O1xuICAgIGZvcmNlTG9hZDogYm9vbGVhbjtcbiAgICBwYXRjaDogUDtcbiAgfSAmIEFjdGlvbjxzdHJpbmc+O1xuICAocHJvcHM/OiB7IGZpbHRlcnM6IEY7IGZvcmNlTG9hZD86IGJvb2xlYW4gfSk6IHtcbiAgICBmaWx0ZXJzOiBGO1xuICAgIGZvcmNlTG9hZDogYm9vbGVhbjtcbiAgICBwYXRjaDogYm9vbGVhbjtcbiAgfSAmIEFjdGlvbjxzdHJpbmc+O1xufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8Rj4gPSB7XG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgZmlsdGVycyBwYXJhbSAocmVhZCB1c2luZyBzZWxlY3RGaWx0ZXIpIGFuZCBmaXJlcyB0aGUgbG9hZEVudGl0aWVzIGFjdGlvblxuICAgKiBpZiB0aGUgZmlsdGVycyBwYXJhbSBoYXMgY2hhbmdlZCwgdGhpcyBjYWxsIGlzIGFsc28gZGVib3VuY2UgYnkgZGVmYXVsdCwgdG8gZGlzYWJsZSB0aGlzXG4gICAqIGJlaGF2aW9yIHlvdSBjYW4gdXNlIHRoZSBmb3JjZUxvYWQgcGFyYW0gYXMgdHJ1ZSBvciBkZWZhdWx0RGVib3VuY2VUaW1lIHRvIDAgaW4gdGhlIHRyYWl0IGNvbmZpZ1xuICAgKiB0byBkaXNhYmxlIHBlcm1hbmVudGx5LlxuICAgKiBJZiB0aGUgYHBhdGNoYCBwYXJhbSBpcyBzZXQgdG8gdHJ1ZSAoZGVmYXVsdCBpcyBmYWxzZSksIHRoZSBmaWx0ZXJzIGFyZSBtZXJnZWQgd2l0aCB0aGUgcHJldmlvdXMgdmFsdWUgaW4gdGhlIHN0b3JlLFxuICAgKiBvdGhlcndpc2UgdGhleSBhcmUgcmVwbGFjZWQuXG4gICAqL1xuICBmaWx0ZXJFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIEZpbHRlckFjdGlvbk92ZXJsb2FkPEY+Pjtcbn07XG5leHBvcnQgdHlwZSBGaWx0ZXJFbnRpdGllc1NlbGVjdG9yczxULCBGPiA9IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0b3JlZCBmaWx0ZXJzIHNldCBieSB0aGUgZmlsdGVyIGFjdGlvblxuICAgKiBAcGFyYW0gc3RhdGVcbiAgICovXG4gIHNlbGVjdEVudGl0aWVzRmlsdGVyOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRmlsdGVyRW50aXRpZXNTdGF0ZTxGPixcbiAgKSA9PiBGIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRW50aXRpZXNNdXRhdG9yczxULCBGPiA9IHtcbiAgc2V0RW50aXRpZXNGaWx0ZXJzPFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIEZpbHRlckVudGl0aWVzU3RhdGU8Rj4+KFxuICAgIGZpbHRlcjogRiB8IHVuZGVmaW5lZCxcbiAgICBzdGF0ZTogUyxcbiAgKTogUztcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJFbnRpdGllc1RyYWl0S2V5ID0gJ2ZpbHRlcic7XG5cbmV4cG9ydCB0eXBlIEZpbHRlckVudGl0aWVzQ29uZmlnPFQsIEY+ID0ge1xuICBkZWZhdWx0RmlsdGVyPzogRjtcbiAgZmlsdGVyRm4/OiAoZmlsdGVyOiBGLCBlbnRpdHk6IFQpID0+IGJvb2xlYW47XG4gIGRlZmF1bHREZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGlzUmVtb3RlRmlsdGVyPzogKHByZXZpb3VzOiBGIHwgdW5kZWZpbmVkLCBjdXJyZW50OiBGIHwgdW5kZWZpbmVkKSA9PiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRW50aXRpZXNLZXllZENvbmZpZzxULCBGPiA9IHtcbiAgZmlsdGVyPzogRmlsdGVyRW50aXRpZXNDb25maWc8VCwgRj47XG59O1xuIl19","export function createFilterTraitMutators() {\n function setEntitiesFilters(filters, state) {\n return {\n ...state,\n filters,\n };\n }\n return { setEntitiesFilters };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sVUFBVSx5QkFBeUI7SUFJdkMsU0FBUyxrQkFBa0IsQ0FFekIsT0FBVSxFQUFFLEtBQVE7UUFDcEIsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWx0ZXJFbnRpdGllc011dGF0b3JzLFxuICBGaWx0ZXJFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsdGVyVHJhaXRNdXRhdG9yczxFbnRpdHksIEY+KCk6IEZpbHRlckVudGl0aWVzTXV0YXRvcnM8XG4gIEVudGl0eSxcbiAgRlxuPiB7XG4gIGZ1bmN0aW9uIHNldEVudGl0aWVzRmlsdGVyczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIEZpbHRlckVudGl0aWVzU3RhdGU8Rj5cbiAgPihmaWx0ZXJzOiBGLCBzdGF0ZTogUykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbHRlcnMsXG4gICAgfTtcbiAgfVxuICByZXR1cm4geyBzZXRFbnRpdGllc0ZpbHRlcnMgfTtcbn1cbiJdfQ==","import { createAction } from '@ngrx/store';\nexport function createFilterTraitActions(actionsGroupKey, entitiesName) {\n const actions = {\n filterEntities: createAction(`${actionsGroupKey} Filter ${entitiesName}`, (props) => ({\n filters: props?.filters,\n forceLoad: props?.forceLoad,\n patch: props?.patch,\n })),\n storeEntitiesFilter: createAction(`${actionsGroupKey} Store ${entitiesName} Filter`, (props) => ({\n filters: props?.filters,\n patch: props?.patch,\n })),\n };\n return actions;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0LmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2ZpbHRlci1lbnRpdGllcy9maWx0ZXItZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUzNDLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsZUFBdUIsRUFDdkIsWUFBb0I7SUFFcEIsTUFBTSxPQUFPLEdBQThCO1FBQ3pDLGNBQWMsRUFBRSxZQUFZLENBQzFCLEdBQUcsZUFBZSxXQUFXLFlBQVksRUFBRSxFQUMzQyxDQUFDLEtBSUEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVM7WUFDM0IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FDK0M7UUFDbkQsbUJBQW1CLEVBQUUsWUFBWSxDQUMvQixHQUFHLGVBQWUsVUFBVSxZQUFZLFNBQVMsRUFDakQsQ0FBQyxLQUF1QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUNIO0tBQ0YsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQge1xuICBGaWx0ZXJBY3Rpb25PdmVybG9hZCxcbiAgRmlsdGVyRW50aXRpZXNBY3Rpb25zLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyDGn0ZpbHRlckVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vZmlsdGVyLWVudGl0aWVzLm1vZGVsLmludGVybmFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlclRyYWl0QWN0aW9uczxGPihcbiAgYWN0aW9uc0dyb3VwS2V5OiBzdHJpbmcsXG4gIGVudGl0aWVzTmFtZTogc3RyaW5nLFxuKTogRmlsdGVyRW50aXRpZXNBY3Rpb25zPEY+IHtcbiAgY29uc3QgYWN0aW9uczogxp9GaWx0ZXJFbnRpdGllc0FjdGlvbnM8Rj4gPSB7XG4gICAgZmlsdGVyRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gRmlsdGVyICR7ZW50aXRpZXNOYW1lfWAsXG4gICAgICAocHJvcHM/OiB7XG4gICAgICAgIGZpbHRlcnM6IEYgfCBQYXJ0aWFsPEY+O1xuICAgICAgICBmb3JjZUxvYWQ/OiBib29sZWFuO1xuICAgICAgICBwYXRjaD86IGJvb2xlYW47XG4gICAgICB9KSA9PiAoe1xuICAgICAgICBmaWx0ZXJzOiBwcm9wcz8uZmlsdGVycyxcbiAgICAgICAgZm9yY2VMb2FkOiBwcm9wcz8uZm9yY2VMb2FkLFxuICAgICAgICBwYXRjaDogcHJvcHM/LnBhdGNoLFxuICAgICAgfSksXG4gICAgKSBhcyBBY3Rpb25DcmVhdG9yPHN0cmluZywgRmlsdGVyQWN0aW9uT3ZlcmxvYWQ8Rj4+LFxuICAgIHN0b3JlRW50aXRpZXNGaWx0ZXI6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gU3RvcmUgJHtlbnRpdGllc05hbWV9IEZpbHRlcmAsXG4gICAgICAocHJvcHM6IHsgZmlsdGVycz86IEY7IHBhdGNoPzogYm9vbGVhbiB9KSA9PiAoe1xuICAgICAgICBmaWx0ZXJzOiBwcm9wcz8uZmlsdGVycyxcbiAgICAgICAgcGF0Y2g6IHByb3BzPy5wYXRjaCxcbiAgICAgIH0pLFxuICAgICksXG4gIH07XG4gIHJldHVybiBhY3Rpb25zO1xufVxuIl19","import { entitiesPaginationTraitKey, } from '../entities-pagination/entities-pagination.model';\nimport { createFilterTraitEffects } from './filter-entities.trait.effect';\nimport { createFilterInitialState, createFilterTraitReducer, } from './filter-entities.trait.reducer';\nimport { filterEntitiesTraitKey, } from './filter-entities.model';\nimport { createFilterTraitSelectors } from './filter-entities.trait.selectors';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\nimport { createFilterTraitMutators } from './filter-entities.trait.mutators';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createFilterTraitActions } from './filter-entities.trait.actions';\n/**\n * Generates the ngrx code needed to filter a list of entities locally or remotely, adds a filter\n * action and a selectFilter selector, the filter action is debounced and the filter will only\n * call the loadEntities action if the params have changed, so there is no need to implement that in\n * the components. The filter action has a `forceLoad` param which can\n * be use to skip that restriction for one call or setting the `defaultDebounceTime` to 0 for all calls.\n * Calling the filter action will also replace the `filters` param in the store, if the `patch` param is set\n * the filters are merged with the previous value in the store.\n * @param traitConfig - Config object fot the trait factory\n * @param traitConfig.defaultFilter - Initial value for the filter\n * @param traitConfig.filterFn - Function to filter entities in memory, if not present then its expected\n * is filtered by the backend unless isRemoteFilter is defned\n * @param traitConfig.defaultDebounceTime - Value in milliseconds. Default to 400ms\n * @param traitConfig.isRemoteFilter - Function to when it returns true it fires loadEntities so a remote\n * backend filtering can run, otherwise it uses filterFn to do a local filtering\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends LoadEntitiesState<Todo>, FilterEntitiesState<TodoFilter>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * //addFilterEntitiesTrait<Todo,TodoFilter>() // no params uses remote filtering\n * addFilterEntitiesTrait<Todo,TodoFilter>({filterFn: (filter, entity) => // local filtering\n * !filter.content || !!entity.content?.includes(filter.content.toLowerCase())\n * // or use the following function to switch between remote search and local\n * // depending on which properties have changed in the filter\n * // isRemoteFilter: (previous, current) => previous?.someRemoteParam !== current?.someRemoteParam,\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // filters?: TodoFilter;\n *\n * // generated actions\n * traits.actions.filterTodos()\n * // generated selectors\n * traits.selectors.selectTodosFilter()\n */\nexport function addFilterEntitiesTrait({ defaultDebounceTime = 400, defaultFilter, filterFn, isRemoteFilter, } = {}) {\n return createTraitFactory({\n key: filterEntitiesTraitKey,\n depends: [entitiesPaginationTraitKey, loadEntitiesTraitKey],\n config: {\n defaultDebounceTime,\n defaultFilter,\n filterFn,\n isRemoteFilter,\n },\n actions: ({ actionsGroupKey, entitiesName }) => createFilterTraitActions(actionsGroupKey, entitiesName),\n selectors: () => createFilterTraitSelectors(),\n mutators: () => createFilterTraitMutators(),\n initialState: ({ previousInitialState, allConfigs, }) => createFilterInitialState(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators }) => createFilterTraitReducer(initialState, allActions, allMutators),\n effects: ({ allActions, allSelectors, allConfigs }) => createFilterTraitEffects(allActions, allSelectors, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWVudGl0aWVzLnRyYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCwwQkFBMEIsR0FDM0IsTUFBTSxrREFBa0QsQ0FBQztBQUMxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFJTCxzQkFBc0IsR0FDdkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFPM0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBWSxFQUNoRCxtQkFBbUIsR0FBRyxHQUFHLEVBQ3pCLGFBQWEsRUFDYixRQUFRLEVBQ1IsY0FBYyxNQUNxQixFQUFFO0lBQ3JDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxvQkFBb0IsQ0FBQztRQUMzRCxNQUFNLEVBQUU7WUFDTixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFFBQVE7WUFDUixjQUFjO1NBQ29CO1FBQ3BDLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBNkIsRUFBRSxFQUFFLENBQ3hFLHdCQUF3QixDQUFJLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDNUQsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixFQUFhO1FBQ3hELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsRUFBYTtRQUN0RCxZQUFZLEVBQUUsQ0FBQyxFQUNiLG9CQUFvQixFQUNwQixVQUFVLEdBQ3FCLEVBQUUsRUFBRSxDQUNuQyx3QkFBd0IsQ0FDdEIsb0JBQW9CLEVBQ3BCLFVBQWtELENBQ25EO1FBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FDckQsd0JBQXdCLENBQ3RCLFlBQVksRUFDWixVQUFxRSxFQUNyRSxXQUFXLENBQ1o7UUFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUNwRCx3QkFBd0IsQ0FDdEIsVUFFMkIsRUFDM0IsWUFDK0IsRUFDL0IsVUFBVSxDQUNYO0tBQ0osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMsXG4gIGVudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5LFxufSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVyVHJhaXRFZmZlY3RzIH0gZnJvbSAnLi9maWx0ZXItZW50aXRpZXMudHJhaXQuZWZmZWN0JztcbmltcG9ydCB7XG4gIGNyZWF0ZUZpbHRlckluaXRpYWxTdGF0ZSxcbiAgY3JlYXRlRmlsdGVyVHJhaXRSZWR1Y2VyLFxufSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy50cmFpdC5yZWR1Y2VyJztcbmltcG9ydCB7XG4gIEZpbHRlckVudGl0aWVzQ29uZmlnLFxuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxuICBGaWx0ZXJFbnRpdGllc1NlbGVjdG9ycyxcbiAgZmlsdGVyRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi9maWx0ZXItZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVyVHJhaXRTZWxlY3RvcnMgfSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBsb2FkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlclRyYWl0TXV0YXRvcnMgfSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy50cmFpdC5tdXRhdG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnkgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVGaWx0ZXJUcmFpdEFjdGlvbnMgfSBmcm9tICcuL2ZpbHRlci1lbnRpdGllcy50cmFpdC5hY3Rpb25zJztcbmltcG9ydCB7IMafRmlsdGVyRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi9maWx0ZXItZW50aXRpZXMubW9kZWwuaW50ZXJuYWwnO1xuaW1wb3J0IHtcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBuZ3J4IGNvZGUgbmVlZGVkIHRvIGZpbHRlciBhIGxpc3Qgb2YgZW50aXRpZXMgbG9jYWxseSBvciByZW1vdGVseSwgYWRkcyBhIGZpbHRlclxuICogYWN0aW9uIGFuZCBhIHNlbGVjdEZpbHRlciBzZWxlY3RvciwgdGhlIGZpbHRlciBhY3Rpb24gaXMgZGVib3VuY2VkIGFuZCB0aGUgZmlsdGVyIHdpbGwgb25seVxuICogY2FsbCB0aGUgbG9hZEVudGl0aWVzIGFjdGlvbiBpZiB0aGUgcGFyYW1zIGhhdmUgY2hhbmdlZCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBpbXBsZW1lbnQgdGhhdCBpblxuICogdGhlIGNvbXBvbmVudHMuIFRoZSBmaWx0ZXIgYWN0aW9uIGhhcyBhIGBmb3JjZUxvYWRgIHBhcmFtIHdoaWNoIGNhblxuICogYmUgdXNlIHRvIHNraXAgdGhhdCByZXN0cmljdGlvbiBmb3Igb25lIGNhbGwgb3Igc2V0dGluZyB0aGUgYGRlZmF1bHREZWJvdW5jZVRpbWVgIHRvIDAgZm9yIGFsbCBjYWxscy5cbiAqIENhbGxpbmcgdGhlIGZpbHRlciBhY3Rpb24gd2lsbCBhbHNvIHJlcGxhY2UgdGhlIGBmaWx0ZXJzYCBwYXJhbSBpbiB0aGUgc3RvcmUsIGlmIHRoZSBgcGF0Y2hgIHBhcmFtIGlzIHNldFxuICogdGhlIGZpbHRlcnMgYXJlIG1lcmdlZCB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZSBpbiB0aGUgc3RvcmUuXG4gKiBAcGFyYW0gdHJhaXRDb25maWcgLSBDb25maWcgb2JqZWN0IGZvdCB0aGUgdHJhaXQgZmFjdG9yeVxuICogQHBhcmFtIHRyYWl0Q29uZmlnLmRlZmF1bHRGaWx0ZXIgLSBJbml0aWFsIHZhbHVlIGZvciB0aGUgZmlsdGVyXG4gKiBAcGFyYW0gdHJhaXRDb25maWcuZmlsdGVyRm4gLSBGdW5jdGlvbiB0byBmaWx0ZXIgZW50aXRpZXMgaW4gbWVtb3J5LCBpZiBub3QgcHJlc2VudCB0aGVuIGl0cyBleHBlY3RlZFxuICogaXMgZmlsdGVyZWQgYnkgdGhlIGJhY2tlbmQgdW5sZXNzIGlzUmVtb3RlRmlsdGVyIGlzIGRlZm5lZFxuICogQHBhcmFtIHRyYWl0Q29uZmlnLmRlZmF1bHREZWJvdW5jZVRpbWUgLSBWYWx1ZSBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQgdG8gNDAwbXNcbiAqIEBwYXJhbSB0cmFpdENvbmZpZy5pc1JlbW90ZUZpbHRlciAtIEZ1bmN0aW9uIHRvIHdoZW4gaXQgcmV0dXJucyB0cnVlIGl0IGZpcmVzIGxvYWRFbnRpdGllcyBzbyBhIHJlbW90ZVxuICogYmFja2VuZCBmaWx0ZXJpbmcgY2FuIHJ1biwgb3RoZXJ3aXNlIGl0IHVzZXMgZmlsdGVyRm4gdG8gZG8gYSBsb2NhbCBmaWx0ZXJpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGZvbGxvd2luZyB0cmFpdCBjb25maWdcbiAqXG4gKiBleHBvcnQgaW50ZXJmYWNlIFRlc3RTdGF0ZVxuICogZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxUb2RvPiwgRmlsdGVyRW50aXRpZXNTdGF0ZTxUb2RvRmlsdGVyPnt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIHtlbnRpdHlOYW1lOiAnVG9kbyd9LFxuICogICAgICBhZGRMb2FkRW50aXRpZXNUcmFpdDxUb2RvPigpLFxuICogICAgICAvL2FkZEZpbHRlckVudGl0aWVzVHJhaXQ8VG9kbyxUb2RvRmlsdGVyPigpIC8vIG5vIHBhcmFtcyB1c2VzIHJlbW90ZSBmaWx0ZXJpbmdcbiAqICAgICAgYWRkRmlsdGVyRW50aXRpZXNUcmFpdDxUb2RvLFRvZG9GaWx0ZXI+KHtmaWx0ZXJGbjogKGZpbHRlciwgZW50aXR5KSA9PiAvLyBsb2NhbCBmaWx0ZXJpbmdcbiAqICAgICAgICAgICFmaWx0ZXIuY29udGVudCB8fCAhIWVudGl0eS5jb250ZW50Py5pbmNsdWRlcyhmaWx0ZXIuY29udGVudC50b0xvd2VyQ2FzZSgpKVxuICogICAgICAgICAgLy8gb3IgdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gdG8gc3dpdGNoIGJldHdlZW4gcmVtb3RlIHNlYXJjaCBhbmQgbG9jYWxcbiAqICAgICAgICAgIC8vIGRlcGVuZGluZyBvbiB3aGljaCBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZCBpbiB0aGUgZmlsdGVyXG4gKiAgICAgICAgICAvLyBpc1JlbW90ZUZpbHRlcjogKHByZXZpb3VzLCBjdXJyZW50KSA9PiBwcmV2aW91cz8uc29tZVJlbW90ZVBhcmFtICE9PSBjdXJyZW50Py5zb21lUmVtb3RlUGFyYW0sXG4gKiAgICApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnW1RvZG9zXScsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFRlc3RTdGF0ZT4+KFxuICogICAgICAgICd0b2RvcycsXG4gKiAgICAgICksXG4gKiAgICB9KTtcbiAqXG4gKiAvLyAgIGFkZHMgZm9sbG93aW5nIHByb3BzIHRvIHRoZSBzdGF0ZTpcbiAqIC8vICAgIGZpbHRlcnM/OiBUb2RvRmlsdGVyO1xuICpcbiAqIC8vIGdlbmVyYXRlZCBhY3Rpb25zXG4gKiB0cmFpdHMuYWN0aW9ucy5maWx0ZXJUb2RvcygpXG4gKiAvLyBnZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9zRmlsdGVyKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpbHRlckVudGl0aWVzVHJhaXQ8RW50aXR5LCBGPih7XG4gIGRlZmF1bHREZWJvdW5jZVRpbWUgPSA0MDAsXG4gIGRlZmF1bHRGaWx0ZXIsXG4gIGZpbHRlckZuLFxuICBpc1JlbW90ZUZpbHRlcixcbn06IEZpbHRlckVudGl0aWVzQ29uZmlnPEVudGl0eSwgRj4gPSB7fSkge1xuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6IGZpbHRlckVudGl0aWVzVHJhaXRLZXksXG4gICAgZGVwZW5kczogW2VudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5LCBsb2FkRW50aXRpZXNUcmFpdEtleV0sXG4gICAgY29uZmlnOiB7XG4gICAgICBkZWZhdWx0RGVib3VuY2VUaW1lLFxuICAgICAgZGVmYXVsdEZpbHRlcixcbiAgICAgIGZpbHRlckZuLFxuICAgICAgaXNSZW1vdGVGaWx0ZXIsXG4gICAgfSBhcyBGaWx0ZXJFbnRpdGllc0NvbmZpZzxFbnRpdHksIEY+LFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lIH06IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVGaWx0ZXJUcmFpdEFjdGlvbnM8Rj4oYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUpLFxuICAgIHNlbGVjdG9yczogKCkgPT4gY3JlYXRlRmlsdGVyVHJhaXRTZWxlY3RvcnM8RW50aXR5LCBGPigpLFxuICAgIG11dGF0b3JzOiAoKSA9PiBjcmVhdGVGaWx0ZXJUcmFpdE11dGF0b3JzPEVudGl0eSwgRj4oKSxcbiAgICBpbml0aWFsU3RhdGU6ICh7XG4gICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICAgIGFsbENvbmZpZ3MsXG4gICAgfTogVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlRmlsdGVySW5pdGlhbFN0YXRlPEVudGl0eSwgRj4oXG4gICAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxDb25maWdzIGFzIEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5LCBGPlxuICAgICAgKSxcbiAgICByZWR1Y2VyOiAoeyBpbml0aWFsU3RhdGUsIGFsbEFjdGlvbnMsIGFsbE11dGF0b3JzIH0pID0+XG4gICAgICBjcmVhdGVGaWx0ZXJUcmFpdFJlZHVjZXIoXG4gICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgYWxsQWN0aW9ucyBhcyDGn0ZpbHRlckVudGl0aWVzQWN0aW9uczxGPiAmIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgICAgICAgYWxsTXV0YXRvcnNcbiAgICAgICksXG4gICAgZWZmZWN0czogKHsgYWxsQWN0aW9ucywgYWxsU2VsZWN0b3JzLCBhbGxDb25maWdzIH0pID0+XG4gICAgICBjcmVhdGVGaWx0ZXJUcmFpdEVmZmVjdHMoXG4gICAgICAgIGFsbEFjdGlvbnMgYXMgxp9GaWx0ZXJFbnRpdGllc0FjdGlvbnM8Rj4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgICAgICAgYWxsU2VsZWN0b3JzIGFzIEZpbHRlckVudGl0aWVzU2VsZWN0b3JzPEVudGl0eSwgRj4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+LFxuICAgICAgICBhbGxDb25maWdzXG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==","import { createSelector } from '@ngrx/store';\nexport function createPaginationTraitSelectors(previousSelectors, allConfigs) {\n const { selectEntitiesList, isEntitiesLoading } = previousSelectors;\n const filterFunction = allConfigs?.filter?.filterFn;\n function selectPagination(state) {\n return state.pagination;\n }\n const selectPaginationFiltered = filterFunction\n ? createSelector(selectEntitiesList, selectPagination, (entities, pagination) => {\n return {\n ...pagination,\n total: entities.length,\n cache: {\n ...pagination.cache,\n start: 0,\n end: entities.length,\n },\n };\n })\n : selectPagination;\n const selectEntitiesCurrentPageList = createSelector(selectEntitiesList, selectPaginationFiltered, (entities, pagination) => {\n const page = pagination.currentPage;\n const startIndex = page * pagination.pageSize - pagination.cache.start;\n let endIndex = startIndex + pagination.pageSize;\n endIndex =\n endIndex < pagination.cache.end ? endIndex : pagination.cache.end;\n return entities.slice(startIndex, endIndex);\n });\n const selectEntitiesCurrentPageInfo = createSelector(selectPaginationFiltered, (pagination) => {\n const pagesCount = pagination.total && pagination.total > 0\n ? Math.ceil(pagination.total / pagination.pageSize)\n : undefined;\n return {\n pageIndex: pagination.currentPage,\n total: pagination.total,\n pageSize: pagination.pageSize,\n pagesCount,\n hasPrevious: pagination.currentPage - 1 >= 0,\n hasNext: pagesCount && pagination.total && pagination.total > 0\n ? pagination.currentPage + 1 < pagesCount\n : true,\n cacheType: pagination.cache.type,\n };\n });\n function isEntitiesPageInCache(page, pagination) {\n const startIndex = page * pagination.pageSize;\n let endIndex = startIndex + pagination.pageSize - 1;\n endIndex =\n pagination.total && endIndex > pagination.total\n ? pagination.total - 1\n : endIndex;\n return (startIndex >= pagination.cache.start && endIndex <= pagination.cache.end);\n }\n const isEntitiesCurrentPageInCache = createSelector(selectPaginationFiltered, (pagination) => {\n const page = pagination.currentPage;\n return isEntitiesPageInCache(page, pagination);\n });\n const isEntitiesNextPageInCache = createSelector(selectPaginationFiltered, (pagination) => {\n const page = pagination.currentPage + 1;\n return isEntitiesPageInCache(page, pagination);\n });\n const isLoadingEntitiesCurrentPage = createSelector(isEntitiesLoading, selectPagination, (isLoading, pagination) => isLoading && pagination.requestPage === pagination.currentPage);\n const selectEntitiesCurrentPage = createSelector(selectEntitiesCurrentPageList, selectEntitiesCurrentPageInfo, isLoadingEntitiesCurrentPage, (entities, pageInfo, isLoading) => ({\n entities,\n isLoading,\n ...pageInfo,\n }));\n const selectEntitiesPagedRequest = createSelector(selectPagination, (pagination) => ({\n startIndex: pagination.pageSize * pagination.requestPage,\n size: pagination.pageSize * pagination.pagesToCache,\n page: pagination.requestPage,\n }));\n const selectors = {\n selectEntitiesCurrentPageList,\n isEntitiesNextPageInCache,\n isEntitiesCurrentPageInCache,\n selectEntitiesCurrentPage,\n selectEntitiesPagedRequest,\n selectEntitiesCurrentPageInfo,\n isLoadingEntitiesCurrentPage,\n };\n return selectors;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWE3QyxNQUFNLFVBQVUsOEJBQThCLENBQzVDLGlCQUFnRCxFQUNoRCxVQUFzRDtJQUV0RCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUVwRSxNQUFNLGNBQWMsR0FBRyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztJQUVwRCxTQUFTLGdCQUFnQixDQUN2QixLQUEwRDtRQUUxRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sd0JBQXdCLEdBRWUsY0FBYztRQUN6RCxDQUFDLENBQUMsY0FBYyxDQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdkIsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUN0QixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxVQUFVLENBQUMsS0FBSztvQkFDbkIsS0FBSyxFQUFFLENBQUM7b0JBQ1IsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNO2lCQUNyQjthQUNGLENBQUM7UUFDSixDQUFDLENBQ0Y7UUFDSCxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFFckIsTUFBTSw2QkFBNkIsR0FBRyxjQUFjLENBQ2xELGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsQ0FBQyxRQUFrQixFQUFFLFVBQVUsRUFBRSxF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UyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQ3hCLFNBQVMsSUFBSSxVQUFVLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQyxXQUFXLENBQ2pFLENBQUM7SUFFRixNQUFNLHlCQUF5QixHQUFHLGNBQWMsQ0FDOUMsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3Qiw0QkFBNEIsRUFDNUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQ2hDLENBQUM7UUFDQyxRQUFRO1FBQ1IsU0FBUztRQUNULEdBQUcsUUFBUTtLQUNVLENBQUEsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLEdBQUcsY0FBYyxDQUMvQyxnQkFBZ0IsRUFDaEIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDZixVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsV0FBVztRQUN4RCxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsWUFBWTtRQUNuRCxJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVc7S0FDN0IsQ0FBQyxDQUNILENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRztRQUNoQiw2QkFBNkI7UUFDN0IseUJBQXlCO1FBQ3pCLDRCQUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7S0FDN0IsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENhY2hlVHlwZSxcbiAgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzLFxuICBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbiAgUGFnZU1vZGVsLFxufSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWcgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25UcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICBwcmV2aW91c1NlbGVjdG9yczogTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5LCB1bmtub3duPlxuKTogRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzPEVudGl0eT4ge1xuICBjb25zdCB7IHNlbGVjdEVudGl0aWVzTGlzdCwgaXNFbnRpdGllc0xvYWRpbmcgfSA9IHByZXZpb3VzU2VsZWN0b3JzO1xuXG4gIGNvbnN0IGZpbHRlckZ1bmN0aW9uID0gYWxsQ29uZmlncz8uZmlsdGVyPy5maWx0ZXJGbjtcblxuICBmdW5jdGlvbiBzZWxlY3RQYWdpbmF0aW9uKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgKSB7XG4gICAgcmV0dXJuIHN0YXRlLnBhZ2luYXRpb247XG4gIH1cbiAgY29uc3Qgc2VsZWN0UGFnaW5hdGlvbkZpbHRlcmVkOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZVxuICApID0+IEVudGl0aWVzUGFnaW5hdGlvblN0YXRlWydwYWdpbmF0aW9uJ10gPSBmaWx0ZXJGdW5jdGlvblxuICAgID8gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAgIHNlbGVjdEVudGl0aWVzTGlzdCxcbiAgICAgICAgc2VsZWN0UGFnaW5hdGlvbixcbiAgICAgICAgKGVudGl0aWVzLCBwYWdpbmF0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnBhZ2luYXRpb24sXG4gICAgICAgICAgICB0b3RhbDogZW50aXRpZXMubGVuZ3RoLFxuICAgICAgICAgICAgY2FjaGU6IHtcbiAgICAgICAgICAgICAgLi4ucGFnaW5hdGlvbi5jYWNoZSxcbiAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgIGVuZDogZW50aXRpZXMubGVuZ3RoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApXG4gICAgOiBzZWxlY3RQYWdpbmF0aW9uO1xuXG4gIGNvbnN0IHNlbGVjdEVudGl0aWVzQ3VycmVudFBhZ2VMaXN0ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0RW50aXRpZXNMaXN0LFxuICAgIHNlbGVjdFBhZ2luYXRpb25GaWx0ZXJlZCxcbiAgICAoZW50aXRpZXM6IEVudGl0eVtdLCBwYWdpbmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gcGFnaW5hdGlvbi5jdXJyZW50UGFnZTtcbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBwYWdlICogcGFnaW5hdGlvbi5wYWdlU2l6ZSAtIHBhZ2luYXRpb24uY2FjaGUuc3RhcnQ7XG4gICAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgcGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGVuZEluZGV4ID1cbiAgICAgICAgZW5kSW5kZXggPCBwYWdpbmF0aW9uLmNhY2hlLmVuZCA/IGVuZEluZGV4IDogcGFnaW5hdGlvbi5jYWNoZS5lbmQ7XG4gICAgICByZXR1cm4gZW50aXRpZXMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgIH1cbiAgKTtcblxuICBjb25zdCBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlSW5mbyA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdFBhZ2luYXRpb25GaWx0ZXJlZCxcbiAgICAocGFnaW5hdGlvbikgPT4ge1xuICAgICAgY29uc3QgcGFnZXNDb3VudCA9XG4gICAgICAgIHBhZ2luYXRpb24udG90YWwgJiYgcGFnaW5hdGlvbi50b3RhbCA+IDBcbiAgICAgICAgICA/IE1hdGguY2VpbChwYWdpbmF0aW9uLnRvdGFsIC8gcGFnaW5hdGlvbi5wYWdlU2l6ZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VJbmRleDogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSxcbiAgICAgICAgdG90YWw6IHBhZ2luYXRpb24udG90YWwsXG4gICAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgICBwYWdlc0NvdW50LFxuICAgICAgICBoYXNQcmV2aW91czogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSAtIDEgPj0gMCxcbiAgICAgICAgaGFzTmV4dDpcbiAgICAgICAgICBwYWdlc0NvdW50ICYmIHBhZ2luYXRpb24udG90YWwgJiYgcGFnaW5hdGlvbi50b3RhbCA+IDBcbiAgICAgICAgICAgID8gcGFnaW5hdGlvbi5jdXJyZW50UGFnZSArIDEgPCBwYWdlc0NvdW50XG4gICAgICAgICAgICA6IHRydWUsXG4gICAgICAgIGNhY2hlVHlwZTogcGFnaW5hdGlvbi5jYWNoZS50eXBlLFxuICAgICAgfTtcbiAgICB9XG4gICk7XG5cbiAgZnVuY3Rpb24gaXNFbnRpdGllc1BhZ2VJbkNhY2hlKFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICAgICAgcmVxdWVzdFBhZ2U6IG51bWJlcjtcbiAgICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgICB0b3RhbD86IG51bWJlcjtcbiAgICAgIHBhZ2VzVG9DYWNoZTogbnVtYmVyO1xuICAgICAgY2FjaGU6IHsgdHlwZTogQ2FjaGVUeXBlOyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9O1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2UgKiBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBwYWdpbmF0aW9uLnBhZ2VTaXplIC0gMTtcbiAgICBlbmRJbmRleCA9XG4gICAgICBwYWdpbmF0aW9uLnRvdGFsICYmIGVuZEluZGV4ID4gcGFnaW5hdGlvbi50b3RhbFxuICAgICAgICA/IHBhZ2luYXRpb24udG90YWwgLSAxXG4gICAgICAgIDogZW5kSW5kZXg7XG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXJ0SW5kZXggPj0gcGFnaW5hdGlvbi5jYWNoZS5zdGFydCAmJiBlbmRJbmRleCA8PSBwYWdpbmF0aW9uLmNhY2hlLmVuZFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpc0VudGl0aWVzQ3VycmVudFBhZ2VJbkNhY2hlID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0UGFnaW5hdGlvbkZpbHRlcmVkLFxuICAgIChwYWdpbmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gcGFnaW5hdGlvbi5jdXJyZW50UGFnZTtcbiAgICAgIHJldHVybiBpc0VudGl0aWVzUGFnZUluQ2FjaGUocGFnZSwgcGFnaW5hdGlvbik7XG4gICAgfVxuICApO1xuICBjb25zdCBpc0VudGl0aWVzTmV4dFBhZ2VJbkNhY2hlID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0UGFnaW5hdGlvbkZpbHRlcmVkLFxuICAgIChwYWdpbmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gcGFnaW5hdGlvbi5jdXJyZW50UGFnZSArIDE7XG4gICAgICByZXR1cm4gaXNFbnRpdGllc1BhZ2VJbkNhY2hlKHBhZ2UsIHBhZ2luYXRpb24pO1xuICAgIH1cbiAgKTtcbiAgY29uc3QgaXNMb2FkaW5nRW50aXRpZXNDdXJyZW50UGFnZSA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIGlzRW50aXRpZXNMb2FkaW5nLFxuICAgIHNlbGVjdFBhZ2luYXRpb24sXG4gICAgKGlzTG9hZGluZywgcGFnaW5hdGlvbikgPT5cbiAgICAgIGlzTG9hZGluZyAmJiBwYWdpbmF0aW9uLnJlcXVlc3RQYWdlID09PSBwYWdpbmF0aW9uLmN1cnJlbnRQYWdlXG4gICk7XG5cbiAgY29uc3Qgc2VsZWN0RW50aXRpZXNDdXJyZW50UGFnZSA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEVudGl0aWVzQ3VycmVudFBhZ2VMaXN0LFxuICAgIHNlbGVjdEVudGl0aWVzQ3VycmVudFBhZ2VJbmZvLFxuICAgIGlzTG9hZGluZ0VudGl0aWVzQ3VycmVudFBhZ2UsXG4gICAgKGVudGl0aWVzLCBwYWdlSW5mbywgaXNMb2FkaW5nKSA9PlxuICAgICAgKHtcbiAgICAgICAgZW50aXRpZXMsXG4gICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgLi4ucGFnZUluZm8sXG4gICAgICB9IGFzIFBhZ2VNb2RlbDxFbnRpdHk+KVxuICApO1xuXG4gIGNvbnN0IHNlbGVjdEVudGl0aWVzUGFnZWRSZXF1ZXN0ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0UGFnaW5hdGlvbixcbiAgICAocGFnaW5hdGlvbikgPT4gKHtcbiAgICAgIHN0YXJ0SW5kZXg6IHBhZ2luYXRpb24ucGFnZVNpemUgKiBwYWdpbmF0aW9uLnJlcXVlc3RQYWdlLFxuICAgICAgc2l6ZTogcGFnaW5hdGlvbi5wYWdlU2l6ZSAqIHBhZ2luYXRpb24ucGFnZXNUb0NhY2hlLFxuICAgICAgcGFnZTogcGFnaW5hdGlvbi5yZXF1ZXN0UGFnZSxcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IHNlbGVjdG9ycyA9IHtcbiAgICBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlTGlzdCxcbiAgICBpc0VudGl0aWVzTmV4dFBhZ2VJbkNhY2hlLFxuICAgIGlzRW50aXRpZXNDdXJyZW50UGFnZUluQ2FjaGUsXG4gICAgc2VsZWN0RW50aXRpZXNDdXJyZW50UGFnZSxcbiAgICBzZWxlY3RFbnRpdGllc1BhZ2VkUmVxdWVzdCxcbiAgICBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlSW5mbyxcbiAgICBpc0xvYWRpbmdFbnRpdGllc0N1cnJlbnRQYWdlLFxuICB9O1xuICByZXR1cm4gc2VsZWN0b3JzO1xufVxuIl19","import { createAction, props } from '@ngrx/store';\nexport function createPaginationTraitActions(actionsGroupKey, entitiesName) {\n const actions = {\n loadEntitiesPage: createAction(`${actionsGroupKey} Load ${entitiesName} Page`, ({ index, forceLoad }) => ({\n index,\n forceLoad,\n })),\n loadEntitiesPageSuccess: createAction(`${actionsGroupKey} Load ${entitiesName}\n Page Success`),\n loadEntitiesPageFail: createAction(`${actionsGroupKey} Load ${entitiesName} Page Fail`),\n loadEntitiesPreviousPage: createAction(`${actionsGroupKey} Load Previous ${entitiesName} Page`),\n loadEntitiesNextPage: createAction(`${actionsGroupKey} Load Next ${entitiesName} Page`),\n loadEntitiesFirstPage: createAction(`${actionsGroupKey} Load First ${entitiesName} Page`, (forceLoad) => ({ forceLoad })),\n loadEntitiesLastPage: createAction(`${actionsGroupKey} Load Last ${entitiesName} Page`),\n clearEntitiesPagesCache: createAction(`${actionsGroupKey} Clear ${entitiesName} Cache`),\n setEntitiesRequestPage: createAction(`${actionsGroupKey} Set ${entitiesName} Request Page`, props()),\n };\n return actions;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24udHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLGVBQXVCLEVBQ3ZCLFlBQW9CO0lBRXBCLE1BQU0sT0FBTyxHQUF1QjtRQUNsQyxnQkFBZ0IsRUFBRSxZQUFZLENBQzVCLEdBQUcsZUFBZSxTQUFTLFlBQVksT0FBTyxFQUM5QyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBMEMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxLQUFLO1lBQ0wsU0FBUztTQUNWLENBQUMsQ0FDSDtRQUNELHVCQUF1QixFQUFFLFlBQVksQ0FDbkMsR0FBRyxlQUFlLFVBQVUsWUFBWTt1QkFDdkIsQ0FDbEI7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxTQUFTLFlBQVksWUFBWSxDQUNwRDtRQUNELHdCQUF3QixFQUFFLFlBQVksQ0FDcEMsR0FBRyxlQUFlLGtCQUFrQixZQUFZLE9BQU8sQ0FDeEQ7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxjQUFjLFlBQVksT0FBTyxDQUNwRDtRQUNELHFCQUFxQixFQUFFLFlBQVksQ0FDakMsR0FBRyxlQUFlLGVBQWUsWUFBWSxPQUFPLEVBQ3BELENBQUMsU0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQ3pDO1FBQ0Qsb0JBQW9CLEVBQUUsWUFBWSxDQUNoQyxHQUFHLGVBQWUsY0FBYyxZQUFZLE9BQU8sQ0FDcEQ7UUFDRCx1QkFBdUIsRUFBRSxZQUFZLENBQ25DLEdBQUcsZUFBZSxVQUFVLFlBQVksUUFBUSxDQUNqRDtRQUNELHNCQUFzQixFQUFFLFlBQVksQ0FDbEMsR0FBRyxlQUFlLFFBQVEsWUFBWSxlQUFlLEVBQ3JELEtBQUssRUFBcUIsQ0FDM0I7S0FDRixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMgfSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IMafUGFnaW5hdGlvbkFjdGlvbnMgfSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwuaW50ZXJuYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvblRyYWl0QWN0aW9ucyhcbiAgYWN0aW9uc0dyb3VwS2V5OiBzdHJpbmcsXG4gIGVudGl0aWVzTmFtZTogc3RyaW5nXG4pOiBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zIHtcbiAgY29uc3QgYWN0aW9uczogxp9QYWdpbmF0aW9uQWN0aW9ucyA9IHtcbiAgICBsb2FkRW50aXRpZXNQYWdlOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgJHtlbnRpdGllc05hbWV9IFBhZ2VgLFxuICAgICAgKHsgaW5kZXgsIGZvcmNlTG9hZCB9OiB7IGluZGV4OiBudW1iZXI7IGZvcmNlTG9hZD86IGJvb2xlYW4gfSkgPT4gKHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGZvcmNlTG9hZCxcbiAgICAgIH0pXG4gICAgKSxcbiAgICBsb2FkRW50aXRpZXNQYWdlU3VjY2VzczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBMb2FkICAke2VudGl0aWVzTmFtZX1cbiAgICAgICAgICBQYWdlIFN1Y2Nlc3NgXG4gICAgKSxcbiAgICBsb2FkRW50aXRpZXNQYWdlRmFpbDogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBMb2FkICR7ZW50aXRpZXNOYW1lfSBQYWdlIEZhaWxgXG4gICAgKSxcbiAgICBsb2FkRW50aXRpZXNQcmV2aW91c1BhZ2U6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gTG9hZCBQcmV2aW91cyAke2VudGl0aWVzTmFtZX0gUGFnZWBcbiAgICApLFxuICAgIGxvYWRFbnRpdGllc05leHRQYWdlOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgTmV4dCAke2VudGl0aWVzTmFtZX0gUGFnZWBcbiAgICApLFxuICAgIGxvYWRFbnRpdGllc0ZpcnN0UGFnZTogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBMb2FkIEZpcnN0ICR7ZW50aXRpZXNOYW1lfSBQYWdlYCxcbiAgICAgIChmb3JjZUxvYWQ/OiBib29sZWFuKSA9PiAoeyBmb3JjZUxvYWQgfSlcbiAgICApLFxuICAgIGxvYWRFbnRpdGllc0xhc3RQYWdlOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgTGFzdCAke2VudGl0aWVzTmFtZX0gUGFnZWBcbiAgICApLFxuICAgIGNsZWFyRW50aXRpZXNQYWdlc0NhY2hlOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IENsZWFyICR7ZW50aXRpZXNOYW1lfSBDYWNoZWBcbiAgICApLFxuICAgIHNldEVudGl0aWVzUmVxdWVzdFBhZ2U6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gU2V0ICR7ZW50aXRpZXNOYW1lfSBSZXF1ZXN0IFBhZ2VgLFxuICAgICAgcHJvcHM8eyBpbmRleDogbnVtYmVyIH0+KClcbiAgICApLFxuICB9O1xuICByZXR1cm4gYWN0aW9ucztcbn1cbiJdfQ==","import { createReducer, on } from '@ngrx/store';\nimport { insertIf } from '@ngrx-traits/core';\nexport function createPaginationInitialState(previousInitialState, allConfigs) {\n const { currentPage, pageSize, cacheType, pagesToCache } = allConfigs.pagination;\n return {\n ...previousInitialState,\n pagination: {\n pageSize,\n currentPage,\n requestPage: currentPage,\n pagesToCache,\n cache: {\n type: cacheType,\n start: 0,\n end: 0,\n },\n },\n };\n}\nexport function createPaginationTraitReducer(initialState, allActions, allSelectors, allMutators, allConfigs) {\n function addToCacheTotal(state, add) {\n return {\n ...state,\n pagination: {\n ...state.pagination,\n total: (state.pagination.total ?? 0) + add,\n },\n };\n }\n function clearPagesCache(state) {\n return {\n ...state,\n entities: {},\n ids: [],\n pagination: {\n ...state.pagination,\n currentPage: 0,\n total: 0,\n cache: { ...state.pagination.cache, start: 0, end: 0 },\n },\n };\n }\n function recalculateTotal(state) {\n const total = allSelectors.selectEntitiesTotal(state);\n return {\n ...state,\n status: 'success',\n pagination: {\n ...state.pagination,\n currentPage: 0,\n total,\n cache: {\n ...state.pagination.cache,\n start: 0,\n end: total,\n },\n },\n };\n }\n const filterRemote = !allConfigs?.filter?.filterFn;\n return createReducer(initialState, on(allActions.loadEntitiesPage, (state, { index }) => allMutators.setEntitiesPage(state, index)), on(allActions.setEntitiesRequestPage, (state, { index }) => ({\n ...state,\n pagination: {\n ...state.pagination,\n requestPage: index,\n },\n status: 'loading',\n })), on(allActions.loadEntitiesPageSuccess, (state) => ({\n ...state,\n status: 'success',\n })), on(allActions.loadEntitiesPageFail, (state) => ({\n ...state,\n status: 'fail',\n })), on(allActions.clearEntitiesPagesCache, (state) => clearPagesCache(state)), on(allActions.loadEntitiesSuccess, (state, { entities, total }) => allMutators.mergePaginatedEntities(entities, total, {\n ...state,\n status: 'success',\n })), ...insertIf(allActions.addEntities, () => on(allActions.addEntities, (state, { entities }) => addToCacheTotal(state, entities.length))), ...insertIf(allActions.removeEntities, () => on(allActions.removeEntities, (state, { keys }) => addToCacheTotal(state, -keys.length))), ...insertIf(allActions.storeEntitiesFilter, () => on(allActions.storeEntitiesFilter, (state) => recalculateTotal(state))), ...insertIf(allActions.removeAllEntities, () => on(allActions.removeAllEntities, (state) => clearPagesCache(state))));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24udHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWdCaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzdDLE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsb0JBQXlCLEVBQ3pCLFVBQXlDO0lBRXpDLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FDdEQsVUFBVSxDQUFDLFVBQVcsQ0FBQztJQUV6QixPQUFPO1FBQ0wsR0FBRyxvQkFBb0I7UUFDdkIsVUFBVSxFQUFFO1lBQ1YsUUFBUTtZQUNSLFdBQVc7WUFDWCxXQUFXLEVBQUUsV0FBVztZQUN4QixZQUFZO1lBQ1osS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxDQUFDO2dCQUNSLEdBQUcsRUFBRSxDQUFDO2FBQ1A7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUkxQyxZQUFlLEVBQ2YsVUFHNkIsRUFDN0IsWUFBMkMsRUFDM0MsV0FDOEIsRUFDOUIsVUFFK0I7SUFFL0IsU0FBUyxlQUFlLENBRXRCLEtBQVEsRUFBRSxHQUFXO1FBQ3JCLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUU7Z0JBQ1YsR0FBRyxLQUFLLENBQUMsVUFBVTtnQkFDbkIsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FB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QUFjLEVBQUUsR0FBRyxFQUFFLENBQzdDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUNoRCxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUNyQyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQUksVUFBVSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUNsRCxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN2RSxFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FDaEQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BFLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWx0ZXJFbnRpdGllc0FjdGlvbnMsXG4gIEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2ZpbHRlci1lbnRpdGllcy9maWx0ZXItZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNNdXRhdG9ycyxcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnLFxuICBFbnRpdGllc1BhZ2luYXRpb25NdXRhdG9ycyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGUsXG59IGZyb20gJy4vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcyc7XG5pbXBvcnQgeyDGn1BhZ2luYXRpb25BY3Rpb25zIH0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsLmludGVybmFsJztcbmltcG9ydCB7IGluc2VydElmIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgxp9GaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsLmludGVybmFsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Jbml0aWFsU3RhdGU8RW50aXR5PihcbiAgcHJldmlvdXNJbml0aWFsU3RhdGU6IGFueSxcbiAgYWxsQ29uZmlnczogRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWdcbik6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSB7XG4gIGNvbnN0IHsgY3VycmVudFBhZ2UsIHBhZ2VTaXplLCBjYWNoZVR5cGUsIHBhZ2VzVG9DYWNoZSB9ID1cbiAgICBhbGxDb25maWdzLnBhZ2luYXRpb24hO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgcGFnZVNpemUsXG4gICAgICBjdXJyZW50UGFnZSxcbiAgICAgIHJlcXVlc3RQYWdlOiBjdXJyZW50UGFnZSxcbiAgICAgIHBhZ2VzVG9DYWNoZSxcbiAgICAgIGNhY2hlOiB7XG4gICAgICAgIHR5cGU6IGNhY2hlVHlwZSxcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogMCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25UcmFpdFJlZHVjZXI8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZVxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiDGn1BhZ2luYXRpb25BY3Rpb25zICZcbiAgICDGn0ZpbHRlckVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBMb2FkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIENydWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgYWxsU2VsZWN0b3JzOiBMb2FkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PixcbiAgYWxsTXV0YXRvcnM6IEVudGl0aWVzUGFnaW5hdGlvbk11dGF0b3JzPEVudGl0eT4gJlxuICAgIExvYWRFbnRpdGllc011dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5LCB1bmtub3duPiAmXG4gICAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWdcbikge1xuICBmdW5jdGlvbiBhZGRUb0NhY2hlVG90YWw8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZVxuICA+KHN0YXRlOiBTLCBhZGQ6IG51bWJlcikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgdG90YWw6IChzdGF0ZS5wYWdpbmF0aW9uLnRvdGFsID8/IDApICsgYWRkLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJQYWdlc0NhY2hlPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgPihzdGF0ZTogUyk6IFMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGVudGl0aWVzOiB7fSxcbiAgICAgIGlkczogW10sXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIC4uLnN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIGN1cnJlbnRQYWdlOiAwLFxuICAgICAgICB0b3RhbDogMCxcbiAgICAgICAgY2FjaGU6IHsgLi4uc3RhdGUucGFnaW5hdGlvbi5jYWNoZSwgc3RhcnQ6IDAsIGVuZDogMCB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVjYWxjdWxhdGVUb3RhbDxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlXG4gID4oc3RhdGU6IFMpOiBTIHtcbiAgICBjb25zdCB0b3RhbCA9IGFsbFNlbGVjdG9ycy5zZWxlY3RFbnRpdGllc1RvdGFsKHN0YXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgY3VycmVudFBhZ2U6IDAsXG4gICAgICAgIHRvdGFsLFxuICAgICAgICBjYWNoZToge1xuICAgICAgICAgIC4uLnN0YXRlLnBhZ2luYXRpb24uY2FjaGUsXG4gICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgZW5kOiB0b3RhbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlclJlbW90ZSA9ICFhbGxDb25maWdzPy5maWx0ZXI/LmZpbHRlckZuO1xuXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2UsIChzdGF0ZSwgeyBpbmRleCB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMuc2V0RW50aXRpZXNQYWdlKHN0YXRlLCBpbmRleClcbiAgICApLFxuICAgIG9uKGFsbEFjdGlvbnMuc2V0RW50aXRpZXNSZXF1ZXN0UGFnZSwgKHN0YXRlLCB7IGluZGV4IH0pID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgcmVxdWVzdFBhZ2U6IGluZGV4LFxuICAgICAgfSxcbiAgICAgIHN0YXR1czogJ2xvYWRpbmcnLFxuICAgIH0pKSxcbiAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgIH0pKSxcbiAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VGYWlsLCAoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHN0YXR1czogJ2ZhaWwnLFxuICAgIH0pKSxcbiAgICBvbihhbGxBY3Rpb25zLmNsZWFyRW50aXRpZXNQYWdlc0NhY2hlLCAoc3RhdGUpID0+IGNsZWFyUGFnZXNDYWNoZShzdGF0ZSkpLFxuICAgIG9uKGFsbEFjdGlvbnMubG9hZEVudGl0aWVzU3VjY2VzcywgKHN0YXRlLCB7IGVudGl0aWVzLCB0b3RhbCB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMubWVyZ2VQYWdpbmF0ZWRFbnRpdGllcyhlbnRpdGllcywgdG90YWwsIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgfSlcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KGFsbEFjdGlvbnMuYWRkRW50aXRpZXMsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmFkZEVudGl0aWVzLCAoc3RhdGUsIHsgZW50aXRpZXMgfSkgPT5cbiAgICAgICAgYWRkVG9DYWNoZVRvdGFsKHN0YXRlLCBlbnRpdGllcy5sZW5ndGgpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVFbnRpdGllcywgKHN0YXRlLCB7IGtleXMgfSkgPT5cbiAgICAgICAgYWRkVG9DYWNoZVRvdGFsKHN0YXRlLCAta2V5cy5sZW5ndGgpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnN0b3JlRW50aXRpZXNGaWx0ZXIsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLnN0b3JlRW50aXRpZXNGaWx0ZXIsIChzdGF0ZSkgPT4gcmVjYWxjdWxhdGVUb3RhbChzdGF0ZSkpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVBbGxFbnRpdGllcywgKHN0YXRlKSA9PiBjbGVhclBhZ2VzQ2FjaGUoc3RhdGUpKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { TraitEffect } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { concatMap, concatMapTo, filter, first, map, } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport function createPaginationTraitEffects(allActions, allSelectors) {\n class PaginationEffect extends TraitEffect {\n constructor() {\n super(...arguments);\n this.loadPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesPage), concatLatestFrom(() => this.store.select(allSelectors\n .isEntitiesCurrentPageInCache)), map(([{ forceLoad }, isInCache]) => !forceLoad && isInCache\n ? allActions.loadEntitiesPageSuccess()\n : allActions.loadEntities()));\n });\n this.preloadNextPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesPageSuccess), concatMapTo(this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first())), filter((pageInfo) => !!pageInfo.total &&\n pageInfo.hasNext &&\n pageInfo.cacheType !== 'full'), concatMap((pageInfo) => this.store\n .select(allSelectors\n .isEntitiesNextPageInCache)\n .pipe(first(), map((isInCache) => (!isInCache && pageInfo) || undefined))), filter((pageInfo) => !!pageInfo), concatMap((pageInfo) => [\n allActions.setEntitiesRequestPage({ index: pageInfo.pageIndex + 1 }),\n allActions.loadEntities(),\n ]));\n });\n this.loadFirstPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesFirstPage), map(() => allActions.loadEntitiesPage({ index: 0 })));\n });\n this.loadPreviousPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesPreviousPage), concatMapTo(this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first())), map((page) => page.hasPrevious\n ? allActions.loadEntitiesPage({ index: page.pageIndex - 1 })\n : allActions.loadEntitiesPageFail()));\n });\n this.loadNextPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesNextPage), concatMapTo(this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first())), map((page) => page.hasNext\n ? allActions.loadEntitiesPage({ index: page.pageIndex + 1 })\n : allActions.loadEntitiesPageFail()));\n });\n this.loadLastPage$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesLastPage), concatMapTo(this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first())), map((page) => page.hasNext && page.pagesCount\n ? allActions.loadEntitiesPage({ index: page.pagesCount - 1 })\n : allActions.loadEntitiesPageFail()));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: PaginationEffect, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: PaginationEffect }); }\n }\n i0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: PaginationEffect, decorators: [{\n type: Injectable\n }] });\n return [PaginationEffect];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24udHJhaXQuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsR0FFSixNQUFNLGdCQUFnQixDQUFDOztBQVd4QixNQUFNLFVBQVUsNEJBQTRCLENBQzFDLFVBRzZCLEVBQzdCLFlBQ3FDO0lBRXJDLE1BQ00sZ0JBQWlCLFNBQVEsV0FBVztRQUQxQzs7WUFFRSxjQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNuQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2QsWUFBZ0U7cUJBQzlELDRCQUE0QixDQUNoQyxDQUNGLEVBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FDakMsQ0FBQyxTQUFTLElBQUksU0FBUztvQkFDckIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRTtv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RUFBRSxDQUNYLElBQUksQ0FBQyxPQUFPO29CQUNWLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUN0QyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILGtCQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUN2QyxXQUFXLENBQ1QsSUFBSSxDQUFDLEtBQUs7cUJBQ1AsTUFBTSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQztxQkFDbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQ2pCLEVBQ0QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDWCxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVO29CQUM3QixDQUFDLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdELENBQUMsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FDdEMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtrSEF6R0ssZ0JBQWdCO3NIQUFoQixnQkFBZ0I7OytGQUFoQixnQkFBZ0I7c0JBRHJCLFVBQVU7O0lBMkdYLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhaXRFZmZlY3QgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IGNvbmNhdExhdGVzdEZyb20gfSBmcm9tICdAbmdyeC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgY29uY2F0TWFwLFxuICBjb25jYXRNYXBUbyxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ3J1ZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4uL2NydWQtZW50aXRpZXMvY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc0FjdGlvbnMsIExvYWRFbnRpdGllc1NlbGVjdG9ycyB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuaW1wb3J0IHsgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzIH0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7XG4gIMafRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzLFxuICDGn1BhZ2luYXRpb25BY3Rpb25zLFxufSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwuaW50ZXJuYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvblRyYWl0RWZmZWN0czxFbnRpdHk+KFxuICBhbGxBY3Rpb25zOiDGn1BhZ2luYXRpb25BY3Rpb25zICZcbiAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4sXG4gIGFsbFNlbGVjdG9yczogTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4gJlxuICAgIEVudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxFbnRpdHk+LFxuKTogVHlwZTxUcmFpdEVmZmVjdD5bXSB7XG4gIEBJbmplY3RhYmxlKClcbiAgY2xhc3MgUGFnaW5hdGlvbkVmZmVjdCBleHRlbmRzIFRyYWl0RWZmZWN0IHtcbiAgICBsb2FkUGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZSksXG4gICAgICAgIGNvbmNhdExhdGVzdEZyb20oKCkgPT5cbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChcbiAgICAgICAgICAgIChhbGxTZWxlY3RvcnMgYXMgdW5rbm93biBhcyDGn0VudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxFbnRpdHk+KVxuICAgICAgICAgICAgICAuaXNFbnRpdGllc0N1cnJlbnRQYWdlSW5DYWNoZSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBtYXAoKFt7IGZvcmNlTG9hZCB9LCBpc0luQ2FjaGVdKSA9PlxuICAgICAgICAgICFmb3JjZUxvYWQgJiYgaXNJbkNhY2hlXG4gICAgICAgICAgICA/IGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MoKVxuICAgICAgICAgICAgOiBhbGxBY3Rpb25zLmxvYWRFbnRpdGllcygpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHByZWxvYWROZXh0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MpLFxuICAgICAgICBjb25jYXRNYXBUbyhcbiAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAuc2VsZWN0KGFsbFNlbGVjdG9ycy5zZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlSW5mbylcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpLFxuICAgICAgICApLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHBhZ2VJbmZvKSA9PlxuICAgICAgICAgICAgISFwYWdlSW5mby50b3RhbCAmJlxuICAgICAgICAgICAgcGFnZUluZm8uaGFzTmV4dCAmJlxuICAgICAgICAgICAgcGFnZUluZm8uY2FjaGVUeXBlICE9PSAnZnVsbCcsXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgocGFnZUluZm8pID0+XG4gICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgLnNlbGVjdChcbiAgICAgICAgICAgICAgKGFsbFNlbGVjdG9ycyBhcyB1bmtub3duIGFzIMafRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzPEVudGl0eT4pXG4gICAgICAgICAgICAgICAgLmlzRW50aXRpZXNOZXh0UGFnZUluQ2FjaGUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgbWFwKChpc0luQ2FjaGUpID0+ICghaXNJbkNhY2hlICYmIHBhZ2VJbmZvKSB8fCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgZmlsdGVyKChwYWdlSW5mbykgPT4gISFwYWdlSW5mbyksXG4gICAgICAgIGNvbmNhdE1hcCgocGFnZUluZm8pID0+IFtcbiAgICAgICAgICBhbGxBY3Rpb25zLnNldEVudGl0aWVzUmVxdWVzdFBhZ2UoeyBpbmRleDogcGFnZUluZm8hLnBhZ2VJbmRleCArIDEgfSksXG4gICAgICAgICAgYWxsQWN0aW9ucy5sb2FkRW50aXRpZXMoKSxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgbG9hZEZpcnN0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKGFsbEFjdGlvbnMubG9hZEVudGl0aWVzRmlyc3RQYWdlKSxcbiAgICAgICAgbWFwKCgpID0+IGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZSh7IGluZGV4OiAwIH0pKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsb2FkUHJldmlvdXNQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQcmV2aW91c1BhZ2UpLFxuICAgICAgICBjb25jYXRNYXBUbyhcbiAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAuc2VsZWN0KGFsbFNlbGVjdG9ycy5zZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlSW5mbylcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpLFxuICAgICAgICApLFxuICAgICAgICBtYXAoKHBhZ2UpID0+XG4gICAgICAgICAgcGFnZS5oYXNQcmV2aW91c1xuICAgICAgICAgICAgPyBhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2UoeyBpbmRleDogcGFnZS5wYWdlSW5kZXggLSAxIH0pXG4gICAgICAgICAgICA6IGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZUZhaWwoKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsb2FkTmV4dFBhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShhbGxBY3Rpb25zLmxvYWRFbnRpdGllc05leHRQYWdlKSxcbiAgICAgICAgY29uY2F0TWFwVG8oXG4gICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgLnNlbGVjdChhbGxTZWxlY3RvcnMuc2VsZWN0RW50aXRpZXNDdXJyZW50UGFnZUluZm8pXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChwYWdlKSA9PlxuICAgICAgICAgIHBhZ2UuaGFzTmV4dFxuICAgICAgICAgICAgPyBhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2UoeyBpbmRleDogcGFnZS5wYWdlSW5kZXggKyAxIH0pXG4gICAgICAgICAgICA6IGFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZUZhaWwoKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsb2FkTGFzdFBhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShhbGxBY3Rpb25zLmxvYWRFbnRpdGllc0xhc3RQYWdlKSxcbiAgICAgICAgY29uY2F0TWFwVG8oXG4gICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgLnNlbGVjdChhbGxTZWxlY3RvcnMuc2VsZWN0RW50aXRpZXNDdXJyZW50UGFnZUluZm8pXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChwYWdlKSA9PlxuICAgICAgICAgIHBhZ2UuaGFzTmV4dCAmJiBwYWdlLnBhZ2VzQ291bnRcbiAgICAgICAgICAgID8gYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlKHsgaW5kZXg6IHBhZ2UucGFnZXNDb3VudCAtIDEgfSlcbiAgICAgICAgICAgIDogYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlRmFpbCgpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gW1BhZ2luYXRpb25FZmZlY3RdO1xufVxuIl19","export function createPaginationTraitMutators(allSelectors, allConfigs) {\n const adapter = allConfigs.loadEntities.adapter;\n function mergePaginatedEntities(entities, total = undefined, state) {\n const cacheType = state.pagination.cache.type;\n switch (cacheType) {\n case 'full':\n return adapter.setAll(entities, {\n ...state,\n pagination: {\n ...state.pagination,\n total: entities.length,\n cache: {\n ...state.pagination.cache,\n start: 0,\n end: entities.length,\n },\n },\n });\n case 'partial': {\n const isPreloadNextPages = state.pagination.currentPage + 1 === state.pagination.requestPage;\n const start = state.pagination.currentPage * state.pagination.pageSize;\n const newEntities = isPreloadNextPages\n ? [...allSelectors.selectEntitiesCurrentPageList(state), ...entities]\n : entities;\n return adapter.setAll(newEntities, {\n ...state,\n pagination: {\n ...state.pagination,\n total,\n cache: {\n ...state.pagination.cache,\n start,\n end: start + entities.length,\n },\n },\n });\n }\n case 'grow':\n return adapter.addMany(entities, {\n ...state,\n pagination: {\n ...state.pagination,\n total,\n cache: {\n ...state.pagination.cache,\n end: state.ids.length + entities.length,\n },\n },\n });\n }\n return state;\n }\n function setEntitiesPage(state, index) {\n return {\n ...state,\n pagination: {\n ...state.pagination,\n currentPage: index,\n requestPage: index,\n },\n status: 'loading',\n };\n }\n return { mergePaginatedEntities, setEntitiesPage };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sVUFBVSw2QkFBNkIsQ0FDM0MsWUFBaUQsRUFDakQsVUFBMkM7SUFFM0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFlBQWEsQ0FBQyxPQUFPLENBQUM7SUFFakQsU0FBUyxzQkFBc0IsQ0FFN0IsUUFBa0IsRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQVE7UUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRTlDLFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzlCLEdBQUcsS0FBSztvQkFDUixVQUFVLEVBQUU7d0JBQ1YsR0FBRyxLQUFLLENBQUMsVUFBVTt3QkFDbkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO3dCQUN0QixLQUFLLEVBQUU7NEJBQ0wsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUs7NEJBQ3pCLEtBQUssRUFBRSxDQUFDOzRCQUNSLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTTt5QkFDckI7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sa0JBQWtCLEdBQ3RCLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFFcEUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZFLE1BQU0sV0FBVyxHQUFHLGtCQUFrQjtvQkFDcEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUM7b0JBQ3JFLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ2IsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDakMsR0FBRyxLQUFLO29CQUNSLFVBQVUsRUFBRTt3QkFDVixHQUFHLEtBQUssQ0FBQyxVQUFVO3dCQUNuQixLQUFLO3dCQUNMLEtBQUssRUFBRTs0QkFDTCxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSzs0QkFDekIsS0FBSzs0QkFDTCxHQUFHLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNO3lCQUM3QjtxQkFDRjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxNQUFNO2dCQUNULE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQy9CLEdBQUcsS0FBSztvQkFDUixVQUFVLEVBQUU7d0JBQ1YsR0FBRyxLQUFLLENBQUMsVUFBVTt3QkFDbkIsS0FBSzt3QkFDTCxLQUFLLEVBQUU7NEJBQ0wsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUs7NEJBQ3pCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTt5QkFDeEM7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELFNBQVMsZUFBZSxDQUd0QixLQUFRLEVBQUUsS0FBYTtRQUN2QixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFO2dCQUNWLEdBQUcsS0FBSyxDQUFDLFVBQVU7Z0JBQ25CLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSzthQUNuQjtZQUNELE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdGllc1BhZ2luYXRpb25NdXRhdG9ycyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzLFxuICBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbn0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc0tleWVkQ29uZmlnLCBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvblRyYWl0TXV0YXRvcnM8RW50aXR5PihcbiAgYWxsU2VsZWN0b3JzOiBFbnRpdGllc1BhZ2luYXRpb25TZWxlY3RvcnM8RW50aXR5PixcbiAgYWxsQ29uZmlnczogTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuKTogRW50aXRpZXNQYWdpbmF0aW9uTXV0YXRvcnM8RW50aXR5PiB7XG4gIGNvbnN0IGFkYXB0ZXIgPSBhbGxDb25maWdzLmxvYWRFbnRpdGllcyEuYWRhcHRlcjtcblxuICBmdW5jdGlvbiBtZXJnZVBhZ2luYXRlZEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgPihlbnRpdGllczogRW50aXR5W10sIHRvdGFsID0gdW5kZWZpbmVkLCBzdGF0ZTogUyk6IFMge1xuICAgIGNvbnN0IGNhY2hlVHlwZSA9IHN0YXRlLnBhZ2luYXRpb24uY2FjaGUudHlwZTtcblxuICAgIHN3aXRjaCAoY2FjaGVUeXBlKSB7XG4gICAgICBjYXNlICdmdWxsJzpcbiAgICAgICAgcmV0dXJuIGFkYXB0ZXIuc2V0QWxsKGVudGl0aWVzLCB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgICAgIHRvdGFsOiBlbnRpdGllcy5sZW5ndGgsXG4gICAgICAgICAgICBjYWNoZToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmF0aW9uLmNhY2hlLFxuICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgZW5kOiBlbnRpdGllcy5sZW5ndGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAncGFydGlhbCc6IHtcbiAgICAgICAgY29uc3QgaXNQcmVsb2FkTmV4dFBhZ2VzID1cbiAgICAgICAgICBzdGF0ZS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlICsgMSA9PT0gc3RhdGUucGFnaW5hdGlvbi5yZXF1ZXN0UGFnZTtcblxuICAgICAgICBjb25zdCBzdGFydCA9IHN0YXRlLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgKiBzdGF0ZS5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgICAgICBjb25zdCBuZXdFbnRpdGllcyA9IGlzUHJlbG9hZE5leHRQYWdlc1xuICAgICAgICAgID8gWy4uLmFsbFNlbGVjdG9ycy5zZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlTGlzdChzdGF0ZSksIC4uLmVudGl0aWVzXVxuICAgICAgICAgIDogZW50aXRpZXM7XG4gICAgICAgIHJldHVybiBhZGFwdGVyLnNldEFsbChuZXdFbnRpdGllcywge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgICAgICB0b3RhbCxcbiAgICAgICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnBhZ2luYXRpb24uY2FjaGUsXG4gICAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgICBlbmQ6IHN0YXJ0ICsgZW50aXRpZXMubGVuZ3RoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2dyb3cnOlxuICAgICAgICByZXR1cm4gYWRhcHRlci5hZGRNYW55KGVudGl0aWVzLCB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgY2FjaGU6IHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUucGFnaW5hdGlvbi5jYWNoZSxcbiAgICAgICAgICAgICAgZW5kOiBzdGF0ZS5pZHMubGVuZ3RoICsgZW50aXRpZXMubGVuZ3RoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgZnVuY3Rpb24gc2V0RW50aXRpZXNQYWdlPFxuICAgIEVudGl0eSxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlXG4gID4oc3RhdGU6IFMsIGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIC4uLnN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIGN1cnJlbnRQYWdlOiBpbmRleCxcbiAgICAgICAgcmVxdWVzdFBhZ2U6IGluZGV4LFxuICAgICAgfSxcbiAgICAgIHN0YXR1czogJ2xvYWRpbmcnLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgbWVyZ2VQYWdpbmF0ZWRFbnRpdGllcywgc2V0RW50aXRpZXNQYWdlIH07XG59XG4iXX0=","import { entitiesPaginationTraitKey, } from './entities-pagination.model';\nimport { createPaginationTraitSelectors } from './entities-pagination.trait.selectors';\nimport { createPaginationTraitActions } from './entities-pagination.trait.actions';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\nimport { createPaginationInitialState, createPaginationTraitReducer, } from './entities-pagination.trait.reducer';\nimport { createPaginationTraitEffects } from './entities-pagination.trait.effects';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createPaginationTraitMutators } from './entities-pagination.trait.mutators';\n/**\n * Generates ngrx code to paginate a list of entities, this has 3 cache `cacheType`\n * - 'full': The full result is cache in memory and split in pages to render, useful\n * for small result but not so small that requires been render in pages\n * - 'partial': Backend returns partial results because is are to big, this has a cache a few pages forward\n * to avoid calling the backend on each page, the cache is clean when a new loadEntities is required\n * - 'grow': Similar to partial that the backend returns partial result, but in this case the cache grows,\n * after each loadEntities the cache is appended to the previous cache, this mode is ideal for infinite scrolls,\n * where you will only call loadNextPage.\n * To make the pagination experience smoother the loadEntities action is fired when the current page is equal\n * to the last cached page, so while the user is reading the page more pages are being loading in the background.\n * @param config\n * @param config.cacheType - Default to 'partial', change the cache mode\n * @param config.pageSize - Default to 10, number of entities on each page\n * @param config.currentPage - Default to 0, starting page\n * @param config.pagesToCache - Default to 3, used in partial and grow cache mode, is the number of\n * extra pages kept in cache to avoid calling the backend on each page\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,EntitiesPaginationState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addEntitiesPaginationTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // pagination: {\n * // currentPage: number;\n * // requestPage: number;\n * // pageSize: number;\n * // total?: number;\n * // pagesToCache: number;\n * // cache: {\n * // type: 'full' | 'partial' | 'grow';\n * // start: number;\n * // end: number;\n * // }\n * // }\n *\n * // generated actions\n * traits.actions.loadTodosPage({index})\n * traits.actions.loadTodosPageSuccess()\n * traits.actions.loadTodosPageFail()\n * traits.actions.loadTodosNextPage()\n * traits.actions.loadTodosPreviousPage()\n * traits.actions.loadTodosFirstPage()\n * traits.actions.loadTodosLastPage()\n * traits.actions.clearTodosPagesCache()\n * // generated selectors\n * traits.selectors.selectTodosCurrentPageList()\n * traits.selectors.isLoadingTodosCurrentPage()\n * // use isLoadingTodosPage over isLoadingTodos (which will return true even\n * // if the page loading is not the current one)\n * traits.selectors.selectTodosCurrentPage()\n * traits.selectors.selectTodosPagedRequest()// use in effects to get paging parameter\n * traits.selectors.selectTodosCurrentPageInfo()\n */\nexport function addEntitiesPaginationTrait({ cacheType = 'partial', pageSize = 10, currentPage = 0, pagesToCache = 3, } = {}) {\n return createTraitFactory({\n key: entitiesPaginationTraitKey,\n depends: [loadEntitiesTraitKey],\n config: {\n cacheType,\n pageSize,\n currentPage,\n pagesToCache,\n },\n actions: ({ actionsGroupKey, entitiesName }) => createPaginationTraitActions(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors, allConfigs, }) => createPaginationTraitSelectors(previousSelectors, allConfigs),\n mutators: ({ allSelectors, allConfigs }) => createPaginationTraitMutators(allSelectors, allConfigs),\n initialState: ({ previousInitialState, allConfigs, }) => createPaginationInitialState(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allSelectors, allMutators, allConfigs, }) => createPaginationTraitReducer(initialState, allActions, allSelectors, allMutators, allConfigs),\n effects: ({ allActions, allSelectors }) => createPaginationTraitEffects(allActions, allSelectors),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCwwQkFBMEIsR0FDM0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUtuRixPQUFPLEVBS0wsb0JBQW9CLEdBQ3JCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw0QkFBNEIsR0FDN0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVlyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0VHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUFTLEVBQ2pELFNBQVMsR0FBRyxTQUFTLEVBQ3JCLFFBQVEsR0FBRyxFQUFFLEVBQ2IsV0FBVyxHQUFHLENBQUMsRUFDZixZQUFZLEdBQUcsQ0FBQyxNQUNZLEVBQUU7SUFDOUIsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsMEJBQTBCO1FBQy9CLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQy9CLE1BQU0sRUFBRTtZQUNOLFNBQVM7WUFDVCxRQUFRO1lBQ1IsV0FBVztZQUNYLFlBQVk7U0FDZTtRQUM3QixPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQTZCLEVBQUUsRUFBRSxDQUN4RSw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDO1FBQzdELFNBQVMsRUFBRSxDQUFDLEVBQ1YsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDa0IsRUFBRSxFQUFFLENBQ2hDLDhCQUE4QixDQUM1QixpQkFBa0QsRUFDbEQsVUFDNEMsQ0FDN0M7UUFDSCxRQUFRLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQ3pDLDZCQUE2QixDQUMzQixZQUMrQixFQUMvQixVQUNpQyxDQUNsQztRQUNILFlBQVksRUFBRSxDQUFDLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsR0FDcUIsRUFBRSxFQUFFLENBQ25DLDRCQUE0QixDQUMxQixvQkFBb0IsRUFDcEIsVUFBMkMsQ0FDNUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxFQUNSLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEdBQ1gsRUFBRSxFQUFFLENBQ0gsNEJBQTRCLENBQzFCLFlBQVksRUFDWixVQUc2QixFQUM3QixZQUMrQixFQUMvQixXQUM4QixFQUM5QixVQUUrQixDQUNoQztRQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FDeEMsNEJBQTRCLENBQzFCLFVBRzZCLEVBQzdCLFlBQytCLENBQ2hDO0tBQ0osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudGl0aWVzUGFnaW5hdGlvbkNvbmZpZyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG4gIEVudGl0aWVzUGFnaW5hdGlvbk11dGF0b3JzLFxuICBFbnRpdGllc1BhZ2luYXRpb25TZWxlY3RvcnMsXG4gIGVudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5LFxufSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlUGFnaW5hdGlvblRyYWl0U2VsZWN0b3JzIH0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLnRyYWl0LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVQYWdpbmF0aW9uVHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLnRyYWl0LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRmlsdGVyRW50aXRpZXNBY3Rpb25zLFxuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNNdXRhdG9ycyxcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBsb2FkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIGNyZWF0ZVBhZ2luYXRpb25Jbml0aWFsU3RhdGUsXG4gIGNyZWF0ZVBhZ2luYXRpb25UcmFpdFJlZHVjZXIsXG59IGZyb20gJy4vZW50aXRpZXMtcGFnaW5hdGlvbi50cmFpdC5yZWR1Y2VyJztcbmltcG9ydCB7IGNyZWF0ZVBhZ2luYXRpb25UcmFpdEVmZmVjdHMgfSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24udHJhaXQuZWZmZWN0cyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnkgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGNyZWF0ZVBhZ2luYXRpb25UcmFpdE11dGF0b3JzIH0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLnRyYWl0Lm11dGF0b3JzJztcbmltcG9ydCB7XG4gIMafRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzLFxuICDGn1BhZ2luYXRpb25BY3Rpb25zLFxufSBmcm9tICcuL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwuaW50ZXJuYWwnO1xuaW1wb3J0IHtcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFNlbGVjdG9yc0ZhY3RvcnlDb25maWcsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IMafRmlsdGVyRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vZmlsdGVyLWVudGl0aWVzL2ZpbHRlci1lbnRpdGllcy5tb2RlbC5pbnRlcm5hbCc7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSB0byBwYWdpbmF0ZSBhIGxpc3Qgb2YgZW50aXRpZXMsIHRoaXMgaGFzIDMgY2FjaGUgYGNhY2hlVHlwZWBcbiAqIC0gJ2Z1bGwnOiBUaGUgZnVsbCByZXN1bHQgaXMgY2FjaGUgaW4gbWVtb3J5IGFuZCBzcGxpdCBpbiBwYWdlcyB0byByZW5kZXIsIHVzZWZ1bFxuICogZm9yIHNtYWxsIHJlc3VsdCBidXQgbm90IHNvIHNtYWxsIHRoYXQgcmVxdWlyZXMgYmVlbiByZW5kZXIgaW4gcGFnZXNcbiAqIC0gJ3BhcnRpYWwnOiBCYWNrZW5kIHJldHVybnMgcGFydGlhbCByZXN1bHRzIGJlY2F1c2UgaXMgYXJlIHRvIGJpZywgdGhpcyBoYXMgYSBjYWNoZSBhIGZldyBwYWdlcyBmb3J3YXJkXG4gKiB0byBhdm9pZCBjYWxsaW5nIHRoZSBiYWNrZW5kIG9uIGVhY2ggcGFnZSwgdGhlIGNhY2hlIGlzIGNsZWFuIHdoZW4gYSBuZXcgbG9hZEVudGl0aWVzIGlzIHJlcXVpcmVkXG4gKiAtICdncm93JzogU2ltaWxhciB0byBwYXJ0aWFsIHRoYXQgdGhlIGJhY2tlbmQgcmV0dXJucyBwYXJ0aWFsIHJlc3VsdCwgYnV0IGluIHRoaXMgY2FzZSB0aGUgY2FjaGUgZ3Jvd3MsXG4gKiBhZnRlciBlYWNoIGxvYWRFbnRpdGllcyB0aGUgY2FjaGUgaXMgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGNhY2hlLCB0aGlzIG1vZGUgaXMgaWRlYWwgZm9yIGluZmluaXRlIHNjcm9sbHMsXG4gKiB3aGVyZSB5b3Ugd2lsbCBvbmx5IGNhbGwgbG9hZE5leHRQYWdlLlxuICogVG8gbWFrZSB0aGUgcGFnaW5hdGlvbiBleHBlcmllbmNlIHNtb290aGVyIHRoZSBsb2FkRW50aXRpZXMgYWN0aW9uIGlzIGZpcmVkIHdoZW4gdGhlIGN1cnJlbnQgcGFnZSBpcyBlcXVhbFxuICogdG8gdGhlIGxhc3QgY2FjaGVkIHBhZ2UsIHNvIHdoaWxlIHRoZSB1c2VyIGlzIHJlYWRpbmcgdGhlIHBhZ2UgbW9yZSBwYWdlcyBhcmUgYmVpbmcgbG9hZGluZyBpbiB0aGUgYmFja2dyb3VuZC5cbiAqIEBwYXJhbSBjb25maWdcbiAqIEBwYXJhbSBjb25maWcuY2FjaGVUeXBlIC0gRGVmYXVsdCB0byAncGFydGlhbCcsIGNoYW5nZSB0aGUgY2FjaGUgbW9kZVxuICogQHBhcmFtIGNvbmZpZy5wYWdlU2l6ZSAtIERlZmF1bHQgdG8gMTAsIG51bWJlciBvZiBlbnRpdGllcyBvbiAgZWFjaCBwYWdlXG4gKiBAcGFyYW0gY29uZmlnLmN1cnJlbnRQYWdlIC0gRGVmYXVsdCB0byAwLCBzdGFydGluZyBwYWdlXG4gKiBAcGFyYW0gY29uZmlnLnBhZ2VzVG9DYWNoZSAtIERlZmF1bHQgdG8gMywgdXNlZCBpbiBwYXJ0aWFsIGFuZCBncm93IGNhY2hlIG1vZGUsIGlzIHRoZSBudW1iZXIgb2ZcbiAqIGV4dHJhIHBhZ2VzIGtlcHQgaW4gY2FjaGUgdG8gYXZvaWQgY2FsbGluZyB0aGUgYmFja2VuZCBvbiBlYWNoIHBhZ2VcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGZvbGxvd2luZyB0cmFpdCBjb25maWdcbiAqXG4gKiBleHBvcnQgaW50ZXJmYWNlIFRlc3RTdGF0ZVxuICogZXh0ZW5kcyBFbnRpdHlBbmRTdGF0dXNTdGF0ZTxUb2RvPixFbnRpdGllc1BhZ2luYXRpb25TdGF0ZXt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIHtlbnRpdHlOYW1lOiAnVG9kbyd9LFxuICogICAgICBhZGRMb2FkRW50aXRpZXNUcmFpdDxUb2RvPigpLFxuICogICAgICBhZGRFbnRpdGllc1BhZ2luYXRpb25UcmFpdDxUb2RvPigpXG4gKiAgICApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnW1RvZG9zXScsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFRlc3RTdGF0ZT4+KFxuICogICAgICAgICd0b2RvcycsXG4gKiAgICAgICksXG4gKiAgICB9KTtcbiAqXG4gKiAvLyAgIGFkZHMgZm9sbG93aW5nIHByb3BzIHRvIHRoZSBzdGF0ZTpcbiAqIC8vICAgIHBhZ2luYXRpb246IHtcbiAqIC8vICAgICAgIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gKiAvLyAgICAgICByZXF1ZXN0UGFnZTogbnVtYmVyO1xuICogLy8gICAgICAgcGFnZVNpemU6IG51bWJlcjtcbiAqIC8vICAgICAgIHRvdGFsPzogbnVtYmVyO1xuICogLy8gICAgICAgcGFnZXNUb0NhY2hlOiBudW1iZXI7XG4gKiAvLyAgICAgICBjYWNoZToge1xuICogLy8gICAgICAgICB0eXBlOiAnZnVsbCcgfCAncGFydGlhbCcgfCAnZ3Jvdyc7XG4gKiAvLyAgICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gKiAvLyAgICAgICAgIGVuZDogbnVtYmVyO1xuICogLy8gICAgICAgfVxuICogLy8gICAgIH1cbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zUGFnZSh7aW5kZXh9KVxuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zUGFnZVN1Y2Nlc3MoKVxuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zUGFnZUZhaWwoKVxuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zTmV4dFBhZ2UoKVxuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zUHJldmlvdXNQYWdlKClcbiAqIHRyYWl0cy5hY3Rpb25zLmxvYWRUb2Rvc0ZpcnN0UGFnZSgpXG4gKiB0cmFpdHMuYWN0aW9ucy5sb2FkVG9kb3NMYXN0UGFnZSgpXG4gKiB0cmFpdHMuYWN0aW9ucy5jbGVhclRvZG9zUGFnZXNDYWNoZSgpXG4gKiAvLyBnZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9zQ3VycmVudFBhZ2VMaXN0KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNMb2FkaW5nVG9kb3NDdXJyZW50UGFnZSgpXG4gKiAvLyB1c2UgaXNMb2FkaW5nVG9kb3NQYWdlIG92ZXIgaXNMb2FkaW5nVG9kb3MgKHdoaWNoIHdpbGwgcmV0dXJuIHRydWUgZXZlblxuICogLy8gaWYgdGhlIHBhZ2UgbG9hZGluZyBpcyBub3QgdGhlIGN1cnJlbnQgb25lKVxuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2Rvc0N1cnJlbnRQYWdlKClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NQYWdlZFJlcXVlc3QoKS8vIHVzZSBpbiBlZmZlY3RzIHRvIGdldCBwYWdpbmcgcGFyYW1ldGVyXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9zQ3VycmVudFBhZ2VJbmZvKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEVudGl0aWVzUGFnaW5hdGlvblRyYWl0PEVudGl0eT4oe1xuICBjYWNoZVR5cGUgPSAncGFydGlhbCcsXG4gIHBhZ2VTaXplID0gMTAsXG4gIGN1cnJlbnRQYWdlID0gMCxcbiAgcGFnZXNUb0NhY2hlID0gMyxcbn06IEVudGl0aWVzUGFnaW5hdGlvbkNvbmZpZyA9IHt9KSB7XG4gIHJldHVybiBjcmVhdGVUcmFpdEZhY3Rvcnkoe1xuICAgIGtleTogZW50aXRpZXNQYWdpbmF0aW9uVHJhaXRLZXksXG4gICAgZGVwZW5kczogW2xvYWRFbnRpdGllc1RyYWl0S2V5XSxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlVHlwZSxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgY3VycmVudFBhZ2UsXG4gICAgICBwYWdlc1RvQ2FjaGUsXG4gICAgfSBhcyBFbnRpdGllc1BhZ2luYXRpb25Db25maWcsXG4gICAgYWN0aW9uczogKHsgYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUgfTogVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVBhZ2luYXRpb25UcmFpdEFjdGlvbnMoYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUpLFxuICAgIHNlbGVjdG9yczogKHtcbiAgICAgIHByZXZpb3VzU2VsZWN0b3JzLFxuICAgICAgYWxsQ29uZmlncyxcbiAgICB9OiBUcmFpdFNlbGVjdG9yc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVQYWdpbmF0aW9uVHJhaXRTZWxlY3RvcnM8RW50aXR5PihcbiAgICAgICAgcHJldmlvdXNTZWxlY3RvcnMgYXMgTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4sXG4gICAgICAgIGFsbENvbmZpZ3MgYXMgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcgJlxuICAgICAgICAgIEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5LCB1bmtub3duPlxuICAgICAgKSxcbiAgICBtdXRhdG9yczogKHsgYWxsU2VsZWN0b3JzLCBhbGxDb25maWdzIH0pID0+XG4gICAgICBjcmVhdGVQYWdpbmF0aW9uVHJhaXRNdXRhdG9yczxFbnRpdHk+KFxuICAgICAgICBhbGxTZWxlY3RvcnMgYXMgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzPEVudGl0eT4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+LFxuICAgICAgICBhbGxDb25maWdzIGFzIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnICZcbiAgICAgICAgICBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4gICAgICApLFxuICAgIGluaXRpYWxTdGF0ZTogKHtcbiAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlLFxuICAgICAgYWxsQ29uZmlncyxcbiAgICB9OiBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVQYWdpbmF0aW9uSW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gICAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxDb25maWdzIGFzIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnXG4gICAgICApLFxuICAgIHJlZHVjZXI6ICh7XG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBhbGxBY3Rpb25zLFxuICAgICAgYWxsU2VsZWN0b3JzLFxuICAgICAgYWxsTXV0YXRvcnMsXG4gICAgICBhbGxDb25maWdzLFxuICAgIH0pID0+XG4gICAgICBjcmVhdGVQYWdpbmF0aW9uVHJhaXRSZWR1Y2VyKFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIGFsbEFjdGlvbnMgYXMgxp9QYWdpbmF0aW9uQWN0aW9ucyAmXG4gICAgICAgICAgxp9GaWx0ZXJFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4sXG4gICAgICAgIGFsbFNlbGVjdG9ycyBhcyDGn0VudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxFbnRpdHk+ICZcbiAgICAgICAgICBMb2FkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PixcbiAgICAgICAgYWxsTXV0YXRvcnMgYXMgRW50aXRpZXNQYWdpbmF0aW9uTXV0YXRvcnM8RW50aXR5PiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzTXV0YXRvcnM8RW50aXR5PixcbiAgICAgICAgYWxsQ29uZmlncyBhcyBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgdW5rbm93bj4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgICAgICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnXG4gICAgICApLFxuICAgIGVmZmVjdHM6ICh7IGFsbEFjdGlvbnMsIGFsbFNlbGVjdG9ycyB9KSA9PlxuICAgICAgY3JlYXRlUGFnaW5hdGlvblRyYWl0RWZmZWN0cyhcbiAgICAgICAgYWxsQWN0aW9ucyBhcyDGn1BhZ2luYXRpb25BY3Rpb25zICZcbiAgICAgICAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4sXG4gICAgICAgIGFsbFNlbGVjdG9ycyBhcyDGn0VudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxFbnRpdHk+ICZcbiAgICAgICAgICBMb2FkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PlxuICAgICAgKSxcbiAgfSk7XG59XG4iXX0=","import { createAction, props } from '@ngrx/store';\nexport function createSelectEntitiesTraitActions(actionsGroupKey, entitiesName) {\n return {\n selectEntities: createAction(`${actionsGroupKey} Select ${entitiesName}`, props()),\n deselectEntities: createAction(`${actionsGroupKey} Deselect ${entitiesName}`, props()),\n toggleSelectEntities: createAction(`${actionsGroupKey} Toggle Select ${entitiesName}`, props()),\n toggleSelectAllEntities: createAction(`${actionsGroupKey} Toggle Select All ${entitiesName}`),\n clearEntitiesSelection: createAction(`${actionsGroupKey} Clear ${entitiesName} Selection`),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdGllcy9zZWxlY3QtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLGVBQXVCLEVBQ3ZCLFlBQW9CO0lBRXBCLE9BQU87UUFDTCxjQUFjLEVBQUUsWUFBWSxDQUMxQixHQUFHLGVBQWUsV0FBVyxZQUFZLEVBQUUsRUFDM0MsS0FBSyxFQUEyQixDQUNqQztRQUNELGdCQUFnQixFQUFFLFlBQVksQ0FDNUIsR0FBRyxlQUFlLGFBQWEsWUFBWSxFQUFFLEVBQzdDLEtBQUssRUFBMkIsQ0FDakM7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxrQkFBa0IsWUFBWSxFQUFFLEVBQ2xELEtBQUssRUFBMkIsQ0FDakM7UUFDRCx1QkFBdUIsRUFBRSxZQUFZLENBQ25DLEdBQUcsZUFBZSxzQkFBc0IsWUFBWSxFQUFFLENBQ3ZEO1FBQ0Qsc0JBQXNCLEVBQUUsWUFBWSxDQUNsQyxHQUFHLGVBQWUsVUFBVSxZQUFZLFlBQVksQ0FDckQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgcHJvcHMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBTZWxlY3RFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0QWN0aW9ucyhcbiAgYWN0aW9uc0dyb3VwS2V5OiBzdHJpbmcsXG4gIGVudGl0aWVzTmFtZTogc3RyaW5nXG4pOiBTZWxlY3RFbnRpdGllc0FjdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFNlbGVjdCAke2VudGl0aWVzTmFtZX1gLFxuICAgICAgcHJvcHM8eyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KClcbiAgICApLFxuICAgIGRlc2VsZWN0RW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gRGVzZWxlY3QgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgIHByb3BzPHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PigpXG4gICAgKSxcbiAgICB0b2dnbGVTZWxlY3RFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBUb2dnbGUgU2VsZWN0ICR7ZW50aXRpZXNOYW1lfWAsXG4gICAgICBwcm9wczx7IGlkOiBudW1iZXIgfCBzdHJpbmcgfT4oKVxuICAgICksXG4gICAgdG9nZ2xlU2VsZWN0QWxsRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVG9nZ2xlIFNlbGVjdCBBbGwgJHtlbnRpdGllc05hbWV9YFxuICAgICksXG4gICAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBDbGVhciAke2VudGl0aWVzTmFtZX0gU2VsZWN0aW9uYFxuICAgICksXG4gIH07XG59XG4iXX0=","export function deselectEntities(id, state) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [id]: _value, ...selectedIds } = state.selectedIds;\n return {\n ...state,\n selectedIds: selectedIds,\n };\n}\nexport function selectEntities(id, state) {\n return {\n ...state,\n selectedIds: { ...state.selectedIds, [id]: true },\n };\n}\nexport function toggleSelectEntities(id, state) {\n const selected = state.selectedIds[id];\n if (selected) {\n return deselectEntities(id, state);\n }\n else {\n return selectEntities(id, state);\n }\n}\nexport function clearEntitiesSelection(state) {\n return { ...state, selectedIds: {} };\n}\nexport function selectTotalSelectedEntities(state) {\n return Object.keys(state.selectedIds).length;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsRUFBbUIsRUFDbkIsS0FBUTtJQUVSLDZEQUE2RDtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzNELE9BQU87UUFDTCxHQUFHLEtBQUs7UUFDUixXQUFXLEVBQUUsV0FBVztLQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzVCLEVBQW1CLEVBQ25CLEtBQVE7SUFFUixPQUFPO1FBQ0wsR0FBRyxLQUFLO1FBQ1IsV0FBVyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQ2xELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxFQUFtQixFQUNuQixLQUFRO0lBRVIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsT0FBTyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFDRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLEtBQVE7SUFFUixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBR3pDLEtBQVE7SUFDUixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0RW50aXRpZXNTdGF0ZSB9IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlbGVjdEVudGl0aWVzPFMgZXh0ZW5kcyBTZWxlY3RFbnRpdGllc1N0YXRlPihcbiAgaWQ6IG51bWJlciB8IHN0cmluZyxcbiAgc3RhdGU6IFNcbik6IFMge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbnN0IHsgW2lkXTogX3ZhbHVlLCAuLi5zZWxlY3RlZElkcyB9ID0gc3RhdGUuc2VsZWN0ZWRJZHM7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc2VsZWN0ZWRJZHM6IHNlbGVjdGVkSWRzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0RW50aXRpZXM8UyBleHRlbmRzIFNlbGVjdEVudGl0aWVzU3RhdGU+KFxuICBpZDogbnVtYmVyIHwgc3RyaW5nLFxuICBzdGF0ZTogU1xuKTogUyB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc2VsZWN0ZWRJZHM6IHsgLi4uc3RhdGUuc2VsZWN0ZWRJZHMsIFtpZF06IHRydWUgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZVNlbGVjdEVudGl0aWVzPFMgZXh0ZW5kcyBTZWxlY3RFbnRpdGllc1N0YXRlPihcbiAgaWQ6IG51bWJlciB8IHN0cmluZyxcbiAgc3RhdGU6IFNcbik6IFMge1xuICBjb25zdCBzZWxlY3RlZCA9IHN0YXRlLnNlbGVjdGVkSWRzW2lkXTtcbiAgaWYgKHNlbGVjdGVkKSB7XG4gICAgcmV0dXJuIGRlc2VsZWN0RW50aXRpZXMoaWQsIHN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc2VsZWN0RW50aXRpZXMoaWQsIHN0YXRlKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyRW50aXRpZXNTZWxlY3Rpb248UyBleHRlbmRzIFNlbGVjdEVudGl0aWVzU3RhdGU+KFxuICBzdGF0ZTogU1xuKTogUyB7XG4gIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZElkczoge30gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFRvdGFsU2VsZWN0ZWRFbnRpdGllczxcbiAgRW50aXR5LFxuICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbj4oc3RhdGU6IFMpOiBudW1iZXIge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuc2VsZWN0ZWRJZHMpLmxlbmd0aDtcbn1cbiJdfQ==","import { createSelector } from '@ngrx/store';\nimport { selectTotalSelectedEntities } from './select-entities.utils';\nexport function createSelectEntitiesTraitSelectors(previousSelectors) {\n const { selectEntitiesMap, selectEntitiesTotal } = previousSelectors;\n function selectEntitiesIdsSelectedMap(state) {\n return state.selectedIds;\n }\n const selectEntitiesIdsSelectedList = createSelector(selectEntitiesIdsSelectedMap, (ids) => Object.keys(ids));\n const selectEntitiesSelectedMap = createSelector(selectEntitiesIdsSelectedList, selectEntitiesMap, (selectedIds, entities) => selectedIds.reduce((acum, id) => {\n acum[id] = entities[id];\n return acum;\n }, {}));\n const selectEntitiesSelectedList = createSelector(selectEntitiesIdsSelectedList, selectEntitiesMap, (selectedIds, entities) => selectedIds.map((id) => entities[id]));\n const isAllEntitiesSelected = createSelector((state) => selectEntitiesTotal(state), selectTotalSelectedEntities, (total, totalSelected) => totalSelected > 0 && totalSelected === total\n ? 'all'\n : totalSelected === 0\n ? 'none'\n : 'some');\n return {\n selectEntitiesIdsSelectedMap,\n selectEntitiesIdsSelectedList,\n selectEntitiesSelectedMap,\n selectEntitiesSelectedList,\n selectTotalSelectedEntities,\n isAllEntitiesSelected,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0aWVzL3NlbGVjdC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU83QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RSxNQUFNLFVBQVUsa0NBQWtDLENBQ2hELGlCQUFnRDtJQUVoRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUVyRSxTQUFTLDRCQUE0QixDQUNuQyxLQUFzRDtRQUV0RCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sNkJBQTZCLEdBQUcsY0FBYyxDQUNsRCw0QkFBNEIsRUFDNUIsQ0FBQyxHQUF3QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUMvQyxDQUFDO0lBQ0YsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQzlDLDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQTBDLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDVCxDQUFDO0lBQ0YsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQy9DLDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFFLENBQUMsQ0FDbEUsQ0FBQztJQUVGLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUMxQyxDQUFDLEtBQXNELEVBQUUsRUFBRSxDQUN6RCxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFDNUIsMkJBQTJCLEVBQzNCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQ3ZCLGFBQWEsR0FBRyxDQUFDLElBQUksYUFBYSxLQUFLLEtBQUs7UUFDMUMsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsYUFBYSxLQUFLLENBQUM7WUFDbkIsQ0FBQyxDQUFDLE1BQU07WUFDUixDQUFDLENBQUMsTUFBTSxDQUNmLENBQUM7SUFFRixPQUFPO1FBQ0wsNEJBQTRCO1FBQzVCLDZCQUE2QjtRQUM3Qix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLDJCQUEyQjtRQUMzQixxQkFBcUI7S0FDdEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTZWxlY3RvcnMsIExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5pbXBvcnQge1xuICBTZWxlY3RFbnRpdGllc1NlbGVjdG9ycyxcbiAgU2VsZWN0RW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgc2VsZWN0VG90YWxTZWxlY3RlZEVudGl0aWVzIH0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMudXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICBwcmV2aW91c1NlbGVjdG9yczogTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4sXG4pOiBTZWxlY3RFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+IHtcbiAgY29uc3QgeyBzZWxlY3RFbnRpdGllc01hcCwgc2VsZWN0RW50aXRpZXNUb3RhbCB9ID0gcHJldmlvdXNTZWxlY3RvcnM7XG5cbiAgZnVuY3Rpb24gc2VsZWN0RW50aXRpZXNJZHNTZWxlY3RlZE1hcChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGUsXG4gICkge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZElkcztcbiAgfVxuICBjb25zdCBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTGlzdCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRNYXAsXG4gICAgKGlkczogRGljdGlvbmFyeTxib29sZWFuPikgPT4gT2JqZWN0LmtleXMoaWRzKSxcbiAgKTtcbiAgY29uc3Qgc2VsZWN0RW50aXRpZXNTZWxlY3RlZE1hcCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRMaXN0LFxuICAgIHNlbGVjdEVudGl0aWVzTWFwLFxuICAgIChzZWxlY3RlZElkcywgZW50aXRpZXMpID0+XG4gICAgICBzZWxlY3RlZElkcy5yZWR1Y2UoKGFjdW06IHsgW2lkOiBzdHJpbmddOiBFbnRpdHkgfCB1bmRlZmluZWQgfSwgaWQpID0+IHtcbiAgICAgICAgYWN1bVtpZF0gPSBlbnRpdGllc1tpZF07XG4gICAgICAgIHJldHVybiBhY3VtO1xuICAgICAgfSwge30pLFxuICApO1xuICBjb25zdCBzZWxlY3RFbnRpdGllc1NlbGVjdGVkTGlzdCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRMaXN0LFxuICAgIHNlbGVjdEVudGl0aWVzTWFwLFxuICAgIChzZWxlY3RlZElkcywgZW50aXRpZXMpID0+IHNlbGVjdGVkSWRzLm1hcCgoaWQpID0+IGVudGl0aWVzW2lkXSEpLFxuICApO1xuXG4gIGNvbnN0IGlzQWxsRW50aXRpZXNTZWxlY3RlZCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGUpID0+XG4gICAgICBzZWxlY3RFbnRpdGllc1RvdGFsKHN0YXRlKSxcbiAgICBzZWxlY3RUb3RhbFNlbGVjdGVkRW50aXRpZXMsXG4gICAgKHRvdGFsLCB0b3RhbFNlbGVjdGVkKSA9PlxuICAgICAgdG90YWxTZWxlY3RlZCA+IDAgJiYgdG90YWxTZWxlY3RlZCA9PT0gdG90YWxcbiAgICAgICAgPyAnYWxsJ1xuICAgICAgICA6IHRvdGFsU2VsZWN0ZWQgPT09IDBcbiAgICAgICAgICA/ICdub25lJ1xuICAgICAgICAgIDogJ3NvbWUnLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0RW50aXRpZXNJZHNTZWxlY3RlZE1hcCxcbiAgICBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTGlzdCxcbiAgICBzZWxlY3RFbnRpdGllc1NlbGVjdGVkTWFwLFxuICAgIHNlbGVjdEVudGl0aWVzU2VsZWN0ZWRMaXN0LFxuICAgIHNlbGVjdFRvdGFsU2VsZWN0ZWRFbnRpdGllcyxcbiAgICBpc0FsbEVudGl0aWVzU2VsZWN0ZWQsXG4gIH07XG59XG4iXX0=","import { insertIf } from '@ngrx-traits/core';\nimport { createReducer, on } from '@ngrx/store';\nexport function createSelectEntitiesInitialState(previousInitialState) {\n return {\n ...previousInitialState,\n selectedIds: {},\n };\n}\nexport function createSelectEntitiesTraitReducer(initialState, allActions, allMutators, allConfigs) {\n const { adapter } = allConfigs.loadEntities;\n const sortRemote = allConfigs.sort?.remote;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n function updateSelectedIdsChanged(state, updates) {\n const changedIds = updates.reduce((acc, updated) => {\n const id = adapter.selectId(updated.changes);\n if (id && id !== updated.id && state.selectedIds[updated.id] != null) {\n acc.push(updated);\n return acc;\n }\n return acc;\n }, []);\n if (changedIds.length) {\n const selectedIds = { ...state.selectedIds };\n changedIds.forEach((updated) => {\n const id = adapter.selectId(updated.changes);\n const value = selectedIds[updated.id];\n delete selectedIds[updated.id];\n selectedIds[id] = value;\n });\n return { ...state, selectedIds };\n }\n return state;\n }\n return createReducer(initialState, on(allActions.selectEntities, (state, { id }) => allMutators.selectEntities(id, state)), on(allActions.deselectEntities, (state, { id }) => allMutators.deselectEntities(id, state)), on(allActions.toggleSelectEntities, (state, { id }) => allMutators.toggleSelectEntities(id, state)), on(allActions.toggleSelectAllEntities, (state) => allMutators.toggleSelectAllEntities(state)), ...insertIf(allActions.removeEntities, () => on(allActions.removeEntities, (state, { keys }) => {\n const selectedIds = { ...state.selectedIds };\n keys.forEach((v) => {\n delete selectedIds[v];\n });\n return { ...state, selectedIds };\n })), ...insertIf(allActions.updateEntities, () => on(allActions.updateEntities, (state, { updates }) => updateSelectedIdsChanged(state, updates))), on(allActions.clearEntitiesSelection, (state) => allMutators.clearEntitiesSelection(state)), ...insertIf(allActions.removeAllEntities, () => on(allActions.removeAllEntities, (state) => allMutators.clearEntitiesSelection(state))), ...insertIf(sortRemote, () => on(allActions.sortEntities, (state) => allMutators.clearEntitiesSelection(state))), ...insertIf(allActions.filterEntities, () => on(allActions.filterEntities, (state) => allMutators.clearEntitiesSelection(state))), ...insertIf(!allActions.loadEntitiesPageSuccess, () => on(allActions.loadEntitiesSuccess, (state) => allMutators.clearEntitiesSelection(state))), ...insertIf(!!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial', () => on(allActions.loadEntitiesPageSuccess, (state) => allMutators.clearEntitiesSelection(state))));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdGllcy9zZWxlY3QtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUF1QmhELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsb0JBQXlCO0lBRXpCLE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FJOUMsWUFBZSxFQUNmLFVBSzJCLEVBQzNCLFdBQTJDLEVBQzNDLFVBRWlDO0lBRWpDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBYSxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFN0QsU0FBUyx3QkFBd0IsQ0FFL0IsS0FBUSxFQUFFLE9BQXlCO1FBQ25DLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJ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QUNoRCxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDekMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUMxQyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQUksVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUM5QixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3BDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUMsQ0FDRixFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQzdDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUMxQyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQ3ZELEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUMzQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQzFDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FDVCxDQUFDLENBQUMsVUFBVSxDQUFDLHVCQUF1QixJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFDekUsR0FBRyxFQUFFLENBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9DLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUMsQ0FDSixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zZXJ0SWYgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBVcGRhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IENydWRFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIExvYWRFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgU29ydEVudGl0aWVzQWN0aW9ucyxcbiAgU29ydEVudGl0aWVzS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL3NvcnQtZW50aXRpZXMvc29ydC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBTZWxlY3RFbnRpdGllc0FjdGlvbnMsXG4gIFNlbGVjdEVudGl0aWVzTXV0YXRvcnMsXG4gIFNlbGVjdEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlbGVjdEVudGl0aWVzSW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gIHByZXZpb3VzSW5pdGlhbFN0YXRlOiBhbnksXG4pOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgc2VsZWN0ZWRJZHM6IHt9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFJlZHVjZXI8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlLFxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiBTZWxlY3RFbnRpdGllc0FjdGlvbnMgJlxuICAgIENydWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBMb2FkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIEZpbHRlckVudGl0aWVzQWN0aW9uczxhbnk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBhbGxNdXRhdG9yczogU2VsZWN0RW50aXRpZXNNdXRhdG9yczxFbnRpdHk+LFxuICBhbGxDb25maWdzOiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyAmXG4gICAgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5Pixcbikge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IGFsbENvbmZpZ3MubG9hZEVudGl0aWVzITtcbiAgY29uc3Qgc29ydFJlbW90ZSA9IGFsbENvbmZpZ3Muc29ydD8ucmVtb3RlO1xuICBjb25zdCBwYWdpbmF0aW9uQ2FjaGVUeXBlID0gYWxsQ29uZmlncy5wYWdpbmF0aW9uPy5jYWNoZVR5cGU7XG5cbiAgZnVuY3Rpb24gdXBkYXRlU2VsZWN0ZWRJZHNDaGFuZ2VkPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZSxcbiAgPihzdGF0ZTogUywgdXBkYXRlczogVXBkYXRlPEVudGl0eT5bXSkge1xuICAgIGNvbnN0IGNoYW5nZWRJZHMgPSB1cGRhdGVzLnJlZHVjZSgoYWNjLCB1cGRhdGVkKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGFkYXB0ZXIuc2VsZWN0SWQodXBkYXRlZC5jaGFuZ2VzIGFzIEVudGl0eSk7XG4gICAgICBpZiAoaWQgJiYgaWQgIT09IHVwZGF0ZWQuaWQgJiYgc3RhdGUuc2VsZWN0ZWRJZHNbdXBkYXRlZC5pZF0gIT0gbnVsbCkge1xuICAgICAgICBhY2MucHVzaCh1cGRhdGVkKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgVXBkYXRlPEVudGl0eT5bXSk7XG4gICAgaWYgKGNoYW5nZWRJZHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHsgLi4uc3RhdGUuc2VsZWN0ZWRJZHMgfTtcbiAgICAgIGNoYW5nZWRJZHMuZm9yRWFjaCgodXBkYXRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGFkYXB0ZXIuc2VsZWN0SWQodXBkYXRlZC5jaGFuZ2VzIGFzIEVudGl0eSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0ZWRJZHNbdXBkYXRlZC5pZF07XG4gICAgICAgIGRlbGV0ZSBzZWxlY3RlZElkc1t1cGRhdGVkLmlkXTtcbiAgICAgICAgc2VsZWN0ZWRJZHNbaWRdID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZElkcyB9O1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLnNlbGVjdEVudGl0aWVzLCAoc3RhdGUsIHsgaWQgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnNlbGVjdEVudGl0aWVzKGlkLCBzdGF0ZSksXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLmRlc2VsZWN0RW50aXRpZXMsIChzdGF0ZSwgeyBpZCB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMuZGVzZWxlY3RFbnRpdGllcyhpZCwgc3RhdGUpLFxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy50b2dnbGVTZWxlY3RFbnRpdGllcywgKHN0YXRlLCB7IGlkIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy50b2dnbGVTZWxlY3RFbnRpdGllcyhpZCwgc3RhdGUpLFxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy50b2dnbGVTZWxlY3RBbGxFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgYWxsTXV0YXRvcnMudG9nZ2xlU2VsZWN0QWxsRW50aXRpZXMoc3RhdGUpLFxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy5yZW1vdmVFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMucmVtb3ZlRW50aXRpZXMsIChzdGF0ZSwgeyBrZXlzIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB7IC4uLnN0YXRlLnNlbGVjdGVkSWRzIH07XG4gICAgICAgIGtleXMuZm9yRWFjaCgodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgZGVsZXRlIHNlbGVjdGVkSWRzW3ZdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkSWRzIH07XG4gICAgICB9KSxcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KGFsbEFjdGlvbnMudXBkYXRlRW50aXRpZXMsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLnVwZGF0ZUVudGl0aWVzLCAoc3RhdGUsIHsgdXBkYXRlcyB9KSA9PlxuICAgICAgICB1cGRhdGVTZWxlY3RlZElkc0NoYW5nZWQoc3RhdGUsIHVwZGF0ZXMpLFxuICAgICAgKSxcbiAgICApLFxuICAgIG9uKGFsbEFjdGlvbnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbiwgKHN0YXRlKSA9PlxuICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSksXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVBbGxFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5jbGVhckVudGl0aWVzU2VsZWN0aW9uKHN0YXRlKSxcbiAgICAgICksXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihzb3J0UmVtb3RlLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5zb3J0RW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSksXG4gICAgICApLFxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy5maWx0ZXJFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMuZmlsdGVyRW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSksXG4gICAgICApLFxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1N1Y2Nlc3MsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSksXG4gICAgICApLFxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oXG4gICAgICAhIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MgJiYgcGFnaW5hdGlvbkNhY2hlVHlwZSA9PT0gJ3BhcnRpYWwnLFxuICAgICAgKCkgPT5cbiAgICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcywgKHN0YXRlKSA9PlxuICAgICAgICAgIGFsbE11dGF0b3JzLmNsZWFyRW50aXRpZXNTZWxlY3Rpb24oc3RhdGUpLFxuICAgICAgICApLFxuICAgICksXG4gICk7XG59XG4iXX0=","import { toMap } from '@ngrx-traits/core';\nimport { clearEntitiesSelection, deselectEntities, selectEntities, toggleSelectEntities, } from './select-entities.utils';\nexport function createSelectEntitiesTraitMutators({ isAllEntitiesSelected, }) {\n function toggleSelectAllEntities(state) {\n const allSelected = isAllEntitiesSelected(state);\n if (allSelected === 'all') {\n return {\n ...state,\n selectedIds: {},\n };\n }\n else {\n return {\n ...state,\n selectedIds: toMap(state.ids),\n };\n }\n }\n return {\n selectEntities,\n deselectEntities,\n toggleSelectEntities,\n toggleSelectAllEntities,\n clearEntitiesSelection,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsb0JBQW9CLEdBQ3JCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsTUFBTSxVQUFVLGlDQUFpQyxDQUFTLEVBQ3hELHFCQUFxQixHQUNXO0lBQ2hDLFNBQVMsdUJBQXVCLENBRTlCLEtBQVE7UUFDUixNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDOUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLHVCQUF1QjtRQUN2QixzQkFBc0I7S0FDdkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZWxlY3RFbnRpdGllc011dGF0b3JzLFxuICBTZWxlY3RFbnRpdGllc1NlbGVjdG9ycyxcbiAgU2VsZWN0RW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgdG9NYXAgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQge1xuICBjbGVhckVudGl0aWVzU2VsZWN0aW9uLFxuICBkZXNlbGVjdEVudGl0aWVzLFxuICBzZWxlY3RFbnRpdGllcyxcbiAgdG9nZ2xlU2VsZWN0RW50aXRpZXMsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnV0aWxzJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0TXV0YXRvcnM8RW50aXR5Pih7XG4gIGlzQWxsRW50aXRpZXNTZWxlY3RlZCxcbn06IFNlbGVjdEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4pOiBTZWxlY3RFbnRpdGllc011dGF0b3JzPEVudGl0eT4ge1xuICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGxFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbiAgPihzdGF0ZTogUyk6IFMge1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gaXNBbGxFbnRpdGllc1NlbGVjdGVkKHN0YXRlKTtcbiAgICBpZiAoYWxsU2VsZWN0ZWQgPT09ICdhbGwnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRJZHM6IHt9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkSWRzOiB0b01hcChzdGF0ZS5pZHMpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0aWVzLFxuICAgIGRlc2VsZWN0RW50aXRpZXMsXG4gICAgdG9nZ2xlU2VsZWN0RW50aXRpZXMsXG4gICAgdG9nZ2xlU2VsZWN0QWxsRW50aXRpZXMsXG4gICAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbixcbiAgfTtcbn1cbiJdfQ==","import { createSelectEntitiesTraitActions } from './select-entities.trait.actions';\nimport { createSelectEntitiesTraitSelectors } from './select-entities.trait.selectors';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createSelectEntitiesInitialState, createSelectEntitiesTraitReducer, } from './select-entities.trait.reducer';\nimport { createSelectEntitiesTraitMutators } from './select-entities.trait.mutators';\n/**\n * Generates ngrx code to add multi selection to a list\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,MultipleSelectionState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSelectEntitiesTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // selectedIds: Dictionary<boolean>;\n *\n * // generated actions\n * traits.actions.selectTodos({id})\n * traits.actions.deselectTodos({id})\n * traits.actions.toggleSectTodos({id})\n * traits.actions.toggleSelectAllTodos()\n * traits.actions.clearTodosSelection()\n * //generated selectors\n * traits.selectors.isAllTodosSelected()\n * traits.selectors.selectTodosIdsSelectedMap()\n * traits.selectors.selectTodosIdsSelectedList()\n * traits.selectors.selectTodosSelectedMap()\n * traits.selectors.selectTodosSelectedList()\n * traits.selectors.selectTotalSelectedTodos()\n */\nexport function addSelectEntitiesTrait() {\n return createTraitFactory({\n key: 'SelectEntities',\n depends: [loadEntitiesTraitKey],\n actions: ({ actionsGroupKey, entitiesName }) => createSelectEntitiesTraitActions(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors }) => createSelectEntitiesTraitSelectors(previousSelectors),\n initialState: ({ previousInitialState }) => createSelectEntitiesInitialState(previousInitialState),\n mutators: ({ allSelectors }) => createSelectEntitiesTraitMutators(allSelectors),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) => createSelectEntitiesTraitReducer(initialState, allActions, allMutators, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBU3ZGLE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3JGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLGdCQUFnQjtRQUNyQixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQTZCLEVBQUUsRUFBRSxDQUN4RSxnQ0FBZ0MsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDO1FBQ2pFLFNBQVMsRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQStCLEVBQUUsRUFBRSxDQUNoRSxrQ0FBa0MsQ0FDaEMsaUJBQWtELENBQ25EO1FBQ0gsWUFBWSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsRUFBa0MsRUFBRSxFQUFFLENBQ3pFLGdDQUFnQyxDQUFTLG9CQUFvQixDQUFDO1FBQ2hFLFFBQVEsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFtQyxFQUFFLEVBQUUsQ0FDOUQsaUNBQWlDLENBQy9CLFlBQStDLENBQ2hEO1FBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQ2pFLGdDQUFnQyxDQUM5QixZQUFZLEVBQ1osVUFLMkIsRUFDM0IsV0FBVyxFQUNYLFVBRWlDLENBQ2xDO0tBQ0osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNlbGVjdEVudGl0aWVzVHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMudHJhaXQuYWN0aW9ucyc7XG5pbXBvcnQgeyBTb3J0RW50aXRpZXNBY3Rpb25zLCBTb3J0RW50aXRpZXNLZXllZENvbmZpZyB9IGZyb20gJy4uL3NvcnQtZW50aXRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFNlbGVjdG9ycyB9IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycyc7XG5pbXBvcnQge1xuICBTZWxlY3RFbnRpdGllc1NlbGVjdG9ycyxcbiAgU2VsZWN0RW50aXRpZXNBY3Rpb25zLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTZWxlY3RvcnMsXG4gIGxvYWRFbnRpdGllc1RyYWl0S2V5LFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlVHJhaXRGYWN0b3J5IH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgQ3J1ZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4uL2NydWQtZW50aXRpZXMvY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBjcmVhdGVTZWxlY3RFbnRpdGllc0luaXRpYWxTdGF0ZSxcbiAgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFJlZHVjZXIsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnRyYWl0LnJlZHVjZXInO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdE11dGF0b3JzIH0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMudHJhaXQubXV0YXRvcnMnO1xuaW1wb3J0IHsgRmlsdGVyRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vZmlsdGVyLWVudGl0aWVzJztcbmltcG9ydCB7XG4gIFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcsXG4gIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRTZWxlY3RvcnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFN0YXRlTXV0YXRvcnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSB0byBhZGQgbXVsdGkgc2VsZWN0aW9uIHRvIGEgbGlzdFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZm9sbG93aW5nIHRyYWl0IGNvbmZpZ1xuICpcbiAqIGV4cG9ydCBpbnRlcmZhY2UgVGVzdFN0YXRlXG4gKiBleHRlbmRzIEVudGl0eUFuZFN0YXR1c1N0YXRlPFRvZG8+LE11bHRpcGxlU2VsZWN0aW9uU3RhdGV7fVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkTG9hZEVudGl0aWVzVHJhaXQ8VG9kbz4oKSxcbiAqICAgICAgYWRkU2VsZWN0RW50aXRpZXNUcmFpdDxUb2RvPigpXG4gKiAgICApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnW1RvZG9zXScsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFRlc3RTdGF0ZT4+KFxuICogICAgICAgICd0b2RvcycsXG4gKiAgICAgICksXG4gKiAgICB9KTtcbiAqXG4gKiAvLyAgIGFkZHMgZm9sbG93aW5nIHByb3BzIHRvIHRoZSBzdGF0ZTpcbiAqIC8vICAgIHNlbGVjdGVkSWRzOiBEaWN0aW9uYXJ5PGJvb2xlYW4+O1xuICpcbiAqIC8vIGdlbmVyYXRlZCBhY3Rpb25zXG4gKiB0cmFpdHMuYWN0aW9ucy5zZWxlY3RUb2Rvcyh7aWR9KVxuICogdHJhaXRzLmFjdGlvbnMuZGVzZWxlY3RUb2Rvcyh7aWR9KVxuICogdHJhaXRzLmFjdGlvbnMudG9nZ2xlU2VjdFRvZG9zKHtpZH0pXG4gKiB0cmFpdHMuYWN0aW9ucy50b2dnbGVTZWxlY3RBbGxUb2RvcygpXG4gKiB0cmFpdHMuYWN0aW9ucy5jbGVhclRvZG9zU2VsZWN0aW9uKClcbiAqIC8vZ2VuZXJhdGVkIHNlbGVjdG9yc1xuICogdHJhaXRzLnNlbGVjdG9ycy5pc0FsbFRvZG9zU2VsZWN0ZWQoKVxuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2Rvc0lkc1NlbGVjdGVkTWFwKClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NJZHNTZWxlY3RlZExpc3QoKVxuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2Rvc1NlbGVjdGVkTWFwKClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NTZWxlY3RlZExpc3QoKVxuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb3RhbFNlbGVjdGVkVG9kb3MoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VsZWN0RW50aXRpZXNUcmFpdDxFbnRpdHk+KCkge1xuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6ICdTZWxlY3RFbnRpdGllcycsXG4gICAgZGVwZW5kczogW2xvYWRFbnRpdGllc1RyYWl0S2V5XSxcbiAgICBhY3Rpb25zOiAoeyBhY3Rpb25zR3JvdXBLZXksIGVudGl0aWVzTmFtZSB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdEFjdGlvbnMoYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUpLFxuICAgIHNlbGVjdG9yczogKHsgcHJldmlvdXNTZWxlY3RvcnMgfTogVHJhaXRTZWxlY3RvcnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICAgICAgICBwcmV2aW91c1NlbGVjdG9ycyBhcyBMb2FkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PlxuICAgICAgKSxcbiAgICBpbml0aWFsU3RhdGU6ICh7IHByZXZpb3VzSW5pdGlhbFN0YXRlIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0aWVzSW5pdGlhbFN0YXRlPEVudGl0eT4ocHJldmlvdXNJbml0aWFsU3RhdGUpLFxuICAgIG11dGF0b3JzOiAoeyBhbGxTZWxlY3RvcnMgfTogVHJhaXRTdGF0ZU11dGF0b3JzRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0aWVzVHJhaXRNdXRhdG9yczxFbnRpdHk+KFxuICAgICAgICBhbGxTZWxlY3RvcnMgYXMgU2VsZWN0RW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PlxuICAgICAgKSxcbiAgICByZWR1Y2VyOiAoeyBpbml0aWFsU3RhdGUsIGFsbEFjdGlvbnMsIGFsbE11dGF0b3JzLCBhbGxDb25maWdzIH0pID0+XG4gICAgICBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0UmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxBY3Rpb25zIGFzIFNlbGVjdEVudGl0aWVzQWN0aW9ucyAmXG4gICAgICAgICAgQ3J1ZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBTb3J0RW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgRmlsdGVyRW50aXRpZXNBY3Rpb25zPGFueT4gJlxuICAgICAgICAgIEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMsXG4gICAgICAgIGFsbE11dGF0b3JzLFxuICAgICAgICBhbGxDb25maWdzIGFzIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgICAgICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnICZcbiAgICAgICAgICBTb3J0RW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==","import { createAction, props } from '@ngrx/store';\nexport function createSelectEntityTraitActions(actionsGroupKey, entityName) {\n return {\n selectEntity: createAction(`${actionsGroupKey} Select ${entityName}`, props()),\n deselectEntity: createAction(`${actionsGroupKey} Deselect ${entityName}`),\n toggleSelectEntity: createAction(`${actionsGroupKey} Toggle Select ${entityName}`, props()),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXR5L3NlbGVjdC1lbnRpdHkudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLGVBQXVCLEVBQ3ZCLFVBQWtCO0lBRWxCLE9BQU87UUFDTCxZQUFZLEVBQUUsWUFBWSxDQUN4QixHQUFHLGVBQWUsV0FBVyxVQUFVLEVBQUUsRUFDekMsS0FBSyxFQUEyQixDQUNqQztRQUNELGNBQWMsRUFBRSxZQUFZLENBQUMsR0FBRyxlQUFlLGFBQWEsVUFBVSxFQUFFLENBQUM7UUFDekUsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixHQUFHLGVBQWUsa0JBQWtCLFVBQVUsRUFBRSxFQUNoRCxLQUFLLEVBQTJCLENBQ2pDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU2VsZWN0RW50aXR5QWN0aW9ucyB9IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdEFjdGlvbnMoXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdHlOYW1lOiBzdHJpbmdcbik6IFNlbGVjdEVudGl0eUFjdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0eTogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBTZWxlY3QgJHtlbnRpdHlOYW1lfWAsXG4gICAgICBwcm9wczx7IGlkOiBzdHJpbmcgfCBudW1iZXIgfT4oKVxuICAgICksXG4gICAgZGVzZWxlY3RFbnRpdHk6IGNyZWF0ZUFjdGlvbihgJHthY3Rpb25zR3JvdXBLZXl9IERlc2VsZWN0ICR7ZW50aXR5TmFtZX1gKSxcbiAgICB0b2dnbGVTZWxlY3RFbnRpdHk6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVG9nZ2xlIFNlbGVjdCAke2VudGl0eU5hbWV9YCxcbiAgICAgIHByb3BzPHsgaWQ6IHN0cmluZyB8IG51bWJlciB9PigpXG4gICAgKSxcbiAgfTtcbn1cbiJdfQ==","export function createSelectEntityTraitSelectors() {\n function selectEntityIdSelected(state) {\n return state.selectedId;\n }\n function selectEntitySelected(state) {\n return (state.selectedId && state.entities[state.selectedId]) || undefined;\n }\n return {\n selectEntityIdSelected,\n selectEntitySelected,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdHkvc2VsZWN0LWVudGl0eS50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxVQUFVLGdDQUFnQztJQUc5QyxTQUFTLHNCQUFzQixDQUFDLEtBQXdCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsU0FBUyxvQkFBb0IsQ0FDM0IsS0FBb0Q7UUFFcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUVELE9BQU87UUFDTCxzQkFBc0I7UUFDdEIsb0JBQW9CO0tBQ3JCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VsZWN0RW50aXR5U2VsZWN0b3JzLFxuICBTZWxlY3RFbnRpdHlTdGF0ZSxcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFNlbGVjdG9yczxcbiAgRW50aXR5XG4+KCk6IFNlbGVjdEVudGl0eVNlbGVjdG9yczxFbnRpdHk+IHtcbiAgZnVuY3Rpb24gc2VsZWN0RW50aXR5SWRTZWxlY3RlZChzdGF0ZTogU2VsZWN0RW50aXR5U3RhdGUpIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRJZDtcbiAgfVxuICBmdW5jdGlvbiBzZWxlY3RFbnRpdHlTZWxlY3RlZDxFbnRpdHk+KFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXR5U3RhdGVcbiAgKSB7XG4gICAgcmV0dXJuIChzdGF0ZS5zZWxlY3RlZElkICYmIHN0YXRlLmVudGl0aWVzW3N0YXRlLnNlbGVjdGVkSWRdKSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0eUlkU2VsZWN0ZWQsXG4gICAgc2VsZWN0RW50aXR5U2VsZWN0ZWQsXG4gIH07XG59XG4iXX0=","import { createReducer, on } from '@ngrx/store';\nimport { insertIf } from '@ngrx-traits/core';\nexport function createSelectEntityInitialState(previousInitialState, allConfigs) {\n const selectedId = allConfigs.singleSelection?.selectedId;\n return {\n ...previousInitialState,\n selectedId,\n };\n}\nexport function createSelectEntityTraitReducer(initialState, allActions, allMutators, allConfigs) {\n const { adapter } = allConfigs.loadEntities;\n const sortRemote = allConfigs.sort?.remote;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n return createReducer(initialState, on(allActions.selectEntity, (state, { id }) => allMutators.selectEntity(id, state)), on(allActions.deselectEntity, (state) => allMutators.deselectEntity(state)), on(allActions.toggleSelectEntity, (state, { id }) => allMutators.toggleSelectEntity(id, state)), ...insertIf(allActions.removeAllEntities, () => on(allActions.removeAllEntities, (state) => allMutators.deselectEntity(state))), ...insertIf(sortRemote, () => on(allActions.sortEntities, (state) => allMutators.deselectEntity(state))), ...insertIf(allActions.filterEntities, () => on(allActions.filterEntities, (state) => allMutators.deselectEntity(state))), ...insertIf(!allActions.loadEntitiesPageSuccess, () => on(allActions.loadEntitiesSuccess, (state) => allMutators.deselectEntity(state))), ...insertIf(!!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial', () => on(allActions.loadEntitiesPageSuccess, (state) => allMutators.deselectEntity(state))), ...insertIf(allActions.removeEntities, () => on(allActions.removeEntities, (state, { keys }) => {\n const shouldDeselect = keys.some((v) => v === state.selectedId);\n return shouldDeselect\n ? {\n ...state,\n selectedId: undefined,\n }\n : state;\n })), ...insertIf(allActions.updateEntities, () => on(allActions.updateEntities, (state, { updates }) => {\n const change = updates.find((updated) => {\n const id = adapter.selectId(updated.changes);\n return id && id !== updated.id && state.selectedId === updated.id;\n });\n return change\n ? {\n ...state,\n selectedId: adapter.selectId(change.changes),\n }\n : state;\n })));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXR5L3NlbGVjdC1lbnRpdHkudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlCaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTdDLE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsb0JBQXlCLEVBQ3pCLFVBQW1DO0lBRW5DLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQzFELE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixVQUFVO0tBQ1gsQ0FBQztBQUNKLENBQUM7QUFDRCxNQUFNLFVBQVUsOEJBQThCLENBSTVDLFlBQWUsRUFDZixVQUs2QixFQUM3QixXQUF5QyxFQUN6QyxVQUdpQztJQUVqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDLFlBQWEsQ0FBQztJQUU3QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUMzQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO0lBRTdELE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQzVDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUNwQyxFQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzNFLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ2xELFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQzFDLEVBQ0QsR0FBRyxRQUFRLENBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUNoRCxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDekMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FDbEMsQ0FDRixFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDMUUsRUFDRCxHQUFHLFFBQVEsQ0FBSSxVQUFVLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUM3QyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3RDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FDdkQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQzNDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FDVCxDQUFDLENBQUMsVUFBVSxDQUFDLHVCQUF1QixJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFDekUsR0FBRyxFQUFFLENBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9DLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQ0osRUFDRCxHQUFHLFFBQVEsQ0FBSSxVQUFVLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUM3QyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDOUIsQ0FBQyxDQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FDL0MsQ0FBQztRQUNGLE9BQU8sY0FBYztZQUNuQixDQUFDLENBQUM7Z0JBQ0UsR0FBRyxLQUFLO2dCQUNSLFVBQVUsRUFBRSxTQUFTO2FBQ3RCO1lBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUNILEVBQ0QsR0FBRyxRQUFRLENBQUksVUFBVSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FDN0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ25ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFpQixDQUFDLENBQUM7WUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNO1lBQ1gsQ0FBQyxDQUFDO2dCQUNFLEdBQUcsS0FBSztnQkFDUixVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBaUIsQ0FBQzthQUN2RDtZQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNBY3Rpb25zLFxuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBTb3J0RW50aXRpZXNBY3Rpb25zLFxuICBTb3J0RW50aXRpZXNLZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFNlbGVjdEVudGl0eUFjdGlvbnMsXG4gIFNlbGVjdEVudGl0eUtleWVkQ29uZmlnLFxuICBTZWxlY3RFbnRpdHlNdXRhdG9ycyxcbiAgU2VsZWN0RW50aXR5U3RhdGUsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGluc2VydElmIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9zZWxlY3QtZW50aXR5LnRyYWl0LmFjdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXR5SW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gIHByZXZpb3VzSW5pdGlhbFN0YXRlOiBhbnksXG4gIGFsbENvbmZpZ3M6IFNlbGVjdEVudGl0eUtleWVkQ29uZmlnXG4pOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXR5U3RhdGUge1xuICBjb25zdCBzZWxlY3RlZElkID0gYWxsQ29uZmlncy5zaW5nbGVTZWxlY3Rpb24/LnNlbGVjdGVkSWQ7XG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgc2VsZWN0ZWRJZCxcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFJlZHVjZXI8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiBTZWxlY3RFbnRpdHlBY3Rpb25zICZcbiAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIFNvcnRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyAmXG4gICAgRmlsdGVyRW50aXRpZXNBY3Rpb25zPGFueT4gJlxuICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgYWxsTXV0YXRvcnM6IFNlbGVjdEVudGl0eU11dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IFNlbGVjdEVudGl0eUtleWVkQ29uZmlnICZcbiAgICBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyAmXG4gICAgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gYWxsQ29uZmlncy5sb2FkRW50aXRpZXMhO1xuXG4gIGNvbnN0IHNvcnRSZW1vdGUgPSBhbGxDb25maWdzLnNvcnQ/LnJlbW90ZTtcbiAgY29uc3QgcGFnaW5hdGlvbkNhY2hlVHlwZSA9IGFsbENvbmZpZ3MucGFnaW5hdGlvbj8uY2FjaGVUeXBlO1xuXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLnNlbGVjdEVudGl0eSwgKHN0YXRlLCB7IGlkIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy5zZWxlY3RFbnRpdHkoaWQsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy5kZXNlbGVjdEVudGl0eSwgKHN0YXRlKSA9PiBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSkpLFxuICAgIG9uKGFsbEFjdGlvbnMudG9nZ2xlU2VsZWN0RW50aXR5LCAoc3RhdGUsIHsgaWQgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnRvZ2dsZVNlbGVjdEVudGl0eShpZCwgc3RhdGUpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVBbGxFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KHNvcnRSZW1vdGUsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLnNvcnRFbnRpdGllcywgKHN0YXRlKSA9PiBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSkpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLmZpbHRlckVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5maWx0ZXJFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KCFhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgIGFsbE11dGF0b3JzLmRlc2VsZWN0RW50aXR5KHN0YXRlKVxuICAgICAgKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oXG4gICAgICAhIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MgJiYgcGFnaW5hdGlvbkNhY2hlVHlwZSA9PT0gJ3BhcnRpYWwnLFxuICAgICAgKCkgPT5cbiAgICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcywgKHN0YXRlKSA9PlxuICAgICAgICAgIGFsbE11dGF0b3JzLmRlc2VsZWN0RW50aXR5KHN0YXRlKVxuICAgICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVFbnRpdGllcywgKHN0YXRlLCB7IGtleXMgfSkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGREZXNlbGVjdCA9IGtleXMuc29tZShcbiAgICAgICAgICAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB2ID09PSBzdGF0ZS5zZWxlY3RlZElkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzaG91bGREZXNlbGVjdFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogc3RhdGU7XG4gICAgICB9KVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy51cGRhdGVFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMudXBkYXRlRW50aXRpZXMsIChzdGF0ZSwgeyB1cGRhdGVzIH0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlID0gdXBkYXRlcy5maW5kKCh1cGRhdGVkKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBhZGFwdGVyLnNlbGVjdElkKHVwZGF0ZWQuY2hhbmdlcyBhcyBFbnRpdHkpO1xuICAgICAgICAgIHJldHVybiBpZCAmJiBpZCAhPT0gdXBkYXRlZC5pZCAmJiBzdGF0ZS5zZWxlY3RlZElkID09PSB1cGRhdGVkLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNoYW5nZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZDogYWRhcHRlci5zZWxlY3RJZChjaGFuZ2UuY2hhbmdlcyBhcyBFbnRpdHkpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogc3RhdGU7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cbiJdfQ==","export function createSelectEntityTraitMutators() {\n function selectEntity(id, state) {\n return {\n ...state,\n selectedId: id,\n };\n }\n function deselectEntity(state) {\n return {\n ...state,\n selectedId: undefined,\n };\n }\n function toggleSelectEntity(id, state) {\n return {\n ...state,\n selectedId: state.selectedId === id ? undefined : id,\n };\n }\n return {\n selectEntity,\n deselectEntity,\n toggleSelectEntity,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5LnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSwrQkFBK0I7SUFHN0MsU0FBUyxZQUFZLENBRW5CLEVBQW1CLEVBQUUsS0FBUTtRQUM3QixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUNELFNBQVMsY0FBYyxDQUVyQixLQUFRO1FBQ1IsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLFVBQVUsRUFBRSxTQUFTO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBQ0QsU0FBUyxrQkFBa0IsQ0FFekIsRUFBbUIsRUFBRSxLQUFRO1FBQzdCLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxZQUFZO1FBQ1osY0FBYztRQUNkLGtCQUFrQjtLQUNuQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEVudGl0eU11dGF0b3JzLCBTZWxlY3RFbnRpdHlTdGF0ZSB9IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRNdXRhdG9yczxcbiAgRW50aXR5XG4+KCk6IFNlbGVjdEVudGl0eU11dGF0b3JzPEVudGl0eT4ge1xuICBmdW5jdGlvbiBzZWxlY3RFbnRpdHk8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuICA+KGlkOiBzdHJpbmcgfCBudW1iZXIsIHN0YXRlOiBTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0ZWRJZDogaWQsXG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBkZXNlbGVjdEVudGl0eTxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0eVN0YXRlXG4gID4oc3RhdGU6IFMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3RlZElkOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RFbnRpdHk8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuICA+KGlkOiBzdHJpbmcgfCBudW1iZXIsIHN0YXRlOiBTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0ZWRJZDogc3RhdGUuc2VsZWN0ZWRJZCA9PT0gaWQgPyB1bmRlZmluZWQgOiBpZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RFbnRpdHksXG4gICAgZGVzZWxlY3RFbnRpdHksXG4gICAgdG9nZ2xlU2VsZWN0RW50aXR5LFxuICB9O1xufVxuIl19","import { createTraitFactory, } from '@ngrx-traits/core';\nimport { createSelectEntityTraitActions } from './select-entity.trait.actions';\nimport { createSelectEntityTraitSelectors } from './select-entity.trait.selectors';\nimport { createSelectEntityInitialState, createSelectEntityTraitReducer, } from './select-entity.trait.reducer';\nimport { createSelectEntityTraitMutators } from './select-entity.trait.mutators';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\n/**\n * Generates ngrx code to add single selection to a list\n * @param config\n * @param config.selectedId - Default selected id\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,SelectEntityState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSelectEntityTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // selectedId?: number | string;\n *\n * // generated actions\n * traits.actions.selectTodo({id})\n * traits.actions.deselectTodo()\n * traits.actions.toggleSelectTodo({id})\n * //generated selectors\n * traits.selectors.selectTodoIdSelected()\n * traits.selectors.selectTodoSelected()\n */\nexport function addSelectEntityTrait(config) {\n return createTraitFactory({\n key: 'singleSelection',\n depends: [loadEntitiesTraitKey],\n config,\n actions: ({ actionsGroupKey, entityName }) => createSelectEntityTraitActions(actionsGroupKey, entityName),\n selectors: () => createSelectEntityTraitSelectors(),\n mutators: () => createSelectEntityTraitMutators(),\n initialState: ({ previousInitialState, allConfigs, }) => createSelectEntityInitialState(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) => createSelectEntityTraitReducer(initialState, allActions, allMutators, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsR0FHbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRixPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLDhCQUE4QixHQUMvQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pGLE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQztBQWlCOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFTLE1BQTJCO0lBQ3RFLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLGlCQUFpQjtRQUN0QixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUMvQixNQUFNO1FBQ04sT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUE2QixFQUFFLEVBQUUsQ0FDdEUsOEJBQThCLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQztRQUM3RCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLEVBQVU7UUFDM0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLCtCQUErQixFQUFFO1FBQ2pELFlBQVksRUFBRSxDQUFDLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsR0FDcUIsRUFBRSxFQUFFLENBQ25DLDhCQUE4QixDQUM1QixvQkFBb0IsRUFDcEIsVUFBcUMsQ0FDdEM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FDakUsOEJBQThCLENBQzVCLFlBQVksRUFDWixVQUs2QixFQUM3QixXQUFXLEVBQ1gsVUFHaUMsQ0FDbEM7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlVHJhaXRGYWN0b3J5LFxuICBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcblxuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9zZWxlY3QtZW50aXR5LnRyYWl0LmFjdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRTZWxlY3RvcnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdHkudHJhaXQuc2VsZWN0b3JzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVNlbGVjdEVudGl0eUluaXRpYWxTdGF0ZSxcbiAgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRSZWR1Y2VyLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdHkudHJhaXQucmVkdWNlcic7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdE11dGF0b3JzIH0gZnJvbSAnLi9zZWxlY3QtZW50aXR5LnRyYWl0Lm11dGF0b3JzJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBsb2FkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFNvcnRFbnRpdGllc0FjdGlvbnMsXG4gIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9zb3J0LWVudGl0aWVzL3NvcnQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgU2VsZWN0RW50aXR5QWN0aW9ucyxcbiAgU2VsZWN0RW50aXR5Q29uZmlnLFxuICBTZWxlY3RFbnRpdHlLZXllZENvbmZpZyxcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IENydWRFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBuZ3J4IGNvZGUgdG8gYWRkIHNpbmdsZSBzZWxlY3Rpb24gdG8gYSBsaXN0XG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcGFyYW0gY29uZmlnLnNlbGVjdGVkSWQgLSBEZWZhdWx0IHNlbGVjdGVkIGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKlxuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgRW50aXR5QW5kU3RhdHVzU3RhdGU8VG9kbz4sU2VsZWN0RW50aXR5U3RhdGV7fVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkTG9hZEVudGl0aWVzVHJhaXQ8VG9kbz4oKSxcbiAqICAgICAgYWRkU2VsZWN0RW50aXR5VHJhaXQ8VG9kbz4oKVxuICogICAgKSh7XG4gKiAgICAgIGFjdGlvbnNHcm91cEtleTogJ1tUb2Rvc10nLFxuICogICAgICBmZWF0dXJlU2VsZWN0b3I6IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxUZXN0U3RhdGU+PihcbiAqICAgICAgICAndG9kb3MnLFxuICogICAgICApLFxuICogICAgfSk7XG4gKlxuICogLy8gICBhZGRzIGZvbGxvd2luZyBwcm9wcyB0byB0aGUgc3RhdGU6XG4gKiAvLyAgICAgc2VsZWN0ZWRJZD86IG51bWJlciB8IHN0cmluZztcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuc2VsZWN0VG9kbyh7aWR9KVxuICogdHJhaXRzLmFjdGlvbnMuZGVzZWxlY3RUb2RvKClcbiAqIHRyYWl0cy5hY3Rpb25zLnRvZ2dsZVNlbGVjdFRvZG8oe2lkfSlcbiAqIC8vZ2VuZXJhdGVkIHNlbGVjdG9yc1xuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2RvSWRTZWxlY3RlZCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9TZWxlY3RlZCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZWxlY3RFbnRpdHlUcmFpdDxFbnRpdHk+KGNvbmZpZz86IFNlbGVjdEVudGl0eUNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6ICdzaW5nbGVTZWxlY3Rpb24nLFxuICAgIGRlcGVuZHM6IFtsb2FkRW50aXRpZXNUcmFpdEtleV0sXG4gICAgY29uZmlnLFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSwgZW50aXR5TmFtZSB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRBY3Rpb25zKGFjdGlvbnNHcm91cEtleSwgZW50aXR5TmFtZSksXG4gICAgc2VsZWN0b3JzOiAoKSA9PiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFNlbGVjdG9yczxFbnRpdHk+KCksXG4gICAgbXV0YXRvcnM6ICgpID0+IGNyZWF0ZVNlbGVjdEVudGl0eVRyYWl0TXV0YXRvcnMoKSxcbiAgICBpbml0aWFsU3RhdGU6ICh7XG4gICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICAgIGFsbENvbmZpZ3MsXG4gICAgfTogVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlU2VsZWN0RW50aXR5SW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gICAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxDb25maWdzIGFzIFNlbGVjdEVudGl0eUtleWVkQ29uZmlnXG4gICAgICApLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucywgYWxsTXV0YXRvcnMsIGFsbENvbmZpZ3MgfSkgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0eVRyYWl0UmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxBY3Rpb25zIGFzIFNlbGVjdEVudGl0eUFjdGlvbnMgJlxuICAgICAgICAgIENydWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zICZcbiAgICAgICAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8YW55PiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+LFxuICAgICAgICBhbGxNdXRhdG9ycyxcbiAgICAgICAgYWxsQ29uZmlncyBhcyBTZWxlY3RFbnRpdHlLZXllZENvbmZpZyAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcgJlxuICAgICAgICAgIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbiAgICAgICksXG4gIH0pO1xufVxuIl19","export const selectEntityTraitKey = 'singleSelection';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlEQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWVkQ29uZmlnIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgTG9hZEVudGl0aWVzU3RhdGUgfSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEVudGl0eVN0YXRlIHtcbiAgc2VsZWN0ZWRJZD86IG51bWJlciB8IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2VsZWN0RW50aXR5QWN0aW9ucyA9IHtcbiAgc2VsZWN0RW50aXR5OiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHsgaWQ6IG51bWJlciB8IHN0cmluZyB9KSA9PiB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSAmIEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIGRlc2VsZWN0RW50aXR5OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xuICB0b2dnbGVTZWxlY3RFbnRpdHk6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczogeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0pID0+IHsgaWQ6IG51bWJlciB8IHN0cmluZyB9ICYgQWN0aW9uPHN0cmluZz5cbiAgPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0eVNlbGVjdG9yczxUPiA9IHtcbiAgc2VsZWN0RW50aXR5SWRTZWxlY3RlZDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIFNlbGVjdEVudGl0eVN0YXRlLFxuICApID0+IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2VsZWN0RW50aXR5U2VsZWN0ZWQ6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTZWxlY3RFbnRpdHlTdGF0ZSxcbiAgKSA9PiBUIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0RW50aXR5TXV0YXRvcnM8VD4gPSB7XG4gIHNlbGVjdEVudGl0eTxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTZWxlY3RFbnRpdHlTdGF0ZT4oXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBzdGF0ZTogUyxcbiAgKTogUztcbiAgZGVzZWxlY3RFbnRpdHk8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgU2VsZWN0RW50aXR5U3RhdGU+KFxuICAgIHN0YXRlOiBTLFxuICApOiBTO1xuICB0b2dnbGVTZWxlY3RFbnRpdHk8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgU2VsZWN0RW50aXR5U3RhdGU+KFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEVudGl0eUNvbmZpZyB7XG4gIHNlbGVjdGVkSWQ/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RFbnRpdHlUcmFpdEtleSA9ICdzaW5nbGVTZWxlY3Rpb24nO1xuZXhwb3J0IHR5cGUgU2VsZWN0RW50aXR5S2V5ZWRDb25maWcgPSBLZXllZENvbmZpZzxcbiAgdHlwZW9mIHNlbGVjdEVudGl0eVRyYWl0S2V5LFxuICBTZWxlY3RFbnRpdHlDb25maWdcbj47XG4iXX0=","export var ChangeType;\n(function (ChangeType) {\n ChangeType[\"CREATED\"] = \"c\";\n ChangeType[\"UPDATED\"] = \"u\";\n ChangeType[\"DELETED\"] = \"d\";\n})(ChangeType || (ChangeType = {}));\nexport const crudEntitiesTraitKey = 'crud';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBdUhELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZWRpY2F0ZSwgVXBkYXRlIH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGVudW0gQ2hhbmdlVHlwZSB7XG4gIENSRUFURUQgPSAnYycsXG4gIFVQREFURUQgPSAndScsXG4gIERFTEVURUQgPSAnZCcsXG59XG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZTxUPiB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gIGNoYW5nZVR5cGU6IENoYW5nZVR5cGU7XG4gIGVudGl0eUNoYW5nZXM/OiBQYXJ0aWFsPFQ+O1xufVxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDaGFuZ2U8VD4ge1xuICBlbnRpdHk6IFQ7XG4gIGNoYW5nZVR5cGU6IENoYW5nZVR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIENydWRFbnRpdGllc1N0YXRlPFQ+IHtcbiAgY2hhbmdlczogQ2hhbmdlPFQ+W107XG59XG5cbmV4cG9ydCB0eXBlIENydWRFbnRpdGllc0FjdGlvbnM8VD4gPSB7XG4gIGFkZEVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAoLi4uZW50aXRpZXM6IFRbXSkgPT4geyBlbnRpdGllczogVFtdIH0gJiBBY3Rpb248c3RyaW5nPlxuICA+O1xuICByZW1vdmVFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKFxuICAgICAgLi4ua2V5czogc3RyaW5nW10gfCBudW1iZXJbXVxuICAgICkgPT4geyBrZXlzOiBzdHJpbmdbXSB8IG51bWJlcltdIH0gJiBBY3Rpb248c3RyaW5nPlxuICA+O1xuICB1cGRhdGVFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKC4uLnVwZGF0ZXM6IFVwZGF0ZTxUPltdKSA9PiB7IHVwZGF0ZXM6IFVwZGF0ZTxUPltdIH0gJiBBY3Rpb248c3RyaW5nPlxuICA+O1xuICB1cHNlcnRFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKC4uLmVudGl0aWVzOiBUW10pID0+IHsgZW50aXRpZXM6IFRbXSB9ICYgQWN0aW9uPHN0cmluZz5cbiAgPjtcblxuICByZW1vdmVBbGxFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByZWRpY2F0ZT86IFByZWRpY2F0ZTxUPikgPT4geyBwcmVkaWNhdGU/OiBQcmVkaWNhdGU8VD4gfSAmIEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIGNsZWFyRW50aXRpZXNDaGFuZ2VzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xufTtcblxuZXhwb3J0IHR5cGUgQ3J1ZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4gPSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIGNoYW5nZXMgbWFkZSB0byB0aGUgbGlzdCBwbHVzIGVudGl0aWVzLCBhbmQgY2FuIGJlIGZpbHRlcmVkXG4gICAqIGJ5IGNoYW5nZSB0eXBlXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIHNlbGVjdEVudGl0aWVzQ2hhbmdlc0xpc3Q6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4sXG4gICkgPT4gRW50aXR5Q2hhbmdlPEVudGl0eT5bXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW50aXRpZXMgcGx1cyB0aGUga2luZCBvZiBjaGFuZ2UsXG4gICAqIGZpbHRlcnMgcmVkdW5kYW50IGNoYW5nZXMgaWRlYWwgZm9yIGEgYmF0Y2ggdXBkYXRlXG4gICAqIGlmIHlvdSBhZGQgYW5kIHJlbW92ZSB0aGUgc2FtZSBhbmQgaXRlbXMgdGhpcyBjaGFuZ2VzIGFyZSByZW1vdmUgZnJvbSB0aGUgbGlzdFxuICAgKiBpZiB5b3UgYWRkIGFuZCB0aGVuIHVwZGF0ZSBvbmUgb3IgbW9yZSB0aW1lcywgdGhlIHVwZGF0ZXMgYXJlIGRpc2NhcmRlZFxuICAgKiBpZiB5b3UgdXBkYXRlIG9uZSBvciBtb3JlIHRpbWVzIGFuZCB0aGVuIHJlbW92ZSwgdGhlIHVwZGF0ZXMgYXJlIGRpc2NhcmRlZFxuICAgKiBAcGFyYW0gc3RhdGVcbiAgICovXG4gIHNlbGVjdEZpbHRlcmVkRW50aXRpZXNDaGFuZ2VzTGlzdDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PixcbiAgKSA9PiBFbnRpdHlDaGFuZ2U8RW50aXR5PltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ3J1ZEVudGl0aWVzTXV0YXRvcnM8RW50aXR5PiA9IHtcbiAgYWRkRW50aXRpZXM8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+PihcbiAgICBlbnRpdGllczogRW50aXR5W10sXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG5cbiAgcmVtb3ZlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+LFxuICA+KFxuICAgIGtleXM6IHN0cmluZ1tdLFxuICAgIHN0YXRlOiBTLFxuICApOiBTO1xuICByZW1vdmVFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4sXG4gID4oXG4gICAga2V5czogbnVtYmVyW10sXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG4gIHJlbW92ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PixcbiAgPihcbiAgICBwcmVkaWNhdGU6IFByZWRpY2F0ZTxFbnRpdHk+LFxuICAgIHN0YXRlOiBTLFxuICApOiBTO1xuXG4gIHJlbW92ZUFsbEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PixcbiAgPihcbiAgICBzdGF0ZTogUyxcbiAgKTogUztcblxuICBjbGVhckVudGl0aWVzQ2hhbmdlczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4sXG4gID4oXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG5cbiAgdXBkYXRlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+LFxuICA+KFxuICAgIHVwZGF0ZXM6IFVwZGF0ZTxFbnRpdHk+W10sXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG4gIHVwc2VydEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PixcbiAgPihcbiAgICBlbnRpdGllczogRW50aXR5W10sXG4gICAgc3RhdGU6IFMsXG4gICk6IFM7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENydWRFbnRpdGllc0NvbmZpZyB7XG4gIHN0b3JlQ2hhbmdlcz86IGJvb2xlYW47XG59XG5leHBvcnQgY29uc3QgY3J1ZEVudGl0aWVzVHJhaXRLZXkgPSAnY3J1ZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcge1xuICBjcnVkPzogQ3J1ZEVudGl0aWVzQ29uZmlnO1xufVxuIl19","import { createAction } from '@ngrx/store';\nexport function createCrudTraitActions(actionsGroupKey, entitiesName) {\n return {\n addEntities: createAction(`${actionsGroupKey} Add ${entitiesName}`, (...entities) => ({\n entities,\n })),\n removeEntities: createAction(`${actionsGroupKey} Remove ${entitiesName}`, (...keys) => ({\n keys,\n })),\n updateEntities: createAction(`${actionsGroupKey} Update ${entitiesName}`, (...updates) => ({\n updates,\n })),\n upsertEntities: createAction(`${actionsGroupKey} Upsert ${entitiesName}`, (...entities) => ({\n entities,\n })),\n removeAllEntities: createAction(`${actionsGroupKey} Remove All ${entitiesName}`, (predicate) => ({ predicate })),\n clearEntitiesChanges: createAction(`${actionsGroupKey} Clear ${entitiesName} Changes`),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzNDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsZUFBdUIsRUFDdkIsWUFBb0I7SUFFcEIsT0FBTztRQUNMLFdBQVcsRUFBRSxZQUFZLENBQ3ZCLEdBQUcsZUFBZSxRQUFRLFlBQVksRUFBRSxFQUN4QyxDQUFDLEdBQUcsUUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixRQUFRO1NBQ1QsQ0FBQyxDQUNIO1FBQ0QsY0FBYyxFQUFFLFlBQVksQ0FDMUIsR0FBRyxlQUFlLFdBQVcsWUFBWSxFQUFFLEVBQzNDLENBQUMsR0FBRyxJQUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUk7U0FDTCxDQUFDLENBQ0g7UUFDRCxjQUFjLEVBQUUsWUFBWSxDQUMxQixHQUFHLGVBQWUsV0FBVyxZQUFZLEVBQUUsRUFDM0MsQ0FBQyxHQUFHLE9BQXlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakMsT0FBTztTQUNSLENBQUMsQ0FDSDtRQUNELGNBQWMsRUFBRSxZQUFZLENBQzFCLEdBQUcsZUFBZSxXQUFXLFlBQVksRUFBRSxFQUMzQyxDQUFDLEdBQUcsUUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixRQUFRO1NBQ1QsQ0FBQyxDQUNIO1FBQ0QsaUJBQWlCLEVBQUUsWUFBWSxDQUM3QixHQUFHLGVBQWUsZUFBZSxZQUFZLEVBQUUsRUFDL0MsQ0FBQyxTQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FDbkQ7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxXQUFXLFlBQVksVUFBVSxDQUNwRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1ZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcmVkaWNhdGUsIFVwZGF0ZSB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRBY3Rpb25zPEVudGl0eT4oXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdGllc05hbWU6IHN0cmluZ1xuKTogQ3J1ZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+IHtcbiAgcmV0dXJuIHtcbiAgICBhZGRFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBBZGQgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgICguLi5lbnRpdGllczogRW50aXR5W10pID0+ICh7XG4gICAgICAgIGVudGl0aWVzLFxuICAgICAgfSlcbiAgICApLFxuICAgIHJlbW92ZUVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFJlbW92ZSAke2VudGl0aWVzTmFtZX1gLFxuICAgICAgKC4uLmtleXM6IHN0cmluZ1tdIHwgbnVtYmVyW10pID0+ICh7XG4gICAgICAgIGtleXMsXG4gICAgICB9KVxuICAgICksXG4gICAgdXBkYXRlRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVXBkYXRlICR7ZW50aXRpZXNOYW1lfWAsXG4gICAgICAoLi4udXBkYXRlczogVXBkYXRlPEVudGl0eT5bXSkgPT4gKHtcbiAgICAgICAgdXBkYXRlcyxcbiAgICAgIH0pXG4gICAgKSxcbiAgICB1cHNlcnRFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBVcHNlcnQgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgICguLi5lbnRpdGllczogRW50aXR5W10pID0+ICh7XG4gICAgICAgIGVudGl0aWVzLFxuICAgICAgfSlcbiAgICApLFxuICAgIHJlbW92ZUFsbEVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFJlbW92ZSBBbGwgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgIChwcmVkaWNhdGU/OiBQcmVkaWNhdGU8RW50aXR5PikgPT4gKHsgcHJlZGljYXRlIH0pXG4gICAgKSxcbiAgICBjbGVhckVudGl0aWVzQ2hhbmdlczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBDbGVhciAgJHtlbnRpdGllc05hbWV9IENoYW5nZXNgXG4gICAgKSxcbiAgfTtcbn1cbiJdfQ==","import { createSelector } from '@ngrx/store';\nimport { ChangeType, } from './crud-entities.model';\nexport function createCrudTraitSelectors(previousSelectors) {\n function selectChanges(state) {\n return state.changes;\n }\n function selectFilteredChanges(state) {\n const cache = {};\n return state.changes.reduce((acc, value) => {\n const changes = cache[value.id];\n if (!changes) {\n cache[value.id] = [value.changeType];\n acc.push(value);\n return acc;\n }\n if (value.changeType === ChangeType.UPDATED) {\n return acc;\n }\n if (value.changeType === ChangeType.DELETED &&\n changes.includes(ChangeType.CREATED)) {\n delete cache[value.id];\n return acc.filter((v) => v.id !== value.id);\n }\n if (value.changeType === ChangeType.DELETED) {\n delete cache[value.id];\n const newAcc = acc.filter((v) => v.id !== value.id);\n newAcc.push(value);\n return newAcc;\n }\n return acc;\n }, []);\n }\n const { selectEntitiesMap } = previousSelectors;\n const selectEntitiesChangesList = createSelector((state) => selectEntitiesMap(state), selectChanges, (entities, changed) => {\n const map = changed.map((change) => ({\n changeType: change.changeType,\n entity: entities[change.id] ?? {\n id: change.id,\n },\n }));\n return map;\n });\n const selectFilteredEntitiesChangesList = createSelector(selectFilteredChanges, (state) => selectEntitiesMap(state), (changes, entities) => changes.map((c) => {\n return {\n entity: entities[c.id] ?? { id: c.id },\n changeType: c.changeType,\n };\n }));\n return {\n selectEntitiesChangesList,\n selectFilteredEntitiesChangesList,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2NydWQtZW50aXRpZXMvY3J1ZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBRUwsVUFBVSxHQUlYLE1BQU0sdUJBQXVCLENBQUM7QUFPL0IsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxpQkFBZ0Q7SUFFaEQsU0FBUyxhQUFhLENBQXNDLEtBQVE7UUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLHFCQUFxQixDQUM1QixLQUFRO1FBRVIsTUFBTSxLQUFLLEdBQW1DLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUVELElBQ0UsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsT0FBTztnQkFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM1QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBc0IsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUVoRCxNQUFNLHlCQUF5QixHQUFHLGNBQWMsQ0FDOUMsQ0FBQyxLQUE0RCxFQUFFLEVBQUUsQ0FDL0QsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQzFCLGFBQWEsRUFDYixDQUFDLFFBQTRCLEVBQUUsT0FBeUIsRUFBRSxFQUFFO1FBQzFELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQ3JCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDO1lBQ0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJO2dCQUM3QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7YUFDZDtTQUN1QixDQUFBLENBQzdCLENBQUM7UUFDRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxpQ0FBaUMsR0FBRyxjQUFjLENBQ3RELHFCQUFxQixFQUNyQixDQUFDLEtBQTRELEVBQUUsRUFBRSxDQUMvRCxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFDMUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2hCLE9BQU87WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtTQUNELENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUVGLE9BQU87UUFDTCx5QkFBeUI7UUFDekIsaUNBQWlDO0tBQ2xDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2UsXG4gIENoYW5nZVR5cGUsXG4gIENydWRFbnRpdGllc1NlbGVjdG9ycyxcbiAgQ3J1ZEVudGl0aWVzU3RhdGUsXG4gIEVudGl0eUNoYW5nZSxcbn0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc1NlbGVjdG9ycyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNydWRUcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICBwcmV2aW91c1NlbGVjdG9yczogTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT5cbik6IENydWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+IHtcbiAgZnVuY3Rpb24gc2VsZWN0Q2hhbmdlczxTIGV4dGVuZHMgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5Pj4oc3RhdGU6IFMpIHtcbiAgICByZXR1cm4gc3RhdGUuY2hhbmdlcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbGVjdEZpbHRlcmVkQ2hhbmdlczxTIGV4dGVuZHMgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5Pj4oXG4gICAgc3RhdGU6IFNcbiAgKSB7XG4gICAgY29uc3QgY2FjaGU6IHsgW2lkOiBzdHJpbmddOiBDaGFuZ2VUeXBlW10gfSA9IHt9O1xuICAgIHJldHVybiBzdGF0ZS5jaGFuZ2VzLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGNhY2hlW3ZhbHVlLmlkXTtcbiAgICAgIGlmICghY2hhbmdlcykge1xuICAgICAgICBjYWNoZVt2YWx1ZS5pZF0gPSBbdmFsdWUuY2hhbmdlVHlwZV07XG4gICAgICAgIGFjYy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlLmNoYW5nZVR5cGUgPT09IENoYW5nZVR5cGUuVVBEQVRFRCkge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlLmNoYW5nZVR5cGUgPT09IENoYW5nZVR5cGUuREVMRVRFRCAmJlxuICAgICAgICBjaGFuZ2VzLmluY2x1ZGVzKENoYW5nZVR5cGUuQ1JFQVRFRClcbiAgICAgICkge1xuICAgICAgICBkZWxldGUgY2FjaGVbdmFsdWUuaWRdO1xuICAgICAgICByZXR1cm4gYWNjLmZpbHRlcigodikgPT4gdi5pZCAhPT0gdmFsdWUuaWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUuY2hhbmdlVHlwZSA9PT0gQ2hhbmdlVHlwZS5ERUxFVEVEKSB7XG4gICAgICAgIGRlbGV0ZSBjYWNoZVt2YWx1ZS5pZF07XG4gICAgICAgIGNvbnN0IG5ld0FjYyA9IGFjYy5maWx0ZXIoKHYpID0+IHYuaWQgIT09IHZhbHVlLmlkKTtcbiAgICAgICAgbmV3QWNjLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3QWNjO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBDaGFuZ2U8RW50aXR5PltdKTtcbiAgfVxuXG4gIGNvbnN0IHsgc2VsZWN0RW50aXRpZXNNYXAgfSA9IHByZXZpb3VzU2VsZWN0b3JzO1xuXG4gIGNvbnN0IHNlbGVjdEVudGl0aWVzQ2hhbmdlc0xpc3QgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+KSA9PlxuICAgICAgc2VsZWN0RW50aXRpZXNNYXAoc3RhdGUpLFxuICAgIHNlbGVjdENoYW5nZXMsXG4gICAgKGVudGl0aWVzOiBEaWN0aW9uYXJ5PEVudGl0eT4sIGNoYW5nZWQ6IENoYW5nZTxFbnRpdHk+W10pID0+IHtcbiAgICAgIGNvbnN0IG1hcCA9IGNoYW5nZWQubWFwKFxuICAgICAgICAoY2hhbmdlKSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBjaGFuZ2UuY2hhbmdlVHlwZSxcbiAgICAgICAgICAgIGVudGl0eTogZW50aXRpZXNbY2hhbmdlLmlkXSA/PyB7XG4gICAgICAgICAgICAgIGlkOiBjaGFuZ2UuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0gYXMgRW50aXR5Q2hhbmdlPEVudGl0eT4pXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICk7XG5cbiAgY29uc3Qgc2VsZWN0RmlsdGVyZWRFbnRpdGllc0NoYW5nZXNMaXN0ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0RmlsdGVyZWRDaGFuZ2VzLFxuICAgIChzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4pID0+XG4gICAgICBzZWxlY3RFbnRpdGllc01hcChzdGF0ZSksXG4gICAgKGNoYW5nZXMsIGVudGl0aWVzKSA9PlxuICAgICAgY2hhbmdlcy5tYXAoKGMpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbnRpdHk6IGVudGl0aWVzW2MuaWRdID8/IHsgaWQ6IGMuaWQgfSxcbiAgICAgICAgICBjaGFuZ2VUeXBlOiBjLmNoYW5nZVR5cGUsXG4gICAgICAgIH0gYXMgRW50aXR5Q2hhbmdlPEVudGl0eT47XG4gICAgICB9KVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0RW50aXRpZXNDaGFuZ2VzTGlzdCxcbiAgICBzZWxlY3RGaWx0ZXJlZEVudGl0aWVzQ2hhbmdlc0xpc3QsXG4gIH07XG59XG4iXX0=","import { createReducer, on } from '@ngrx/store';\nimport { insertIf } from '@ngrx-traits/core';\nexport function createCrudInitialState(previousInitialState) {\n return {\n ...previousInitialState,\n changes: [],\n };\n}\nexport function createCrudTraitReducer(initialState, allActions, allMutators, allConfigs) {\n const sortRemote = allConfigs.sort?.remote;\n const filterRemote = allConfigs.filter && !allConfigs.filter?.filterFn;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n return createReducer(initialState, on(allActions.addEntities, (state, { entities }) => allMutators.addEntities(entities, state)), on(allActions.updateEntities, (state, { updates }) => allMutators.updateEntities(updates, state)), on(allActions.upsertEntities, (state, { entities }) => allMutators.upsertEntities(entities, state)), on(allActions.removeEntities, (state, { keys }) => allMutators.removeEntities(keys, state)), on(allActions.removeAllEntities, (state, { predicate }) => predicate\n ? allMutators.removeEntities(predicate, state)\n : allMutators.removeAllEntities(state)), on(allActions.clearEntitiesChanges, (state) => allMutators.clearEntitiesChanges(state)), ...insertIf(sortRemote, () => on(allActions.sortEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(filterRemote, () => on(allActions.filterEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!allActions.loadEntitiesPageSuccess, () => on(allActions.loadEntitiesSuccess, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial', () => on(allActions.loadEntitiesPageSuccess, (state) => allMutators.clearEntitiesChanges(state))));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlCaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsb0JBQXlCO0lBRXpCLE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixPQUFPLEVBQUUsRUFBRTtLQUNaLENBQUM7QUFDSixDQUFDO0FBQ0QsTUFBTSxVQUFVLHNCQUFzQixDQUlwQyxZQUFlLEVBQ2YsVUFJMkIsRUFDM0IsV0FBeUMsRUFDekMsVUFJK0I7SUFFL0IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFN0QsT0FBTyxhQUFhLENBQ2xCLFlBQVksRUFDWixFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FDakQsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQ3pDLEVBQ0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQ25ELFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUMzQyxFQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUNwRCxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FDNUMsRUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDaEQsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFhLEVBQUUsS0FBSyxDQUFDLENBQ2pELEVBQ0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FDeEQsU0FBUztRQUNQLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDOUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FDekMsRUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FBSSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ2hDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQ3ZELEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUMzQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FDVCxDQUFDLENBQUMsVUFBVSxDQUFDLHVCQUF1QixJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFDekUsR0FBRyxFQUFFLENBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9DLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FDeEMsQ0FDSixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmlsdGVyRW50aXRpZXNBY3Rpb25zLFxuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ3J1ZEVudGl0aWVzQWN0aW9ucyxcbiAgQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIENydWRFbnRpdGllc011dGF0b3JzLFxuICBDcnVkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5pbXBvcnQgeyBTb3J0RW50aXRpZXNBY3Rpb25zLCBTb3J0RW50aXRpZXNLZXllZENvbmZpZyB9IGZyb20gJy4uL3NvcnQtZW50aXRpZXMnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24nO1xuaW1wb3J0IHsgaW5zZXJ0SWYgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkSW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gIHByZXZpb3VzSW5pdGlhbFN0YXRlOiBhbnlcbik6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICBjaGFuZ2VzOiBbXSxcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRSZWR1Y2VyPFxuICBFbnRpdHksXG4gIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8YW55PiAmXG4gICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgYWxsTXV0YXRvcnM6IENydWRFbnRpdGllc011dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IENydWRFbnRpdGllc0tleWVkQ29uZmlnICZcbiAgICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgdW5rbm93bj4gJlxuICAgIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnXG4pIHtcbiAgY29uc3Qgc29ydFJlbW90ZSA9IGFsbENvbmZpZ3Muc29ydD8ucmVtb3RlO1xuICBjb25zdCBmaWx0ZXJSZW1vdGUgPSBhbGxDb25maWdzLmZpbHRlciAmJiAhYWxsQ29uZmlncy5maWx0ZXI/LmZpbHRlckZuO1xuICBjb25zdCBwYWdpbmF0aW9uQ2FjaGVUeXBlID0gYWxsQ29uZmlncy5wYWdpbmF0aW9uPy5jYWNoZVR5cGU7XG5cbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXIoXG4gICAgaW5pdGlhbFN0YXRlLFxuICAgIG9uKGFsbEFjdGlvbnMuYWRkRW50aXRpZXMsIChzdGF0ZSwgeyBlbnRpdGllcyB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMuYWRkRW50aXRpZXMoZW50aXRpZXMsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy51cGRhdGVFbnRpdGllcywgKHN0YXRlLCB7IHVwZGF0ZXMgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnVwZGF0ZUVudGl0aWVzKHVwZGF0ZXMsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy51cHNlcnRFbnRpdGllcywgKHN0YXRlLCB7IGVudGl0aWVzIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy51cHNlcnRFbnRpdGllcyhlbnRpdGllcywgc3RhdGUpXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoc3RhdGUsIHsga2V5cyB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMucmVtb3ZlRW50aXRpZXMoa2V5cyBhcyBhbnlbXSwgc3RhdGUpXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoc3RhdGUsIHsgcHJlZGljYXRlIH0pID0+XG4gICAgICBwcmVkaWNhdGVcbiAgICAgICAgPyBhbGxNdXRhdG9ycy5yZW1vdmVFbnRpdGllcyhwcmVkaWNhdGUsIHN0YXRlKVxuICAgICAgICA6IGFsbE11dGF0b3JzLnJlbW92ZUFsbEVudGl0aWVzKHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy5jbGVhckVudGl0aWVzQ2hhbmdlcywgKHN0YXRlKSA9PlxuICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihzb3J0UmVtb3RlLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5zb3J0RW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihmaWx0ZXJSZW1vdGUsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmZpbHRlckVudGl0aWVzLCAoc3RhdGUpID0+XG4gICAgICAgIGFsbE11dGF0b3JzLmNsZWFyRW50aXRpZXNDaGFuZ2VzKHN0YXRlKVxuICAgICAgKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1N1Y2Nlc3MsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihcbiAgICAgICEhYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcyAmJiBwYWdpbmF0aW9uQ2FjaGVUeXBlID09PSAncGFydGlhbCcsXG4gICAgICAoKSA9PlxuICAgICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=","import { ChangeType, } from './crud-entities.model';\nexport function createCrudTraitMutators(allConfigs) {\n const { storeChanges } = allConfigs.crud || {};\n const adapter = allConfigs.loadEntities.adapter;\n function generateChangeEntry(entity, changeType, customId) {\n return {\n id: customId ?? adapter.selectId(entity),\n changeType,\n entityChanges: (storeChanges && entity) || undefined,\n };\n }\n function addEntities(entities, state, addFirst = false) {\n const changes = [\n ...state.changes,\n ...entities.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),\n ];\n if (!addFirst)\n return adapter.addMany(entities, {\n ...state,\n changes,\n });\n const newIds = entities.map((e) => adapter.selectId(e));\n const newEntities = { ...state.entities };\n entities.forEach((e) => {\n const id = adapter.selectId(e);\n newEntities[id] = e;\n });\n return {\n ...state,\n ids: [...newIds, ...state.ids],\n entities: newEntities,\n changes,\n };\n }\n function upsertEntities(entities, state) {\n const oldChanges = [...state.changes];\n const existingIds = adapter.getSelectors().selectIds(state);\n const [additions, updates] = entities.reduce(([a, u], entity) => existingIds.indexOf(adapter.selectId(entity)) !== -1\n ? [a, [...u, entity]]\n : [[...a, entity], u], [new Array(), new Array()]);\n return adapter.upsertMany(entities, {\n ...state,\n changes: [\n ...oldChanges,\n ...additions.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),\n ...updates.map((entity) => generateChangeEntry(entity, ChangeType.UPDATED)),\n ],\n });\n }\n function removeEntities(keysOrPredicate, state) {\n if (typeof keysOrPredicate === 'function') {\n return adapter.removeMany(keysOrPredicate, {\n ...state,\n changes: [\n ...state.changes,\n ...state.ids.map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n return adapter.removeMany(keysOrPredicate, {\n ...state,\n changes: [\n ...state.changes,\n ...keysOrPredicate.map((key) => ({\n id: key,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function removeAllEntities(state) {\n return adapter.removeAll({\n ...state,\n changes: [\n ...state.changes,\n ...state.ids.map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function clearEntitiesChanges(state) {\n return { ...state, changes: [] };\n }\n function updateEntities(updates, state) {\n const oldChanges = [...state.changes];\n updates.forEach((updated) => {\n const id = adapter.selectId(updated.changes);\n if (id && id !== updated.id) {\n // if the id changes update the id of pold changes\n const index = oldChanges.findIndex((v) => v.id === updated.id);\n const oldChange = oldChanges[index];\n oldChanges[index] = { ...oldChange, id };\n }\n });\n return adapter.updateMany(updates, {\n ...state,\n changes: [\n ...oldChanges,\n ...updates.map((updated) => ({\n id: adapter.selectId(updated.changes) ?? updated.id,\n changeType: ChangeType.UPDATED,\n entityChanges: (storeChanges && updated.changes) || undefined,\n })),\n ],\n });\n }\n return {\n addEntities,\n removeEntities,\n updateEntities,\n removeAllEntities,\n clearEntitiesChanges,\n upsertEntities,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSx1QkFBdUIsQ0FBQztBQU8vQixNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFVBQXFFO0lBRXJFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxVQUFXLENBQUMsWUFBYSxDQUFDLE9BQU8sQ0FBQztJQUVsRCxTQUFTLG1CQUFtQixDQUMxQixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsUUFBMEI7UUFFMUIsT0FBTztZQUNMLEVBQUUsRUFBRSxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDeEMsVUFBVTtZQUNWLGFBQWEsRUFBRSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxTQUFTO1NBQ3JELENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxXQUFXLENBRWxCLFFBQWtCLEVBQUUsS0FBUSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQzlDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUN6QixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNoRDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUTtZQUNYLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLEdBQUcsS0FBSztnQkFDUixPQUFPO2FB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Q0FBQyxDQUFDO2dCQUMvRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDakMsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLEdBQUcsVUFBVTtnQkFDYixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQ1osQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLENBQUM7b0JBQ0MsRUFBRSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQWlCLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRTtvQkFDN0QsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPO29CQUM5QixhQUFhLEVBQUUsQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVM7aUJBQzNDLENBQUEsQ0FDdkI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsV0FBVztRQUNYLGNBQWM7UUFDZCxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2UsXG4gIENoYW5nZVR5cGUsXG4gIENydWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBDcnVkRW50aXRpZXNNdXRhdG9ycyxcbiAgQ3J1ZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4vY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBQcmVkaWNhdGUsIFVwZGF0ZSB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRNdXRhdG9yczxFbnRpdHk+KFxuICBhbGxDb25maWdzOiBDcnVkRW50aXRpZXNLZXllZENvbmZpZyAmIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbik6IENydWRFbnRpdGllc011dGF0b3JzPEVudGl0eT4ge1xuICBjb25zdCB7IHN0b3JlQ2hhbmdlcyB9ID0gYWxsQ29uZmlncy5jcnVkIHx8IHt9O1xuICBjb25zdCBhZGFwdGVyID0gYWxsQ29uZmlncyEubG9hZEVudGl0aWVzIS5hZGFwdGVyO1xuXG4gIGZ1bmN0aW9uIGdlbmVyYXRlQ2hhbmdlRW50cnkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgY2hhbmdlVHlwZTogQ2hhbmdlVHlwZSxcbiAgICBjdXN0b21JZD86IHN0cmluZyB8IG51bWJlclxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGN1c3RvbUlkID8/IGFkYXB0ZXIuc2VsZWN0SWQoZW50aXR5KSxcbiAgICAgIGNoYW5nZVR5cGUsXG4gICAgICBlbnRpdHlDaGFuZ2VzOiAoc3RvcmVDaGFuZ2VzICYmIGVudGl0eSkgfHwgdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGRFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihlbnRpdGllczogRW50aXR5W10sIHN0YXRlOiBTLCBhZGRGaXJzdCA9IGZhbHNlKSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IFtcbiAgICAgIC4uLnN0YXRlLmNoYW5nZXMsXG4gICAgICAuLi5lbnRpdGllcy5tYXAoKGVudGl0eSkgPT5cbiAgICAgICAgZ2VuZXJhdGVDaGFuZ2VFbnRyeShlbnRpdHksIENoYW5nZVR5cGUuQ1JFQVRFRClcbiAgICAgICksXG4gICAgXTtcbiAgICBpZiAoIWFkZEZpcnN0KVxuICAgICAgcmV0dXJuIGFkYXB0ZXIuYWRkTWFueShlbnRpdGllcywge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY2hhbmdlcyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgbmV3SWRzID0gZW50aXRpZXMubWFwKChlKSA9PiBhZGFwdGVyLnNlbGVjdElkKGUpKTtcbiAgICBjb25zdCBuZXdFbnRpdGllcyA9IHsgLi4uc3RhdGUuZW50aXRpZXMgfTtcbiAgICBlbnRpdGllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGFkYXB0ZXIuc2VsZWN0SWQoZSk7XG4gICAgICBuZXdFbnRpdGllc1tpZF0gPSBlO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlkczogWy4uLm5ld0lkcywgLi4uc3RhdGUuaWRzXSxcbiAgICAgIGVudGl0aWVzOiBuZXdFbnRpdGllcyxcbiAgICAgIGNoYW5nZXMsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwc2VydEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KGVudGl0aWVzOiBFbnRpdHlbXSwgc3RhdGU6IFMpIHtcbiAgICBjb25zdCBvbGRDaGFuZ2VzID0gWy4uLnN0YXRlLmNoYW5nZXNdO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gYWRhcHRlci5nZXRTZWxlY3RvcnMoKS5zZWxlY3RJZHMoc3RhdGUpIGFzIHN0cmluZ1tdO1xuXG4gICAgY29uc3QgW2FkZGl0aW9ucywgdXBkYXRlc10gPSBlbnRpdGllcy5yZWR1Y2UoXG4gICAgICAoW2EsIHVdLCBlbnRpdHkpID0+XG4gICAgICAgIGV4aXN0aW5nSWRzLmluZGV4T2YoYWRhcHRlci5zZWxlY3RJZChlbnRpdHkgYXMgRW50aXR5KSBhcyBzdHJpbmcpICE9PSAtMVxuICAgICAgICAgID8gW2EsIFsuLi51LCBlbnRpdHldXVxuICAgICAgICAgIDogW1suLi5hLCBlbnRpdHldLCB1XSxcbiAgICAgIFtuZXcgQXJyYXk8RW50aXR5PigpLCBuZXcgQXJyYXk8RW50aXR5PigpXVxuICAgICk7XG5cbiAgICByZXR1cm4gYWRhcHRlci51cHNlcnRNYW55KGVudGl0aWVzLCB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGNoYW5nZXM6IFtcbiAgICAgICAgLi4ub2xkQ2hhbmdlcyxcblxuICAgICAgICAuLi5hZGRpdGlvbnMubWFwKChlbnRpdHkpID0+XG4gICAgICAgICAgZ2VuZXJhdGVDaGFuZ2VFbnRyeShlbnRpdHksIENoYW5nZVR5cGUuQ1JFQVRFRClcbiAgICAgICAgKSxcbiAgICAgICAgLi4udXBkYXRlcy5tYXAoKGVudGl0eSkgPT5cbiAgICAgICAgICBnZW5lcmF0ZUNoYW5nZUVudHJ5KGVudGl0eSwgQ2hhbmdlVHlwZS5VUERBVEVEKVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KGtleXM6IG51bWJlcltdLCBzdGF0ZTogUyk6IFM7XG4gIGZ1bmN0aW9uIHJlbW92ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KGtleXM6IHN0cmluZ1tdLCBzdGF0ZTogUyk6IFM7XG4gIGZ1bmN0aW9uIHJlbW92ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KHByZWRpY2F0ZTogUHJlZGljYXRlPEVudGl0eT4sIHN0YXRlOiBTKTogUztcbiAgZnVuY3Rpb24gcmVtb3ZlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oa2V5c09yUHJlZGljYXRlOiBQcmVkaWNhdGU8RW50aXR5PiB8IHN0cmluZ1tdIHwgbnVtYmVyW10sIHN0YXRlOiBTKTogUyB7XG4gICAgaWYgKHR5cGVvZiBrZXlzT3JQcmVkaWNhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhZGFwdGVyLnJlbW92ZU1hbnkoa2V5c09yUHJlZGljYXRlLCB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjaGFuZ2VzOiBbXG4gICAgICAgICAgLi4uc3RhdGUuY2hhbmdlcyxcbiAgICAgICAgICAuLi4oc3RhdGUuaWRzIGFzIGFueVtdKS5tYXAoKGlkKSA9PiAoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBDaGFuZ2VUeXBlLkRFTEVURUQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkYXB0ZXIucmVtb3ZlTWFueShrZXlzT3JQcmVkaWNhdGUgYXMgc3RyaW5nW10sIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY2hhbmdlczogW1xuICAgICAgICAuLi5zdGF0ZS5jaGFuZ2VzLFxuICAgICAgICAuLi4oa2V5c09yUHJlZGljYXRlIGFzIHN0cmluZ1tdKS5tYXAoKGtleTogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIGlkOiBrZXksXG4gICAgICAgICAgY2hhbmdlVHlwZTogQ2hhbmdlVHlwZS5ERUxFVEVELFxuICAgICAgICB9KSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZUFsbEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KHN0YXRlOiBTKTogUyB7XG4gICAgcmV0dXJuIGFkYXB0ZXIucmVtb3ZlQWxsKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY2hhbmdlczogW1xuICAgICAgICAuLi5zdGF0ZS5jaGFuZ2VzLFxuICAgICAgICAuLi4oc3RhdGUuaWRzIGFzIGFueVtdKS5tYXAoKGlkKSA9PiAoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNoYW5nZVR5cGU6IENoYW5nZVR5cGUuREVMRVRFRCxcbiAgICAgICAgfSkpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBjbGVhckVudGl0aWVzQ2hhbmdlczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihzdGF0ZTogUykge1xuICAgIHJldHVybiB7IC4uLnN0YXRlLCBjaGFuZ2VzOiBbXSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4odXBkYXRlczogVXBkYXRlPEVudGl0eT5bXSwgc3RhdGU6IFMpIHtcbiAgICBjb25zdCBvbGRDaGFuZ2VzID0gWy4uLnN0YXRlLmNoYW5nZXNdO1xuICAgIHVwZGF0ZXMuZm9yRWFjaCgodXBkYXRlZCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBhZGFwdGVyLnNlbGVjdElkKHVwZGF0ZWQuY2hhbmdlcyBhcyBFbnRpdHkpO1xuICAgICAgaWYgKGlkICYmIGlkICE9PSB1cGRhdGVkLmlkKSB7XG4gICAgICAgIC8vIGlmIHRoZSBpZCBjaGFuZ2VzIHVwZGF0ZSB0aGUgaWQgb2YgcG9sZCBjaGFuZ2VzXG4gICAgICAgIGNvbnN0IGluZGV4ID0gb2xkQ2hhbmdlcy5maW5kSW5kZXgoKHYpID0+IHYuaWQgPT09IHVwZGF0ZWQuaWQpO1xuICAgICAgICBjb25zdCBvbGRDaGFuZ2UgPSBvbGRDaGFuZ2VzW2luZGV4XTtcbiAgICAgICAgb2xkQ2hhbmdlc1tpbmRleF0gPSB7IC4uLm9sZENoYW5nZSwgaWQgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWRhcHRlci51cGRhdGVNYW55KHVwZGF0ZXMsIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY2hhbmdlczogW1xuICAgICAgICAuLi5vbGRDaGFuZ2VzLFxuICAgICAgICAuLi51cGRhdGVzLm1hcChcbiAgICAgICAgICAodXBkYXRlZCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIGlkOiBhZGFwdGVyLnNlbGVjdElkKHVwZGF0ZWQuY2hhbmdlcyBhcyBFbnRpdHkpID8/IHVwZGF0ZWQuaWQsXG4gICAgICAgICAgICAgIGNoYW5nZVR5cGU6IENoYW5nZVR5cGUuVVBEQVRFRCxcbiAgICAgICAgICAgICAgZW50aXR5Q2hhbmdlczogKHN0b3JlQ2hhbmdlcyAmJiB1cGRhdGVkLmNoYW5nZXMpIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0gYXMgQ2hhbmdlPEVudGl0eT4pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRFbnRpdGllcyxcbiAgICByZW1vdmVFbnRpdGllcyxcbiAgICB1cGRhdGVFbnRpdGllcyxcbiAgICByZW1vdmVBbGxFbnRpdGllcyxcbiAgICBjbGVhckVudGl0aWVzQ2hhbmdlcyxcbiAgICB1cHNlcnRFbnRpdGllcyxcbiAgfTtcbn1cbiJdfQ==","import { createTraitFactory, } from '@ngrx-traits/core';\nimport { createCrudTraitActions } from './crud-entities.trait.actions';\nimport { createCrudTraitSelectors } from './crud-entities.trait.selectors';\nimport { createCrudInitialState, createCrudTraitReducer, } from './crud-entities.trait.reducer';\nimport { crudEntitiesTraitKey, } from './crud-entities.model';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\nimport { createCrudTraitMutators } from './crud-entities.trait.mutators';\n/**\n * Generates ngrx code to add, remove update, upsert entities on a list, it also\n * tracks the changes made, helpful for implementing batch updates. The `storeChanges` (false by default),\n * will store for add and update the changed entity props in the property `entityChanges` of the `Change` object.\n * @param config\n * @param config.storeChanges - Will store the changes made, default fals\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>, CrudState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addCrudEntitiesTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // changes: Change<Todo>[];\n *\n * // generated actions\n * traits.actions.addTodos(entity1,entity2...)\n * traits.actions.updateTodos({id: id1, changes:{prop1}},{id: id2, changes:{prop2}} ...)\n * traits.actions.upsertTodos(entity1,entity2...)\n * traits.actions.removeAllTodos()\n * traits.actions.clearTodosChanges()\n * // generated selectors\n * traits.selectors.selectTodosChangesList()\n * traits.selectors.selectFilteredTodosChangesList()\n * traits.selectors.selectAllFilteredChanges()\n */\nexport function addCrudEntitiesTrait({ storeChanges = false, } = {}) {\n return createTraitFactory({\n key: crudEntitiesTraitKey,\n depends: [loadEntitiesTraitKey],\n config: { storeChanges },\n actions: ({ actionsGroupKey, entitiesName }) => createCrudTraitActions(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors }) => createCrudTraitSelectors(previousSelectors),\n mutators: ({ allConfigs }) => createCrudTraitMutators(allConfigs),\n initialState: ({ previousInitialState }) => createCrudInitialState(previousInitialState),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) => createCrudTraitReducer(initialState, allActions, allMutators, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsR0FLbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixHQUN2QixNQUFNLCtCQUErQixDQUFDO0FBS3ZDLE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUsvQixPQUFPLEVBSUwsb0JBQW9CLEdBQ3JCLE1BQU0sc0NBQXNDLENBQUM7QUFLOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQVMsRUFDM0MsWUFBWSxHQUFHLEtBQUssTUFDRSxFQUFFO0lBQ3hCLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLG9CQUFvQjtRQUN6QixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUMvQixNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQXdCO1FBQzlDLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBNkIsRUFBRSxFQUFFLENBQ3hFLHNCQUFzQixDQUFTLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDL0QsU0FBUyxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBK0IsRUFBRSxFQUFFLENBQ2hFLHdCQUF3QixDQUN0QixpQkFBa0QsQ0FDbkQ7UUFDSCxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBbUMsRUFBRSxFQUFFLENBQzVELHVCQUF1QixDQUNyQixVQUF1RSxDQUN4RTtRQUNILFlBQVksRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQWtDLEVBQUUsRUFBRSxDQUN6RSxzQkFBc0IsQ0FBUyxvQkFBb0IsQ0FBQztRQUN0RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FDakUsc0JBQXNCLENBQ3BCLFlBQVksRUFDWixVQUkyQixFQUMzQixXQUFXLEVBQ1gsVUFJK0IsQ0FDaEM7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlVHJhaXRGYWN0b3J5LFxuICBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcsXG4gIFRyYWl0U2VsZWN0b3JzRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRTdGF0ZU11dGF0b3JzRmFjdG9yeUNvbmZpZyxcbn0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ3J1ZFRyYWl0QWN0aW9ucyB9IGZyb20gJy4vY3J1ZC1lbnRpdGllcy50cmFpdC5hY3Rpb25zJztcbmltcG9ydCB7IGNyZWF0ZUNydWRUcmFpdFNlbGVjdG9ycyB9IGZyb20gJy4vY3J1ZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlQ3J1ZEluaXRpYWxTdGF0ZSxcbiAgY3JlYXRlQ3J1ZFRyYWl0UmVkdWNlcixcbn0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLnRyYWl0LnJlZHVjZXInO1xuaW1wb3J0IHtcbiAgU29ydEVudGl0aWVzQWN0aW9ucyxcbiAgU29ydEVudGl0aWVzS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL3NvcnQtZW50aXRpZXMvc29ydC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBDcnVkRW50aXRpZXNBY3Rpb25zLFxuICBDcnVkRW50aXRpZXNDb25maWcsXG4gIENydWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBjcnVkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIEZpbHRlckVudGl0aWVzQWN0aW9ucyxcbiAgRmlsdGVyRW50aXRpZXNLZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vZmlsdGVyLWVudGl0aWVzL2ZpbHRlci1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNBY3Rpb25zLFxuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBsb2FkRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMsXG4gIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnLFxufSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgY3JlYXRlQ3J1ZFRyYWl0TXV0YXRvcnMgfSBmcm9tICcuL2NydWQtZW50aXRpZXMudHJhaXQubXV0YXRvcnMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBuZ3J4IGNvZGUgdG8gYWRkLCByZW1vdmUgdXBkYXRlLCB1cHNlcnQgZW50aXRpZXMgb24gYSBsaXN0LCBpdCBhbHNvXG4gKiB0cmFja3MgdGhlIGNoYW5nZXMgbWFkZSwgaGVscGZ1bCBmb3IgaW1wbGVtZW50aW5nIGJhdGNoIHVwZGF0ZXMuIFRoZSBgc3RvcmVDaGFuZ2VzYCAoZmFsc2UgYnkgZGVmYXVsdCksXG4gKiB3aWxsIHN0b3JlIGZvciBhZGQgYW5kIHVwZGF0ZSB0aGUgY2hhbmdlZCBlbnRpdHkgcHJvcHMgaW4gdGhlIHByb3BlcnR5IGBlbnRpdHlDaGFuZ2VzYCBvZiB0aGUgYENoYW5nZWAgb2JqZWN0LlxuICogQHBhcmFtIGNvbmZpZ1xuICogQHBhcmFtIGNvbmZpZy5zdG9yZUNoYW5nZXMgLSBXaWxsIHN0b3JlIHRoZSBjaGFuZ2VzIG1hZGUsIGRlZmF1bHQgZmFsc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZm9sbG93aW5nIHRyYWl0IGNvbmZpZ1xuICpcbiAqIGV4cG9ydCBpbnRlcmZhY2UgVGVzdFN0YXRlXG4gKiBleHRlbmRzIEVudGl0eUFuZFN0YXR1c1N0YXRlPFRvZG8+LCBDcnVkU3RhdGU8VG9kbz57fVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkTG9hZEVudGl0aWVzVHJhaXQ8VG9kbz4oKSxcbiAqICAgICAgYWRkQ3J1ZEVudGl0aWVzVHJhaXQ8VG9kbz4oKVxuICogICAgKSh7XG4gKiAgICAgIGFjdGlvbnNHcm91cEtleTogJ1tUb2Rvc10nLFxuICogICAgICBmZWF0dXJlU2VsZWN0b3I6IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxUZXN0U3RhdGU+PihcbiAqICAgICAgICAndG9kb3MnLFxuICogICAgICApLFxuICogICAgfSk7XG4gKlxuICogLy8gICBhZGRzIGZvbGxvd2luZyBwcm9wcyB0byB0aGUgc3RhdGU6XG4gKiAvLyAgICBjaGFuZ2VzOiBDaGFuZ2U8VG9kbz5bXTtcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuYWRkVG9kb3MoZW50aXR5MSxlbnRpdHkyLi4uKVxuICogdHJhaXRzLmFjdGlvbnMudXBkYXRlVG9kb3Moe2lkOiBpZDEsIGNoYW5nZXM6e3Byb3AxfX0se2lkOiBpZDIsIGNoYW5nZXM6e3Byb3AyfX0gLi4uKVxuICogdHJhaXRzLmFjdGlvbnMudXBzZXJ0VG9kb3MoZW50aXR5MSxlbnRpdHkyLi4uKVxuICogdHJhaXRzLmFjdGlvbnMucmVtb3ZlQWxsVG9kb3MoKVxuICogdHJhaXRzLmFjdGlvbnMuY2xlYXJUb2Rvc0NoYW5nZXMoKVxuICogLy8gZ2VuZXJhdGVkIHNlbGVjdG9yc1xuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2Rvc0NoYW5nZXNMaXN0KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0RmlsdGVyZWRUb2Rvc0NoYW5nZXNMaXN0KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0QWxsRmlsdGVyZWRDaGFuZ2VzKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENydWRFbnRpdGllc1RyYWl0PEVudGl0eT4oe1xuICBzdG9yZUNoYW5nZXMgPSBmYWxzZSxcbn06IENydWRFbnRpdGllc0NvbmZpZyA9IHt9KSB7XG4gIHJldHVybiBjcmVhdGVUcmFpdEZhY3Rvcnkoe1xuICAgIGtleTogY3J1ZEVudGl0aWVzVHJhaXRLZXksXG4gICAgZGVwZW5kczogW2xvYWRFbnRpdGllc1RyYWl0S2V5XSxcbiAgICBjb25maWc6IHsgc3RvcmVDaGFuZ2VzIH0gYXMgQ3J1ZEVudGl0aWVzQ29uZmlnLFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lIH06IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVDcnVkVHJhaXRBY3Rpb25zPEVudGl0eT4oYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUpLFxuICAgIHNlbGVjdG9yczogKHsgcHJldmlvdXNTZWxlY3RvcnMgfTogVHJhaXRTZWxlY3RvcnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlQ3J1ZFRyYWl0U2VsZWN0b3JzPEVudGl0eT4oXG4gICAgICAgIHByZXZpb3VzU2VsZWN0b3JzIGFzIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+XG4gICAgICApLFxuICAgIG11dGF0b3JzOiAoeyBhbGxDb25maWdzIH06IFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVDcnVkVHJhaXRNdXRhdG9yczxFbnRpdHk+KFxuICAgICAgICBhbGxDb25maWdzIGFzIENydWRFbnRpdGllc0tleWVkQ29uZmlnICYgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuICAgICAgKSxcbiAgICBpbml0aWFsU3RhdGU6ICh7IHByZXZpb3VzSW5pdGlhbFN0YXRlIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZUNydWRJbml0aWFsU3RhdGU8RW50aXR5PihwcmV2aW91c0luaXRpYWxTdGF0ZSksXG4gICAgcmVkdWNlcjogKHsgaW5pdGlhbFN0YXRlLCBhbGxBY3Rpb25zLCBhbGxNdXRhdG9ycywgYWxsQ29uZmlncyB9KSA9PlxuICAgICAgY3JlYXRlQ3J1ZFRyYWl0UmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxBY3Rpb25zIGFzIENydWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBTb3J0RW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgICAgICAgIEZpbHRlckVudGl0aWVzQWN0aW9uczxhbnk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICAgICAgICBhbGxNdXRhdG9ycyxcbiAgICAgICAgYWxsQ29uZmlncyBhcyBDcnVkRW50aXRpZXNLZXllZENvbmZpZyAmXG4gICAgICAgICAgRmlsdGVyRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHksIHVua25vd24+ICZcbiAgICAgICAgICBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICAgICAgICBTb3J0RW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZ1xuICAgICAgKSxcbiAgfSk7XG59XG4iXX0=","export const sortTraitKey = 'sort';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThDQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5ZWRDb25maWcgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgJyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydDxUPiB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGNvbHVtbiBiZWluZyBzb3J0ZWQuICovXG4gIGFjdGl2ZToga2V5b2YgVDtcbiAgLyoqIFRoZSBzb3J0IGRpcmVjdGlvbi4gKi9cbiAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRFbnRpdGllc1N0YXRlPFQ+IHtcbiAgc29ydDoge1xuICAgIGN1cnJlbnQ6IFNvcnQ8VD47XG4gICAgZGVmYXVsdDogU29ydDxUPjtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU29ydEVudGl0aWVzQWN0aW9uczxUPiA9IHtcbiAgc29ydEVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IFNvcnQ8VD4pID0+IFNvcnQ8VD4gJiBBY3Rpb248c3RyaW5nPlxuICA+O1xuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBzb3J0IGJhY2tcbiAgICovXG4gIHJlc2V0RW50aXRpZXNTb3J0OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gQWN0aW9uPHN0cmluZz4+O1xufTtcblxuZXhwb3J0IHR5cGUgU29ydEVudGl0aWVzU2VsZWN0b3JzPFQ+ID0ge1xuICBzZWxlY3RFbnRpdGllc1NvcnQ6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTb3J0RW50aXRpZXNTdGF0ZTxUPixcbiAgKSA9PiBTb3J0PFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgU29ydEVudGl0aWVzTXV0YXRvcnM8VD4gPSB7XG4gIHNvcnRFbnRpdGllczxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTb3J0RW50aXRpZXNTdGF0ZTxUPj4oXG4gICAgeyBhY3RpdmUsIGRpcmVjdGlvbiB9OiBTb3J0PFQ+LFxuICAgIHN0YXRlOiBTLFxuICApOiBTO1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRUcmFpdEtleSA9ICdzb3J0JztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0RW50aXRpZXNDb25maWc8VD4ge1xuICBkZWZhdWx0U29ydDogU29ydDxUPjtcbiAgcmVtb3RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0RW50aXRpZXNLZXllZENvbmZpZzxUPiA9IEtleWVkQ29uZmlnPFxuICB0eXBlb2Ygc29ydFRyYWl0S2V5LFxuICBTb3J0RW50aXRpZXNDb25maWc8VD5cbj47XG4iXX0=","const MAX_SAFE_INTEGER = 9007199254740991;\nexport function _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\nfunction sortingDataAccessor(data, sortHeaderId) {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n}\n/**\n * @internal\n * @ignore\n * Gets a sorted copy of the data array based on the state of the Sort.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\nexport function sortData(data, sort) {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction === '') {\n return data;\n }\n return data.sort((a, b) => {\n const valueA = sortingDataAccessor(a, active);\n const valueB = sortingDataAccessor(b, active);\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (typeof valueA === 'string' || typeof valueB === 'string') {\n // if either values are a string, then force both to be strings before localCompare\n comparatorResult = valueA.toString().localeCompare(valueB.toString());\n }\n else {\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction === 'asc' ? 1 : -1);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFVO0lBQ3ZDLGlHQUFpRztJQUNqRyw0RkFBNEY7SUFDNUYsb0ZBQW9GO0lBQ3BGLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQzFCLElBQU8sRUFDUCxZQUFvQjtJQUVwQixNQUFNLEtBQUssR0FBSSxJQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTdELElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLHFFQUFxRTtRQUNyRSw4REFBOEQ7UUFDOUQsT0FBTyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFJLElBQVMsRUFBRSxJQUFhO0lBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLE1BQWdCLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsTUFBZ0IsQ0FBQyxDQUFDO1FBRXhELHNGQUFzRjtRQUN0RiwyRkFBMkY7UUFDM0YsNEVBQTRFO1FBQzVFLDZDQUE2QztRQUM3QyxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JDLDRGQUE0RjtZQUU1RixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0QsbUZBQW1GO2dCQUNuRixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztvQkFDcEIsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QixDQUFDO3FCQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO29CQUMzQixnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDMUIsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLm1vZGVsJztcblxuY29uc3QgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbmV4cG9ydCBmdW5jdGlvbiBfaXNOdW1iZXJWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIHBhcnNlRmxvYXQodmFsdWUpIGhhbmRsZXMgbW9zdCBvZiB0aGUgY2FzZXMgd2UncmUgaW50ZXJlc3RlZCBpbiAoaXQgdHJlYXRzIG51bGwsIGVtcHR5IHN0cmluZyxcbiAgLy8gYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzIGFzIE5hTiwgd2hlcmUgTnVtYmVyIGp1c3QgdXNlcyAwKSBidXQgaXQgY29uc2lkZXJzIHRoZSBzdHJpbmdcbiAgLy8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG4gIHJldHVybiAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSBhcyBhbnkpKSAmJiAhaXNOYU4oTnVtYmVyKHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHNvcnRpbmdEYXRhQWNjZXNzb3I8VD4oXG4gIGRhdGE6IFQsXG4gIHNvcnRIZWFkZXJJZDogc3RyaW5nXG4pOiBzdHJpbmcgfCBudW1iZXIge1xuICBjb25zdCB2YWx1ZSA9IChkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pW3NvcnRIZWFkZXJJZF07XG5cbiAgaWYgKF9pc051bWJlclZhbHVlKHZhbHVlKSkge1xuICAgIGNvbnN0IG51bWJlclZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgIC8vIE51bWJlcnMgYmV5b25kIGBNQVhfU0FGRV9JTlRFR0VSYCBjYW4ndCBiZSBjb21wYXJlZCByZWxpYWJseSBzbyB3ZVxuICAgIC8vIGxlYXZlIHRoZW0gYXMgc3RyaW5ncy4gRm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9nb28uZ2wveTV2YlNnXG4gICAgcmV0dXJuIG51bWJlclZhbHVlIDwgTUFYX1NBRkVfSU5URUdFUiA/IG51bWJlclZhbHVlIDogdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAaWdub3JlXG4gKiBHZXRzIGEgc29ydGVkIGNvcHkgb2YgdGhlIGRhdGEgYXJyYXkgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBTb3J0LlxuICogQHBhcmFtIGRhdGEgVGhlIGFycmF5IG9mIGRhdGEgdGhhdCBzaG91bGQgYmUgc29ydGVkLlxuICogQHBhcmFtIHNvcnQgVGhlIGNvbm5lY3RlZCBNYXRTb3J0IHRoYXQgaG9sZHMgdGhlIGN1cnJlbnQgc29ydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnREYXRhPFQ+KGRhdGE6IFRbXSwgc29ydDogU29ydDxUPik6IFRbXSB7XG4gIGNvbnN0IGFjdGl2ZSA9IHNvcnQuYWN0aXZlO1xuICBjb25zdCBkaXJlY3Rpb24gPSBzb3J0LmRpcmVjdGlvbjtcbiAgaWYgKCFhY3RpdmUgfHwgZGlyZWN0aW9uID09PSAnJykge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcmV0dXJuIGRhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IHZhbHVlQSA9IHNvcnRpbmdEYXRhQWNjZXNzb3IoYSwgYWN0aXZlIGFzIHN0cmluZyk7XG4gICAgY29uc3QgdmFsdWVCID0gc29ydGluZ0RhdGFBY2Nlc3NvcihiLCBhY3RpdmUgYXMgc3RyaW5nKTtcblxuICAgIC8vIElmIGJvdGggdmFsdWVBIGFuZCB2YWx1ZUIgZXhpc3QgKHRydXRoeSksIHRoZW4gY29tcGFyZSB0aGUgdHdvLiBPdGhlcndpc2UsIGNoZWNrIGlmXG4gICAgLy8gb25lIHZhbHVlIGV4aXN0cyB3aGlsZSB0aGUgb3RoZXIgZG9lc24ndC4gSW4gdGhpcyBjYXNlLCBleGlzdGluZyB2YWx1ZSBzaG91bGQgY29tZSBsYXN0LlxuICAgIC8vIFRoaXMgYXZvaWRzIGluY29uc2lzdGVudCByZXN1bHRzIHdoZW4gY29tcGFyaW5nIHZhbHVlcyB0byB1bmRlZmluZWQvbnVsbC5cbiAgICAvLyBJZiBuZWl0aGVyIHZhbHVlIGV4aXN0cywgcmV0dXJuIDAgKGVxdWFsKS5cbiAgICBsZXQgY29tcGFyYXRvclJlc3VsdCA9IDA7XG4gICAgaWYgKHZhbHVlQSAhPSBudWxsICYmIHZhbHVlQiAhPSBudWxsKSB7XG4gICAgICAvLyBDaGVjayBpZiBvbmUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBvdGhlcjsgaWYgZXF1YWwsIGNvbXBhcmF0b3JSZXN1bHQgc2hvdWxkIHJlbWFpbiAwLlxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlQSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlQiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gaWYgZWl0aGVyIHZhbHVlcyBhcmUgYSBzdHJpbmcsIHRoZW4gZm9yY2UgYm90aCB0byBiZSBzdHJpbmdzIGJlZm9yZSBsb2NhbENvbXBhcmVcbiAgICAgICAgY29tcGFyYXRvclJlc3VsdCA9IHZhbHVlQS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUodmFsdWVCLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlQSA+IHZhbHVlQikge1xuICAgICAgICAgIGNvbXBhcmF0b3JSZXN1bHQgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlQSA8IHZhbHVlQikge1xuICAgICAgICAgIGNvbXBhcmF0b3JSZXN1bHQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWVBICE9IG51bGwpIHtcbiAgICAgIGNvbXBhcmF0b3JSZXN1bHQgPSAxO1xuICAgIH0gZWxzZSBpZiAodmFsdWVCICE9IG51bGwpIHtcbiAgICAgIGNvbXBhcmF0b3JSZXN1bHQgPSAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyYXRvclJlc3VsdCAqIChkaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xKTtcbiAgfSk7XG59XG4iXX0=","import { sortData } from './sort-entities.utils';\nexport function createSortTraitMutators({ selectEntitiesList }, allConfigs) {\n const { remote } = allConfigs.sort;\n function sortEntities({ active, direction }, state) {\n if (remote) {\n return {\n ...state,\n sort: { ...state.sort, current: { active, direction } },\n };\n }\n const { adapter } = allConfigs.loadEntities;\n const entities = selectEntitiesList(state);\n const sortedIds = sortData(entities, { active, direction }).map((v) => adapter.selectId(v));\n return {\n ...state,\n ids: sortedIds,\n sort: { ...state.sort, current: { active, direction } },\n };\n }\n return {\n sortEntities,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLEVBQUUsa0JBQWtCLEVBQWlDLEVBQ3JELFVBQTJDO0lBRTNDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSyxDQUFDO0lBRXBDLFNBQVMsWUFBWSxDQUVuQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWdCLEVBQUUsS0FBUTtRQUM3QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRTthQUN4RCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBYSxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNwRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNwQixDQUFDO1FBQ0YsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEdBQUcsRUFBRSxTQUFTO1lBQ2QsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRTtTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU87UUFDTCxZQUFZO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU2VsZWN0b3JzLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFNvcnQsXG4gIFNvcnRFbnRpdGllc011dGF0b3JzLFxuICBTb3J0RW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IHNvcnREYXRhIH0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLnV0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNvcnRUcmFpdE11dGF0b3JzPEVudGl0eT4oXG4gIHsgc2VsZWN0RW50aXRpZXNMaXN0IH06IExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+LFxuICBhbGxDb25maWdzOiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4pOiBTb3J0RW50aXRpZXNNdXRhdG9yczxFbnRpdHk+IHtcbiAgY29uc3QgeyByZW1vdGUgfSA9IGFsbENvbmZpZ3Muc29ydCE7XG5cbiAgZnVuY3Rpb24gc29ydEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU29ydEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KHsgYWN0aXZlLCBkaXJlY3Rpb24gfTogU29ydDxFbnRpdHk+LCBzdGF0ZTogUykge1xuICAgIGlmIChyZW1vdGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzb3J0OiB7IC4uLnN0YXRlLnNvcnQsIGN1cnJlbnQ6IHsgYWN0aXZlLCBkaXJlY3Rpb24gfSB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGFkYXB0ZXIgfSA9IGFsbENvbmZpZ3MubG9hZEVudGl0aWVzITtcbiAgICBjb25zdCBlbnRpdGllcyA9IHNlbGVjdEVudGl0aWVzTGlzdChzdGF0ZSk7XG4gICAgY29uc3Qgc29ydGVkSWRzID0gc29ydERhdGEoZW50aXRpZXMsIHsgYWN0aXZlLCBkaXJlY3Rpb24gfSkubWFwKCh2KSA9PlxuICAgICAgYWRhcHRlci5zZWxlY3RJZCh2KVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgaWRzOiBzb3J0ZWRJZHMsXG4gICAgICBzb3J0OiB7IC4uLnN0YXRlLnNvcnQsIGN1cnJlbnQ6IHsgYWN0aXZlLCBkaXJlY3Rpb24gfSB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzb3J0RW50aXRpZXMsXG4gIH07XG59XG4iXX0=","import { createReducer, on } from '@ngrx/store';\nexport function createSortInitialState(previousInitialState, allConfigs) {\n const { defaultSort } = allConfigs.sort;\n return {\n ...previousInitialState,\n sort: {\n current: defaultSort,\n default: defaultSort,\n },\n };\n}\nexport function createSortTraitReducer(initialState, allActions, allMutators, allConfigs) {\n return createReducer(initialState, on(allActions.sortEntities, (state, { active, direction }) => allMutators.sortEntities({ active, direction }, state)), on(allActions.resetEntitiesSort, (state) => allMutators.sortEntities(state.sort?.default, state)));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zb3J0LWVudGl0aWVzL3NvcnQtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWFoRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLG9CQUF5QixFQUN6QixVQUEyQztJQUUzQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUssQ0FBQztJQUV6QyxPQUFPO1FBQ0wsR0FBRyxvQkFBb0I7UUFDdkIsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLFdBQVc7WUFDcEIsT0FBTyxFQUFFLFdBQVc7U0FDckI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FNcEMsWUFBZSxFQUNmLFVBQXFFLEVBQ3JFLFdBQXlDLEVBQ3pDLFVBQTZFO0lBRTdFLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUMzRCxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUN2RCxFQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN6QyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUNyRCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNBY3Rpb25zLFxuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuaW1wb3J0IHtcbiAgU29ydEVudGl0aWVzQWN0aW9ucyxcbiAgU29ydEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIFNvcnRFbnRpdGllc011dGF0b3JzLFxuICBTb3J0RW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNvcnRJbml0aWFsU3RhdGU8RW50aXR5PihcbiAgcHJldmlvdXNJbml0aWFsU3RhdGU6IGFueSxcbiAgYWxsQ29uZmlnczogU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuKTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNvcnRFbnRpdGllc1N0YXRlPEVudGl0eT4ge1xuICBjb25zdCB7IGRlZmF1bHRTb3J0IH0gPSBhbGxDb25maWdzLnNvcnQhO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgc29ydDoge1xuICAgICAgY3VycmVudDogZGVmYXVsdFNvcnQsXG4gICAgICBkZWZhdWx0OiBkZWZhdWx0U29ydCxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU29ydFRyYWl0UmVkdWNlcjxcbiAgRW50aXR5LFxuICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmXG4gICAgU29ydEVudGl0aWVzU3RhdGU8RW50aXR5PiA9IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJlxuICAgIFNvcnRFbnRpdGllc1N0YXRlPEVudGl0eT5cbj4oXG4gIGluaXRpYWxTdGF0ZTogUyxcbiAgYWxsQWN0aW9uczogU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICYgTG9hZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+LFxuICBhbGxNdXRhdG9yczogU29ydEVudGl0aWVzTXV0YXRvcnM8RW50aXR5PixcbiAgYWxsQ29uZmlnczogTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbikge1xuICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICBpbml0aWFsU3RhdGUsXG4gICAgb24oYWxsQWN0aW9ucy5zb3J0RW50aXRpZXMsIChzdGF0ZSwgeyBhY3RpdmUsIGRpcmVjdGlvbiB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMuc29ydEVudGl0aWVzKHsgYWN0aXZlLCBkaXJlY3Rpb24gfSwgc3RhdGUpXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLnJlc2V0RW50aXRpZXNTb3J0LCAoc3RhdGUpID0+XG4gICAgICBhbGxNdXRhdG9ycy5zb3J0RW50aXRpZXMoc3RhdGUuc29ydD8uZGVmYXVsdCwgc3RhdGUpXG4gICAgKVxuICApO1xufVxuIl19","export function createSortTraitSelectors() {\n function selectEntitiesSort(state) {\n return state.sort?.current;\n }\n return {\n selectEntitiesSort,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NvcnQtZW50aXRpZXMvc29ydC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLHdCQUF3QjtJQUd0QyxTQUFTLGtCQUFrQixDQUFDLEtBQWdDO1FBQzFELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU87UUFDTCxrQkFBa0I7S0FDbkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTb3J0RW50aXRpZXNTZWxlY3RvcnMsXG4gIFNvcnRFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL3NvcnQtZW50aXRpZXMubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU29ydFRyYWl0U2VsZWN0b3JzPFxuICBFbnRpdHlcbj4oKTogU29ydEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4ge1xuICBmdW5jdGlvbiBzZWxlY3RFbnRpdGllc1NvcnQoc3RhdGU6IFNvcnRFbnRpdGllc1N0YXRlPEVudGl0eT4pIHtcbiAgICByZXR1cm4gc3RhdGUuc29ydD8uY3VycmVudDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0aWVzU29ydCxcbiAgfTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { TraitEffect } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatMap } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport function createSortTraitEffect(allActions, allConfigs) {\n const { remote } = allConfigs.sort;\n class SortEffect extends TraitEffect {\n constructor() {\n super(...arguments);\n this.remoteSort$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.sortEntities, allActions.resetEntitiesSort), concatMap(() => allActions.loadEntitiesFirstPage\n ? [\n allActions.clearEntitiesPagesCache(),\n allActions.loadEntitiesFirstPage(),\n ]\n : [allActions.loadEntities()]));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SortEffect, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SortEffect }); }\n }\n i0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SortEffect, decorators: [{\n type: Injectable\n }] });\n return remote ? [SortEffect] : [];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5lZmZlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NvcnQtZW50aXRpZXMvc29ydC1lbnRpdGllcy50cmFpdC5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVkzQyxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFVBRTJCLEVBQzNCLFVBQTZFO0lBRTdFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSyxDQUFDO0lBRXBDLE1BQ00sVUFBVyxTQUFRLFdBQVc7UUFEcEM7O1lBRUUsZ0JBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFDN0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLFVBQVUsQ0FBQyxxQkFBcUI7b0JBQzlCLENBQUMsQ0FBQzt3QkFDRSxVQUFVLENBQUMsdUJBQXVCLEVBQUU7d0JBQ3BDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRTtxQkFDbkM7b0JBQ0gsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ2hDLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7a0hBZEssVUFBVTtzSEFBVixVQUFVOzsrRkFBVixVQUFVO3NCQURmLFVBQVU7O0lBZ0JYLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFpdEVmZmVjdCB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBTb3J0RW50aXRpZXNBY3Rpb25zLFxuICBTb3J0RW50aXRpZXNLZXllZENvbmZpZyxcbn0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMgfSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU29ydFRyYWl0RWZmZWN0PEVudGl0eT4oXG4gIGFsbEFjdGlvbnM6IExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBhbGxDb25maWdzOiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICYgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuKTogVHlwZTxUcmFpdEVmZmVjdD5bXSB7XG4gIGNvbnN0IHsgcmVtb3RlIH0gPSBhbGxDb25maWdzLnNvcnQhO1xuXG4gIEBJbmplY3RhYmxlKClcbiAgY2xhc3MgU29ydEVmZmVjdCBleHRlbmRzIFRyYWl0RWZmZWN0IHtcbiAgICByZW1vdGVTb3J0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoYWxsQWN0aW9ucy5zb3J0RW50aXRpZXMsIGFsbEFjdGlvbnMucmVzZXRFbnRpdGllc1NvcnQpLFxuICAgICAgICBjb25jYXRNYXAoKCkgPT5cbiAgICAgICAgICBhbGxBY3Rpb25zLmxvYWRFbnRpdGllc0ZpcnN0UGFnZVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgYWxsQWN0aW9ucy5jbGVhckVudGl0aWVzUGFnZXNDYWNoZSgpLFxuICAgICAgICAgICAgICAgIGFsbEFjdGlvbnMubG9hZEVudGl0aWVzRmlyc3RQYWdlKCksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW2FsbEFjdGlvbnMubG9hZEVudGl0aWVzKCldXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlbW90ZSA/IFtTb3J0RWZmZWN0XSA6IFtdO1xufVxuIl19","import { createAction, props } from '@ngrx/store';\nexport function createSortTraitActions(actionsGroupKey, entitiesName) {\n return {\n sortEntities: createAction(`${actionsGroupKey} Sort ${entitiesName}`, props()),\n resetEntitiesSort: createAction(`${actionsGroupKey} Reset ${entitiesName} Sort`),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zb3J0LWVudGl0aWVzL3NvcnQtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGVBQXVCLEVBQ3ZCLFlBQW9CO0lBRXBCLE9BQU87UUFDTCxZQUFZLEVBQUUsWUFBWSxDQUN4QixHQUFHLGVBQWUsU0FBUyxZQUFZLEVBQUUsRUFDekMsS0FBSyxFQUFnQixDQUN0QjtRQUNELGlCQUFpQixFQUFFLFlBQVksQ0FDN0IsR0FBRyxlQUFlLFVBQVUsWUFBWSxPQUFPLENBQ2hEO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU29ydCwgU29ydEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vc29ydC1lbnRpdGllcy5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTb3J0VHJhaXRBY3Rpb25zPEVudGl0eT4oXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdGllc05hbWU6IHN0cmluZ1xuKTogU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+IHtcbiAgcmV0dXJuIHtcbiAgICBzb3J0RW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gU29ydCAke2VudGl0aWVzTmFtZX1gLFxuICAgICAgcHJvcHM8U29ydDxFbnRpdHk+PigpXG4gICAgKSxcbiAgICByZXNldEVudGl0aWVzU29ydDogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBSZXNldCAke2VudGl0aWVzTmFtZX0gU29ydGBcbiAgICApLFxuICB9O1xufVxuIl19","import { createSortTraitMutators } from './sort-entities.trait.mutators';\nimport { createSortInitialState, createSortTraitReducer, } from './sort-entities.trait.reducer';\nimport { createSortTraitSelectors } from './sort-entities.trait.selectors';\nimport { createSortTraitEffect } from './sort-entities.trait.effect';\nimport { sortTraitKey, } from './sort-entities.model';\nimport { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createSortTraitActions } from './sort-entities.trait.actions';\n/**\n * Generates ngrx code to sort locally or remotely a list of entities\n * @param config\n * @param config.defaultSort - Required field, Default entity prop for the sort\n * @param config.remote - Required field, default to false, when true disables local\n * sorting and every sort action call will now trigger a loadEntities action and the backend\n * should sort the data, use selectSort in the effect that call backend to get the requested sort,\n * when false all sorting is done in memory when the sort action is fired\n *\n * @example\n * // The following trait config\n * export interface TestState\n * extends EntityAndStatusState<Todo>, SortState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSortEntitiesTrait<Todo>({\n * remote: true,\n * defaultSort: {active:'id', direction:'asc'}\n * })\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n * // adds following props to the state:\n * // sort: {\n * // current: Sort<Todo>;\n * // default: Sort<Todo>;\n * // }\n *\n * // generated actions\n * traits.actions.sortTodos({active:'id', direction:'desc'})\n * traits.actions.resetTodosSort()\n * //generated selectors\n * traits.selectors.selectTodosSort()\n */\nexport function addSortEntitiesTrait({ remote, defaultSort, }) {\n return createTraitFactory({\n key: sortTraitKey,\n depends: [loadEntitiesTraitKey],\n config: { remote, defaultSort },\n actions: ({ actionsGroupKey, entitiesName }) => createSortTraitActions(actionsGroupKey, entitiesName),\n selectors: () => createSortTraitSelectors(),\n mutators: ({ allSelectors, allConfigs }) => createSortTraitMutators(allSelectors, allConfigs),\n initialState: ({ previousInitialState, allConfigs, }) => createSortInitialState(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) => createSortTraitReducer(initialState, allActions, allMutators, allConfigs),\n effects: ({ allActions, allConfigs }) => createSortTraitEffect(allActions, allConfigs),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEdBQ3ZCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUtMLFlBQVksR0FDYixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQztBQUs5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU92RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQVMsRUFDM0MsTUFBTSxFQUNOLFdBQVcsR0FDZ0I7SUFDM0IsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsWUFBWTtRQUNqQixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUMvQixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFnQztRQUM3RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQTZCLEVBQUUsRUFBRSxDQUN4RSxzQkFBc0IsQ0FBUyxlQUFlLEVBQUUsWUFBWSxDQUFDO1FBQy9ELFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsRUFBVTtRQUNuRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQW1DLEVBQUUsRUFBRSxDQUMxRSx1QkFBdUIsQ0FDckIsWUFDK0IsRUFDL0IsVUFBVSxDQUNYO1FBQ0gsWUFBWSxFQUFFLENBQUMsRUFDYixvQkFBb0IsRUFDcEIsVUFBVSxHQUNxQixFQUFFLEVBQUUsQ0FDbkMsc0JBQXNCLENBQVMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUNqRSxzQkFBc0IsQ0FDcEIsWUFBWSxFQUNaLFVBQXVFLEVBQ3ZFLFdBQVcsRUFDWCxVQUVpQyxDQUNsQztRQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FDdEMscUJBQXFCLENBQ25CLFVBRTJCLEVBQzNCLFVBQ2lDLENBQ2xDO0tBQ0osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNvcnRUcmFpdE11dGF0b3JzIH0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVNvcnRJbml0aWFsU3RhdGUsXG4gIGNyZWF0ZVNvcnRUcmFpdFJlZHVjZXIsXG59IGZyb20gJy4vc29ydC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyJztcbmltcG9ydCB7IGNyZWF0ZVNvcnRUcmFpdFNlbGVjdG9ycyB9IGZyb20gJy4vc29ydC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgY3JlYXRlU29ydFRyYWl0RWZmZWN0IH0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLnRyYWl0LmVmZmVjdCc7XG5pbXBvcnQge1xuICBTb3J0RW50aXRpZXNBY3Rpb25zLFxuICBTb3J0RW50aXRpZXNDb25maWcsXG4gIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBTb3J0RW50aXRpZXNTZWxlY3RvcnMsXG4gIHNvcnRUcmFpdEtleSxcbn0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTZWxlY3RvcnMsXG4gIGxvYWRFbnRpdGllc1RyYWl0S2V5LFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnkgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVTb3J0VHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9zb3J0LWVudGl0aWVzLnRyYWl0LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFN0YXRlTXV0YXRvcnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSB0byBzb3J0IGxvY2FsbHkgb3IgcmVtb3RlbHkgYSBsaXN0IG9mIGVudGl0aWVzXG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcGFyYW0gY29uZmlnLmRlZmF1bHRTb3J0IC0gUmVxdWlyZWQgZmllbGQsIERlZmF1bHQgZW50aXR5IHByb3AgZm9yIHRoZSBzb3J0XG4gKiBAcGFyYW0gY29uZmlnLnJlbW90ZSAtIFJlcXVpcmVkIGZpZWxkLCBkZWZhdWx0IHRvIGZhbHNlLCB3aGVuIHRydWUgZGlzYWJsZXMgbG9jYWxcbiAqIHNvcnRpbmcgYW5kIGV2ZXJ5IHNvcnQgYWN0aW9uIGNhbGwgd2lsbCBub3cgdHJpZ2dlciBhIGxvYWRFbnRpdGllcyBhY3Rpb24gYW5kIHRoZSBiYWNrZW5kXG4gKiBzaG91bGQgc29ydCB0aGUgZGF0YSwgdXNlIHNlbGVjdFNvcnQgaW4gdGhlIGVmZmVjdCB0aGF0IGNhbGwgYmFja2VuZCB0byBnZXQgdGhlIHJlcXVlc3RlZCBzb3J0LFxuICogd2hlbiBmYWxzZSBhbGwgc29ydGluZyBpcyBkb25lIGluIG1lbW9yeSB3aGVuIHRoZSBzb3J0IGFjdGlvbiBpcyBmaXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgZm9sbG93aW5nIHRyYWl0IGNvbmZpZ1xuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgRW50aXR5QW5kU3RhdHVzU3RhdGU8VG9kbz4sIFNvcnRTdGF0ZTxUb2RvPnt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIHtlbnRpdHlOYW1lOiAnVG9kbyd9LFxuICogICAgICBhZGRMb2FkRW50aXRpZXNUcmFpdDxUb2RvPigpLFxuICogICAgICBhZGRTb3J0RW50aXRpZXNUcmFpdDxUb2RvPih7XG4gKiAgICAgICAgcmVtb3RlOiB0cnVlLFxuICogICAgICAgIGRlZmF1bHRTb3J0OiB7YWN0aXZlOidpZCcsIGRpcmVjdGlvbjonYXNjJ31cbiAqICAgICAgfSlcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICogLy8gICBhZGRzIGZvbGxvd2luZyBwcm9wcyB0byB0aGUgc3RhdGU6XG4gKiAvLyAgICAgIHNvcnQ6IHtcbiAqIC8vICAgICAgICBjdXJyZW50OiBTb3J0PFRvZG8+O1xuICogLy8gICAgICAgIGRlZmF1bHQ6IFNvcnQ8VG9kbz47XG4gKiAvLyAgICAgIH1cbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuc29ydFRvZG9zKHthY3RpdmU6J2lkJywgZGlyZWN0aW9uOidkZXNjJ30pXG4gKiB0cmFpdHMuYWN0aW9ucy5yZXNldFRvZG9zU29ydCgpXG4gKiAvL2dlbmVyYXRlZCBzZWxlY3RvcnNcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NTb3J0KClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFNvcnRFbnRpdGllc1RyYWl0PEVudGl0eT4oe1xuICByZW1vdGUsXG4gIGRlZmF1bHRTb3J0LFxufTogU29ydEVudGl0aWVzQ29uZmlnPEVudGl0eT4pIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYWl0RmFjdG9yeSh7XG4gICAga2V5OiBzb3J0VHJhaXRLZXksXG4gICAgZGVwZW5kczogW2xvYWRFbnRpdGllc1RyYWl0S2V5XSxcbiAgICBjb25maWc6IHsgcmVtb3RlLCBkZWZhdWx0U29ydCB9IGFzIFNvcnRFbnRpdGllc0NvbmZpZzxFbnRpdHk+LFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lIH06IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVTb3J0VHJhaXRBY3Rpb25zPEVudGl0eT4oYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUpLFxuICAgIHNlbGVjdG9yczogKCkgPT4gY3JlYXRlU29ydFRyYWl0U2VsZWN0b3JzPEVudGl0eT4oKSxcbiAgICBtdXRhdG9yczogKHsgYWxsU2VsZWN0b3JzLCBhbGxDb25maWdzIH06IFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVTb3J0VHJhaXRNdXRhdG9yczxFbnRpdHk+KFxuICAgICAgICBhbGxTZWxlY3RvcnMgYXMgU29ydEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+LFxuICAgICAgICBhbGxDb25maWdzXG4gICAgICApLFxuICAgIGluaXRpYWxTdGF0ZTogKHtcbiAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlLFxuICAgICAgYWxsQ29uZmlncyxcbiAgICB9OiBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVTb3J0SW5pdGlhbFN0YXRlPEVudGl0eT4ocHJldmlvdXNJbml0aWFsU3RhdGUsIGFsbENvbmZpZ3MpLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucywgYWxsTXV0YXRvcnMsIGFsbENvbmZpZ3MgfSkgPT5cbiAgICAgIGNyZWF0ZVNvcnRUcmFpdFJlZHVjZXI8RW50aXR5PihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBhbGxBY3Rpb25zIGFzIFNvcnRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgICAgICAgYWxsTXV0YXRvcnMsXG4gICAgICAgIGFsbENvbmZpZ3MgYXMgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcgJlxuICAgICAgICAgIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbiAgICAgICksXG4gICAgZWZmZWN0czogKHsgYWxsQWN0aW9ucywgYWxsQ29uZmlncyB9KSA9PlxuICAgICAgY3JlYXRlU29ydFRyYWl0RWZmZWN0KFxuICAgICAgICBhbGxBY3Rpb25zIGFzIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICAgICAgICBhbGxDb25maWdzIGFzIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgICAgICAgIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbiAgICAgICksXG4gIH0pO1xufVxuIl19","import { createTraitFactory, insertIf, } from '@ngrx-traits/core';\nimport { createAction, createReducer, on } from '@ngrx/store';\n/**\n * Generates the ngrx code needed to reset the current state to the initial state.\n * @param traitConfig - Config object fot the trait factory\n * @param traitConfig.resetOn - set an extra action which will also trigger a reset state,\n * useful if you want to create an action that reset several features states\n *\n * @example\n * // The following trait config\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addResetEntitiesStateTrait()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n * // generated actions\n * traits.actions.resetTodosState()\n */\nexport function addResetEntitiesStateTrait(traitConfig = {}) {\n return createTraitFactory({\n key: 'reset',\n config: traitConfig,\n actions: ({ actionsGroupKey, entitiesName, }) => ({\n resetEntitiesState: createAction(`${actionsGroupKey} Reset ${entitiesName} State`),\n }),\n reducer: ({ allActions, initialState }) => createReducer(initialState, on(allActions.resetEntitiesState, () => initialState), ...insertIf(traitConfig.resetOn, () => \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n on(...traitConfig.resetOn, () => initialState))),\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQudHJhaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3Jlc2V0L3Jlc2V0LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsUUFBUSxHQUVULE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFpQixZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxjQUVJLEVBQUU7SUFFTixPQUFPLGtCQUFrQixDQUFDO1FBQ3hCLEdBQUcsRUFBRSxPQUFPO1FBQ1osTUFBTSxFQUFFLFdBQVc7UUFDbkIsT0FBTyxFQUFFLENBQUMsRUFDUixlQUFlLEVBQ2YsWUFBWSxHQUNjLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixHQUFHLGVBQWUsVUFBVSxZQUFZLFFBQVEsQ0FDakQ7U0FDRixDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUN4QyxhQUFhLENBQ1gsWUFBWSxFQUNaLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQ3JELEdBQUcsUUFBUSxDQUFzQixXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUN6RCxvRUFBb0U7UUFDcEUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FDaEQsQ0FDRjtLQUNKLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVUcmFpdEZhY3RvcnksXG4gIGluc2VydElmLFxuICBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBjcmVhdGVBY3Rpb24sIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgbmdyeCBjb2RlIG5lZWRlZCB0byByZXNldCB0aGUgY3VycmVudCBzdGF0ZSB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIEBwYXJhbSB0cmFpdENvbmZpZyAtIENvbmZpZyBvYmplY3QgZm90IHRoZSB0cmFpdCBmYWN0b3J5XG4gKiBAcGFyYW0gdHJhaXRDb25maWcucmVzZXRPbiAtIHNldCBhbiBleHRyYSBhY3Rpb24gd2hpY2ggd2lsbCBhbHNvIHRyaWdnZXIgYSByZXNldCBzdGF0ZSxcbiAqIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gYWN0aW9uIHRoYXQgcmVzZXQgc2V2ZXJhbCBmZWF0dXJlcyBzdGF0ZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGZvbGxvd2luZyB0cmFpdCBjb25maWdcbiAqXG4gKiAgICBjb25zdCB0cmFpdHMgPSBjcmVhdGVFbnRpdHlGZWF0dXJlRmFjdG9yeShcbiAqICAgICAge2VudGl0eU5hbWU6ICdUb2RvJ30sXG4gKiAgICAgIGFkZExvYWRFbnRpdGllc1RyYWl0PFRvZG8+KCksXG4gKiAgICAgIGFkZFJlc2V0RW50aXRpZXNTdGF0ZVRyYWl0KClcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICogLy8gZ2VuZXJhdGVkIGFjdGlvbnNcbiAqIHRyYWl0cy5hY3Rpb25zLnJlc2V0VG9kb3NTdGF0ZSgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRSZXNldEVudGl0aWVzU3RhdGVUcmFpdChcbiAgdHJhaXRDb25maWc6IHtcbiAgICByZXNldE9uPzogcmVhZG9ubHkgQWN0aW9uQ3JlYXRvcltdO1xuICB9ID0ge30sXG4pIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYWl0RmFjdG9yeSh7XG4gICAga2V5OiAncmVzZXQnLFxuICAgIGNvbmZpZzogdHJhaXRDb25maWcsXG4gICAgYWN0aW9uczogKHtcbiAgICAgIGFjdGlvbnNHcm91cEtleSxcbiAgICAgIGVudGl0aWVzTmFtZSxcbiAgICB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PiAoe1xuICAgICAgcmVzZXRFbnRpdGllc1N0YXRlOiBjcmVhdGVBY3Rpb24oXG4gICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gUmVzZXQgJHtlbnRpdGllc05hbWV9IFN0YXRlYCxcbiAgICAgICksXG4gICAgfSksXG4gICAgcmVkdWNlcjogKHsgYWxsQWN0aW9ucywgaW5pdGlhbFN0YXRlIH0pID0+XG4gICAgICBjcmVhdGVSZWR1Y2VyKFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIG9uKGFsbEFjdGlvbnMucmVzZXRFbnRpdGllc1N0YXRlLCAoKSA9PiBpbml0aWFsU3RhdGUpLFxuICAgICAgICAuLi5pbnNlcnRJZjx0eXBlb2YgaW5pdGlhbFN0YXRlPih0cmFpdENvbmZpZy5yZXNldE9uLCAoKSA9PlxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgb24oLi4udHJhaXRDb25maWcucmVzZXRPbiEsICgpID0+IGluaXRpYWxTdGF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==","import { camelCaseToSentence, createTraitFactory } from '@ngrx-traits/core';\nimport { createAction, createReducer, on } from '@ngrx/store';\n/**\n * Generates the typical ngrx code need to make a async action with\n * a request, success and failure actions, plus a status property to track its progress\n * and selectors to query the status. This trait can be added more thant once as long\n * as the name prop is different.\n *\n * @param options - Config object for the trait factory\n * @param options.name - Name of the main request action, should be in camel case\n * @param options.actionProps - Optional param for the main request action, use the props()\n * function for its value, if not present action will have no params,\n * @param options.actionSuccessProps - Optional param for the request success action,\n * use the props() function for its value, if not present action success will have no params\n * @param options.actionFailProps - Optional param for the request fail action,\n * use the props() function for its value, if not present action fail will have no params\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends AsyncActionState<'createClient'>{}\n *\n * // The following trait config\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addAsyncActionTrait({\n * name: 'createClient',\n * actionProps: props<{ name: string }>(),\n * actionSuccessProps: props<{ id: string }>(),\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<AsyncActionState<'createClient'>>(\n * 'client',\n * ),\n * });\n * // adds following props to the state:\n * // createClientStatus?: 'loading' | 'success' | 'fail';\n *\n * // generated actions\n * traits.actions.createClient({name:'Pedro'})\n * traits.actions.createClientSuccess({id:'123'})\n * traits.actions.createClientFail();\n * //generated selectors\n * traits.selectors.isLoadingCreateClient\n * traits.selectors.isSuccessCreateClient\n * traits.selectors.isFailCreateClient\n */\nexport function addAsyncActionTrait({ name, actionProps, actionSuccessProps, actionFailProps, }) {\n const nameAsSentence = camelCaseToSentence(name);\n let internalActions;\n return createTraitFactory({\n key: name + '-call',\n config: {\n name,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n },\n actions: ({ actionsGroupKey, }) => {\n internalActions = {\n request: (actionProps\n ? createAction(`${actionsGroupKey} ${nameAsSentence}`, actionProps)\n : createAction(`${actionsGroupKey} ${nameAsSentence}`)),\n requestSuccess: (actionSuccessProps\n ? createAction(`${actionsGroupKey} ${nameAsSentence} Success`, actionSuccessProps)\n : createAction(`${actionsGroupKey} ${nameAsSentence} Success`)),\n requestFail: (actionFailProps\n ? createAction(`${actionsGroupKey} ${nameAsSentence} Failure`, actionFailProps)\n : createAction(`${actionsGroupKey} ${nameAsSentence} Failure`)),\n };\n return {\n [`${name}`]: internalActions.request,\n [`${name}Success`]: internalActions.requestSuccess,\n [`${name}Fail`]: internalActions.requestFail,\n };\n },\n selectors: () => {\n function isLoadingEntity(state) {\n return state[`${name}Status`] === 'loading';\n }\n function isSuccessEntity(state) {\n return state[`${name}Status`] === 'success';\n }\n function isFailEntity(state) {\n return state[`${name}Status`] === 'fail';\n }\n const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);\n return {\n [`isLoading${capitalizedName}`]: isLoadingEntity,\n [`isSuccess${capitalizedName}`]: isSuccessEntity,\n [`isFail${capitalizedName}`]: isFailEntity,\n };\n },\n initialState: ({ previousInitialState }) => previousInitialState,\n reducer: ({ initialState }) => {\n // TypeScript error after migration to 4.9.5\n // Added 'any' to 'state' and removed 'as AsyncActionState<J>'\n // because OnReducer have a weird type for the state.\n // TODO: Investigate if possible to remove the 'any' type and have better type safety\n // tried remove the any seems to be a problex with ngrx on making the state unknown\n return createReducer(initialState, on(internalActions.request, (state) => ({\n ...state,\n [`${name}Status`]: 'loading',\n })), on(internalActions.requestFail, (state) => ({\n ...state,\n [`${name}Status`]: 'fail',\n })), on(internalActions.requestSuccess, (state) => ({\n ...state,\n [`${name}Status`]: 'success',\n })));\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtYWN0aW9uLnRyYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9hc3luYy1hY3Rpb24vYXN5bmMtYWN0aW9uLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVU5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FLakMsRUFDQSxJQUFJLEVBQ0osV0FBVyxFQUNYLGtCQUFrQixFQUNsQixlQUFlLEdBTWhCO0lBQ0MsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakQsSUFBSSxlQUtILENBQUM7SUFDRixPQUFPLGtCQUFrQixDQUFDO1FBQ3hCLEdBQUcsRUFBRSxJQUFJLEdBQUcsT0FBTztRQUNuQixNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osV0FBVztZQUNYLGtCQUFrQjtZQUNsQixlQUFlO1NBQ2hCO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFDUixlQUFlLEdBQ1csRUFLMUIsRUFBRTtZQUNGLGVBQWUsR0FBRztnQkFDaEIsT0FBTyxFQUFFLENBQUMsV0FBVztvQkFDbkIsQ0FBQyxDQUFDLFlBQVksQ0FDVixHQUFHLGVBQWUsSUFBSSxjQUFjLEVBQUUsRUFDdEMsV0FBa0IsQ0FDbkI7b0JBQ0gsQ0FBQyxDQUFDLFlBQVksQ0FDVixHQUFHLGVBQWUsSUFBSSxjQUFjLEVBQUUsQ0FDdkMsQ0FBNEM7Z0JBQ2pELGNBQWMsRUFBRSxDQUFDLGtCQUFrQjtvQkFDakMsQ0FBQyxDQUFDLFlBQVksQ0FDVixHQUFHLGVBQWUsSUFBSSxjQUFjLFVBQVUsRUFDOUMsa0JBQXlCLENBQzFCO29CQUNILENBQUMsQ0FBQyxZQUFZLENBQ1YsR0FBRyxlQUFlLElBQUksY0FBYyxVQUFVLENBQy9DLENBQTZDO2dCQUNsRCxXQUFXLEVBQUUsQ0FBQyxlQUFlO29CQUMzQixDQUFDLENBQUMsWUFBWSxDQUNWLEdBQUcsZUFBZSxJQUFJLGNBQWMsVUFBVSxFQUM5QyxlQUFzQixDQUN2QjtvQkFDSCxDQUFDLENBQUMsWUFBWSxDQUNWLEdBQUcsZUFBZSxJQUFJLGNBQWMsVUFBVSxDQUMvQyxDQUE0QzthQUNsRCxDQUFDO1lBQ0YsT0FBTztnQkFDTCxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDcEMsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDLGNBQWM7Z0JBQ2xELENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxXQUFXO2FBQ1EsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFNBQVMsZUFBZSxDQUFnQyxLQUFRO2dCQUM5RCxPQUFRLEtBQWEsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxTQUFTLGVBQWUsQ0FBZ0MsS0FBUTtnQkFDOUQsT0FBUSxLQUFhLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsU0FBUyxZQUFZLENBQWdDLEtBQVE7Z0JBQzNELE9BQVEsS0FBYSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUM7WUFDcEQsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPO2dCQUNMLENBQUMsWUFBWSxlQUFlLEVBQUUsQ0FBQyxFQUFFLGVBQWU7Z0JBQ2hELENBQUMsWUFBWSxlQUFlLEVBQUUsQ0FBQyxFQUFFLGVBQWU7Z0JBQ2hELENBQUMsU0FBUyxlQUFlLEVBQUUsQ0FBQyxFQUFFLFlBQVk7YUFDSyxDQUFDO1FBQ3BELENBQUM7UUFDRCxZQUFZLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixFQUFrQyxFQUFFLEVBQUUsQ0FDekUsb0JBQTJDO1FBQzdDLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUM1Qiw0Q0FBNEM7WUFDNUMsOERBQThEO1lBQzlELHFEQUFxRDtZQUNyRCxxRkFBcUY7WUFDckYsbUZBQW1GO1lBQ25GLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLEdBQUcsS0FBSztnQkFDUixDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxTQUFTO2FBQzdCLENBQUMsQ0FBQyxFQUNILEVBQUUsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQyxHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsTUFBTTthQUMxQixDQUFDLENBQUMsRUFDSCxFQUFFLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsR0FBRyxLQUFLO2dCQUNSLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLFNBQVM7YUFDN0IsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FtZWxDYXNlVG9TZW50ZW5jZSwgY3JlYXRlVHJhaXRGYWN0b3J5IH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvclByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25DcmVhdG9yV2l0aE9wdGlvbmFsUHJvcHMsXG4gIEFzeW5jQWN0aW9uQWN0aW9ucyxcbiAgQXN5bmNBY3Rpb25TZWxlY3RvcnMsXG4gIEFzeW5jQWN0aW9uU3RhdGUsXG59IGZyb20gJy4vYXN5bmMtYWN0aW9uLm1vZGVsJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHR5cGljYWwgbmdyeCBjb2RlIG5lZWQgdG8gbWFrZSBhIGFzeW5jIGFjdGlvbiB3aXRoXG4gKiBhIHJlcXVlc3QsIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgYWN0aW9ucywgcGx1cyBhIHN0YXR1cyBwcm9wZXJ0eSB0byB0cmFjayBpdHMgcHJvZ3Jlc3NcbiAqIGFuZCBzZWxlY3RvcnMgdG8gcXVlcnkgdGhlIHN0YXR1cy4gVGhpcyB0cmFpdCBjYW4gYmUgYWRkZWQgbW9yZSB0aGFudCBvbmNlIGFzIGxvbmdcbiAqIGFzIHRoZSBuYW1lIHByb3AgaXMgZGlmZmVyZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlnIG9iamVjdCBmb3IgdGhlIHRyYWl0IGZhY3RvcnlcbiAqIEBwYXJhbSBvcHRpb25zLm5hbWUgLSBOYW1lIG9mIHRoZSBtYWluIHJlcXVlc3QgYWN0aW9uLCBzaG91bGQgYmUgaW4gY2FtZWwgY2FzZVxuICogQHBhcmFtIG9wdGlvbnMuYWN0aW9uUHJvcHMgLSBPcHRpb25hbCBwYXJhbSBmb3IgdGhlIG1haW4gcmVxdWVzdCBhY3Rpb24sIHVzZSB0aGUgcHJvcHMoKVxuICogZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZSwgaWYgbm90IHByZXNlbnQgYWN0aW9uIHdpbGwgaGF2ZSBubyBwYXJhbXMsXG4gKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb25TdWNjZXNzUHJvcHMgLSBPcHRpb25hbCBwYXJhbSBmb3IgdGhlIHJlcXVlc3Qgc3VjY2VzcyBhY3Rpb24sXG4gKiB1c2UgdGhlIHByb3BzKCkgZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZSwgaWYgbm90IHByZXNlbnQgYWN0aW9uIHN1Y2Nlc3Mgd2lsbCBoYXZlIG5vIHBhcmFtc1xuICogQHBhcmFtIG9wdGlvbnMuYWN0aW9uRmFpbFByb3BzIC0gT3B0aW9uYWwgcGFyYW0gZm9yIHRoZSByZXF1ZXN0IGZhaWwgYWN0aW9uLFxuICogdXNlIHRoZSBwcm9wcygpIGZ1bmN0aW9uIGZvciBpdHMgdmFsdWUsIGlmIG5vdCBwcmVzZW50IGFjdGlvbiBmYWlsIHdpbGwgaGF2ZSBubyBwYXJhbXNcbiAqIEByZXR1cm5zIHRoZSB0cmFpdCBmYWN0b3J5XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBleHBvcnQgaW50ZXJmYWNlIFRlc3RTdGF0ZVxuICogZXh0ZW5kcyBBc3luY0FjdGlvblN0YXRlPCdjcmVhdGVDbGllbnQnPnt9XG4gKlxuICogLy8gVGhlIGZvbGxvd2luZyB0cmFpdCBjb25maWdcbiAqIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkQXN5bmNBY3Rpb25UcmFpdCh7XG4gKiAgICAgICAgbmFtZTogJ2NyZWF0ZUNsaWVudCcsXG4gKiAgICAgICAgYWN0aW9uUHJvcHM6IHByb3BzPHsgbmFtZTogc3RyaW5nIH0+KCksXG4gKiAgICAgICAgYWN0aW9uU3VjY2Vzc1Byb3BzOiBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSxcbiAqICAgICAgfSksXG4gKiApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnQ2xpZW50JyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8QXN5bmNBY3Rpb25TdGF0ZTwnY3JlYXRlQ2xpZW50Jz4+KFxuICogICAgICAgICdjbGllbnQnLFxuICogICAgICApLFxuICogICAgfSk7XG4gKiAvLyAgIGFkZHMgZm9sbG93aW5nIHByb3BzIHRvIHRoZSBzdGF0ZTpcbiAqIC8vICAgIGNyZWF0ZUNsaWVudFN0YXR1cz86ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsJztcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50KHtuYW1lOidQZWRybyd9KVxuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50U3VjY2Vzcyh7aWQ6JzEyMyd9KVxuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50RmFpbCgpO1xuICogLy9nZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLmlzTG9hZGluZ0NyZWF0ZUNsaWVudFxuICogdHJhaXRzLnNlbGVjdG9ycy5pc1N1Y2Nlc3NDcmVhdGVDbGllbnRcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNGYWlsQ3JlYXRlQ2xpZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBc3luY0FjdGlvblRyYWl0PFxuICBKIGV4dGVuZHMgc3RyaW5nLFxuICBSZXF1ZXN0IGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBSZXNwb25zZSBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgRmFpbHVyZSBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4oe1xuICBuYW1lLFxuICBhY3Rpb25Qcm9wcyxcbiAgYWN0aW9uU3VjY2Vzc1Byb3BzLFxuICBhY3Rpb25GYWlsUHJvcHMsXG59OiB7XG4gIG5hbWU6IEo7XG4gIGFjdGlvblByb3BzPzogQWN0aW9uQ3JlYXRvclByb3BzPFJlcXVlc3Q+O1xuICBhY3Rpb25TdWNjZXNzUHJvcHM/OiBBY3Rpb25DcmVhdG9yUHJvcHM8UmVzcG9uc2U+O1xuICBhY3Rpb25GYWlsUHJvcHM/OiBBY3Rpb25DcmVhdG9yUHJvcHM8RmFpbHVyZT47XG59KSB7XG4gIGNvbnN0IG5hbWVBc1NlbnRlbmNlID0gY2FtZWxDYXNlVG9TZW50ZW5jZShuYW1lKTtcblxuICBsZXQgaW50ZXJuYWxBY3Rpb25zOiBBc3luY0FjdGlvbkFjdGlvbnM8XG4gICAgUmVxdWVzdCxcbiAgICBSZXNwb25zZSxcbiAgICBGYWlsdXJlLFxuICAgICdyZXF1ZXN0J1xuICA+O1xuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6IG5hbWUgKyAnLWNhbGwnLFxuICAgIGNvbmZpZzoge1xuICAgICAgbmFtZSxcbiAgICAgIGFjdGlvblByb3BzLFxuICAgICAgYWN0aW9uU3VjY2Vzc1Byb3BzLFxuICAgICAgYWN0aW9uRmFpbFByb3BzLFxuICAgIH0sXG4gICAgYWN0aW9uczogKHtcbiAgICAgIGFjdGlvbnNHcm91cEtleSxcbiAgICB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKTogQXN5bmNBY3Rpb25BY3Rpb25zPFxuICAgICAgUmVxdWVzdCxcbiAgICAgIFJlc3BvbnNlLFxuICAgICAgRmFpbHVyZSxcbiAgICAgIEpcbiAgICA+ID0+IHtcbiAgICAgIGludGVybmFsQWN0aW9ucyA9IHtcbiAgICAgICAgcmVxdWVzdDogKGFjdGlvblByb3BzXG4gICAgICAgICAgPyBjcmVhdGVBY3Rpb24oXG4gICAgICAgICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gJHtuYW1lQXNTZW50ZW5jZX1gLFxuICAgICAgICAgICAgICBhY3Rpb25Qcm9wcyBhcyBhbnksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBjcmVhdGVBY3Rpb24oXG4gICAgICAgICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gJHtuYW1lQXNTZW50ZW5jZX1gLFxuICAgICAgICAgICAgKSkgYXMgQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPFJlcXVlc3Q+LFxuICAgICAgICByZXF1ZXN0U3VjY2VzczogKGFjdGlvblN1Y2Nlc3NQcm9wc1xuICAgICAgICAgID8gY3JlYXRlQWN0aW9uKFxuICAgICAgICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9ICR7bmFtZUFzU2VudGVuY2V9IFN1Y2Nlc3NgLFxuICAgICAgICAgICAgICBhY3Rpb25TdWNjZXNzUHJvcHMgYXMgYW55LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogY3JlYXRlQWN0aW9uKFxuICAgICAgICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9ICR7bmFtZUFzU2VudGVuY2V9IFN1Y2Nlc3NgLFxuICAgICAgICAgICAgKSkgYXMgQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPFJlc3BvbnNlPixcbiAgICAgICAgcmVxdWVzdEZhaWw6IChhY3Rpb25GYWlsUHJvcHNcbiAgICAgICAgICA/IGNyZWF0ZUFjdGlvbihcbiAgICAgICAgICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSAke25hbWVBc1NlbnRlbmNlfSBGYWlsdXJlYCxcbiAgICAgICAgICAgICAgYWN0aW9uRmFpbFByb3BzIGFzIGFueSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGNyZWF0ZUFjdGlvbihcbiAgICAgICAgICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSAke25hbWVBc1NlbnRlbmNlfSBGYWlsdXJlYCxcbiAgICAgICAgICAgICkpIGFzIEFjdGlvbkNyZWF0b3JXaXRoT3B0aW9uYWxQcm9wczxGYWlsdXJlPixcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbYCR7bmFtZX1gXTogaW50ZXJuYWxBY3Rpb25zLnJlcXVlc3QsXG4gICAgICAgIFtgJHtuYW1lfVN1Y2Nlc3NgXTogaW50ZXJuYWxBY3Rpb25zLnJlcXVlc3RTdWNjZXNzLFxuICAgICAgICBbYCR7bmFtZX1GYWlsYF06IGludGVybmFsQWN0aW9ucy5yZXF1ZXN0RmFpbCxcbiAgICAgIH0gYXMgQXN5bmNBY3Rpb25BY3Rpb25zPFJlcXVlc3QsIFJlc3BvbnNlLCBGYWlsdXJlLCBKPjtcbiAgICB9LFxuICAgIHNlbGVjdG9yczogKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gaXNMb2FkaW5nRW50aXR5PFMgZXh0ZW5kcyBBc3luY0FjdGlvblN0YXRlPEo+PihzdGF0ZTogUykge1xuICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7bmFtZX1TdGF0dXNgXSA9PT0gJ2xvYWRpbmcnO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNTdWNjZXNzRW50aXR5PFMgZXh0ZW5kcyBBc3luY0FjdGlvblN0YXRlPEo+PihzdGF0ZTogUykge1xuICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7bmFtZX1TdGF0dXNgXSA9PT0gJ3N1Y2Nlc3MnO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNGYWlsRW50aXR5PFMgZXh0ZW5kcyBBc3luY0FjdGlvblN0YXRlPEo+PihzdGF0ZTogUykge1xuICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7bmFtZX1TdGF0dXNgXSA9PT0gJ2ZhaWwnO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FwaXRhbGl6ZWROYW1lID0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbYGlzTG9hZGluZyR7Y2FwaXRhbGl6ZWROYW1lfWBdOiBpc0xvYWRpbmdFbnRpdHksXG4gICAgICAgIFtgaXNTdWNjZXNzJHtjYXBpdGFsaXplZE5hbWV9YF06IGlzU3VjY2Vzc0VudGl0eSxcbiAgICAgICAgW2Bpc0ZhaWwke2NhcGl0YWxpemVkTmFtZX1gXTogaXNGYWlsRW50aXR5LFxuICAgICAgfSBhcyBBc3luY0FjdGlvblNlbGVjdG9yczxKLCBBc3luY0FjdGlvblN0YXRlPEo+PjtcbiAgICB9LFxuICAgIGluaXRpYWxTdGF0ZTogKHsgcHJldmlvdXNJbml0aWFsU3RhdGUgfTogVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgcHJldmlvdXNJbml0aWFsU3RhdGUgYXMgQXN5bmNBY3Rpb25TdGF0ZTxKPixcbiAgICByZWR1Y2VyOiAoeyBpbml0aWFsU3RhdGUgfSkgPT4ge1xuICAgICAgLy8gVHlwZVNjcmlwdCBlcnJvciBhZnRlciBtaWdyYXRpb24gdG8gNC45LjVcbiAgICAgIC8vIEFkZGVkICdhbnknIHRvICdzdGF0ZScgYW5kIHJlbW92ZWQgJ2FzIEFzeW5jQWN0aW9uU3RhdGU8Sj4nXG4gICAgICAvLyBiZWNhdXNlIE9uUmVkdWNlciBoYXZlIGEgd2VpcmQgdHlwZSBmb3IgdGhlIHN0YXRlLlxuICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgaWYgcG9zc2libGUgdG8gcmVtb3ZlIHRoZSAnYW55JyB0eXBlIGFuZCBoYXZlIGJldHRlciB0eXBlIHNhZmV0eVxuICAgICAgLy8gdHJpZWQgcmVtb3ZlIHRoZSBhbnkgc2VlbXMgdG8gYmUgYSBwcm9ibGV4IHdpdGggbmdyeCBvbiBtYWtpbmcgdGhlIHN0YXRlIHVua25vd25cbiAgICAgIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIG9uKGludGVybmFsQWN0aW9ucy5yZXF1ZXN0LCAoc3RhdGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBbYCR7bmFtZX1TdGF0dXNgXTogJ2xvYWRpbmcnLFxuICAgICAgICB9KSksXG4gICAgICAgIG9uKGludGVybmFsQWN0aW9ucy5yZXF1ZXN0RmFpbCwgKHN0YXRlOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgW2Ake25hbWV9U3RhdHVzYF06ICdmYWlsJyxcbiAgICAgICAgfSkpLFxuICAgICAgICBvbihpbnRlcm5hbEFjdGlvbnMucmVxdWVzdFN1Y2Nlc3MsIChzdGF0ZTogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIFtgJHtuYW1lfVN0YXR1c2BdOiAnc3VjY2VzcycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=","import { capitalize, createTraitFactory } from '@ngrx-traits/core';\nimport { createReducer, on } from '@ngrx/store';\nimport { addAsyncActionTrait } from '../async-action/async-action.trait';\n/**\n * Generates ngrx code needed to load and entity and store it in a state. This action can be added\n * more than once as long as the entityName para is different\n * @param entityName - Entity name, should be in camel case\n * @param options.actionProps - Optional param for the main request action,\n * use the props() function for its value, if not present action will have no params,\n * @param options.actionSuccessProps - Optional param for the request success\n * action, use the props() function for its value, if not present action success will have no params\n * @param options.actionFailProps - Optional param for the request fail action,\n * use the props() function for its value, if not present action fail will have no params\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends LoadEntityState<Client,'client'>{}\n *\n * const traits = createEntityFeatureFactory(\n * ...addLoadEntityTraits({\n * entityName: 'client',\n * requestProps: props<{ id: string }>(),\n * responseProps: props<{ client: Client }>(),\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<\n * LoadEntityState<Client, 'client'>\n * >('client'),\n * });\n *\n * // adds following props to the state:\n * // loadClientStatus?: 'loading' | 'success' | 'fail';\n * // client?: Client;\n *\n * // generated actions\n * traits.actions.loadClient({id:123});\n * traits.actions.loadClientSuccess({client: {id: '123', name: 'gabs'}});\n * traits.actions.loadClientFail();\n * // generated selectors\n * traits.selectors.selectClient()\n * traits.selectors.isLoadingLoadClient()\n * traits.selectors.isSuccessLoadClient()\n * traits.selectors.isFailLoadClient()\n */\nexport function addLoadEntityTraits({ entityName, actionProps, actionSuccessProps, actionFailProps, }) {\n const capitalizedName = capitalize(entityName);\n return [\n addAsyncActionTrait({\n name: ('load' + capitalizedName),\n actionProps,\n actionSuccessProps,\n actionFailProps,\n }),\n createTraitFactory({\n key: `load${capitalizedName}`,\n config: { entityName, actionProps, actionSuccessProps, actionFailProps },\n selectors: () => {\n function selectEntity(state) {\n return state[`${entityName}`];\n }\n return {\n [`select${capitalizedName}`]: selectEntity,\n };\n },\n initialState: ({ previousInitialState, }) => previousInitialState,\n reducer: ({ initialState, allActions }) => {\n return createReducer(initialState, on(allActions[`load${capitalizedName}Success`], (state, action) => ({\n ...state,\n [entityName]: action[entityName],\n })));\n },\n }),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1lbnRpdHkudHJhaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9sb2FkLWVudGl0eS9sb2FkLWVudGl0eS50cmFpdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQU9qQyxFQUNBLFVBQVUsRUFDVixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsR0FNaEI7SUFDQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFJL0MsT0FBTztRQUNMLG1CQUFtQixDQUFnQztZQUNqRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFNO1lBQ3JDLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZUFBZTtTQUNoQixDQUFDO1FBQ0Ysa0JBQWtCLENBQUM7WUFDakIsR0FBRyxFQUFFLE9BQU8sZUFBZSxFQUFFO1lBQzdCLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFO1lBQ3hFLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2QsU0FBUyxZQUFZLENBQUMsS0FBWTtvQkFDaEMsT0FBUSxLQUFhLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBVyxDQUFDO2dCQUNuRCxDQUFDO2dCQUVELE9BQU87b0JBQ0wsQ0FBQyxTQUFTLGVBQWUsRUFBRSxDQUFDLEVBQUUsWUFBWTtpQkFDVCxDQUFDO1lBQ3RDLENBQUM7WUFDRCxZQUFZLEVBQUUsQ0FBQyxFQUNiLG9CQUFvQixHQUNXLEVBQUUsRUFBRSxDQUFDLG9CQUE2QjtZQUNuRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxPQUFPLGFBQWEsQ0FDbEIsWUFBWSxFQUNaLEVBQUUsQ0FDQyxVQUFrQixDQUFDLE9BQU8sZUFBZSxTQUFTLENBQUMsRUFDcEQsQ0FBQyxLQUFVLEVBQUUsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM1QixHQUFHLEtBQUs7b0JBQ1IsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUNqQyxDQUFDLENBQ0gsQ0FDRixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUM7S0FDTSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhcGl0YWxpemUsIGNyZWF0ZVRyYWl0RmFjdG9yeSB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZyB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3JQcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBhZGRBc3luY0FjdGlvblRyYWl0IH0gZnJvbSAnLi4vYXN5bmMtYWN0aW9uL2FzeW5jLWFjdGlvbi50cmFpdCc7XG5pbXBvcnQgeyBMb2FkRW50aXR5U2VsZWN0b3JzLCBMb2FkRW50aXR5U3RhdGUgfSBmcm9tICcuL2xvYWQtZW50aXR5Lm1vZGVsJztcblxudHlwZSBSZWNvcmRFbnRpdHk8VD4gPSBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgaW5mZXIgSj4gPyBKIDogbmV2ZXI7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSBuZWVkZWQgdG8gbG9hZCBhbmQgZW50aXR5IGFuZCBzdG9yZSBpdCBpbiBhIHN0YXRlLiBUaGlzIGFjdGlvbiBjYW4gYmUgYWRkZWRcbiAqIG1vcmUgdGhhbiBvbmNlIGFzIGxvbmcgYXMgdGhlIGVudGl0eU5hbWUgcGFyYSBpcyBkaWZmZXJlbnRcbiAqIEBwYXJhbSBlbnRpdHlOYW1lIC0gRW50aXR5IG5hbWUsIHNob3VsZCBiZSBpbiBjYW1lbCBjYXNlXG4gKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb25Qcm9wcyAtIE9wdGlvbmFsIHBhcmFtIGZvciB0aGUgbWFpbiByZXF1ZXN0IGFjdGlvbixcbiAqIHVzZSB0aGUgcHJvcHMoKSBmdW5jdGlvbiBmb3IgaXRzIHZhbHVlLCBpZiBub3QgcHJlc2VudCBhY3Rpb24gd2lsbCBoYXZlIG5vIHBhcmFtcyxcbiAqIEBwYXJhbSBvcHRpb25zLmFjdGlvblN1Y2Nlc3NQcm9wcyAtIE9wdGlvbmFsIHBhcmFtIGZvciB0aGUgcmVxdWVzdCBzdWNjZXNzXG4gKiBhY3Rpb24sIHVzZSB0aGUgcHJvcHMoKSBmdW5jdGlvbiBmb3IgaXRzIHZhbHVlLCBpZiBub3QgcHJlc2VudCBhY3Rpb24gc3VjY2VzcyB3aWxsIGhhdmUgbm8gcGFyYW1zXG4gKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb25GYWlsUHJvcHMgLSBPcHRpb25hbCBwYXJhbSBmb3IgdGhlIHJlcXVlc3QgZmFpbCBhY3Rpb24sXG4gKiB1c2UgdGhlIHByb3BzKCkgZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZSwgaWYgbm90IHByZXNlbnQgYWN0aW9uIGZhaWwgd2lsbCBoYXZlIG5vIHBhcmFtc1xuICogQHJldHVybnMgdGhlIHRyYWl0IGZhY3RvcnlcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGV4cG9ydCBpbnRlcmZhY2UgVGVzdFN0YXRlXG4gKiBleHRlbmRzIExvYWRFbnRpdHlTdGF0ZTxDbGllbnQsJ2NsaWVudCc+e31cbiAqXG4gKiBjb25zdCB0cmFpdHMgPSBjcmVhdGVFbnRpdHlGZWF0dXJlRmFjdG9yeShcbiAqIC4uLmFkZExvYWRFbnRpdHlUcmFpdHMoe1xuICogICAgICAgIGVudGl0eU5hbWU6ICdjbGllbnQnLFxuICogICAgICAgIHJlcXVlc3RQcm9wczogcHJvcHM8eyBpZDogc3RyaW5nIH0+KCksXG4gKiAgICAgICAgcmVzcG9uc2VQcm9wczogcHJvcHM8eyBjbGllbnQ6IENsaWVudCB9PigpLFxuICogICAgICB9KSxcbiAqICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdDbGllbnQnLFxuICogICAgICBmZWF0dXJlU2VsZWN0b3I6IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxcbiAqICAgICAgICBMb2FkRW50aXR5U3RhdGU8Q2xpZW50LCAnY2xpZW50Jz5cbiAqICAgICAgICA+KCdjbGllbnQnKSxcbiAqICAgIH0pO1xuICpcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgbG9hZENsaWVudFN0YXR1cz86ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsJztcbiAqIC8vICAgIGNsaWVudD86IENsaWVudDtcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMubG9hZENsaWVudCh7aWQ6MTIzfSk7XG4gKiB0cmFpdHMuYWN0aW9ucy5sb2FkQ2xpZW50U3VjY2Vzcyh7Y2xpZW50OiB7aWQ6ICcxMjMnLCBuYW1lOiAnZ2Ficyd9fSk7XG4gKiB0cmFpdHMuYWN0aW9ucy5sb2FkQ2xpZW50RmFpbCgpO1xuICogLy8gZ2VuZXJhdGVkIHNlbGVjdG9yc1xuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RDbGllbnQoKVxuICogdHJhaXRzLnNlbGVjdG9ycy5pc0xvYWRpbmdMb2FkQ2xpZW50KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNTdWNjZXNzTG9hZENsaWVudCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLmlzRmFpbExvYWRDbGllbnQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTG9hZEVudGl0eVRyYWl0czxcbiAgSiBleHRlbmRzIHN0cmluZyxcbiAgUmVxdWVzdCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2UgZXh0ZW5kcyBSZWNvcmQ8SiwgYW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgRmFpbHVyZSBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgRW50aXR5ID0gUmVjb3JkRW50aXR5PFJlc3BvbnNlPixcbiAgU3RhdGUgZXh0ZW5kcyBMb2FkRW50aXR5U3RhdGU8YW55LCBzdHJpbmc+ID0gTG9hZEVudGl0eVN0YXRlPEVudGl0eSwgSj4sXG4+KHtcbiAgZW50aXR5TmFtZSxcbiAgYWN0aW9uUHJvcHMsXG4gIGFjdGlvblN1Y2Nlc3NQcm9wcyxcbiAgYWN0aW9uRmFpbFByb3BzLFxufToge1xuICBlbnRpdHlOYW1lOiBKO1xuICBhY3Rpb25Qcm9wcz86IEFjdGlvbkNyZWF0b3JQcm9wczxSZXF1ZXN0PjtcbiAgYWN0aW9uU3VjY2Vzc1Byb3BzPzogQWN0aW9uQ3JlYXRvclByb3BzPFJlc3BvbnNlPjtcbiAgYWN0aW9uRmFpbFByb3BzPzogQWN0aW9uQ3JlYXRvclByb3BzPEZhaWx1cmU+O1xufSkge1xuICBjb25zdCBjYXBpdGFsaXplZE5hbWUgPSBjYXBpdGFsaXplKGVudGl0eU5hbWUpO1xuXG4gIHR5cGUgSyA9IGBsb2FkJHtDYXBpdGFsaXplPEogJiBzdHJpbmc+fWA7XG5cbiAgcmV0dXJuIFtcbiAgICBhZGRBc3luY0FjdGlvblRyYWl0PEssIFJlcXVlc3QsIFJlc3BvbnNlLCBGYWlsdXJlPih7XG4gICAgICBuYW1lOiAoJ2xvYWQnICsgY2FwaXRhbGl6ZWROYW1lKSBhcyBLLFxuICAgICAgYWN0aW9uUHJvcHMsXG4gICAgICBhY3Rpb25TdWNjZXNzUHJvcHMsXG4gICAgICBhY3Rpb25GYWlsUHJvcHMsXG4gICAgfSksXG4gICAgY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICAgIGtleTogYGxvYWQke2NhcGl0YWxpemVkTmFtZX1gLFxuICAgICAgY29uZmlnOiB7IGVudGl0eU5hbWUsIGFjdGlvblByb3BzLCBhY3Rpb25TdWNjZXNzUHJvcHMsIGFjdGlvbkZhaWxQcm9wcyB9LFxuICAgICAgc2VsZWN0b3JzOiAoKSA9PiB7XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEVudGl0eShzdGF0ZTogU3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7ZW50aXR5TmFtZX1gXSBhcyBFbnRpdHk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtgc2VsZWN0JHtjYXBpdGFsaXplZE5hbWV9YF06IHNlbGVjdEVudGl0eSxcbiAgICAgICAgfSBhcyBMb2FkRW50aXR5U2VsZWN0b3JzPEVudGl0eSwgSj47XG4gICAgICB9LFxuICAgICAgaW5pdGlhbFN0YXRlOiAoe1xuICAgICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICAgIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT4gcHJldmlvdXNJbml0aWFsU3RhdGUgYXMgU3RhdGUsXG4gICAgICByZWR1Y2VyOiAoeyBpbml0aWFsU3RhdGUsIGFsbEFjdGlvbnMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgICAgb24oXG4gICAgICAgICAgICAoYWxsQWN0aW9ucyBhcyBhbnkpW2Bsb2FkJHtjYXBpdGFsaXplZE5hbWV9U3VjY2Vzc2BdLFxuICAgICAgICAgICAgKHN0YXRlOiBhbnksIGFjdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgW2VudGl0eU5hbWVdOiBhY3Rpb25bZW50aXR5TmFtZV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KSxcbiAgXSBhcyBjb25zdDtcbn1cbiJdfQ==","import { capitalize, createTraitFactory, } from '@ngrx-traits/core';\nimport { createAction, createReducer, on } from '@ngrx/store';\n/**\n * Generates ngrx code needed to set and entity in the store state\n * @param entityName - Entity name, should be in camel case\n * @param options.actionProps - param for the main request action,\n * use the props() function for its value\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends SetEntityState<Client,'client'>{}\n *\n * const traits = createEntityFeatureFactory(\n * addSetEntityTraits({\n * entityName: 'client',\n * actionProps: props<{ client: Client }\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<\n * SetEntityState<Client, 'client'>\n * >('client'),\n * });\n * // adds following props to the state:\n * // client?: Client;\n *\n * // generated actions\n * traits.actions.setClient({client: {id:123, name: 'gabs'}});\n * //generated selectors\n * traits.selectors.selectClient()\n */\nexport function addSetEntityTrait({ entityName, actionProps, }) {\n const capitalizedName = capitalize(entityName);\n return createTraitFactory({\n key: `load${capitalizedName}`,\n config: { entityName, actionProps },\n actions: ({ actionsGroupKey }) => {\n const setEntity = createAction(`${actionsGroupKey} Set ${capitalizedName}`, actionProps);\n return {\n [`set${capitalizedName}`]: setEntity,\n };\n },\n selectors: () => {\n function selectEntity(state) {\n return state[`${entityName}`];\n }\n return {\n [`select${capitalizedName}`]: selectEntity,\n };\n },\n initialState: ({ previousInitialState }) => previousInitialState,\n reducer: ({ initialState, allActions }) => {\n return createReducer(initialState, on(allActions[`set${capitalizedName}`], (state, action) => ({\n ...state,\n [entityName]: action[entityName],\n })));\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWVudGl0eS50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2V0LWVudGl0eS9zZXQtZW50aXR5LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysa0JBQWtCLEdBRW5CLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBSy9CLEVBQ0EsVUFBVSxFQUNWLFdBQVcsR0FJWjtJQUNDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUvQyxPQUFPLGtCQUFrQixDQUFDO1FBQ3hCLEdBQUcsRUFBRSxPQUFPLGVBQWUsRUFBRTtRQUM3QixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO1FBQ25DLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUE2QixFQUFFLEVBQUU7WUFDMUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUM1QixHQUFHLGVBQWUsUUFBUSxlQUFlLEVBQUUsRUFDM0MsV0FBa0IsQ0FDbkIsQ0FBQztZQUVGLE9BQU87Z0JBQ0wsQ0FBQyxNQUFNLGVBQWUsRUFBRSxDQUFDLEVBQUUsU0FBUzthQUNMLENBQUM7UUFDcEMsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxTQUFTLFlBQVksQ0FBQyxLQUFZO2dCQUNoQyxPQUFRLEtBQWEsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFXLENBQUM7WUFDbkQsQ0FBQztZQUVELE9BQU87Z0JBQ0wsQ0FBQyxTQUFTLGVBQWUsRUFBRSxDQUFDLEVBQUUsWUFBWTthQUNWLENBQUM7UUFDckMsQ0FBQztRQUNELFlBQVksRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQWtDLEVBQUUsRUFBRSxDQUN6RSxvQkFBNkI7UUFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUN4QyxPQUFPLGFBQWEsQ0FDbEIsWUFBWSxFQUNaLEVBQUUsQ0FDQyxVQUFrQixDQUFDLE1BQU0sZUFBZSxFQUFFLENBQUMsRUFDNUMsQ0FBQyxLQUFVLEVBQUUsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO2FBQ2pDLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNhcGl0YWxpemUsXG4gIGNyZWF0ZVRyYWl0RmFjdG9yeSxcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbn0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3JQcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHtcbiAgU2V0RW50aXR5QWN0aW9ucyxcbiAgU2V0RW50aXR5U2VsZWN0b3JzLFxuICBTZXRFbnRpdHlTdGF0ZSxcbn0gZnJvbSAnLi9zZXQtZW50aXR5Lm1vZGVsJztcblxudHlwZSBSZWNvcmRFbnRpdHk8VD4gPSBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgaW5mZXIgSj4gPyBKIDogbmV2ZXI7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSBuZWVkZWQgdG8gc2V0IGFuZCBlbnRpdHkgaW4gdGhlIHN0b3JlIHN0YXRlXG4gKiBAcGFyYW0gZW50aXR5TmFtZSAtIEVudGl0eSBuYW1lLCBzaG91bGQgYmUgaW4gY2FtZWwgY2FzZVxuICogQHBhcmFtIG9wdGlvbnMuYWN0aW9uUHJvcHMgLSBwYXJhbSBmb3IgdGhlIG1haW4gcmVxdWVzdCBhY3Rpb24sXG4gKiB1c2UgdGhlIHByb3BzKCkgZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZVxuICogQHJldHVybnMgdGhlIHRyYWl0IGZhY3RvcnlcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGV4cG9ydCBpbnRlcmZhY2UgVGVzdFN0YXRlXG4gKiBleHRlbmRzIFNldEVudGl0eVN0YXRlPENsaWVudCwnY2xpZW50Jz57fVxuICpcbiAqIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogYWRkU2V0RW50aXR5VHJhaXRzKHtcbiAqICAgICAgICBlbnRpdHlOYW1lOiAnY2xpZW50JyxcbiAqICAgICAgICBhY3Rpb25Qcm9wczogcHJvcHM8eyBjbGllbnQ6IENsaWVudCB9XG4gKiAgICAgIH0pLFxuICogKSh7XG4gKiAgICAgIGFjdGlvbnNHcm91cEtleTogJ0NsaWVudCcsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFxuICogICAgICAgIFNldEVudGl0eVN0YXRlPENsaWVudCwgJ2NsaWVudCc+XG4gKiAgICAgICAgPignY2xpZW50JyksXG4gKiAgICB9KTtcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgY2xpZW50PzogQ2xpZW50O1xuICpcbiAqIC8vIGdlbmVyYXRlZCBhY3Rpb25zXG4gKiB0cmFpdHMuYWN0aW9ucy5zZXRDbGllbnQoe2NsaWVudDoge2lkOjEyMywgbmFtZTogJ2dhYnMnfX0pO1xuICogLy9nZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdENsaWVudCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZXRFbnRpdHlUcmFpdDxcbiAgSiBleHRlbmRzIHN0cmluZyxcbiAgUGF5bG9hZCBleHRlbmRzIFJlY29yZDxKLCBhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBFbnRpdHkgPSBSZWNvcmRFbnRpdHk8UGF5bG9hZD4sXG4gIFN0YXRlIGV4dGVuZHMgU2V0RW50aXR5U3RhdGU8RW50aXR5LCBKPiA9IFNldEVudGl0eVN0YXRlPEVudGl0eSwgSj4sXG4+KHtcbiAgZW50aXR5TmFtZSxcbiAgYWN0aW9uUHJvcHMsXG59OiB7XG4gIGVudGl0eU5hbWU6IEo7XG4gIGFjdGlvblByb3BzPzogQWN0aW9uQ3JlYXRvclByb3BzPFBheWxvYWQ+O1xufSkge1xuICBjb25zdCBjYXBpdGFsaXplZE5hbWUgPSBjYXBpdGFsaXplKGVudGl0eU5hbWUpO1xuXG4gIHJldHVybiBjcmVhdGVUcmFpdEZhY3Rvcnkoe1xuICAgIGtleTogYGxvYWQke2NhcGl0YWxpemVkTmFtZX1gLFxuICAgIGNvbmZpZzogeyBlbnRpdHlOYW1lLCBhY3Rpb25Qcm9wcyB9LFxuICAgIGFjdGlvbnM6ICh7IGFjdGlvbnNHcm91cEtleSB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PiB7XG4gICAgICBjb25zdCBzZXRFbnRpdHkgPSBjcmVhdGVBY3Rpb24oXG4gICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gU2V0ICR7Y2FwaXRhbGl6ZWROYW1lfWAsXG4gICAgICAgIGFjdGlvblByb3BzIGFzIGFueSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgc2V0JHtjYXBpdGFsaXplZE5hbWV9YF06IHNldEVudGl0eSxcbiAgICAgIH0gYXMgU2V0RW50aXR5QWN0aW9uczxQYXlsb2FkLCBKPjtcbiAgICB9LFxuICAgIHNlbGVjdG9yczogKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gc2VsZWN0RW50aXR5KHN0YXRlOiBTdGF0ZSkge1xuICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7ZW50aXR5TmFtZX1gXSBhcyBFbnRpdHk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgc2VsZWN0JHtjYXBpdGFsaXplZE5hbWV9YF06IHNlbGVjdEVudGl0eSxcbiAgICAgIH0gYXMgU2V0RW50aXR5U2VsZWN0b3JzPEVudGl0eSwgSj47XG4gICAgfSxcbiAgICBpbml0aWFsU3RhdGU6ICh7IHByZXZpb3VzSW5pdGlhbFN0YXRlIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlIGFzIFN0YXRlLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucyB9KSA9PiB7XG4gICAgICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBvbihcbiAgICAgICAgICAoYWxsQWN0aW9ucyBhcyBhbnkpW2BzZXQke2NhcGl0YWxpemVkTmFtZX1gXSxcbiAgICAgICAgICAoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIFtlbnRpdHlOYW1lXTogYWN0aW9uW2VudGl0eU5hbWVdLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { createTraitFactory, TraitEffect, } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { createAction, createReducer, on, props } from '@ngrx/store';\nimport { delay, map, mapTo, tap } from 'rxjs/operators';\nimport { entitiesPaginationTraitKey, } from '../entities-pagination';\nimport { filterEntitiesTraitKey, } from '../filter-entities';\nimport { sortTraitKey, } from '../sort-entities';\nimport * as i0 from \"@angular/core\";\n/**\n * Generates ngrx code necessary to load and set to the current route query params for the filter, sort and paging traits\n *\n * @example\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addFilterEntitiesTrait(),\n * addSortEntitiesTrait<Todo>({\n * remote: true,\n * defaultSort: {active:'id', direction:'asc'}\n * })\n * addEntitiesPaginationTrait<Todo>(),\n * addEntitiesSyncToRouteQueryParams()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n *\n * // generated actions\n * traits.actions.loadTodosUsingRouteQueryParams()\n */\nexport function addEntitiesSyncToRouteQueryParams() {\n let setEntitiesRouteQueryParams;\n return createTraitFactory({\n key: 'entitiesSyncToRouteQueryParams',\n depends: [entitiesPaginationTraitKey, sortTraitKey, filterEntitiesTraitKey],\n actions({ actionsGroupKey, entitiesName }) {\n const actions = {\n loadEntitiesUsingRouteQueryParams: createAction(`${actionsGroupKey} Load ${entitiesName} Using Route Query Params`),\n };\n setEntitiesRouteQueryParams = createAction(`${actionsGroupKey} Set ${entitiesName} Route Query Params`, props());\n return { ...actions, setEntitiesRouteQueryParams };\n },\n reducer({ initialState, allMutators: m }) {\n const allMutators = m;\n return createReducer(initialState, on(setEntitiesRouteQueryParams, (state, { params: p }) => {\n const params = { ...p };\n let newState = state;\n if (params.page) {\n newState = allMutators.setEntitiesPage(newState, +params.page);\n delete params.page;\n }\n if (params.sortActive) {\n newState = allMutators.sortEntities({\n active: params.sortActive,\n direction: params.sortDirection,\n }, newState);\n delete params.sortActive;\n delete params.sortDirection;\n }\n if (Object.keys(params).length) {\n newState = allMutators.setEntitiesFilters(params, newState);\n }\n return newState;\n }));\n },\n effects({ allActions: a }) {\n const allActions = a;\n class SyncEntitiesStateToUrlEffect extends TraitEffect {\n constructor() {\n super(...arguments);\n this.activatedRoute = inject(ActivatedRoute);\n this.router = inject(Router);\n this.loadUrlParams$ = createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesUsingRouteQueryParams), concatLatestFrom(() => this.activatedRoute.queryParams), map(([_, params]) => setEntitiesRouteQueryParams({ params })));\n });\n this.setUrlParams$ = createEffect(() => {\n return this.actions$.pipe(ofType(setEntitiesRouteQueryParams), mapTo(allActions.loadEntities()));\n });\n this.onFilter$ = !!allActions.filterEntities &&\n createEffect(() => {\n return this.actions$.pipe(ofType(allActions.filterEntities), tap(({ filters }) => {\n this.updateUrl(filters);\n }));\n }, { dispatch: false });\n this.onSort$ = !!allActions.sortEntities &&\n createEffect(() => {\n return this.actions$.pipe(ofType(allActions.sortEntities), delay(0), tap(({ active, direction }) => {\n this.updateUrl({\n sortActive: active,\n sortDirection: direction,\n });\n }));\n }, { dispatch: false });\n this.onPaginate$ = !!allActions.loadEntitiesPage &&\n createEffect(() => {\n return this.actions$.pipe(ofType(allActions.loadEntitiesPage), tap(({ index }) => {\n this.updateUrl({\n page: index,\n });\n }));\n }, { dispatch: false });\n }\n updateUrl(queryParams) {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SyncEntitiesStateToUrlEffect, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SyncEntitiesStateToUrlEffect }); }\n }\n i0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: SyncEntitiesStateToUrlEffect, decorators: [{\n type: Injectable\n }] });\n return [SyncEntitiesStateToUrlEffect];\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtc3luYy10by1yb3V0ZS1xdWVyeS1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2VudGl0aWVzLXN5bmMtdG8tcm91dGUtcXVlcnktcGFyYW1zL2VudGl0aWVzLXN5bmMtdG8tcm91dGUtcXVlcnktcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLGtCQUFrQixFQUVsQixXQUFXLEdBQ1osTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBR0wsMEJBQTBCLEdBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUdMLHNCQUFzQixHQUN2QixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFHTCxZQUFZLEdBQ2IsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDO0lBQy9DLElBQUksMkJBR0gsQ0FBQztJQUNGLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLGdDQUFnQztR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bkMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dDQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDO29DQUNiLElBQUksRUFBRSxLQUFLO2lDQUNaLENBQUMsQ0FBQzs0QkFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO3dCQUNKLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztpQkFTTDtnQkFQQyxTQUFTLENBQUMsV0FBZ0I7b0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTt3QkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO3dCQUMvQixXQUFXO3dCQUNYLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxpREFBaUQ7cUJBQ2hGLENBQUMsQ0FBQztnQkFDTCxDQUFDOzBIQTdFRyw0QkFBNEI7OEhBQTVCLDRCQUE0Qjs7dUdBQTVCLDRCQUE0Qjs4QkFEakMsVUFBVTs7WUFnRlgsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDdkM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVRyYWl0RmFjdG9yeSxcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRFZmZlY3QsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBjb25jYXRMYXRlc3RGcm9tIH0gZnJvbSAnQG5ncngvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgY3JlYXRlUmVkdWNlciwgb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZGVsYXksIG1hcCwgbWFwVG8sIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uTXV0YXRvcnMsXG4gIGVudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5LFxufSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uJztcbmltcG9ydCB7XG4gIEZpbHRlckVudGl0aWVzQWN0aW9ucyxcbiAgRmlsdGVyRW50aXRpZXNNdXRhdG9ycyxcbiAgZmlsdGVyRW50aXRpZXNUcmFpdEtleSxcbn0gZnJvbSAnLi4vZmlsdGVyLWVudGl0aWVzJztcbmltcG9ydCB7IExvYWRFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9sb2FkLWVudGl0aWVzJztcbmltcG9ydCB7XG4gIFNvcnRFbnRpdGllc0FjdGlvbnMsXG4gIFNvcnRFbnRpdGllc011dGF0b3JzLFxuICBzb3J0VHJhaXRLZXksXG59IGZyb20gJy4uL3NvcnQtZW50aXRpZXMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBuZ3J4IGNvZGUgbmVjZXNzYXJ5IHRvIGxvYWQgYW5kIHNldCB0byB0aGUgY3VycmVudCByb3V0ZSBxdWVyeSBwYXJhbXMgZm9yIHRoZSBmaWx0ZXIsIHNvcnQgYW5kIHBhZ2luZyB0cmFpdHNcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICB7ZW50aXR5TmFtZTogJ1RvZG8nfSxcbiAqICAgICAgYWRkTG9hZEVudGl0aWVzVHJhaXQ8VG9kbz4oKSxcbiAqICAgICAgYWRkRmlsdGVyRW50aXRpZXNUcmFpdCgpLFxuICogICAgICBhZGRTb3J0RW50aXRpZXNUcmFpdDxUb2RvPih7XG4gKiAgICAgICAgcmVtb3RlOiB0cnVlLFxuICogICAgICAgIGRlZmF1bHRTb3J0OiB7YWN0aXZlOidpZCcsIGRpcmVjdGlvbjonYXNjJ31cbiAqICAgICAgfSlcbiAqICAgICAgYWRkRW50aXRpZXNQYWdpbmF0aW9uVHJhaXQ8VG9kbz4oKSxcbiAqICAgICAgYWRkRW50aXRpZXNTeW5jVG9Sb3V0ZVF1ZXJ5UGFyYW1zKClcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICpcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMubG9hZFRvZG9zVXNpbmdSb3V0ZVF1ZXJ5UGFyYW1zKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEVudGl0aWVzU3luY1RvUm91dGVRdWVyeVBhcmFtcygpIHtcbiAgbGV0IHNldEVudGl0aWVzUm91dGVRdWVyeVBhcmFtczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByb3BzOiB7IHBhcmFtczogYW55IH0pID0+IHsgcGFyYW1zOiBhbnkgfSAmIEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIHJldHVybiBjcmVhdGVUcmFpdEZhY3Rvcnkoe1xuICAgIGtleTogJ2VudGl0aWVzU3luY1RvUm91dGVRdWVyeVBhcmFtcycsXG4gICAgZGVwZW5kczogW2VudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5LCBzb3J0VHJhaXRLZXksIGZpbHRlckVudGl0aWVzVHJhaXRLZXldLFxuICAgIGFjdGlvbnMoeyBhY3Rpb25zR3JvdXBLZXksIGVudGl0aWVzTmFtZSB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSB7XG4gICAgICBjb25zdCBhY3Rpb25zID0ge1xuICAgICAgICBsb2FkRW50aXRpZXNVc2luZ1JvdXRlUXVlcnlQYXJhbXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IExvYWQgJHtlbnRpdGllc05hbWV9IFVzaW5nIFJvdXRlIFF1ZXJ5IFBhcmFtc2AsXG4gICAgICAgICksXG4gICAgICB9O1xuICAgICAgc2V0RW50aXRpZXNSb3V0ZVF1ZXJ5UGFyYW1zID0gY3JlYXRlQWN0aW9uKFxuICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFNldCAke2VudGl0aWVzTmFtZX0gUm91dGUgUXVlcnkgUGFyYW1zYCxcbiAgICAgICAgcHJvcHM8eyBwYXJhbXM6IGFueSB9PigpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IC4uLmFjdGlvbnMsIHNldEVudGl0aWVzUm91dGVRdWVyeVBhcmFtcyB9IGFzIHR5cGVvZiBhY3Rpb25zO1xuICAgIH0sXG4gICAgcmVkdWNlcih7IGluaXRpYWxTdGF0ZSwgYWxsTXV0YXRvcnM6IG0gfSkge1xuICAgICAgY29uc3QgYWxsTXV0YXRvcnMgPSBtIGFzIEVudGl0aWVzUGFnaW5hdGlvbk11dGF0b3JzPGFueT4gJlxuICAgICAgICBGaWx0ZXJFbnRpdGllc011dGF0b3JzPGFueSwgYW55PiAmXG4gICAgICAgIFNvcnRFbnRpdGllc011dGF0b3JzPGFueT47XG4gICAgICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBvbihzZXRFbnRpdGllc1JvdXRlUXVlcnlQYXJhbXMsIChzdGF0ZSwgeyBwYXJhbXM6IHAgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4ucCB9O1xuICAgICAgICAgIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgIGlmIChwYXJhbXMucGFnZSkge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSBhbGxNdXRhdG9ycy5zZXRFbnRpdGllc1BhZ2UoXG4gICAgICAgICAgICAgIG5ld1N0YXRlIGFzIGFueSxcbiAgICAgICAgICAgICAgK3BhcmFtcy5wYWdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMucGFnZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcmFtcy5zb3J0QWN0aXZlKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IGFsbE11dGF0b3JzLnNvcnRFbnRpdGllcyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGl2ZTogcGFyYW1zLnNvcnRBY3RpdmUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBwYXJhbXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3U3RhdGUgYXMgYW55LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuc29ydEFjdGl2ZTtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuc29ydERpcmVjdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IGFsbE11dGF0b3JzLnNldEVudGl0aWVzRmlsdGVycyhwYXJhbXMsIG5ld1N0YXRlIGFzIGFueSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBlZmZlY3RzKHsgYWxsQWN0aW9uczogYSB9KSB7XG4gICAgICBjb25zdCBhbGxBY3Rpb25zID0gYSBhcyB0eXBlb2YgYSAmXG4gICAgICAgIEZpbHRlckVudGl0aWVzQWN0aW9uczxhbnk+ICZcbiAgICAgICAgU29ydEVudGl0aWVzQWN0aW9uczxhbnk+ICZcbiAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucztcblxuICAgICAgQEluamVjdGFibGUoKVxuICAgICAgY2xhc3MgU3luY0VudGl0aWVzU3RhdGVUb1VybEVmZmVjdCBleHRlbmRzIFRyYWl0RWZmZWN0IHtcbiAgICAgICAgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgICAgICBsb2FkVXJsUGFyYW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgICAgIG9mVHlwZShhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1VzaW5nUm91dGVRdWVyeVBhcmFtcyksXG4gICAgICAgICAgICBjb25jYXRMYXRlc3RGcm9tKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMpLFxuICAgICAgICAgICAgbWFwKChbXywgcGFyYW1zXSkgPT4gc2V0RW50aXRpZXNSb3V0ZVF1ZXJ5UGFyYW1zKHsgcGFyYW1zIH0pKSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRVcmxQYXJhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICAgICAgb2ZUeXBlKHNldEVudGl0aWVzUm91dGVRdWVyeVBhcmFtcyksXG4gICAgICAgICAgICBtYXBUbyhcbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGFsbEFjdGlvbnMgYXMgdW5rbm93biBhcyBMb2FkRW50aXRpZXNBY3Rpb25zPGFueT5cbiAgICAgICAgICAgICAgKS5sb2FkRW50aXRpZXMoKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb25GaWx0ZXIkID1cbiAgICAgICAgICAhIWFsbEFjdGlvbnMuZmlsdGVyRW50aXRpZXMgJiZcbiAgICAgICAgICBjcmVhdGVFZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgICAgICAgb2ZUeXBlKGFsbEFjdGlvbnMuZmlsdGVyRW50aXRpZXMpLFxuICAgICAgICAgICAgICAgIHRhcCgoeyBmaWx0ZXJzIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVXJsKGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICBvblNvcnQkID1cbiAgICAgICAgICAhIWFsbEFjdGlvbnMuc29ydEVudGl0aWVzICYmXG4gICAgICAgICAgY3JlYXRlRWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICAgICAgICAgIG9mVHlwZShhbGxBY3Rpb25zLnNvcnRFbnRpdGllcyksXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgdGFwKCh7IGFjdGl2ZSwgZGlyZWN0aW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVXJsKHtcbiAgICAgICAgICAgICAgICAgICAgc29ydEFjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGRpc3BhdGNoOiBmYWxzZSB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgb25QYWdpbmF0ZSQgPVxuICAgICAgICAgICEhYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlICYmXG4gICAgICAgICAgY3JlYXRlRWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICAgICAgICAgIG9mVHlwZShhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2UpLFxuICAgICAgICAgICAgICAgIHRhcCgoeyBpbmRleCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVybCh7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBkaXNwYXRjaDogZmFsc2UgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIHVwZGF0ZVVybChxdWVyeVBhcmFtczogYW55KSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsIC8vIHJlbW92ZSB0byByZXBsYWNlIGFsbCBxdWVyeSBwYXJhbXMgYnkgcHJvdmlkZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFtTeW5jRW50aXRpZXNTdGF0ZVRvVXJsRWZmZWN0XTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC10cmFpdHMtY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9uZ3J4LXRyYWl0cy1jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngrx-traits-common.mjs","sources":["../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.model.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.utils.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entities/load-entities.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.model.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.effect.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.model.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/filter-entities/filter-entities.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.effects.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-pagination/entities-pagination.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.utils.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entities/select-entities.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/select-entity/select-entity.model.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.model.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/crud-entities/crud-entities.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.model.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.utils.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.mutators.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.reducer.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.selectors.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.effect.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.actions.ts","../../../../../libs/ngrx-traits/common/src/lib/sort-entities/sort-entities.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/reset/reset.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/async-action/async-action.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/load-entity/load-entity.traits.ts","../../../../../libs/ngrx-traits/common/src/lib/set-entity/set-entity.trait.ts","../../../../../libs/ngrx-traits/common/src/lib/entities-sync-to-route-query-params/entities-sync-to-route-query-params.ts","../../../../../libs/ngrx-traits/common/src/lib/ngrx-traits-common.ts"],"sourcesContent":["import { KeyedConfig } from '@ngrx-traits/core';\nimport { Comparer, EntityAdapter, EntityState, IdSelector } from '@ngrx/entity';\nimport { Dictionary } from '@ngrx/entity';\nimport { Action, ActionCreator } from '@ngrx/store';\n\nexport type Status = 'loading' | 'success' | 'fail';\n\nexport interface StatusState {\n status?: Status;\n}\n\nexport interface LoadEntitiesState<T> extends EntityState<T>, StatusState {}\n\nexport type LoadEntitiesActions<T> = {\n /**\n * load entities from backend\n */\n loadEntities: ActionCreator<string, () => Action<string>>;\n /**\n * entities where loaded successfully\n */\n loadEntitiesSuccess: ActionCreator<\n string,\n (props: {\n entities: T[];\n total?: number;\n }) => { entities: T[]; total?: number } & Action<string>\n >;\n /**\n * entities failed loading\n */\n loadEntitiesFail: ActionCreator<\n string,\n (props?: { error?: string }) => { error?: string } & Action<string>\n >;\n};\n\nexport type LoadEntitiesSelectors<T> = {\n /**\n * returns all ids of the entities in an array\n * @param state\n */\n selectEntitiesIdsList: (state: LoadEntitiesState<T>) => string[] | number[];\n /**\n * returns all entities in a map with the id as key of the map\n * @param state\n */\n selectEntitiesMap: (state: LoadEntitiesState<T>) => Dictionary<T>;\n /**\n * returns all entities in an array\n * @param state\n */\n selectEntitiesList: (state: LoadEntitiesState<T>) => T[];\n /**\n * returns the total number of entities\n * @param state\n */\n selectEntitiesTotal: (state: LoadEntitiesState<T>) => number;\n /**\n * is currently loading entities\n * @param state\n */\n isEntitiesLoading: (state: LoadEntitiesState<T>) => boolean;\n /**\n * were the entities loaded successfully\n * @param state\n */\n isEntitiesLoadingSuccess: (state: LoadEntitiesState<T>) => boolean;\n /**\n * did the entities fail loading\n * @param state\n */\n isEntitiesLoadingFail: (state: LoadEntitiesState<T>) => boolean;\n};\n\nexport type LoadEntitiesMutators<T> = {\n /**\n * set or replace all entities currently in store\n * @param entities\n * @param state\n */\n setEntitiesList<S extends LoadEntitiesState<T>>(entities: T[], state: S): S;\n};\n\nexport type GenericActionCreator = ActionCreator<\n string,\n (...args: unknown[]) => Action<string>\n>;\n\nexport const loadEntitiesTraitKey = 'loadEntities';\n\nexport type LoadEntitiesConfig<T = unknown> = {\n /**\n * Function that returns the id of an entity if not set it attempts to return the values\n * of a property call id, this is pass to @ngrx/entity EntityAdapter\n */\n selectId?: IdSelector<T>;\n /**\n * Default sort function for to @ngrx/entity EntityAdapter\n */\n sortComparer?: false | Comparer<T>;\n /**\n * @ngrx/entity EntityAdapter\n */\n adapter: EntityAdapter<T>;\n};\n\nexport type LoadEntitiesKeyedConfig<T> = KeyedConfig<\n typeof loadEntitiesTraitKey,\n LoadEntitiesConfig<T>\n>;\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport {\n LoadEntitiesState,\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesMutators,\n} from './load-entities.model';\nimport { createReducer, on } from '@ngrx/store';\nimport { EntitiesPaginationKeyedConfig } from '../entities-pagination';\nimport { insertIf } from '@ngrx-traits/core';\n\nexport function createLoadEntitiesInitialState<Entity>(\n previousInitialState = {},\n allConfigs: LoadEntitiesKeyedConfig<Entity>\n): LoadEntitiesState<Entity> {\n const traitConfig = allConfigs.loadEntities;\n const adapter = traitConfig!.adapter;\n\n return {\n ...previousInitialState,\n ...adapter!.getInitialState(),\n status: undefined,\n };\n}\n\nexport function createLoadEntitiesTraitReducer<\n T,\n S extends LoadEntitiesState<T>\n>(\n initialState: S,\n actions: LoadEntitiesActions<T>,\n allMutators: LoadEntitiesMutators<T>,\n allConfigs: LoadEntitiesKeyedConfig<T> & EntitiesPaginationKeyedConfig\n) {\n const handleEntitiesMerge = !allConfigs?.pagination;\n\n return createReducer(\n initialState,\n on(actions.loadEntities, (state) => ({\n ...state,\n status: 'loading',\n })),\n on(actions.loadEntitiesFail, (state) => ({\n ...state,\n status: 'fail',\n })),\n on(actions.loadEntitiesSuccess, (state) => ({\n ...state,\n status: 'success',\n })),\n ...insertIf<S>(handleEntitiesMerge, () =>\n on(actions.loadEntitiesSuccess, (state, { entities }) =>\n allMutators.setEntitiesList(entities, {\n ...state,\n })\n )\n )\n );\n}\n","import {\n LoadEntitiesKeyedConfig,\n LoadEntitiesMutators,\n} from './load-entities.model';\nimport { EntitiesPaginationKeyedConfig } from '../entities-pagination';\n\nexport function createLoadEntitiesTraitMutators<Entity>(\n allConfigs: LoadEntitiesKeyedConfig<Entity> & EntitiesPaginationKeyedConfig\n) {\n const adapter = allConfigs?.loadEntities?.adapter;\n\n return {\n setEntitiesList: adapter?.setAll,\n } as LoadEntitiesMutators<Entity>;\n}\n","import { LoadEntitiesActions } from './load-entities.model';\nimport { createAction, props } from '@ngrx/store';\n\nexport function createLoadEntitiesTraitActions<Entity>(\n actionsGroupKey: string,\n entitiesName: string\n): LoadEntitiesActions<Entity> {\n const actions = {\n loadEntities: createAction(`${actionsGroupKey} Load ${entitiesName}`),\n loadEntitiesSuccess: createAction(\n `${actionsGroupKey} Load ${entitiesName} Success`,\n props<{ entities: Entity[]; total?: number }>()\n ),\n loadEntitiesFail: createAction(\n `${actionsGroupKey} Load ${entitiesName} Fail`,\n (props?: { error?: string }) => ({ error: props?.error })\n ),\n };\n\n return actions;\n}\n","import { StatusState } from './load-entities.model';\n\nexport function isLoading<S extends StatusState>(state: S) {\n return state.status === 'loading';\n}\nexport function isSuccess<S extends StatusState>(state: S) {\n return state.status === 'success';\n}\nexport function isFail<S extends StatusState>(state: S) {\n return state.status === 'fail';\n}\n","import {\n FilterEntitiesSelectors,\n FilterEntitiesState,\n} from './filter-entities.model';\nimport { LoadEntitiesState } from '../load-entities';\nexport function selectEntitiesFilter<Entity, F>(\n state: LoadEntitiesState<Entity> & FilterEntitiesState<F>\n) {\n return state.filters;\n}\n\nexport function createFilterTraitSelectors<\n Entity,\n F\n>(): FilterEntitiesSelectors<Entity, F> {\n return {\n selectEntitiesFilter,\n };\n}\n","import { Dictionary } from '@ngrx/entity';\nimport {\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n} from './load-entities.model';\nimport { FilterEntitiesKeyedConfig } from '../filter-entities';\nimport { isFail, isLoading, isSuccess } from './load-entities.utils';\nimport { createSelector } from '@ngrx/store';\nimport { selectEntitiesFilter } from '../filter-entities/filter-entities.trait.selectors';\n\nexport function createLoadEntitiesTraitSelectors<Entity>(\n allConfigs?: LoadEntitiesKeyedConfig<Entity> &\n FilterEntitiesKeyedConfig<Entity, unknown>\n) {\n const adapter = allConfigs?.loadEntities?.adapter;\n const entitySelectors = adapter!.getSelectors();\n\n const filterFunction = allConfigs?.filter?.filterFn;\n let selectors: LoadEntitiesSelectors<Entity> = {\n selectEntitiesList: entitySelectors.selectAll,\n selectEntitiesMap: entitySelectors.selectEntities,\n selectEntitiesIdsList: entitySelectors.selectIds,\n selectEntitiesTotal: entitySelectors.selectTotal,\n isEntitiesLoadingFail: isFail,\n isEntitiesLoading: isLoading,\n isEntitiesLoadingSuccess: isSuccess,\n };\n if (filterFunction && entitySelectors) {\n const selectEntitiesList = createSelector(\n entitySelectors.selectAll,\n selectEntitiesFilter,\n (entities, filters) =>\n filters ? entities.filter((e) => filterFunction(filters, e)) : entities\n );\n\n selectors = {\n ...selectors,\n selectEntitiesList,\n selectEntitiesMap: createSelector(\n selectors.selectEntitiesMap,\n selectEntitiesFilter,\n (entities, filters) => {\n const result: Dictionary<Entity> = {};\n for (const id in entities) {\n const e = entities[id];\n if (filterFunction(filters, e!)) {\n result[id] = e;\n }\n }\n return result;\n }\n ),\n selectEntitiesTotal: createSelector(\n selectEntitiesList,\n (entities) => entities.length\n ),\n selectEntitiesIdsList: createSelector(\n selectEntitiesList,\n (entities) =>\n entities.map((e) => adapter?.selectId(e)) as string[] | number[]\n ),\n } as unknown as LoadEntitiesSelectors<Entity>;\n }\n return selectors;\n}\n","import {\n createLoadEntitiesInitialState,\n createLoadEntitiesTraitReducer,\n} from './load-entities.trait.reducer';\nimport {\n LoadEntitiesState,\n LoadEntitiesConfig,\n LoadEntitiesKeyedConfig,\n loadEntitiesTraitKey,\n} from './load-entities.model';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitSelectorsFactoryConfig,\n TraitStateMutatorsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { EntitiesPaginationKeyedConfig } from '../entities-pagination';\nimport { createLoadEntitiesTraitMutators } from './load-entities.mutators';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\nimport { createLoadEntitiesTraitActions } from './load-entities.trait.actions';\nimport { createLoadEntitiesTraitSelectors } from './load-entities.trait.selectors';\n\n/**\n * Generates the ngrx code needed to load a list of entities from the backend. This trait is the base for all other traits related\n * to a list of entities, the other will call loadEntities when needing data. See the example for the list of actions and selectors this generates\n *\n * @param traitConfig - Config object for the trait factory\n * @param traitConfig.selectId - Function that returns the id of an entity\n * @param traitConfig.sortComparer - Default sort function for to @ngrx/entity EntityAdapter\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends LoadEntitiesState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // ids: string[] | number[];\n * // entities: Dictionary<Todo>;\n * // status?: 'loading' | 'success' | 'fail';\n *\n * // generated actions\n * traits.actions.loadTodos()\n * traits.actions.loadTodosSuccess({entities: todos})\n * traits.actions.loadTodosFail();\n * // generated selectors\n * traits.selectors.selectTodosList\n * traits.selectors.selectTodosMap\n * traits.selectors.selectTodosIds\n * traits.selectors.selectTodosTotal\n * traits.selectors.isTodosLoading\n * traits.selectors.isTodosLoadingSuccess\n * traits.selectors.isTodosLoadingFail\n */\nexport function addLoadEntitiesTrait<Entity>(\n traitConfig?: Omit<LoadEntitiesConfig<Entity>, 'adapter'>\n) {\n const adapter: EntityAdapter<Entity> = createEntityAdapter(traitConfig);\n\n return createTraitFactory({\n key: loadEntitiesTraitKey,\n config: { ...traitConfig, adapter } as LoadEntitiesConfig<Entity>,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createLoadEntitiesTraitActions<Entity>(actionsGroupKey, entitiesName),\n selectors: ({ allConfigs }: TraitSelectorsFactoryConfig) =>\n createLoadEntitiesTraitSelectors<Entity>(\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n mutators: ({ allConfigs }: TraitStateMutatorsFactoryConfig) =>\n createLoadEntitiesTraitMutators<Entity>(\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n initialState: ({\n previousInitialState,\n allConfigs,\n }: TraitInitialStateFactoryConfig) =>\n createLoadEntitiesInitialState<Entity>(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createLoadEntitiesTraitReducer<Entity, LoadEntitiesState<Entity>>(\n initialState,\n allActions,\n allMutators,\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n });\n}\n","/* eslint-disable @typescript-eslint/no-empty-interface */\nimport { Action, ActionCreator } from '@ngrx/store';\n\nimport { LoadEntitiesState } from '../load-entities';\n\nexport type CacheType = 'full' | 'partial' | 'grow';\nexport interface EntitiesPaginationState {\n pagination: {\n currentPage: number;\n requestPage: number;\n pageSize: number;\n total?: number;\n pagesToCache: number;\n cache: {\n type: CacheType;\n start: number;\n end: number;\n };\n };\n}\n\nexport type EntitiesPaginationActions = {\n loadEntitiesPage: ActionCreator<\n string,\n (props: {\n index: number;\n forceLoad?: boolean;\n }) => { index: number; forceLoad?: boolean } & Action<string>\n >;\n loadEntitiesPageSuccess: ActionCreator<string, () => Action<string>>;\n loadEntitiesPageFail: ActionCreator<string, () => Action<string>>;\n loadEntitiesNextPage: ActionCreator<string, () => Action<string>>;\n loadEntitiesPreviousPage: ActionCreator<string, () => Action<string>>;\n loadEntitiesFirstPage: ActionCreator<\n string,\n (forceLoad?: boolean) => { forceLoad?: boolean } & Action<string>\n >;\n loadEntitiesLastPage: ActionCreator<string, () => Action<string>>;\n clearEntitiesPagesCache: ActionCreator<string, () => Action<string>>;\n};\n\nexport type EntitiesPaginationSelectors<T> = {\n selectEntitiesCurrentPageList: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n ) => T[];\n selectEntitiesCurrentPage: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n ) => PageModel<T>;\n selectEntitiesPagedRequest: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n ) => PagedRequest;\n selectEntitiesCurrentPageInfo: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n ) => PageInfoModel;\n isLoadingEntitiesCurrentPage: (\n state: LoadEntitiesState<T> & EntitiesPaginationState,\n ) => boolean;\n};\n\nexport type EntitiesPaginationMutators<Entity> = {\n mergePaginatedEntities<\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState,\n >(\n entities: Entity[],\n total: number | undefined,\n state: S,\n ): S;\n setEntitiesPage<\n Entity,\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState,\n >(\n state: S,\n index: number,\n ): S;\n};\n\nexport interface PageModel<T> {\n entities: T[];\n isLoading: boolean;\n pageIndex: number;\n total: number | undefined;\n pageSize: number;\n pagesCount: number | undefined;\n hasPrevious: boolean;\n hasNext: boolean;\n}\n\nexport interface PageInfoModel {\n pageIndex: number;\n total: number | undefined;\n pageSize: number;\n pagesCount: number | undefined;\n hasPrevious: boolean;\n hasNext: boolean;\n cacheType: CacheType;\n}\n\nexport interface PagedRequest {\n startIndex: number;\n size: number;\n page: number;\n}\n\nexport const entitiesPaginationTraitKey = 'pagination';\n\nexport interface EntitiesPaginationConfig {\n cacheType?: CacheType;\n pageSize?: number;\n currentPage?: number;\n pagesToCache?: number;\n}\n\nexport interface EntitiesPaginationKeyedConfig {\n pagination?: EntitiesPaginationConfig;\n}\n","import { Injectable } from '@angular/core';\nimport { TraitEffect, Type } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { asyncScheduler, EMPTY, of, pipe, timer } from 'rxjs';\nimport {\n concatMap,\n debounce,\n distinctUntilChanged,\n first,\n map,\n pairwise,\n startWith,\n} from 'rxjs/operators';\n\nimport { EntitiesPaginationActions } from '../entities-pagination';\nimport {\n LoadEntitiesActions,\n LoadEntitiesSelectors,\n} from '../load-entities/load-entities.model';\nimport {\n FilterEntitiesKeyedConfig,\n FilterEntitiesSelectors,\n} from './filter-entities.model';\nimport { ƟFilterEntitiesActions } from './filter-entities.model.internal';\n\nexport function createFilterTraitEffects<Entity, F>(\n allActions: ƟFilterEntitiesActions<F> &\n LoadEntitiesActions<Entity> &\n EntitiesPaginationActions,\n allSelectors: FilterEntitiesSelectors<Entity, F> &\n LoadEntitiesSelectors<Entity>,\n allConfigs: FilterEntitiesKeyedConfig<Entity, F>,\n): Type<TraitEffect>[] {\n const traitConfig = allConfigs.filter;\n @Injectable()\n class FilterEffect extends TraitEffect {\n storeFilter$ = createEffect(\n () =>\n ({\n debounce: debounceTime = traitConfig!.defaultDebounceTime,\n scheduler = asyncScheduler,\n } = {}) =>\n this.actions$.pipe(\n ofType(allActions.filterEntities),\n debounce((value) =>\n value?.forceLoad ? of({}) : timer(debounceTime, scheduler),\n ),\n concatMap((payload) =>\n payload.patch\n ? this.store.select(allSelectors.selectEntitiesFilter).pipe(\n first(),\n map((storedFilters) => ({\n ...payload,\n filters: { ...storedFilters, ...payload?.filters },\n })),\n )\n : of(payload),\n ),\n distinctUntilChanged(\n (previous, current) =>\n !current?.forceLoad &&\n JSON.stringify(previous?.filters) ===\n JSON.stringify(current?.filters),\n ),\n traitConfig?.isRemoteFilter\n ? pipe(\n startWith({\n filters: traitConfig.defaultFilter as F,\n patch: false,\n }),\n pairwise(),\n concatMap(([previous, current]) =>\n traitConfig?.isRemoteFilter!(\n previous?.filters,\n current?.filters,\n )\n ? [\n allActions.storeEntitiesFilter({\n filters: current?.filters,\n patch: current?.patch,\n }),\n allActions.loadEntities(),\n ]\n : [\n allActions.storeEntitiesFilter({\n filters: current?.filters,\n patch: current?.patch,\n }),\n ],\n ),\n )\n : map((action) =>\n allActions.storeEntitiesFilter({\n filters: action?.filters,\n patch: action?.patch,\n }),\n ),\n ),\n );\n\n loadEntities$ =\n (!traitConfig?.filterFn || traitConfig?.isRemoteFilter) &&\n createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions['storeEntitiesFilter']),\n concatMap(() =>\n allActions?.loadEntitiesFirstPage\n ? [\n allActions.clearEntitiesPagesCache(),\n allActions.loadEntitiesFirstPage(),\n ]\n : [allActions.loadEntities()],\n ),\n );\n });\n }\n\n return [FilterEffect];\n}\n","import { createReducer, on } from '@ngrx/store';\nimport {\n LoadEntitiesActions,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport {\n FilterEntitiesKeyedConfig,\n FilterEntitiesMutators,\n FilterEntitiesState,\n} from './filter-entities.model';\nimport { ƟFilterEntitiesActions } from './filter-entities.model.internal';\n\nexport function createFilterInitialState<Entity, F>(\n previousInitialState: any,\n allConfigs: FilterEntitiesKeyedConfig<Entity, F>\n): LoadEntitiesState<Entity> & FilterEntitiesState<F> {\n return {\n ...previousInitialState,\n filters: allConfigs?.filter?.defaultFilter,\n };\n}\n\nexport function createFilterTraitReducer<\n T,\n F,\n S extends LoadEntitiesState<T> & FilterEntitiesState<F>\n>(\n initialState: S,\n allActions: ƟFilterEntitiesActions<F> & LoadEntitiesActions<T>,\n allMutators: FilterEntitiesMutators<T, F>\n) {\n return createReducer(\n initialState,\n on(allActions.storeEntitiesFilter, (state, { filters }) =>\n allMutators.setEntitiesFilters(filters, state)\n )\n );\n}\n","import { Action, ActionCreator } from '@ngrx/store';\n\nimport { LoadEntitiesState } from '../load-entities/load-entities.model';\n\nexport interface FilterEntitiesState<F> {\n filters?: F;\n}\n\ntype FilterPatchConditionalType<F, P> = P extends true ? Partial<F> : F;\n\nexport interface FilterActionOverload<F> {\n <P extends boolean>(props?: {\n filters: FilterPatchConditionalType<F, P>;\n forceLoad?: boolean;\n patch: P;\n }): {\n filters: FilterPatchConditionalType<F, P>;\n forceLoad: boolean;\n patch: P;\n } & Action<string>;\n (props?: { filters: F; forceLoad?: boolean }): {\n filters: F;\n forceLoad: boolean;\n patch: boolean;\n } & Action<string>;\n}\n\nexport type FilterEntitiesActions<F> = {\n /**\n * Store the filters param (read using selectFilter) and fires the loadEntities action\n * if the filters param has changed, this call is also debounce by default, to disable this\n * behavior you can use the forceLoad param as true or defaultDebounceTime to 0 in the trait config\n * to disable permanently.\n * If the `patch` param is set to true (default is false), the filters are merged with the previous value in the store,\n * otherwise they are replaced.\n */\n filterEntities: ActionCreator<string, FilterActionOverload<F>>;\n};\nexport type FilterEntitiesSelectors<T, F> = {\n /**\n * Returns the stored filters set by the filter action\n * @param state\n */\n selectEntitiesFilter: (\n state: LoadEntitiesState<T> & FilterEntitiesState<F>,\n ) => F | undefined;\n};\n\nexport type FilterEntitiesMutators<T, F> = {\n setEntitiesFilters<S extends LoadEntitiesState<T> & FilterEntitiesState<F>>(\n filter: F | undefined,\n state: S,\n ): S;\n};\n\nexport const filterEntitiesTraitKey = 'filter';\n\nexport type FilterEntitiesConfig<T, F> = {\n defaultFilter?: F;\n filterFn?: (filter: F, entity: T) => boolean;\n defaultDebounceTime?: number;\n isRemoteFilter?: (previous: F | undefined, current: F | undefined) => boolean;\n};\n\nexport type FilterEntitiesKeyedConfig<T, F> = {\n filter?: FilterEntitiesConfig<T, F>;\n};\n","import {\n FilterEntitiesMutators,\n FilterEntitiesState,\n} from './filter-entities.model';\nimport { LoadEntitiesState } from '../load-entities';\n\nexport function createFilterTraitMutators<Entity, F>(): FilterEntitiesMutators<\n Entity,\n F\n> {\n function setEntitiesFilters<\n S extends LoadEntitiesState<Entity> & FilterEntitiesState<F>\n >(filters: F, state: S) {\n return {\n ...state,\n filters,\n };\n }\n return { setEntitiesFilters };\n}\n","import { createAction } from '@ngrx/store';\nimport { ActionCreator } from '@ngrx/store';\n\nimport {\n FilterActionOverload,\n FilterEntitiesActions,\n} from './filter-entities.model';\nimport { ƟFilterEntitiesActions } from './filter-entities.model.internal';\n\nexport function createFilterTraitActions<F>(\n actionsGroupKey: string,\n entitiesName: string,\n): FilterEntitiesActions<F> {\n const actions: ƟFilterEntitiesActions<F> = {\n filterEntities: createAction(\n `${actionsGroupKey} Filter ${entitiesName}`,\n (props?: {\n filters: F | Partial<F>;\n forceLoad?: boolean;\n patch?: boolean;\n }) => ({\n filters: props?.filters,\n forceLoad: props?.forceLoad,\n patch: props?.patch,\n }),\n ) as ActionCreator<string, FilterActionOverload<F>>,\n storeEntitiesFilter: createAction(\n `${actionsGroupKey} Store ${entitiesName} Filter`,\n (props: { filters?: F; patch?: boolean }) => ({\n filters: props?.filters,\n patch: props?.patch,\n }),\n ),\n };\n return actions;\n}\n","import {\n EntitiesPaginationActions,\n entitiesPaginationTraitKey,\n} from '../entities-pagination/entities-pagination.model';\nimport { createFilterTraitEffects } from './filter-entities.trait.effect';\nimport {\n createFilterInitialState,\n createFilterTraitReducer,\n} from './filter-entities.trait.reducer';\nimport {\n FilterEntitiesConfig,\n FilterEntitiesKeyedConfig,\n FilterEntitiesSelectors,\n filterEntitiesTraitKey,\n} from './filter-entities.model';\nimport { createFilterTraitSelectors } from './filter-entities.trait.selectors';\nimport {\n LoadEntitiesActions,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport { createFilterTraitMutators } from './filter-entities.trait.mutators';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createFilterTraitActions } from './filter-entities.trait.actions';\nimport { ƟFilterEntitiesActions } from './filter-entities.model.internal';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n} from '@ngrx-traits/core';\n\n/**\n * Generates the ngrx code needed to filter a list of entities locally or remotely, adds a filter\n * action and a selectFilter selector, the filter action is debounced and the filter will only\n * call the loadEntities action if the params have changed, so there is no need to implement that in\n * the components. The filter action has a `forceLoad` param which can\n * be use to skip that restriction for one call or setting the `defaultDebounceTime` to 0 for all calls.\n * Calling the filter action will also replace the `filters` param in the store, if the `patch` param is set\n * the filters are merged with the previous value in the store.\n * @param traitConfig - Config object fot the trait factory\n * @param traitConfig.defaultFilter - Initial value for the filter\n * @param traitConfig.filterFn - Function to filter entities in memory, if not present then its expected\n * is filtered by the backend unless isRemoteFilter is defned\n * @param traitConfig.defaultDebounceTime - Value in milliseconds. Default to 400ms\n * @param traitConfig.isRemoteFilter - Function to when it returns true it fires loadEntities so a remote\n * backend filtering can run, otherwise it uses filterFn to do a local filtering\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends LoadEntitiesState<Todo>, FilterEntitiesState<TodoFilter>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * //addFilterEntitiesTrait<Todo,TodoFilter>() // no params uses remote filtering\n * addFilterEntitiesTrait<Todo,TodoFilter>({filterFn: (filter, entity) => // local filtering\n * !filter.content || !!entity.content?.includes(filter.content.toLowerCase())\n * // or use the following function to switch between remote search and local\n * // depending on which properties have changed in the filter\n * // isRemoteFilter: (previous, current) => previous?.someRemoteParam !== current?.someRemoteParam,\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // filters?: TodoFilter;\n *\n * // generated actions\n * traits.actions.filterTodos()\n * // generated selectors\n * traits.selectors.selectTodosFilter()\n */\nexport function addFilterEntitiesTrait<Entity, F>({\n defaultDebounceTime = 400,\n defaultFilter,\n filterFn,\n isRemoteFilter,\n}: FilterEntitiesConfig<Entity, F> = {}) {\n return createTraitFactory({\n key: filterEntitiesTraitKey,\n depends: [entitiesPaginationTraitKey, loadEntitiesTraitKey],\n config: {\n defaultDebounceTime,\n defaultFilter,\n filterFn,\n isRemoteFilter,\n } as FilterEntitiesConfig<Entity, F>,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createFilterTraitActions<F>(actionsGroupKey, entitiesName),\n selectors: () => createFilterTraitSelectors<Entity, F>(),\n mutators: () => createFilterTraitMutators<Entity, F>(),\n initialState: ({\n previousInitialState,\n allConfigs,\n }: TraitInitialStateFactoryConfig) =>\n createFilterInitialState<Entity, F>(\n previousInitialState,\n allConfigs as FilterEntitiesKeyedConfig<Entity, F>\n ),\n reducer: ({ initialState, allActions, allMutators }) =>\n createFilterTraitReducer(\n initialState,\n allActions as ƟFilterEntitiesActions<F> & LoadEntitiesActions<Entity>,\n allMutators\n ),\n effects: ({ allActions, allSelectors, allConfigs }) =>\n createFilterTraitEffects(\n allActions as ƟFilterEntitiesActions<F> &\n LoadEntitiesActions<Entity> &\n EntitiesPaginationActions,\n allSelectors as FilterEntitiesSelectors<Entity, F> &\n LoadEntitiesSelectors<Entity>,\n allConfigs\n ),\n });\n}\n","import { createSelector } from '@ngrx/store';\nimport {\n CacheType,\n EntitiesPaginationSelectors,\n EntitiesPaginationState,\n PageModel,\n} from './entities-pagination.model';\nimport {\n LoadEntitiesSelectors,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport { FilterEntitiesKeyedConfig } from '../filter-entities/filter-entities.model';\n\nexport function createPaginationTraitSelectors<Entity>(\n previousSelectors: LoadEntitiesSelectors<Entity>,\n allConfigs: FilterEntitiesKeyedConfig<Entity, unknown>\n): EntitiesPaginationSelectors<Entity> {\n const { selectEntitiesList, isEntitiesLoading } = previousSelectors;\n\n const filterFunction = allConfigs?.filter?.filterFn;\n\n function selectPagination(\n state: LoadEntitiesState<Entity> & EntitiesPaginationState\n ) {\n return state.pagination;\n }\n const selectPaginationFiltered: (\n state: LoadEntitiesState<Entity> & EntitiesPaginationState\n ) => EntitiesPaginationState['pagination'] = filterFunction\n ? createSelector(\n selectEntitiesList,\n selectPagination,\n (entities, pagination) => {\n return {\n ...pagination,\n total: entities.length,\n cache: {\n ...pagination.cache,\n start: 0,\n end: entities.length,\n },\n };\n }\n )\n : selectPagination;\n\n const selectEntitiesCurrentPageList = createSelector(\n selectEntitiesList,\n selectPaginationFiltered,\n (entities: Entity[], pagination) => {\n const page = pagination.currentPage;\n const startIndex = page * pagination.pageSize - pagination.cache.start;\n let endIndex = startIndex + pagination.pageSize;\n endIndex =\n endIndex < pagination.cache.end ? endIndex : pagination.cache.end;\n return entities.slice(startIndex, endIndex);\n }\n );\n\n const selectEntitiesCurrentPageInfo = createSelector(\n selectPaginationFiltered,\n (pagination) => {\n const pagesCount =\n pagination.total && pagination.total > 0\n ? Math.ceil(pagination.total / pagination.pageSize)\n : undefined;\n return {\n pageIndex: pagination.currentPage,\n total: pagination.total,\n pageSize: pagination.pageSize,\n pagesCount,\n hasPrevious: pagination.currentPage - 1 >= 0,\n hasNext:\n pagesCount && pagination.total && pagination.total > 0\n ? pagination.currentPage + 1 < pagesCount\n : true,\n cacheType: pagination.cache.type,\n };\n }\n );\n\n function isEntitiesPageInCache(\n page: number,\n pagination: {\n currentPage: number;\n requestPage: number;\n pageSize: number;\n total?: number;\n pagesToCache: number;\n cache: { type: CacheType; start: number; end: number };\n }\n ) {\n const startIndex = page * pagination.pageSize;\n let endIndex = startIndex + pagination.pageSize - 1;\n endIndex =\n pagination.total && endIndex > pagination.total\n ? pagination.total - 1\n : endIndex;\n return (\n startIndex >= pagination.cache.start && endIndex <= pagination.cache.end\n );\n }\n\n const isEntitiesCurrentPageInCache = createSelector(\n selectPaginationFiltered,\n (pagination) => {\n const page = pagination.currentPage;\n return isEntitiesPageInCache(page, pagination);\n }\n );\n const isEntitiesNextPageInCache = createSelector(\n selectPaginationFiltered,\n (pagination) => {\n const page = pagination.currentPage + 1;\n return isEntitiesPageInCache(page, pagination);\n }\n );\n const isLoadingEntitiesCurrentPage = createSelector(\n isEntitiesLoading,\n selectPagination,\n (isLoading, pagination) =>\n isLoading && pagination.requestPage === pagination.currentPage\n );\n\n const selectEntitiesCurrentPage = createSelector(\n selectEntitiesCurrentPageList,\n selectEntitiesCurrentPageInfo,\n isLoadingEntitiesCurrentPage,\n (entities, pageInfo, isLoading) =>\n ({\n entities,\n isLoading,\n ...pageInfo,\n } as PageModel<Entity>)\n );\n\n const selectEntitiesPagedRequest = createSelector(\n selectPagination,\n (pagination) => ({\n startIndex: pagination.pageSize * pagination.requestPage,\n size: pagination.pageSize * pagination.pagesToCache,\n page: pagination.requestPage,\n })\n );\n\n const selectors = {\n selectEntitiesCurrentPageList,\n isEntitiesNextPageInCache,\n isEntitiesCurrentPageInCache,\n selectEntitiesCurrentPage,\n selectEntitiesPagedRequest,\n selectEntitiesCurrentPageInfo,\n isLoadingEntitiesCurrentPage,\n };\n return selectors;\n}\n","import { EntitiesPaginationActions } from './entities-pagination.model';\nimport { createAction, props } from '@ngrx/store';\nimport { ƟPaginationActions } from './entities-pagination.model.internal';\n\nexport function createPaginationTraitActions(\n actionsGroupKey: string,\n entitiesName: string\n): EntitiesPaginationActions {\n const actions: ƟPaginationActions = {\n loadEntitiesPage: createAction(\n `${actionsGroupKey} Load ${entitiesName} Page`,\n ({ index, forceLoad }: { index: number; forceLoad?: boolean }) => ({\n index,\n forceLoad,\n })\n ),\n loadEntitiesPageSuccess: createAction(\n `${actionsGroupKey} Load ${entitiesName}\n Page Success`\n ),\n loadEntitiesPageFail: createAction(\n `${actionsGroupKey} Load ${entitiesName} Page Fail`\n ),\n loadEntitiesPreviousPage: createAction(\n `${actionsGroupKey} Load Previous ${entitiesName} Page`\n ),\n loadEntitiesNextPage: createAction(\n `${actionsGroupKey} Load Next ${entitiesName} Page`\n ),\n loadEntitiesFirstPage: createAction(\n `${actionsGroupKey} Load First ${entitiesName} Page`,\n (forceLoad?: boolean) => ({ forceLoad })\n ),\n loadEntitiesLastPage: createAction(\n `${actionsGroupKey} Load Last ${entitiesName} Page`\n ),\n clearEntitiesPagesCache: createAction(\n `${actionsGroupKey} Clear ${entitiesName} Cache`\n ),\n setEntitiesRequestPage: createAction(\n `${actionsGroupKey} Set ${entitiesName} Request Page`,\n props<{ index: number }>()\n ),\n };\n return actions;\n}\n","import {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport { createReducer, on } from '@ngrx/store';\n\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesMutators,\n LoadEntitiesSelectors,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport {\n EntitiesPaginationKeyedConfig,\n EntitiesPaginationMutators,\n EntitiesPaginationState,\n} from './entities-pagination.model';\nimport { CrudEntitiesActions } from '../crud-entities';\nimport { ƟPaginationActions } from './entities-pagination.model.internal';\nimport { insertIf } from '@ngrx-traits/core';\nimport { ƟFilterEntitiesActions } from '../filter-entities/filter-entities.model.internal';\n\nexport function createPaginationInitialState<Entity>(\n previousInitialState: any,\n allConfigs: EntitiesPaginationKeyedConfig\n): LoadEntitiesState<Entity> & EntitiesPaginationState {\n const { currentPage, pageSize, cacheType, pagesToCache } =\n allConfigs.pagination!;\n\n return {\n ...previousInitialState,\n pagination: {\n pageSize,\n currentPage,\n requestPage: currentPage,\n pagesToCache,\n cache: {\n type: cacheType,\n start: 0,\n end: 0,\n },\n },\n };\n}\n\nexport function createPaginationTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n>(\n initialState: S,\n allActions: ƟPaginationActions &\n ƟFilterEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n CrudEntitiesActions<Entity>,\n allSelectors: LoadEntitiesSelectors<Entity>,\n allMutators: EntitiesPaginationMutators<Entity> &\n LoadEntitiesMutators<Entity>,\n allConfigs: FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n) {\n function addToCacheTotal<\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n >(state: S, add: number) {\n return {\n ...state,\n pagination: {\n ...state.pagination,\n total: (state.pagination.total ?? 0) + add,\n },\n };\n }\n\n function clearPagesCache<\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n >(state: S): S {\n return {\n ...state,\n entities: {},\n ids: [],\n pagination: {\n ...state.pagination,\n currentPage: 0,\n total: 0,\n cache: { ...state.pagination.cache, start: 0, end: 0 },\n },\n };\n }\n\n function recalculateTotal<\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n >(state: S): S {\n const total = allSelectors.selectEntitiesTotal(state);\n return {\n ...state,\n status: 'success',\n pagination: {\n ...state.pagination,\n currentPage: 0,\n total,\n cache: {\n ...state.pagination.cache,\n start: 0,\n end: total,\n },\n },\n };\n }\n\n const filterRemote = !allConfigs?.filter?.filterFn;\n\n return createReducer(\n initialState,\n on(allActions.loadEntitiesPage, (state, { index }) =>\n allMutators.setEntitiesPage(state, index)\n ),\n on(allActions.setEntitiesRequestPage, (state, { index }) => ({\n ...state,\n pagination: {\n ...state.pagination,\n requestPage: index,\n },\n status: 'loading',\n })),\n on(allActions.loadEntitiesPageSuccess, (state) => ({\n ...state,\n status: 'success',\n })),\n on(allActions.loadEntitiesPageFail, (state) => ({\n ...state,\n status: 'fail',\n })),\n on(allActions.clearEntitiesPagesCache, (state) => clearPagesCache(state)),\n on(allActions.loadEntitiesSuccess, (state, { entities, total }) =>\n allMutators.mergePaginatedEntities(entities, total, {\n ...state,\n status: 'success',\n })\n ),\n ...insertIf<S>(allActions.addEntities, () =>\n on(allActions.addEntities, (state, { entities }) =>\n addToCacheTotal(state, entities.length)\n )\n ),\n ...insertIf<S>(allActions.removeEntities, () =>\n on(allActions.removeEntities, (state, { keys }) =>\n addToCacheTotal(state, -keys.length)\n )\n ),\n ...insertIf<S>(allActions.storeEntitiesFilter, () =>\n on(allActions.storeEntitiesFilter, (state) => recalculateTotal(state))\n ),\n ...insertIf<S>(allActions.removeAllEntities, () =>\n on(allActions.removeAllEntities, (state) => clearPagesCache(state))\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { TraitEffect } from '@ngrx-traits/core';\nimport { Type } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport {\n concatMap,\n concatMapTo,\n filter,\n first,\n map,\n tap,\n} from 'rxjs/operators';\n\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport { FilterEntitiesActions } from '../filter-entities/filter-entities.model';\nimport { LoadEntitiesActions, LoadEntitiesSelectors } from '../load-entities';\nimport { EntitiesPaginationSelectors } from './entities-pagination.model';\nimport {\n ƟEntitiesPaginationSelectors,\n ƟPaginationActions,\n} from './entities-pagination.model.internal';\n\nexport function createPaginationTraitEffects<Entity>(\n allActions: ƟPaginationActions &\n FilterEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n CrudEntitiesActions<Entity>,\n allSelectors: LoadEntitiesSelectors<Entity> &\n EntitiesPaginationSelectors<Entity>,\n): Type<TraitEffect>[] {\n @Injectable()\n class PaginationEffect extends TraitEffect {\n loadPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesPage),\n concatLatestFrom(() =>\n this.store.select(\n (allSelectors as unknown as ƟEntitiesPaginationSelectors<Entity>)\n .isEntitiesCurrentPageInCache,\n ),\n ),\n map(([{ forceLoad }, isInCache]) =>\n !forceLoad && isInCache\n ? allActions.loadEntitiesPageSuccess()\n : allActions.loadEntities(),\n ),\n );\n });\n\n preloadNextPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesPageSuccess),\n concatMapTo(\n this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first()),\n ),\n filter(\n (pageInfo) =>\n !!pageInfo.total &&\n pageInfo.hasNext &&\n pageInfo.cacheType !== 'full',\n ),\n concatMap((pageInfo) =>\n this.store\n .select(\n (allSelectors as unknown as ƟEntitiesPaginationSelectors<Entity>)\n .isEntitiesNextPageInCache,\n )\n .pipe(\n first(),\n map((isInCache) => (!isInCache && pageInfo) || undefined),\n ),\n ),\n filter((pageInfo) => !!pageInfo),\n concatMap((pageInfo) => [\n allActions.setEntitiesRequestPage({ index: pageInfo!.pageIndex + 1 }),\n allActions.loadEntities(),\n ]),\n );\n });\n\n loadFirstPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesFirstPage),\n map(() => allActions.loadEntitiesPage({ index: 0 })),\n );\n });\n\n loadPreviousPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesPreviousPage),\n concatMapTo(\n this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first()),\n ),\n map((page) =>\n page.hasPrevious\n ? allActions.loadEntitiesPage({ index: page.pageIndex - 1 })\n : allActions.loadEntitiesPageFail(),\n ),\n );\n });\n\n loadNextPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesNextPage),\n concatMapTo(\n this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first()),\n ),\n map((page) =>\n page.hasNext\n ? allActions.loadEntitiesPage({ index: page.pageIndex + 1 })\n : allActions.loadEntitiesPageFail(),\n ),\n );\n });\n\n loadLastPage$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesLastPage),\n concatMapTo(\n this.store\n .select(allSelectors.selectEntitiesCurrentPageInfo)\n .pipe(first()),\n ),\n map((page) =>\n page.hasNext && page.pagesCount\n ? allActions.loadEntitiesPage({ index: page.pagesCount - 1 })\n : allActions.loadEntitiesPageFail(),\n ),\n );\n });\n }\n return [PaginationEffect];\n}\n","import {\n EntitiesPaginationMutators,\n EntitiesPaginationSelectors,\n EntitiesPaginationState,\n} from './entities-pagination.model';\nimport { LoadEntitiesKeyedConfig, LoadEntitiesState } from '../load-entities';\n\nexport function createPaginationTraitMutators<Entity>(\n allSelectors: EntitiesPaginationSelectors<Entity>,\n allConfigs: LoadEntitiesKeyedConfig<Entity>\n): EntitiesPaginationMutators<Entity> {\n const adapter = allConfigs.loadEntities!.adapter;\n\n function mergePaginatedEntities<\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n >(entities: Entity[], total = undefined, state: S): S {\n const cacheType = state.pagination.cache.type;\n\n switch (cacheType) {\n case 'full':\n return adapter.setAll(entities, {\n ...state,\n pagination: {\n ...state.pagination,\n total: entities.length,\n cache: {\n ...state.pagination.cache,\n start: 0,\n end: entities.length,\n },\n },\n });\n case 'partial': {\n const isPreloadNextPages =\n state.pagination.currentPage + 1 === state.pagination.requestPage;\n\n const start = state.pagination.currentPage * state.pagination.pageSize;\n const newEntities = isPreloadNextPages\n ? [...allSelectors.selectEntitiesCurrentPageList(state), ...entities]\n : entities;\n return adapter.setAll(newEntities, {\n ...state,\n pagination: {\n ...state.pagination,\n total,\n cache: {\n ...state.pagination.cache,\n start,\n end: start + entities.length,\n },\n },\n });\n }\n case 'grow':\n return adapter.addMany(entities, {\n ...state,\n pagination: {\n ...state.pagination,\n total,\n cache: {\n ...state.pagination.cache,\n end: state.ids.length + entities.length,\n },\n },\n });\n }\n\n return state;\n }\n function setEntitiesPage<\n Entity,\n S extends LoadEntitiesState<Entity> & EntitiesPaginationState\n >(state: S, index: number) {\n return {\n ...state,\n pagination: {\n ...state.pagination,\n currentPage: index,\n requestPage: index,\n },\n status: 'loading',\n };\n }\n return { mergePaginatedEntities, setEntitiesPage };\n}\n","import {\n EntitiesPaginationConfig,\n EntitiesPaginationKeyedConfig,\n EntitiesPaginationMutators,\n EntitiesPaginationSelectors,\n entitiesPaginationTraitKey,\n} from './entities-pagination.model';\nimport { createPaginationTraitSelectors } from './entities-pagination.trait.selectors';\nimport { createPaginationTraitActions } from './entities-pagination.trait.actions';\nimport {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesMutators,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport {\n createPaginationInitialState,\n createPaginationTraitReducer,\n} from './entities-pagination.trait.reducer';\nimport { createPaginationTraitEffects } from './entities-pagination.trait.effects';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport { createPaginationTraitMutators } from './entities-pagination.trait.mutators';\nimport {\n ƟEntitiesPaginationSelectors,\n ƟPaginationActions,\n} from './entities-pagination.model.internal';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitSelectorsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { ƟFilterEntitiesActions } from '../filter-entities/filter-entities.model.internal';\n\n/**\n * Generates ngrx code to paginate a list of entities, this has 3 cache `cacheType`\n * - 'full': The full result is cache in memory and split in pages to render, useful\n * for small result but not so small that requires been render in pages\n * - 'partial': Backend returns partial results because is are to big, this has a cache a few pages forward\n * to avoid calling the backend on each page, the cache is clean when a new loadEntities is required\n * - 'grow': Similar to partial that the backend returns partial result, but in this case the cache grows,\n * after each loadEntities the cache is appended to the previous cache, this mode is ideal for infinite scrolls,\n * where you will only call loadNextPage.\n * To make the pagination experience smoother the loadEntities action is fired when the current page is equal\n * to the last cached page, so while the user is reading the page more pages are being loading in the background.\n * @param config\n * @param config.cacheType - Default to 'partial', change the cache mode\n * @param config.pageSize - Default to 10, number of entities on each page\n * @param config.currentPage - Default to 0, starting page\n * @param config.pagesToCache - Default to 3, used in partial and grow cache mode, is the number of\n * extra pages kept in cache to avoid calling the backend on each page\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,EntitiesPaginationState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addEntitiesPaginationTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // pagination: {\n * // currentPage: number;\n * // requestPage: number;\n * // pageSize: number;\n * // total?: number;\n * // pagesToCache: number;\n * // cache: {\n * // type: 'full' | 'partial' | 'grow';\n * // start: number;\n * // end: number;\n * // }\n * // }\n *\n * // generated actions\n * traits.actions.loadTodosPage({index})\n * traits.actions.loadTodosPageSuccess()\n * traits.actions.loadTodosPageFail()\n * traits.actions.loadTodosNextPage()\n * traits.actions.loadTodosPreviousPage()\n * traits.actions.loadTodosFirstPage()\n * traits.actions.loadTodosLastPage()\n * traits.actions.clearTodosPagesCache()\n * // generated selectors\n * traits.selectors.selectTodosCurrentPageList()\n * traits.selectors.isLoadingTodosCurrentPage()\n * // use isLoadingTodosPage over isLoadingTodos (which will return true even\n * // if the page loading is not the current one)\n * traits.selectors.selectTodosCurrentPage()\n * traits.selectors.selectTodosPagedRequest()// use in effects to get paging parameter\n * traits.selectors.selectTodosCurrentPageInfo()\n */\nexport function addEntitiesPaginationTrait<Entity>({\n cacheType = 'partial',\n pageSize = 10,\n currentPage = 0,\n pagesToCache = 3,\n}: EntitiesPaginationConfig = {}) {\n return createTraitFactory({\n key: entitiesPaginationTraitKey,\n depends: [loadEntitiesTraitKey],\n config: {\n cacheType,\n pageSize,\n currentPage,\n pagesToCache,\n } as EntitiesPaginationConfig,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createPaginationTraitActions(actionsGroupKey, entitiesName),\n selectors: ({\n previousSelectors,\n allConfigs,\n }: TraitSelectorsFactoryConfig) =>\n createPaginationTraitSelectors<Entity>(\n previousSelectors as LoadEntitiesSelectors<Entity>,\n allConfigs as EntitiesPaginationKeyedConfig &\n FilterEntitiesKeyedConfig<Entity, unknown>\n ),\n mutators: ({ allSelectors, allConfigs }) =>\n createPaginationTraitMutators<Entity>(\n allSelectors as EntitiesPaginationSelectors<Entity> &\n LoadEntitiesSelectors<Entity>,\n allConfigs as EntitiesPaginationKeyedConfig &\n LoadEntitiesKeyedConfig<Entity>\n ),\n initialState: ({\n previousInitialState,\n allConfigs,\n }: TraitInitialStateFactoryConfig) =>\n createPaginationInitialState<Entity>(\n previousInitialState,\n allConfigs as EntitiesPaginationKeyedConfig\n ),\n reducer: ({\n initialState,\n allActions,\n allSelectors,\n allMutators,\n allConfigs,\n }) =>\n createPaginationTraitReducer(\n initialState,\n allActions as ƟPaginationActions &\n ƟFilterEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n CrudEntitiesActions<Entity>,\n allSelectors as ƟEntitiesPaginationSelectors<Entity> &\n LoadEntitiesSelectors<Entity>,\n allMutators as EntitiesPaginationMutators<Entity> &\n LoadEntitiesMutators<Entity>,\n allConfigs as FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n effects: ({ allActions, allSelectors }) =>\n createPaginationTraitEffects(\n allActions as ƟPaginationActions &\n FilterEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n CrudEntitiesActions<Entity>,\n allSelectors as ƟEntitiesPaginationSelectors<Entity> &\n LoadEntitiesSelectors<Entity>\n ),\n });\n}\n","import { createAction, props } from '@ngrx/store';\nimport { SelectEntitiesActions } from './select-entities.model';\n\nexport function createSelectEntitiesTraitActions(\n actionsGroupKey: string,\n entitiesName: string\n): SelectEntitiesActions {\n return {\n selectEntities: createAction(\n `${actionsGroupKey} Select ${entitiesName}`,\n props<{ id: number | string }>()\n ),\n deselectEntities: createAction(\n `${actionsGroupKey} Deselect ${entitiesName}`,\n props<{ id: number | string }>()\n ),\n toggleSelectEntities: createAction(\n `${actionsGroupKey} Toggle Select ${entitiesName}`,\n props<{ id: number | string }>()\n ),\n toggleSelectAllEntities: createAction(\n `${actionsGroupKey} Toggle Select All ${entitiesName}`\n ),\n clearEntitiesSelection: createAction(\n `${actionsGroupKey} Clear ${entitiesName} Selection`\n ),\n };\n}\n","import { SelectEntitiesState } from './select-entities.model';\nimport { LoadEntitiesState } from '../load-entities';\n\nexport function deselectEntities<S extends SelectEntitiesState>(\n id: number | string,\n state: S\n): S {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [id]: _value, ...selectedIds } = state.selectedIds;\n return {\n ...state,\n selectedIds: selectedIds,\n };\n}\n\nexport function selectEntities<S extends SelectEntitiesState>(\n id: number | string,\n state: S\n): S {\n return {\n ...state,\n selectedIds: { ...state.selectedIds, [id]: true },\n };\n}\n\nexport function toggleSelectEntities<S extends SelectEntitiesState>(\n id: number | string,\n state: S\n): S {\n const selected = state.selectedIds[id];\n if (selected) {\n return deselectEntities(id, state);\n } else {\n return selectEntities(id, state);\n }\n}\nexport function clearEntitiesSelection<S extends SelectEntitiesState>(\n state: S\n): S {\n return { ...state, selectedIds: {} };\n}\n\nexport function selectTotalSelectedEntities<\n Entity,\n S extends LoadEntitiesState<Entity> & SelectEntitiesState\n>(state: S): number {\n return Object.keys(state.selectedIds).length;\n}\n","import { Dictionary } from '@ngrx/entity';\nimport { createSelector } from '@ngrx/store';\n\nimport { LoadEntitiesSelectors, LoadEntitiesState } from '../load-entities';\nimport {\n SelectEntitiesSelectors,\n SelectEntitiesState,\n} from './select-entities.model';\nimport { selectTotalSelectedEntities } from './select-entities.utils';\n\nexport function createSelectEntitiesTraitSelectors<Entity>(\n previousSelectors: LoadEntitiesSelectors<Entity>,\n): SelectEntitiesSelectors<Entity> {\n const { selectEntitiesMap, selectEntitiesTotal } = previousSelectors;\n\n function selectEntitiesIdsSelectedMap(\n state: LoadEntitiesState<Entity> & SelectEntitiesState,\n ) {\n return state.selectedIds;\n }\n const selectEntitiesIdsSelectedList = createSelector(\n selectEntitiesIdsSelectedMap,\n (ids: Dictionary<boolean>) => Object.keys(ids),\n );\n const selectEntitiesSelectedMap = createSelector(\n selectEntitiesIdsSelectedList,\n selectEntitiesMap,\n (selectedIds, entities) =>\n selectedIds.reduce((acum: { [id: string]: Entity | undefined }, id) => {\n acum[id] = entities[id];\n return acum;\n }, {}),\n );\n const selectEntitiesSelectedList = createSelector(\n selectEntitiesIdsSelectedList,\n selectEntitiesMap,\n (selectedIds, entities) => selectedIds.map((id) => entities[id]!),\n );\n\n const isAllEntitiesSelected = createSelector(\n (state: LoadEntitiesState<Entity> & SelectEntitiesState) =>\n selectEntitiesTotal(state),\n selectTotalSelectedEntities,\n (total, totalSelected) =>\n totalSelected > 0 && totalSelected === total\n ? 'all'\n : totalSelected === 0\n ? 'none'\n : 'some',\n );\n\n return {\n selectEntitiesIdsSelectedMap,\n selectEntitiesIdsSelectedList,\n selectEntitiesSelectedMap,\n selectEntitiesSelectedList,\n selectTotalSelectedEntities,\n isAllEntitiesSelected,\n };\n}\n","import { insertIf } from '@ngrx-traits/core';\nimport { Update } from '@ngrx/entity';\nimport { createReducer, on } from '@ngrx/store';\n\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { FilterEntitiesActions } from '../filter-entities';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from '../sort-entities/sort-entities.model';\nimport {\n SelectEntitiesActions,\n SelectEntitiesMutators,\n SelectEntitiesState,\n} from './select-entities.model';\n\nexport function createSelectEntitiesInitialState<Entity>(\n previousInitialState: any,\n): LoadEntitiesState<Entity> & SelectEntitiesState {\n return {\n ...previousInitialState,\n selectedIds: {},\n };\n}\n\nexport function createSelectEntitiesTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> & SelectEntitiesState,\n>(\n initialState: S,\n allActions: SelectEntitiesActions &\n CrudEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators: SelectEntitiesMutators<Entity>,\n allConfigs: LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig &\n SortEntitiesKeyedConfig<Entity>,\n) {\n const { adapter } = allConfigs.loadEntities!;\n const sortRemote = allConfigs.sort?.remote;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n\n function updateSelectedIdsChanged<\n S extends LoadEntitiesState<Entity> & SelectEntitiesState,\n >(state: S, updates: Update<Entity>[]) {\n const changedIds = updates.reduce((acc, updated) => {\n const id = adapter.selectId(updated.changes as Entity);\n if (id && id !== updated.id && state.selectedIds[updated.id] != null) {\n acc.push(updated);\n return acc;\n }\n return acc;\n }, [] as Update<Entity>[]);\n if (changedIds.length) {\n const selectedIds = { ...state.selectedIds };\n changedIds.forEach((updated) => {\n const id = adapter.selectId(updated.changes as Entity);\n const value = selectedIds[updated.id];\n delete selectedIds[updated.id];\n selectedIds[id] = value;\n });\n return { ...state, selectedIds };\n }\n\n return state;\n }\n\n return createReducer(\n initialState,\n on(allActions.selectEntities, (state, { id }) =>\n allMutators.selectEntities(id, state),\n ),\n on(allActions.deselectEntities, (state, { id }) =>\n allMutators.deselectEntities(id, state),\n ),\n on(allActions.toggleSelectEntities, (state, { id }) =>\n allMutators.toggleSelectEntities(id, state),\n ),\n on(allActions.toggleSelectAllEntities, (state) =>\n allMutators.toggleSelectAllEntities(state),\n ),\n ...insertIf<S>(allActions.removeEntities, () =>\n on(allActions.removeEntities, (state, { keys }) => {\n const selectedIds = { ...state.selectedIds };\n keys.forEach((v: string | number) => {\n delete selectedIds[v];\n });\n return { ...state, selectedIds };\n }),\n ),\n ...insertIf<S>(allActions.updateEntities, () =>\n on(allActions.updateEntities, (state, { updates }) =>\n updateSelectedIdsChanged(state, updates),\n ),\n ),\n on(allActions.clearEntitiesSelection, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ...insertIf<S>(allActions.removeAllEntities, () =>\n on(allActions.removeAllEntities, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ),\n ...insertIf<S>(sortRemote, () =>\n on(allActions.sortEntities, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ),\n ...insertIf<S>(allActions.filterEntities, () =>\n on(allActions.filterEntities, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ),\n ...insertIf<S>(!allActions.loadEntitiesPageSuccess, () =>\n on(allActions.loadEntitiesSuccess, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ),\n ...insertIf<S>(\n !!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial',\n () =>\n on(allActions.loadEntitiesPageSuccess, (state) =>\n allMutators.clearEntitiesSelection(state),\n ),\n ),\n );\n}\n","import {\n SelectEntitiesMutators,\n SelectEntitiesSelectors,\n SelectEntitiesState,\n} from './select-entities.model';\nimport { toMap } from '@ngrx-traits/core';\nimport {\n clearEntitiesSelection,\n deselectEntities,\n selectEntities,\n toggleSelectEntities,\n} from './select-entities.utils';\nimport { LoadEntitiesState } from '../load-entities';\n\nexport function createSelectEntitiesTraitMutators<Entity>({\n isAllEntitiesSelected,\n}: SelectEntitiesSelectors<Entity>): SelectEntitiesMutators<Entity> {\n function toggleSelectAllEntities<\n S extends LoadEntitiesState<Entity> & SelectEntitiesState\n >(state: S): S {\n const allSelected = isAllEntitiesSelected(state);\n if (allSelected === 'all') {\n return {\n ...state,\n selectedIds: {},\n };\n } else {\n return {\n ...state,\n selectedIds: toMap(state.ids),\n };\n }\n }\n\n return {\n selectEntities,\n deselectEntities,\n toggleSelectEntities,\n toggleSelectAllEntities,\n clearEntitiesSelection,\n };\n}\n","import { createSelectEntitiesTraitActions } from './select-entities.trait.actions';\nimport { SortEntitiesActions, SortEntitiesKeyedConfig } from '../sort-entities';\nimport { createSelectEntitiesTraitSelectors } from './select-entities.trait.selectors';\nimport {\n SelectEntitiesSelectors,\n SelectEntitiesActions,\n} from './select-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport {\n createSelectEntitiesInitialState,\n createSelectEntitiesTraitReducer,\n} from './select-entities.trait.reducer';\nimport { createSelectEntitiesTraitMutators } from './select-entities.trait.mutators';\nimport { FilterEntitiesActions } from '../filter-entities';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitSelectorsFactoryConfig,\n TraitStateMutatorsFactoryConfig,\n} from '@ngrx-traits/core';\n\n/**\n * Generates ngrx code to add multi selection to a list\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,MultipleSelectionState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSelectEntitiesTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // selectedIds: Dictionary<boolean>;\n *\n * // generated actions\n * traits.actions.selectTodos({id})\n * traits.actions.deselectTodos({id})\n * traits.actions.toggleSectTodos({id})\n * traits.actions.toggleSelectAllTodos()\n * traits.actions.clearTodosSelection()\n * //generated selectors\n * traits.selectors.isAllTodosSelected()\n * traits.selectors.selectTodosIdsSelectedMap()\n * traits.selectors.selectTodosIdsSelectedList()\n * traits.selectors.selectTodosSelectedMap()\n * traits.selectors.selectTodosSelectedList()\n * traits.selectors.selectTotalSelectedTodos()\n */\nexport function addSelectEntitiesTrait<Entity>() {\n return createTraitFactory({\n key: 'SelectEntities',\n depends: [loadEntitiesTraitKey],\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createSelectEntitiesTraitActions(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors }: TraitSelectorsFactoryConfig) =>\n createSelectEntitiesTraitSelectors<Entity>(\n previousSelectors as LoadEntitiesSelectors<Entity>\n ),\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n createSelectEntitiesInitialState<Entity>(previousInitialState),\n mutators: ({ allSelectors }: TraitStateMutatorsFactoryConfig) =>\n createSelectEntitiesTraitMutators<Entity>(\n allSelectors as SelectEntitiesSelectors<Entity>\n ),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createSelectEntitiesTraitReducer(\n initialState,\n allActions as SelectEntitiesActions &\n CrudEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators,\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig &\n SortEntitiesKeyedConfig<Entity>\n ),\n });\n}\n","import { createAction, props } from '@ngrx/store';\nimport { SelectEntityActions } from './select-entity.model';\n\nexport function createSelectEntityTraitActions(\n actionsGroupKey: string,\n entityName: string\n): SelectEntityActions {\n return {\n selectEntity: createAction(\n `${actionsGroupKey} Select ${entityName}`,\n props<{ id: string | number }>()\n ),\n deselectEntity: createAction(`${actionsGroupKey} Deselect ${entityName}`),\n toggleSelectEntity: createAction(\n `${actionsGroupKey} Toggle Select ${entityName}`,\n props<{ id: string | number }>()\n ),\n };\n}\n","import {\n SelectEntitySelectors,\n SelectEntityState,\n} from './select-entity.model';\nimport { LoadEntitiesState } from '../load-entities';\n\nexport function createSelectEntityTraitSelectors<\n Entity\n>(): SelectEntitySelectors<Entity> {\n function selectEntityIdSelected(state: SelectEntityState) {\n return state.selectedId;\n }\n function selectEntitySelected<Entity>(\n state: LoadEntitiesState<Entity> & SelectEntityState\n ) {\n return (state.selectedId && state.entities[state.selectedId]) || undefined;\n }\n\n return {\n selectEntityIdSelected,\n selectEntitySelected,\n };\n}\n","import { createReducer, on } from '@ngrx/store';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from '../sort-entities/sort-entities.model';\nimport {\n SelectEntityActions,\n SelectEntityKeyedConfig,\n SelectEntityMutators,\n SelectEntityState,\n} from './select-entity.model';\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport { insertIf } from '@ngrx-traits/core';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { FilterEntitiesActions } from '../filter-entities';\nimport { createSelectEntityTraitActions } from './select-entity.trait.actions';\n\nexport function createSelectEntityInitialState<Entity>(\n previousInitialState: any,\n allConfigs: SelectEntityKeyedConfig\n): LoadEntitiesState<Entity> & SelectEntityState {\n const selectedId = allConfigs.singleSelection?.selectedId;\n return {\n ...previousInitialState,\n selectedId,\n };\n}\nexport function createSelectEntityTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> & SelectEntityState\n>(\n initialState: S,\n allActions: SelectEntityActions &\n CrudEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n EntitiesPaginationActions &\n FilterEntitiesActions<any> &\n LoadEntitiesActions<Entity>,\n allMutators: SelectEntityMutators<Entity>,\n allConfigs: SelectEntityKeyedConfig &\n LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig &\n SortEntitiesKeyedConfig<Entity>\n) {\n const { adapter } = allConfigs.loadEntities!;\n\n const sortRemote = allConfigs.sort?.remote;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n\n return createReducer(\n initialState,\n on(allActions.selectEntity, (state, { id }) =>\n allMutators.selectEntity(id, state)\n ),\n on(allActions.deselectEntity, (state) => allMutators.deselectEntity(state)),\n on(allActions.toggleSelectEntity, (state, { id }) =>\n allMutators.toggleSelectEntity(id, state)\n ),\n ...insertIf<S>(allActions.removeAllEntities, () =>\n on(allActions.removeAllEntities, (state) =>\n allMutators.deselectEntity(state)\n )\n ),\n ...insertIf<S>(sortRemote, () =>\n on(allActions.sortEntities, (state) => allMutators.deselectEntity(state))\n ),\n ...insertIf<S>(allActions.filterEntities, () =>\n on(allActions.filterEntities, (state) =>\n allMutators.deselectEntity(state)\n )\n ),\n ...insertIf<S>(!allActions.loadEntitiesPageSuccess, () =>\n on(allActions.loadEntitiesSuccess, (state) =>\n allMutators.deselectEntity(state)\n )\n ),\n ...insertIf<S>(\n !!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial',\n () =>\n on(allActions.loadEntitiesPageSuccess, (state) =>\n allMutators.deselectEntity(state)\n )\n ),\n ...insertIf<S>(allActions.removeEntities, () =>\n on(allActions.removeEntities, (state, { keys }) => {\n const shouldDeselect = keys.some(\n (v: string | number) => v === state.selectedId\n );\n return shouldDeselect\n ? {\n ...state,\n selectedId: undefined,\n }\n : state;\n })\n ),\n ...insertIf<S>(allActions.updateEntities, () =>\n on(allActions.updateEntities, (state, { updates }) => {\n const change = updates.find((updated) => {\n const id = adapter.selectId(updated.changes as Entity);\n return id && id !== updated.id && state.selectedId === updated.id;\n });\n return change\n ? {\n ...state,\n selectedId: adapter.selectId(change.changes as Entity),\n }\n : state;\n })\n )\n );\n}\n","import { SelectEntityMutators, SelectEntityState } from './select-entity.model';\nimport { LoadEntitiesState } from '../load-entities';\n\nexport function createSelectEntityTraitMutators<\n Entity\n>(): SelectEntityMutators<Entity> {\n function selectEntity<\n S extends LoadEntitiesState<Entity> & SelectEntityState\n >(id: string | number, state: S) {\n return {\n ...state,\n selectedId: id,\n };\n }\n function deselectEntity<\n S extends LoadEntitiesState<Entity> & SelectEntityState\n >(state: S) {\n return {\n ...state,\n selectedId: undefined,\n };\n }\n function toggleSelectEntity<\n S extends LoadEntitiesState<Entity> & SelectEntityState\n >(id: string | number, state: S) {\n return {\n ...state,\n selectedId: state.selectedId === id ? undefined : id,\n };\n }\n\n return {\n selectEntity,\n deselectEntity,\n toggleSelectEntity,\n };\n}\n","import {\n createTraitFactory,\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n} from '@ngrx-traits/core';\n\nimport { createSelectEntityTraitActions } from './select-entity.trait.actions';\nimport { createSelectEntityTraitSelectors } from './select-entity.trait.selectors';\nimport {\n createSelectEntityInitialState,\n createSelectEntityTraitReducer,\n} from './select-entity.trait.reducer';\nimport { createSelectEntityTraitMutators } from './select-entity.trait.mutators';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from '../sort-entities/sort-entities.model';\nimport {\n SelectEntityActions,\n SelectEntityConfig,\n SelectEntityKeyedConfig,\n} from './select-entity.model';\nimport { CrudEntitiesActions } from '../crud-entities/crud-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { FilterEntitiesActions } from '../filter-entities';\n\n/**\n * Generates ngrx code to add single selection to a list\n * @param config\n * @param config.selectedId - Default selected id\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>,SelectEntityState{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSelectEntityTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // selectedId?: number | string;\n *\n * // generated actions\n * traits.actions.selectTodo({id})\n * traits.actions.deselectTodo()\n * traits.actions.toggleSelectTodo({id})\n * //generated selectors\n * traits.selectors.selectTodoIdSelected()\n * traits.selectors.selectTodoSelected()\n */\nexport function addSelectEntityTrait<Entity>(config?: SelectEntityConfig) {\n return createTraitFactory({\n key: 'singleSelection',\n depends: [loadEntitiesTraitKey],\n config,\n actions: ({ actionsGroupKey, entityName }: TraitActionsFactoryConfig) =>\n createSelectEntityTraitActions(actionsGroupKey, entityName),\n selectors: () => createSelectEntityTraitSelectors<Entity>(),\n mutators: () => createSelectEntityTraitMutators(),\n initialState: ({\n previousInitialState,\n allConfigs,\n }: TraitInitialStateFactoryConfig) =>\n createSelectEntityInitialState<Entity>(\n previousInitialState,\n allConfigs as SelectEntityKeyedConfig\n ),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createSelectEntityTraitReducer(\n initialState,\n allActions as SelectEntityActions &\n CrudEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n EntitiesPaginationActions &\n FilterEntitiesActions<any> &\n LoadEntitiesActions<Entity>,\n allMutators,\n allConfigs as SelectEntityKeyedConfig &\n LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig &\n SortEntitiesKeyedConfig<Entity>\n ),\n });\n}\n","import { KeyedConfig } from '@ngrx-traits/core';\nimport { Action } from '@ngrx/store';\nimport { ActionCreator } from '@ngrx/store';\n\nimport { LoadEntitiesState } from '../load-entities/load-entities.model';\n\nexport interface SelectEntityState {\n selectedId?: number | string;\n}\n\nexport type SelectEntityActions = {\n selectEntity: ActionCreator<\n string,\n (props: { id: number | string }) => { id: number | string } & Action<string>\n >;\n deselectEntity: ActionCreator<string, () => Action<string>>;\n toggleSelectEntity: ActionCreator<\n string,\n (props: { id: number | string }) => { id: number | string } & Action<string>\n >;\n};\n\nexport type SelectEntitySelectors<T> = {\n selectEntityIdSelected: (\n state: LoadEntitiesState<T> & SelectEntityState,\n ) => string | number | undefined;\n selectEntitySelected: (\n state: LoadEntitiesState<T> & SelectEntityState,\n ) => T | undefined;\n};\n\nexport type SelectEntityMutators<T> = {\n selectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(\n id: string | number,\n state: S,\n ): S;\n deselectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(\n state: S,\n ): S;\n toggleSelectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(\n id: string | number,\n state: S,\n ): S;\n};\n\nexport interface SelectEntityConfig {\n selectedId?: string | number;\n}\n\nexport const selectEntityTraitKey = 'singleSelection';\nexport type SelectEntityKeyedConfig = KeyedConfig<\n typeof selectEntityTraitKey,\n SelectEntityConfig\n>;\n","import { Predicate, Update } from '@ngrx/entity';\nimport { ActionCreator } from '@ngrx/store';\nimport { Action } from '@ngrx/store';\n\nimport { LoadEntitiesState } from '../load-entities/load-entities.model';\n\nexport enum ChangeType {\n CREATED = 'c',\n UPDATED = 'u',\n DELETED = 'd',\n}\nexport interface Change<T> {\n id: string | number;\n changeType: ChangeType;\n entityChanges?: Partial<T>;\n}\nexport interface EntityChange<T> {\n entity: T;\n changeType: ChangeType;\n}\nexport interface CrudEntitiesState<T> {\n changes: Change<T>[];\n}\n\nexport type CrudEntitiesActions<T> = {\n addEntities: ActionCreator<\n string,\n (...entities: T[]) => { entities: T[] } & Action<string>\n >;\n removeEntities: ActionCreator<\n string,\n (\n ...keys: string[] | number[]\n ) => { keys: string[] | number[] } & Action<string>\n >;\n updateEntities: ActionCreator<\n string,\n (...updates: Update<T>[]) => { updates: Update<T>[] } & Action<string>\n >;\n upsertEntities: ActionCreator<\n string,\n (...entities: T[]) => { entities: T[] } & Action<string>\n >;\n\n removeAllEntities: ActionCreator<\n string,\n (predicate?: Predicate<T>) => { predicate?: Predicate<T> } & Action<string>\n >;\n clearEntitiesChanges: ActionCreator<string, () => Action<string>>;\n};\n\nexport type CrudEntitiesSelectors<Entity> = {\n /**\n * Return all changes made to the list plus entities, and can be filtered\n * by change type\n * @param state\n * @param props\n */\n selectEntitiesChangesList: (\n state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n ) => EntityChange<Entity>[];\n\n /**\n * Returns the entities plus the kind of change,\n * filters redundant changes ideal for a batch update\n * if you add and remove the same and items this changes are remove from the list\n * if you add and then update one or more times, the updates are discarded\n * if you update one or more times and then remove, the updates are discarded\n * @param state\n */\n selectFilteredEntitiesChangesList: (\n state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n ) => EntityChange<Entity>[];\n};\n\nexport type CrudEntitiesMutators<Entity> = {\n addEntities<S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>>(\n entities: Entity[],\n state: S,\n ): S;\n\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n keys: string[],\n state: S,\n ): S;\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n keys: number[],\n state: S,\n ): S;\n removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n predicate: Predicate<Entity>,\n state: S,\n ): S;\n\n removeAllEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n state: S,\n ): S;\n\n clearEntitiesChanges<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n state: S,\n ): S;\n\n updateEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n updates: Update<Entity>[],\n state: S,\n ): S;\n upsertEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>,\n >(\n entities: Entity[],\n state: S,\n ): S;\n};\n\nexport interface CrudEntitiesConfig {\n storeChanges?: boolean;\n}\nexport const crudEntitiesTraitKey = 'crud';\n\nexport interface CrudEntitiesKeyedConfig {\n crud?: CrudEntitiesConfig;\n}\n","import { CrudEntitiesActions } from './crud-entities.model';\nimport { createAction } from '@ngrx/store';\nimport { Predicate, Update } from '@ngrx/entity';\n\nexport function createCrudTraitActions<Entity>(\n actionsGroupKey: string,\n entitiesName: string\n): CrudEntitiesActions<Entity> {\n return {\n addEntities: createAction(\n `${actionsGroupKey} Add ${entitiesName}`,\n (...entities: Entity[]) => ({\n entities,\n })\n ),\n removeEntities: createAction(\n `${actionsGroupKey} Remove ${entitiesName}`,\n (...keys: string[] | number[]) => ({\n keys,\n })\n ),\n updateEntities: createAction(\n `${actionsGroupKey} Update ${entitiesName}`,\n (...updates: Update<Entity>[]) => ({\n updates,\n })\n ),\n upsertEntities: createAction(\n `${actionsGroupKey} Upsert ${entitiesName}`,\n (...entities: Entity[]) => ({\n entities,\n })\n ),\n removeAllEntities: createAction(\n `${actionsGroupKey} Remove All ${entitiesName}`,\n (predicate?: Predicate<Entity>) => ({ predicate })\n ),\n clearEntitiesChanges: createAction(\n `${actionsGroupKey} Clear ${entitiesName} Changes`\n ),\n };\n}\n","import { createSelector } from '@ngrx/store';\nimport {\n Change,\n ChangeType,\n CrudEntitiesSelectors,\n CrudEntitiesState,\n EntityChange,\n} from './crud-entities.model';\nimport {\n LoadEntitiesSelectors,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport { Dictionary } from '@ngrx/entity';\n\nexport function createCrudTraitSelectors<Entity>(\n previousSelectors: LoadEntitiesSelectors<Entity>\n): CrudEntitiesSelectors<Entity> {\n function selectChanges<S extends CrudEntitiesState<Entity>>(state: S) {\n return state.changes;\n }\n\n function selectFilteredChanges<S extends CrudEntitiesState<Entity>>(\n state: S\n ) {\n const cache: { [id: string]: ChangeType[] } = {};\n return state.changes.reduce((acc, value) => {\n const changes = cache[value.id];\n if (!changes) {\n cache[value.id] = [value.changeType];\n acc.push(value);\n return acc;\n }\n\n if (value.changeType === ChangeType.UPDATED) {\n return acc;\n }\n\n if (\n value.changeType === ChangeType.DELETED &&\n changes.includes(ChangeType.CREATED)\n ) {\n delete cache[value.id];\n return acc.filter((v) => v.id !== value.id);\n }\n\n if (value.changeType === ChangeType.DELETED) {\n delete cache[value.id];\n const newAcc = acc.filter((v) => v.id !== value.id);\n newAcc.push(value);\n return newAcc;\n }\n return acc;\n }, [] as Change<Entity>[]);\n }\n\n const { selectEntitiesMap } = previousSelectors;\n\n const selectEntitiesChangesList = createSelector(\n (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>) =>\n selectEntitiesMap(state),\n selectChanges,\n (entities: Dictionary<Entity>, changed: Change<Entity>[]) => {\n const map = changed.map(\n (change) =>\n ({\n changeType: change.changeType,\n entity: entities[change.id] ?? {\n id: change.id,\n },\n } as EntityChange<Entity>)\n );\n return map;\n }\n );\n\n const selectFilteredEntitiesChangesList = createSelector(\n selectFilteredChanges,\n (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>) =>\n selectEntitiesMap(state),\n (changes, entities) =>\n changes.map((c) => {\n return {\n entity: entities[c.id] ?? { id: c.id },\n changeType: c.changeType,\n } as EntityChange<Entity>;\n })\n );\n\n return {\n selectEntitiesChangesList,\n selectFilteredEntitiesChangesList,\n };\n}\n","import {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport { createReducer, on } from '@ngrx/store';\nimport {\n CrudEntitiesActions,\n CrudEntitiesKeyedConfig,\n CrudEntitiesMutators,\n CrudEntitiesState,\n} from './crud-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities';\nimport { SortEntitiesActions, SortEntitiesKeyedConfig } from '../sort-entities';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination';\nimport { insertIf } from '@ngrx-traits/core';\n\nexport function createCrudInitialState<Entity>(\n previousInitialState: any\n): LoadEntitiesState<Entity> & CrudEntitiesState<Entity> {\n return {\n ...previousInitialState,\n changes: [],\n };\n}\nexport function createCrudTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n>(\n initialState: S,\n allActions: CrudEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators: CrudEntitiesMutators<Entity>,\n allConfigs: CrudEntitiesKeyedConfig &\n FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n SortEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n) {\n const sortRemote = allConfigs.sort?.remote;\n const filterRemote = allConfigs.filter && !allConfigs.filter?.filterFn;\n const paginationCacheType = allConfigs.pagination?.cacheType;\n\n return createReducer(\n initialState,\n on(allActions.addEntities, (state, { entities }) =>\n allMutators.addEntities(entities, state)\n ),\n on(allActions.updateEntities, (state, { updates }) =>\n allMutators.updateEntities(updates, state)\n ),\n on(allActions.upsertEntities, (state, { entities }) =>\n allMutators.upsertEntities(entities, state)\n ),\n on(allActions.removeEntities, (state, { keys }) =>\n allMutators.removeEntities(keys as any[], state)\n ),\n on(allActions.removeAllEntities, (state, { predicate }) =>\n predicate\n ? allMutators.removeEntities(predicate, state)\n : allMutators.removeAllEntities(state)\n ),\n on(allActions.clearEntitiesChanges, (state) =>\n allMutators.clearEntitiesChanges(state)\n ),\n ...insertIf<S>(sortRemote, () =>\n on(allActions.sortEntities, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(filterRemote, () =>\n on(allActions.filterEntities, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(!allActions.loadEntitiesPageSuccess, () =>\n on(allActions.loadEntitiesSuccess, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n ),\n ...insertIf<S>(\n !!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial',\n () =>\n on(allActions.loadEntitiesPageSuccess, (state) =>\n allMutators.clearEntitiesChanges(state)\n )\n )\n );\n}\n","import {\n Change,\n ChangeType,\n CrudEntitiesKeyedConfig,\n CrudEntitiesMutators,\n CrudEntitiesState,\n} from './crud-entities.model';\nimport { Predicate, Update } from '@ngrx/entity';\nimport {\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\n\nexport function createCrudTraitMutators<Entity>(\n allConfigs: CrudEntitiesKeyedConfig & LoadEntitiesKeyedConfig<Entity>\n): CrudEntitiesMutators<Entity> {\n const { storeChanges } = allConfigs.crud || {};\n const adapter = allConfigs!.loadEntities!.adapter;\n\n function generateChangeEntry(\n entity: Entity,\n changeType: ChangeType,\n customId?: string | number\n ) {\n return {\n id: customId ?? adapter.selectId(entity),\n changeType,\n entityChanges: (storeChanges && entity) || undefined,\n };\n }\n\n function addEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(entities: Entity[], state: S, addFirst = false) {\n const changes = [\n ...state.changes,\n ...entities.map((entity) =>\n generateChangeEntry(entity, ChangeType.CREATED)\n ),\n ];\n if (!addFirst)\n return adapter.addMany(entities, {\n ...state,\n changes,\n });\n\n const newIds = entities.map((e) => adapter.selectId(e));\n const newEntities = { ...state.entities };\n entities.forEach((e) => {\n const id = adapter.selectId(e);\n newEntities[id] = e;\n });\n return {\n ...state,\n ids: [...newIds, ...state.ids],\n entities: newEntities,\n changes,\n };\n }\n\n function upsertEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(entities: Entity[], state: S) {\n const oldChanges = [...state.changes];\n const existingIds = adapter.getSelectors().selectIds(state) as string[];\n\n const [additions, updates] = entities.reduce(\n ([a, u], entity) =>\n existingIds.indexOf(adapter.selectId(entity as Entity) as string) !== -1\n ? [a, [...u, entity]]\n : [[...a, entity], u],\n [new Array<Entity>(), new Array<Entity>()]\n );\n\n return adapter.upsertMany(entities, {\n ...state,\n changes: [\n ...oldChanges,\n\n ...additions.map((entity) =>\n generateChangeEntry(entity, ChangeType.CREATED)\n ),\n ...updates.map((entity) =>\n generateChangeEntry(entity, ChangeType.UPDATED)\n ),\n ],\n });\n }\n\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keys: number[], state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keys: string[], state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(predicate: Predicate<Entity>, state: S): S;\n function removeEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(keysOrPredicate: Predicate<Entity> | string[] | number[], state: S): S {\n if (typeof keysOrPredicate === 'function') {\n return adapter.removeMany(keysOrPredicate, {\n ...state,\n changes: [\n ...state.changes,\n ...(state.ids as any[]).map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n\n return adapter.removeMany(keysOrPredicate as string[], {\n ...state,\n changes: [\n ...state.changes,\n ...(keysOrPredicate as string[]).map((key: string) => ({\n id: key,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function removeAllEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(state: S): S {\n return adapter.removeAll({\n ...state,\n changes: [\n ...state.changes,\n ...(state.ids as any[]).map((id) => ({\n id,\n changeType: ChangeType.DELETED,\n })),\n ],\n });\n }\n function clearEntitiesChanges<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(state: S) {\n return { ...state, changes: [] };\n }\n\n function updateEntities<\n S extends LoadEntitiesState<Entity> & CrudEntitiesState<Entity>\n >(updates: Update<Entity>[], state: S) {\n const oldChanges = [...state.changes];\n updates.forEach((updated) => {\n const id = adapter.selectId(updated.changes as Entity);\n if (id && id !== updated.id) {\n // if the id changes update the id of pold changes\n const index = oldChanges.findIndex((v) => v.id === updated.id);\n const oldChange = oldChanges[index];\n oldChanges[index] = { ...oldChange, id };\n }\n });\n return adapter.updateMany(updates, {\n ...state,\n changes: [\n ...oldChanges,\n ...updates.map(\n (updated) =>\n ({\n id: adapter.selectId(updated.changes as Entity) ?? updated.id,\n changeType: ChangeType.UPDATED,\n entityChanges: (storeChanges && updated.changes) || undefined,\n } as Change<Entity>)\n ),\n ],\n });\n }\n\n return {\n addEntities,\n removeEntities,\n updateEntities,\n removeAllEntities,\n clearEntitiesChanges,\n upsertEntities,\n };\n}\n","import {\n createTraitFactory,\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitSelectorsFactoryConfig,\n TraitStateMutatorsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { createCrudTraitActions } from './crud-entities.trait.actions';\nimport { createCrudTraitSelectors } from './crud-entities.trait.selectors';\nimport {\n createCrudInitialState,\n createCrudTraitReducer,\n} from './crud-entities.trait.reducer';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from '../sort-entities/sort-entities.model';\nimport {\n CrudEntitiesActions,\n CrudEntitiesConfig,\n CrudEntitiesKeyedConfig,\n crudEntitiesTraitKey,\n} from './crud-entities.model';\nimport {\n FilterEntitiesActions,\n FilterEntitiesKeyedConfig,\n} from '../filter-entities/filter-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { createCrudTraitMutators } from './crud-entities.trait.mutators';\n\n/**\n * Generates ngrx code to add, remove update, upsert entities on a list, it also\n * tracks the changes made, helpful for implementing batch updates. The `storeChanges` (false by default),\n * will store for add and update the changed entity props in the property `entityChanges` of the `Change` object.\n * @param config\n * @param config.storeChanges - Will store the changes made, default fals\n *\n * @example\n * // The following trait config\n *\n * export interface TestState\n * extends EntityAndStatusState<Todo>, CrudState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addCrudEntitiesTrait<Todo>()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n * // adds following props to the state:\n * // changes: Change<Todo>[];\n *\n * // generated actions\n * traits.actions.addTodos(entity1,entity2...)\n * traits.actions.updateTodos({id: id1, changes:{prop1}},{id: id2, changes:{prop2}} ...)\n * traits.actions.upsertTodos(entity1,entity2...)\n * traits.actions.removeAllTodos()\n * traits.actions.clearTodosChanges()\n * // generated selectors\n * traits.selectors.selectTodosChangesList()\n * traits.selectors.selectFilteredTodosChangesList()\n * traits.selectors.selectAllFilteredChanges()\n */\nexport function addCrudEntitiesTrait<Entity>({\n storeChanges = false,\n}: CrudEntitiesConfig = {}) {\n return createTraitFactory({\n key: crudEntitiesTraitKey,\n depends: [loadEntitiesTraitKey],\n config: { storeChanges } as CrudEntitiesConfig,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createCrudTraitActions<Entity>(actionsGroupKey, entitiesName),\n selectors: ({ previousSelectors }: TraitSelectorsFactoryConfig) =>\n createCrudTraitSelectors<Entity>(\n previousSelectors as LoadEntitiesSelectors<Entity>\n ),\n mutators: ({ allConfigs }: TraitStateMutatorsFactoryConfig) =>\n createCrudTraitMutators<Entity>(\n allConfigs as CrudEntitiesKeyedConfig & LoadEntitiesKeyedConfig<Entity>\n ),\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n createCrudInitialState<Entity>(previousInitialState),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createCrudTraitReducer(\n initialState,\n allActions as CrudEntitiesActions<Entity> &\n LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n FilterEntitiesActions<any> &\n EntitiesPaginationActions,\n allMutators,\n allConfigs as CrudEntitiesKeyedConfig &\n FilterEntitiesKeyedConfig<Entity, unknown> &\n LoadEntitiesKeyedConfig<Entity> &\n SortEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig\n ),\n });\n}\n","import { KeyedConfig } from '@ngrx-traits/core';\nimport { Action } from '@ngrx/store';\nimport { ActionCreator } from '@ngrx/store';\n\nimport { LoadEntitiesState } from '../load-entities/load-entities.model';\n\nexport declare type SortDirection = 'asc' | 'desc' | '';\n\nexport interface Sort<T> {\n /** The id of the column being sorted. */\n active: keyof T;\n /** The sort direction. */\n direction: SortDirection;\n}\n\nexport interface SortEntitiesState<T> {\n sort: {\n current: Sort<T>;\n default: Sort<T>;\n };\n}\n\nexport type SortEntitiesActions<T> = {\n sortEntities: ActionCreator<\n string,\n (props: Sort<T>) => Sort<T> & Action<string>\n >;\n /**\n * Sets the default sort back\n */\n resetEntitiesSort: ActionCreator<string, () => Action<string>>;\n};\n\nexport type SortEntitiesSelectors<T> = {\n selectEntitiesSort: (\n state: LoadEntitiesState<T> & SortEntitiesState<T>,\n ) => Sort<T>;\n};\n\nexport type SortEntitiesMutators<T> = {\n sortEntities<S extends LoadEntitiesState<T> & SortEntitiesState<T>>(\n { active, direction }: Sort<T>,\n state: S,\n ): S;\n};\n\nexport const sortTraitKey = 'sort';\n\nexport interface SortEntitiesConfig<T> {\n defaultSort: Sort<T>;\n remote: boolean;\n}\n\nexport type SortEntitiesKeyedConfig<T> = KeyedConfig<\n typeof sortTraitKey,\n SortEntitiesConfig<T>\n>;\n","import { Sort } from './sort-entities.model';\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\nexport function _isNumberValue(value: any): boolean {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\n}\n\nfunction sortingDataAccessor<T>(\n data: T,\n sortHeaderId: string\n): string | number {\n const value = (data as { [key: string]: any })[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n}\n\n/**\n * @internal\n * @ignore\n * Gets a sorted copy of the data array based on the state of the Sort.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\nexport function sortData<T>(data: T[], sort: Sort<T>): T[] {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction === '') {\n return data;\n }\n\n return data.sort((a, b) => {\n const valueA = sortingDataAccessor(a, active as string);\n const valueB = sortingDataAccessor(b, active as string);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n\n if (typeof valueA === 'string' || typeof valueB === 'string') {\n // if either values are a string, then force both to be strings before localCompare\n comparatorResult = valueA.toString().localeCompare(valueB.toString());\n } else {\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction === 'asc' ? 1 : -1);\n });\n}\n","import {\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n LoadEntitiesState,\n} from '../load-entities/load-entities.model';\nimport {\n Sort,\n SortEntitiesMutators,\n SortEntitiesState,\n} from './sort-entities.model';\nimport { sortData } from './sort-entities.utils';\n\nexport function createSortTraitMutators<Entity>(\n { selectEntitiesList }: LoadEntitiesSelectors<Entity>,\n allConfigs: LoadEntitiesKeyedConfig<Entity>\n): SortEntitiesMutators<Entity> {\n const { remote } = allConfigs.sort!;\n\n function sortEntities<\n S extends LoadEntitiesState<Entity> & SortEntitiesState<Entity>\n >({ active, direction }: Sort<Entity>, state: S) {\n if (remote) {\n return {\n ...state,\n sort: { ...state.sort, current: { active, direction } },\n };\n }\n\n const { adapter } = allConfigs.loadEntities!;\n const entities = selectEntitiesList(state);\n const sortedIds = sortData(entities, { active, direction }).map((v) =>\n adapter.selectId(v)\n );\n return {\n ...state,\n ids: sortedIds,\n sort: { ...state.sort, current: { active, direction } },\n };\n }\n return {\n sortEntities,\n };\n}\n","import { createReducer, on } from '@ngrx/store';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesState,\n} from '../load-entities';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n SortEntitiesMutators,\n SortEntitiesState,\n} from './sort-entities.model';\n\nexport function createSortInitialState<Entity>(\n previousInitialState: any,\n allConfigs: SortEntitiesKeyedConfig<Entity>\n): LoadEntitiesState<Entity> & SortEntitiesState<Entity> {\n const { defaultSort } = allConfigs.sort!;\n\n return {\n ...previousInitialState,\n sort: {\n current: defaultSort,\n default: defaultSort,\n },\n };\n}\n\nexport function createSortTraitReducer<\n Entity,\n S extends LoadEntitiesState<Entity> &\n SortEntitiesState<Entity> = LoadEntitiesState<Entity> &\n SortEntitiesState<Entity>\n>(\n initialState: S,\n allActions: SortEntitiesActions<Entity> & LoadEntitiesActions<Entity>,\n allMutators: SortEntitiesMutators<Entity>,\n allConfigs: LoadEntitiesKeyedConfig<Entity> & SortEntitiesKeyedConfig<Entity>\n) {\n return createReducer(\n initialState,\n on(allActions.sortEntities, (state, { active, direction }) =>\n allMutators.sortEntities({ active, direction }, state)\n ),\n on(allActions.resetEntitiesSort, (state) =>\n allMutators.sortEntities(state.sort?.default, state)\n )\n );\n}\n","import {\n SortEntitiesSelectors,\n SortEntitiesState,\n} from './sort-entities.model';\n\nexport function createSortTraitSelectors<\n Entity\n>(): SortEntitiesSelectors<Entity> {\n function selectEntitiesSort(state: SortEntitiesState<Entity>) {\n return state.sort?.current;\n }\n return {\n selectEntitiesSort,\n };\n}\n","import { Injectable } from '@angular/core';\nimport { TraitEffect } from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatMap } from 'rxjs/operators';\nimport { Type } from '@ngrx-traits/core';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n} from '../load-entities/load-entities.model';\nimport {\n SortEntitiesActions,\n SortEntitiesKeyedConfig,\n} from './sort-entities.model';\nimport { EntitiesPaginationActions } from '../entities-pagination/entities-pagination.model';\n\nexport function createSortTraitEffect<Entity>(\n allActions: LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n EntitiesPaginationActions,\n allConfigs: LoadEntitiesKeyedConfig<Entity> & SortEntitiesKeyedConfig<Entity>\n): Type<TraitEffect>[] {\n const { remote } = allConfigs.sort!;\n\n @Injectable()\n class SortEffect extends TraitEffect {\n remoteSort$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.sortEntities, allActions.resetEntitiesSort),\n concatMap(() =>\n allActions.loadEntitiesFirstPage\n ? [\n allActions.clearEntitiesPagesCache(),\n allActions.loadEntitiesFirstPage(),\n ]\n : [allActions.loadEntities()]\n )\n );\n });\n }\n return remote ? [SortEffect] : [];\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Sort, SortEntitiesActions } from './sort-entities.model';\n\nexport function createSortTraitActions<Entity>(\n actionsGroupKey: string,\n entitiesName: string\n): SortEntitiesActions<Entity> {\n return {\n sortEntities: createAction(\n `${actionsGroupKey} Sort ${entitiesName}`,\n props<Sort<Entity>>()\n ),\n resetEntitiesSort: createAction(\n `${actionsGroupKey} Reset ${entitiesName} Sort`\n ),\n };\n}\n","import { createSortTraitMutators } from './sort-entities.trait.mutators';\nimport {\n createSortInitialState,\n createSortTraitReducer,\n} from './sort-entities.trait.reducer';\nimport { createSortTraitSelectors } from './sort-entities.trait.selectors';\nimport { createSortTraitEffect } from './sort-entities.trait.effect';\nimport {\n SortEntitiesActions,\n SortEntitiesConfig,\n SortEntitiesKeyedConfig,\n SortEntitiesSelectors,\n sortTraitKey,\n} from './sort-entities.model';\nimport {\n LoadEntitiesActions,\n LoadEntitiesKeyedConfig,\n LoadEntitiesSelectors,\n loadEntitiesTraitKey,\n} from '../load-entities/load-entities.model';\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationKeyedConfig,\n} from '../entities-pagination/entities-pagination.model';\nimport { createTraitFactory } from '@ngrx-traits/core';\nimport { createSortTraitActions } from './sort-entities.trait.actions';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n TraitStateMutatorsFactoryConfig,\n} from '@ngrx-traits/core';\n\n/**\n * Generates ngrx code to sort locally or remotely a list of entities\n * @param config\n * @param config.defaultSort - Required field, Default entity prop for the sort\n * @param config.remote - Required field, default to false, when true disables local\n * sorting and every sort action call will now trigger a loadEntities action and the backend\n * should sort the data, use selectSort in the effect that call backend to get the requested sort,\n * when false all sorting is done in memory when the sort action is fired\n *\n * @example\n * // The following trait config\n * export interface TestState\n * extends EntityAndStatusState<Todo>, SortState<Todo>{}\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addSortEntitiesTrait<Todo>({\n * remote: true,\n * defaultSort: {active:'id', direction:'asc'}\n * })\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n * // adds following props to the state:\n * // sort: {\n * // current: Sort<Todo>;\n * // default: Sort<Todo>;\n * // }\n *\n * // generated actions\n * traits.actions.sortTodos({active:'id', direction:'desc'})\n * traits.actions.resetTodosSort()\n * //generated selectors\n * traits.selectors.selectTodosSort()\n */\nexport function addSortEntitiesTrait<Entity>({\n remote,\n defaultSort,\n}: SortEntitiesConfig<Entity>) {\n return createTraitFactory({\n key: sortTraitKey,\n depends: [loadEntitiesTraitKey],\n config: { remote, defaultSort } as SortEntitiesConfig<Entity>,\n actions: ({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) =>\n createSortTraitActions<Entity>(actionsGroupKey, entitiesName),\n selectors: () => createSortTraitSelectors<Entity>(),\n mutators: ({ allSelectors, allConfigs }: TraitStateMutatorsFactoryConfig) =>\n createSortTraitMutators<Entity>(\n allSelectors as SortEntitiesSelectors<Entity> &\n LoadEntitiesSelectors<Entity>,\n allConfigs\n ),\n initialState: ({\n previousInitialState,\n allConfigs,\n }: TraitInitialStateFactoryConfig) =>\n createSortInitialState<Entity>(previousInitialState, allConfigs),\n reducer: ({ initialState, allActions, allMutators, allConfigs }) =>\n createSortTraitReducer<Entity>(\n initialState,\n allActions as SortEntitiesActions<Entity> & LoadEntitiesActions<Entity>,\n allMutators,\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n EntitiesPaginationKeyedConfig &\n SortEntitiesKeyedConfig<Entity>\n ),\n effects: ({ allActions, allConfigs }) =>\n createSortTraitEffect(\n allActions as LoadEntitiesActions<Entity> &\n SortEntitiesActions<Entity> &\n EntitiesPaginationActions,\n allConfigs as LoadEntitiesKeyedConfig<Entity> &\n SortEntitiesKeyedConfig<Entity>\n ),\n });\n}\n","import {\n createTraitFactory,\n insertIf,\n TraitActionsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { ActionCreator, createAction, createReducer, on } from '@ngrx/store';\n\n/**\n * Generates the ngrx code needed to reset the current state to the initial state.\n * @param traitConfig - Config object fot the trait factory\n * @param traitConfig.resetOn - set an extra action which will also trigger a reset state,\n * useful if you want to create an action that reset several features states\n *\n * @example\n * // The following trait config\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addResetEntitiesStateTrait()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n * // generated actions\n * traits.actions.resetTodosState()\n */\nexport function addResetEntitiesStateTrait(\n traitConfig: {\n resetOn?: readonly ActionCreator[];\n } = {},\n) {\n return createTraitFactory({\n key: 'reset',\n config: traitConfig,\n actions: ({\n actionsGroupKey,\n entitiesName,\n }: TraitActionsFactoryConfig) => ({\n resetEntitiesState: createAction(\n `${actionsGroupKey} Reset ${entitiesName} State`,\n ),\n }),\n reducer: ({ allActions, initialState }) =>\n createReducer(\n initialState,\n on(allActions.resetEntitiesState, () => initialState),\n ...insertIf<typeof initialState>(traitConfig.resetOn, () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n on(...traitConfig.resetOn!, () => initialState),\n ),\n ),\n });\n}\n","import { camelCaseToSentence, createTraitFactory } from '@ngrx-traits/core';\nimport {\n TraitActionsFactoryConfig,\n TraitInitialStateFactoryConfig,\n} from '@ngrx-traits/core';\nimport { createAction, createReducer, on } from '@ngrx/store';\nimport { ActionCreatorProps } from '@ngrx/store';\n\nimport {\n ActionCreatorWithOptionalProps,\n AsyncActionActions,\n AsyncActionSelectors,\n AsyncActionState,\n} from './async-action.model';\n\n/**\n * Generates the typical ngrx code need to make a async action with\n * a request, success and failure actions, plus a status property to track its progress\n * and selectors to query the status. This trait can be added more thant once as long\n * as the name prop is different.\n *\n * @param options - Config object for the trait factory\n * @param options.name - Name of the main request action, should be in camel case\n * @param options.actionProps - Optional param for the main request action, use the props()\n * function for its value, if not present action will have no params,\n * @param options.actionSuccessProps - Optional param for the request success action,\n * use the props() function for its value, if not present action success will have no params\n * @param options.actionFailProps - Optional param for the request fail action,\n * use the props() function for its value, if not present action fail will have no params\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends AsyncActionState<'createClient'>{}\n *\n * // The following trait config\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addAsyncActionTrait({\n * name: 'createClient',\n * actionProps: props<{ name: string }>(),\n * actionSuccessProps: props<{ id: string }>(),\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<AsyncActionState<'createClient'>>(\n * 'client',\n * ),\n * });\n * // adds following props to the state:\n * // createClientStatus?: 'loading' | 'success' | 'fail';\n *\n * // generated actions\n * traits.actions.createClient({name:'Pedro'})\n * traits.actions.createClientSuccess({id:'123'})\n * traits.actions.createClientFail();\n * //generated selectors\n * traits.selectors.isLoadingCreateClient\n * traits.selectors.isSuccessCreateClient\n * traits.selectors.isFailCreateClient\n */\nexport function addAsyncActionTrait<\n J extends string,\n Request extends object | undefined = undefined,\n Response extends object | undefined = undefined,\n Failure extends object | undefined = undefined,\n>({\n name,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n}: {\n name: J;\n actionProps?: ActionCreatorProps<Request>;\n actionSuccessProps?: ActionCreatorProps<Response>;\n actionFailProps?: ActionCreatorProps<Failure>;\n}) {\n const nameAsSentence = camelCaseToSentence(name);\n\n let internalActions: AsyncActionActions<\n Request,\n Response,\n Failure,\n 'request'\n >;\n return createTraitFactory({\n key: name + '-call',\n config: {\n name,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n },\n actions: ({\n actionsGroupKey,\n }: TraitActionsFactoryConfig): AsyncActionActions<\n Request,\n Response,\n Failure,\n J\n > => {\n internalActions = {\n request: (actionProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence}`,\n actionProps as any,\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence}`,\n )) as ActionCreatorWithOptionalProps<Request>,\n requestSuccess: (actionSuccessProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence} Success`,\n actionSuccessProps as any,\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence} Success`,\n )) as ActionCreatorWithOptionalProps<Response>,\n requestFail: (actionFailProps\n ? createAction(\n `${actionsGroupKey} ${nameAsSentence} Failure`,\n actionFailProps as any,\n )\n : createAction(\n `${actionsGroupKey} ${nameAsSentence} Failure`,\n )) as ActionCreatorWithOptionalProps<Failure>,\n };\n return {\n [`${name}`]: internalActions.request,\n [`${name}Success`]: internalActions.requestSuccess,\n [`${name}Fail`]: internalActions.requestFail,\n } as AsyncActionActions<Request, Response, Failure, J>;\n },\n selectors: () => {\n function isLoadingEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'loading';\n }\n function isSuccessEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'success';\n }\n function isFailEntity<S extends AsyncActionState<J>>(state: S) {\n return (state as any)[`${name}Status`] === 'fail';\n }\n const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);\n return {\n [`isLoading${capitalizedName}`]: isLoadingEntity,\n [`isSuccess${capitalizedName}`]: isSuccessEntity,\n [`isFail${capitalizedName}`]: isFailEntity,\n } as AsyncActionSelectors<J, AsyncActionState<J>>;\n },\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n previousInitialState as AsyncActionState<J>,\n reducer: ({ initialState }) => {\n // TypeScript error after migration to 4.9.5\n // Added 'any' to 'state' and removed 'as AsyncActionState<J>'\n // because OnReducer have a weird type for the state.\n // TODO: Investigate if possible to remove the 'any' type and have better type safety\n // tried remove the any seems to be a problex with ngrx on making the state unknown\n return createReducer(\n initialState,\n on(internalActions.request, (state: any) => ({\n ...state,\n [`${name}Status`]: 'loading',\n })),\n on(internalActions.requestFail, (state: any) => ({\n ...state,\n [`${name}Status`]: 'fail',\n })),\n on(internalActions.requestSuccess, (state: any) => ({\n ...state,\n [`${name}Status`]: 'success',\n })),\n );\n },\n });\n}\n","import { capitalize, createTraitFactory } from '@ngrx-traits/core';\nimport { TraitInitialStateFactoryConfig } from '@ngrx-traits/core';\nimport { ActionCreatorProps } from '@ngrx/store';\nimport { createReducer, on } from '@ngrx/store';\n\nimport { addAsyncActionTrait } from '../async-action/async-action.trait';\nimport { LoadEntitySelectors, LoadEntityState } from './load-entity.model';\n\ntype RecordEntity<T> = T extends Record<string, infer J> ? J : never;\n\n/**\n * Generates ngrx code needed to load and entity and store it in a state. This action can be added\n * more than once as long as the entityName para is different\n * @param entityName - Entity name, should be in camel case\n * @param options.actionProps - Optional param for the main request action,\n * use the props() function for its value, if not present action will have no params,\n * @param options.actionSuccessProps - Optional param for the request success\n * action, use the props() function for its value, if not present action success will have no params\n * @param options.actionFailProps - Optional param for the request fail action,\n * use the props() function for its value, if not present action fail will have no params\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends LoadEntityState<Client,'client'>{}\n *\n * const traits = createEntityFeatureFactory(\n * ...addLoadEntityTraits({\n * entityName: 'client',\n * requestProps: props<{ id: string }>(),\n * responseProps: props<{ client: Client }>(),\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<\n * LoadEntityState<Client, 'client'>\n * >('client'),\n * });\n *\n * // adds following props to the state:\n * // loadClientStatus?: 'loading' | 'success' | 'fail';\n * // client?: Client;\n *\n * // generated actions\n * traits.actions.loadClient({id:123});\n * traits.actions.loadClientSuccess({client: {id: '123', name: 'gabs'}});\n * traits.actions.loadClientFail();\n * // generated selectors\n * traits.selectors.selectClient()\n * traits.selectors.isLoadingLoadClient()\n * traits.selectors.isSuccessLoadClient()\n * traits.selectors.isFailLoadClient()\n */\nexport function addLoadEntityTraits<\n J extends string,\n Request extends object | undefined = undefined,\n Response extends Record<J, any> | undefined = undefined,\n Failure extends object | undefined = undefined,\n Entity = RecordEntity<Response>,\n State extends LoadEntityState<any, string> = LoadEntityState<Entity, J>,\n>({\n entityName,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n}: {\n entityName: J;\n actionProps?: ActionCreatorProps<Request>;\n actionSuccessProps?: ActionCreatorProps<Response>;\n actionFailProps?: ActionCreatorProps<Failure>;\n}) {\n const capitalizedName = capitalize(entityName);\n\n type K = `load${Capitalize<J & string>}`;\n\n return [\n addAsyncActionTrait<K, Request, Response, Failure>({\n name: ('load' + capitalizedName) as K,\n actionProps,\n actionSuccessProps,\n actionFailProps,\n }),\n createTraitFactory({\n key: `load${capitalizedName}`,\n config: { entityName, actionProps, actionSuccessProps, actionFailProps },\n selectors: () => {\n function selectEntity(state: State) {\n return (state as any)[`${entityName}`] as Entity;\n }\n\n return {\n [`select${capitalizedName}`]: selectEntity,\n } as LoadEntitySelectors<Entity, J>;\n },\n initialState: ({\n previousInitialState,\n }: TraitInitialStateFactoryConfig) => previousInitialState as State,\n reducer: ({ initialState, allActions }) => {\n return createReducer(\n initialState,\n on(\n (allActions as any)[`load${capitalizedName}Success`],\n (state: any, action: any) => ({\n ...state,\n [entityName]: action[entityName],\n }),\n ),\n );\n },\n }),\n ] as const;\n}\n","import {\n capitalize,\n createTraitFactory,\n TraitActionsFactoryConfig,\n} from '@ngrx-traits/core';\nimport { TraitInitialStateFactoryConfig } from '@ngrx-traits/core';\nimport { createAction, createReducer, on } from '@ngrx/store';\nimport { ActionCreatorProps } from '@ngrx/store';\n\nimport {\n SetEntityActions,\n SetEntitySelectors,\n SetEntityState,\n} from './set-entity.model';\n\ntype RecordEntity<T> = T extends Record<string, infer J> ? J : never;\n\n/**\n * Generates ngrx code needed to set and entity in the store state\n * @param entityName - Entity name, should be in camel case\n * @param options.actionProps - param for the main request action,\n * use the props() function for its value\n * @returns the trait factory\n *\n * @example\n *\n * export interface TestState\n * extends SetEntityState<Client,'client'>{}\n *\n * const traits = createEntityFeatureFactory(\n * addSetEntityTraits({\n * entityName: 'client',\n * actionProps: props<{ client: Client }\n * }),\n * )({\n * actionsGroupKey: 'Client',\n * featureSelector: createFeatureSelector<\n * SetEntityState<Client, 'client'>\n * >('client'),\n * });\n * // adds following props to the state:\n * // client?: Client;\n *\n * // generated actions\n * traits.actions.setClient({client: {id:123, name: 'gabs'}});\n * //generated selectors\n * traits.selectors.selectClient()\n */\nexport function addSetEntityTrait<\n J extends string,\n Payload extends Record<J, any> | undefined = undefined,\n Entity = RecordEntity<Payload>,\n State extends SetEntityState<Entity, J> = SetEntityState<Entity, J>,\n>({\n entityName,\n actionProps,\n}: {\n entityName: J;\n actionProps?: ActionCreatorProps<Payload>;\n}) {\n const capitalizedName = capitalize(entityName);\n\n return createTraitFactory({\n key: `load${capitalizedName}`,\n config: { entityName, actionProps },\n actions: ({ actionsGroupKey }: TraitActionsFactoryConfig) => {\n const setEntity = createAction(\n `${actionsGroupKey} Set ${capitalizedName}`,\n actionProps as any,\n );\n\n return {\n [`set${capitalizedName}`]: setEntity,\n } as SetEntityActions<Payload, J>;\n },\n selectors: () => {\n function selectEntity(state: State) {\n return (state as any)[`${entityName}`] as Entity;\n }\n\n return {\n [`select${capitalizedName}`]: selectEntity,\n } as SetEntitySelectors<Entity, J>;\n },\n initialState: ({ previousInitialState }: TraitInitialStateFactoryConfig) =>\n previousInitialState as State,\n reducer: ({ initialState, allActions }) => {\n return createReducer(\n initialState,\n on(\n (allActions as any)[`set${capitalizedName}`],\n (state: any, action: any) => ({\n ...state,\n [entityName]: action[entityName],\n }),\n ),\n );\n },\n });\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n createTraitFactory,\n TraitActionsFactoryConfig,\n TraitEffect,\n} from '@ngrx-traits/core';\nimport { createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { createAction, createReducer, on, props } from '@ngrx/store';\nimport { Action, ActionCreator } from '@ngrx/store';\nimport { delay, map, mapTo, tap } from 'rxjs/operators';\n\nimport {\n EntitiesPaginationActions,\n EntitiesPaginationMutators,\n entitiesPaginationTraitKey,\n} from '../entities-pagination';\nimport {\n FilterEntitiesActions,\n FilterEntitiesMutators,\n filterEntitiesTraitKey,\n} from '../filter-entities';\nimport { LoadEntitiesActions } from '../load-entities';\nimport {\n SortEntitiesActions,\n SortEntitiesMutators,\n sortTraitKey,\n} from '../sort-entities';\n\n/**\n * Generates ngrx code necessary to load and set to the current route query params for the filter, sort and paging traits\n *\n * @example\n *\n * const traits = createEntityFeatureFactory(\n * {entityName: 'Todo'},\n * addLoadEntitiesTrait<Todo>(),\n * addFilterEntitiesTrait(),\n * addSortEntitiesTrait<Todo>({\n * remote: true,\n * defaultSort: {active:'id', direction:'asc'}\n * })\n * addEntitiesPaginationTrait<Todo>(),\n * addEntitiesSyncToRouteQueryParams()\n * )({\n * actionsGroupKey: '[Todos]',\n * featureSelector: createFeatureSelector<TestState>>(\n * 'todos',\n * ),\n * });\n *\n *\n * // generated actions\n * traits.actions.loadTodosUsingRouteQueryParams()\n */\nexport function addEntitiesSyncToRouteQueryParams() {\n let setEntitiesRouteQueryParams: ActionCreator<\n string,\n (props: { params: any }) => { params: any } & Action<string>\n >;\n return createTraitFactory({\n key: 'entitiesSyncToRouteQueryParams',\n depends: [entitiesPaginationTraitKey, sortTraitKey, filterEntitiesTraitKey],\n actions({ actionsGroupKey, entitiesName }: TraitActionsFactoryConfig) {\n const actions = {\n loadEntitiesUsingRouteQueryParams: createAction(\n `${actionsGroupKey} Load ${entitiesName} Using Route Query Params`,\n ),\n };\n setEntitiesRouteQueryParams = createAction(\n `${actionsGroupKey} Set ${entitiesName} Route Query Params`,\n props<{ params: any }>(),\n );\n return { ...actions, setEntitiesRouteQueryParams } as typeof actions;\n },\n reducer({ initialState, allMutators: m }) {\n const allMutators = m as EntitiesPaginationMutators<any> &\n FilterEntitiesMutators<any, any> &\n SortEntitiesMutators<any>;\n return createReducer(\n initialState,\n on(setEntitiesRouteQueryParams, (state, { params: p }) => {\n const params = { ...p };\n let newState = state;\n if (params.page) {\n newState = allMutators.setEntitiesPage(\n newState as any,\n +params.page,\n );\n delete params.page;\n }\n if (params.sortActive) {\n newState = allMutators.sortEntities(\n {\n active: params.sortActive,\n direction: params.sortDirection,\n },\n newState as any,\n );\n delete params.sortActive;\n delete params.sortDirection;\n }\n if (Object.keys(params).length) {\n newState = allMutators.setEntitiesFilters(params, newState as any);\n }\n\n return newState;\n }),\n );\n },\n effects({ allActions: a }) {\n const allActions = a as typeof a &\n FilterEntitiesActions<any> &\n SortEntitiesActions<any> &\n EntitiesPaginationActions;\n\n @Injectable()\n class SyncEntitiesStateToUrlEffect extends TraitEffect {\n activatedRoute = inject(ActivatedRoute);\n router = inject(Router);\n\n loadUrlParams$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesUsingRouteQueryParams),\n concatLatestFrom(() => this.activatedRoute.queryParams),\n map(([_, params]) => setEntitiesRouteQueryParams({ params })),\n );\n });\n\n setUrlParams$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(setEntitiesRouteQueryParams),\n mapTo(\n (\n allActions as unknown as LoadEntitiesActions<any>\n ).loadEntities(),\n ),\n );\n });\n\n onFilter$ =\n !!allActions.filterEntities &&\n createEffect(\n () => {\n return this.actions$.pipe(\n ofType(allActions.filterEntities),\n tap(({ filters }) => {\n this.updateUrl(filters);\n }),\n );\n },\n { dispatch: false },\n );\n\n onSort$ =\n !!allActions.sortEntities &&\n createEffect(\n () => {\n return this.actions$.pipe(\n ofType(allActions.sortEntities),\n delay(0),\n tap(({ active, direction }) => {\n this.updateUrl({\n sortActive: active,\n sortDirection: direction,\n });\n }),\n );\n },\n { dispatch: false },\n );\n\n onPaginate$ =\n !!allActions.loadEntitiesPage &&\n createEffect(\n () => {\n return this.actions$.pipe(\n ofType(allActions.loadEntitiesPage),\n tap(({ index }) => {\n this.updateUrl({\n page: index,\n });\n }),\n );\n },\n { dispatch: false },\n );\n\n updateUrl(queryParams: any) {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n }\n return [SyncEntitiesStateToUrlEffect];\n },\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}