chrv-components 1.3.4 → 1.3.6

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.
Binary file
@@ -50,6 +50,7 @@ export class ChrFormComponent {
50
50
  for (const control of section.controls) {
51
51
  const formControl = this.form.get(control.name);
52
52
  formControl.valueChanges.subscribe((e) => {
53
+ //console.log('EMITTING "' + control.name + '": ' + e);
53
54
  this.formChange.emit({ [control.name]: e });
54
55
  });
55
56
  }
@@ -59,6 +60,7 @@ export class ChrFormComponent {
59
60
  for (const section of this.sections) {
60
61
  for (const control of section.controls) {
61
62
  this.form.get(control.name).valueChanges.subscribe((value) => {
63
+ //console.log('SETTING "' + control.name + '": ' + value);
62
64
  if (this.model) {
63
65
  this.model[control.name] = value;
64
66
  }
@@ -73,11 +75,19 @@ export class ChrFormComponent {
73
75
  for (const section of this.sections || []) {
74
76
  for (let control of section.controls) {
75
77
  const value = this.model ? this.model[control.name] : null;
78
+ // console.log(
79
+ // 'INITIALIZING "' +
80
+ // control.name +
81
+ // '": MODEL -> ' +
82
+ // value +
83
+ // " | CVALUE -> " +
84
+ // control.value
85
+ // );
76
86
  if (!value) {
77
87
  if (control.value)
78
88
  this.form
79
89
  .get(control.name)
80
- .setValue(this._convertValueToType(value, control.type));
90
+ .setValue(this._convertValueToType(control.value, control.type));
81
91
  else
82
92
  this.form.get(control.name).setValue(null);
83
93
  }
@@ -90,10 +100,13 @@ export class ChrFormComponent {
90
100
  }
91
101
  };
92
102
  this._convertValueToType = (value, type) => {
103
+ //console.log("VALUE: " + value, "TYPE: " + type);
93
104
  switch (type) {
94
105
  case "date":
106
+ //console.log("RES:" + this.datePipe.transform(value, "yyyy-MM-dd"));
95
107
  return this.datePipe.transform(value, "yyyy-MM-dd");
96
108
  default:
109
+ //console.log("RES: " + value);
97
110
  return value;
98
111
  }
99
112
  };
@@ -214,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
214
227
  }], formChange: [{
215
228
  type: Output
216
229
  }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBd0V6QixNQUFNLE9BQU8sZ0JBQWdCO0lBZTVCLFlBQW9CLE9BQW9CLEVBQVUsUUFBa0I7UUFBaEQsWUFB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aW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdEFmdGVyVmlld0luaXQsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSwgdHlwZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tIFwiLi9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdERhdGVQaXBlLFxuXHRDb21tb25Nb2R1bGUsXG5cdERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoRmlsdGVyIHtcblx0ZGlzcGxheTogc3RyaW5nO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHR0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sVmFsaWRhdGlvbiB7XG5cdHJ1bGU6IHN0cmluZztcblx0dmFsdWU/OiBhbnk7XG5cdGRpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2wge1xuXHRsYWJlbD86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRzcGFuPzogc3RyaW5nO1xuXHRwbGFjZWhvbGRlcj86IGFueTtcblx0d2lkdGg/OiBcImNvbFwiIHwgXCJyb3dcIjtcblx0dHlwZTpcblx0XHR8IFwidGV4dFwiXG5cdFx0fCBcInBhc3N3b3JkXCJcblx0XHR8IFwidGV4dEFyZWFcIlxuXHRcdHwgXCJudW1iZXJcIlxuXHRcdHwgXCJkYXRlXCJcblx0XHR8IFwic2VhcmNoU2VsZWN0XCJcblx0XHR8IFwic2VsZWN0XCI7XG5cdHZhbHVlPzogYW55O1xuXHRkYXRhPzogYW55W10gfCBudWxsO1xuXHRpY29uPzogc3RyaW5nO1xuXHRpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0aWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuXHRpY29uVG9vbHRpcD86IHN0cmluZztcblx0Zm4/OiBGdW5jdGlvbjtcblx0ZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcblx0dmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuXHR0aXRsZT86IHN0cmluZztcblx0Y29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImFwcC1jaHItZm9ybVwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlVXJsczogW1wiLi9jaHItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0Rm9ybXNNb2R1bGUsXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcblx0XHRNYXRJY29uTW9kdWxlLFxuXHRcdE1hdEVycm9yLFxuXHRcdENoclNlYXJjaFNlbGVjdENvbXBvbmVudCxcblx0XHREYXRlUGlwZSxcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcblx0XSxcblx0cHJvdmlkZXJzOiBbXG5cdFx0RGF0ZVBpcGUsXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcblx0XHRcdHVzZVZhbHVlOiB7IGRhdGVGb3JtYXQ6IFwic2hvcnREYXRlXCIgfSxcblx0XHR9LFxuXHRdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIENockZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcblx0QElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuXHRASW5wdXQoKSBtb2RlbD86IGFueTtcblx0QE91dHB1dCgpIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG5cdEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QE91dHB1dCgpIGZvcm1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+ID1cblx0XHRuZXcgRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4oKTtcblxuXHRwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge1xuXHRcdHRoaXMuZm9ybSA9IGJ1aWxkZXIuZ3JvdXAoe30pO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5faW5pdFZhbGlkYXRvcnMoKTtcblx0XHQvL3RoaXMuX2luaXRWYWx1ZXMoKTtcblx0XHR0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XG5cdFx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHRcdFx0dGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMuZm9ybS52YWxpZCk7XG5cdFx0XHR0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHJlcyk7XG5cdFx0fSk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5faW5pdFZhbHVlcygpO1xuXHRcdHRoaXMuX3JlZ2lzdGVySW5wdXRFbWl0dGVycygpO1xuXHRcdHRoaXMuX3JlZ2lzdGVySW5wdXRVcGRhdGVycygpO1xuXHR9XG5cblx0dmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuXHR9O1xuXG5cdHNldFZhbHVlID0gKGlucHV0OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHRpZiAoaW5wdXQpIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy5zZXRWYWx1ZSh2YWx1ZSk7XG5cdH07XG5cblx0aXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuXHRcdGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcblx0XHRyZXR1cm4gdGhpcy52YWxpZDtcblx0fTtcblxuXHRpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuXHRcdHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnJ1bGUudG9Mb3dlckNhc2UoKSA9PSBcInJlcXVpcmVkXCIpO1xuXHR9O1xuXG5cdHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcblx0fTtcblxuXHRyZXNldCA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ucmVzZXQoKTtcblx0fTtcblxuXHRwcml2YXRlIF9yZWdpc3RlcklucHV0RW1pdHRlcnMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHRjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKTtcblx0XHRcdFx0Zm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGUpID0+IHtcblx0XHRcdFx0XHR0aGlzLmZvcm1DaGFuZ2UuZW1pdCh7IFtjb250cm9sLm5hbWVdOiBlIH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dFVwZGF0ZXJzID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLnNlY3Rpb25zISkge1xuXHRcdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcblx0XHRcdFx0dGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLm1vZGVsKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udHJvbC52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgX2luaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMgfHwgW10pIHtcblx0XHRcdGZvciAobGV0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IHRoaXMubW9kZWwgPyB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gOiBudWxsO1xuXHRcdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKGNvbnRyb2wudmFsdWUpXG5cdFx0XHRcdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0XHRcdFx0LmdldChjb250cm9sLm5hbWUpIVxuXHRcdFx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5fY29udmVydFZhbHVlVG9UeXBlKHZhbHVlLCBjb250cm9sLnR5cGUpKTtcblx0XHRcdFx0XHRlbHNlIHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKSEuc2V0VmFsdWUobnVsbCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5mb3JtXG5cdFx0XHRcdFx0XHQuZ2V0KGNvbnRyb2wubmFtZSkhXG5cdFx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5fY29udmVydFZhbHVlVG9UeXBlKHZhbHVlLCBjb250cm9sLnR5cGUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIF9jb252ZXJ0VmFsdWVUb1R5cGUgPSAoXG5cdFx0dmFsdWU6IGFueSxcblx0XHR0eXBlOlxuXHRcdFx0fCBcInRleHRcIlxuXHRcdFx0fCBcInBhc3N3b3JkXCJcblx0XHRcdHwgXCJ0ZXh0QXJlYVwiXG5cdFx0XHR8IFwibnVtYmVyXCJcblx0XHRcdHwgXCJkYXRlXCJcblx0XHRcdHwgXCJzZWFyY2hTZWxlY3RcIlxuXHRcdFx0fCBcInNlbGVjdFwiXG5cdCkgPT4ge1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSBcImRhdGVcIjpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBcInl5eXktTU0tZGRcIik7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgX2luaXRWYWxpZGF0b3JzKCkge1xuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLnNlY3Rpb25zIHx8IFtdKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGlucHV0IG9mIHNlY3Rpb24uY29udHJvbHMpIHtcblx0XHRcdFx0aWYgKGlucHV0LnR5cGUgPT0gXCJzZWFyY2hTZWxlY3RcIiAmJiAhaW5wdXQuZm4pXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0XCJBbiBpbnB1dCBvZiB0eXBlICdzZWFyY2hTZWxlY3QnIG5lZWRzIGEgZGlzcGxheSBmdW5jdGlvbiAhXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxuXHRcdFx0XHRcdGlucHV0LnZhbHVlLFxuXHRcdFx0XHRcdHRoaXMuX2dldFZhbGlkYXRvcnMoaW5wdXQudmFsaWRhdGlvbnMpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKGlucHV0Lm5hbWUsIGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuXHRcdGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcblx0XHRpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcblx0XHQvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG5cdFx0Zm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG5cdFx0XHRjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pblwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInJlcXVpcmVkXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZSBjaGFtcHMgZXN0IHJlcXVpcyAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZW1haWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWlubGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4bGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwidHlwZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImRlY2ltYWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4ZGF0ZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBDZXR0ZSBkYXRlIGVzdCB0cm9wIGdyYW5kZSAhIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gobWF4RGF0ZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB2YWxpZGF0b3JzO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgbWluLWgtNS82XCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgPGRpdj5cbiAgICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICAgIDxoMiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQteGwgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLTYgc206Z3JpZC1jb2xzLTJcIj5cbiAgICAgICAgICBAZm9yIChjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGNvbnRyb2w7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiIFtuZ0NsYXNzXT1cImNvbnRyb2wud2lkdGggPT0gJ3JvdycgPyAnc206Y29sLXNwYW4tMicgOiAnY29sLXNwYW4tMSdcIj5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC5sYWJlbCkge1xuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sIGJsb2NrIG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPnt7XG4gICAgICAgICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS0gSGVyZSB3ZSB3aWxsICpuZ0lmIGVhY2ggdHlwZSBvZiBpbnB1dCBjYXVzZSBpdCdzIHRoZSBjbGVhbmVzdCB3YXkgSSBjYW4gaW1hZ2luZS0tPlxuICAgICAgICAgICAgPCEtLVRFWFQtLT5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0Jykge1xuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFsodmFsdWUpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS1QQVNTV09SRC0tPlxuICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cInt7IGNvbnRyb2wucGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tVEVYVCBBUkVBLS0+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dEFyZWEnKSB7XG4gICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdiZy1yZWQtMTAwIGRhcms6YmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFsodmFsdWUpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTExIGJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLU5VTUJFUi0tPlxuICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0xMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbnRyb2wucGxhY2Vob2xkZXIgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS1EQVRFLS0+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0yMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbnRyb2wucGxhY2Vob2xkZXIgfX1cIiBbKHZhbHVlKV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tU2VhcmNoU2VsZWN0LS0+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgICAgICAgPGFwcC1jaHItc2VhcmNoLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ1smX2lucHV0XTohYmctcmVkLTEwMCBkYXJrOlsmX2lucHV0XTohYmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnRyb2wucGxhY2Vob2xkZXJcIiBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCI+XG4gICAgICAgICAgICA8L2FwcC1jaHItc2VhcmNoLXNlbGVjdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC5pY29uKSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTBcIj5cbiAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wuc3BhbiAmJiAoIWZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMgfHwgIWZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTAgdGV4dC14cyB0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMFwiPnt7IGNvbnRyb2wuc3BhblxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGluZGV4ICE9IChzZWN0aW9uc3x8W10pLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInB5LTRcIj5cbiAgICAgICAgICA8aHIgY2xhc3M9XCJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9maWVsZHNldD5cbiAgPC9mb3JtPlxuPC9kaXY+Il19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBd0V6QixNQUFNLE9BQU8sZ0JBQWdCO0lBZTVCLFlBQW9CLE9BQW9CLEVBQVUsUUFBa0I7UUFBaEQsWUFB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QUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLCB0eXBlIH0gZnJvbSBcIi4vY2hyLXZhbGlkYXRvcnMvdHlwZS12YWxpZGF0b3JcIjtcbmltcG9ydCB7IFZhbGlkYXRvckZuLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcblx0Rm9ybUJ1aWxkZXIsXG5cdEZvcm1Hcm91cCxcblx0VmFsaWRhdG9ycyxcblx0Rm9ybUNvbnRyb2wsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZGVjaW1hbCB9IGZyb20gXCIuL2Noci12YWxpZGF0b3JzL2RlY2ltYWwtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBtYXhEYXRlIH0gZnJvbSBcIi4vY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBNYXRFcnJvciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgQ2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2Noci1zZWFyY2gtc2VsZWN0L2Noci1zZWFyY2gtc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtcblx0RGF0ZVBpcGUsXG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuXHRkaXNwbGF5OiBzdHJpbmc7XG5cdGNhbGxiYWNrPzogRnVuY3Rpb247XG5cdHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcblx0cnVsZTogc3RyaW5nO1xuXHR2YWx1ZT86IGFueTtcblx0ZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdHNwYW4/OiBzdHJpbmc7XG5cdHBsYWNlaG9sZGVyPzogYW55O1xuXHR3aWR0aD86IFwiY29sXCIgfCBcInJvd1wiO1xuXHR0eXBlOlxuXHRcdHwgXCJ0ZXh0XCJcblx0XHR8IFwicGFzc3dvcmRcIlxuXHRcdHwgXCJ0ZXh0QXJlYVwiXG5cdFx0fCBcIm51bWJlclwiXG5cdFx0fCBcImRhdGVcIlxuXHRcdHwgXCJzZWFyY2hTZWxlY3RcIlxuXHRcdHwgXCJzZWxlY3RcIjtcblx0dmFsdWU/OiBhbnk7XG5cdGRhdGE/OiBhbnlbXSB8IG51bGw7XG5cdGljb24/OiBzdHJpbmc7XG5cdGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG5cdGljb25Ub29sdGlwPzogc3RyaW5nO1xuXHRmbj86IEZ1bmN0aW9uO1xuXHRmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuXHR2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRjb250cm9sczogSUNvbnRyb2xbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci1mb3JtXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCJdLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcblx0XHRGb3Jtc01vZHVsZSxcblx0XHRNYXRUb29sdGlwTW9kdWxlLFxuXHRcdE1hdEljb25Nb2R1bGUsXG5cdFx0TWF0RXJyb3IsXG5cdFx0Q2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuXHRcdERhdGVQaXBlLFxuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRASW5wdXQoKSBzZWN0aW9ucz86IElGb3JtU2VjdGlvbltdO1xuXHRASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG5cdEBJbnB1dCgpIG1vZGVsPzogYW55O1xuXHRAT3V0cHV0KCkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0QElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG5cdHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7XG5cdFx0dGhpcy5mb3JtID0gYnVpbGRlci5ncm91cCh7fSk7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0VmFsaWRhdG9ycygpO1xuXHRcdC8vdGhpcy5faW5pdFZhbHVlcygpO1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy5mb3JtLnZhbGlkKTtcblx0XHRcdHRoaXMudmFsdWVzQ2hhbmdlLmVtaXQocmVzKTtcblx0XHR9KTtcblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0VmFsdWVzKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJJbnB1dEVtaXR0ZXJzKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJJbnB1dFVwZGF0ZXJzKCk7XG5cdH1cblxuXHR2YWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuXHRcdGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuXHRcdHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG5cdH07XG5cblx0c2V0VmFsdWUgPSAoaW5wdXQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdGlmIChpbnB1dCkgdGhpcy5mb3JtLmdldChpbnB1dCk/LnNldFZhbHVlKHZhbHVlKTtcblx0fTtcblxuXHRpc1ZhbGlkID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmdldChpbnB1dCk/LnZhbGlkO1xuXHRcdHJldHVybiB0aGlzLnZhbGlkO1xuXHR9O1xuXG5cdGlzQ29udHJvbFJlcXVpcmVkID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG5cdFx0cmV0dXJuIGNvbnRyb2wudmFsaWRhdGlvbnM/LmZpbmQoKHYpID0+IHYucnVsZS50b0xvd2VyQ2FzZSgpID09IFwicmVxdWlyZWRcIik7XG5cdH07XG5cblx0cGF0Y2hWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgW2tleV06IHZhbHVlIH0pO1xuXHR9O1xuXG5cdHJlc2V0ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5yZXNldCgpO1xuXHR9O1xuXG5cdHByaXZhdGUgX3JlZ2lzdGVySW5wdXRFbWl0dGVycyA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucyEpIHtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG5cdFx0XHRcdGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuXHRcdFx0XHRmb3JtQ29udHJvbCEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoZSkgPT4ge1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2coJ0VNSVRUSU5HIFwiJyArIGNvbnRyb2wubmFtZSArICdcIjogJyArIGUpO1xuXHRcdFx0XHRcdHRoaXMuZm9ybUNoYW5nZS5lbWl0KHsgW2NvbnRyb2wubmFtZV06IGUgfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIF9yZWdpc3RlcklucHV0VXBkYXRlcnMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHR0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSkhLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Ly9jb25zb2xlLmxvZygnU0VUVElORyBcIicgKyBjb250cm9sLm5hbWUgKyAnXCI6ICcgKyB2YWx1ZSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMubW9kZWwpIHtcblx0XHRcdFx0XHRcdHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb250cm9sLnZhbHVlID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBfaW5pdFZhbHVlcyA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucyB8fCBbXSkge1xuXHRcdFx0Zm9yIChsZXQgY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5tb2RlbCA/IHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA6IG51bGw7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFxuXHRcdFx0XHQvLyBcdCdJTklUSUFMSVpJTkcgXCInICtcblx0XHRcdFx0Ly8gXHRcdGNvbnRyb2wubmFtZSArXG5cdFx0XHRcdC8vIFx0XHQnXCI6IE1PREVMIC0+ICcgK1xuXHRcdFx0XHQvLyBcdFx0dmFsdWUgK1xuXHRcdFx0XHQvLyBcdFx0XCIgfCBDVkFMVUUgLT4gXCIgK1xuXHRcdFx0XHQvLyBcdFx0Y29udHJvbC52YWx1ZVxuXHRcdFx0XHQvLyApO1xuXHRcdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKGNvbnRyb2wudmFsdWUpXG5cdFx0XHRcdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0XHRcdFx0LmdldChjb250cm9sLm5hbWUpIVxuXHRcdFx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5fY29udmVydFZhbHVlVG9UeXBlKGNvbnRyb2wudmFsdWUsIGNvbnRyb2wudHlwZSkpO1xuXHRcdFx0XHRcdGVsc2UgdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpIS5zZXRWYWx1ZShudWxsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0XHRcdC5nZXQoY29udHJvbC5uYW1lKSFcblx0XHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLl9jb252ZXJ0VmFsdWVUb1R5cGUodmFsdWUsIGNvbnRyb2wudHlwZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgX2NvbnZlcnRWYWx1ZVRvVHlwZSA9IChcblx0XHR2YWx1ZTogYW55LFxuXHRcdHR5cGU6XG5cdFx0XHR8IFwidGV4dFwiXG5cdFx0XHR8IFwicGFzc3dvcmRcIlxuXHRcdFx0fCBcInRleHRBcmVhXCJcblx0XHRcdHwgXCJudW1iZXJcIlxuXHRcdFx0fCBcImRhdGVcIlxuXHRcdFx0fCBcInNlYXJjaFNlbGVjdFwiXG5cdFx0XHR8IFwic2VsZWN0XCJcblx0KSA9PiB7XG5cdFx0Ly9jb25zb2xlLmxvZyhcIlZBTFVFOiBcIiArIHZhbHVlLCBcIlRZUEU6IFwiICsgdHlwZSk7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKFwiUkVTOlwiICsgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIFwieXl5eS1NTS1kZFwiKSk7XG5cdFx0XHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIpO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhcIlJFUzogXCIgKyB2YWx1ZSk7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBfaW5pdFZhbGlkYXRvcnMoKSB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMgfHwgW10pIHtcblx0XHRcdGZvciAoY29uc3QgaW5wdXQgb2Ygc2VjdGlvbi5jb250cm9scykge1xuXHRcdFx0XHRpZiAoaW5wdXQudHlwZSA9PSBcInNlYXJjaFNlbGVjdFwiICYmICFpbnB1dC5mbilcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcIkFuIGlucHV0IG9mIHR5cGUgJ3NlYXJjaFNlbGVjdCcgbmVlZHMgYSBkaXNwbGF5IGZ1bmN0aW9uICFcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXG5cdFx0XHRcdFx0aW5wdXQudmFsdWUsXG5cdFx0XHRcdFx0dGhpcy5fZ2V0VmFsaWRhdG9ycyhpbnB1dC52YWxpZGF0aW9ucylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGhpcy5mb3JtLmFkZENvbnRyb2woaW5wdXQubmFtZSwgY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyA9ICh2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdKSA9PiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXHRcdGlmICghdmFsaWRhdGlvbnMpIHJldHVybiB2YWxpZGF0b3JzO1xuXHRcdC8vU3dpdGNoIGNhc2UgYnJlYWtzIHRoZSBtb2JpbGUgYXBwIHNvIHdlJ2xsIGRvIGlmIHN0YXRlbWVudHNcblx0XHRmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcblx0XHRcdGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGUudG9Mb2NhbGVMb3dlckNhc2UoKTtcblx0XHRcdGlmIChydWxlID09IFwibWluXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4XCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwicmVxdWlyZWRcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNlIGNoYW1wcyBlc3QgcmVxdWlzICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJlbWFpbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgYWRyZXNzZSBlbWFpbCBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5sZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhsZW5ndGhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJ0eXBlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaCh0eXBlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZGVjaW1hbFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBMZSBub21icmUgZGUgZMOpY2ltYWwgbidlc3QgcGFzIHZhbGlkZSAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKGRlY2ltYWwodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhkYXRlXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRvcnM7XG5cdH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzZcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8ZGl2PlxuICAgICAgICBAaWYgKHNlY3Rpb24udGl0bGUpIHtcbiAgICAgICAgPGgyIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC14bCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAtNiBzbTpncmlkLWNvbHMtMlwiPlxuICAgICAgICAgIEBmb3IgKGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgY29udHJvbDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCIgW25nQ2xhc3NdPVwiY29udHJvbC53aWR0aCA9PSAncm93JyA/ICdzbTpjb2wtc3Bhbi0yJyA6ICdjb2wtc3Bhbi0xJ1wiPlxuICAgICAgICAgICAgQGlmIChjb250cm9sLmxhYmVsKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYmxvY2sgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+e3tcbiAgICAgICAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLSBIZXJlIHdlIHdpbGwgKm5nSWYgZWFjaCB0eXBlIG9mIGlucHV0IGNhdXNlIGl0J3MgdGhlIGNsZWFuZXN0IHdheSBJIGNhbiBpbWFnaW5lLS0+XG4gICAgICAgICAgICA8IS0tVEVYVC0tPlxuICAgICAgICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHQnKSB7XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdiZy1yZWQtMTAwIGRhcms6YmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCIgWyh2YWx1ZSldPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLVBBU1NXT1JELS0+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAncGFzc3dvcmQnKSB7XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdiZy1yZWQtMTAwIGRhcms6YmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS1URVhUIEFSRUEtLT5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0QXJlYScpIHtcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0xMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCIgWyh2YWx1ZSldPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImgtMTEgYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICAgICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgWyh2YWx1ZSldPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLURBVEUtLT5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTIwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFsodmFsdWUpXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS1TZWFyY2hTZWxlY3QtLT5cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdzZWFyY2hTZWxlY3QnKSB7XG4gICAgICAgICAgICA8YXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnWyZfaW5wdXRdOiFiZy1yZWQtMTAwIGRhcms6WyZfaW5wdXRdOiFiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29udHJvbC5wbGFjZWhvbGRlclwiIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWVcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoci1zZWFyY2gtc2VsZWN0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChjb250cm9sLmljb24pIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWUpXCI+PG1hdC1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgdGV4dC1sZ1wiPnt7Y29udHJvbC5pY29ufX08L21hdC1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMFwiPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJlxuICAgICAgICAgICAgICBmb3JtLmhhc0Vycm9yKHZhbGlkYXRpb24ucnVsZS50b0xvd2VyQ2FzZSgpLCBjb250cm9sLm5hbWUpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY29udHJvbC5zcGFuICYmICghZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycyB8fCAhZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQpKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMCB0ZXh0LXhzIHRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoaW5kZXggIT0gKHNlY3Rpb25zfHxbXSkubGVuZ3RoIC0gMSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNFwiPlxuICAgICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Zvcm0+XG48L2Rpdj4iXX0=
@@ -436,6 +436,7 @@ class ChrFormComponent {
436
436
  for (const control of section.controls) {
437
437
  const formControl = this.form.get(control.name);
438
438
  formControl.valueChanges.subscribe((e) => {
439
+ //console.log('EMITTING "' + control.name + '": ' + e);
439
440
  this.formChange.emit({ [control.name]: e });
440
441
  });
441
442
  }
@@ -445,6 +446,7 @@ class ChrFormComponent {
445
446
  for (const section of this.sections) {
446
447
  for (const control of section.controls) {
447
448
  this.form.get(control.name).valueChanges.subscribe((value) => {
449
+ //console.log('SETTING "' + control.name + '": ' + value);
448
450
  if (this.model) {
449
451
  this.model[control.name] = value;
450
452
  }
@@ -459,11 +461,19 @@ class ChrFormComponent {
459
461
  for (const section of this.sections || []) {
460
462
  for (let control of section.controls) {
461
463
  const value = this.model ? this.model[control.name] : null;
464
+ // console.log(
465
+ // 'INITIALIZING "' +
466
+ // control.name +
467
+ // '": MODEL -> ' +
468
+ // value +
469
+ // " | CVALUE -> " +
470
+ // control.value
471
+ // );
462
472
  if (!value) {
463
473
  if (control.value)
464
474
  this.form
465
475
  .get(control.name)
466
- .setValue(this._convertValueToType(value, control.type));
476
+ .setValue(this._convertValueToType(control.value, control.type));
467
477
  else
468
478
  this.form.get(control.name).setValue(null);
469
479
  }
@@ -476,10 +486,13 @@ class ChrFormComponent {
476
486
  }
477
487
  };
478
488
  this._convertValueToType = (value, type) => {
489
+ //console.log("VALUE: " + value, "TYPE: " + type);
479
490
  switch (type) {
480
491
  case "date":
492
+ //console.log("RES:" + this.datePipe.transform(value, "yyyy-MM-dd"));
481
493
  return this.datePipe.transform(value, "yyyy-MM-dd");
482
494
  default:
495
+ //console.log("RES: " + value);
483
496
  return value;
484
497
  }
485
498
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chrv-components.mjs","sources":["../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.html","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.ts","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.html","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.ts","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-validators/type-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/decimal-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/max-date-validator.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.html","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.html","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.ts","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.html","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.html","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.ts","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.html","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.ts","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.html","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.html","../../../projects/chrv-components/src/lib/services/dialog.service.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\n\n\nexport interface Breadcrumb {\n display: string;\n link?: string;\n callback?: Function;\n}\n\n@Component({\n selector: 'app-chr-breadcrumb',\n templateUrl: './chr-breadcrumb.component.html',\n styleUrls: ['./chr-breadcrumb.component.scss'],\n standalone: true,\n imports: [MatButton],\n})\nexport class BreadcrumbComponent {\n @Input() crumbs?: Breadcrumb[];\n\n constructor(public router: Router) {}\n\n navigateTo = (uri: string, data?: any) => {\n this.router.navigate([uri], { state: data });\n };\n}\n","<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n @for (crumb of crumbs; track crumb) {\n <div class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n }\n</div>","import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\n standalone: true,\n imports: [MatTooltipModule, MatIconModule, MatButtonModule, CommonModule],\n})\nexport class ChrButtonComponent {\n @Input() display: string = '';\n @Input() icon: string = '';\n @Input() click?: Function;\n @Input() color: 'primary' | 'accent' | 'warn' | 'none' = 'none';\n @Input() predicate?: boolean = true;\n @Input() type: 'responsive' | 'table' | 'full' | 'fixed' | 'none' = 'none';\n @Input() href?: string;\n @Input() target?: '_blank' | '_parent' | '_self' | '_top';\n @Input() disabled: boolean = false;\n @Input() tooltip?: string;\n @Input() tooltipPosition?:\n | 'above'\n | 'below'\n | 'left'\n | 'right'\n | 'before'\n | 'after';\n\n constructor() {}\n\n setDisabled = (is: boolean) => {\n this.disabled = is;\n };\n\n doClick = () => {\n this.click?.();\n };\n}\n","<div [ngClass]=\"type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\" [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 !w-36' : ''\"\n [ngClass]=\"type == 'responsive' ? 'h-14 grid grid-cols-1 w-full sm:!w-36': ''\">\n @if (predicate) {\n <a mat-button mat-flat-button [disabled]=\"disabled\" class=\"w-full\" color=\"{{ color }}\"\n (click)=\"click?.()\" [attr.href]=\"href && href\" [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\"\n [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n </a>\n }\n</div>\n<!--\nIF\nClick\ncolor\ntype: table : full\nicon\n-->","import { Component } from '@angular/core';\nimport {\n MatDialogRef,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose,\n} from '@angular/material/dialog';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n ChrButtonComponent,\n MatDialogClose,\n MatTooltip,\n ],\n})\nexport class ChrDeleteModalComponent {\n public valid: boolean = false;\n\n constructor(public dialogRef: MatDialogRef<ChrDeleteModalComponent>) {}\n\n ngOnInit() {}\n\n public close = () => {\n this.dialogRef.close(true);\n };\n}\n","<div class=\"dark:bg-slate-800 w-full overflow-auto overflow-x-hidden\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"mat-typography dark:!text-gray-400\">\n Attention:\n <br>\n <br>\n La suppression d'un élément est irréversible.\n <br>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <br>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <br>\n <br>\n En effectuant cette action et cliquant sur \"Confirmer\" vous certifiez que vous avez pris connaissance des\n conséquences possibles et souhaitez tout de même poursuivre.\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"w-full flex flex-row justify-between\">\n <app-chr-button class=\"w-36\" display=\"Annuler\" color=\"accent\" mat-dialog-close></app-chr-button>\n <app-chr-button class=\"w-36\" display=\"Confirmer\" color=\"warn\" [click]=\"close\"\n [matTooltip]=\"'Attention: cette action est irréversible !'\" matTooltipPosition=\"above\"></app-chr-button>\n </div>\n </mat-dialog-actions>\n</div>","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-type]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: TypeValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class TypeValidatorDirective implements Validator {\r\n @Input() type?: string;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.type ? type(this.type)(control) : null;\r\n }\r\n}\r\n\r\nexport function type(type: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const isType = typeof value == type;\r\n\r\n return !isType\r\n ? ({\r\n type: true,\r\n requiredType: type,\r\n actualType: typeof value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-decimal]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DecimalValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class DecimalValidatorDirective implements Validator {\r\n @Input() amount?: number;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.amount ? decimal(this.amount)(control) : null;\r\n }\r\n}\r\n\r\nexport function decimal(amount: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n let isTooLong = false;\r\n\r\n const str = `${value}`;\r\n isTooLong =\r\n str.indexOf(',') != -1\r\n ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount\r\n : str.indexOf('.') != -1\r\n ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount\r\n : false;\r\n\r\n return isTooLong\r\n ? ({\r\n decimal: true,\r\n max: amount,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-max-date]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxDateValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class MaxDateValidatorDirective implements Validator {\r\n @Input() date?: Date;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.date ? maxDate(this.date)(control) : null;\r\n }\r\n}\r\n\r\nexport function maxDate(date: Date): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const maxDate = moment(date);\r\n const inputDate = moment(value);\r\n\r\n return !(inputDate.isValid() && inputDate.isBefore(maxDate))\r\n ? ({\r\n maxdate: true,\r\n max: maxDate.toDate(),\r\n actual: value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport {\n MatAutocomplete,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n Observable,\n startWith,\n map,\n of,\n combineLatest,\n combineLatestAll,\n} from 'rxjs';\nimport { MatOption } from '@angular/material/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { AsyncPipe } from '@angular/common';\n\nexport interface IInputSearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\n@Component({\n selector: 'app-chr-search-select',\n templateUrl: './chr-search-select.component.html',\n styleUrls: ['./chr-search-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: ChrSearchSelectComponent,\n },\n ],\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatAutocompleteTrigger,\n MatTooltip,\n MatAutocomplete,\n MatOption,\n AsyncPipe\n],\n})\nexport class ChrSearchSelectComponent implements ControlValueAccessor {\n public predicate: boolean = true;\n\n public searchSelect: FormControl = new FormControl();\n public filteredModelOptions?: Observable<any>;\n\n public onTouched: any = () => {};\n\n @Input() placeholder?: string;\n @Input() data: any[] | null = [];\n @Input() display?: Function;\n @Input() disabled: boolean = false;\n @Input() model: any | null = null;\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n @Output() keyup: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n\n @Input() filters?: IInputSearchFilter[];\n public filterIndex: number = 0;\n\n ngOnInit() {\n this.registerFilters();\n this.registerAutoComplete();\n }\n\n getModelDisplay(model: any) {\n return this.display?.(model);\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n\n writeValue(obj: any): void {\n this.searchSelect.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.searchSelect.valueChanges.subscribe((value) => {\n this.checkNull(value);\n fn(value);\n });\n }\n\n checkNull(value: any | null) {\n if (typeof value == 'string')\n if (value == '' || value.trim() == '') this.setNull;\n if (value == null || value == '') {\n this.setNull();\n }\n }\n\n setNull() {\n this.emit(null);\n this.model = null;\n }\n\n registerOnTouched(fn: any): void {\n this.searchSelect.markAsTouched = fn;\n }\n\n registerFilters = () => {\n this.filteredModelOptions = this.searchSelect.valueChanges.pipe(\n startWith(''),\n map((value) => this._filterModel(value! || -1)),\n map((values) => {\n return this.filters && this.filters[this.filterIndex].callback\n ? values.filter((r) => this.filters![this.filterIndex].callback!(r))\n : values;\n })\n );\n };\n\n registerAutoComplete = () => {\n //If there is only one value left,\n this.filteredModelOptions?.subscribe((values) => {\n if (values.length == 1) {\n this.emit(values[0]);\n }\n });\n };\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n isDisabled ? this.searchSelect.disable() : this.searchSelect.enable();\n }\n\n increment = () => {\n this.writeValue('');\n const modulo = this.filters ? this.filters.length : 1;\n this.filterIndex = (this.filterIndex + 1) % modulo;\n };\n\n getValue = () => {\n return this.searchSelect.value;\n };\n\n void = () => {};\n\n private _filterModel(value: number | string): any[] {\n return typeof value == 'string'\n ? this._doFilterModelString(`${value}`)\n : this._doFilterModelInt(value);\n }\n\n private _doFilterModelInt = (id: number) => {\n const tmp = this.data?.find((r) => r.id == id);\n return tmp ? tmp : [];\n };\n\n private _doFilterModelString(input: string) {\n return this.data?.filter((r) => this._filterValues(r, input));\n }\n\n private _filterValues(value: any, input: string) {\n return `${this.getModelDisplay(value)}`\n .toLowerCase()\n .includes(input.toLowerCase());\n }\n}\n","@if (predicate) {\n <div class=\"w-full dark:bg-slate-600 rounded-lg relative\">\n <div class=\"w-full relative\">\n <input #input type=\"text\" matInput [formControl]=\"searchSelect\" [(ngModel)]=\"model\"\n class=\"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"\n placeholder=\"{{ placeholder }}\" required (keyup)=\"keyup.emit($event)\" [matAutocomplete]=\"auto\" />\n @if (filters) {\n <span [matTooltip]=\"filters[filterIndex].tooltip || ''\" matTooltipPosition=\"above\"\n class=\"absolute inner-button cursor-pointer top-[1px] right-[1.5px] h-[calc(100%_-_2px)] text-gray-900 dark:text-gray-400 px-1 border-l border-gray-300 rounded-r-md text-end opacity-100 bg-gray-50 dark:bg-gray-700 flex justify-center align-middle items-center\"\n (click)=\"filters ? increment() : void\">{{ filters[filterIndex].display }}\n </span>\n }\n </div>\n <mat-autocomplete class=\"dark:!bg-slate-600 dark:!text-white rounded-lg\" #auto=\"matAutocomplete\" id=\"auto\"\n [displayWith]=\"getModelDisplay.bind(this)\" (optionSelected)=\"emit($event.option.value)\">\n @for (model of filteredModelOptions | async; track model) {\n <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n }\n </mat-autocomplete>\n </div>\n}","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { TypeValidatorDirective, type } from \"./chr-validators/type-validator\";\nimport { ValidatorFn, ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport {\n\tFormBuilder,\n\tFormGroup,\n\tValidators,\n\tFormControl,\n} from \"@angular/forms\";\nimport { decimal } from \"./chr-validators/decimal-validator\";\nimport { maxDate } from \"./chr-validators/max-date-validator\";\nimport { MatError } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ChrSearchSelectComponent } from \"../chr-search-select/chr-search-select.component\";\nimport {\n\tDatePipe,\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n} from \"@angular/common\";\n\nexport interface ISearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\nexport interface IControlValidation {\n\trule: string;\n\tvalue?: any;\n\tdisplay?: string;\n}\n\nexport interface IControl {\n\tlabel?: string;\n\tname: string;\n\tspan?: string;\n\tplaceholder?: any;\n\twidth?: \"col\" | \"row\";\n\ttype:\n\t\t| \"text\"\n\t\t| \"password\"\n\t\t| \"textArea\"\n\t\t| \"number\"\n\t\t| \"date\"\n\t\t| \"searchSelect\"\n\t\t| \"select\";\n\tvalue?: any;\n\tdata?: any[] | null;\n\ticon?: string;\n\ticonCallback?: Function;\n\ticonCallbackDisabled?: boolean;\n\ticonTooltip?: string;\n\tfn?: Function;\n\tfilters?: ISearchFilter[];\n\tvalidations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n\ttitle?: string;\n\tcontrols: IControl[];\n}\n\nexport interface IFormControl {\n\t[key: string]: any;\n}\n@Component({\n\tselector: \"app-chr-form\",\n\ttemplateUrl: \"./chr-form.component.html\",\n\tstyleUrls: [\"./chr-form.component.scss\"],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tFormsModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatError,\n\t\tChrSearchSelectComponent,\n\t\tDatePipe,\n\t\tCommonModule,\n\t\tTypeValidatorDirective,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ChrFormComponent implements AfterViewInit {\n\t@Input() sections?: IFormSection[];\n\t@Input() valid?: boolean;\n\t@Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Input() model?: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n\t@Input() disabled?: boolean;\n\t@Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n\t@Output() formChange: EventEmitter<IFormControl> =\n\t\tnew EventEmitter<IFormControl>();\n\n\tpublic form: FormGroup;\n\tconstructor(private builder: FormBuilder, private datePipe: DatePipe) {\n\t\tthis.form = builder.group({});\n\t}\n\n\tngOnInit(): void {\n\t\tthis._initValidators();\n\t\t//this._initValues();\n\t\tthis.form.valueChanges.subscribe((res) => {\n\t\t\tthis.valid = this.form.valid;\n\t\t\tthis.validChange.emit(this.form.valid);\n\t\t\tthis.valuesChange.emit(res);\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis._initValues();\n\t\tthis._registerInputEmitters();\n\t\tthis._registerInputUpdaters();\n\t}\n\n\tvalue = (input?: string) => {\n\t\tif (input) return this.form.controls[input]?.value;\n\t\treturn this.form.value;\n\t};\n\n\tsetValue = (input: string, value: any) => {\n\t\tif (input) this.form.get(input)?.setValue(value);\n\t};\n\n\tisValid = (input?: string) => {\n\t\tif (input) return this.form.get(input)?.valid;\n\t\treturn this.valid;\n\t};\n\n\tisControlRequired = (control: IControl) => {\n\t\treturn control.validations?.find((v) => v.rule.toLowerCase() == \"required\");\n\t};\n\n\tpatchValue = (key: string, value: any) => {\n\t\tthis.form.patchValue({ [key]: value });\n\t};\n\n\treset = () => {\n\t\tthis.form.reset();\n\t};\n\n\tprivate _registerInputEmitters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name);\n\t\t\t\tformControl!.valueChanges.subscribe((e) => {\n\t\t\t\t\tthis.formChange.emit({ [control.name]: e });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _registerInputUpdaters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tthis.form.get(control.name)!.valueChanges.subscribe((value) => {\n\t\t\t\t\tif (this.model) {\n\t\t\t\t\t\tthis.model[control.name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontrol.value = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _initValues = () => {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (let control of section.controls) {\n\t\t\t\tconst value = this.model ? this.model[control.name] : null;\n\t\t\t\tif (!value) {\n\t\t\t\t\tif (control.value)\n\t\t\t\t\t\tthis.form\n\t\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t\t.setValue(this._convertValueToType(value, control.type));\n\t\t\t\t\telse this.form.get(control.name)!.setValue(null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.form\n\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t.setValue(this._convertValueToType(value, control.type));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _convertValueToType = (\n\t\tvalue: any,\n\t\ttype:\n\t\t\t| \"text\"\n\t\t\t| \"password\"\n\t\t\t| \"textArea\"\n\t\t\t| \"number\"\n\t\t\t| \"date\"\n\t\t\t| \"searchSelect\"\n\t\t\t| \"select\"\n\t) => {\n\t\tswitch (type) {\n\t\t\tcase \"date\":\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-dd\");\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t};\n\n\tprivate _initValidators() {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (const input of section.controls) {\n\t\t\t\tif (input.type == \"searchSelect\" && !input.fn)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"An input of type 'searchSelect' needs a display function !\"\n\t\t\t\t\t);\n\t\t\t\tconst control = new FormControl(\n\t\t\t\t\tinput.value,\n\t\t\t\t\tthis._getValidators(input.validations)\n\t\t\t\t);\n\t\t\t\tthis.form.addControl(input.name, control);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getValidators = (validations?: IControlValidation[]) => {\n\t\tconst validators: ValidatorFn[] = [];\n\t\tif (!validations) return validators;\n\t\t//Switch case breaks the mobile app so we'll do if statements\n\t\tfor (const validation of validations) {\n\t\t\tconst rule = validation.rule.toLocaleLowerCase();\n\t\t\tif (rule == \"min\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.min(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"max\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.max(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"required\") {\n\t\t\t\tvalidation.display = \"Ce champs est requis !\";\n\t\t\t\tvalidators.push(Validators.required);\n\t\t\t}\n\t\t\tif (rule == \"email\") {\n\t\t\t\tvalidation.display = \"Cette adresse email n'est pas valide !\";\n\t\t\t\tvalidators.push(Validators.email);\n\t\t\t}\n\t\t\tif (rule == \"minlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.minLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.maxLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"type\") {\n\t\t\t\tvalidation.display = \"Cette valeur n'est pas valide !\";\n\t\t\t\tvalidators.push(type(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"decimal\") {\n\t\t\t\tvalidation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(decimal(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxdate\") {\n\t\t\t\tvalidation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(maxDate(validation.value));\n\t\t\t}\n\t\t}\n\t\treturn validators;\n\t};\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n @for (section of sections; track section; let index = $index) {\n <div>\n @if (section.title) {\n <h2 class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n }\n <div class=\"grid gap-6 sm:grid-cols-2\">\n @for (control of section.controls; track control; let index = $index) {\n <div class=\"relative\" [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n @if (control.label) {\n <label class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n </label>\n }\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--TEXT-->\n @if (control.type == 'text') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--PASSWORD-->\n @if (control.type == 'password') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"password\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--TEXT AREA-->\n @if (control.type == 'textArea') {\n <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"h-11 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"></textarea>\n }\n <!--NUMBER-->\n @if (control.type == 'number') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"number\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n placeholder=\"{{ control.placeholder }}\" [formControlName]=\"control.name\"\n [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--DATE-->\n @if (control.type == 'date') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-200 dark:bg-red-800':''\"\n type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--SearchSelect-->\n @if (control.type == 'searchSelect') {\n <app-chr-search-select class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? '[&_input]:!bg-red-100 dark:[&_input]:!bg-red-800':''\"\n id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\" [display]=\"control.fn!\"\n [placeholder]=\"control.placeholder\" [filters]=\"control.filters\" [formControlName]=\"control.name\"\n [(model)]=\"model?.[control.name] || control.value\">\n </app-chr-search-select>\n }\n @if (control.icon) {\n <span\n [ngClass]=\"control.iconCallbackDisabled ? 'text-gray-400 dark:text-gray-500':'text-gray-900 dark:text-white'\"\n class=\"absolute p-2.5 bottom-0 right-0\" [matTooltip]=\"control.iconTooltip || ''\"\n matTooltipPosition=\"above\"\n (click)=\"!control.iconCallbackDisabled && control.iconCallback?.(form.controls[control.name].value)\"><mat-icon\n class=\"flex justify-center align-middle items-center content-center text-lg\">{{control.icon}}</mat-icon></span>\n }\n @for (validation of control.validations; track validation) {\n <div class=\"h-0\">\n @if (\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error>{{ validation.display }}</mat-error>\n }\n </div>\n }\n @if (control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)) {\n <span class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n }\n </div>\n }\n </div>\n @if (index != (sections||[]).length - 1) {\n <div class=\"py-4\">\n <hr class=\"\" />\n </div>\n }\n </div>\n }\n </fieldset>\n </form>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule],\n})\nexport class ChrSearchbarComponent {\n @Input() model?: string | null;\n @Output() modelChange: EventEmitter<string> = new EventEmitter();\n @Input() placeholder?: string | null;\n @Input() label?: string | null;\n public searchBy = new FormControl<string>('');\n\n constructor() {\n this.searchBy.valueChanges.subscribe((value) => this.emit(value));\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n}\n","<div class=\"w-full\">\n <label>{{ label }}</label>\n <input matInput [formControl]=\"searchBy\" placeholder=\"{{ placeholder }}\" type=\"text\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n</div>","import {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\nimport { NgClass, CommonModule } from '@angular/common';\nimport { ChrFormComponent } from '../chr-form/chr-form.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n standalone: true,\n imports: [ChrFormComponent, CommonModule, MatIconModule],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n private _page: number = -5;\n @Input()\n get page() {\n return this._page;\n }\n set page(value: number) {\n this._page = value;\n this.pageChange.emit(value);\n this.changeDetector.markForCheck();\n this.changeDetector.detectChanges();\n }\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n instance?: PaginationInstance;\n\n constructor(\n public service: PaginationService,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n ngAfterContentChecked(): void {\n //console.log(this.service, this.service.getInstance('chr_data-table'));\n this.instance = this.service.getInstance(\n 'chr_data-table'\n ) as PaginationInstance;\n }\n\n ngOnInit(): void {}\n\n public previous = () => {\n if (this.isFirstPage()) return;\n this.page--;\n this.pageChange.emit(this.page);\n //this.emit();\n };\n\n public next = () => {\n if (this.isLastPage()) return;\n this.page += 1;\n this.pageChange.emit(this.page);\n //this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.page = page;\n this.emit();\n };\n\n public setPageEventHandler = (event: any) => {\n return this.setPage(event.target.value);\n };\n\n public isFirstPage = () => {\n return this.page == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n if (this.instance) this.instance.itemsPerPage = pageSize;\n this.pageSizeChange.emit(pageSize);\n };\n\n public setPageSizeEventHandler = (event: any) => {\n return this.setPageSize(event.target.value);\n };\n\n public isLastPage = () => {\n if (!this.instance?.totalItems) return false;\n return (\n this.page >=\n Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n );\n };\n\n // public pageSize = () => this.instance.itemsPerPage;\n\n public lastPage = () =>\n this.instance?.totalItems\n ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n : 1;\n\n private emit = (page: number | undefined = undefined) => {\n if (!page) this.pageChange.emit(this.page);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <div class=\"w-20 ml-1\">\n <app-chr-form (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n }]\n }]\">\n </app-chr-form>\n </div>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>keyboard_double_arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>keyboard_double_arrow_right</mat-icon></button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\n/**\n * This should only be used as a directive\n */\n@Component({\n selector: 'app-chr-table-header-cell, [app-chr-table-header-cell]',\n templateUrl: './chr-table-header-cell.component.html',\n styleUrls: ['./chr-table-header-cell.component.scss'],\n standalone: true,\n imports: [NgClass, MatIcon],\n})\nexport class ChrTableHeaderCellComponent {\n @Input() display?: string;\n @Input() column?: string;\n @Input() alignment?: string;\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n orderBy = (column?: string) => {\n if (!this.sortBy) this.sortBy = column;\n\n if (this.sortBy == column) {\n this.isAsc = !this.isAsc;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n } else {\n this.isAsc = true;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n }\n };\n}\n","<div class=\"relative w-full cursor-pointer flex flex-row align-middle self-center\" [ngClass]=\"\n alignment == 'left' ? 'justify-start' : \n alignment == 'center' ? 'justify-center' : \n alignment == 'right' ? 'justify-end' : \n 'justify-left'\" (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n @if (sortBy) {\n <div class=\"absolute right-3 top-0 h-0 w-0\">\n @if (sortBy == column && isAsc) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (sortBy == column && !isAsc) {\n <mat-icon>arrow_downward</mat-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>","import * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { ChrPaginatorComponent } from '../chr-paginator/chr-paginator.component';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\nimport { ChrTableHeaderCellComponent } from '../chr-table-header-cell/chr-table-header-cell.component';\nimport { SortPipe } from 'chrv-pipes';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport {\n CommonModule,\n DATE_PIPE_DEFAULT_OPTIONS,\n DatePipe,\n} from '@angular/common';\n\nexport interface IColumn {\n display: string;\n alignment?: 'left' | 'center' | 'right';\n chipsTarget?: string[];\n chipsDisplay?: string[];\n chipsCallback?: Function;\n properties?: string[];\n callback?: Function;\n date?: string;\n isLink?: boolean;\n linkStaticUrl?: string;\n}\n\nexport interface IComputedRow {\n columns: IComputedColumn[];\n}\n\nexport interface IComputedColumn {\n label?: string;\n value?: any;\n callback?: Function;\n alignment?: 'left' | 'center' | 'right';\n after?: string;\n}\n\nexport interface IAction {\n display: string;\n callback: Function;\n disabled?: boolean;\n disabledCallback?: Function;\n color: 'accent' | 'primary' | 'warn';\n}\n\n@Component({\n selector: 'app-chr-table, [app-chr-table]',\n templateUrl: './chr-table.component.html',\n styleUrls: ['./chr-table.component.scss'],\n standalone: true,\n imports: [\n ChrTableHeaderCellComponent,\n ChrButtonComponent,\n ChrPaginatorComponent,\n SortPipe,\n NgxPaginationModule,\n CommonModule,\n DatePipe,\n ],\n providers: [\n DatePipe,\n {\n provide: DATE_PIPE_DEFAULT_OPTIONS,\n useValue: { dateFormat: 'shortDate' },\n },\n ],\n})\nexport class ChrTableComponent implements AfterViewInit {\n @Input() computedRows?: IComputedRow[];\n @Input() columns?: IColumn[];\n @Input() data: any[] | null = [];\n @Input() actions?: IAction[];\n\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n\n private _page: number = 1;\n @Input()\n get currentPage() {\n return this._page;\n }\n set currentPage(value: number) {\n this._page = value;\n this.currentPageChange.emit(value);\n this.changeDetector.markForCheck();\n this.changeDetector.detectChanges();\n }\n @Output() currentPageChange: EventEmitter<number> = new EventEmitter();\n\n constructor(\n private _date: DatePipe,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {}\n\n emitIsAsc(isAsc: any) {\n this.isAscChange.emit(isAsc);\n }\n\n emitSortBy(sortBy: any) {\n this.sortByChange.emit(sortBy);\n }\n\n emitPageSize(pageSize: any) {\n this.pageSize = pageSize;\n this.pageSizeChange.emit(pageSize);\n }\n\n emitCurrentPage(currentPage: any) {\n this.currentPage = currentPage;\n this.currentPageChange.emit(currentPage);\n }\n\n getProperty = (entry: any, properties?: any[]) => {\n if (!properties) return entry;\n let value = entry;\n for (const i of properties) {\n value = (value as any)?.[i];\n }\n return value;\n };\n\n getIsAsc = () => {\n return this.isAsc;\n };\n\n getSortBy = () => {\n return this.sortBy;\n };\n}\n","<div class=\"h-full no-scrollbar\">\n <ng-content class=\"mt-5\"></ng-content>\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\n @if (data) {\n <table\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3\" display=\"{{ column.display }}\" column=\"{{ column.properties }}\"\n [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\">\n </th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n }\n </tr>\n }\n @for (entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}; track entry) {\n <tr class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-auto\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" alignment=\"{{column.alignment}}\"\n (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\"></th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n }\n </tr>\n }\n </thead>\n <tbody class=\"w-full dark:bg-slate-600\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n @if (actions) {\n <td class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n }\n </tr>\n }\n <!--\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\n <td *ngFor=\"let column of columns\">\n <ng-container [ngTemplateOutlet]=\"\n column.isLink ? link: div\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\n </ng-container>\n <ng-template #link let-prop='prop'>\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\n prop}}</a>\n </ng-template>\n <ng-template #div let-prop='prop'>\n <div>\n <span *ngIf=\"column.chipsDisplay\">\n </span>\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\n </div>\n </ng-template>\n </td>\n </tr>\n -->\n @for (entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} |\n sort:isAsc:sortBy; track entry; let i = $index) {\n <tr [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (column of columns; track column) {\n <td [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\n <ng-container [ngTemplateOutlet]=\"default\"\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\n </ng-container>\n </td>\n }\n <ng-template #default let-column='column' let-property=\"prop\">\n @if (column.isLink) {\n <a target=\"_blank\"\n class=\"w-full text-{{column.alignment || (column.chipsDisplay ? 'justify-between' : 'justify-start')}}\"\n href=\"{{column.linkStaticUrl}}{{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\">\n {{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\n </a>\n }\n @if (!column.isLink) {\n <div class=\"flex flex-row\" [ngClass]=\"\n column.alignment == 'center' ? 'justify-center' : \n column.alignment =='right' ? 'justify-end' : \n column.alignment =='left' ? 'justify-start' : \n (column.chipsDisplay ? 'justify-between' : 'justify-start')\">\n {{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\n @if (column.chipsTarget || column.chipsDisplay) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\n </ng-container>\n <ng-template #OK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n </ng-template>\n <ng-template #NOK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </ng-template>\n </div>\n }\n </div>\n }\n </ng-template>\n @if (actions) {\n <td class=\"p-3 h-14\">\n <div class=\"grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\n @for (action of actions; track action) {\n <app-chr-button [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\n type=\"table\">\n </app-chr-button>\n }\n </div>\n </td>\n }\n </tr>\n }\n @for (r of computedRows; track r) {\n <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (c of r.columns; track c) {\n <td [ngClass]=\"c.alignment && 'text-'+(c.alignment||'left')\" class=\"p-3 min-h-[2.75rem] h-auto\">\n {{c.label && c.label + ':'}} {{c.value || (c.callback && c.callback(data))}} {{c.after}}\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <app-chr-paginator [(pageSize)]=\"pageSize\" [(page)]=\"currentPage\" (pageSizeChange)=\"emitPageSize($event)\"\n (pageChange)=\"emitCurrentPage($event)\"></app-chr-paginator>\n</div>\n<!-- <div class=\"h-full no-scrollbar\">\n<ng-content class=\"mt-5\"></ng-content>\n<div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\n <table *ngIf=\"data\"\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\n <tr *ngIf=\"data.length <= 0\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\n (sortByChange)=\"emitSortBy($event)\"></th>\n <th *ngIf=\"actions\"\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n </tr>\n <tr *ngFor=\"let entry of data\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\n (sortByChange)=\"emitSortBy($event)\"></th>\n <th *ngIf=\"actions\"\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody class=\"w-full dark:bg-slate-600\">\n <tr *ngIf=\"data.length <= 0\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n </tr>\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n <td *ngFor=\"let column of columns\" [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}\">\n {{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}</a>\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\n {{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\n <span *ngIf=\"\n column.chipsCallback\n ? column.chipsCallback(entry)\n : getProperty(entry, column.chipsTarget)\n \"\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n <span *ngIf=\"\n column.chipsCallback\n ? !column.chipsCallback(entry)\n : !getProperty(entry, column.chipsTarget)\n \"\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </div>\n </div>\n </td>\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\n <div class=\"grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\n type=\"table\">\n </app-chr-button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n</div>\n\n-->","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss'],\n standalone: true,\n imports: [MatIcon]\n})\nexport class ChrCheckboxComponent {\n\n public checked:boolean = false\n\n @Input() type:'info'|'success' = 'info'\n\n @Input() disabled:boolean = false\n\n @Output() change: EventEmitter<{checked:boolean}> = new EventEmitter<{checked:boolean}>();\n\n check(end:boolean){\n if(this.disabled)\n return\n if(end){\n this.checked = true;\n this.change.emit({checked:true})\n } else {\n this.checked = false;\n this.change.emit({checked:false})\n }\n }\n}\n","<div>\n @if (checked) {\n <div (click)=\"check(false)\" [class.info]=\"type=='info'&&!disabled\"\n [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\"\n [class.bg-grey-400]=\"disabled\"\n class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div>\n </div>\n }\n @if (!checked) {\n <div (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\"\n [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\"\n class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div>\n </div>\n }\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-chr-separator',\n templateUrl: './chr-separator.component.html',\n styleUrls: ['./chr-separator.component.scss'],\n standalone: true\n})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ChrDeleteModalComponent } from '../chr-delete-modal/chr-delete-modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DialogService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n openDelete = (callback?: Function, callbackElement?: any) => {\r\n const dialogRef = this.open(ChrDeleteModalComponent);\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n console.log(result);\r\n if (result == true) callback?.(callbackElement);\r\n });\r\n };\r\n\r\n open = (component: any, options: any | undefined = undefined) => {\r\n return this.dialog.open(component, options);\r\n };\r\n}\r\n","/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-breadcrumb/chr-breadcrumb.component';\nexport * from './lib/chr-button/chr-button.component';\nexport * from './lib/chr-delete-modal/chr-delete-modal.component';\nexport * from './lib/chr-form/chr-form.component';\nexport * from './lib/chr-search-select/chr-search-select.component';\nexport * from './lib/chr-searchbar/chr-searchbar.component';\nexport * from './lib/chr-paginator/chr-paginator.component';\nexport * from './lib/chr-table/chr-table.component';\nexport * from './lib/chr-table-header-cell/chr-table-header-cell.component';\nexport * from './lib/chr-checkbox/chr-checkbox.component';\nexport * from './lib/chr-separator/chr-separator.component';\nexport * from './lib/chr-form/chr-validators/decimal-validator';\nexport * from './lib/chr-form/chr-validators/max-date-validator';\nexport * from './lib/chr-form/chr-validators/type-validator';\nexport * from './lib/services/dialog.service';\nexport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.ts","../../../projects/chrv-components/src/lib/chr-breadcrumb/chr-breadcrumb.component.html","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.ts","../../../projects/chrv-components/src/lib/chr-button/chr-button.component.html","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.ts","../../../projects/chrv-components/src/lib/chr-delete-modal/chr-delete-modal.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-validators/type-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/decimal-validator.ts","../../../projects/chrv-components/src/lib/chr-form/chr-validators/max-date-validator.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.ts","../../../projects/chrv-components/src/lib/chr-search-select/chr-search-select.component.html","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.component.html","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.component.html","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.ts","../../../projects/chrv-components/src/lib/chr-paginator/chr-paginator.component.html","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.ts","../../../projects/chrv-components/src/lib/chr-table-header-cell/chr-table-header-cell.component.html","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.ts","../../../projects/chrv-components/src/lib/chr-table/chr-table.component.html","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.ts","../../../projects/chrv-components/src/lib/chr-checkbox/chr-checkbox.component.html","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.component.html","../../../projects/chrv-components/src/lib/services/dialog.service.ts","../../../projects/chrv-components/src/public-api.ts","../../../projects/chrv-components/src/chrv-components.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\n\n\nexport interface Breadcrumb {\n display: string;\n link?: string;\n callback?: Function;\n}\n\n@Component({\n selector: 'app-chr-breadcrumb',\n templateUrl: './chr-breadcrumb.component.html',\n styleUrls: ['./chr-breadcrumb.component.scss'],\n standalone: true,\n imports: [MatButton],\n})\nexport class BreadcrumbComponent {\n @Input() crumbs?: Breadcrumb[];\n\n constructor(public router: Router) {}\n\n navigateTo = (uri: string, data?: any) => {\n this.router.navigate([uri], { state: data });\n };\n}\n","<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n @for (crumb of crumbs; track crumb) {\n <div class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n }\n</div>","import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\n standalone: true,\n imports: [MatTooltipModule, MatIconModule, MatButtonModule, CommonModule],\n})\nexport class ChrButtonComponent {\n @Input() display: string = '';\n @Input() icon: string = '';\n @Input() click?: Function;\n @Input() color: 'primary' | 'accent' | 'warn' | 'none' = 'none';\n @Input() predicate?: boolean = true;\n @Input() type: 'responsive' | 'table' | 'full' | 'fixed' | 'none' = 'none';\n @Input() href?: string;\n @Input() target?: '_blank' | '_parent' | '_self' | '_top';\n @Input() disabled: boolean = false;\n @Input() tooltip?: string;\n @Input() tooltipPosition?:\n | 'above'\n | 'below'\n | 'left'\n | 'right'\n | 'before'\n | 'after';\n\n constructor() {}\n\n setDisabled = (is: boolean) => {\n this.disabled = is;\n };\n\n doClick = () => {\n this.click?.();\n };\n}\n","<div [ngClass]=\"type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\" [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 !w-36' : ''\"\n [ngClass]=\"type == 'responsive' ? 'h-14 grid grid-cols-1 w-full sm:!w-36': ''\">\n @if (predicate) {\n <a mat-button mat-flat-button [disabled]=\"disabled\" class=\"w-full\" color=\"{{ color }}\"\n (click)=\"click?.()\" [attr.href]=\"href && href\" [attr.target]=\"target && target\" [matTooltip]=\"tooltip||''\"\n [matTooltipPosition]=\"tooltipPosition||'above'\">\n {{ display }}\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n </a>\n }\n</div>\n<!--\nIF\nClick\ncolor\ntype: table : full\nicon\n-->","import { Component } from '@angular/core';\nimport {\n MatDialogRef,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose,\n} from '@angular/material/dialog';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n ChrButtonComponent,\n MatDialogClose,\n MatTooltip,\n ],\n})\nexport class ChrDeleteModalComponent {\n public valid: boolean = false;\n\n constructor(public dialogRef: MatDialogRef<ChrDeleteModalComponent>) {}\n\n ngOnInit() {}\n\n public close = () => {\n this.dialogRef.close(true);\n };\n}\n","<div class=\"dark:bg-slate-800 w-full overflow-auto overflow-x-hidden\">\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"mat-typography dark:!text-gray-400\">\n Attention:\n <br>\n <br>\n La suppression d'un élément est irréversible.\n <br>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <br>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <br>\n <br>\n En effectuant cette action et cliquant sur \"Confirmer\" vous certifiez que vous avez pris connaissance des\n conséquences possibles et souhaitez tout de même poursuivre.\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"w-full flex flex-row justify-between\">\n <app-chr-button class=\"w-36\" display=\"Annuler\" color=\"accent\" mat-dialog-close></app-chr-button>\n <app-chr-button class=\"w-36\" display=\"Confirmer\" color=\"warn\" [click]=\"close\"\n [matTooltip]=\"'Attention: cette action est irréversible !'\" matTooltipPosition=\"above\"></app-chr-button>\n </div>\n </mat-dialog-actions>\n</div>","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-type]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: TypeValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class TypeValidatorDirective implements Validator {\r\n @Input() type?: string;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.type ? type(this.type)(control) : null;\r\n }\r\n}\r\n\r\nexport function type(type: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const isType = typeof value == type;\r\n\r\n return !isType\r\n ? ({\r\n type: true,\r\n requiredType: type,\r\n actualType: typeof value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-decimal]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DecimalValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class DecimalValidatorDirective implements Validator {\r\n @Input() amount?: number;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.amount ? decimal(this.amount)(control) : null;\r\n }\r\n}\r\n\r\nexport function decimal(amount: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n let isTooLong = false;\r\n\r\n const str = `${value}`;\r\n isTooLong =\r\n str.indexOf(',') != -1\r\n ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount\r\n : str.indexOf('.') != -1\r\n ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount\r\n : false;\r\n\r\n return isTooLong\r\n ? ({\r\n decimal: true,\r\n max: amount,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import { Directive, forwardRef, Input, Injectable } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@Directive({\r\n selector: '[app-max-date]',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxDateValidatorDirective,\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class MaxDateValidatorDirective implements Validator {\r\n @Input() date?: Date;\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.date ? maxDate(this.date)(control) : null;\r\n }\r\n}\r\n\r\nexport function maxDate(date: Date): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const maxDate = moment(date);\r\n const inputDate = moment(value);\r\n\r\n return !(inputDate.isValid() && inputDate.isBefore(maxDate))\r\n ? ({\r\n maxdate: true,\r\n max: maxDate.toDate(),\r\n actual: value,\r\n } as ValidationErrors)\r\n : null;\r\n };\r\n}\r\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport {\n MatAutocomplete,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n Observable,\n startWith,\n map,\n of,\n combineLatest,\n combineLatestAll,\n} from 'rxjs';\nimport { MatOption } from '@angular/material/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { AsyncPipe } from '@angular/common';\n\nexport interface IInputSearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\n@Component({\n selector: 'app-chr-search-select',\n templateUrl: './chr-search-select.component.html',\n styleUrls: ['./chr-search-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: ChrSearchSelectComponent,\n },\n ],\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatAutocompleteTrigger,\n MatTooltip,\n MatAutocomplete,\n MatOption,\n AsyncPipe\n],\n})\nexport class ChrSearchSelectComponent implements ControlValueAccessor {\n public predicate: boolean = true;\n\n public searchSelect: FormControl = new FormControl();\n public filteredModelOptions?: Observable<any>;\n\n public onTouched: any = () => {};\n\n @Input() placeholder?: string;\n @Input() data: any[] | null = [];\n @Input() display?: Function;\n @Input() disabled: boolean = false;\n @Input() model: any | null = null;\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n @Output() keyup: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n\n @Input() filters?: IInputSearchFilter[];\n public filterIndex: number = 0;\n\n ngOnInit() {\n this.registerFilters();\n this.registerAutoComplete();\n }\n\n getModelDisplay(model: any) {\n return this.display?.(model);\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n\n writeValue(obj: any): void {\n this.searchSelect.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.searchSelect.valueChanges.subscribe((value) => {\n this.checkNull(value);\n fn(value);\n });\n }\n\n checkNull(value: any | null) {\n if (typeof value == 'string')\n if (value == '' || value.trim() == '') this.setNull;\n if (value == null || value == '') {\n this.setNull();\n }\n }\n\n setNull() {\n this.emit(null);\n this.model = null;\n }\n\n registerOnTouched(fn: any): void {\n this.searchSelect.markAsTouched = fn;\n }\n\n registerFilters = () => {\n this.filteredModelOptions = this.searchSelect.valueChanges.pipe(\n startWith(''),\n map((value) => this._filterModel(value! || -1)),\n map((values) => {\n return this.filters && this.filters[this.filterIndex].callback\n ? values.filter((r) => this.filters![this.filterIndex].callback!(r))\n : values;\n })\n );\n };\n\n registerAutoComplete = () => {\n //If there is only one value left,\n this.filteredModelOptions?.subscribe((values) => {\n if (values.length == 1) {\n this.emit(values[0]);\n }\n });\n };\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n isDisabled ? this.searchSelect.disable() : this.searchSelect.enable();\n }\n\n increment = () => {\n this.writeValue('');\n const modulo = this.filters ? this.filters.length : 1;\n this.filterIndex = (this.filterIndex + 1) % modulo;\n };\n\n getValue = () => {\n return this.searchSelect.value;\n };\n\n void = () => {};\n\n private _filterModel(value: number | string): any[] {\n return typeof value == 'string'\n ? this._doFilterModelString(`${value}`)\n : this._doFilterModelInt(value);\n }\n\n private _doFilterModelInt = (id: number) => {\n const tmp = this.data?.find((r) => r.id == id);\n return tmp ? tmp : [];\n };\n\n private _doFilterModelString(input: string) {\n return this.data?.filter((r) => this._filterValues(r, input));\n }\n\n private _filterValues(value: any, input: string) {\n return `${this.getModelDisplay(value)}`\n .toLowerCase()\n .includes(input.toLowerCase());\n }\n}\n","@if (predicate) {\n <div class=\"w-full dark:bg-slate-600 rounded-lg relative\">\n <div class=\"w-full relative\">\n <input #input type=\"text\" matInput [formControl]=\"searchSelect\" [(ngModel)]=\"model\"\n class=\"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"\n placeholder=\"{{ placeholder }}\" required (keyup)=\"keyup.emit($event)\" [matAutocomplete]=\"auto\" />\n @if (filters) {\n <span [matTooltip]=\"filters[filterIndex].tooltip || ''\" matTooltipPosition=\"above\"\n class=\"absolute inner-button cursor-pointer top-[1px] right-[1.5px] h-[calc(100%_-_2px)] text-gray-900 dark:text-gray-400 px-1 border-l border-gray-300 rounded-r-md text-end opacity-100 bg-gray-50 dark:bg-gray-700 flex justify-center align-middle items-center\"\n (click)=\"filters ? increment() : void\">{{ filters[filterIndex].display }}\n </span>\n }\n </div>\n <mat-autocomplete class=\"dark:!bg-slate-600 dark:!text-white rounded-lg\" #auto=\"matAutocomplete\" id=\"auto\"\n [displayWith]=\"getModelDisplay.bind(this)\" (optionSelected)=\"emit($event.option.value)\">\n @for (model of filteredModelOptions | async; track model) {\n <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n }\n </mat-autocomplete>\n </div>\n}","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { TypeValidatorDirective, type } from \"./chr-validators/type-validator\";\nimport { ValidatorFn, ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport {\n\tFormBuilder,\n\tFormGroup,\n\tValidators,\n\tFormControl,\n} from \"@angular/forms\";\nimport { decimal } from \"./chr-validators/decimal-validator\";\nimport { maxDate } from \"./chr-validators/max-date-validator\";\nimport { MatError } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { ChrSearchSelectComponent } from \"../chr-search-select/chr-search-select.component\";\nimport {\n\tDatePipe,\n\tCommonModule,\n\tDATE_PIPE_DEFAULT_OPTIONS,\n} from \"@angular/common\";\n\nexport interface ISearchFilter {\n\tdisplay: string;\n\tcallback?: Function;\n\ttooltip?: string;\n}\n\nexport interface IControlValidation {\n\trule: string;\n\tvalue?: any;\n\tdisplay?: string;\n}\n\nexport interface IControl {\n\tlabel?: string;\n\tname: string;\n\tspan?: string;\n\tplaceholder?: any;\n\twidth?: \"col\" | \"row\";\n\ttype:\n\t\t| \"text\"\n\t\t| \"password\"\n\t\t| \"textArea\"\n\t\t| \"number\"\n\t\t| \"date\"\n\t\t| \"searchSelect\"\n\t\t| \"select\";\n\tvalue?: any;\n\tdata?: any[] | null;\n\ticon?: string;\n\ticonCallback?: Function;\n\ticonCallbackDisabled?: boolean;\n\ticonTooltip?: string;\n\tfn?: Function;\n\tfilters?: ISearchFilter[];\n\tvalidations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n\ttitle?: string;\n\tcontrols: IControl[];\n}\n\nexport interface IFormControl {\n\t[key: string]: any;\n}\n@Component({\n\tselector: \"app-chr-form\",\n\ttemplateUrl: \"./chr-form.component.html\",\n\tstyleUrls: [\"./chr-form.component.scss\"],\n\tstandalone: true,\n\timports: [\n\t\tReactiveFormsModule,\n\t\tFormsModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatError,\n\t\tChrSearchSelectComponent,\n\t\tDatePipe,\n\t\tCommonModule,\n\t\tTypeValidatorDirective,\n\t],\n\tproviders: [\n\t\tDatePipe,\n\t\t{\n\t\t\tprovide: DATE_PIPE_DEFAULT_OPTIONS,\n\t\t\tuseValue: { dateFormat: \"shortDate\" },\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ChrFormComponent implements AfterViewInit {\n\t@Input() sections?: IFormSection[];\n\t@Input() valid?: boolean;\n\t@Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Input() model?: any;\n\t@Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n\t@Input() disabled?: boolean;\n\t@Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n\t@Output() formChange: EventEmitter<IFormControl> =\n\t\tnew EventEmitter<IFormControl>();\n\n\tpublic form: FormGroup;\n\tconstructor(private builder: FormBuilder, private datePipe: DatePipe) {\n\t\tthis.form = builder.group({});\n\t}\n\n\tngOnInit(): void {\n\t\tthis._initValidators();\n\t\t//this._initValues();\n\t\tthis.form.valueChanges.subscribe((res) => {\n\t\t\tthis.valid = this.form.valid;\n\t\t\tthis.validChange.emit(this.form.valid);\n\t\t\tthis.valuesChange.emit(res);\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis._initValues();\n\t\tthis._registerInputEmitters();\n\t\tthis._registerInputUpdaters();\n\t}\n\n\tvalue = (input?: string) => {\n\t\tif (input) return this.form.controls[input]?.value;\n\t\treturn this.form.value;\n\t};\n\n\tsetValue = (input: string, value: any) => {\n\t\tif (input) this.form.get(input)?.setValue(value);\n\t};\n\n\tisValid = (input?: string) => {\n\t\tif (input) return this.form.get(input)?.valid;\n\t\treturn this.valid;\n\t};\n\n\tisControlRequired = (control: IControl) => {\n\t\treturn control.validations?.find((v) => v.rule.toLowerCase() == \"required\");\n\t};\n\n\tpatchValue = (key: string, value: any) => {\n\t\tthis.form.patchValue({ [key]: value });\n\t};\n\n\treset = () => {\n\t\tthis.form.reset();\n\t};\n\n\tprivate _registerInputEmitters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tconst formControl = this.form.get(control.name);\n\t\t\t\tformControl!.valueChanges.subscribe((e) => {\n\t\t\t\t\t//console.log('EMITTING \"' + control.name + '\": ' + e);\n\t\t\t\t\tthis.formChange.emit({ [control.name]: e });\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _registerInputUpdaters = () => {\n\t\tfor (const section of this.sections!) {\n\t\t\tfor (const control of section.controls) {\n\t\t\t\tthis.form.get(control.name)!.valueChanges.subscribe((value) => {\n\t\t\t\t\t//console.log('SETTING \"' + control.name + '\": ' + value);\n\t\t\t\t\tif (this.model) {\n\t\t\t\t\t\tthis.model[control.name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontrol.value = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _initValues = () => {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (let control of section.controls) {\n\t\t\t\tconst value = this.model ? this.model[control.name] : null;\n\t\t\t\t// console.log(\n\t\t\t\t// \t'INITIALIZING \"' +\n\t\t\t\t// \t\tcontrol.name +\n\t\t\t\t// \t\t'\": MODEL -> ' +\n\t\t\t\t// \t\tvalue +\n\t\t\t\t// \t\t\" | CVALUE -> \" +\n\t\t\t\t// \t\tcontrol.value\n\t\t\t\t// );\n\t\t\t\tif (!value) {\n\t\t\t\t\tif (control.value)\n\t\t\t\t\t\tthis.form\n\t\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t\t.setValue(this._convertValueToType(control.value, control.type));\n\t\t\t\t\telse this.form.get(control.name)!.setValue(null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.form\n\t\t\t\t\t\t.get(control.name)!\n\t\t\t\t\t\t.setValue(this._convertValueToType(value, control.type));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _convertValueToType = (\n\t\tvalue: any,\n\t\ttype:\n\t\t\t| \"text\"\n\t\t\t| \"password\"\n\t\t\t| \"textArea\"\n\t\t\t| \"number\"\n\t\t\t| \"date\"\n\t\t\t| \"searchSelect\"\n\t\t\t| \"select\"\n\t) => {\n\t\t//console.log(\"VALUE: \" + value, \"TYPE: \" + type);\n\t\tswitch (type) {\n\t\t\tcase \"date\":\n\t\t\t\t//console.log(\"RES:\" + this.datePipe.transform(value, \"yyyy-MM-dd\"));\n\t\t\t\treturn this.datePipe.transform(value, \"yyyy-MM-dd\");\n\t\t\tdefault:\n\t\t\t\t//console.log(\"RES: \" + value);\n\t\t\t\treturn value;\n\t\t}\n\t};\n\n\tprivate _initValidators() {\n\t\tfor (const section of this.sections || []) {\n\t\t\tfor (const input of section.controls) {\n\t\t\t\tif (input.type == \"searchSelect\" && !input.fn)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"An input of type 'searchSelect' needs a display function !\"\n\t\t\t\t\t);\n\t\t\t\tconst control = new FormControl(\n\t\t\t\t\tinput.value,\n\t\t\t\t\tthis._getValidators(input.validations)\n\t\t\t\t);\n\t\t\t\tthis.form.addControl(input.name, control);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getValidators = (validations?: IControlValidation[]) => {\n\t\tconst validators: ValidatorFn[] = [];\n\t\tif (!validations) return validators;\n\t\t//Switch case breaks the mobile app so we'll do if statements\n\t\tfor (const validation of validations) {\n\t\t\tconst rule = validation.rule.toLocaleLowerCase();\n\t\t\tif (rule == \"min\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.min(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"max\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.max(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"required\") {\n\t\t\t\tvalidation.display = \"Ce champs est requis !\";\n\t\t\t\tvalidators.push(Validators.required);\n\t\t\t}\n\t\t\tif (rule == \"email\") {\n\t\t\t\tvalidation.display = \"Cette adresse email n'est pas valide !\";\n\t\t\t\tvalidators.push(Validators.email);\n\t\t\t}\n\t\t\tif (rule == \"minlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop petite !\";\n\t\t\t\tvalidators.push(Validators.minLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxlength\") {\n\t\t\t\tvalidation.display = \"Cette valeur est trop grande !\";\n\t\t\t\tvalidators.push(Validators.maxLength(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"type\") {\n\t\t\t\tvalidation.display = \"Cette valeur n'est pas valide !\";\n\t\t\t\tvalidators.push(type(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"decimal\") {\n\t\t\t\tvalidation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(decimal(validation.value));\n\t\t\t}\n\t\t\tif (rule == \"maxdate\") {\n\t\t\t\tvalidation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n\t\t\t\tvalidators.push(maxDate(validation.value));\n\t\t\t}\n\t\t}\n\t\treturn validators;\n\t};\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n @for (section of sections; track section; let index = $index) {\n <div>\n @if (section.title) {\n <h2 class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n }\n <div class=\"grid gap-6 sm:grid-cols-2\">\n @for (control of section.controls; track control; let index = $index) {\n <div class=\"relative\" [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n @if (control.label) {\n <label class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n @if (isControlRequired(control)) {\n <span class=\"text-red-500\">*</span>\n }\n :\n </label>\n }\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--TEXT-->\n @if (control.type == 'text') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--PASSWORD-->\n @if (control.type == 'password') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"password\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--TEXT AREA-->\n @if (control.type == 'textArea') {\n <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"h-11 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"></textarea>\n }\n <!--NUMBER-->\n @if (control.type == 'number') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n type=\"number\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n placeholder=\"{{ control.placeholder }}\" [formControlName]=\"control.name\"\n [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--DATE-->\n @if (control.type == 'date') {\n <input class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-200 dark:bg-red-800':''\"\n type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\" [formControlName]=\"control.name\"\n placeholder=\"{{ control.placeholder }}\" [(value)]=\"model?.[control.name] || control.value\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n }\n <!--SearchSelect-->\n @if (control.type == 'searchSelect') {\n <app-chr-search-select class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? '[&_input]:!bg-red-100 dark:[&_input]:!bg-red-800':''\"\n id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\" [display]=\"control.fn!\"\n [placeholder]=\"control.placeholder\" [filters]=\"control.filters\" [formControlName]=\"control.name\"\n [(model)]=\"model?.[control.name] || control.value\">\n </app-chr-search-select>\n }\n @if (control.icon) {\n <span\n [ngClass]=\"control.iconCallbackDisabled ? 'text-gray-400 dark:text-gray-500':'text-gray-900 dark:text-white'\"\n class=\"absolute p-2.5 bottom-0 right-0\" [matTooltip]=\"control.iconTooltip || ''\"\n matTooltipPosition=\"above\"\n (click)=\"!control.iconCallbackDisabled && control.iconCallback?.(form.controls[control.name].value)\"><mat-icon\n class=\"flex justify-center align-middle items-center content-center text-lg\">{{control.icon}}</mat-icon></span>\n }\n @for (validation of control.validations; track validation) {\n <div class=\"h-0\">\n @if (\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n ) {\n <mat-error>{{ validation.display }}</mat-error>\n }\n </div>\n }\n @if (control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)) {\n <span class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n }\n </div>\n }\n </div>\n @if (index != (sections||[]).length - 1) {\n <div class=\"py-4\">\n <hr class=\"\" />\n </div>\n }\n </div>\n }\n </fieldset>\n </form>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\n standalone: true,\n imports: [ReactiveFormsModule],\n})\nexport class ChrSearchbarComponent {\n @Input() model?: string | null;\n @Output() modelChange: EventEmitter<string> = new EventEmitter();\n @Input() placeholder?: string | null;\n @Input() label?: string | null;\n public searchBy = new FormControl<string>('');\n\n constructor() {\n this.searchBy.valueChanges.subscribe((value) => this.emit(value));\n }\n\n emit(event: any) {\n this.modelChange.emit(event);\n }\n}\n","<div class=\"w-full\">\n <label>{{ label }}</label>\n <input matInput [formControl]=\"searchBy\" placeholder=\"{{ placeholder }}\" type=\"text\"\n class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\" />\n</div>","import {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\nimport { NgClass, CommonModule } from '@angular/common';\nimport { ChrFormComponent } from '../chr-form/chr-form.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n standalone: true,\n imports: [ChrFormComponent, CommonModule, MatIconModule],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n private _page: number = -5;\n @Input()\n get page() {\n return this._page;\n }\n set page(value: number) {\n this._page = value;\n this.pageChange.emit(value);\n this.changeDetector.markForCheck();\n this.changeDetector.detectChanges();\n }\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n instance?: PaginationInstance;\n\n constructor(\n public service: PaginationService,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n ngAfterContentChecked(): void {\n //console.log(this.service, this.service.getInstance('chr_data-table'));\n this.instance = this.service.getInstance(\n 'chr_data-table'\n ) as PaginationInstance;\n }\n\n ngOnInit(): void {}\n\n public previous = () => {\n if (this.isFirstPage()) return;\n this.page--;\n this.pageChange.emit(this.page);\n //this.emit();\n };\n\n public next = () => {\n if (this.isLastPage()) return;\n this.page += 1;\n this.pageChange.emit(this.page);\n //this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.page = page;\n this.emit();\n };\n\n public setPageEventHandler = (event: any) => {\n return this.setPage(event.target.value);\n };\n\n public isFirstPage = () => {\n return this.page == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n if (this.instance) this.instance.itemsPerPage = pageSize;\n this.pageSizeChange.emit(pageSize);\n };\n\n public setPageSizeEventHandler = (event: any) => {\n return this.setPageSize(event.target.value);\n };\n\n public isLastPage = () => {\n if (!this.instance?.totalItems) return false;\n return (\n this.page >=\n Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n );\n };\n\n // public pageSize = () => this.instance.itemsPerPage;\n\n public lastPage = () =>\n this.instance?.totalItems\n ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)\n : 1;\n\n private emit = (page: number | undefined = undefined) => {\n if (!page) this.pageChange.emit(this.page);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between dark:text-gray-400\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <div class=\"w-20 ml-1\">\n <app-chr-form (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n }]\n }]\">\n </app-chr-form>\n </div>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center \">\n <button type=\"button\" (click)=\"previous()\" [ngClass]=\"isFirstPage() ? 'cursor-not-allowed':'cursor-pointer'\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>keyboard_double_arrow_left</mat-icon></button>\n\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n {{page}} / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : 'cursor-not-allowed'\"\n (click)=\"!isLastPage() && next()\"\n class=\"w-fit flex justify-center align-middle items-center\"><mat-icon>keyboard_double_arrow_right</mat-icon></button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\n/**\n * This should only be used as a directive\n */\n@Component({\n selector: 'app-chr-table-header-cell, [app-chr-table-header-cell]',\n templateUrl: './chr-table-header-cell.component.html',\n styleUrls: ['./chr-table-header-cell.component.scss'],\n standalone: true,\n imports: [NgClass, MatIcon],\n})\nexport class ChrTableHeaderCellComponent {\n @Input() display?: string;\n @Input() column?: string;\n @Input() alignment?: string;\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n orderBy = (column?: string) => {\n if (!this.sortBy) this.sortBy = column;\n\n if (this.sortBy == column) {\n this.isAsc = !this.isAsc;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n } else {\n this.isAsc = true;\n this.sortBy = column;\n this.isAscChange.emit(this.isAsc);\n this.sortByChange.emit(this.sortBy);\n }\n };\n}\n","<div class=\"relative w-full cursor-pointer flex flex-row align-middle self-center\" [ngClass]=\"\n alignment == 'left' ? 'justify-start' : \n alignment == 'center' ? 'justify-center' : \n alignment == 'right' ? 'justify-end' : \n 'justify-left'\" (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n @if (sortBy) {\n <div class=\"absolute right-3 top-0 h-0 w-0\">\n @if (sortBy == column && isAsc) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (sortBy == column && !isAsc) {\n <mat-icon>arrow_downward</mat-icon>\n }\n </div>\n }\n</div>\n<ng-content></ng-content>","import * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { ChrPaginatorComponent } from '../chr-paginator/chr-paginator.component';\nimport { ChrButtonComponent } from '../chr-button/chr-button.component';\nimport { ChrTableHeaderCellComponent } from '../chr-table-header-cell/chr-table-header-cell.component';\nimport { SortPipe } from 'chrv-pipes';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport {\n CommonModule,\n DATE_PIPE_DEFAULT_OPTIONS,\n DatePipe,\n} from '@angular/common';\n\nexport interface IColumn {\n display: string;\n alignment?: 'left' | 'center' | 'right';\n chipsTarget?: string[];\n chipsDisplay?: string[];\n chipsCallback?: Function;\n properties?: string[];\n callback?: Function;\n date?: string;\n isLink?: boolean;\n linkStaticUrl?: string;\n}\n\nexport interface IComputedRow {\n columns: IComputedColumn[];\n}\n\nexport interface IComputedColumn {\n label?: string;\n value?: any;\n callback?: Function;\n alignment?: 'left' | 'center' | 'right';\n after?: string;\n}\n\nexport interface IAction {\n display: string;\n callback: Function;\n disabled?: boolean;\n disabledCallback?: Function;\n color: 'accent' | 'primary' | 'warn';\n}\n\n@Component({\n selector: 'app-chr-table, [app-chr-table]',\n templateUrl: './chr-table.component.html',\n styleUrls: ['./chr-table.component.scss'],\n standalone: true,\n imports: [\n ChrTableHeaderCellComponent,\n ChrButtonComponent,\n ChrPaginatorComponent,\n SortPipe,\n NgxPaginationModule,\n CommonModule,\n DatePipe,\n ],\n providers: [\n DatePipe,\n {\n provide: DATE_PIPE_DEFAULT_OPTIONS,\n useValue: { dateFormat: 'shortDate' },\n },\n ],\n})\nexport class ChrTableComponent implements AfterViewInit {\n @Input() computedRows?: IComputedRow[];\n @Input() columns?: IColumn[];\n @Input() data: any[] | null = [];\n @Input() actions?: IAction[];\n\n @Input() isAsc: boolean = true;\n @Output() isAscChange: EventEmitter<boolean> = new EventEmitter();\n @Input() sortBy?: string;\n @Output() sortByChange: EventEmitter<string> = new EventEmitter();\n\n @Input() pageSize: number = 50;\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n\n private _page: number = 1;\n @Input()\n get currentPage() {\n return this._page;\n }\n set currentPage(value: number) {\n this._page = value;\n this.currentPageChange.emit(value);\n this.changeDetector.markForCheck();\n this.changeDetector.detectChanges();\n }\n @Output() currentPageChange: EventEmitter<number> = new EventEmitter();\n\n constructor(\n private _date: DatePipe,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {}\n\n emitIsAsc(isAsc: any) {\n this.isAscChange.emit(isAsc);\n }\n\n emitSortBy(sortBy: any) {\n this.sortByChange.emit(sortBy);\n }\n\n emitPageSize(pageSize: any) {\n this.pageSize = pageSize;\n this.pageSizeChange.emit(pageSize);\n }\n\n emitCurrentPage(currentPage: any) {\n this.currentPage = currentPage;\n this.currentPageChange.emit(currentPage);\n }\n\n getProperty = (entry: any, properties?: any[]) => {\n if (!properties) return entry;\n let value = entry;\n for (const i of properties) {\n value = (value as any)?.[i];\n }\n return value;\n };\n\n getIsAsc = () => {\n return this.isAsc;\n };\n\n getSortBy = () => {\n return this.sortBy;\n };\n}\n","<div class=\"h-full no-scrollbar\">\n <ng-content class=\"mt-5\"></ng-content>\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\n @if (data) {\n <table\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3\" display=\"{{ column.display }}\" column=\"{{ column.properties }}\"\n [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\">\n </th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n }\n </tr>\n }\n @for (entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}; track entry) {\n <tr class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\n @for (column of columns; track column) {\n <th app-chr-table-header-cell class=\"p-3 h-auto\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" alignment=\"{{column.alignment}}\"\n (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\" (sortByChange)=\"emitSortBy($event)\"></th>\n }\n @if (actions) {\n <th\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n }\n </tr>\n }\n </thead>\n <tbody class=\"w-full dark:bg-slate-600\">\n @if (data.length <= 0) { <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n @if (actions) {\n <td class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n }\n </tr>\n }\n <!--\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\n <td *ngFor=\"let column of columns\">\n <ng-container [ngTemplateOutlet]=\"\n column.isLink ? link: div\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\n </ng-container>\n <ng-template #link let-prop='prop'>\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\n prop}}</a>\n </ng-template>\n <ng-template #div let-prop='prop'>\n <div>\n <span *ngIf=\"column.chipsDisplay\">\n </span>\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\n </div>\n </ng-template>\n </td>\n </tr>\n -->\n @for (entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} |\n sort:isAsc:sortBy; track entry; let i = $index) {\n <tr [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (column of columns; track column) {\n <td [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\n <ng-container [ngTemplateOutlet]=\"default\"\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\n </ng-container>\n </td>\n }\n <ng-template #default let-column='column' let-property=\"prop\">\n @if (column.isLink) {\n <a target=\"_blank\"\n class=\"w-full text-{{column.alignment || (column.chipsDisplay ? 'justify-between' : 'justify-start')}}\"\n href=\"{{column.linkStaticUrl}}{{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\">\n {{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\n </a>\n }\n @if (!column.isLink) {\n <div class=\"flex flex-row\" [ngClass]=\"\n column.alignment == 'center' ? 'justify-center' : \n column.alignment =='right' ? 'justify-end' : \n column.alignment =='left' ? 'justify-start' : \n (column.chipsDisplay ? 'justify-between' : 'justify-start')\">\n {{\n column.date\n ? column.callback\n ? column.callback(property)\n : (property | date : column.date)\n : column.callback\n ? column.callback(property)\n : property\n }}\n @if (column.chipsTarget || column.chipsDisplay) {\n <div>\n <ng-container\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\n </ng-container>\n <ng-template #OK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n </ng-template>\n <ng-template #NOK>\n <span\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </ng-template>\n </div>\n }\n </div>\n }\n </ng-template>\n @if (actions) {\n <td class=\"p-3 h-14\">\n <div class=\"grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\n @for (action of actions; track action) {\n <app-chr-button [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\n type=\"table\">\n </app-chr-button>\n }\n </div>\n </td>\n }\n </tr>\n }\n @for (r of computedRows; track r) {\n <tr\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n @for (c of r.columns; track c) {\n <td [ngClass]=\"c.alignment && 'text-'+(c.alignment||'left')\" class=\"p-3 min-h-[2.75rem] h-auto\">\n {{c.label && c.label + ':'}} {{c.value || (c.callback && c.callback(data))}} {{c.after}}\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n <app-chr-paginator [(pageSize)]=\"pageSize\" [(page)]=\"currentPage\" (pageSizeChange)=\"emitPageSize($event)\"\n (pageChange)=\"emitCurrentPage($event)\"></app-chr-paginator>\n</div>\n<!-- <div class=\"h-full no-scrollbar\">\n<ng-content class=\"mt-5\"></ng-content>\n<div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\n <table *ngIf=\"data\"\n class=\"table-auto border dark:border-none relative flex flex-row flex-no-wrap w-full rounded-lg sm:shadow-lg mb-5 dark:bg-slate-600 no-scrollbar\">\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\n <tr *ngIf=\"data.length <= 0\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\n (sortByChange)=\"emitSortBy($event)\"></th>\n <th *ngIf=\"actions\"\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n </tr>\n <tr *ngFor=\"let entry of data\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\n (sortByChange)=\"emitSortBy($event)\"></th>\n <th *ngIf=\"actions\"\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle self-center w-36\"\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody class=\"w-full dark:bg-slate-600\">\n <tr *ngIf=\"data.length <= 0\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\n </tr>\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:text-gray-400 sm:odd:bg-gray-200 sm:dark:odd:bg-slate-700\">\n <td *ngFor=\"let column of columns\" [ngClass]=\"\n column.chipsTarget || column.chipsDisplay\n ? ''\n : ''\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}\">\n {{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}</a>\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\n {{\n column.date\n ? column.callback\n ? column.callback(getProperty(entry, column.properties))\n : (getProperty(entry, column.properties) | date : column.date)\n : column.callback\n ? column.callback(getProperty(entry, column.properties))\n : getProperty(entry, column.properties)\n }}\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\n <span *ngIf=\"\n column.chipsCallback\n ? column.chipsCallback(entry)\n : getProperty(entry, column.chipsTarget)\n \"\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-green-100 text-green-800 text-xs font-medium py-0.5 rounded-full dark:bg-green-900 dark:text-green-300\">{{\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\n <span *ngIf=\"\n column.chipsCallback\n ? !column.chipsCallback(entry)\n : !getProperty(entry, column.chipsTarget)\n \"\n class=\"w-24 flex text-center content-center align-middle items-center justify-center bg-red-100 text-red-800 text-xs font-medium py-0.5 rounded-full dark:bg-red-900 dark:text-red-300\">{{\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\n </div>\n </div>\n </td>\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\n <div class=\"grid gap-3 justify-center align-middle items-center\"\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\n action.disabledCallback\n ? action.disabledCallback(entry)\n : action.disabled || false\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\n type=\"table\">\n </app-chr-button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n</div>\n\n-->","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss'],\n standalone: true,\n imports: [MatIcon]\n})\nexport class ChrCheckboxComponent {\n\n public checked:boolean = false\n\n @Input() type:'info'|'success' = 'info'\n\n @Input() disabled:boolean = false\n\n @Output() change: EventEmitter<{checked:boolean}> = new EventEmitter<{checked:boolean}>();\n\n check(end:boolean){\n if(this.disabled)\n return\n if(end){\n this.checked = true;\n this.change.emit({checked:true})\n } else {\n this.checked = false;\n this.change.emit({checked:false})\n }\n }\n}\n","<div>\n @if (checked) {\n <div (click)=\"check(false)\" [class.info]=\"type=='info'&&!disabled\"\n [class.bg-green-100]=\"type=='success'&&!disabled\" [class.cursor-pointer]=\"!disabled\"\n [class.bg-grey-400]=\"disabled\"\n class=\"box-border rounded-lg p-3 h-12 text-center border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>check-circle</mat-icon></div>\n </div>\n }\n @if (!checked) {\n <div (click)=\"check(true)\" [class.cursor-pointer]=\"!disabled\" [class.disabled]=\"disabled\"\n [class.bg-gray-200]=\"disabled\" [class.bg-red-100]=\"!disabled\"\n class=\"box-border p-3 h-12 text-center rounded-lg border-bottom-accent sm:border-none\">\n <div class=\"flex justify-center items-center\"><mat-icon>close</mat-icon></div>\n </div>\n }\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-chr-separator',\n templateUrl: './chr-separator.component.html',\n styleUrls: ['./chr-separator.component.scss'],\n standalone: true\n})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ChrDeleteModalComponent } from '../chr-delete-modal/chr-delete-modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DialogService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n openDelete = (callback?: Function, callbackElement?: any) => {\r\n const dialogRef = this.open(ChrDeleteModalComponent);\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n console.log(result);\r\n if (result == true) callback?.(callbackElement);\r\n });\r\n };\r\n\r\n open = (component: any, options: any | undefined = undefined) => {\r\n return this.dialog.open(component, options);\r\n };\r\n}\r\n","/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-breadcrumb/chr-breadcrumb.component';\nexport * from './lib/chr-button/chr-button.component';\nexport * from './lib/chr-delete-modal/chr-delete-modal.component';\nexport * from './lib/chr-form/chr-form.component';\nexport * from './lib/chr-search-select/chr-search-select.component';\nexport * from './lib/chr-searchbar/chr-searchbar.component';\nexport * from './lib/chr-paginator/chr-paginator.component';\nexport * from './lib/chr-table/chr-table.component';\nexport * from './lib/chr-table-header-cell/chr-table-header-cell.component';\nexport * from './lib/chr-checkbox/chr-checkbox.component';\nexport * from './lib/chr-separator/chr-separator.component';\nexport * from './lib/chr-form/chr-validators/decimal-validator';\nexport * from './lib/chr-form/chr-validators/max-date-validator';\nexport * from './lib/chr-form/chr-validators/type-validator';\nexport * from './lib/services/dialog.service';\nexport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chrv-components",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",
Binary file