@ngrx-traits/common 12.2.0 → 13.0.0

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.
Files changed (228) hide show
  1. package/crud-entities/crud-entities.model.d.ts +1 -3
  2. package/entities-pagination/entities-pagination.model.d.ts +8 -11
  3. package/entities-pagination/entities-pagination.model.internal.d.ts +9 -1
  4. package/entities-pagination/entities-pagination.trait.d.ts +4 -5
  5. package/esm2020/async-action/async-action.model.mjs +2 -0
  6. package/esm2020/async-action/async-action.trait.mjs +110 -0
  7. package/esm2020/async-action/index.mjs +3 -0
  8. package/esm2020/crud-entities/crud-entities.model.mjs +8 -0
  9. package/esm2020/crud-entities/crud-entities.trait.actions.mjs +20 -0
  10. package/esm2020/crud-entities/crud-entities.trait.mjs +57 -0
  11. package/esm2020/crud-entities/crud-entities.trait.mutators.mjs +121 -0
  12. package/esm2020/crud-entities/crud-entities.trait.reducer.mjs +17 -0
  13. package/esm2020/crud-entities/crud-entities.trait.selectors.mjs +54 -0
  14. package/esm2020/crud-entities/index.mjs +3 -0
  15. package/esm2020/entities-pagination/entities-pagination.model.internal.mjs +2 -0
  16. package/esm2020/entities-pagination/entities-pagination.model.mjs +2 -0
  17. package/esm2020/entities-pagination/entities-pagination.trait.actions.mjs +20 -0
  18. package/esm2020/entities-pagination/entities-pagination.trait.effects.mjs +62 -0
  19. package/esm2020/entities-pagination/entities-pagination.trait.mjs +93 -0
  20. package/esm2020/entities-pagination/entities-pagination.trait.mutators.mjs +55 -0
  21. package/esm2020/entities-pagination/entities-pagination.trait.reducer.mjs +87 -0
  22. package/esm2020/entities-pagination/entities-pagination.trait.selectors.mjs +84 -0
  23. package/esm2020/entities-pagination/index.mjs +3 -0
  24. package/esm2020/filter-entities/filter-entities.model.internal.mjs +2 -0
  25. package/esm2020/filter-entities/filter-entities.model.mjs +2 -0
  26. package/esm2020/filter-entities/filter-entities.trait.actions.mjs +16 -0
  27. package/esm2020/filter-entities/filter-entities.trait.effect.mjs +59 -0
  28. package/esm2020/filter-entities/filter-entities.trait.mjs +73 -0
  29. package/esm2020/filter-entities/filter-entities.trait.mutators.mjs +10 -0
  30. package/esm2020/filter-entities/filter-entities.trait.reducer.mjs +11 -0
  31. package/esm2020/filter-entities/filter-entities.trait.selectors.mjs +9 -0
  32. package/esm2020/filter-entities/index.mjs +3 -0
  33. package/esm2020/index.mjs +12 -0
  34. package/esm2020/load-entities/index.mjs +3 -0
  35. package/esm2020/load-entities/load-entities.model.mjs +2 -0
  36. package/esm2020/load-entities/load-entities.mutators.mjs +7 -0
  37. package/esm2020/load-entities/load-entities.trait.actions.mjs +10 -0
  38. package/esm2020/load-entities/load-entities.trait.mjs +62 -0
  39. package/esm2020/load-entities/load-entities.trait.reducer.mjs +27 -0
  40. package/esm2020/load-entities/load-entities.trait.selectors.mjs +38 -0
  41. package/esm2020/load-entities/load-entities.utils.mjs +10 -0
  42. package/esm2020/load-entity/index.mjs +3 -0
  43. package/esm2020/load-entity/load-entity.model.mjs +2 -0
  44. package/esm2020/load-entity/load-entity.traits.mjs +74 -0
  45. package/esm2020/ngrx-traits-common.mjs +5 -0
  46. package/esm2020/public_api.mjs +2 -0
  47. package/esm2020/reset/index.mjs +2 -0
  48. package/esm2020/reset/reset.trait.mjs +39 -0
  49. package/esm2020/select-entities/index.mjs +4 -0
  50. package/esm2020/select-entities/select-entities.model.mjs +2 -0
  51. package/esm2020/select-entities/select-entities.trait.actions.mjs +11 -0
  52. package/esm2020/select-entities/select-entities.trait.mjs +54 -0
  53. package/esm2020/select-entities/select-entities.trait.mutators.mjs +27 -0
  54. package/esm2020/select-entities/select-entities.trait.reducer.mjs +42 -0
  55. package/esm2020/select-entities/select-entities.trait.selectors.mjs +28 -0
  56. package/esm2020/select-entities/select-entities.utils.mjs +30 -0
  57. package/esm2020/select-entity/index.mjs +3 -0
  58. package/esm2020/select-entity/select-entity.model.mjs +2 -0
  59. package/esm2020/select-entity/select-entity.trait.actions.mjs +9 -0
  60. package/esm2020/select-entity/select-entity.trait.mjs +51 -0
  61. package/esm2020/select-entity/select-entity.trait.mutators.mjs +26 -0
  62. package/esm2020/select-entity/select-entity.trait.reducer.mjs +35 -0
  63. package/esm2020/select-entity/select-entity.trait.selectors.mjs +13 -0
  64. package/esm2020/set-entity/index.mjs +3 -0
  65. package/esm2020/set-entity/set-entity.model.mjs +2 -0
  66. package/esm2020/set-entity/set-entity.trait.mjs +58 -0
  67. package/esm2020/sort-entities/index.mjs +4 -0
  68. package/esm2020/sort-entities/sort-entities.model.mjs +2 -0
  69. package/esm2020/sort-entities/sort-entities.trait.actions.mjs +8 -0
  70. package/esm2020/sort-entities/sort-entities.trait.effect.mjs +28 -0
  71. package/esm2020/sort-entities/sort-entities.trait.mjs +59 -0
  72. package/esm2020/sort-entities/sort-entities.trait.mutators.mjs +17 -0
  73. package/esm2020/sort-entities/sort-entities.trait.reducer.mjs +28 -0
  74. package/esm2020/sort-entities/sort-entities.trait.selectors.mjs +9 -0
  75. package/esm2020/sort-entities/sort-entities.utils.mjs +63 -0
  76. package/fesm2015/{ngrx-traits-common.js → ngrx-traits-common.mjs} +61 -82
  77. package/fesm2015/ngrx-traits-common.mjs.map +1 -0
  78. package/fesm2020/ngrx-traits-common.mjs +1747 -0
  79. package/fesm2020/ngrx-traits-common.mjs.map +1 -0
  80. package/load-entity/load-entity.traits.d.ts +1 -1
  81. package/package.json +27 -15
  82. package/reset/reset.trait.d.ts +3 -4
  83. package/set-entity/set-entity.trait.d.ts +1 -1
  84. package/bundles/ngrx-traits-common.umd.js +0 -2194
  85. package/bundles/ngrx-traits-common.umd.js.map +0 -1
  86. package/esm2015/async-action/async-action.model.js +0 -2
  87. package/esm2015/async-action/async-action.model.js.map +0 -1
  88. package/esm2015/async-action/async-action.trait.js +0 -101
  89. package/esm2015/async-action/async-action.trait.js.map +0 -1
  90. package/esm2015/async-action/index.js +0 -3
  91. package/esm2015/async-action/index.js.map +0 -1
  92. package/esm2015/crud-entities/crud-entities.model.js +0 -8
  93. package/esm2015/crud-entities/crud-entities.model.js.map +0 -1
  94. package/esm2015/crud-entities/crud-entities.trait.actions.js +0 -20
  95. package/esm2015/crud-entities/crud-entities.trait.actions.js.map +0 -1
  96. package/esm2015/crud-entities/crud-entities.trait.js +0 -57
  97. package/esm2015/crud-entities/crud-entities.trait.js.map +0 -1
  98. package/esm2015/crud-entities/crud-entities.trait.mutators.js +0 -101
  99. package/esm2015/crud-entities/crud-entities.trait.mutators.js.map +0 -1
  100. package/esm2015/crud-entities/crud-entities.trait.reducer.js +0 -15
  101. package/esm2015/crud-entities/crud-entities.trait.reducer.js.map +0 -1
  102. package/esm2015/crud-entities/crud-entities.trait.selectors.js +0 -70
  103. package/esm2015/crud-entities/crud-entities.trait.selectors.js.map +0 -1
  104. package/esm2015/crud-entities/index.js +0 -3
  105. package/esm2015/crud-entities/index.js.map +0 -1
  106. package/esm2015/entities-pagination/entities-pagination.model.internal.js +0 -2
  107. package/esm2015/entities-pagination/entities-pagination.model.internal.js.map +0 -1
  108. package/esm2015/entities-pagination/entities-pagination.model.js +0 -2
  109. package/esm2015/entities-pagination/entities-pagination.model.js.map +0 -1
  110. package/esm2015/entities-pagination/entities-pagination.trait.actions.js +0 -20
  111. package/esm2015/entities-pagination/entities-pagination.trait.actions.js.map +0 -1
  112. package/esm2015/entities-pagination/entities-pagination.trait.effects.js +0 -54
  113. package/esm2015/entities-pagination/entities-pagination.trait.effects.js.map +0 -1
  114. package/esm2015/entities-pagination/entities-pagination.trait.js +0 -94
  115. package/esm2015/entities-pagination/entities-pagination.trait.js.map +0 -1
  116. package/esm2015/entities-pagination/entities-pagination.trait.mutators.js +0 -23
  117. package/esm2015/entities-pagination/entities-pagination.trait.mutators.js.map +0 -1
  118. package/esm2015/entities-pagination/entities-pagination.trait.reducer.js +0 -33
  119. package/esm2015/entities-pagination/entities-pagination.trait.reducer.js.map +0 -1
  120. package/esm2015/entities-pagination/entities-pagination.trait.selectors.js +0 -65
  121. package/esm2015/entities-pagination/entities-pagination.trait.selectors.js.map +0 -1
  122. package/esm2015/entities-pagination/index.js +0 -3
  123. package/esm2015/entities-pagination/index.js.map +0 -1
  124. package/esm2015/filter-entities/filter-entities.model.internal.js +0 -2
  125. package/esm2015/filter-entities/filter-entities.model.internal.js.map +0 -1
  126. package/esm2015/filter-entities/filter-entities.model.js +0 -2
  127. package/esm2015/filter-entities/filter-entities.model.js.map +0 -1
  128. package/esm2015/filter-entities/filter-entities.trait.actions.js +0 -16
  129. package/esm2015/filter-entities/filter-entities.trait.actions.js.map +0 -1
  130. package/esm2015/filter-entities/filter-entities.trait.effect.js +0 -56
  131. package/esm2015/filter-entities/filter-entities.trait.effect.js.map +0 -1
  132. package/esm2015/filter-entities/filter-entities.trait.js +0 -73
  133. package/esm2015/filter-entities/filter-entities.trait.js.map +0 -1
  134. package/esm2015/filter-entities/filter-entities.trait.mutators.js +0 -7
  135. package/esm2015/filter-entities/filter-entities.trait.mutators.js.map +0 -1
  136. package/esm2015/filter-entities/filter-entities.trait.reducer.js +0 -9
  137. package/esm2015/filter-entities/filter-entities.trait.reducer.js.map +0 -1
  138. package/esm2015/filter-entities/filter-entities.trait.selectors.js +0 -9
  139. package/esm2015/filter-entities/filter-entities.trait.selectors.js.map +0 -1
  140. package/esm2015/filter-entities/index.js +0 -3
  141. package/esm2015/filter-entities/index.js.map +0 -1
  142. package/esm2015/index.js +0 -12
  143. package/esm2015/index.js.map +0 -1
  144. package/esm2015/load-entities/index.js +0 -3
  145. package/esm2015/load-entities/index.js.map +0 -1
  146. package/esm2015/load-entities/load-entities.model.js +0 -2
  147. package/esm2015/load-entities/load-entities.model.js.map +0 -1
  148. package/esm2015/load-entities/load-entities.mutators.js +0 -8
  149. package/esm2015/load-entities/load-entities.mutators.js.map +0 -1
  150. package/esm2015/load-entities/load-entities.trait.actions.js +0 -10
  151. package/esm2015/load-entities/load-entities.trait.actions.js.map +0 -1
  152. package/esm2015/load-entities/load-entities.trait.js +0 -62
  153. package/esm2015/load-entities/load-entities.trait.js.map +0 -1
  154. package/esm2015/load-entities/load-entities.trait.reducer.js +0 -12
  155. package/esm2015/load-entities/load-entities.trait.reducer.js.map +0 -1
  156. package/esm2015/load-entities/load-entities.trait.selectors.js +0 -33
  157. package/esm2015/load-entities/load-entities.trait.selectors.js.map +0 -1
  158. package/esm2015/load-entities/load-entities.utils.js +0 -10
  159. package/esm2015/load-entities/load-entities.utils.js.map +0 -1
  160. package/esm2015/load-entity/index.js +0 -3
  161. package/esm2015/load-entity/index.js.map +0 -1
  162. package/esm2015/load-entity/load-entity.model.js +0 -2
  163. package/esm2015/load-entity/load-entity.model.js.map +0 -1
  164. package/esm2015/load-entity/load-entity.traits.js +0 -71
  165. package/esm2015/load-entity/load-entity.traits.js.map +0 -1
  166. package/esm2015/ngrx-traits-common.js +0 -5
  167. package/esm2015/ngrx-traits-common.js.map +0 -1
  168. package/esm2015/public_api.js +0 -2
  169. package/esm2015/public_api.js.map +0 -1
  170. package/esm2015/reset/index.js +0 -2
  171. package/esm2015/reset/index.js.map +0 -1
  172. package/esm2015/reset/reset.trait.js +0 -69
  173. package/esm2015/reset/reset.trait.js.map +0 -1
  174. package/esm2015/select-entities/index.js +0 -4
  175. package/esm2015/select-entities/index.js.map +0 -1
  176. package/esm2015/select-entities/select-entities.model.js +0 -2
  177. package/esm2015/select-entities/select-entities.model.js.map +0 -1
  178. package/esm2015/select-entities/select-entities.trait.actions.js +0 -11
  179. package/esm2015/select-entities/select-entities.trait.actions.js.map +0 -1
  180. package/esm2015/select-entities/select-entities.trait.js +0 -54
  181. package/esm2015/select-entities/select-entities.trait.js.map +0 -1
  182. package/esm2015/select-entities/select-entities.trait.mutators.js +0 -21
  183. package/esm2015/select-entities/select-entities.trait.mutators.js.map +0 -1
  184. package/esm2015/select-entities/select-entities.trait.reducer.js +0 -40
  185. package/esm2015/select-entities/select-entities.trait.reducer.js.map +0 -1
  186. package/esm2015/select-entities/select-entities.trait.selectors.js +0 -28
  187. package/esm2015/select-entities/select-entities.trait.selectors.js.map +0 -1
  188. package/esm2015/select-entities/select-entities.utils.js +0 -25
  189. package/esm2015/select-entities/select-entities.utils.js.map +0 -1
  190. package/esm2015/select-entity/index.js +0 -3
  191. package/esm2015/select-entity/index.js.map +0 -1
  192. package/esm2015/select-entity/select-entity.model.js +0 -2
  193. package/esm2015/select-entity/select-entity.model.js.map +0 -1
  194. package/esm2015/select-entity/select-entity.trait.actions.js +0 -9
  195. package/esm2015/select-entity/select-entity.trait.actions.js.map +0 -1
  196. package/esm2015/select-entity/select-entity.trait.js +0 -51
  197. package/esm2015/select-entity/select-entity.trait.js.map +0 -1
  198. package/esm2015/select-entity/select-entity.trait.mutators.js +0 -17
  199. package/esm2015/select-entity/select-entity.trait.mutators.js.map +0 -1
  200. package/esm2015/select-entity/select-entity.trait.reducer.js +0 -26
  201. package/esm2015/select-entity/select-entity.trait.reducer.js.map +0 -1
  202. package/esm2015/select-entity/select-entity.trait.selectors.js +0 -13
  203. package/esm2015/select-entity/select-entity.trait.selectors.js.map +0 -1
  204. package/esm2015/set-entity/index.js +0 -3
  205. package/esm2015/set-entity/index.js.map +0 -1
  206. package/esm2015/set-entity/set-entity.model.js +0 -2
  207. package/esm2015/set-entity/set-entity.model.js.map +0 -1
  208. package/esm2015/set-entity/set-entity.trait.js +0 -55
  209. package/esm2015/set-entity/set-entity.trait.js.map +0 -1
  210. package/esm2015/sort-entities/index.js +0 -4
  211. package/esm2015/sort-entities/index.js.map +0 -1
  212. package/esm2015/sort-entities/sort-entities.model.js +0 -2
  213. package/esm2015/sort-entities/sort-entities.model.js.map +0 -1
  214. package/esm2015/sort-entities/sort-entities.trait.actions.js +0 -8
  215. package/esm2015/sort-entities/sort-entities.trait.actions.js.map +0 -1
  216. package/esm2015/sort-entities/sort-entities.trait.effect.js +0 -28
  217. package/esm2015/sort-entities/sort-entities.trait.effect.js.map +0 -1
  218. package/esm2015/sort-entities/sort-entities.trait.js +0 -59
  219. package/esm2015/sort-entities/sort-entities.trait.js.map +0 -1
  220. package/esm2015/sort-entities/sort-entities.trait.mutators.js +0 -13
  221. package/esm2015/sort-entities/sort-entities.trait.mutators.js.map +0 -1
  222. package/esm2015/sort-entities/sort-entities.trait.reducer.js +0 -22
  223. package/esm2015/sort-entities/sort-entities.trait.reducer.js.map +0 -1
  224. package/esm2015/sort-entities/sort-entities.trait.selectors.js +0 -10
  225. package/esm2015/sort-entities/sort-entities.trait.selectors.js.map +0 -1
  226. package/esm2015/sort-entities/sort-entities.utils.js +0 -63
  227. package/esm2015/sort-entities/sort-entities.utils.js.map +0 -1
  228. package/fesm2015/ngrx-traits-common.js.map +0 -1
