@one-paragon/angular-utilities 0.1.14 → 0.1.15

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.
@@ -0,0 +1,76 @@
1
+ import { createSelector, Store } from "@ngrx/store";
2
+ import { v4 as uuid } from 'uuid';
3
+ class AppStoreCache {
4
+ constructor() {
5
+ this.cache = [];
6
+ this.isInCache = (props, actionableSelectorId) => {
7
+ if (typeof props != 'object')
8
+ props = { props };
9
+ const valueToCache = { ...props, actionableSelectorId$: actionableSelectorId };
10
+ if (this.cache.some(item => shallowEquals(item, valueToCache))) {
11
+ return true;
12
+ }
13
+ this.cache.push(valueToCache);
14
+ return false;
15
+ };
16
+ }
17
+ }
18
+ let _store;
19
+ let _cache = new AppStoreCache();
20
+ const setStore = (store) => {
21
+ if (store instanceof Store)
22
+ _store = store;
23
+ };
24
+ export function setUpStoreFactory(store) {
25
+ return () => new Promise((resolve, reject) => {
26
+ setStore(store);
27
+ resolve(null);
28
+ });
29
+ }
30
+ /**
31
+ * Creates a selector that can dispatch an action if conditions are met.
32
+ * Note: The props of the selector factory must include the props of the action.
33
+ * @param selectorFactory A method that returns selector.
34
+ * @param action The action that will be dispatched when conditions are met.
35
+ * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched
36
+ * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.
37
+ */
38
+ export const createActionableSelector = (selectorFactory, action, dispatchIf = defaultFilter) => {
39
+ const id = uuid();
40
+ const slctr = (props) => createSelector(selectorFactory(props), (selected) => {
41
+ if (dispatchIf(selected) && !_cache.isInCache(props, id)) {
42
+ //Adding the null check for testing purposes. Otherwise it should never be null.
43
+ _store.dispatch(action(props));
44
+ }
45
+ return selected;
46
+ });
47
+ return slctr;
48
+ };
49
+ export function defaultFilter(data) {
50
+ return data == null || data == undefined;
51
+ }
52
+ /**
53
+ * Returns a shallow clone without prop. Will not error if prop does not exist.
54
+ * @param prop name of property to be removed.
55
+ * @returns a shallow clone without prop
56
+ */
57
+ const deleteProp = (t, prop) => {
58
+ const copy = { ...t };
59
+ delete copy[prop];
60
+ return copy;
61
+ };
62
+ const shallowEquals = (first, second) => {
63
+ const firstKeys = Object.keys(first);
64
+ const secondKeys = Object.keys(second);
65
+ if (firstKeys.length !== secondKeys.length) {
66
+ return false;
67
+ }
68
+ for (let index = 0; index < firstKeys.length; index++) {
69
+ const currentKey = firstKeys[index];
70
+ if (first[currentKey] !== second[currentKey]) {
71
+ return false;
72
+ }
73
+ }
74
+ return true;
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYWJsZS1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9uZ3J4L2FjdGlvbmFibGUtc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLGNBQWMsRUFBb0IsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE1BQU0sYUFBYTtJQUFuQjtRQUNFLFVBQUssR0FHQyxFQUFFLENBQUM7UUFDVCxjQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQUUsb0JBQTRCLEVBQVcsRUFBRTtZQUNoRSxJQUFHLE9BQU8sS0FBSyxJQUFJLFFBQVE7Z0JBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDL0MsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQy9FLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUU7Z0JBQzdELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQTtBQUVELElBQUksTUFBa0IsQ0FBQztBQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBRWpDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7SUFDaEMsSUFBRyxLQUFLLFlBQVksS0FBSztRQUFFLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVk7SUFDNUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUMzQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxlQUFtRSxFQUNuRSxNQUF5QyxFQUN6QyxhQUF3QyxhQUFhLEVBQ1MsRUFBRTtJQUNoRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNsQixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUM3QyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQ3RCLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBQ25CLElBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUM7WUFDdEQsZ0ZBQWdGO1lBQ2hGLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQzJDLENBQUM7SUFDL0MsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUE7QUFNRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVM7SUFDckMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTLENBQUM7QUFDM0MsQ0FBQztBQUtEOzs7O0dBSUc7QUFDRixNQUFNLFVBQVUsR0FBRyxDQUFvQyxDQUFJLEVBQUUsSUFBb0IsRUFBaUIsRUFBRTtJQUNuRyxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUE7QUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQVcsRUFBRTtJQUMvRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsSUFBRyxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUU7UUFDekMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELEtBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3BELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUM7WUFDMUMsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIGNyZWF0ZVNlbGVjdG9yLCBNZW1vaXplZFNlbGVjdG9yLCBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5jbGFzcyBBcHBTdG9yZUNhY2hlIHtcbiAgY2FjaGU6IHtcbiAgICBhY3Rpb25hYmxlU2VsZWN0b3JJZCQ6IHN0cmluZyxcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH1bXSA9IFtdO1xuICBpc0luQ2FjaGUgPSAocHJvcHM6IGFueSwgYWN0aW9uYWJsZVNlbGVjdG9ySWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGlmKHR5cGVvZiBwcm9wcyAhPSAnb2JqZWN0JykgcHJvcHMgPSB7IHByb3BzIH07XG4gICAgY29uc3QgdmFsdWVUb0NhY2hlID0geyAuLi5wcm9wcywgYWN0aW9uYWJsZVNlbGVjdG9ySWQkOiBhY3Rpb25hYmxlU2VsZWN0b3JJZCB9O1xuICAgIGlmKHRoaXMuY2FjaGUuc29tZShpdGVtID0+IHNoYWxsb3dFcXVhbHMoaXRlbSwgdmFsdWVUb0NhY2hlKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmNhY2hlLnB1c2godmFsdWVUb0NhY2hlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxubGV0IF9zdG9yZTogU3RvcmU8YW55PjtcbmxldCBfY2FjaGUgPSBuZXcgQXBwU3RvcmVDYWNoZSgpO1xuXG5jb25zdCBzZXRTdG9yZSA9IChzdG9yZTogU3RvcmUpID0+IHtcbiAgaWYoc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkgX3N0b3JlID0gc3RvcmU7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHNldFVwU3RvcmVGYWN0b3J5KHN0b3JlOiBTdG9yZSl7XG4gIHJldHVybiAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc2V0U3RvcmUoc3RvcmUpO1xuICAgIHJlc29sdmUobnVsbCk7XG4gIH0pXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlbGVjdG9yIHRoYXQgY2FuIGRpc3BhdGNoIGFuIGFjdGlvbiBpZiBjb25kaXRpb25zIGFyZSBtZXQuXG4gKiBOb3RlOiBUaGUgcHJvcHMgb2YgdGhlIHNlbGVjdG9yIGZhY3RvcnkgbXVzdCBpbmNsdWRlIHRoZSBwcm9wcyBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHNlbGVjdG9yRmFjdG9yeSBBIG1ldGhvZCB0aGF0IHJldHVybnMgc2VsZWN0b3IuXG4gKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdGhhdCB3aWxsIGJlIGRpc3BhdGNoZWQgd2hlbiBjb25kaXRpb25zIGFyZSBtZXQuXG4gKiBAcGFyYW0gW2Rpc3BhdGNoSWYgPSBkZWZhdWx0RmlsdGVyXSBPcHRpb25hbC4gQSBtZXRob2QgdGhhdCB0YWtlcyB0aGUgcmVzdWx0IG9mIHRoZSBzZWxlY3RvciBhbmQgcmV0dXJucyBhIGJvb2xlYW4uIFRoZSBhY3Rpb25zIGdldHMgZGlzcGF0Y2hlZFxuICogaWYgdHJ1ZSBpcyByZXR1cm5lZC4gSWYgbm8gbWV0aG9kIGlzIHBhc3NlZCBpbiB0aGFuIHRoZSBhY3Rpb24gd2lsbCBiZSBkaXNwYXRjaGVkIGlmIHRoZSBzZWxlY3RvciByZXR1cm5zIHVuZGVmaW5lZCBvciBudWxsLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aW9uYWJsZVNlbGVjdG9yID0gPFN0YXRlLCBSZXN1bHQsIFByb3BzID0gYW55PihcbiAgc2VsZWN0b3JGYWN0b3J5OiAocHJvcHM/OiBQcm9wcykgPT4gTWVtb2l6ZWRTZWxlY3RvcjxTdGF0ZSwgUmVzdWx0PixcbiAgYWN0aW9uOiBBY3Rpb25SZXR1cm5lcjxQcm9wcyB8IHVuZGVmaW5lZD4sXG4gIGRpc3BhdGNoSWY6IChkYXRhOiBSZXN1bHQpID0+IGJvb2xlYW4gPSBkZWZhdWx0RmlsdGVyLFxuKTogKHByb3BzPzogUHJvcHMpID0+IEFjdGlvbmFibGVNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBSZXN1bHQ+ID0+IHtcbiAgY29uc3QgaWQgPSB1dWlkKCk7XG4gIGNvbnN0IHNsY3RyID0gKHByb3BzPzogUHJvcHMpID0+IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdG9yRmFjdG9yeShwcm9wcyksXG4gICAgKHNlbGVjdGVkOiBSZXN1bHQpID0+IHtcbiAgICAgIGlmKGRpc3BhdGNoSWYoc2VsZWN0ZWQpICYmICFfY2FjaGUuaXNJbkNhY2hlKHByb3BzLCBpZCkpe1xuICAgICAgICAvL0FkZGluZyB0aGUgbnVsbCBjaGVjayBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gT3RoZXJ3aXNlIGl0IHNob3VsZCBuZXZlciBiZSBudWxsLlxuICAgICAgICBfc3RvcmUuZGlzcGF0Y2goYWN0aW9uKHByb3BzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxuICApIGFzIEFjdGlvbmFibGVNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBSZXN1bHQ+O1xuICByZXR1cm4gc2xjdHI7XG59XG5cbnR5cGUgQWN0aW9uYWJsZU1lbW9pemVkU2VsZWN0b3I8U3RhdGUsIFJlc3VsdD4gPSBNZW1vaXplZFNlbGVjdG9yPFN0YXRlLCBSZXN1bHQ+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25SZXR1cm5lcjxQcm9wcz4gPSAocHJvcHM6IFByb3BzKSA9PiBBY3Rpb247XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RmlsdGVyKGRhdGE6IGFueSkge1xuICByZXR1cm4gZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkO1xufVxuXG5cblxuXG4vKipcbiAqIFJldHVybnMgYSBzaGFsbG93IGNsb25lIHdpdGhvdXQgcHJvcC4gV2lsbCBub3QgZXJyb3IgaWYgcHJvcCBkb2VzIG5vdCBleGlzdC5cbiAqIEBwYXJhbSBwcm9wIG5hbWUgb2YgcHJvcGVydHkgdG8gYmUgcmVtb3ZlZC5cbiAqIEByZXR1cm5zIGEgc2hhbGxvdyBjbG9uZSB3aXRob3V0IHByb3BcbiAqL1xuIGNvbnN0IGRlbGV0ZVByb3AgPSA8VCBleHRlbmRzIHt9LCBQcm9wIGV4dGVuZHMgc3RyaW5nPih0OiBULCBwcm9wOiBrZXlvZiBUICYgUHJvcCk6IE9taXQ8VCwgUHJvcD4gPT4ge1xuICBjb25zdCBjb3B5ID0geyAuLi50IH07XG4gIGRlbGV0ZSBjb3B5W3Byb3BdO1xuICByZXR1cm4gY29weTtcbn1cblxuY29uc3Qgc2hhbGxvd0VxdWFscyA9IChmaXJzdDogb2JqZWN0LCBzZWNvbmQ6IG9iamVjdCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBmaXJzdEtleXMgPSBPYmplY3Qua2V5cyhmaXJzdCk7XG4gIGNvbnN0IHNlY29uZEtleXMgPSBPYmplY3Qua2V5cyhzZWNvbmQpO1xuICBpZihmaXJzdEtleXMubGVuZ3RoICE9PSBzZWNvbmRLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaXJzdEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgY3VycmVudEtleSA9IGZpcnN0S2V5c1tpbmRleF07XG4gICAgaWYoZmlyc3RbY3VycmVudEtleV0gIT09IHNlY29uZFtjdXJyZW50S2V5XSl7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './actionable-selector';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvbmdyeC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25hYmxlLXNlbGVjdG9yJzsiXX0=
@@ -15,4 +15,5 @@ export { FilterType } from './table-builder/enums/filterTypes';
15
15
  export * from './rxjs';
16
16
  export * from './utilities';
17
17
  export * from './action-state';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFHckMsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0RBQXNELENBQUM7QUFFckUsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHdEQUF3RCxDQUFDO0FBRXZFLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHN0QsY0FBYyxRQUFRLENBQUE7QUFFdEIsY0FBYyxhQUFhLENBQUE7QUFFM0IsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaHR0cC1yZXF1ZXN0LXN0YXRlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtcmVxdWVzdC1zdGF0ZS9yeGpzJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXF1ZXN0LXN0YXRlJztcblxuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvdGFibGUtYnVpbGRlci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcblxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1idWlsZGVyL2NsYXNzZXMvTWF0VGFibGVPYnNlcnZhYmxlRGF0YVNvdXJjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLWJ1aWxkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtYnVpbGRlci9kaXJlY3RpdmVzJztcblxuZXhwb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvZW51bXMvZmlsdGVyVHlwZXMnO1xuXG5cbmV4cG9ydCAqIGZyb20gJy4vcnhqcydcblxuZXhwb3J0ICogZnJvbSAnLi91dGlsaXRpZXMnXG5cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLXN0YXRlJztcbiJdfQ==
18
+ export * from './ngrx';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFHckMsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0RBQXNELENBQUM7QUFFckUsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHdEQUF3RCxDQUFDO0FBRXZFLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHN0QsY0FBYyxRQUFRLENBQUE7QUFFdEIsY0FBYyxhQUFhLENBQUE7QUFFM0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaHR0cC1yZXF1ZXN0LXN0YXRlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtcmVxdWVzdC1zdGF0ZS9yeGpzJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXF1ZXN0LXN0YXRlJztcblxuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvdGFibGUtYnVpbGRlci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcblxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1idWlsZGVyL2NsYXNzZXMvTWF0VGFibGVPYnNlcnZhYmxlRGF0YVNvdXJjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLWJ1aWxkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtYnVpbGRlci9kaXJlY3RpdmVzJztcblxuZXhwb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL3RhYmxlLWJ1aWxkZXIvZW51bXMvZmlsdGVyVHlwZXMnO1xuXG5cbmV4cG9ydCAqIGZyb20gJy4vcnhqcydcblxuZXhwb3J0ICogZnJvbSAnLi91dGlsaXRpZXMnXG5cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLXN0YXRlJztcblxuZXhwb3J0ICogZnJvbSAnLi9uZ3J4JztcbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  export * from './defaultShareReplay';
2
2
  export * from './mapError';
3
3
  export * from './rxjs-operators';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvcnhqcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RlZmF1bHRTaGFyZVJlcGxheSdcbmV4cG9ydCAqIGZyb20gJy4vbWFwRXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9yeGpzLW9wZXJhdG9ycyc7XG4iXX0=
4
+ export * from './subjectifier';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvcnhqcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdFNoYXJlUmVwbGF5J1xuZXhwb3J0ICogZnJvbSAnLi9tYXBFcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL3J4anMtb3BlcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vc3ViamVjdGlmaWVyJztcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { merge, Observable, Subject } from 'rxjs';
2
+ export class Subjectifier extends Observable {
3
+ constructor(_source) {
4
+ super((obs) => {
5
+ const s = merge(_source, this._subj).subscribe(obs);
6
+ return s;
7
+ });
8
+ this._source = _source;
9
+ this._subj = new Subject();
10
+ this.merged = merge(this._source, this._subj);
11
+ this.next = this._subj.next.bind(this._subj);
12
+ this.newSubj = (...operations) => new Subjectifier(this.merged.pipe(...operations));
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdGlmaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3J4anMvc3ViamVjdGlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFZLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1RCxNQUFNLE9BQU8sWUFBZ0IsU0FBUSxVQUFhO0lBR2hELFlBQW9CLE9BQXNCO1FBQ3hDLEtBQUssQ0FBQyxDQUFDLEdBQWdCLEVBQUUsRUFBRTtZQUN6QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUplLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFGbEMsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFLLENBQUM7UUFDekIsV0FBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU9qRCxTQUFJLEdBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsWUFBTyxHQUFHLENBQUMsR0FBRyxVQUFtQyxFQUFFLEVBQUUsQ0FDbkQsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBSHBELENBQUM7Q0FJRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBPYnNlcnZlciwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xudHlwZSBQaXBlTGlrZTxUPiA9IE9ic2VydmFibGU8VD5bJ3BpcGUnXTtcbmV4cG9ydCBjbGFzcyBTdWJqZWN0aWZpZXI8VD4gZXh0ZW5kcyBPYnNlcnZhYmxlPFQ+e1xuICBwcml2YXRlIF9zdWJqID0gbmV3IFN1YmplY3Q8VD4oKTtcbiAgcHJpdmF0ZSBtZXJnZWQgPSBtZXJnZSh0aGlzLl9zb3VyY2UsIHRoaXMuX3N1YmopO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zb3VyY2U6IE9ic2VydmFibGU8VD4pe1xuICAgIHN1cGVyKChvYnM6IE9ic2VydmVyPFQ+KSA9PiB7XG4gICAgICBjb25zdCBzID0gbWVyZ2UoIF9zb3VyY2UsIHRoaXMuX3N1YmogKS5zdWJzY3JpYmUob2JzKTtcbiAgICAgIHJldHVybiBzO1xuICAgIH0pO1xuICB9XG4gIG5leHQ6IFN1YmplY3Q8VD5bJ25leHQnXSA9IHRoaXMuX3N1YmoubmV4dC5iaW5kKHRoaXMuX3N1YmopO1xuICBuZXdTdWJqID0gKC4uLm9wZXJhdGlvbnM6IFBhcmFtZXRlcnM8UGlwZUxpa2U8VD4+KSA9PlxuICAgIG5ldyBTdWJqZWN0aWZpZXIodGhpcy5tZXJnZWQucGlwZSguLi5vcGVyYXRpb25zKSk7XG59Il19
@@ -68,7 +68,7 @@ import * as i7$2 from '@angular/material/chips';
68
68
  import { MatChipsModule } from '@angular/material/chips';
69
69
  import * as i8$2 from '@angular/material/button-toggle';
70
70
  import * as i3$4 from '@ngrx/store';
71
- import { createSelector, createAction, props, select, createReducer, on, StoreModule, createFeatureSelector } from '@ngrx/store';
71
+ import { createSelector, createAction, props, select, createReducer, on, StoreModule, createFeatureSelector, Store } from '@ngrx/store';
72
72
  import * as i1$3 from '@ngrx/effects';
73
73
  import { createEffect, ofType, concatLatestFrom, EffectsModule } from '@ngrx/effects';
74
74
  import { createEntityAdapter } from '@ngrx/entity';
@@ -2095,6 +2095,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
2095
2095
  args: [MatMenuTrigger]
2096
2096
  }] } });
