@elderbyte/ngx-starter 14.4.0-beta.19 → 14.4.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { JsonMapUtil } from '../json-map';
1
2
  export class EntitySetPatch {
2
3
  /***************************************************************************
3
4
  * *
@@ -32,7 +33,75 @@ export class EntitySetPatch {
32
33
  }
33
34
  /***************************************************************************
34
35
  * *
35
- * Public API *
36
+ * Query *
37
+ * *
38
+ **************************************************************************/
39
+ getUpsertsById() {
40
+ return JsonMapUtil.toMap(this.upsertsById);
41
+ }
42
+ getUpdatesById() {
43
+ return JsonMapUtil.toMap(this.updatesById);
44
+ }
45
+ getUpsertOnes() {
46
+ return [...this.upsertOnes];
47
+ }
48
+ getUpdateOnes() {
49
+ return [...this.updateOnes];
50
+ }
51
+ /**
52
+ * Gets all ids which should be deleted.
53
+ * Also consider isDeleteOther, which means
54
+ * everything gets deleted.
55
+ */
56
+ collectDeletions() {
57
+ return [
58
+ ...Array.from(this.getUpsertsById().entries())
59
+ .filter(([id, update]) => !update)
60
+ .map(([id, update]) => id),
61
+ ...Array.from(this.getUpdatesById().entries())
62
+ .filter(([id, update]) => !update)
63
+ .map(([id, update]) => id),
64
+ ];
65
+ }
66
+ /**
67
+ * Delete all entities which are not
68
+ * explicitly defined in this update.
69
+ * "Replace with" semantics.
70
+ */
71
+ get isDeleteOther() {
72
+ return this.deleteOther;
73
+ }
74
+ /**
75
+ * Collects all upserts. (Updates are ignored)
76
+ */
77
+ collectUpserts() {
78
+ return [
79
+ ...Array.from(this.getUpsertsById().entries())
80
+ .filter(([id, update]) => !!update)
81
+ .map(([id, update]) => update),
82
+ ...this.upsertOnes
83
+ ];
84
+ }
85
+ /**
86
+ * Collects all updates. (Upserts are ignored)
87
+ */
88
+ collectUpdates() {
89
+ return [
90
+ ...Array.from(this.getUpdatesById().entries())
91
+ .filter(([id, update]) => !!update)
92
+ .map(([id, update]) => update),
93
+ ...this.updateOnes
94
+ ];
95
+ }
96
+ collectUpdatesAndUpserts() {
97
+ return [
98
+ ...this.collectUpserts(),
99
+ ...this.collectUpdates()
100
+ ];
101
+ }
102
+ /***************************************************************************
103
+ * *
104
+ * Builder API *
36
105
  * *
37
106
  **************************************************************************/
38
107
  update(updateOne) {
@@ -80,12 +149,16 @@ export class EntitySetPatch {
80
149
  return this;
81
150
  }
82
151
  deleteAll() {
152
+ this.clear();
153
+ this.deleteAllOther();
154
+ return this;
155
+ }
156
+ clear() {
83
157
  this.upsertOnes = [];
84
158
  this.upsertsById = {};
85
159
  this.updateOnes = [];
86
160
  this.updatesById = {};
87
- this.deleteAllOther();
88
161
  return this;
89
162
  }
90
163
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNldC1wYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2VudGl0eS1zZXQtcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGNBQWM7SUFzQ3pCOzs7O2dGQUk0RTtJQUU1RSxZQUNFLFlBQTBDO1FBbkNwQyxnQkFBVyxHQUF3QixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBa0NwQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxjQUFjLENBQUMsaUJBQWlCLENBQUM7SUFDdkUsQ0FBQztJQWhDRDs7OztnRkFJNEU7SUFFckUsTUFBTSxDQUFDLEtBQUssQ0FDakIsWUFBMEM7UUFFMUMsT0FBTyxJQUFJLGNBQWMsQ0FBaUIsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBSyxFQUFNO1FBQ3pDLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUNqQyxPQUFPLEVBQUUsQ0FBQztTQUNYO2FBQU07WUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBY0Q7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyxTQUFxQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxTQUFTLENBQUMsU0FBdUI7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsRUFBTSxFQUFFLFNBQXFCO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBNEI7UUFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQXFCO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUF1QjtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFNLEVBQUUsU0FBcUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUE0QjtRQUMvQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBRyxNQUFZO1FBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxHQUFTO1FBQzFCLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FTRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SnNvbk1hcH0gZnJvbSAnLi4vanNvbi1tYXAnO1xuXG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlTZXRQYXRjaDxJRCwgSXRlbVVwZGF0ZT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWRUb01hcEtleUZuOiAoaWQ6IElEKSA9PiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgcHJpdmF0ZSB1cHNlcnRzQnlJZDogSnNvbk1hcDxJdGVtVXBkYXRlPiA9IHt9O1xuICBwcml2YXRlIHVwZGF0ZXNCeUlkOiBKc29uTWFwPEl0ZW1VcGRhdGU+ID0ge307XG4gIHByaXZhdGUgdXBzZXJ0T25lczogSXRlbVVwZGF0ZVtdID0gW107XG4gIHByaXZhdGUgdXBkYXRlT25lczogSXRlbVVwZGF0ZVtdID0gW107XG4gIHByaXZhdGUgZGVsZXRlT3RoZXI/OiBib29sZWFuO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGF0aWMgc3RhcnQ8SUQsIEl0ZW1VcGRhdGU+KFxuICAgIGlkVG9NYXBLZXlGbj86IChpZDogSUQpID0+IHN0cmluZyB8IG51bWJlclxuICApOiBFbnRpdHlTZXRQYXRjaDxJRCwgSXRlbVVwZGF0ZT4ge1xuICAgIHJldHVybiBuZXcgRW50aXR5U2V0UGF0Y2g8SUQsIEl0ZW1VcGRhdGU+KGlkVG9NYXBLZXlGbik7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpZFRvTWFwS2V5RGVmYXVsdDxJRD4oaWQ6IElEKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaWQgKyAnJztcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZFRvTWFwS2V5Rm4/OiAoaWQ6IElEKSA9PiBzdHJpbmcgfCBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5pZFRvTWFwS2V5Rm4gPSBpZFRvTWFwS2V5Rm4gPz8gRW50aXR5U2V0UGF0Y2guaWRUb01hcEtleURlZmF1bHQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgdXBkYXRlKHVwZGF0ZU9uZTogSXRlbVVwZGF0ZSk6IHRoaXMge1xuICAgIHRoaXMudXBkYXRlT25lcy5wdXNoKHVwZGF0ZU9uZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWxsKHVwZGF0ZU9uZTogSXRlbVVwZGF0ZVtdKTogdGhpcyB7XG4gICAgdGhpcy51cGRhdGVPbmVzLnB1c2goLi4udXBkYXRlT25lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVCeUlkKGlkOiBJRCwgdXBkYXRlT25lOiBJdGVtVXBkYXRlKTogdGhpcyB7XG4gICAgdGhpcy51cGRhdGVzQnlJZFt0aGlzLmlkVG9NYXBLZXlGbihpZCldID0gdXBkYXRlT25lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFsbEJ5SWQodXBkYXRlczogTWFwPElELCBJdGVtVXBkYXRlPik6IHRoaXMge1xuICAgIHVwZGF0ZXMuZm9yRWFjaCgodiwgaykgPT4gdGhpcy51cGRhdGVCeUlkKGssIHYpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnQodXBkYXRlT25lOiBJdGVtVXBkYXRlKTogdGhpcyB7XG4gICAgdGhpcy51cHNlcnRPbmVzLnB1c2godXBkYXRlT25lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnRBbGwodXBkYXRlT25lOiBJdGVtVXBkYXRlW10pOiB0aGlzIHtcbiAgICB0aGlzLnVwc2VydE9uZXMucHVzaCguLi51cGRhdGVPbmUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHVwc2VydEJ5SWQoaWQ6IElELCB1cGRhdGVPbmU6IEl0ZW1VcGRhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnVwc2VydHNCeUlkW3RoaXMuaWRUb01hcEtleUZuKGlkKV0gPSB1cGRhdGVPbmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdXBzZXJ0QWxsQnlJZCh1cHNlcnRzOiBNYXA8SUQsIEl0ZW1VcGRhdGU+KTogdGhpcyB7XG4gICAgdXBzZXJ0cy5mb3JFYWNoKCh2LCBrKSA9PiB0aGlzLnVwc2VydEJ5SWQoaywgdikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUJ5SWQoLi4uaWRBcmdzOiBJRFtdKTogdGhpcyB7XG4gICAgaWRBcmdzLmZvckVhY2goaWQgPT4gdGhpcy51cHNlcnRCeUlkKGlkLCBudWxsKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQnlJZHMoaWRzOiBJRFtdKTogdGhpcyB7XG4gICAgaWRzLmZvckVhY2goaWQgPT4gdGhpcy51cHNlcnRCeUlkKGlkLCBudWxsKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsT3RoZXIoKTogdGhpcyB7XG4gICAgdGhpcy5kZWxldGVPdGhlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsKCk6IHRoaXMge1xuICAgIHRoaXMudXBzZXJ0T25lcyA9IFtdO1xuICAgIHRoaXMudXBzZXJ0c0J5SWQgPSB7fTtcbiAgICB0aGlzLnVwZGF0ZU9uZXMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZXNCeUlkID0ge307XG4gICAgdGhpcy5kZWxldGVBbGxPdGhlcigpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxufVxuXG5cblxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNldC1wYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2VudGl0eS1zZXQtcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFdBQVcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUdqRCxNQUFNLE9BQU8sY0FBYztJQXNDekI7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0UsWUFBMEM7UUFuQ3BDLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUN0QyxnQkFBVyxHQUF3QixFQUFFLENBQUM7UUFDdEMsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFrQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN2RSxDQUFDO0lBaENEOzs7O2dGQUk0RTtJQUVyRSxNQUFNLENBQUMsS0FBSyxDQUNqQixZQUEwQztRQUUxQyxPQUFPLElBQUksY0FBYyxDQUFpQixZQUFZLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFLLEVBQU07UUFDekMsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7WUFDMUIsT0FBTyxFQUFFLENBQUM7U0FDWDthQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7YUFBTTtZQUNMLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFjRDs7OztnRkFJNEU7SUFFckUsY0FBYztRQUNuQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sV0FBVyxDQUFDLEtBQUss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RUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SnNvbk1hcCwgSnNvbk1hcFV0aWx9IGZyb20gJy4uL2pzb24tbWFwJztcblxuXG5leHBvcnQgY2xhc3MgRW50aXR5U2V0UGF0Y2g8SUQsIEl0ZW1VcGRhdGU+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGlkVG9NYXBLZXlGbjogKGlkOiBJRCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuXG4gIHByaXZhdGUgdXBzZXJ0c0J5SWQ6IEpzb25NYXA8SXRlbVVwZGF0ZT4gPSB7fTtcbiAgcHJpdmF0ZSB1cGRhdGVzQnlJZDogSnNvbk1hcDxJdGVtVXBkYXRlPiA9IHt9O1xuICBwcml2YXRlIHVwc2VydE9uZXM6IEl0ZW1VcGRhdGVbXSA9IFtdO1xuICBwcml2YXRlIHVwZGF0ZU9uZXM6IEl0ZW1VcGRhdGVbXSA9IFtdO1xuICBwcml2YXRlIGRlbGV0ZU90aGVyPzogYm9vbGVhbjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogU3RhdGljIEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhdGljIHN0YXJ0PElELCBJdGVtVXBkYXRlPihcbiAgICBpZFRvTWFwS2V5Rm4/OiAoaWQ6IElEKSA9PiBzdHJpbmcgfCBudW1iZXJcbiAgKTogRW50aXR5U2V0UGF0Y2g8SUQsIEl0ZW1VcGRhdGU+IHtcbiAgICByZXR1cm4gbmV3IEVudGl0eVNldFBhdGNoPElELCBJdGVtVXBkYXRlPihpZFRvTWFwS2V5Rm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaWRUb01hcEtleURlZmF1bHQ8SUQ+KGlkOiBJRCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGlkICsgJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaWRUb01hcEtleUZuPzogKGlkOiBJRCkgPT4gc3RyaW5nIHwgbnVtYmVyXG4gICkge1xuICAgIHRoaXMuaWRUb01hcEtleUZuID0gaWRUb01hcEtleUZuID8/IEVudGl0eVNldFBhdGNoLmlkVG9NYXBLZXlEZWZhdWx0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldFVwc2VydHNCeUlkKCk6IE1hcDxJRCwgSXRlbVVwZGF0ZT4ge1xuICAgIHJldHVybiBKc29uTWFwVXRpbC50b01hcCh0aGlzLnVwc2VydHNCeUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGRhdGVzQnlJZCgpOiBNYXA8SUQsIEl0ZW1VcGRhdGU+IHtcbiAgICByZXR1cm4gSnNvbk1hcFV0aWwudG9NYXAodGhpcy51cGRhdGVzQnlJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXBzZXJ0T25lcygpOiBJdGVtVXBkYXRlW10ge1xuICAgIHJldHVybiBbLi4udGhpcy51cHNlcnRPbmVzXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGRhdGVPbmVzKCk6IEl0ZW1VcGRhdGVbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnVwZGF0ZU9uZXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGlkcyB3aGljaCBzaG91bGQgYmUgZGVsZXRlZC5cbiAgICogQWxzbyBjb25zaWRlciBpc0RlbGV0ZU90aGVyLCB3aGljaCBtZWFuc1xuICAgKiBldmVyeXRoaW5nIGdldHMgZGVsZXRlZC5cbiAgICovXG4gIHB1YmxpYyBjb2xsZWN0RGVsZXRpb25zKCk6IElEW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuZ2V0VXBzZXJ0c0J5SWQoKS5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtpZCwgdXBkYXRlXSkgPT4gIXVwZGF0ZSlcbiAgICAgICAgLm1hcCgoW2lkLCB1cGRhdGVdKSA9PiBpZCksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuZ2V0VXBkYXRlc0J5SWQoKS5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtpZCwgdXBkYXRlXSkgPT4gIXVwZGF0ZSlcbiAgICAgICAgLm1hcCgoW2lkLCB1cGRhdGVdKSA9PiBpZCksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGVudGl0aWVzIHdoaWNoIGFyZSBub3RcbiAgICogZXhwbGljaXRseSBkZWZpbmVkIGluIHRoaXMgdXBkYXRlLlxuICAgKiBcIlJlcGxhY2Ugd2l0aFwiIHNlbWFudGljcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNEZWxldGVPdGhlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVPdGhlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0cyBhbGwgdXBzZXJ0cy4gKFVwZGF0ZXMgYXJlIGlnbm9yZWQpXG4gICAqL1xuICBwdWJsaWMgY29sbGVjdFVwc2VydHMoKTogSXRlbVVwZGF0ZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLmdldFVwc2VydHNCeUlkKCkuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChbaWQsIHVwZGF0ZV0pID0+ICEhdXBkYXRlKVxuICAgICAgICAubWFwKChbaWQsIHVwZGF0ZV0pID0+IHVwZGF0ZSksXG4gICAgICAuLi50aGlzLnVwc2VydE9uZXNcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3RzIGFsbCB1cGRhdGVzLiAoVXBzZXJ0cyBhcmUgaWdub3JlZClcbiAgICovXG4gIHB1YmxpYyBjb2xsZWN0VXBkYXRlcygpOiBJdGVtVXBkYXRlW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuZ2V0VXBkYXRlc0J5SWQoKS5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtpZCwgdXBkYXRlXSkgPT4gISF1cGRhdGUpXG4gICAgICAgIC5tYXAoKFtpZCwgdXBkYXRlXSkgPT4gdXBkYXRlKSxcbiAgICAgIC4uLnRoaXMudXBkYXRlT25lc1xuICAgIF07XG4gIH1cblxuICBwdWJsaWMgY29sbGVjdFVwZGF0ZXNBbmRVcHNlcnRzKCk6IEl0ZW1VcGRhdGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuY29sbGVjdFVwc2VydHMoKSxcbiAgICAgIC4uLnRoaXMuY29sbGVjdFVwZGF0ZXMoKVxuICAgIF07XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQnVpbGRlciBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgdXBkYXRlKHVwZGF0ZU9uZTogSXRlbVVwZGF0ZSk6IHRoaXMge1xuICAgIHRoaXMudXBkYXRlT25lcy5wdXNoKHVwZGF0ZU9uZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWxsKHVwZGF0ZU9uZTogSXRlbVVwZGF0ZVtdKTogdGhpcyB7XG4gICAgdGhpcy51cGRhdGVPbmVzLnB1c2goLi4udXBkYXRlT25lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVCeUlkKGlkOiBJRCwgdXBkYXRlT25lOiBJdGVtVXBkYXRlKTogdGhpcyB7XG4gICAgdGhpcy51cGRhdGVzQnlJZFt0aGlzLmlkVG9NYXBLZXlGbihpZCldID0gdXBkYXRlT25lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFsbEJ5SWQodXBkYXRlczogTWFwPElELCBJdGVtVXBkYXRlPik6IHRoaXMge1xuICAgIHVwZGF0ZXMuZm9yRWFjaCgodiwgaykgPT4gdGhpcy51cGRhdGVCeUlkKGssIHYpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnQodXBkYXRlT25lOiBJdGVtVXBkYXRlKTogdGhpcyB7XG4gICAgdGhpcy51cHNlcnRPbmVzLnB1c2godXBkYXRlT25lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnRBbGwodXBkYXRlT25lOiBJdGVtVXBkYXRlW10pOiB0aGlzIHtcbiAgICB0aGlzLnVwc2VydE9uZXMucHVzaCguLi51cGRhdGVPbmUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHVwc2VydEJ5SWQoaWQ6IElELCB1cGRhdGVPbmU6IEl0ZW1VcGRhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnVwc2VydHNCeUlkW3RoaXMuaWRUb01hcEtleUZuKGlkKV0gPSB1cGRhdGVPbmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdXBzZXJ0QWxsQnlJZCh1cHNlcnRzOiBNYXA8SUQsIEl0ZW1VcGRhdGU+KTogdGhpcyB7XG4gICAgdXBzZXJ0cy5mb3JFYWNoKCh2LCBrKSA9PiB0aGlzLnVwc2VydEJ5SWQoaywgdikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUJ5SWQoLi4uaWRBcmdzOiBJRFtdKTogdGhpcyB7XG4gICAgaWRBcmdzLmZvckVhY2goaWQgPT4gdGhpcy51cHNlcnRCeUlkKGlkLCBudWxsKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQnlJZHMoaWRzOiBJRFtdKTogdGhpcyB7XG4gICAgaWRzLmZvckVhY2goaWQgPT4gdGhpcy51cHNlcnRCeUlkKGlkLCBudWxsKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsT3RoZXIoKTogdGhpcyB7XG4gICAgdGhpcy5kZWxldGVPdGhlciA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsKCk6IHRoaXMge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLmRlbGV0ZUFsbE90aGVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdGhpcyB7XG4gICAgdGhpcy51cHNlcnRPbmVzID0gW107XG4gICAgdGhpcy51cHNlcnRzQnlJZCA9IHt9O1xuICAgIHRoaXMudXBkYXRlT25lcyA9IFtdO1xuICAgIHRoaXMudXBkYXRlc0J5SWQgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG59XG5cblxuXG4iXX0=
@@ -8,11 +8,11 @@ export class JsonMapUtil {
8
8
  }, jsonMap);
9
9
  return jsonMap;
10
10
  }