@@ -0,0 +1,39 @@
1
+ import { createTraitFactory, insertIf } from '@ngrx-traits/core';
2
+ import { createAction, createReducer, on } from '@ngrx/store';
3
+ /**
4
+ * Generates the ngrx code needed to reset the current state to the initial state.
5
+ * @param traitConfig - Config object fot the trait factory
6
+ * @param traitConfig.resetOn - set an extra action which will also trigger a reset state,
7
+ * useful if you want to create an action that reset several features states
8
+ *
9
+ * @example
10
+ * // The following trait config
11
+ *
12
+ * export interface TestState
13
+ * extends EntityAndStatusState<Todo>,FilterState<TodoFilter>{}
14
+ *
15
+ * const traits = createEntityFeatureFactory(
16
+ * addLoadEntitiesTrait<Todo>(),
17
+ * addResetEntitiesStateTrait()
18
+ * )({
19
+ * actionsGroupKey: '[Todos]',
20
+ * featureSelector: createFeatureSelector<TestState>>(
21
+ * 'todos',
22
+ * ),
23
+ * });
24
+ * // generated actions
25
+ * traits.actions.resetTodosState()
26
+ */
27
+ export function addResetEntitiesStateTrait(traitConfig = {}) {
28
+ return createTraitFactory({
29
+ key: 'reset',
30
+ config: traitConfig,
31
+ actions: ({ actionsGroupKey, entitiesName, }) => ({
32
+ resetEntitiesState: createAction(`${actionsGroupKey} Reset ${entitiesName} State`),
33
+ }),
34
+ reducer: ({ allActions, initialState }) => createReducer(initialState, on(allActions.resetEntitiesState, () => initialState), ...insertIf(traitConfig.resetOn, () =>
35
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
36
+ on(...traitConfig.resetOn, () => initialState))),
37
+ });
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQudHJhaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3Jlc2V0L3Jlc2V0LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFPckU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxjQUVJLEVBQUU7SUFFTixPQUFPLGtCQUFrQixDQUFDO1FBQ3hCLEdBQUcsRUFBRSxPQUFPO1FBQ1osTUFBTSxFQUFFLFdBQVc7UUFDbkIsT0FBTyxFQUFFLENBQUMsRUFDUixlQUFlLEVBQ2YsWUFBWSxHQUNjLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixHQUFHLGVBQWUsVUFBVSxZQUFZLFFBQVEsQ0FDakQ7U0FDRixDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUN4QyxhQUFhLENBQ1gsWUFBWSxFQUNaLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQ3JELEdBQUcsUUFBUSxDQUFzQixXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUN6RCxvRUFBb0U7UUFDcEUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FDaEQsQ0FDRjtLQUNKLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnksIGluc2VydElmIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgR2VuZXJpY0FjdGlvbkNyZWF0b3IgfSBmcm9tICcuLi9sb2FkLWVudGl0aWVzJztcbmltcG9ydCB7IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIGNyZWF0ZVJlZHVjZXIsIG9uLCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYWl0RWZmZWN0IH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IG1hcFRvIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIG5ncnggY29kZSBuZWVkZWQgdG8gcmVzZXQgdGhlIGN1cnJlbnQgc3RhdGUgdG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gKiBAcGFyYW0gdHJhaXRDb25maWcgLSBDb25maWcgb2JqZWN0IGZvdCB0aGUgdHJhaXQgZmFjdG9yeVxuICogQHBhcmFtIHRyYWl0Q29uZmlnLnJlc2V0T24gLSBzZXQgYW4gZXh0cmEgYWN0aW9uIHdoaWNoIHdpbGwgYWxzbyB0cmlnZ2VyIGEgcmVzZXQgc3RhdGUsXG4gKiB1c2VmdWwgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGFjdGlvbiB0aGF0IHJlc2V0IHNldmVyYWwgZmVhdHVyZXMgc3RhdGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKlxuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgRW50aXR5QW5kU3RhdHVzU3RhdGU8VG9kbz4sRmlsdGVyU3RhdGU8VG9kb0ZpbHRlcj57fVxuICpcbiAqICAgIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogICAgICBhZGRMb2FkRW50aXRpZXNUcmFpdDxUb2RvPigpLFxuICogICAgICBhZGRSZXNldEVudGl0aWVzU3RhdGVUcmFpdCgpXG4gKiAgICApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnW1RvZG9zXScsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFRlc3RTdGF0ZT4+KFxuICogICAgICAgICd0b2RvcycsXG4gKiAgICAgICksXG4gKiAgICB9KTtcbiAqIC8vIGdlbmVyYXRlZCBhY3Rpb25zXG4gKiB0cmFpdHMuYWN0aW9ucy5yZXNldFRvZG9zU3RhdGUoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVzZXRFbnRpdGllc1N0YXRlVHJhaXQoXG4gIHRyYWl0Q29uZmlnOiB7XG4gICAgcmVzZXRPbj86IHJlYWRvbmx5IEFjdGlvbkNyZWF0b3JbXTtcbiAgfSA9IHt9XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYWl0RmFjdG9yeSh7XG4gICAga2V5OiAncmVzZXQnLFxuICAgIGNvbmZpZzogdHJhaXRDb25maWcsXG4gICAgYWN0aW9uczogKHtcbiAgICAgIGFjdGlvbnNHcm91cEtleSxcbiAgICAgIGVudGl0aWVzTmFtZSxcbiAgICB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PiAoe1xuICAgICAgcmVzZXRFbnRpdGllc1N0YXRlOiBjcmVhdGVBY3Rpb24oXG4gICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gUmVzZXQgJHtlbnRpdGllc05hbWV9IFN0YXRlYFxuICAgICAgKSxcbiAgICB9KSxcbiAgICByZWR1Y2VyOiAoeyBhbGxBY3Rpb25zLCBpbml0aWFsU3RhdGUgfSkgPT5cbiAgICAgIGNyZWF0ZVJlZHVjZXIoXG4gICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgb24oYWxsQWN0aW9ucy5yZXNldEVudGl0aWVzU3RhdGUsICgpID0+IGluaXRpYWxTdGF0ZSksXG4gICAgICAgIC4uLmluc2VydElmPHR5cGVvZiBpbml0aWFsU3RhdGU+KHRyYWl0Q29uZmlnLnJlc2V0T24sICgpID0+XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICBvbiguLi50cmFpdENvbmZpZy5yZXNldE9uISwgKCkgPT4gaW5pdGlhbFN0YXRlKVxuICAgICAgICApXG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './select-entities.model';
2
+ export * from './select-entities.trait';
3
+ export * from './select-entities.utils';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnRyYWl0JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnV0aWxzJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IsIFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0RW50aXRpZXNTdGF0ZSB7XG4gIHNlbGVjdGVkSWRzOiBEaWN0aW9uYXJ5PGJvb2xlYW4+O1xufVxuXG5leHBvcnQgdHlwZSBTZWxlY3RFbnRpdGllc0FjdGlvbnMgPSB7XG4gIHNlbGVjdEVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHtcbiAgICAgIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgfSkgPT4geyBpZDogbnVtYmVyIHwgc3RyaW5nIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIGRlc2VsZWN0RW50aXRpZXM6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczoge1xuICAgICAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgICB9KSA9PiB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgdG9nZ2xlU2VsZWN0RW50aXRpZXM6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczoge1xuICAgICAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgICB9KSA9PiB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgdG9nZ2xlU2VsZWN0QWxsRW50aXRpZXM6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbjogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0RW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PiA9IHtcbiAgaXNBbGxFbnRpdGllc1NlbGVjdGVkOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4gICkgPT4gU2VsZWN0ZWQ7XG4gIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRNYXA6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbiAgKSA9PiBEaWN0aW9uYXJ5PGJvb2xlYW4+O1xuICBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTGlzdDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZVxuICApID0+IG51bWJlcltdIHwgc3RyaW5nW107XG4gIHNlbGVjdEVudGl0aWVzU2VsZWN0ZWRNYXA6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbiAgKSA9PiBEaWN0aW9uYXJ5PEVudGl0eT47XG4gIHNlbGVjdEVudGl0aWVzU2VsZWN0ZWRMaXN0OiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4gICkgPT4gRW50aXR5W107XG4gIHNlbGVjdFRvdGFsU2VsZWN0ZWRFbnRpdGllczogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZVxuICApID0+IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0aWVzTXV0YXRvcnM8RW50aXR5PiA9IHtcbiAgc2VsZWN0RW50aXRpZXM6IDxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGU+KFxuICAgIGlkOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgc3RhdGU6IFNcbiAgKSA9PiBTO1xuXG4gIGRlc2VsZWN0RW50aXRpZXM8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlPihcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nLFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG5cbiAgdG9nZ2xlU2VsZWN0RW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4gID4oXG4gICAgaWQ6IG51bWJlciB8IHN0cmluZyxcbiAgICBzdGF0ZTogU1xuICApOiBTO1xuXG4gIHRvZ2dsZVNlbGVjdEFsbEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZVxuICA+KFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG5cbiAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbjxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbiAgPihcbiAgICBzdGF0ZTogU1xuICApOiBTO1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWQgPSAnYWxsJyB8ICdzb21lJyB8ICdub25lJztcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { createAction, props } from '@ngrx/store';
2
+ export function createSelectEntitiesTraitActions(actionsGroupKey, entitiesName) {
3
+ return {
4
+ selectEntities: createAction(`${actionsGroupKey} Select ${entitiesName}`, props()),
5
+ deselectEntities: createAction(`${actionsGroupKey} Deselect ${entitiesName}`, props()),
6
+ toggleSelectEntities: createAction(`${actionsGroupKey} Toggle Select ${entitiesName}`, props()),
7
+ toggleSelectAllEntities: createAction(`${actionsGroupKey} Toggle Select All ${entitiesName}`),
8
+ clearEntitiesSelection: createAction(`${actionsGroupKey} Clear ${entitiesName} Selection`),
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdGllcy9zZWxlY3QtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLGVBQXVCLEVBQ3ZCLFlBQW9CO0lBRXBCLE9BQU87UUFDTCxjQUFjLEVBQUUsWUFBWSxDQUMxQixHQUFHLGVBQWUsV0FBVyxZQUFZLEVBQUUsRUFDM0MsS0FBSyxFQUEyQixDQUNqQztRQUNELGdCQUFnQixFQUFFLFlBQVksQ0FDNUIsR0FBRyxlQUFlLGFBQWEsWUFBWSxFQUFFLEVBQzdDLEtBQUssRUFBMkIsQ0FDakM7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxrQkFBa0IsWUFBWSxFQUFFLEVBQ2xELEtBQUssRUFBMkIsQ0FDakM7UUFDRCx1QkFBdUIsRUFBRSxZQUFZLENBQ25DLEdBQUcsZUFBZSxzQkFBc0IsWUFBWSxFQUFFLENBQ3ZEO1FBQ0Qsc0JBQXNCLEVBQUUsWUFBWSxDQUNsQyxHQUFHLGVBQWUsVUFBVSxZQUFZLFlBQVksQ0FDckQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgcHJvcHMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBTZWxlY3RFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0QWN0aW9ucyhcbiAgYWN0aW9uc0dyb3VwS2V5OiBzdHJpbmcsXG4gIGVudGl0aWVzTmFtZTogc3RyaW5nXG4pOiBTZWxlY3RFbnRpdGllc0FjdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFNlbGVjdCAke2VudGl0aWVzTmFtZX1gLFxuICAgICAgcHJvcHM8eyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KClcbiAgICApLFxuICAgIGRlc2VsZWN0RW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gRGVzZWxlY3QgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgIHByb3BzPHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PigpXG4gICAgKSxcbiAgICB0b2dnbGVTZWxlY3RFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBUb2dnbGUgU2VsZWN0ICR7ZW50aXRpZXNOYW1lfWAsXG4gICAgICBwcm9wczx7IGlkOiBudW1iZXIgfCBzdHJpbmcgfT4oKVxuICAgICksXG4gICAgdG9nZ2xlU2VsZWN0QWxsRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVG9nZ2xlIFNlbGVjdCBBbGwgJHtlbnRpdGllc05hbWV9YFxuICAgICksXG4gICAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBDbGVhciAke2VudGl0aWVzTmFtZX0gU2VsZWN0aW9uYFxuICAgICksXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { createSelectEntitiesTraitActions } from './select-entities.trait.actions';
2
+ import { createSelectEntitiesTraitSelectors } from './select-entities.trait.selectors';
3
+ import { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';
4
+ import { createTraitFactory } from '@ngrx-traits/core';
5
+ import { createSelectEntitiesInitialState, createSelectEntitiesTraitReducer, } from './select-entities.trait.reducer';
6
+ import { createSelectEntitiesTraitMutators } from './select-entities.trait.mutators';
7
+ /**
8
+ * Generates ngrx code to add multi selection to a list
9
+ *
10
+ * @example
11
+ * // The following trait config
12
+ *
13
+ * export interface TestState
14
+ * extends EntityAndStatusState<Todo>,MultipleSelectionState{}
15
+ *
16
+ * const traits = createEntityFeatureFactory(
17
+ * addLoadEntitiesTrait<Todo>(),
18
+ * addSelectEntitiesTrait<Todo>()
19
+ * )({
20
+ * actionsGroupKey: '[Todos]',
21
+ * featureSelector: createFeatureSelector<TestState>>(
22
+ * 'todos',
23
+ * ),
24
+ * });
25
+ *
26
+ * // adds following props to the state:
27
+ * // selectedIds: Dictionary<boolean>;
28
+ *
29
+ * // generated actions
30
+ * traits.actions.selectTodos({id})
31
+ * traits.actions.deselectTodos({id})
32
+ * traits.actions.toggleSectTodos({id})
33
+ * traits.actions.toggleSelectAllTodos()
34
+ * traits.actions.clearTodosSelection()
35
+ * //generated selectors
36
+ * traits.selectors.isAllTodosSelected()
37
+ * traits.selectors.selectTodosIdsSelectedMap()
38
+ * traits.selectors.selectTodosIdsSelectedList()
39
+ * traits.selectors.selectTodosSelectedMap()
40
+ * traits.selectors.selectTodosSelectedList()
41
+ * traits.selectors.selectTotalSelectedTodos()
42
+ */
43
+ export function addSelectEntitiesTrait() {
44
+ return createTraitFactory({
45
+ key: 'SelectEntities',
46
+ depends: [loadEntitiesTraitKey],
47
+ actions: ({ actionsGroupKey, entitiesName }) => createSelectEntitiesTraitActions(actionsGroupKey, entitiesName),
48
+ selectors: ({ previousSelectors }) => createSelectEntitiesTraitSelectors(previousSelectors),
49
+ initialState: ({ previousInitialState }) => createSelectEntitiesInitialState(previousInitialState),
50
+ mutators: ({ allSelectors }) => createSelectEntitiesTraitMutators(allSelectors),
51
+ reducer: ({ initialState, allActions, allMutators, allConfigs }) => createSelectEntitiesTraitReducer(initialState, allActions, allMutators, allConfigs),
52
+ });
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBU3ZGLE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3JGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBNkIsRUFBRSxFQUFFLENBQ3hFLGdDQUFnQyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDakUsU0FBUyxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBK0IsRUFBRSxFQUFFLENBQ2hFLGtDQUFrQyxDQUNoQyxpQkFBa0QsQ0FDbkQ7UUFDSCxZQUFZLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixFQUFrQyxFQUFFLEVBQUUsQ0FDekUsZ0NBQWdDLENBQVMsb0JBQW9CLENBQUM7UUFDaEUsUUFBUSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQW1DLEVBQUUsRUFBRSxDQUM5RCxpQ0FBaUMsQ0FDL0IsWUFBK0MsQ0FDaEQ7UUFDSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FDakUsZ0NBQWdDLENBQzlCLFlBQVksRUFDWixVQUsyQixFQUMzQixXQUFXLEVBQ1gsVUFFaUMsQ0FDbEM7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdEFjdGlvbnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy50cmFpdC5hY3Rpb25zJztcbmltcG9ydCB7IFNvcnRFbnRpdGllc0FjdGlvbnMsIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnIH0gZnJvbSAnLi4vc29ydC1lbnRpdGllcyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0U2VsZWN0b3JzIH0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMudHJhaXQuc2VsZWN0b3JzJztcbmltcG9ydCB7XG4gIFNlbGVjdEVudGl0aWVzU2VsZWN0b3JzLFxuICBTZWxlY3RFbnRpdGllc0FjdGlvbnMsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMsXG4gIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnLFxufSBmcm9tICcuLi9lbnRpdGllcy1wYWdpbmF0aW9uL2VudGl0aWVzLXBhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIExvYWRFbnRpdGllc1NlbGVjdG9ycyxcbiAgbG9hZEVudGl0aWVzVHJhaXRLZXksXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpdEZhY3RvcnkgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIGNyZWF0ZVNlbGVjdEVudGl0aWVzSW5pdGlhbFN0YXRlLFxuICBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0UmVkdWNlcixcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXRpZXMudHJhaXQucmVkdWNlcic7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0TXV0YXRvcnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy50cmFpdC5tdXRhdG9ycyc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMnO1xuaW1wb3J0IHtcbiAgVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFNlbGVjdG9yc0ZhY3RvcnlDb25maWcsXG4gIFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWcsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgbmdyeCBjb2RlIHRvIGFkZCBtdWx0aSBzZWxlY3Rpb24gdG8gYSBsaXN0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKlxuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgRW50aXR5QW5kU3RhdHVzU3RhdGU8VG9kbz4sTXVsdGlwbGVTZWxlY3Rpb25TdGF0ZXt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIGFkZExvYWRFbnRpdGllc1RyYWl0PFRvZG8+KCksXG4gKiAgICAgIGFkZFNlbGVjdEVudGl0aWVzVHJhaXQ8VG9kbz4oKVxuICogICAgKSh7XG4gKiAgICAgIGFjdGlvbnNHcm91cEtleTogJ1tUb2Rvc10nLFxuICogICAgICBmZWF0dXJlU2VsZWN0b3I6IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxUZXN0U3RhdGU+PihcbiAqICAgICAgICAndG9kb3MnLFxuICogICAgICApLFxuICogICAgfSk7XG4gKlxuICogLy8gICBhZGRzIGZvbGxvd2luZyBwcm9wcyB0byB0aGUgc3RhdGU6XG4gKiAvLyAgICBzZWxlY3RlZElkczogRGljdGlvbmFyeTxib29sZWFuPjtcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuc2VsZWN0VG9kb3Moe2lkfSlcbiAqIHRyYWl0cy5hY3Rpb25zLmRlc2VsZWN0VG9kb3Moe2lkfSlcbiAqIHRyYWl0cy5hY3Rpb25zLnRvZ2dsZVNlY3RUb2Rvcyh7aWR9KVxuICogdHJhaXRzLmFjdGlvbnMudG9nZ2xlU2VsZWN0QWxsVG9kb3MoKVxuICogdHJhaXRzLmFjdGlvbnMuY2xlYXJUb2Rvc1NlbGVjdGlvbigpXG4gKiAvL2dlbmVyYXRlZCBzZWxlY3RvcnNcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNBbGxUb2Rvc1NlbGVjdGVkKClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NJZHNTZWxlY3RlZE1hcCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9zSWRzU2VsZWN0ZWRMaXN0KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NTZWxlY3RlZE1hcCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdFRvZG9zU2VsZWN0ZWRMaXN0KClcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG90YWxTZWxlY3RlZFRvZG9zKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFNlbGVjdEVudGl0aWVzVHJhaXQ8RW50aXR5PigpIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYWl0RmFjdG9yeSh7XG4gICAga2V5OiAnU2VsZWN0RW50aXRpZXMnLFxuICAgIGRlcGVuZHM6IFtsb2FkRW50aXRpZXNUcmFpdEtleV0sXG4gICAgYWN0aW9uczogKHsgYWN0aW9uc0dyb3VwS2V5LCBlbnRpdGllc05hbWUgfTogVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0aWVzVHJhaXRBY3Rpb25zKGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lKSxcbiAgICBzZWxlY3RvcnM6ICh7IHByZXZpb3VzU2VsZWN0b3JzIH06IFRyYWl0U2VsZWN0b3JzRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0aWVzVHJhaXRTZWxlY3RvcnM8RW50aXR5PihcbiAgICAgICAgcHJldmlvdXNTZWxlY3RvcnMgYXMgTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT5cbiAgICAgICksXG4gICAgaW5pdGlhbFN0YXRlOiAoeyBwcmV2aW91c0luaXRpYWxTdGF0ZSB9OiBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVTZWxlY3RFbnRpdGllc0luaXRpYWxTdGF0ZTxFbnRpdHk+KHByZXZpb3VzSW5pdGlhbFN0YXRlKSxcbiAgICBtdXRhdG9yczogKHsgYWxsU2VsZWN0b3JzIH06IFRyYWl0U3RhdGVNdXRhdG9yc0ZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVTZWxlY3RFbnRpdGllc1RyYWl0TXV0YXRvcnM8RW50aXR5PihcbiAgICAgICAgYWxsU2VsZWN0b3JzIGFzIFNlbGVjdEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT5cbiAgICAgICksXG4gICAgcmVkdWNlcjogKHsgaW5pdGlhbFN0YXRlLCBhbGxBY3Rpb25zLCBhbGxNdXRhdG9ycywgYWxsQ29uZmlncyB9KSA9PlxuICAgICAgY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFJlZHVjZXIoXG4gICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgYWxsQWN0aW9ucyBhcyBTZWxlY3RFbnRpdGllc0FjdGlvbnMgJlxuICAgICAgICAgIENydWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBMb2FkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgICAgICAgIEZpbHRlckVudGl0aWVzQWN0aW9uczxhbnk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICAgICAgICBhbGxNdXRhdG9ycyxcbiAgICAgICAgYWxsQ29uZmlncyBhcyBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICAgICAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyAmXG4gICAgICAgICAgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuICAgICAgKSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { toMap } from '@ngrx-traits/core';
2
+ import { clearEntitiesSelection, deselectEntities, selectEntities, toggleSelectEntities, } from './select-entities.utils';
3
+ export function createSelectEntitiesTraitMutators({ isAllEntitiesSelected, }) {
4
+ function toggleSelectAllEntities(state) {
5
+ const allSelected = isAllEntitiesSelected(state);
6
+ if (allSelected === 'all') {
7
+ return {
8
+ ...state,
9
+ selectedIds: {},
10
+ };
11
+ }
12
+ else {
13
+ return {
14
+ ...state,
15
+ selectedIds: toMap(state.ids),
16
+ };
17
+ }
18
+ }
19
+ return {
20
+ selectEntities,
21
+ deselectEntities,
22
+ toggleSelectEntities,
23
+ toggleSelectAllEntities,
24
+ clearEntitiesSelection,
25
+ };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsb0JBQW9CLEdBQ3JCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsTUFBTSxVQUFVLGlDQUFpQyxDQUFTLEVBQ3hELHFCQUFxQixHQUNXO0lBQ2hDLFNBQVMsdUJBQXVCLENBRTlCLEtBQVE7UUFDUixNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDekIsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDOUIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsc0JBQXNCO0tBQ3ZCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VsZWN0RW50aXRpZXNNdXRhdG9ycyxcbiAgU2VsZWN0RW50aXRpZXNTZWxlY3RvcnMsXG4gIFNlbGVjdEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IHRvTWFwIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgY2xlYXJFbnRpdGllc1NlbGVjdGlvbixcbiAgZGVzZWxlY3RFbnRpdGllcyxcbiAgc2VsZWN0RW50aXRpZXMsXG4gIHRvZ2dsZVNlbGVjdEVudGl0aWVzLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy51dGlscyc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdE11dGF0b3JzPEVudGl0eT4oe1xuICBpc0FsbEVudGl0aWVzU2VsZWN0ZWQsXG59OiBTZWxlY3RFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+KTogU2VsZWN0RW50aXRpZXNNdXRhdG9yczxFbnRpdHk+IHtcbiAgZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4gID4oc3RhdGU6IFMpOiBTIHtcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGlzQWxsRW50aXRpZXNTZWxlY3RlZChzdGF0ZSk7XG4gICAgaWYgKGFsbFNlbGVjdGVkID09PSAnYWxsJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkSWRzOiB7fSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZElkczogdG9NYXAoc3RhdGUuaWRzKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RFbnRpdGllcyxcbiAgICBkZXNlbGVjdEVudGl0aWVzLFxuICAgIHRvZ2dsZVNlbGVjdEVudGl0aWVzLFxuICAgIHRvZ2dsZVNlbGVjdEFsbEVudGl0aWVzLFxuICAgIGNsZWFyRW50aXRpZXNTZWxlY3Rpb24sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { insertIf } from '@ngrx-traits/core';
2
+ import { createReducer, on } from '@ngrx/store';
3
+ export function createSelectEntitiesInitialState(previousInitialState) {
4
+ return {
5
+ ...previousInitialState,
6
+ selectedIds: {},
7
+ };
8
+ }
9
+ export function createSelectEntitiesTraitReducer(initialState, allActions, allMutators, allConfigs) {
10
+ const { adapter } = allConfigs.loadEntities;
11
+ const sortRemote = allConfigs.sort?.remote;
12
+ const paginationCacheType = allConfigs.pagination?.cacheType;
13
+ function updateSelectedIdsChanged(state, updates) {
14
+ const changedIds = updates.reduce((acc, updated) => {
15
+ const id = adapter.selectId(updated.changes);
16
+ if (id && id !== updated.id && state.selectedIds[updated.id] != null) {
17
+ acc.push(updated);
18
+ return acc;
19
+ }
20
+ return acc;
21
+ }, []);
22
+ if (changedIds.length) {
23
+ const selectedIds = { ...state.selectedIds };
24
+ changedIds.forEach((updated) => {
25
+ const id = adapter.selectId(updated.changes);
26
+ const value = selectedIds[updated.id];
27
+ delete selectedIds[updated.id];
28
+ selectedIds[id] = value;
29
+ });
30
+ return { ...state, selectedIds };
31
+ }
32
+ return state;
33
+ }
34
+ 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 }) => {
35
+ const selectedIds = { ...state.selectedIds };
36
+ keys.forEach((v) => {
37
+ delete selectedIds[v];
38
+ });
39
+ return { ...state, selectedIds };
40
+ })), ...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))));
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdGllcy9zZWxlY3QtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBT2hELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsb0JBQXlCO0lBRXpCLE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FJOUMsWUFBZSxFQUNmLFVBSzJCLEVBQzNCLFdBQTJDLEVBQzNDLFVBRWlDO0lBRWpDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBYSxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFN0QsU0FBUyx3QkFBd0IsQ0FFL0IsS0FBUSxFQUFFLE9BQXlCO1FBQ25DLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJ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Q0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3pDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUMsQ0FDRixFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQzFDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FBSSxVQUFVLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUM3QyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3RDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUMsQ0FDRixFQUNELEdBQUcsUUFBUSxDQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxDQUN2RCxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDM0MsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUMxQyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQ1QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQ3pFLEdBQUcsRUFBRSxDQUNILEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUMvQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQzFDLENBQ0osQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFNvcnRFbnRpdGllc0FjdGlvbnMsXG4gIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9zb3J0LWVudGl0aWVzL3NvcnQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgU2VsZWN0RW50aXRpZXNNdXRhdG9ycyxcbiAgU2VsZWN0RW50aXRpZXNBY3Rpb25zLFxuICBTZWxlY3RFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IFVwZGF0ZSB9IGZyb20gJ0BuZ3J4L2VudGl0eS9zcmMvbW9kZWxzJztcbmltcG9ydCB7IGluc2VydElmIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlckVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4uL2ZpbHRlci1lbnRpdGllcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdGllc0luaXRpYWxTdGF0ZTxFbnRpdHk+KFxuICBwcmV2aW91c0luaXRpYWxTdGF0ZTogYW55XG4pOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgc2VsZWN0ZWRJZHM6IHt9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFJlZHVjZXI8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4+KFxuICBpbml0aWFsU3RhdGU6IFMsXG4gIGFsbEFjdGlvbnM6IFNlbGVjdEVudGl0aWVzQWN0aW9ucyAmXG4gICAgQ3J1ZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBTb3J0RW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgRmlsdGVyRW50aXRpZXNBY3Rpb25zPGFueT4gJlxuICAgIEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMsXG4gIGFsbE11dGF0b3JzOiBTZWxlY3RFbnRpdGllc011dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnICZcbiAgICBTb3J0RW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4pIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSBhbGxDb25maWdzLmxvYWRFbnRpdGllcyE7XG4gIGNvbnN0IHNvcnRSZW1vdGUgPSBhbGxDb25maWdzLnNvcnQ/LnJlbW90ZTtcbiAgY29uc3QgcGFnaW5hdGlvbkNhY2hlVHlwZSA9IGFsbENvbmZpZ3MucGFnaW5hdGlvbj8uY2FjaGVUeXBlO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGVkSWRzQ2hhbmdlZDxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0aWVzU3RhdGVcbiAgPihzdGF0ZTogUywgdXBkYXRlczogVXBkYXRlPEVudGl0eT5bXSkge1xuICAgIGNvbnN0IGNoYW5nZWRJZHMgPSB1cGRhdGVzLnJlZHVjZSgoYWNjLCB1cGRhdGVkKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGFkYXB0ZXIuc2VsZWN0SWQodXBkYXRlZC5jaGFuZ2VzIGFzIEVudGl0eSk7XG4gICAgICBpZiAoaWQgJiYgaWQgIT09IHVwZGF0ZWQuaWQgJiYgc3RhdGUuc2VsZWN0ZWRJZHNbdXBkYXRlZC5pZF0gIT0gbnVsbCkge1xuICAgICAgICBhY2MucHVzaCh1cGRhdGVkKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgVXBkYXRlPEVudGl0eT5bXSk7XG4gICAgaWYgKGNoYW5nZWRJZHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHsgLi4uc3RhdGUuc2VsZWN0ZWRJZHMgfTtcbiAgICAgIGNoYW5nZWRJZHMuZm9yRWFjaCgodXBkYXRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGFkYXB0ZXIuc2VsZWN0SWQodXBkYXRlZC5jaGFuZ2VzIGFzIEVudGl0eSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0ZWRJZHNbdXBkYXRlZC5pZF07XG4gICAgICAgIGRlbGV0ZSBzZWxlY3RlZElkc1t1cGRhdGVkLmlkXTtcbiAgICAgICAgc2VsZWN0ZWRJZHNbaWRdID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZElkcyB9O1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLnNlbGVjdEVudGl0aWVzLCAoc3RhdGUsIHsgaWQgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnNlbGVjdEVudGl0aWVzKGlkLCBzdGF0ZSlcbiAgICApLFxuICAgIG9uKGFsbEFjdGlvbnMuZGVzZWxlY3RFbnRpdGllcywgKHN0YXRlLCB7IGlkIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0aWVzKGlkLCBzdGF0ZSlcbiAgICApLFxuICAgIG9uKGFsbEFjdGlvbnMudG9nZ2xlU2VsZWN0RW50aXRpZXMsIChzdGF0ZSwgeyBpZCB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMudG9nZ2xlU2VsZWN0RW50aXRpZXMoaWQsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy50b2dnbGVTZWxlY3RBbGxFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgYWxsTXV0YXRvcnMudG9nZ2xlU2VsZWN0QWxsRW50aXRpZXMoc3RhdGUpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVFbnRpdGllcywgKHN0YXRlLCB7IGtleXMgfSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHsgLi4uc3RhdGUuc2VsZWN0ZWRJZHMgfTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCh2OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICBkZWxldGUgc2VsZWN0ZWRJZHNbdl07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc2VsZWN0ZWRJZHMgfTtcbiAgICAgIH0pXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnVwZGF0ZUVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy51cGRhdGVFbnRpdGllcywgKHN0YXRlLCB7IHVwZGF0ZXMgfSkgPT5cbiAgICAgICAgdXBkYXRlU2VsZWN0ZWRJZHNDaGFuZ2VkKHN0YXRlLCB1cGRhdGVzKVxuICAgICAgKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy5jbGVhckVudGl0aWVzU2VsZWN0aW9uLCAoc3RhdGUpID0+XG4gICAgICBhbGxNdXRhdG9ycy5jbGVhckVudGl0aWVzU2VsZWN0aW9uKHN0YXRlKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy5yZW1vdmVBbGxFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMucmVtb3ZlQWxsRW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KHNvcnRSZW1vdGUsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLnNvcnRFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5jbGVhckVudGl0aWVzU2VsZWN0aW9uKHN0YXRlKVxuICAgICAgKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy5maWx0ZXJFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMuZmlsdGVyRW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KCFhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgIGFsbE11dGF0b3JzLmNsZWFyRW50aXRpZXNTZWxlY3Rpb24oc3RhdGUpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihcbiAgICAgICEhYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcyAmJiBwYWdpbmF0aW9uQ2FjaGVUeXBlID09PSAncGFydGlhbCcsXG4gICAgICAoKSA9PlxuICAgICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc1NlbGVjdGlvbihzdGF0ZSlcbiAgICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { createSelector } from '@ngrx/store';
2
+ import { selectTotalSelectedEntities } from './select-entities.utils';
3
+ export function createSelectEntitiesTraitSelectors(previousSelectors) {
4
+ const { selectEntitiesMap, selectEntitiesTotal } = previousSelectors;
5
+ function selectEntitiesIdsSelectedMap(state) {
6
+ return state.selectedIds;
7
+ }
8
+ const selectEntitiesIdsSelectedList = createSelector(selectEntitiesIdsSelectedMap, (ids) => Object.keys(ids));
9
+ const selectEntitiesSelectedMap = createSelector(selectEntitiesIdsSelectedList, selectEntitiesMap, (selectedIds, entities) => selectedIds.reduce((acum, id) => {
10
+ acum[id] = entities[id];
11
+ return acum;
12
+ }, {}));
13
+ const selectEntitiesSelectedList = createSelector(selectEntitiesIdsSelectedList, selectEntitiesMap, (selectedIds, entities) => selectedIds.map((id) => entities[id]));
14
+ const isAllEntitiesSelected = createSelector((state) => selectEntitiesTotal(state), selectTotalSelectedEntities, (total, totalSelected) => totalSelected > 0 && totalSelected === total
15
+ ? 'all'
16
+ : totalSelected === 0
17
+ ? 'none'
18
+ : 'some');
19
+ return {
20
+ selectEntitiesIdsSelectedMap,
21
+ selectEntitiesIdsSelectedList,
22
+ selectEntitiesSelectedMap,
23
+ selectEntitiesSelectedList,
24
+ selectTotalSelectedEntities,
25
+ isAllEntitiesSelected,
26
+ };
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0aWVzL3NlbGVjdC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVF0RSxNQUFNLFVBQVUsa0NBQWtDLENBQ2hELGlCQUFnRDtJQUVoRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUVyRSxTQUFTLDRCQUE0QixDQUNuQyxLQUFzRDtRQUV0RCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sNkJBQTZCLEdBQUcsY0FBYyxDQUNsRCw0QkFBNEIsRUFDNUIsQ0FBQyxHQUF3QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUMvQyxDQUFDO0lBQ0YsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQzlDLDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQTBDLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDVCxDQUFDO0lBQ0YsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQy9DLDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFFLENBQUMsQ0FDbEUsQ0FBQztJQUVGLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUMxQyxDQUFDLEtBQXNELEVBQUUsRUFBRSxDQUN6RCxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFDNUIsMkJBQTJCLEVBQzNCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQ3ZCLGFBQWEsR0FBRyxDQUFDLElBQUksYUFBYSxLQUFLLEtBQUs7UUFDMUMsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsYUFBYSxLQUFLLENBQUM7WUFDckIsQ0FBQyxDQUFDLE1BQU07WUFDUixDQUFDLENBQUMsTUFBTSxDQUNiLENBQUM7SUFFRixPQUFPO1FBQ0wsNEJBQTRCO1FBQzVCLDZCQUE2QjtRQUM3Qix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLDJCQUEyQjtRQUMzQixxQkFBcUI7S0FDdEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IHNlbGVjdFRvdGFsU2VsZWN0ZWRFbnRpdGllcyB9IGZyb20gJy4vc2VsZWN0LWVudGl0aWVzLnV0aWxzJztcbmltcG9ydCB7XG4gIFNlbGVjdEVudGl0aWVzU2VsZWN0b3JzLFxuICBTZWxlY3RFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTZWxlY3RvcnMsIExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnQG5ncngvZW50aXR5L3NyYy9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXRpZXNUcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICBwcmV2aW91c1NlbGVjdG9yczogTG9hZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT5cbik6IFNlbGVjdEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4ge1xuICBjb25zdCB7IHNlbGVjdEVudGl0aWVzTWFwLCBzZWxlY3RFbnRpdGllc1RvdGFsIH0gPSBwcmV2aW91c1NlbGVjdG9ycztcblxuICBmdW5jdGlvbiBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTWFwKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXRpZXNTdGF0ZVxuICApIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRJZHM7XG4gIH1cbiAgY29uc3Qgc2VsZWN0RW50aXRpZXNJZHNTZWxlY3RlZExpc3QgPSBjcmVhdGVTZWxlY3RvcihcbiAgICBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTWFwLFxuICAgIChpZHM6IERpY3Rpb25hcnk8Ym9vbGVhbj4pID0+IE9iamVjdC5rZXlzKGlkcylcbiAgKTtcbiAgY29uc3Qgc2VsZWN0RW50aXRpZXNTZWxlY3RlZE1hcCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRMaXN0LFxuICAgIHNlbGVjdEVudGl0aWVzTWFwLFxuICAgIChzZWxlY3RlZElkcywgZW50aXRpZXMpID0+XG4gICAgICBzZWxlY3RlZElkcy5yZWR1Y2UoKGFjdW06IHsgW2lkOiBzdHJpbmddOiBFbnRpdHkgfCB1bmRlZmluZWQgfSwgaWQpID0+IHtcbiAgICAgICAgYWN1bVtpZF0gPSBlbnRpdGllc1tpZF07XG4gICAgICAgIHJldHVybiBhY3VtO1xuICAgICAgfSwge30pXG4gICk7XG4gIGNvbnN0IHNlbGVjdEVudGl0aWVzU2VsZWN0ZWRMaXN0ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0RW50aXRpZXNJZHNTZWxlY3RlZExpc3QsXG4gICAgc2VsZWN0RW50aXRpZXNNYXAsXG4gICAgKHNlbGVjdGVkSWRzLCBlbnRpdGllcykgPT4gc2VsZWN0ZWRJZHMubWFwKChpZCkgPT4gZW50aXRpZXNbaWRdISlcbiAgKTtcblxuICBjb25zdCBpc0FsbEVudGl0aWVzU2VsZWN0ZWQgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlKSA9PlxuICAgICAgc2VsZWN0RW50aXRpZXNUb3RhbChzdGF0ZSksXG4gICAgc2VsZWN0VG90YWxTZWxlY3RlZEVudGl0aWVzLFxuICAgICh0b3RhbCwgdG90YWxTZWxlY3RlZCkgPT5cbiAgICAgIHRvdGFsU2VsZWN0ZWQgPiAwICYmIHRvdGFsU2VsZWN0ZWQgPT09IHRvdGFsXG4gICAgICAgID8gJ2FsbCdcbiAgICAgICAgOiB0b3RhbFNlbGVjdGVkID09PSAwXG4gICAgICAgID8gJ25vbmUnXG4gICAgICAgIDogJ3NvbWUnXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RFbnRpdGllc0lkc1NlbGVjdGVkTWFwLFxuICAgIHNlbGVjdEVudGl0aWVzSWRzU2VsZWN0ZWRMaXN0LFxuICAgIHNlbGVjdEVudGl0aWVzU2VsZWN0ZWRNYXAsXG4gICAgc2VsZWN0RW50aXRpZXNTZWxlY3RlZExpc3QsXG4gICAgc2VsZWN0VG90YWxTZWxlY3RlZEVudGl0aWVzLFxuICAgIGlzQWxsRW50aXRpZXNTZWxlY3RlZCxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ export function deselectEntities(id, state) {
2
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3
+ const { [id]: _value, ...selectedIds } = state.selectedIds;
4
+ return {
5
+ ...state,
6
+ selectedIds: selectedIds,
7
+ };
8
+ }
9
+ export function selectEntities(id, state) {
10
+ return {
11
+ ...state,
12
+ selectedIds: { ...state.selectedIds, [id]: true },
13
+ };
14
+ }
15
+ export function toggleSelectEntities(id, state) {
16
+ const selected = state.selectedIds[id];
17
+ if (selected) {
18
+ return deselectEntities(id, state);
19
+ }
20
+ else {
21
+ return selectEntities(id, state);
22
+ }
23
+ }
24
+ export function clearEntitiesSelection(state) {
25
+ return { ...state, selectedIds: {} };
26
+ }
27
+ export function selectTotalSelectedEntities(state) {
28
+ return Object.keys(state.selectedIds).length;
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0aWVzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXRpZXMvc2VsZWN0LWVudGl0aWVzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsRUFBbUIsRUFDbkIsS0FBUTtJQUVSLDZEQUE2RDtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzNELE9BQU87UUFDTCxHQUFHLEtBQUs7UUFDUixXQUFXLEVBQUUsV0FBVztLQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzVCLEVBQW1CLEVBQ25CLEtBQVE7SUFFUixPQUFPO1FBQ0wsR0FBRyxLQUFLO1FBQ1IsV0FBVyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQ2xELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxFQUFtQixFQUNuQixLQUFRO0lBRVIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLFFBQVEsRUFBRTtRQUNaLE9BQU8sZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3BDO1NBQU07UUFDTCxPQUFPLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDbEM7QUFDSCxDQUFDO0FBQ0QsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUFRO0lBRVIsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUd6QyxLQUFRO0lBQ1IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEVudGl0aWVzU3RhdGUgfSBmcm9tICcuL3NlbGVjdC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzZWxlY3RFbnRpdGllczxTIGV4dGVuZHMgU2VsZWN0RW50aXRpZXNTdGF0ZT4oXG4gIGlkOiBudW1iZXIgfCBzdHJpbmcsXG4gIHN0YXRlOiBTXG4pOiBTIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb25zdCB7IFtpZF06IF92YWx1ZSwgLi4uc2VsZWN0ZWRJZHMgfSA9IHN0YXRlLnNlbGVjdGVkSWRzO1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNlbGVjdGVkSWRzOiBzZWxlY3RlZElkcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEVudGl0aWVzPFMgZXh0ZW5kcyBTZWxlY3RFbnRpdGllc1N0YXRlPihcbiAgaWQ6IG51bWJlciB8IHN0cmluZyxcbiAgc3RhdGU6IFNcbik6IFMge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNlbGVjdGVkSWRzOiB7IC4uLnN0YXRlLnNlbGVjdGVkSWRzLCBbaWRdOiB0cnVlIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVTZWxlY3RFbnRpdGllczxTIGV4dGVuZHMgU2VsZWN0RW50aXRpZXNTdGF0ZT4oXG4gIGlkOiBudW1iZXIgfCBzdHJpbmcsXG4gIHN0YXRlOiBTXG4pOiBTIHtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBzdGF0ZS5zZWxlY3RlZElkc1tpZF07XG4gIGlmIChzZWxlY3RlZCkge1xuICAgIHJldHVybiBkZXNlbGVjdEVudGl0aWVzKGlkLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNlbGVjdEVudGl0aWVzKGlkLCBzdGF0ZSk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckVudGl0aWVzU2VsZWN0aW9uPFMgZXh0ZW5kcyBTZWxlY3RFbnRpdGllc1N0YXRlPihcbiAgc3RhdGU6IFNcbik6IFMge1xuICByZXR1cm4geyAuLi5zdGF0ZSwgc2VsZWN0ZWRJZHM6IHt9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RUb3RhbFNlbGVjdGVkRW50aXRpZXM8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdGllc1N0YXRlXG4+KHN0YXRlOiBTKTogbnVtYmVyIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHN0YXRlLnNlbGVjdGVkSWRzKS5sZW5ndGg7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './select-entity.trait';
2
+ export * from './select-entity.model';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtZW50aXR5LnRyYWl0JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export const selectEntityTraitKey = 'singleSelection';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1EQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbkNyZWF0b3IsIFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5pbXBvcnQgeyBLZXllZENvbmZpZyB9IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RFbnRpdHlTdGF0ZSB7XG4gIHNlbGVjdGVkSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0eUFjdGlvbnMgPSB7XG4gIHNlbGVjdEVudGl0eTogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByb3BzOiB7XG4gICAgICBpZDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIH0pID0+IHsgaWQ6IG51bWJlciB8IHN0cmluZyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBkZXNlbGVjdEVudGl0eTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICB0b2dnbGVTZWxlY3RFbnRpdHk6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczoge1xuICAgICAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgICB9KSA9PiB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0eVNlbGVjdG9yczxUPiA9IHtcbiAgc2VsZWN0RW50aXR5SWRTZWxlY3RlZDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIFNlbGVjdEVudGl0eVN0YXRlXG4gICkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RFbnRpdHlTZWxlY3RlZDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIFNlbGVjdEVudGl0eVN0YXRlXG4gICkgPT4gVCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0eU11dGF0b3JzPFQ+ID0ge1xuICBzZWxlY3RFbnRpdHk8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgU2VsZWN0RW50aXR5U3RhdGU+KFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgc3RhdGU6IFNcbiAgKTogUztcbiAgZGVzZWxlY3RFbnRpdHk8UyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgU2VsZWN0RW50aXR5U3RhdGU+KFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG4gIHRvZ2dsZVNlbGVjdEVudGl0eTxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTZWxlY3RFbnRpdHlTdGF0ZT4oXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBzdGF0ZTogU1xuICApOiBTO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RFbnRpdHlDb25maWcge1xuICBzZWxlY3RlZElkPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0RW50aXR5VHJhaXRLZXkgPSAnc2luZ2xlU2VsZWN0aW9uJztcbmV4cG9ydCB0eXBlIFNlbGVjdEVudGl0eUtleWVkQ29uZmlnID0gS2V5ZWRDb25maWc8XG4gIHR5cGVvZiBzZWxlY3RFbnRpdHlUcmFpdEtleSxcbiAgU2VsZWN0RW50aXR5Q29uZmlnXG4+O1xuIl19
@@ -0,0 +1,9 @@
1
+ import { createAction, props } from '@ngrx/store';
2
+ export function createSelectEntityTraitActions(actionsGroupKey, entityName) {
3
+ return {
4
+ selectEntity: createAction(`${actionsGroupKey} Select ${entityName}`, props()),
5
+ deselectEntity: createAction(`${actionsGroupKey} Deselect ${entityName}`),
6
+ toggleSelectEntity: createAction(`${actionsGroupKey} Toggle Select ${entityName}`, props()),
7
+ };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXR5L3NlbGVjdC1lbnRpdHkudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLGVBQXVCLEVBQ3ZCLFVBQWtCO0lBRWxCLE9BQU87UUFDTCxZQUFZLEVBQUUsWUFBWSxDQUN4QixHQUFHLGVBQWUsV0FBVyxVQUFVLEVBQUUsRUFDekMsS0FBSyxFQUEyQixDQUNqQztRQUNELGNBQWMsRUFBRSxZQUFZLENBQUMsR0FBRyxlQUFlLGFBQWEsVUFBVSxFQUFFLENBQUM7UUFDekUsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixHQUFHLGVBQWUsa0JBQWtCLFVBQVUsRUFBRSxFQUNoRCxLQUFLLEVBQTJCLENBQ2pDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU2VsZWN0RW50aXR5QWN0aW9ucyB9IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdEFjdGlvbnMoXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdHlOYW1lOiBzdHJpbmdcbik6IFNlbGVjdEVudGl0eUFjdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0eTogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBTZWxlY3QgJHtlbnRpdHlOYW1lfWAsXG4gICAgICBwcm9wczx7IGlkOiBzdHJpbmcgfCBudW1iZXIgfT4oKVxuICAgICksXG4gICAgZGVzZWxlY3RFbnRpdHk6IGNyZWF0ZUFjdGlvbihgJHthY3Rpb25zR3JvdXBLZXl9IERlc2VsZWN0ICR7ZW50aXR5TmFtZX1gKSxcbiAgICB0b2dnbGVTZWxlY3RFbnRpdHk6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVG9nZ2xlIFNlbGVjdCAke2VudGl0eU5hbWV9YCxcbiAgICAgIHByb3BzPHsgaWQ6IHN0cmluZyB8IG51bWJlciB9PigpXG4gICAgKSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { createTraitFactory, } from '@ngrx-traits/core';
2
+ import { createSelectEntityTraitActions } from './select-entity.trait.actions';
3
+ import { createSelectEntityTraitSelectors } from './select-entity.trait.selectors';
4
+ import { createSelectEntityInitialState, createSelectEntityTraitReducer, } from './select-entity.trait.reducer';
5
+ import { createSelectEntityTraitMutators } from './select-entity.trait.mutators';
6
+ import { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';
7
+ /**
8
+ * Generates ngrx code to add single selection to a list
9
+ * @param config
10
+ * @param config.selectedId - Default selected id
11
+ *
12
+ * @example
13
+ * // The following trait config
14
+ *
15
+ * export interface TestState
16
+ * extends EntityAndStatusState<Todo>,SelectEntityState{}
17
+ *
18
+ * const traits = createEntityFeatureFactory(
19
+ * addLoadEntitiesTrait<Todo>(),
20
+ * addSelectEntityTrait<Todo>()
21
+ * )({
22
+ * actionsGroupKey: '[Todos]',
23
+ * featureSelector: createFeatureSelector<TestState>>(
24
+ * 'todos',
25
+ * ),
26
+ * });
27
+ *
28
+ * // adds following props to the state:
29
+ * // selectedId?: number | string;
30
+ *
31
+ * // generated actions
32
+ * traits.actions.selectTodo({id})
33
+ * traits.actions.deselectTodo()
34
+ * traits.actions.toggleSelectTodo({id})
35
+ * //generated selectors
36
+ * traits.selectors.selectTodoIdSelected()
37
+ * traits.selectors.selectTodoSelected()
38
+ */
39
+ export function addSelectEntityTrait(config) {
40
+ return createTraitFactory({
41
+ key: 'singleSelection',
42
+ depends: [loadEntitiesTraitKey],
43
+ config,
44
+ actions: ({ actionsGroupKey, entityName }) => createSelectEntityTraitActions(actionsGroupKey, entityName),
45
+ selectors: () => createSelectEntityTraitSelectors(),
46
+ mutators: () => createSelectEntityTraitMutators(),
47
+ initialState: ({ previousInitialState, allConfigs, }) => createSelectEntityInitialState(previousInitialState, allConfigs),
48
+ reducer: ({ initialState, allActions, allMutators, allConfigs }) => createSelectEntityTraitReducer(initialState, allActions, allMutators, allConfigs),
49
+ });
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsR0FHbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRixPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLDhCQUE4QixHQUMvQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pGLE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQztBQWlCOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQVMsTUFBMkI7SUFDdEUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsaUJBQWlCO1FBQ3RCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQy9CLE1BQU07UUFDTixPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQTZCLEVBQUUsRUFBRSxDQUN0RSw4QkFBOEIsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBQzdELFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBVTtRQUMzRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsK0JBQStCLEVBQUU7UUFDakQsWUFBWSxFQUFFLENBQUMsRUFDYixvQkFBb0IsRUFDcEIsVUFBVSxHQUNxQixFQUFFLEVBQUUsQ0FDbkMsOEJBQThCLENBQzVCLG9CQUFvQixFQUNwQixVQUFxQyxDQUN0QztRQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUNqRSw4QkFBOEIsQ0FDNUIsWUFBWSxFQUNaLFVBSzZCLEVBQzdCLFdBQVcsRUFDWCxVQUdpQyxDQUNsQztLQUNKLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVUcmFpdEZhY3RvcnksXG4gIFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcsXG4gIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZyxcbn0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuXG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdEFjdGlvbnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdHkudHJhaXQuYWN0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFNlbGVjdG9ycyB9IGZyb20gJy4vc2VsZWN0LWVudGl0eS50cmFpdC5zZWxlY3RvcnMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VsZWN0RW50aXR5SW5pdGlhbFN0YXRlLFxuICBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFJlZHVjZXIsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0eS50cmFpdC5yZWR1Y2VyJztcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdEVudGl0eVRyYWl0TXV0YXRvcnMgfSBmcm9tICcuL3NlbGVjdC1lbnRpdHkudHJhaXQubXV0YXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzQWN0aW9ucyxcbiAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIGxvYWRFbnRpdGllc1RyYWl0S2V5LFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgU29ydEVudGl0aWVzQWN0aW9ucyxcbiAgU29ydEVudGl0aWVzS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL3NvcnQtZW50aXRpZXMvc29ydC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBTZWxlY3RFbnRpdHlBY3Rpb25zLFxuICBTZWxlY3RFbnRpdHlDb25maWcsXG4gIFNlbGVjdEVudGl0eUtleWVkQ29uZmlnLFxufSBmcm9tICcuL3NlbGVjdC1lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgQ3J1ZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4uL2NydWQtZW50aXRpZXMvY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBFbnRpdGllc1BhZ2luYXRpb25BY3Rpb25zLFxuICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlckVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4uL2ZpbHRlci1lbnRpdGllcyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSB0byBhZGQgc2luZ2xlIHNlbGVjdGlvbiB0byBhIGxpc3RcbiAqIEBwYXJhbSBjb25maWdcbiAqIEBwYXJhbSBjb25maWcuc2VsZWN0ZWRJZCAtIERlZmF1bHQgc2VsZWN0ZWQgaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIGZvbGxvd2luZyB0cmFpdCBjb25maWdcbiAqXG4gKiBleHBvcnQgaW50ZXJmYWNlIFRlc3RTdGF0ZVxuICogZXh0ZW5kcyBFbnRpdHlBbmRTdGF0dXNTdGF0ZTxUb2RvPixTZWxlY3RFbnRpdHlTdGF0ZXt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIGFkZExvYWRFbnRpdGllc1RyYWl0PFRvZG8+KCksXG4gKiAgICAgIGFkZFNlbGVjdEVudGl0eVRyYWl0PFRvZG8+KClcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICpcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgIHNlbGVjdGVkSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gKlxuICogLy8gZ2VuZXJhdGVkIGFjdGlvbnNcbiAqIHRyYWl0cy5hY3Rpb25zLnNlbGVjdFRvZG8oe2lkfSlcbiAqIHRyYWl0cy5hY3Rpb25zLmRlc2VsZWN0VG9kbygpXG4gKiB0cmFpdHMuYWN0aW9ucy50b2dnbGVTZWxlY3RUb2RvKHtpZH0pXG4gKiAvL2dlbmVyYXRlZCBzZWxlY3RvcnNcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb0lkU2VsZWN0ZWQoKVxuICogdHJhaXRzLnNlbGVjdG9ycy5zZWxlY3RUb2RvU2VsZWN0ZWQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VsZWN0RW50aXR5VHJhaXQ8RW50aXR5Pihjb25maWc/OiBTZWxlY3RFbnRpdHlDb25maWcpIHtcbiAgcmV0dXJuIGNyZWF0ZVRyYWl0RmFjdG9yeSh7XG4gICAga2V5OiAnc2luZ2xlU2VsZWN0aW9uJyxcbiAgICBkZXBlbmRzOiBbbG9hZEVudGl0aWVzVHJhaXRLZXldLFxuICAgIGNvbmZpZyxcbiAgICBhY3Rpb25zOiAoeyBhY3Rpb25zR3JvdXBLZXksIGVudGl0eU5hbWUgfTogVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0eVRyYWl0QWN0aW9ucyhhY3Rpb25zR3JvdXBLZXksIGVudGl0eU5hbWUpLFxuICAgIHNlbGVjdG9yczogKCkgPT4gY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRTZWxlY3RvcnM8RW50aXR5PigpLFxuICAgIG11dGF0b3JzOiAoKSA9PiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdE11dGF0b3JzKCksXG4gICAgaW5pdGlhbFN0YXRlOiAoe1xuICAgICAgcHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgICBhbGxDb25maWdzLFxuICAgIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZVNlbGVjdEVudGl0eUluaXRpYWxTdGF0ZTxFbnRpdHk+KFxuICAgICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICAgICAgYWxsQ29uZmlncyBhcyBTZWxlY3RFbnRpdHlLZXllZENvbmZpZ1xuICAgICAgKSxcbiAgICByZWR1Y2VyOiAoeyBpbml0aWFsU3RhdGUsIGFsbEFjdGlvbnMsIGFsbE11dGF0b3JzLCBhbGxDb25maWdzIH0pID0+XG4gICAgICBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFJlZHVjZXIoXG4gICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgYWxsQWN0aW9ucyBhcyBTZWxlY3RFbnRpdHlBY3Rpb25zICZcbiAgICAgICAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgICAgICAgIFNvcnRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyAmXG4gICAgICAgICAgRmlsdGVyRW50aXRpZXNBY3Rpb25zPGFueT4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgICAgICAgYWxsTXV0YXRvcnMsXG4gICAgICAgIGFsbENvbmZpZ3MgYXMgU2VsZWN0RW50aXR5S2V5ZWRDb25maWcgJlxuICAgICAgICAgIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgICAgICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnICZcbiAgICAgICAgICBTb3J0RW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4gICAgICApLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ export function createSelectEntityTraitMutators() {
2
+ function selectEntity(id, state) {
3
+ return {
4
+ ...state,
5
+ selectedId: id,
6
+ };
7
+ }
8
+ function deselectEntity(state) {
9
+ return {
10
+ ...state,
11
+ selectedId: undefined,
12
+ };
13
+ }
14
+ function toggleSelectEntity(id, state) {
15
+ return {
16
+ ...state,
17
+ selectedId: state.selectedId === id ? undefined : id,
18
+ };
19
+ }
20
+ return {
21
+ selectEntity,
22
+ deselectEntity,
23
+ toggleSelectEntity,
24
+ };
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2VsZWN0LWVudGl0eS9zZWxlY3QtZW50aXR5LnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSwrQkFBK0I7SUFHN0MsU0FBUyxZQUFZLENBRW5CLEVBQW1CLEVBQUUsS0FBUTtRQUM3QixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUNELFNBQVMsY0FBYyxDQUVyQixLQUFRO1FBQ1IsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLFVBQVUsRUFBRSxTQUFTO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBQ0QsU0FBUyxrQkFBa0IsQ0FFekIsRUFBbUIsRUFBRSxLQUFRO1FBQzdCLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxZQUFZO1FBQ1osY0FBYztRQUNkLGtCQUFrQjtLQUNuQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEVudGl0eU11dGF0b3JzLCBTZWxlY3RFbnRpdHlTdGF0ZSB9IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRNdXRhdG9yczxcbiAgRW50aXR5XG4+KCk6IFNlbGVjdEVudGl0eU11dGF0b3JzPEVudGl0eT4ge1xuICBmdW5jdGlvbiBzZWxlY3RFbnRpdHk8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuICA+KGlkOiBzdHJpbmcgfCBudW1iZXIsIHN0YXRlOiBTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0ZWRJZDogaWQsXG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBkZXNlbGVjdEVudGl0eTxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIFNlbGVjdEVudGl0eVN0YXRlXG4gID4oc3RhdGU6IFMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3RlZElkOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RFbnRpdHk8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuICA+KGlkOiBzdHJpbmcgfCBudW1iZXIsIHN0YXRlOiBTKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0ZWRJZDogc3RhdGUuc2VsZWN0ZWRJZCA9PT0gaWQgPyB1bmRlZmluZWQgOiBpZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RFbnRpdHksXG4gICAgZGVzZWxlY3RFbnRpdHksXG4gICAgdG9nZ2xlU2VsZWN0RW50aXR5LFxuICB9O1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { createReducer, on } from '@ngrx/store';
2
+ import { insertIf } from '@ngrx-traits/core';
3
+ export function createSelectEntityInitialState(previousInitialState, allConfigs) {
4
+ const selectedId = allConfigs.singleSelection?.selectedId;
5
+ return {
6
+ ...previousInitialState,
7
+ selectedId,
8
+ };
9
+ }
10
+ export function createSelectEntityTraitReducer(initialState, allActions, allMutators, allConfigs) {
11
+ const { adapter } = allConfigs.loadEntities;
12
+ const sortRemote = allConfigs.sort?.remote;
13
+ const paginationCacheType = allConfigs.pagination?.cacheType;
14
+ 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 }) => {
15
+ const shouldDeselect = keys.some((v) => v === state.selectedId);
16
+ return shouldDeselect
17
+ ? {
18
+ ...state,
19
+ selectedId: undefined,
20
+ }
21
+ : state;
22
+ })), ...insertIf(allActions.updateEntities, () => on(allActions.updateEntities, (state, { updates }) => {
23
+ const change = updates.find((updated) => {
24
+ const id = adapter.selectId(updated.changes);
25
+ return id && id !== updated.id && state.selectedId === updated.id;
26
+ });
27
+ return change
28
+ ? {
29
+ ...state,
30
+ selectedId: adapter.selectId(change.changes),
31
+ }
32
+ : state;
33
+ })));
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9zZWxlY3QtZW50aXR5L3NlbGVjdC1lbnRpdHkudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlCaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTdDLE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsb0JBQXlCLEVBQ3pCLFVBQW1DO0lBRW5DLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQzFELE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixVQUFVO0tBQ1gsQ0FBQztBQUNKLENBQUM7QUFDRCxNQUFNLFVBQVUsOEJBQThCLENBSTVDLFlBQWUsRUFDZixVQUs2QixFQUM3QixXQUF5QyxFQUN6QyxVQUdpQztJQUVqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDLFlBQWEsQ0FBQztJQUU3QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUMzQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO0lBRTdELE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQzVDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUNwQyxFQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMs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QUFLLENBQUM7SUFDWixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNBY3Rpb25zLFxuICBMb2FkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgTG9hZEVudGl0aWVzU3RhdGUsXG59IGZyb20gJy4uL2xvYWQtZW50aXRpZXMvbG9hZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBTb3J0RW50aXRpZXNBY3Rpb25zLFxuICBTb3J0RW50aXRpZXNLZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIFNlbGVjdEVudGl0eUFjdGlvbnMsXG4gIFNlbGVjdEVudGl0eUtleWVkQ29uZmlnLFxuICBTZWxlY3RFbnRpdHlNdXRhdG9ycyxcbiAgU2VsZWN0RW50aXR5U3RhdGUsXG59IGZyb20gJy4vc2VsZWN0LWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDcnVkRW50aXRpZXNBY3Rpb25zIH0gZnJvbSAnLi4vY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGluc2VydElmIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJFbnRpdGllc0FjdGlvbnMgfSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0RW50aXR5VHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9zZWxlY3QtZW50aXR5LnRyYWl0LmFjdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0RW50aXR5SW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gIHByZXZpb3VzSW5pdGlhbFN0YXRlOiBhbnksXG4gIGFsbENvbmZpZ3M6IFNlbGVjdEVudGl0eUtleWVkQ29uZmlnXG4pOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXR5U3RhdGUge1xuICBjb25zdCBzZWxlY3RlZElkID0gYWxsQ29uZmlncy5zaW5nbGVTZWxlY3Rpb24/LnNlbGVjdGVkSWQ7XG4gIHJldHVybiB7XG4gICAgLi4ucHJldmlvdXNJbml0aWFsU3RhdGUsXG4gICAgc2VsZWN0ZWRJZCxcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFJlZHVjZXI8XG4gIEVudGl0eSxcbiAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBTZWxlY3RFbnRpdHlTdGF0ZVxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiBTZWxlY3RFbnRpdHlBY3Rpb25zICZcbiAgICBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIFNvcnRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyAmXG4gICAgRmlsdGVyRW50aXRpZXNBY3Rpb25zPGFueT4gJlxuICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PixcbiAgYWxsTXV0YXRvcnM6IFNlbGVjdEVudGl0eU11dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IFNlbGVjdEVudGl0eUtleWVkQ29uZmlnICZcbiAgICBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+ICZcbiAgICBFbnRpdGllc1BhZ2luYXRpb25LZXllZENvbmZpZyAmXG4gICAgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PlxuKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gYWxsQ29uZmlncy5sb2FkRW50aXRpZXMhO1xuXG4gIGNvbnN0IHNvcnRSZW1vdGUgPSBhbGxDb25maWdzLnNvcnQ/LnJlbW90ZTtcbiAgY29uc3QgcGFnaW5hdGlvbkNhY2hlVHlwZSA9IGFsbENvbmZpZ3MucGFnaW5hdGlvbj8uY2FjaGVUeXBlO1xuXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyKFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICBvbihhbGxBY3Rpb25zLnNlbGVjdEVudGl0eSwgKHN0YXRlLCB7IGlkIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy5zZWxlY3RFbnRpdHkoaWQsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy5kZXNlbGVjdEVudGl0eSwgKHN0YXRlKSA9PiBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSkpLFxuICAgIG9uKGFsbEFjdGlvbnMudG9nZ2xlU2VsZWN0RW50aXR5LCAoc3RhdGUsIHsgaWQgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnRvZ2dsZVNlbGVjdEVudGl0eShpZCwgc3RhdGUpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVBbGxFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KHNvcnRSZW1vdGUsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLnNvcnRFbnRpdGllcywgKHN0YXRlKSA9PiBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSkpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLmZpbHRlckVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5maWx0ZXJFbnRpdGllcywgKHN0YXRlKSA9PlxuICAgICAgICBhbGxNdXRhdG9ycy5kZXNlbGVjdEVudGl0eShzdGF0ZSlcbiAgICAgIClcbiAgICApLFxuICAgIC4uLmluc2VydElmPFM+KCFhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgIGFsbE11dGF0b3JzLmRlc2VsZWN0RW50aXR5KHN0YXRlKVxuICAgICAgKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oXG4gICAgICAhIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MgJiYgcGFnaW5hdGlvbkNhY2hlVHlwZSA9PT0gJ3BhcnRpYWwnLFxuICAgICAgKCkgPT5cbiAgICAgICAgb24oYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcywgKHN0YXRlKSA9PlxuICAgICAgICAgIGFsbE11dGF0b3JzLmRlc2VsZWN0RW50aXR5KHN0YXRlKVxuICAgICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5yZW1vdmVFbnRpdGllcywgKHN0YXRlLCB7IGtleXMgfSkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGREZXNlbGVjdCA9IGtleXMuc29tZShcbiAgICAgICAgICAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB2ID09PSBzdGF0ZS5zZWxlY3RlZElkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzaG91bGREZXNlbGVjdFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogc3RhdGU7XG4gICAgICB9KVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oYWxsQWN0aW9ucy51cGRhdGVFbnRpdGllcywgKCkgPT5cbiAgICAgIG9uKGFsbEFjdGlvbnMudXBkYXRlRW50aXRpZXMsIChzdGF0ZSwgeyB1cGRhdGVzIH0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlID0gdXBkYXRlcy5maW5kKCh1cGRhdGVkKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBhZGFwdGVyLnNlbGVjdElkKHVwZGF0ZWQuY2hhbmdlcyBhcyBFbnRpdHkpO1xuICAgICAgICAgIHJldHVybiBpZCAmJiBpZCAhPT0gdXBkYXRlZC5pZCAmJiBzdGF0ZS5zZWxlY3RlZElkID09PSB1cGRhdGVkLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNoYW5nZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZDogYWRhcHRlci5zZWxlY3RJZChjaGFuZ2UuY2hhbmdlcyBhcyBFbnRpdHkpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogc3RhdGU7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ export function createSelectEntityTraitSelectors() {
2
+ function selectEntityIdSelected(state) {
3
+ return state.selectedId;
4
+ }
5
+ function selectEntitySelected(state) {
6
+ return (state.selectedId && state.entities[state.selectedId]) || undefined;
7
+ }
8
+ return {
9
+ selectEntityIdSelected,
10
+ selectEntitySelected,
11
+ };
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NlbGVjdC1lbnRpdHkvc2VsZWN0LWVudGl0eS50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxVQUFVLGdDQUFnQztJQUc5QyxTQUFTLHNCQUFzQixDQUFDLEtBQXdCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsU0FBUyxvQkFBb0IsQ0FDM0IsS0FBb0Q7UUFFcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUVELE9BQU87UUFDTCxzQkFBc0I7UUFDdEIsb0JBQW9CO0tBQ3JCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VsZWN0RW50aXR5U2VsZWN0b3JzLFxuICBTZWxlY3RFbnRpdHlTdGF0ZSxcbn0gZnJvbSAnLi9zZWxlY3QtZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RFbnRpdHlUcmFpdFNlbGVjdG9yczxcbiAgRW50aXR5XG4+KCk6IFNlbGVjdEVudGl0eVNlbGVjdG9yczxFbnRpdHk+IHtcbiAgZnVuY3Rpb24gc2VsZWN0RW50aXR5SWRTZWxlY3RlZChzdGF0ZTogU2VsZWN0RW50aXR5U3RhdGUpIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRJZDtcbiAgfVxuICBmdW5jdGlvbiBzZWxlY3RFbnRpdHlTZWxlY3RlZDxFbnRpdHk+KFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgU2VsZWN0RW50aXR5U3RhdGVcbiAgKSB7XG4gICAgcmV0dXJuIChzdGF0ZS5zZWxlY3RlZElkICYmIHN0YXRlLmVudGl0aWVzW3N0YXRlLnNlbGVjdGVkSWRdKSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0eUlkU2VsZWN0ZWQsXG4gICAgc2VsZWN0RW50aXR5U2VsZWN0ZWQsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './set-entity.model';
2
+ export * from './set-entity.trait';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NldC1lbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZXQtZW50aXR5Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc2V0LWVudGl0eS50cmFpdCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWVudGl0eS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2V0LWVudGl0eS9zZXQtZW50aXR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3N0Zml4UHJvcHMsIFByZWZpeFByb3BzLCBUcmFpdEFjdGlvbnMgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IsIFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbnR5cGUgU2V0QWN0aW9uczxUPiA9IHtcbiAgLyoqXG4gICAqIHNldCBlbnRpdHkgaW4gdGhlIHN0b3JlXG4gICAqL1xuICBzZXQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IFQpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xufTtcbmV4cG9ydCB0eXBlIFNldEVudGl0eUFjdGlvbnM8RW50aXR5LCBKIGV4dGVuZHMgc3RyaW5nPiA9IFBvc3RmaXhQcm9wczxcbiAgU2V0QWN0aW9uczxFbnRpdHk+LFxuICBKXG4+O1xuXG5leHBvcnQgdHlwZSBTZXRFbnRpdHlTdGF0ZTxFbnRpdHksIEogZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBba2V5IGluIGAke0p9YF0/OiBFbnRpdHk7XG59O1xuXG5leHBvcnQgdHlwZSBTZXRFbnRpdHlTZWxlY3RvcnM8RW50aXR5LCBKIGV4dGVuZHMgc3RyaW5nPiA9IFBvc3RmaXhQcm9wczxcbiAge1xuICAgIHNlbGVjdDogKHN0YXRlOiBTZXRFbnRpdHlTdGF0ZTxFbnRpdHksIEo+KSA9PiBFbnRpdHk7XG4gIH0sXG4gIEpcbj47XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { capitalize, createTraitFactory, } from '@ngrx-traits/core';
2
+ import { createAction, createReducer, on } from '@ngrx/store';
3
+ /**
4
+ * Generates ngrx code needed to set and entity in the store state
5
+ * @param entityName - Entity name, should be in camel case
6
+ * @param options.actionProps - param for the main request action,
7
+ * use the props() function for its value
8
+ * @returns the trait factory
9
+ *
10
+ * @example
11
+ * const traits = createEntityFeatureFactory(
12
+ * addSetEntityTraits({
13
+ * entityName: 'client',
14
+ * actionProps: props<{ client: Client }
15
+ * }),
16
+ * )({
17
+ * actionsGroupKey: 'Client',
18
+ * featureSelector: createFeatureSelector<
19
+ * SetEntityState<Client, 'client'>
20
+ * >('client'),
21
+ * });
22
+ * // adds following props to the state:
23
+ * // client?: Client;
24
+ *
25
+ * // generated actions
26
+ * traits.actions.setClient({client: {id:123, name: 'gabs'}});
27
+ * //generated selectors
28
+ * traits.selectors.selectClient()
29
+ */
30
+ export function addSetEntityTrait({ entityName, actionProps, }) {
31
+ const capitalizedName = capitalize(entityName);
32
+ return createTraitFactory({
33
+ key: `load${capitalizedName}`,
34
+ config: { entityName, actionProps },
35
+ actions: ({ actionsGroupKey }) => {
36
+ const setEntity = createAction(`${actionsGroupKey} Set ${capitalizedName}`, actionProps);
37
+ return {
38
+ [`set${capitalizedName}`]: setEntity,
39
+ };
40
+ },
41
+ selectors: () => {
42
+ function selectEntity(state) {
43
+ return state[`${entityName}`];
44
+ }
45
+ return {
46
+ [`select${capitalizedName}`]: selectEntity,
47
+ };
48
+ },
49
+ initialState: ({ previousInitialState }) => previousInitialState,
50
+ reducer: ({ initialState, allActions }) => {
51
+ return createReducer(initialState, on(allActions[`set${capitalizedName}`], (state, action) => ({
52
+ ...state,
53
+ [entityName]: action[entityName],
54
+ })));
55
+ },
56
+ });
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWVudGl0eS50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc2V0LWVudGl0eS9zZXQtZW50aXR5LnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysa0JBQWtCLEdBRW5CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBWTlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FLL0IsRUFDQSxVQUFVLEVBQ1YsV0FBVyxHQUlaO0lBQ0MsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLE9BQU8sZUFBZSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7UUFDbkMsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQTZCLEVBQUUsRUFBRTtZQUMxRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQzVCLEdBQUcsZUFBZSxRQUFRLGVBQWUsRUFBRSxFQUMzQyxXQUFrQixDQUNuQixDQUFDO1lBRUYsT0FBTztnQkFDTCxDQUFDLE1BQU0sZUFBZSxFQUFFLENBQUMsRUFBRSxTQUFTO2FBQ0wsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFNBQVMsWUFBWSxDQUFDLEtBQVk7Z0JBQ2hDLE9BQVEsS0FBYSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQVcsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTztnQkFDTCxDQUFDLFNBQVMsZUFBZSxFQUFFLENBQUMsRUFBRSxZQUFZO2FBQ1YsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsWUFBWSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsRUFBa0MsRUFBRSxFQUFFLENBQ3pFLG9CQUE2QjtRQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUNDLFVBQWtCLENBQUMsTUFBTSxlQUFlLEVBQUUsQ0FBQyxFQUM1QyxDQUFDLEtBQVUsRUFBRSxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzVCLEdBQUcsS0FBSztnQkFDUixDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7YUFDakMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2FwaXRhbGl6ZSxcbiAgY3JlYXRlVHJhaXRGYWN0b3J5LFxuICBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQge1xuICBTZXRFbnRpdHlBY3Rpb25zLFxuICBTZXRFbnRpdHlTZWxlY3RvcnMsXG4gIFNldEVudGl0eVN0YXRlLFxufSBmcm9tICcuL3NldC1lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgVHJhaXRJbml0aWFsU3RhdGVGYWN0b3J5Q29uZmlnIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvclByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbnR5cGUgUmVjb3JkRW50aXR5PFQ+ID0gVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGluZmVyIEo+ID8gSiA6IG5ldmVyO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBuZ3J4IGNvZGUgbmVlZGVkIHRvIHNldCBhbmQgZW50aXR5IGluIHRoZSBzdG9yZSBzdGF0ZVxuICogQHBhcmFtIGVudGl0eU5hbWUgLSBFbnRpdHkgbmFtZSwgc2hvdWxkIGJlIGluIGNhbWVsIGNhc2VcbiAqIEBwYXJhbSBvcHRpb25zLmFjdGlvblByb3BzIC0gcGFyYW0gZm9yIHRoZSBtYWluIHJlcXVlc3QgYWN0aW9uLFxuICogdXNlIHRoZSBwcm9wcygpIGZ1bmN0aW9uIGZvciBpdHMgdmFsdWVcbiAqIEByZXR1cm5zIHRoZSB0cmFpdCBmYWN0b3J5XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHRyYWl0cyA9IGNyZWF0ZUVudGl0eUZlYXR1cmVGYWN0b3J5KFxuICogYWRkU2V0RW50aXR5VHJhaXRzKHtcbiAqICAgICAgICBlbnRpdHlOYW1lOiAnY2xpZW50JyxcbiAqICAgICAgICBhY3Rpb25Qcm9wczogcHJvcHM8eyBjbGllbnQ6IENsaWVudCB9XG4gKiAgICAgIH0pLFxuICogKSh7XG4gKiAgICAgIGFjdGlvbnNHcm91cEtleTogJ0NsaWVudCcsXG4gKiAgICAgIGZlYXR1cmVTZWxlY3RvcjogY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFxuICogICAgICAgIFNldEVudGl0eVN0YXRlPENsaWVudCwgJ2NsaWVudCc+XG4gKiAgICAgICAgPignY2xpZW50JyksXG4gKiAgICB9KTtcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgY2xpZW50PzogQ2xpZW50O1xuICpcbiAqIC8vIGdlbmVyYXRlZCBhY3Rpb25zXG4gKiB0cmFpdHMuYWN0aW9ucy5zZXRDbGllbnQoe2NsaWVudDoge2lkOjEyMywgbmFtZTogJ2dhYnMnfX0pO1xuICogLy9nZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdENsaWVudCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZXRFbnRpdHlUcmFpdDxcbiAgSiBleHRlbmRzIHN0cmluZyxcbiAgUGF5bG9hZCBleHRlbmRzIFJlY29yZDxKLCBhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBFbnRpdHkgPSBSZWNvcmRFbnRpdHk8UGF5bG9hZD4sXG4gIFN0YXRlID0gU2V0RW50aXR5U3RhdGU8RW50aXR5LCBKPlxuPih7XG4gIGVudGl0eU5hbWUsXG4gIGFjdGlvblByb3BzLFxufToge1xuICBlbnRpdHlOYW1lOiBKO1xuICBhY3Rpb25Qcm9wcz86IEFjdGlvbkNyZWF0b3JQcm9wczxQYXlsb2FkPjtcbn0pIHtcbiAgY29uc3QgY2FwaXRhbGl6ZWROYW1lID0gY2FwaXRhbGl6ZShlbnRpdHlOYW1lKTtcblxuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6IGBsb2FkJHtjYXBpdGFsaXplZE5hbWV9YCxcbiAgICBjb25maWc6IHsgZW50aXR5TmFtZSwgYWN0aW9uUHJvcHMgfSxcbiAgICBhY3Rpb25zOiAoeyBhY3Rpb25zR3JvdXBLZXkgfTogVHJhaXRBY3Rpb25zRmFjdG9yeUNvbmZpZykgPT4ge1xuICAgICAgY29uc3Qgc2V0RW50aXR5ID0gY3JlYXRlQWN0aW9uKFxuICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFNldCAke2NhcGl0YWxpemVkTmFtZX1gLFxuICAgICAgICBhY3Rpb25Qcm9wcyBhcyBhbnlcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgc2V0JHtjYXBpdGFsaXplZE5hbWV9YF06IHNldEVudGl0eSxcbiAgICAgIH0gYXMgU2V0RW50aXR5QWN0aW9uczxQYXlsb2FkLCBKPjtcbiAgICB9LFxuICAgIHNlbGVjdG9yczogKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gc2VsZWN0RW50aXR5KHN0YXRlOiBTdGF0ZSkge1xuICAgICAgICByZXR1cm4gKHN0YXRlIGFzIGFueSlbYCR7ZW50aXR5TmFtZX1gXSBhcyBFbnRpdHk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgc2VsZWN0JHtjYXBpdGFsaXplZE5hbWV9YF06IHNlbGVjdEVudGl0eSxcbiAgICAgIH0gYXMgU2V0RW50aXR5U2VsZWN0b3JzPEVudGl0eSwgSj47XG4gICAgfSxcbiAgICBpbml0aWFsU3RhdGU6ICh7IHByZXZpb3VzSW5pdGlhbFN0YXRlIH06IFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIHByZXZpb3VzSW5pdGlhbFN0YXRlIGFzIFN0YXRlLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucyB9KSA9PiB7XG4gICAgICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBvbihcbiAgICAgICAgICAoYWxsQWN0aW9ucyBhcyBhbnkpW2BzZXQke2NhcGl0YWxpemVkTmFtZX1gXSxcbiAgICAgICAgICAoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIFtlbnRpdHlOYW1lXTogYWN0aW9uW2VudGl0eU5hbWVdLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './sort-entities.model';
2
+ export * from './sort-entities.trait';
3
+ export * from './sort-entities.utils';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL3NvcnQtZW50aXRpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NvcnQtZW50aXRpZXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0LWVudGl0aWVzLnRyYWl0JztcbmV4cG9ydCAqIGZyb20gJy4vc29ydC1lbnRpdGllcy51dGlscyc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export const sortTraitKey = 'sort';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1lbnRpdGllcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZDQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9hZEVudGl0aWVzU3RhdGUgfSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBUeXBlZEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuaW1wb3J0IHsgS2V5ZWRDb25maWcgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgJyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydDxUPiB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGNvbHVtbiBiZWluZyBzb3J0ZWQuICovXG4gIGFjdGl2ZToga2V5b2YgVDtcbiAgLyoqIFRoZSBzb3J0IGRpcmVjdGlvbi4gKi9cbiAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRFbnRpdGllc1N0YXRlPFQ+IHtcbiAgc29ydDoge1xuICAgIGN1cnJlbnQ6IFNvcnQ8VD47XG4gICAgZGVmYXVsdDogU29ydDxUPjtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU29ydEVudGl0aWVzQWN0aW9uczxUPiA9IHtcbiAgc29ydEVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IFNvcnQ8VD4pID0+IFNvcnQ8VD4gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IHNvcnQgYmFja1xuICAgKi9cbiAgcmVzZXRFbnRpdGllc1NvcnQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFNvcnRFbnRpdGllc1NlbGVjdG9yczxUPiA9IHtcbiAgc2VsZWN0RW50aXRpZXNTb3J0OiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgU29ydEVudGl0aWVzU3RhdGU8VD5cbiAgKSA9PiBTb3J0PFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgU29ydEVudGl0aWVzTXV0YXRvcnM8VD4gPSB7XG4gIHNvcnRFbnRpdGllczxTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8VD4gJiBTb3J0RW50aXRpZXNTdGF0ZTxUPj4oXG4gICAgeyBhY3RpdmUsIGRpcmVjdGlvbiB9OiBTb3J0PFQ+LFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG59O1xuXG5leHBvcnQgY29uc3Qgc29ydFRyYWl0S2V5ID0gJ3NvcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRFbnRpdGllc0NvbmZpZzxUPiB7XG4gIGRlZmF1bHRTb3J0OiBTb3J0PFQ+O1xuICByZW1vdGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPFQ+ID0gS2V5ZWRDb25maWc8XG4gIHR5cGVvZiBzb3J0VHJhaXRLZXksXG4gIFNvcnRFbnRpdGllc0NvbmZpZzxUPlxuPjtcbiJdfQ==