2097
2097
 
2098
+ class Subjectifier extends Observable {
2099
+ constructor(_source) {
2100
+ super((obs) => {
2101
+ const s = merge(_source, this._subj).subscribe(obs);
2102
+ return s;
2103
+ });
2104
+ this._source = _source;
2105
+ this._subj = new Subject();
2106
+ this.merged = merge(this._source, this._subj);
2107
+ this.next = this._subj.next.bind(this._subj);
2108
+ this.newSubj = (...operations) => new Subjectifier(this.merged.pipe(...operations));
2109
+ }
2110
+ }
2111
+
2098
2112
  class ResizeColumnDirective {
2099
2113
  constructor(renderer, el, store) {
2100
2114
  this.renderer = renderer;
@@ -4476,6 +4490,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
4476
4490
  * Public API Surface of action-state
4477
4491
  */
4478
4492
 
4493
+ class AppStoreCache {
4494
+ constructor() {
4495
+ this.cache = [];
4496
+ this.isInCache = (props, actionableSelectorId) => {
4497
+ if (typeof props != 'object')
4498
+ props = { props };
4499
+ const valueToCache = Object.assign(Object.assign({}, props), { actionableSelectorId$: actionableSelectorId });
4500
+ if (this.cache.some(item => shallowEquals(item, valueToCache))) {
4501
+ return true;
4502
+ }
4503
+ this.cache.push(valueToCache);
4504
+ return false;
4505
+ };
4506
+ }
4507
+ }
4508
+ let _store;
4509
+ let _cache = new AppStoreCache();
4510
+ const setStore = (store) => {
4511
+ if (store instanceof Store)
4512
+ _store = store;
4513
+ };
4514
+ function setUpStoreFactory(store) {
4515
+ return () => new Promise((resolve, reject) => {
4516
+ setStore(store);
4517
+ resolve(null);
4518
+ });
4519
+ }
4520
+ /**
4521
+ * Creates a selector that can dispatch an action if conditions are met.
4522
+ * Note: The props of the selector factory must include the props of the action.
4523
+ * @param selectorFactory A method that returns selector.
4524
+ * @param action The action that will be dispatched when conditions are met.
4525
+ * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched
4526
+ * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.
4527
+ */
4528
+ const createActionableSelector = (selectorFactory, action, dispatchIf = defaultFilter) => {
4529
+ const id = v4();
4530
+ const slctr = (props) => createSelector(selectorFactory(props), (selected) => {
4531
+ if (dispatchIf(selected) && !_cache.isInCache(props, id)) {
4532
+ //Adding the null check for testing purposes. Otherwise it should never be null.
4533
+ _store.dispatch(action(props));
4534
+ }
4535
+ return selected;
4536
+ });
4537
+ return slctr;
4538
+ };
4539
+ function defaultFilter(data) {
4540
+ return data == null || data == undefined;
4541
+ }
4542
+ /**
4543
+ * Returns a shallow clone without prop. Will not error if prop does not exist.
4544
+ * @param prop name of property to be removed.
4545
+ * @returns a shallow clone without prop
4546
+ */
4547
+ const deleteProp = (t, prop) => {
4548
+ const copy = Object.assign({}, t);
4549
+ delete copy[prop];
4550
+ return copy;
4551
+ };
4552
+ const shallowEquals = (first, second) => {
4553
+ const firstKeys = Object.keys(first);
4554
+ const secondKeys = Object.keys(second);
4555
+ if (firstKeys.length !== secondKeys.length) {
4556
+ return false;
4557
+ }
4558
+ for (let index = 0; index < firstKeys.length; index++) {
4559
+ const currentKey = firstKeys[index];
4560
+ if (first[currentKey] !== second[currentKey]) {
4561
+ return false;
4562
+ }
4563
+ }
4564
+ return true;
4565
+ };
4566
+
4479
4567
  /*
4480
4568
  * Public API Surface of http-request-state
4481
4569
  */
@@ -4484,5 +4572,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
4484
4572
  * Generated bundle index. Do not edit.
4485
4573
  */
4486
4574
 
4487
- export { ActionStateSpinnerComponent, ActionStateUiModule, ActionStatus, AppStatusState, ArrayStyle, AutoFocusDirective, ClickEmitterDirective, ClickSubjectDirective, ConditionalClassesDirective, CreateTableBuilder, CustomCellDirective, DateFilterComponent, DialogDirective, DialogService, DialogWrapper, FieldType, FilterChipsComponent, FilterComponent, FilterType, FunctionPipe, GenColDisplayerComponent, GenFilterDisplayerComponent, GeneralTableSettings, GenericTableComponent, HttpErrorStateDirective, HttpInProgressStateDirective, HttpNotStartedStateDirective, HttpRequestModule, HttpRequestStateDirective, HttpRequestStateFactory, HttpRequestStateStore, HttpRequestStatus, HttpRequestStrategy, HttpSuccessStateDirective, MatButtonToggleFilterDirective, MatCheckboxTbFilterDirective, MatOptionTbFilterDirective, MatRadioButtonTbFilterDirective, MatSlideToggleGroupDirective, MatSlideToggleTbFilterDirective, MatTableObservableDataSource, MultiSortDirective, NgrxExtModule, NotPersisitedTableSettings, PaginatorComponent, PesrsistedTableSettings, PhoneNumberPipe, PreventEnterDirective, ResizeColumnDirective, SortDirection, SpaceCasePipe, StopPropagationDirective, StylerDirective, TableBuilder, TableBuilderModule, TableColumnHeaderSettings, TableContainerComponent, TableCustomFilterDirective, TableCustomFilterDirectiveBase, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective, TableWrapperFooterSettings, TableWrapperHeaderSettings, Target, TbSelectedFilterDirective, UtilitiesModule, actionStatusReducer, chainRequest, combineArrays, createFailure, createSuccess, defaultShareReplay, delayOn, filterArray, getRequestorBody, getRequestorStatus, getStatusState, httpRequest, httpRequestor, inProgress, initialState, isErrorState, isSuccessState, mapArray, mapError, notNull, notStarted, onWait, onceWhen, previousAndCurrent, selectAll, selectEntities, selectEntity, selectIds, selectTotal, serverStatusTypes, skipOneWhen, spaceCase, statusAdapter, statusIsSuccessOrInProgress, switchOff, tapError, tapSuccess };
4575
+ export { ActionStateSpinnerComponent, ActionStateUiModule, ActionStatus, AppStatusState, ArrayStyle, AutoFocusDirective, ClickEmitterDirective, ClickSubjectDirective, ConditionalClassesDirective, CreateTableBuilder, CustomCellDirective, DateFilterComponent, DialogDirective, DialogService, DialogWrapper, FieldType, FilterChipsComponent, FilterComponent, FilterType, FunctionPipe, GenColDisplayerComponent, GenFilterDisplayerComponent, GeneralTableSettings, GenericTableComponent, HttpErrorStateDirective, HttpInProgressStateDirective, HttpNotStartedStateDirective, HttpRequestModule, HttpRequestStateDirective, HttpRequestStateFactory, HttpRequestStateStore, HttpRequestStatus, HttpRequestStrategy, HttpSuccessStateDirective, MatButtonToggleFilterDirective, MatCheckboxTbFilterDirective, MatOptionTbFilterDirective, MatRadioButtonTbFilterDirective, MatSlideToggleGroupDirective, MatSlideToggleTbFilterDirective, MatTableObservableDataSource, MultiSortDirective, NgrxExtModule, NotPersisitedTableSettings, PaginatorComponent, PesrsistedTableSettings, PhoneNumberPipe, PreventEnterDirective, ResizeColumnDirective, SortDirection, SpaceCasePipe, StopPropagationDirective, StylerDirective, Subjectifier, TableBuilder, TableBuilderModule, TableColumnHeaderSettings, TableContainerComponent, TableCustomFilterDirective, TableCustomFilterDirectiveBase, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective, TableWrapperFooterSettings, TableWrapperHeaderSettings, Target, TbSelectedFilterDirective, UtilitiesModule, actionStatusReducer, chainRequest, combineArrays, createActionableSelector, createFailure, createSuccess, defaultFilter, defaultShareReplay, delayOn, filterArray, getRequestorBody, getRequestorStatus, getStatusState, httpRequest, httpRequestor, inProgress, initialState, isErrorState, isSuccessState, mapArray, mapError, notNull, notStarted, onWait, onceWhen, previousAndCurrent, selectAll, selectEntities, selectEntity, selectIds, selectTotal, serverStatusTypes, setUpStoreFactory, skipOneWhen, spaceCase, statusAdapter, statusIsSuccessOrInProgress, switchOff, tapError, tapSuccess };
4488
4576
  //# sourceMappingURL=one-paragon-angular-utilities.mjs.map