11
- static toMap(jsonMap) {
11
+ static toMap(jsonMap, toIdFn = key => key) {
12
12
  const map = new Map();
13
13
  Object.keys(jsonMap)
14
- .forEach(k => map.set(k, jsonMap[k]));
14
+ .forEach(k => map.set(toIdFn(k), jsonMap[k]));
15
15
  return map;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vanNvbi1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFdBQVc7SUFFZixNQUFNLENBQUMsU0FBUyxDQUFJLEtBQThCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2YsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDWixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBSSxPQUFtQjtRQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNqQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSnNvbk1hcDxUPiA9IHtcbiAgW25hbWUgaW4gc3RyaW5nIHwgbnVtYmVyXTogVDtcbn07XG5cbmV4cG9ydCBjbGFzcyBKc29uTWFwVXRpbCB7XG5cbiAgcHVibGljIHN0YXRpYyB0b0pzb25NYXA8VD4oZXNNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIFQ+KTogSnNvbk1hcDxUPiB7XG4gICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20oZXNNYXAuZW50cmllcygpKTtcbiAgICBjb25zdCBqc29uTWFwID0gPEpzb25NYXA8VD4+e307XG4gICAgZW50cmllcy5yZWR1Y2UoKG8sIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgb1trZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4gbztcbiAgICB9LCBqc29uTWFwKTtcbiAgICByZXR1cm4ganNvbk1hcDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9NYXA8VD4oanNvbk1hcDogSnNvbk1hcDxUPik6IE1hcDxzdHJpbmcgfCBudW1iZXIsIFQ+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciwgVD4oKTtcbiAgICBPYmplY3Qua2V5cyhqc29uTWFwKVxuICAgICAgLmZvckVhY2goayA9PiBtYXAuc2V0KGssIGpzb25NYXBba10pKTtcbiAgICByZXR1cm4gbWFwO1xuICB9XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vanNvbi1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFdBQVc7SUFFZixNQUFNLENBQUMsU0FBUyxDQUFJLEtBQThCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2YsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDWixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FDakIsT0FBbUIsRUFDbkIsU0FBeUMsR0FBRyxDQUFDLEVBQUUsQ0FBTSxHQUFHO1FBRXhELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFTLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDakIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEpzb25NYXA8VD4gPSB7XG4gIFtuYW1lIGluIHN0cmluZyB8IG51bWJlcl06IFQ7XG59O1xuXG5leHBvcnQgY2xhc3MgSnNvbk1hcFV0aWwge1xuXG4gIHB1YmxpYyBzdGF0aWMgdG9Kc29uTWFwPFQ+KGVzTWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBUPik6IEpzb25NYXA8VD4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKGVzTWFwLmVudHJpZXMoKSk7XG4gICAgY29uc3QganNvbk1hcCA9IDxKc29uTWFwPFQ+Pnt9O1xuICAgIGVudHJpZXMucmVkdWNlKChvLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIG9ba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIG87XG4gICAgfSwganNvbk1hcCk7XG4gICAgcmV0dXJuIGpzb25NYXA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvTWFwPFQsIElEID0gc3RyaW5nIHwgbnVtYmVyPihcbiAgICBqc29uTWFwOiBKc29uTWFwPFQ+LFxuICAgIHRvSWRGbjogKChrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gSUQpID0ga2V5ID0+IDxhbnk+a2V5XG4gICk6IE1hcDxJRCwgVD4ge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8SUQsIFQ+KCk7XG4gICAgT2JqZWN0LmtleXMoanNvbk1hcClcbiAgICAgIC5mb3JFYWNoKGsgPT4gbWFwLnNldCh0b0lkRm4oayksIGpzb25NYXBba10pKTtcbiAgICByZXR1cm4gbWFwO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { MatInput } from '@angular/material/input';
1
+ import { Directive, HostBinding, Input } from '@angular/core';
3
2
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@angular/material/form-field";
@@ -9,9 +8,9 @@ import * as i1 from "@angular/material/form-field";
9
8
  *
10
9
  * Example Usage:
11
10
  *
12
- * <mat-form-field elderFormFieldLabel>
13
- * <input matInput placeholder="Readonly Input" readonly="true" value="Some Value">
14
- * </mat-form-field>
11
+ * <mat-form-field elderFormFieldLabel>
12
+ * <input matInput placeholder="Readonly Input" readonly="true" value="Some Value">
13
+ * </mat-form-field>
15
14
  *
16
15
  */
17
16
  export class ElderFormFieldLabelDirective {
@@ -23,6 +22,20 @@ export class ElderFormFieldLabelDirective {
23
22
  constructor(_matFormField) {
24
23
  this._matFormField = _matFormField;
25
24
  }
25
+ /***************************************************************************
26
+ * *
27
+ * Host Bindings *
28
+ * *
29
+ **************************************************************************/
30
+ get getFormFieldLabelStyle() {
31
+ return this.isLabelMode();
32
+ }
33
+ /***************************************************************************
34
+ * *
35
+ * Properties *
36
+ * *
37
+ **************************************************************************/
38
+ // eslint-disable-next-line @angular-eslint/no-input-rename
26
39
  set enabled(enabled) {
27
40
  this._enabled = coerceBooleanProperty(enabled);
28
41
  }
@@ -34,12 +47,12 @@ export class ElderFormFieldLabelDirective {
34
47
  * Public API *
35
48
  * *
36
49
  **************************************************************************/
37
- isReadonlyInput() {
50
+ isControlReadonly() {
38
51
  const ctrl = this._matFormField._control;
39
- if (ctrl instanceof MatInput) {
40
- return ctrl.readonly;
41
- }
42
- return false;
52
+ return ctrl?.readonly;
53
+ }
54
+ isLabelMode() {
55
+ return this.enabled && this.isControlReadonly();
43
56
  }
44
57
  /***************************************************************************
45
58
  * *
@@ -47,23 +60,23 @@ export class ElderFormFieldLabelDirective {
47
60
  * *
48
61
  **************************************************************************/
49
62
  ngAfterViewInit() {
50
- if (this.isReadonlyInput()) {
63
+ if (this.isLabelMode()) {
51
64
  this._matFormField.floatLabel = 'always';
52
65
  }
53
66
  }
54
67
  }
55
68
  ElderFormFieldLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive });
56
- ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "enabled && isReadonlyInput()" } }, ngImport: i0 });
69
+ ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "this.getFormFieldLabelStyle" } }, ngImport: i0 });
57
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ElderFormFieldLabelDirective, decorators: [{
58
71
  type: Directive,
59
72
  args: [{
60
- selector: 'mat-form-field[elderFormFieldLabel]',
61
- host: {
62
- '[class.elder-form-field-label]': 'enabled && isReadonlyInput()'
63
- }
73
+ selector: 'mat-form-field[elderFormFieldLabel]'
64
74
  }]
65
- }], ctorParameters: function () { return [{ type: i1.MatFormField }]; }, propDecorators: { enabled: [{
75
+ }], ctorParameters: function () { return [{ type: i1.MatFormField }]; }, propDecorators: { getFormFieldLabelStyle: [{
76
+ type: HostBinding,
77
+ args: ['class.elder-form-field-label']
78
+ }], enabled: [{
66
79
  type: Input,
67
80
  args: ['elderFormFieldLabel']
68
81
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZm9ybS1maWVsZC1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItZm9ybS1maWVsZC1sYWJlbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTVEOzs7Ozs7Ozs7O0dBVUc7QUFPSCxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2Qzs7OztnRkFJNEU7SUFFNUUsWUFBb0IsYUFBMkI7UUFBM0Isa0JBQWEsR0FBYixhQUFhLENBQWM7SUFBRyxDQUFDO0lBZm5ELElBQ1csT0FBTyxDQUFDLE9BQWdCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQVVEOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3pDLElBQUksSUFBSSxZQUFZLFFBQVEsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsZUFBZTtRQUNwQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7U0FDMUM7SUFDSCxDQUFDOzt5SEFuRFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFOeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUNBQXFDO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0osZ0NBQWdDLEVBQUUsOEJBQThCO3FCQUNqRTtpQkFDRjttR0FZWSxPQUFPO3NCQURqQixLQUFLO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqXG4gKiBPbmNlIGRlY2xhcmVkIG9uIGEgTWF0Rm9ybUZpZWxkIHRhZyB3aGljaCBpbmNsdWRlcyBhIHJlYWRvbmx5IGlucHV0LCB0aGUgY3NzIGNsYXNzICdlbGRlci1mb3JtLWZpZWxkLWxhYmVsJyB3aWxsIGJlIGFkZGVkXG4gKiBhbmQgY3VzdG9tIHN0eWxpbmcgd2lsbCBiZSBhcHBsaWVkLlxuICpcbiAqIEV4YW1wbGUgVXNhZ2U6XG4gKlxuICpcdDxtYXQtZm9ybS1maWVsZCBlbGRlckZvcm1GaWVsZExhYmVsPlxuICpcdFx0PGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiUmVhZG9ubHkgSW5wdXRcIiByZWFkb25seT1cInRydWVcIiB2YWx1ZT1cIlNvbWUgVmFsdWVcIj5cbiAqXHQ8L21hdC1mb3JtLWZpZWxkPlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWF0LWZvcm0tZmllbGRbZWxkZXJGb3JtRmllbGRMYWJlbF0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5lbGRlci1mb3JtLWZpZWxkLWxhYmVsXSc6ICdlbmFibGVkICYmIGlzUmVhZG9ubHlJbnB1dCgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZWxkZXJGb3JtRmllbGRMYWJlbCcpXG4gIHB1YmxpYyBzZXQgZW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShlbmFibGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21hdEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkKSB7fVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBpc1JlYWRvbmx5SW5wdXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuX21hdEZvcm1GaWVsZC5fY29udHJvbDtcbiAgICBpZiAoY3RybCBpbnN0YW5jZW9mIE1hdElucHV0KSB7XG4gICAgICByZXR1cm4gY3RybC5yZWFkb25seTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5SW5wdXQoKSkge1xuICAgICAgdGhpcy5fbWF0Rm9ybUZpZWxkLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICB9XG4gIH1cblxufVxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZm9ybS1maWVsZC1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItZm9ybS1maWVsZC1sYWJlbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUduRixPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTFFOzs7Ozs7Ozs7O0dBVUc7QUFJSCxNQUFNLE9BQU8sNEJBQTRCO0lBVXZDOzs7O2dGQUk0RTtJQUU1RSxZQUFvQixhQUEyQjtRQUEzQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztJQUMvQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQWlELHNCQUFzQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLDJEQUEyRDtJQUMzRCxJQUNXLE9BQU8sQ0FBQyxPQUFxQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsaUJBQWlCO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3pDLE9BQWEsSUFBSyxFQUFFLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztTQUMxQztJQUNILENBQUM7O3lIQXRFVSw0QkFBNEI7NkdBQTVCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQ0FBcUM7aUJBQ2hEO21HQTBCa0Qsc0JBQXNCO3NCQUF0RSxXQUFXO3VCQUFDLDhCQUE4QjtnQkFZaEMsT0FBTztzQkFEakIsS0FBSzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqXG4gKiBPbmNlIGRlY2xhcmVkIG9uIGEgTWF0Rm9ybUZpZWxkIHRhZyB3aGljaCBpbmNsdWRlcyBhIHJlYWRvbmx5IGlucHV0LCB0aGUgY3NzIGNsYXNzICdlbGRlci1mb3JtLWZpZWxkLWxhYmVsJyB3aWxsIGJlIGFkZGVkXG4gKiBhbmQgY3VzdG9tIHN0eWxpbmcgd2lsbCBiZSBhcHBsaWVkLlxuICpcbiAqIEV4YW1wbGUgVXNhZ2U6XG4gKlxuICogIDxtYXQtZm9ybS1maWVsZCBlbGRlckZvcm1GaWVsZExhYmVsPlxuICogICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiUmVhZG9ubHkgSW5wdXRcIiByZWFkb25seT1cInRydWVcIiB2YWx1ZT1cIlNvbWUgVmFsdWVcIj5cbiAqICA8L21hdC1mb3JtLWZpZWxkPlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWF0LWZvcm0tZmllbGRbZWxkZXJGb3JtRmllbGRMYWJlbF0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21hdEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSG9zdCBCaW5kaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVsZGVyLWZvcm0tZmllbGQtbGFiZWwnKSBnZXQgZ2V0Rm9ybUZpZWxkTGFiZWxTdHlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xhYmVsTW9kZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdlbGRlckZvcm1GaWVsZExhYmVsJylcbiAgcHVibGljIHNldCBlbmFibGVkKGVuYWJsZWQ6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2VuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZW5hYmxlZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgaXNDb250cm9sUmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuX21hdEZvcm1GaWVsZC5fY29udHJvbDtcbiAgICByZXR1cm4gKDxhbnk+Y3RybCk/LnJlYWRvbmx5O1xuICB9XG5cbiAgcHVibGljIGlzTGFiZWxNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQgJiYgdGhpcy5pc0NvbnRyb2xSZWFkb25seSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xhYmVsTW9kZSgpKSB7XG4gICAgICB0aGlzLl9tYXRGb3JtRmllbGQuZmxvYXRMYWJlbCA9ICdhbHdheXMnO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -37,7 +37,7 @@ import { FlexLayoutModule, FlexModule } from '@angular/flex-layout';
37
37
  import * as i5 from '@angular/material/button';
38
38
  import { MatButtonModule } from '@angular/material/button';
39
39
  import * as i5$1 from '@angular/material/input';
40
- import { MatInputModule, MatInput } from '@angular/material/input';
40
+ import { MatInputModule } from '@angular/material/input';
41
41
  import * as i1$5 from '@angular/material/autocomplete';
42
42
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
43
43
  import * as i6 from '@angular/material/core';
@@ -2559,6 +2559,24 @@ class Pageable {
2559
2559
  }
2560
2560
  }
2561
2561
 
2562
+ class JsonMapUtil {
2563
+ static toJsonMap(esMap) {
2564
+ const entries = Array.from(esMap.entries());
2565
+ const jsonMap = {};
2566
+ entries.reduce((o, [key, value]) => {
2567
+ o[key] = value;
2568
+ return o;
2569
+ }, jsonMap);
2570
+ return jsonMap;
2571
+ }
2572
+ static toMap(jsonMap, toIdFn = key => key) {
2573
+ const map = new Map();
2574
+ Object.keys(jsonMap)
2575
+ .forEach(k => map.set(toIdFn(k), jsonMap[k]));
2576
+ return map;
2577
+ }
2578
+ }
2579
+
2562
2580
  class EntitySetPatch {
2563
2581
  /***************************************************************************
2564
2582
  * *
@@ -2593,7 +2611,75 @@ class EntitySetPatch {
2593
2611
  }
2594
2612
  /***************************************************************************
2595
2613
  * *
2596
- * Public API *
2614
+ * Query *
2615
+ * *
2616
+ **************************************************************************/
2617
+ getUpsertsById() {
2618
+ return JsonMapUtil.toMap(this.upsertsById);
2619
+ }
2620
+ getUpdatesById() {
2621
+ return JsonMapUtil.toMap(this.updatesById);
2622
+ }
2623
+ getUpsertOnes() {
2624
+ return [...this.upsertOnes];
2625
+ }
2626
+ getUpdateOnes() {
2627
+ return [...this.updateOnes];
2628
+ }
2629
+ /**
2630
+ * Gets all ids which should be deleted.
2631
+ * Also consider isDeleteOther, which means
2632
+ * everything gets deleted.
2633
+ */
2634
+ collectDeletions() {
2635
+ return [
2636
+ ...Array.from(this.getUpsertsById().entries())
2637
+ .filter(([id, update]) => !update)
2638
+ .map(([id, update]) => id),
2639
+ ...Array.from(this.getUpdatesById().entries())
2640
+ .filter(([id, update]) => !update)
2641
+ .map(([id, update]) => id),
2642
+ ];
2643
+ }
2644
+ /**
2645
+ * Delete all entities which are not
2646
+ * explicitly defined in this update.
2647
+ * "Replace with" semantics.
2648
+ */
2649
+ get isDeleteOther() {
2650
+ return this.deleteOther;
2651
+ }
2652
+ /**
2653
+ * Collects all upserts. (Updates are ignored)
2654
+ */
2655
+ collectUpserts() {
2656
+ return [
2657
+ ...Array.from(this.getUpsertsById().entries())
2658
+ .filter(([id, update]) => !!update)
2659
+ .map(([id, update]) => update),
2660
+ ...this.upsertOnes
2661
+ ];
2662
+ }
2663
+ /**
2664
+ * Collects all updates. (Upserts are ignored)
2665
+ */
2666
+ collectUpdates() {
2667
+ return [
2668
+ ...Array.from(this.getUpdatesById().entries())
2669
+ .filter(([id, update]) => !!update)
2670
+ .map(([id, update]) => update),
2671
+ ...this.updateOnes
2672
+ ];
2673
+ }
2674
+ collectUpdatesAndUpserts() {
2675
+ return [
2676
+ ...this.collectUpserts(),
2677
+ ...this.collectUpdates()
2678
+ ];
2679
+ }
2680
+ /***************************************************************************
2681
+ * *
2682
+ * Builder API *
2597
2683
  * *
2598
2684
  **************************************************************************/
2599
2685
  update(updateOne) {
@@ -2641,11 +2727,15 @@ class EntitySetPatch {
2641
2727
  return this;
2642
2728
  }
2643
2729
  deleteAll() {
2730
+ this.clear();
2731
+ this.deleteAllOther();
2732
+ return this;
2733
+ }
2734
+ clear() {
2644
2735
  this.upsertOnes = [];
2645
2736
  this.upsertsById = {};
2646
2737
  this.updateOnes = [];
2647
2738
  this.updatesById = {};
2648
- this.deleteAllOther();
2649
2739
  return this;
2650
2740
  }
2651
2741
  }
@@ -7998,24 +8088,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
7998
8088
  }]
7999
8089
  }], ctorParameters: function () { return [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }]; } });
8000
8090
 
8001
- class JsonMapUtil {
8002
- static toJsonMap(esMap) {
8003
- const entries = Array.from(esMap.entries());
8004
- const jsonMap = {};
8005
- entries.reduce((o, [key, value]) => {
8006
- o[key] = value;
8007
- return o;
8008
- }, jsonMap);
8009
- return jsonMap;
8010
- }
8011
- static toMap(jsonMap) {
8012
- const map = new Map();
8013
- Object.keys(jsonMap)
8014
- .forEach(k => map.set(k, jsonMap[k]));
8015
- return map;
8016
- }
8017
- }
8018
-
8019
8091
  class Sets {
8020
8092
  /**
8021
8093
  * Compares the content of two sets for equality in O(n).
@@ -13674,9 +13746,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
13674
13746
  *
13675
13747
  * Example Usage:
13676
13748
  *
13677
- * <mat-form-field elderFormFieldLabel>
13678
- * <input matInput placeholder="Readonly Input" readonly="true" value="Some Value">
13679
- * </mat-form-field>
13749
+ * <mat-form-field elderFormFieldLabel>
13750
+ * <input matInput placeholder="Readonly Input" readonly="true" value="Some Value">
13751
+ * </mat-form-field>
13680
13752
  *
13681
13753
  */
13682
13754
  class ElderFormFieldLabelDirective {
@@ -13688,6 +13760,20 @@ class ElderFormFieldLabelDirective {
13688
13760
  constructor(_matFormField) {
13689
13761
  this._matFormField = _matFormField;
13690
13762
  }
13763
+ /***************************************************************************
13764
+ * *
13765
+ * Host Bindings *
13766
+ * *
13767
+ **************************************************************************/
13768
+ get getFormFieldLabelStyle() {
13769
+ return this.isLabelMode();
13770
+ }
13771
+ /***************************************************************************
13772
+ * *
13773
+ * Properties *
13774
+ * *
13775
+ **************************************************************************/
13776
+ // eslint-disable-next-line @angular-eslint/no-input-rename
13691
13777
  set enabled(enabled) {
13692
13778
  this._enabled = coerceBooleanProperty(enabled);
13693
13779
  }
@@ -13699,12 +13785,12 @@ class ElderFormFieldLabelDirective {
13699
13785
  * Public API *
13700
13786
  * *
13701
13787
  **************************************************************************/
13702
- isReadonlyInput() {
13788
+ isControlReadonly() {
13703
13789
  const ctrl = this._matFormField._control;
13704
- if (ctrl instanceof MatInput) {
13705
- return ctrl.readonly;
13706
- }
13707
- return false;
13790
+ return ctrl === null || ctrl === void 0 ? void 0 : ctrl.readonly;
13791
+ }
13792
+ isLabelMode() {
13793
+ return this.enabled && this.isControlReadonly();
13708
13794
  }
13709
13795
  /***************************************************************************
13710
13796
  * *
@@ -13712,22 +13798,22 @@ class ElderFormFieldLabelDirective {
13712
13798
  * *
13713
13799
  **************************************************************************/
13714
13800
  ngAfterViewInit() {
13715
- if (this.isReadonlyInput()) {
13801
+ if (this.isLabelMode()) {
13716
13802
  this._matFormField.floatLabel = 'always';
13717
13803
  }
13718
13804
  }
13719
13805
  }
13720
13806
  ElderFormFieldLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i4$1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive });
13721
- ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "enabled && isReadonlyInput()" } }, ngImport: i0 });
13807
+ ElderFormFieldLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "this.getFormFieldLabelStyle" } }, ngImport: i0 });
13722
13808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ElderFormFieldLabelDirective, decorators: [{
13723
13809
  type: Directive,
13724
13810
  args: [{
13725
- selector: 'mat-form-field[elderFormFieldLabel]',
13726
- host: {
13727
- '[class.elder-form-field-label]': 'enabled && isReadonlyInput()'
13728
- }
13811
+ selector: 'mat-form-field[elderFormFieldLabel]'
13729
13812
  }]
13730
- }], ctorParameters: function () { return [{ type: i4$1.MatFormField }]; }, propDecorators: { enabled: [{
13813
+ }], ctorParameters: function () { return [{ type: i4$1.MatFormField }]; }, propDecorators: { getFormFieldLabelStyle: [{
13814
+ type: HostBinding,
13815
+ args: ['class.elder-form-field-label']
13816
+ }], enabled: [{
13731
13817
  type: Input,
13732
13818
  args: ['elderFormFieldLabel']
13733
13819
  }] } });