chrv-components 1.2.3 → 1.2.4

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
@@ -129,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
129
129
  }], valuesChange: [{
130
130
  type: Output
131
131
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkQsT0FBTyxFQUdMLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQWdEOUQsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUFvQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBWi9CLGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBQzlCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdEIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUdqRSxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTFELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWdCL0QsVUFBSyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDekIsSUFBSSxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lB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QUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE0Qk8sZUFBZTtRQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkMsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzNDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7Z0JBQ0osTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQzdCLEtBQUssQ0FBQyxLQUFLLEVBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQ3ZDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUMzQztTQUNGO0lBQ0gsQ0FBQzs7OEdBbEVVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLCtPQzNEN0IseXZPQWtHTTs0RkR2Q08sZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7a0dBS2YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG4gIEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWNpbWFsIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBtYXhEYXRlIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW4/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogYW55O1xuICB3aWR0aD86ICdjb2wnIHwgJ3Jvdyc7XG4gIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICd0ZXh0QXJlYSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdzZWFyY2hTZWxlY3QnXG4gICAgfCAnc2VsZWN0JztcbiAgdmFsdWU/OiBhbnk7XG4gIGRhdGE/OiBhbnlbXTtcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvbkNhbGxiYWNrPzogRnVuY3Rpb247XG4gIGljb25DYWxsYmFja0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgaWNvblRvb2x0aXA/OiBzdHJpbmc7XG4gIGZuPzogRnVuY3Rpb247XG4gIGZpbHRlcnM/OiBJU2VhcmNoRmlsdGVyW107XG4gIHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TZWN0aW9uIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBJQ29udHJvbFtdO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyRm9ybUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNlY3Rpb25zOiBJRm9ybVNlY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSB2YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgdmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSBtb2RlbDogYW55O1xuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5mb3JtID0gYnVpbGRlci5ncm91cCh7fSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0VmFsaWRhdG9ycygpO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy5mb3JtLnZhbGlkKTtcbiAgICAgIHRoaXMudmFsdWVzQ2hhbmdlLmVtaXQocmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8udmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcbiAgfTtcblxuICBzZXRWYWx1ZSA9IChpbnB1dDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgaWYgKGlucHV0KSB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH07XG5cbiAgaXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbGlkO1xuICAgIHJldHVybiB0aGlzLnZhbGlkO1xuICB9O1xuXG4gIGlzQ29udHJvbFJlcXVpcmVkID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGlvbnM/LmZpbmQoKHYpID0+IHYucnVsZS50b0xvd2VyQ2FzZSgpID09ICdyZXF1aXJlZCcpO1xuICB9O1xuXG4gIHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgfTtcblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfTtcblxuICBwcml2YXRlIF9pbml0VmFsaWRhdG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgIGlmIChpbnB1dC50eXBlID09ICdzZWFyY2hTZWxlY3QnICYmICFpbnB1dC5mbilcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkFuIGlucHV0IG9mIHR5cGUgJ3NlYXJjaFNlbGVjdCcgbmVlZHMgYSBkaXNwbGF5IGZ1bmN0aW9uICFcIlxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgICAgaW5wdXQudmFsdWUsXG4gICAgICAgICAgdGhpcy5fZ2V0VmFsaWRhdG9ycyhpbnB1dC52YWxpZGF0aW9ucylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woaW5wdXQubmFtZSwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyA9ICh2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIGlmICghdmFsaWRhdGlvbnMpIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIC8vU3dpdGNoIGNhc2UgYnJlYWtzIHRoZSBtb2JpbGUgYXBwIHNvIHdlJ2xsIGRvIGlmIHN0YXRlbWVudHNcbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgIGlmIChydWxlID09ICdtaW4nKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ21heCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gJ0NldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAncmVxdWlyZWQnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZSBjaGFtcHMgZXN0IHJlcXVpcyAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ2VtYWlsJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtaW5sZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ21heGxlbmd0aCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gJ0NldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAndHlwZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0eXBlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdkZWNpbWFsJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhkYXRlJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBgQ2V0dGUgZGF0ZSBlc3QgdHJvcCBncmFuZGUgISAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKG1heERhdGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIG1pbi1oLTUvNlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8aDIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAtNiBzbTpncmlkLWNvbHMtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wud2lkdGggPT0gJ3JvdycgPyAnc206Y29sLXNwYW4tMicgOiAnY29sLXNwYW4tMSdcIj5cbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImNvbnRyb2wubGFiZWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBibG9jayBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj57e1xuICAgICAgICAgICAgICBjb250cm9sLmxhYmVsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCIgKm5nSWY9XCJpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKVwiPio8L3NwYW4+XG4gICAgICAgICAgICAgIDpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgICAgICAgIDwhLS1URVhULS0+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdiZy1yZWQtMTAwIGRhcms6YmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudHlwZSA9PSAndGV4dCdcIiB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCIgWyhuZ01vZGVsKV09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZSA6IG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIDwhLS1QQVNTV09SRC0tPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJ1wiIHR5cGU9XCJwYXNzd29yZFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgICAgICAgICAgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZSA6IG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cblxuICAgICAgICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJ1wiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCIgWyhuZ01vZGVsKV09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZSA6IG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTExIGJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPCEtLU5VTUJFUi0tPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnR5cGUgPT0gJ251bWJlcidcIiB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIlxuICAgICAgICAgICAgICBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cInt7IGNvbnRyb2wucGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUgPyBjb250cm9sLnZhbHVlIDogbW9kZWwgJiYgbW9kZWxbY29udHJvbC5uYW1lXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBibG9jayB3LWZ1bGwgcC0yLjUgZGFyazpiZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOnBsYWNlaG9sZGVyLWdyYXktNDAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS01MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDBcIiAvPlxuICAgICAgICAgICAgPCEtLURBVEUtLT5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0yMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50eXBlID09ICdkYXRlJ1wiIHR5cGU9XCJkYXRlXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cInt7IGNvbnRyb2wucGxhY2Vob2xkZXIgfX1cIiBbbmdNb2RlbF09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICA/IChjb250cm9sLnZhbHVlIHwgZGF0ZSA6ICd5eXl5LU1NLWRkJylcbiAgICAgICAgICAgICAgICAgIDogKG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV0gfCBkYXRlIDogJ3l5eXktTU0tZGQnKVxuICAgICAgICAgICAgICBcIiAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICA/IChjb250cm9sLnZhbHVlID0gJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgOiAobW9kZWxbY29udHJvbC5uYW1lXSA9ICRldmVudClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIDwhLS1TZWFyY2hTZWxlY3QtLT5cbiAgICAgICAgICAgIDxhcHAtY2hyLXNlYXJjaC1zZWxlY3QgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdbJl9pbnB1dF06IWJnLXJlZC0xMDAgZGFyazpbJl9pbnB1dF06IWJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnR5cGUgPT0gJ3NlYXJjaFNlbGVjdCdcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiXG4gICAgICAgICAgICAgIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCIgW3BsYWNlaG9sZGVyXT1cImNvbnRyb2wucGxhY2Vob2xkZXJcIiBbKG1vZGVsKV09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZSA6IG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgICAgICAgXCIgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoci1zZWFyY2gtc2VsZWN0PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9sLmljb25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnNcIiBjbGFzcz1cImgtMFwiPlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICAgICAgICAgIFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2wuc3BhbiAmJiAoIWZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMgfHwgIWZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0wIHRleHQteHMgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDBcIj57eyBjb250cm9sLnNwYW5cbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNFwiICpuZ0lmPVwiaW5kZXggIT0gc2VjdGlvbnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbiAgPC9mb3JtPlxuPC9kaXY+Il19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkQsT0FBTyxFQUdMLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQWdEOUQsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUFvQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBWi9CLGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBQzlCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdEIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUdqRSxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTFELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWdCL0QsVUFBSyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDekIsSUFBSSxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQVUsRUFBRSxFQUFFO1lBQ3ZDLElBQUksS0FBSztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBRUYsWUFBTyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixzQkFBaUIsR0FBRyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUN4QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQztRQUVGLGVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFrQk0sbUJBQWMsR0FBRyxDQUFDLFdBQWtDLEVBQUUsRUFBRTtZQUM5RCxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXO2dCQUFFLE9BQU8sVUFBVSxDQUFDO1lBQ3BDLDZEQUE2RDtZQUM3RCxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtnQkFDcEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7b0JBQ2pCLFVBQVUsQ0FBQyxPQUFPLEdBQUcsZ0NBQWdDLENBQUM7b0JBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbkQ7Z0JBQ0QsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO29CQUNqQixVQUFVLENBQUMsT0FBTyxHQUFHLGdDQUFnQyxDQUFDO29CQUN0RCxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ25EO2dCQUNELElBQUksSUFBSSxJQUFJLFVBQVUsRUFBRTtvQkFDdEIsVUFBVSxDQUFDLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztvQkFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRTtvQkFDbkIsVUFBVSxDQUFDLE9BQU8sR0FBRyx3Q0FBd0MsQ0FBQztvQkFDOUQsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ25DO2dCQUNELElBQUksSUFBSSxJQUFJLFdBQVcsRUFBRTtvQkFDdkIsVUFBVSxDQUFDLE9BQU8sR0FBRyxnQ0FBZ0MsQ0FBQztvQkFDdEQsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUN6RDtnQkFDRCxJQUFJLElBQUksSUFBSSxXQUFXLEVBQUU7b0JBQ3ZCLFVBQVUsQ0FBQyxPQUFPLEdBQUcsZ0NBQWdDLENBQUM7b0JBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO29CQUNsQixVQUFVLENBQUMsT0FBTyxHQUFHLGlDQUFpQyxDQUFDO29CQUN2RCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFO29CQUNyQixVQUFVLENBQUMsT0FBTyxHQUFHLCtDQUErQyxVQUFVLENBQUMsS0FBSyxLQUFLLENBQUM7b0JBQzFGLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUM1QztnQkFDRCxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7b0JBQ3JCLFVBQVUsQ0FBQyxPQUFPLEdBQUcsc0NBQXNDLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQztvQkFDakYsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQzVDO2FBQ0Y7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFsR0EsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE0Qk8sZUFBZTtRQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkMsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzNDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7Z0JBQ0osTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQzdCLEtBQUssQ0FBQyxLQUFLLEVBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQ3ZDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUMzQztTQUNGO0lBQ0gsQ0FBQzs7OEdBbEVVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLCtPQzNEN0IseXZPQWtHTTs0RkR2Q08sZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7a0dBS2YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG4gIEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWNpbWFsIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBtYXhEYXRlIH0gZnJvbSAnLi9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW4/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogYW55O1xuICB3aWR0aD86ICdjb2wnIHwgJ3Jvdyc7XG4gIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICd0ZXh0QXJlYSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdzZWFyY2hTZWxlY3QnXG4gICAgfCAnc2VsZWN0JztcbiAgdmFsdWU/OiBhbnk7XG4gIGRhdGE/OiBhbnlbXSB8IG51bGw7XG4gIGljb24/OiBzdHJpbmc7XG4gIGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuICBpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb25Ub29sdGlwPzogc3RyaW5nO1xuICBmbj86IEZ1bmN0aW9uO1xuICBmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuICB2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBjb250cm9sczogSUNvbnRyb2xbXTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaHItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaHItZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENockZvcm1Db21wb25lbnQge1xuICBASW5wdXQoKSBzZWN0aW9uczogSUZvcm1TZWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgdmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgbW9kZWw6IGFueTtcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IGJ1aWxkZXIuZ3JvdXAoe30pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdFZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgICAgdGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHJlcyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH07XG5cbiAgc2V0VmFsdWUgPSAoaW5wdXQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIGlmIChpbnB1dCkgdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8uc2V0VmFsdWUodmFsdWUpO1xuICB9O1xuXG4gIGlzVmFsaWQgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWxpZDtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfTtcblxuICBpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnJ1bGUudG9Mb3dlckNhc2UoKSA9PSAncmVxdWlyZWQnKTtcbiAgfTtcblxuICBwYXRjaFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBba2V5XTogdmFsdWUgfSk7XG4gIH07XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfaW5pdFZhbGlkYXRvcnMoKSB7XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgaW5wdXQgb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAnc2VhcmNoU2VsZWN0JyAmJiAhaW5wdXQuZm4pXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJBbiBpbnB1dCBvZiB0eXBlICdzZWFyY2hTZWxlY3QnIG5lZWRzIGEgZGlzcGxheSBmdW5jdGlvbiAhXCJcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgIGlucHV0LnZhbHVlLFxuICAgICAgICAgIHRoaXMuX2dldFZhbGlkYXRvcnMoaW5wdXQudmFsaWRhdGlvbnMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGlucHV0Lm5hbWUsIGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcbiAgICAvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICBjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocnVsZSA9PSAnbWluJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3JlcXVpcmVkJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2UgY2hhbXBzIGVzdCByZXF1aXMgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdlbWFpbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWlubGVuZ3RoJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhsZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3R5cGUnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWF4ZGF0ZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzZcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGgyICpuZ0lmPVwic2VjdGlvbi50aXRsZVwiIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC14bCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLTYgc206Z3JpZC1jb2xzLTJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLndpZHRoID09ICdyb3cnID8gJ3NtOmNvbC1zcGFuLTInIDogJ2NvbC1zcGFuLTEnXCI+XG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJjb250cm9sLmxhYmVsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYmxvY2sgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+e3tcbiAgICAgICAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiICpuZ0lmPVwiaXNDb250cm9sUmVxdWlyZWQoY29udHJvbClcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICA6XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPCEtLSBIZXJlIHdlIHdpbGwgKm5nSWYgZWFjaCB0eXBlIG9mIGlucHV0IGNhdXNlIGl0J3MgdGhlIGNsZWFuZXN0IHdheSBJIGNhbiBpbWFnaW5lLS0+XG4gICAgICAgICAgICA8IS0tVEVYVC0tPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnYmctcmVkLTEwMCBkYXJrOmJnLXJlZC04MDAnOicnXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnR5cGUgPT0gJ3RleHQnXCIgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFsobmdNb2RlbCldPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUgOiBtb2RlbCAmJiBtb2RlbFtjb250cm9sLm5hbWVdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiIC8+XG4gICAgICAgICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0xMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50eXBlID09ICdwYXNzd29yZCdcIiB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUgOiBtb2RlbCAmJiBtb2RlbFtjb250cm9sLm5hbWVdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiIC8+XG5cbiAgICAgICAgICAgIDwhLS1URVhUIEFSRUEtLT5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0xMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50eXBlID09ICd0ZXh0QXJlYSdcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgY29udHJvbC5wbGFjZWhvbGRlciB9fVwiIFsobmdNb2RlbCldPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUgOiBtb2RlbCAmJiBtb2RlbFtjb250cm9sLm5hbWVdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0xMSBiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDwhLS1OVU1CRVItLT5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS50b3VjaGVkICYmIGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS5lcnJvcnMpID8gJ2JnLXJlZC0xMDAgZGFyazpiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50eXBlID09ICdudW1iZXInXCIgdHlwZT1cIm51bWJlclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgICAgICAgICAgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcbiAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZSA6IG1vZGVsICYmIG1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1ncmF5LTkwMCB0ZXh0LXNtIHJvdW5kZWQtbGcgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgYmxvY2sgdy1mdWxsIHAtMi41IGRhcms6YmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpwbGFjZWhvbGRlci1ncmF5LTQwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNTAwXCIgLz5cbiAgICAgICAgICAgIDwhLS1EQVRFLS0+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZCAmJiBmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzKSA/ICdiZy1yZWQtMjAwIGRhcms6YmctcmVkLTgwMCc6JydcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudHlwZSA9PSAnZGF0ZSdcIiB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyBjb250cm9sLnBsYWNlaG9sZGVyIH19XCIgW25nTW9kZWxdPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgPyAoY29udHJvbC52YWx1ZSB8IGRhdGUgOiAneXl5eS1NTS1kZCcpXG4gICAgICAgICAgICAgICAgICA6IChtb2RlbCAmJiBtb2RlbFtjb250cm9sLm5hbWVdIHwgZGF0ZSA6ICd5eXl5LU1NLWRkJylcbiAgICAgICAgICAgICAgXCIgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgPyAoY29udHJvbC52YWx1ZSA9ICRldmVudClcbiAgICAgICAgICAgICAgICAgIDogKG1vZGVsW2NvbnRyb2wubmFtZV0gPSAkZXZlbnQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS05MDAgdGV4dC1zbSByb3VuZGVkLWxnIGZvY3VzOnJpbmctYmx1ZS01MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGJsb2NrIHctZnVsbCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiIC8+XG4gICAgICAgICAgICA8IS0tU2VhcmNoU2VsZWN0LS0+XG4gICAgICAgICAgICA8YXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiYgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLmVycm9ycykgPyAnWyZfaW5wdXRdOiFiZy1yZWQtMTAwIGRhcms6WyZfaW5wdXRdOiFiZy1yZWQtODAwJzonJ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50eXBlID09ICdzZWFyY2hTZWxlY3QnXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIlxuICAgICAgICAgICAgICBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtwbGFjZWhvbGRlcl09XCJjb250cm9sLnBsYWNlaG9sZGVyXCIgWyhtb2RlbCldPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUgOiBtb2RlbCAmJiBtb2RlbFtjb250cm9sLm5hbWVdXG4gICAgICAgICAgICAgIFwiIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCI+XG4gICAgICAgICAgICA8L2FwcC1jaHItc2VhcmNoLXNlbGVjdD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbC5pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCA/ICd0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMCc6J3RleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcC0yLjUgYm90dG9tLTAgcmlnaHQtMFwiIFttYXRUb29sdGlwXT1cImNvbnRyb2wuaWNvblRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIhY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCAmJiBjb250cm9sLmljb25DYWxsYmFjaz8uKGZvcm0uY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciB0ZXh0LWxnXCI+e3tjb250cm9sLmljb259fTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBjb250cm9sLnZhbGlkYXRpb25zXCIgY2xhc3M9XCJoLTBcIj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1tjb250cm9sLm5hbWVdLnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgIGZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLnRvTG93ZXJDYXNlKCksIGNvbnRyb2wubmFtZSlcbiAgICAgICAgICAgICAgICBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9sLnNwYW4gJiYgKCFmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZXJyb3JzIHx8ICFmb3JtLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udG91Y2hlZClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzIHRleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB5LTRcIiAqbmdJZj1cImluZGV4ICE9IHNlY3Rpb25zLmxlbmd0aCAtIDFcIj5cbiAgICAgICAgICA8aHIgY2xhc3M9XCJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZm9ybT5cbjwvZGl2PiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"chrv-components.mjs","sources":["../../../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-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-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-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.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-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.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-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.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-components.module.ts","../../../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, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss']\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 <div *ngIf=\"checked\" (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 <div *ngIf=\"!checked\" (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</div>","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\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})\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 <div *ngFor=\"let crumb of crumbs\" 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</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\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 <a mat-button mat-flat-button *ngIf=\"predicate\" [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 <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\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} 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';\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})\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","<div *ngIf=\"predicate\" 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 <span *ngIf=\"filters\" [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 </div>\n\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 <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n *ngFor=\"let model of filteredModelOptions | async\" [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n </mat-autocomplete>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\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 { 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})\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})\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 * as 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})\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 { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn } from '@angular/forms';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { decimal } from './chr-validators/decimal-validator';\nimport { maxDate } from './chr-validators/max-date-validator';\n\nexport interface ISearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\nexport interface IControlValidation {\n rule: string;\n value?: any;\n display?: string;\n}\n\nexport interface IControl {\n label?: string;\n name: string;\n span?: string;\n placeholder?: any;\n width?: 'col' | 'row';\n type:\n | 'text'\n | 'password'\n | 'textArea'\n | 'number'\n | 'date'\n | 'searchSelect'\n | 'select';\n value?: any;\n data?: any[];\n icon?: string;\n iconCallback?: Function;\n iconCallbackDisabled?: boolean;\n iconTooltip?: string;\n fn?: Function;\n filters?: ISearchFilter[];\n validations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n title?: string;\n controls: IControl[];\n}\n@Component({\n selector: 'app-chr-form',\n templateUrl: './chr-form.component.html',\n styleUrls: ['./chr-form.component.scss'],\n})\nexport class ChrFormComponent {\n @Input() sections: IFormSection[] = [];\n @Input() valid: boolean = false;\n @Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Input() model: any;\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean = false;\n\n @Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n public form: FormGroup;\n constructor(private builder: FormBuilder) {\n this.form = builder.group({});\n }\n\n ngOnInit(): void {\n this._initValidators();\n this.form.valueChanges.subscribe((res) => {\n this.valid = this.form.valid;\n this.validChange.emit(this.form.valid);\n this.valuesChange.emit(res);\n });\n }\n\n value = (input?: string) => {\n if (input) return this.form.controls[input]?.value;\n return this.form.value;\n };\n\n setValue = (input: string, value: any) => {\n if (input) this.form.controls[input]?.setValue(value);\n };\n\n isValid = (input?: string) => {\n if (input) return this.form.controls[input]?.valid;\n return this.valid;\n };\n\n isControlRequired = (control: IControl) => {\n return control.validations?.find((v) => v.rule.toLowerCase() == 'required');\n };\n\n patchValue = (key: string, value: any) => {\n this.form.patchValue({ [key]: value });\n };\n\n reset = () => {\n this.form.reset();\n };\n\n private _initValidators() {\n for (const section of this.sections) {\n for (const input of section.controls) {\n if (input.type == 'searchSelect' && !input.fn)\n throw new Error(\n \"An input of type 'searchSelect' needs a display function !\"\n );\n const control = new FormControl(\n input.value,\n this._getValidators(input.validations)\n );\n this.form.addControl(input.name, control);\n }\n }\n }\n\n private _getValidators = (validations?: IControlValidation[]) => {\n const validators: ValidatorFn[] = [];\n if (!validations) return validators;\n //Switch case breaks the mobile app so we'll do if statements\n for (const validation of validations) {\n const rule = validation.rule.toLocaleLowerCase();\n if (rule == 'min') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.min(validation.value));\n }\n if (rule == 'max') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.max(validation.value));\n }\n if (rule == 'required') {\n validation.display = 'Ce champs est requis !';\n validators.push(Validators.required);\n }\n if (rule == 'email') {\n validation.display = \"Cette adresse email n'est pas valide !\";\n validators.push(Validators.email);\n }\n if (rule == 'minlength') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.minLength(validation.value));\n }\n if (rule == 'maxlength') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.maxLength(validation.value));\n }\n if (rule == 'type') {\n validation.display = \"Cette valeur n'est pas valide !\";\n validators.push(type(validation.value));\n }\n if (rule == 'decimal') {\n validation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n validators.push(decimal(validation.value));\n }\n if (rule == 'maxdate') {\n validation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n validators.push(maxDate(validation.value));\n }\n }\n return validators;\n };\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n <div *ngFor=\"let section of sections; let index = index\">\n <h2 *ngIf=\"section.title\" class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n <div *ngFor=\"let control of section.controls; let index = index\" class=\"relative\"\n [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n <label *ngIf=\"control.label\"\n class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n <span class=\"text-red-500\" *ngIf=\"isControlRequired(control)\">*</span>\n :\n </label>\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--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 *ngIf=\"control.type == 'text'\" type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'password'\" type=\"password\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'textArea'\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'number'\" type=\"number\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'date'\" type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [ngModel]=\"\n control.value\n ? (control.value | date : 'yyyy-MM-dd')\n : (model && model[control.name] | date : 'yyyy-MM-dd')\n \" (ngModelChange)=\"\n control.value\n ? (control.value = $event)\n : (model[control.name] = $event)\n \"\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 <!--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 *ngIf=\"control.type == 'searchSelect'\" id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\"\n [display]=\"control.fn!\" [placeholder]=\"control.placeholder\" [(model)]=\"\n control.value ? control.value : model && model[control.name]\n \" [filters]=\"control.filters\" [formControlName]=\"control.name\">\n </app-chr-search-select>\n <span *ngIf=\"control.icon\"\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 <div *ngFor=\"let validation of control.validations\" class=\"h-0\">\n <mat-error *ngIf=\"\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n \">{{ validation.display }}</mat-error>\n </div>\n <span *ngIf=\"control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)\"\n class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n </div>\n </div>\n <div class=\"py-4\" *ngIf=\"index != sections.length - 1\">\n <hr class=\"\" />\n </div>\n </div>\n </fieldset>\n </form>\n</div>","import {\n AfterContentChecked,\n Component,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n public currentPage: number = 1;\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n instance: PaginationInstance;\n\n constructor(public service: PaginationService) {}\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 this.currentPage--;\n this.emit();\n };\n\n public next = () => {\n this.currentPage++;\n this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.currentPage = 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.currentPage == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n 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.currentPage ==\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.currentPage);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Précédent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\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})\nexport class ChrTableHeaderCellComponent {\n @Input() display: string;\n @Input() column: 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 justify-between align-middle self-center\"\n (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n <div *ngIf=\"sortBy\" class=\"absolute right-3 top-0 h-0 w-0\">\n <mat-icon *ngIf=\"sortBy == column && isAsc\">arrow_upward</mat-icon>\n <mat-icon *ngIf=\"sortBy == column && !isAsc\">arrow_downward</mat-icon>\n </div>\n</div>\n<ng-content></ng-content>","import { DatePipe } from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nexport interface IColumn {\n display: string;\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 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})\nexport class ChrTableComponent implements AfterViewInit {\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 public pageSize: number = 50;\n public currentPage: number = 1;\n\n constructor(private _date: DatePipe) {}\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 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\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <!--\r\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\r\n <td *ngFor=\"let column of columns\">\r\n <ng-container [ngTemplateOutlet]=\"\r\n column.isLink ? link: div\r\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\r\n </ng-container>\r\n <ng-template #link let-prop='prop'>\r\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\r\n prop}}</a>\r\n </ng-template>\r\n <ng-template #div let-prop='prop'>\r\n <div>\r\n <span *ngIf=\"column.chipsDisplay\">\r\n\r\n </span>\r\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n -->\r\n\r\n <tr\r\n *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} | sort:isAsc:sortBy; let i = index\"\r\n [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"default\"\r\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\r\n </ng-container>\r\n </td>\r\n <ng-template #default let-column='column' let-property=\"prop\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n </a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\r\n </ng-container>\r\n <ng-template #OK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n </ng-template>\r\n <ng-template #NOK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <app-chr-paginator (pageSizeChange)=\"pageSize = $event\" (pageChange)=\"currentPage = $event\"></app-chr-paginator>\r\n</div>\r\n<!-- <div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}</a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? column.chipsCallback(entry)\r\n : getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? !column.chipsCallback(entry)\r\n : !getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n-->","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})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\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>\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"dark:!text-gray-400\">\n Attention:\n <hr>\n <br>\n La suppression d'un élément est irréversible.\n <hr>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <hr>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <hr>\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 { PipeModule } from 'chrv-pipes';\nimport { NgModule } from '@angular/core';\nimport { ChrCheckboxComponent } from './chr-checkbox/chr-checkbox.component';\nimport { BreadcrumbComponent } from './chr-breadcrumb/chr-breadcrumb.component';\nimport { ChrButtonComponent } from './chr-button/chr-button.component';\nimport { ChrSearchSelectComponent } from './chr-search-select/chr-search-select.component';\nimport { ChrSearchbarComponent } from './chr-searchbar/chr-searchbar.component';\nimport { ChrTableComponent } from './chr-table/chr-table.component';\nimport { ChrTableHeaderCellComponent } from './chr-table-header-cell/chr-table-header-cell.component';\nimport { ChrFormComponent } from './chr-form/chr-form.component';\nimport { ChrSeparatorComponent } from './chr-separator/chr-separator.component';\nimport { ChrDeleteModalComponent } from './chr-delete-modal/chr-delete-modal.component';\nimport { TypeValidatorDirective } from './chr-form/chr-validators/type-validator';\nimport { DecimalValidatorDirective } from './chr-form/chr-validators/decimal-validator';\nimport { MaxDateValidatorDirective } from './chr-form/chr-validators/max-date-validator';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ChrPaginatorComponent } from './chr-paginator/chr-paginator.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\n@NgModule({\n declarations: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule,\n MatDialogModule,\n PipeModule,\n NgxPaginationModule,\n ],\n exports: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n providers: [DatePipe],\n})\nexport class ChrComponentsModule {}\n","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) => {\r\n return this.dialog.open(component);\r\n };\r\n}\r\n","import { ChrButtonComponent } from './lib/chr-button/chr-button.component';\nimport { BreadcrumbComponent } from './lib/chr-breadcrumb/chr-breadcrumb.component';\n/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-components.module';\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i3","i6.ChrSearchSelectComponent","i3.ChrFormComponent","i2.ChrButtonComponent","i3.ChrPaginatorComponent","i4.ChrTableHeaderCellComponent","i5","i6","i3.ChrButtonComponent"],"mappings":"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"}
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../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-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-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-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.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-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.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-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.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-components.module.ts","../../../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, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss']\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 <div *ngIf=\"checked\" (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 <div *ngIf=\"!checked\" (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</div>","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\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})\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 <div *ngFor=\"let crumb of crumbs\" 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</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\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 <a mat-button mat-flat-button *ngIf=\"predicate\" [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 <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\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} 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';\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})\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","<div *ngIf=\"predicate\" 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 <span *ngIf=\"filters\" [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 </div>\n\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 <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n *ngFor=\"let model of filteredModelOptions | async\" [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n </mat-autocomplete>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\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 { 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})\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})\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 * as 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})\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 { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn } from '@angular/forms';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { decimal } from './chr-validators/decimal-validator';\nimport { maxDate } from './chr-validators/max-date-validator';\n\nexport interface ISearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\nexport interface IControlValidation {\n rule: string;\n value?: any;\n display?: string;\n}\n\nexport interface IControl {\n label?: string;\n name: string;\n span?: string;\n placeholder?: any;\n width?: 'col' | 'row';\n type:\n | 'text'\n | 'password'\n | 'textArea'\n | 'number'\n | 'date'\n | 'searchSelect'\n | 'select';\n value?: any;\n data?: any[] | null;\n icon?: string;\n iconCallback?: Function;\n iconCallbackDisabled?: boolean;\n iconTooltip?: string;\n fn?: Function;\n filters?: ISearchFilter[];\n validations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n title?: string;\n controls: IControl[];\n}\n@Component({\n selector: 'app-chr-form',\n templateUrl: './chr-form.component.html',\n styleUrls: ['./chr-form.component.scss'],\n})\nexport class ChrFormComponent {\n @Input() sections: IFormSection[] = [];\n @Input() valid: boolean = false;\n @Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Input() model: any;\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean = false;\n\n @Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n public form: FormGroup;\n constructor(private builder: FormBuilder) {\n this.form = builder.group({});\n }\n\n ngOnInit(): void {\n this._initValidators();\n this.form.valueChanges.subscribe((res) => {\n this.valid = this.form.valid;\n this.validChange.emit(this.form.valid);\n this.valuesChange.emit(res);\n });\n }\n\n value = (input?: string) => {\n if (input) return this.form.controls[input]?.value;\n return this.form.value;\n };\n\n setValue = (input: string, value: any) => {\n if (input) this.form.controls[input]?.setValue(value);\n };\n\n isValid = (input?: string) => {\n if (input) return this.form.controls[input]?.valid;\n return this.valid;\n };\n\n isControlRequired = (control: IControl) => {\n return control.validations?.find((v) => v.rule.toLowerCase() == 'required');\n };\n\n patchValue = (key: string, value: any) => {\n this.form.patchValue({ [key]: value });\n };\n\n reset = () => {\n this.form.reset();\n };\n\n private _initValidators() {\n for (const section of this.sections) {\n for (const input of section.controls) {\n if (input.type == 'searchSelect' && !input.fn)\n throw new Error(\n \"An input of type 'searchSelect' needs a display function !\"\n );\n const control = new FormControl(\n input.value,\n this._getValidators(input.validations)\n );\n this.form.addControl(input.name, control);\n }\n }\n }\n\n private _getValidators = (validations?: IControlValidation[]) => {\n const validators: ValidatorFn[] = [];\n if (!validations) return validators;\n //Switch case breaks the mobile app so we'll do if statements\n for (const validation of validations) {\n const rule = validation.rule.toLocaleLowerCase();\n if (rule == 'min') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.min(validation.value));\n }\n if (rule == 'max') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.max(validation.value));\n }\n if (rule == 'required') {\n validation.display = 'Ce champs est requis !';\n validators.push(Validators.required);\n }\n if (rule == 'email') {\n validation.display = \"Cette adresse email n'est pas valide !\";\n validators.push(Validators.email);\n }\n if (rule == 'minlength') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.minLength(validation.value));\n }\n if (rule == 'maxlength') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.maxLength(validation.value));\n }\n if (rule == 'type') {\n validation.display = \"Cette valeur n'est pas valide !\";\n validators.push(type(validation.value));\n }\n if (rule == 'decimal') {\n validation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n validators.push(decimal(validation.value));\n }\n if (rule == 'maxdate') {\n validation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n validators.push(maxDate(validation.value));\n }\n }\n return validators;\n };\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n <div *ngFor=\"let section of sections; let index = index\">\n <h2 *ngIf=\"section.title\" class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n <div *ngFor=\"let control of section.controls; let index = index\" class=\"relative\"\n [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n <label *ngIf=\"control.label\"\n class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n <span class=\"text-red-500\" *ngIf=\"isControlRequired(control)\">*</span>\n :\n </label>\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--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 *ngIf=\"control.type == 'text'\" type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'password'\" type=\"password\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'textArea'\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'number'\" type=\"number\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'date'\" type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [ngModel]=\"\n control.value\n ? (control.value | date : 'yyyy-MM-dd')\n : (model && model[control.name] | date : 'yyyy-MM-dd')\n \" (ngModelChange)=\"\n control.value\n ? (control.value = $event)\n : (model[control.name] = $event)\n \"\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 <!--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 *ngIf=\"control.type == 'searchSelect'\" id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\"\n [display]=\"control.fn!\" [placeholder]=\"control.placeholder\" [(model)]=\"\n control.value ? control.value : model && model[control.name]\n \" [filters]=\"control.filters\" [formControlName]=\"control.name\">\n </app-chr-search-select>\n <span *ngIf=\"control.icon\"\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 <div *ngFor=\"let validation of control.validations\" class=\"h-0\">\n <mat-error *ngIf=\"\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n \">{{ validation.display }}</mat-error>\n </div>\n <span *ngIf=\"control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)\"\n class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n </div>\n </div>\n <div class=\"py-4\" *ngIf=\"index != sections.length - 1\">\n <hr class=\"\" />\n </div>\n </div>\n </fieldset>\n </form>\n</div>","import {\n AfterContentChecked,\n Component,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n public currentPage: number = 1;\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n instance: PaginationInstance;\n\n constructor(public service: PaginationService) {}\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 this.currentPage--;\n this.emit();\n };\n\n public next = () => {\n this.currentPage++;\n this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.currentPage = 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.currentPage == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n 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.currentPage ==\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.currentPage);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Précédent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\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})\nexport class ChrTableHeaderCellComponent {\n @Input() display: string;\n @Input() column: 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 justify-between align-middle self-center\"\n (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n <div *ngIf=\"sortBy\" class=\"absolute right-3 top-0 h-0 w-0\">\n <mat-icon *ngIf=\"sortBy == column && isAsc\">arrow_upward</mat-icon>\n <mat-icon *ngIf=\"sortBy == column && !isAsc\">arrow_downward</mat-icon>\n </div>\n</div>\n<ng-content></ng-content>","import { DatePipe } from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nexport interface IColumn {\n display: string;\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 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})\nexport class ChrTableComponent implements AfterViewInit {\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 public pageSize: number = 50;\n public currentPage: number = 1;\n\n constructor(private _date: DatePipe) {}\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 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\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <!--\r\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\r\n <td *ngFor=\"let column of columns\">\r\n <ng-container [ngTemplateOutlet]=\"\r\n column.isLink ? link: div\r\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\r\n </ng-container>\r\n <ng-template #link let-prop='prop'>\r\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\r\n prop}}</a>\r\n </ng-template>\r\n <ng-template #div let-prop='prop'>\r\n <div>\r\n <span *ngIf=\"column.chipsDisplay\">\r\n\r\n </span>\r\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n -->\r\n\r\n <tr\r\n *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} | sort:isAsc:sortBy; let i = index\"\r\n [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"default\"\r\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\r\n </ng-container>\r\n </td>\r\n <ng-template #default let-column='column' let-property=\"prop\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n </a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\r\n </ng-container>\r\n <ng-template #OK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n </ng-template>\r\n <ng-template #NOK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <app-chr-paginator (pageSizeChange)=\"pageSize = $event\" (pageChange)=\"currentPage = $event\"></app-chr-paginator>\r\n</div>\r\n<!-- <div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}</a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? column.chipsCallback(entry)\r\n : getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? !column.chipsCallback(entry)\r\n : !getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n-->","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})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\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>\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"dark:!text-gray-400\">\n Attention:\n <hr>\n <br>\n La suppression d'un élément est irréversible.\n <hr>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <hr>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <hr>\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 { PipeModule } from 'chrv-pipes';\nimport { NgModule } from '@angular/core';\nimport { ChrCheckboxComponent } from './chr-checkbox/chr-checkbox.component';\nimport { BreadcrumbComponent } from './chr-breadcrumb/chr-breadcrumb.component';\nimport { ChrButtonComponent } from './chr-button/chr-button.component';\nimport { ChrSearchSelectComponent } from './chr-search-select/chr-search-select.component';\nimport { ChrSearchbarComponent } from './chr-searchbar/chr-searchbar.component';\nimport { ChrTableComponent } from './chr-table/chr-table.component';\nimport { ChrTableHeaderCellComponent } from './chr-table-header-cell/chr-table-header-cell.component';\nimport { ChrFormComponent } from './chr-form/chr-form.component';\nimport { ChrSeparatorComponent } from './chr-separator/chr-separator.component';\nimport { ChrDeleteModalComponent } from './chr-delete-modal/chr-delete-modal.component';\nimport { TypeValidatorDirective } from './chr-form/chr-validators/type-validator';\nimport { DecimalValidatorDirective } from './chr-form/chr-validators/decimal-validator';\nimport { MaxDateValidatorDirective } from './chr-form/chr-validators/max-date-validator';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ChrPaginatorComponent } from './chr-paginator/chr-paginator.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\n@NgModule({\n declarations: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule,\n MatDialogModule,\n PipeModule,\n NgxPaginationModule,\n ],\n exports: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n providers: [DatePipe],\n})\nexport class ChrComponentsModule {}\n","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) => {\r\n return this.dialog.open(component);\r\n };\r\n}\r\n","import { ChrButtonComponent } from './lib/chr-button/chr-button.component';\nimport { BreadcrumbComponent } from './lib/chr-breadcrumb/chr-breadcrumb.component';\n/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-components.module';\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i3","i6.ChrSearchSelectComponent","i3.ChrFormComponent","i2.ChrButtonComponent","i3.ChrPaginatorComponent","i4.ChrTableHeaderCellComponent","i5","i6","i3.ChrButtonComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAQa,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAO,CAAA,OAAA,GAAW,KAAK,CAAA;AAErB,QAAA,IAAI,CAAA,IAAA,GAAoB,MAAM,CAAA;AAE9B,QAAA,IAAQ,CAAA,QAAA,GAAW,KAAK,CAAA;AAEvB,QAAA,IAAA,CAAA,MAAM,GAAoC,IAAI,YAAY,EAAqB,CAAC;KAa3F;AAXC,IAAA,KAAK,CAAC,GAAW,EAAA;QACf,IAAG,IAAI,CAAC,QAAQ;YACd,OAAM;AACR,QAAA,IAAG,GAAG,EAAC;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAA;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,KAAK,EAAC,CAAC,CAAA;AAClC,SAAA;KACF;;kHApBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,uICRjC,q1BAYM,EAAA,MAAA,EAAA,CAAA,uvjOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDJO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,q1BAAA,EAAA,MAAA,EAAA,CAAA,uvjOAAA,CAAA,EAAA,CAAA;8BAQnB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;MEFI,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAmB,MAAc,EAAA;AAAd,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAEjC,IAAA,CAAA,UAAU,GAAG,CAAC,GAAW,EAAE,IAAU,KAAI;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,SAAC,CAAC;KAJmC;;iHAH1B,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,wFCdhC,waAQM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDMO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,waAAA,EAAA,CAAA;+FAKrB,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MERK,kBAAkB,CAAA;AAmB7B,IAAA,WAAA,GAAA;AAlBS,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;AACrB,QAAA,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAElB,QAAA,IAAK,CAAA,KAAA,GAA2C,MAAM,CAAC;AACvD,QAAA,IAAS,CAAA,SAAA,GAAa,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAA,IAAA,GAAuD,MAAM,CAAC;AAGlE,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAYnC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAW,KAAI;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,SAAC,CAAC;AAEF,QAAA,IAAO,CAAA,OAAA,GAAG,MAAK;;AACb,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAC;AACjB,SAAC,CAAC;KARc;;gHAnBL,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,wRCP/B,gzBAkBG,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDXU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,gzBAAA,EAAA,CAAA;0EAKjB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;ME0BK,wBAAwB,CAAA;AAZrC,IAAA,WAAA,GAAA;AAaS,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAE1B,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,WAAW,EAAE,CAAC;AAG9C,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,GAAG,CAAC;AAGxB,QAAA,IAAI,CAAA,IAAA,GAAiB,EAAE,CAAC;AAExB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAK,CAAA,KAAA,GAAe,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GACb,IAAI,YAAY,EAAiB,CAAC;AAG7B,QAAA,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AA2C/B,QAAA,IAAe,CAAA,eAAA,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC7D,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAC/C,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,gBAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ;sBAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC;sBAClE,MAAM,CAAC;aACZ,CAAC,CACH,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAoB,CAAA,oBAAA,GAAG,MAAK;;YAE1B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC7C,gBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAOF,QAAA,IAAS,CAAA,SAAA,GAAG,MAAK;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC;AACrD,SAAC,CAAC;AAEF,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAK;AACd,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACjC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAK,GAAG,CAAC;AAQR,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAU,KAAI;;YACzC,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB,SAAC,CAAC;KAWH;IAnGC,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,eAAe,CAAC,KAAU,EAAA;;AACxB,QAAA,OAAO,MAAA,IAAI,CAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,IAAI,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACjC;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;QACtB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,EAAE,CAAC,KAAK,CAAC,CAAC;AACZ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,KAAiB,EAAA;QACzB,IAAI,OAAO,KAAK,IAAI,QAAQ;YAC1B,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;gBAAE,IAAI,CAAC,OAAO,CAAC;AACtD,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,EAAE,CAAC;KACtC;AAuBD,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KACvE;AAcO,IAAA,YAAY,CAAC,KAAsB,EAAA;QACzC,OAAO,OAAO,KAAK,IAAI,QAAQ;cAC3B,IAAI,CAAC,oBAAoB,CAAC,CAAG,EAAA,KAAK,EAAE,CAAC;AACvC,cAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACnC;AAOO,IAAA,oBAAoB,CAAC,KAAa,EAAA;;QACxC,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/D;IAEO,aAAa,CAAC,KAAU,EAAE,KAAa,EAAA;AAC7C,QAAA,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAE,CAAA;AACpC,aAAA,WAAW,EAAE;AACb,aAAA,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;KAClC;;sHAtHU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,wBAAwB;AACtC,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CH,ihDAkBM,EAAA,MAAA,EAAA,CAAA,m0jOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD0BO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGtB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA0B,wBAAA;AACtC,yBAAA;qBACF,EAAA,QAAA,EAAA,ihDAAA,EAAA,MAAA,EAAA,CAAA,m0jOAAA,CAAA,EAAA,CAAA;8BAUQ,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAGE,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MErDK,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;AALU,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAE,CAAC;QAG1D,IAAA,CAAA,QAAQ,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC,CAAC;AAG5C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACnE;AAED,IAAA,IAAI,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;mHAbU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,0KCRlC,kbAIM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDIO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,kbAAA,EAAA,CAAA;0EAKpB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEQK,sBAAsB,CAAA;AAGjC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KACpD;;oHALU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EARtB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,WAAW,EAAE,sBAAsB;AACnC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAEU,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAXT,MAAM,EAAA,CAAA,CAAA;4FAWnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAwB,sBAAA;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;iBACF,CAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAOF,SAAU,IAAI,CAAC,IAAY,EAAA;IAC/B,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,IAAI,CAAC;AAEpC,QAAA,OAAO,CAAC,MAAM;AACZ,cAAG;AACC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,OAAO,KAAK;AACJ,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MC1Ba,yBAAyB,CAAA;AAGpC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KAC3D;;uHALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EARzB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAEU,yBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAXZ,MAAM,EAAA,CAAA,CAAA;4FAWnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAA2B,yBAAA;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;iBACF,CAAA;8BAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;;AAOF,SAAU,OAAO,CAAC,MAAc,EAAA;IACpC,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC;QACvB,SAAS;AACP,YAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,kBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM;kBAC3D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,sBAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM;sBAC3D,KAAK,CAAC;AAEZ,QAAA,OAAO,SAAS;AACd,cAAG;AACC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,GAAG,EAAE,MAAM;AACS,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MChCa,yBAAyB,CAAA;AAGpC,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KACvD;;uHALU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EARzB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAEU,yBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAXZ,MAAM,EAAA,CAAA,CAAA;4FAWnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;kBACjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAA2B,yBAAA;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;iBACF,CAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAOF,SAAU,OAAO,CAAC,IAAU,EAAA;IAChC,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhC,QAAA,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,cAAG;AACC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,EAAE,KAAK;AACO,aAAA;cACtB,IAAI,CAAC;AACX,KAAC,CAAC;AACJ;;MCYa,gBAAgB,CAAA;AAa3B,IAAA,WAAA,CAAoB,OAAoB,EAAA;AAApB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;AAZ/B,QAAA,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;AAC9B,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAW,CAAC;AAGjE,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;AAE1D,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;AAgB/D,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,KAAc,KAAI;;AACzB,YAAA,IAAI,KAAK;gBAAE,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,SAAC,CAAC;QAEF,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,EAAE,KAAU,KAAI;;AACvC,YAAA,IAAI,KAAK;AAAE,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAc,KAAI;;AAC3B,YAAA,IAAI,KAAK;gBAAE,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAAiB,KAAI;;YACxC,OAAO,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,0CAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,CAAC;AAC9E,SAAC,CAAC;QAEF,IAAA,CAAA,UAAU,GAAG,CAAC,GAAW,EAAE,KAAU,KAAI;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACzC,SAAC,CAAC;AAEF,QAAA,IAAK,CAAA,KAAA,GAAG,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpB,SAAC,CAAC;AAkBM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,WAAkC,KAAI;YAC9D,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,UAAU,CAAC;;AAEpC,YAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACpC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACjD,IAAI,IAAI,IAAI,KAAK,EAAE;AACjB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,iBAAA;gBACD,IAAI,IAAI,IAAI,KAAK,EAAE;AACjB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,iBAAA;gBACD,IAAI,IAAI,IAAI,UAAU,EAAE;AACtB,oBAAA,UAAU,CAAC,OAAO,GAAG,wBAAwB,CAAC;AAC9C,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC,iBAAA;gBACD,IAAI,IAAI,IAAI,OAAO,EAAE;AACnB,oBAAA,UAAU,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC9D,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;gBACD,IAAI,IAAI,IAAI,WAAW,EAAE;AACvB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,iBAAA;gBACD,IAAI,IAAI,IAAI,WAAW,EAAE;AACvB,oBAAA,UAAU,CAAC,OAAO,GAAG,gCAAgC,CAAC;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,iBAAA;gBACD,IAAI,IAAI,IAAI,MAAM,EAAE;AAClB,oBAAA,UAAU,CAAC,OAAO,GAAG,iCAAiC,CAAC;oBACvD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,iBAAA;gBACD,IAAI,IAAI,IAAI,SAAS,EAAE;oBACrB,UAAU,CAAC,OAAO,GAAG,CAAA,4CAAA,EAA+C,UAAU,CAAC,KAAK,KAAK,CAAC;oBAC1F,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,iBAAA;gBACD,IAAI,IAAI,IAAI,SAAS,EAAE;oBACrB,UAAU,CAAC,OAAO,GAAG,CAAA,mCAAA,EAAsC,UAAU,CAAC,KAAK,KAAK,CAAC;oBACjF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,UAAU,CAAC;AACpB,SAAC,CAAC;QAlGA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;IA4BO,eAAe,GAAA;AACrB,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpC,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,oBAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;AACJ,gBAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAC7B,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CACvC,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;KACF;;8GAlEU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,+OC3D7B,yvOAkGM,EAAA,MAAA,EAAA,CAAA,mkkOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDvCO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,yvOAAA,EAAA,MAAA,EAAA,CAAA,mkkOAAA,CAAA,EAAA,CAAA;oGAKf,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEvDI,qBAAqB,CAAA;AAMhC,IAAA,WAAA,CAAmB,OAA0B,EAAA;AAA1B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;AALtC,QAAA,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;AAc7D,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAK;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,SAAC,CAAC;AAEK,QAAA,IAAI,CAAA,IAAA,GAAG,MAAK;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,IAAY,KAAI;YAChC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAU,KAAI;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC;AAEK,QAAA,IAAW,CAAA,WAAA,GAAG,MAAK;AACxB,YAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;AAC/B,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,QAAgB,KAAI;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,KAAU,KAAI;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,SAAC,CAAC;AAEK,QAAA,IAAU,CAAA,UAAA,GAAG,MAAK;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;AAAE,gBAAA,OAAO,KAAK,CAAC;YAC5C,QACE,IAAI,CAAC,WAAW;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAChE;AACJ,SAAC,CAAC;QAEK,IAAQ,CAAA,QAAA,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAE5C,IAAQ,CAAA,QAAA,GAAG,MAChB,IAAI,CAAC,QAAQ,CAAC,UAAU;AACtB,cAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;cAChE,CAAC,CAAC;QAEA,IAAA,CAAA,IAAI,GAAG,CAAC,IAA2B,GAAA,SAAS,KAAI;AACtD,YAAA,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAC7C,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC;KA/D+C;IAEjD,qBAAqB,GAAA;;QAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CACtC,gBAAgB,CACK,CAAC;KACzB;AAED,IAAA,QAAQ,MAAW;;mHAfR,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,kICdlC,83CAkCM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDpBO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,83CAAA,EAAA,CAAA;0GAMnB,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;AEVT;;AAEG;MAMU,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAK,CAAA,KAAA,GAAY,IAAI,CAAC;AACrB,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;AAElE,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,MAAc,KAAI;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AACH,SAAC,CAAC;KACH;;yHAvBY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,yPCfxC,ucAQyB,EAAA,MAAA,EAAA,CAAA,k6jOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDOZ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,wDAAwD,EAAA,QAAA,EAAA,ucAAA,EAAA,MAAA,EAAA,CAAA,k6jOAAA,CAAA,EAAA,CAAA;8BAKzD,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEcI,iBAAiB,CAAA;AAa5B,IAAA,WAAA,CAAoB,KAAe,EAAA;AAAf,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;AAX1B,QAAA,IAAI,CAAA,IAAA,GAAiB,EAAE,CAAC;AAGxB,QAAA,IAAK,CAAA,KAAA,GAAY,IAAI,CAAC;AACrB,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;AAE3D,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AACtB,QAAA,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;QAc/B,IAAA,CAAA,WAAW,GAAG,CAAC,KAAU,EAAE,UAAkB,KAAI;AAC/C,YAAA,IAAI,CAAC,UAAU;AAAE,gBAAA,OAAO,KAAK,CAAC;YAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;gBAC1B,KAAK,GAAI,KAAa,KAAb,IAAA,IAAA,KAAa,uBAAb,KAAa,CAAG,CAAC,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAK;YACd,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,SAAC,CAAC;AAEF,QAAA,IAAS,CAAA,SAAA,GAAG,MAAK;YACf,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,SAAC,CAAC;KA3BqC;AAEvC,IAAA,eAAe,MAAW;AAE1B,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,UAAU,CAAC,MAAW,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChC;;+GAvBU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,iPCnC9B,ylbAsPG,EAAA,MAAA,EAAA,CAAA,6hkOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDnNU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,ylbAAA,EAAA,MAAA,EAAA,CAAA,6hkOAAA,CAAA,EAAA,CAAA;+FAKjC,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEpCI,qBAAqB,CAAA;;mHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yDCPlC,mDAEM,EAAA,MAAA,EAAA,CAAA,y2jOAAA,CAAA,EAAA,CAAA,CAAA;4FDKO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,y2jOAAA,CAAA,EAAA,CAAA;;;MEKlB,uBAAuB,CAAA;AAGlC,IAAA,WAAA,CAAmB,SAAgD,EAAA;AAAhD,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAuC;AAF5D,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AAMvB,QAAA,IAAK,CAAA,KAAA,GAAG,MAAK;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAC,CAAC;KANqE;AAEvE,IAAA,QAAQ,MAAK;;qHALF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,4DCRpC,kxCAyBM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDjBO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,kxCAAA,EAAA,CAAA;;;MEqErB,mBAAmB,CAAA;;iHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBA7C5B,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,wBAAwB;QACxB,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB;QACjB,2BAA2B;QAC3B,gBAAgB;QAChB,qBAAqB;QACrB,uBAAuB;QACvB,sBAAsB;QACtB,yBAAyB;AACzB,QAAA,yBAAyB,aAGzB,YAAY;QACZ,aAAa;QACb,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,UAAU;AACV,QAAA,mBAAmB,aAGnB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,wBAAwB;QACxB,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB;QACjB,2BAA2B;QAC3B,gBAAgB;QAChB,qBAAqB;QACrB,uBAAuB;QACvB,sBAAsB;QACtB,yBAAyB;QACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAIhB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAFnB,SAAA,EAAA,CAAC,QAAQ,CAAC,YA3BnB,YAAY;QACZ,aAAa;QACb,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,UAAU;QACV,mBAAmB,CAAA,EAAA,CAAA,CAAA;4FAoBV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA/C/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,mBAAmB;wBACnB,kBAAkB;wBAClB,wBAAwB;wBACxB,qBAAqB;wBACrB,qBAAqB;wBACrB,iBAAiB;wBACjB,2BAA2B;wBAC3B,gBAAgB;wBAChB,qBAAqB;wBACrB,uBAAuB;wBACvB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;wBACf,UAAU;wBACV,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,mBAAmB;wBACnB,kBAAkB;wBAClB,wBAAwB;wBACxB,qBAAqB;wBACrB,qBAAqB;wBACrB,iBAAiB;wBACjB,2BAA2B;wBAC3B,gBAAgB;wBAChB,qBAAqB;wBACrB,uBAAuB;wBACvB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;AAC1B,qBAAA;oBACD,SAAS,EAAE,CAAC,QAAQ,CAAC;iBACtB,CAAA;;;MCjEY,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,MAAiB,EAAA;AAAjB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QAErC,IAAA,CAAA,UAAU,GAAG,CAAC,QAAmB,EAAE,eAAqB,KAAI;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAErD,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC3C,gBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,IAAI,MAAM,IAAI,IAAI;AAAE,oBAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,eAAe,CAAC,CAAC;AAClD,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,SAAc,KAAI;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,SAAC,CAAC;KAbuC;;2GAD9B,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACJD;;AAEG;;ACJH;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"chrv-components.mjs","sources":["../../../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-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-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-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.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-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.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-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.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-components.module.ts","../../../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, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss']\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 <div *ngIf=\"checked\" (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 <div *ngIf=\"!checked\" (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</div>","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\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})\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 <div *ngFor=\"let crumb of crumbs\" 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</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\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 <a mat-button mat-flat-button *ngIf=\"predicate\" [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 <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\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} 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';\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})\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","<div *ngIf=\"predicate\" 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 <span *ngIf=\"filters\" [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 </div>\n\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 <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n *ngFor=\"let model of filteredModelOptions | async\" [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n </mat-autocomplete>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\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 { 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})\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})\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 * as 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})\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 { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn } from '@angular/forms';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { decimal } from './chr-validators/decimal-validator';\nimport { maxDate } from './chr-validators/max-date-validator';\n\nexport interface ISearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\nexport interface IControlValidation {\n rule: string;\n value?: any;\n display?: string;\n}\n\nexport interface IControl {\n label?: string;\n name: string;\n span?: string;\n placeholder?: any;\n width?: 'col' | 'row';\n type:\n | 'text'\n | 'password'\n | 'textArea'\n | 'number'\n | 'date'\n | 'searchSelect'\n | 'select';\n value?: any;\n data?: any[];\n icon?: string;\n iconCallback?: Function;\n iconCallbackDisabled?: boolean;\n iconTooltip?: string;\n fn?: Function;\n filters?: ISearchFilter[];\n validations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n title?: string;\n controls: IControl[];\n}\n@Component({\n selector: 'app-chr-form',\n templateUrl: './chr-form.component.html',\n styleUrls: ['./chr-form.component.scss'],\n})\nexport class ChrFormComponent {\n @Input() sections: IFormSection[] = [];\n @Input() valid: boolean = false;\n @Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Input() model: any;\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean = false;\n\n @Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n public form: FormGroup;\n constructor(private builder: FormBuilder) {\n this.form = builder.group({});\n }\n\n ngOnInit(): void {\n this._initValidators();\n this.form.valueChanges.subscribe((res) => {\n this.valid = this.form.valid;\n this.validChange.emit(this.form.valid);\n this.valuesChange.emit(res);\n });\n }\n\n value = (input?: string) => {\n if (input) return this.form.controls[input]?.value;\n return this.form.value;\n };\n\n setValue = (input: string, value: any) => {\n if (input) this.form.controls[input]?.setValue(value);\n };\n\n isValid = (input?: string) => {\n if (input) return this.form.controls[input]?.valid;\n return this.valid;\n };\n\n isControlRequired = (control: IControl) => {\n return control.validations?.find((v) => v.rule.toLowerCase() == 'required');\n };\n\n patchValue = (key: string, value: any) => {\n this.form.patchValue({ [key]: value });\n };\n\n reset = () => {\n this.form.reset();\n };\n\n private _initValidators() {\n for (const section of this.sections) {\n for (const input of section.controls) {\n if (input.type == 'searchSelect' && !input.fn)\n throw new Error(\n \"An input of type 'searchSelect' needs a display function !\"\n );\n const control = new FormControl(\n input.value,\n this._getValidators(input.validations)\n );\n this.form.addControl(input.name, control);\n }\n }\n }\n\n private _getValidators = (validations?: IControlValidation[]) => {\n const validators: ValidatorFn[] = [];\n if (!validations) return validators;\n //Switch case breaks the mobile app so we'll do if statements\n for (const validation of validations) {\n const rule = validation.rule.toLocaleLowerCase();\n if (rule == 'min') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.min(validation.value));\n }\n if (rule == 'max') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.max(validation.value));\n }\n if (rule == 'required') {\n validation.display = 'Ce champs est requis !';\n validators.push(Validators.required);\n }\n if (rule == 'email') {\n validation.display = \"Cette adresse email n'est pas valide !\";\n validators.push(Validators.email);\n }\n if (rule == 'minlength') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.minLength(validation.value));\n }\n if (rule == 'maxlength') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.maxLength(validation.value));\n }\n if (rule == 'type') {\n validation.display = \"Cette valeur n'est pas valide !\";\n validators.push(type(validation.value));\n }\n if (rule == 'decimal') {\n validation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n validators.push(decimal(validation.value));\n }\n if (rule == 'maxdate') {\n validation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n validators.push(maxDate(validation.value));\n }\n }\n return validators;\n };\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n <div *ngFor=\"let section of sections; let index = index\">\n <h2 *ngIf=\"section.title\" class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n <div *ngFor=\"let control of section.controls; let index = index\" class=\"relative\"\n [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n <label *ngIf=\"control.label\"\n class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n <span class=\"text-red-500\" *ngIf=\"isControlRequired(control)\">*</span>\n :\n </label>\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--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 *ngIf=\"control.type == 'text'\" type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'password'\" type=\"password\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'textArea'\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'number'\" type=\"number\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'date'\" type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [ngModel]=\"\n control.value\n ? (control.value | date : 'yyyy-MM-dd')\n : (model && model[control.name] | date : 'yyyy-MM-dd')\n \" (ngModelChange)=\"\n control.value\n ? (control.value = $event)\n : (model[control.name] = $event)\n \"\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 <!--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 *ngIf=\"control.type == 'searchSelect'\" id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\"\n [display]=\"control.fn!\" [placeholder]=\"control.placeholder\" [(model)]=\"\n control.value ? control.value : model && model[control.name]\n \" [filters]=\"control.filters\" [formControlName]=\"control.name\">\n </app-chr-search-select>\n <span *ngIf=\"control.icon\"\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 <div *ngFor=\"let validation of control.validations\" class=\"h-0\">\n <mat-error *ngIf=\"\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n \">{{ validation.display }}</mat-error>\n </div>\n <span *ngIf=\"control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)\"\n class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n </div>\n </div>\n <div class=\"py-4\" *ngIf=\"index != sections.length - 1\">\n <hr class=\"\" />\n </div>\n </div>\n </fieldset>\n </form>\n</div>","import {\n AfterContentChecked,\n Component,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n public currentPage: number = 1;\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n instance: PaginationInstance;\n\n constructor(public service: PaginationService) {}\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 this.currentPage--;\n this.emit();\n };\n\n public next = () => {\n this.currentPage++;\n this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.currentPage = 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.currentPage == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n 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.currentPage ==\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.currentPage);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Précédent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\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})\nexport class ChrTableHeaderCellComponent {\n @Input() display: string;\n @Input() column: 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 justify-between align-middle self-center\"\n (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n <div *ngIf=\"sortBy\" class=\"absolute right-3 top-0 h-0 w-0\">\n <mat-icon *ngIf=\"sortBy == column && isAsc\">arrow_upward</mat-icon>\n <mat-icon *ngIf=\"sortBy == column && !isAsc\">arrow_downward</mat-icon>\n </div>\n</div>\n<ng-content></ng-content>","import { DatePipe } from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nexport interface IColumn {\n display: string;\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 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})\nexport class ChrTableComponent implements AfterViewInit {\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 public pageSize: number = 50;\n public currentPage: number = 1;\n\n constructor(private _date: DatePipe) {}\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 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\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <!--\r\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\r\n <td *ngFor=\"let column of columns\">\r\n <ng-container [ngTemplateOutlet]=\"\r\n column.isLink ? link: div\r\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\r\n </ng-container>\r\n <ng-template #link let-prop='prop'>\r\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\r\n prop}}</a>\r\n </ng-template>\r\n <ng-template #div let-prop='prop'>\r\n <div>\r\n <span *ngIf=\"column.chipsDisplay\">\r\n\r\n </span>\r\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n -->\r\n\r\n <tr\r\n *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} | sort:isAsc:sortBy; let i = index\"\r\n [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"default\"\r\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\r\n </ng-container>\r\n </td>\r\n <ng-template #default let-column='column' let-property=\"prop\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n </a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\r\n </ng-container>\r\n <ng-template #OK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n </ng-template>\r\n <ng-template #NOK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <app-chr-paginator (pageSizeChange)=\"pageSize = $event\" (pageChange)=\"currentPage = $event\"></app-chr-paginator>\r\n</div>\r\n<!-- <div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}</a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? column.chipsCallback(entry)\r\n : getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? !column.chipsCallback(entry)\r\n : !getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n-->","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})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\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>\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"dark:!text-gray-400\">\n Attention:\n <hr>\n <br>\n La suppression d'un élément est irréversible.\n <hr>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <hr>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <hr>\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 { PipeModule } from 'chrv-pipes';\nimport { NgModule } from '@angular/core';\nimport { ChrCheckboxComponent } from './chr-checkbox/chr-checkbox.component';\nimport { BreadcrumbComponent } from './chr-breadcrumb/chr-breadcrumb.component';\nimport { ChrButtonComponent } from './chr-button/chr-button.component';\nimport { ChrSearchSelectComponent } from './chr-search-select/chr-search-select.component';\nimport { ChrSearchbarComponent } from './chr-searchbar/chr-searchbar.component';\nimport { ChrTableComponent } from './chr-table/chr-table.component';\nimport { ChrTableHeaderCellComponent } from './chr-table-header-cell/chr-table-header-cell.component';\nimport { ChrFormComponent } from './chr-form/chr-form.component';\nimport { ChrSeparatorComponent } from './chr-separator/chr-separator.component';\nimport { ChrDeleteModalComponent } from './chr-delete-modal/chr-delete-modal.component';\nimport { TypeValidatorDirective } from './chr-form/chr-validators/type-validator';\nimport { DecimalValidatorDirective } from './chr-form/chr-validators/decimal-validator';\nimport { MaxDateValidatorDirective } from './chr-form/chr-validators/max-date-validator';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ChrPaginatorComponent } from './chr-paginator/chr-paginator.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\n@NgModule({\n declarations: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule,\n MatDialogModule,\n PipeModule,\n NgxPaginationModule,\n ],\n exports: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n providers: [DatePipe],\n})\nexport class ChrComponentsModule {}\n","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) => {\r\n return this.dialog.open(component);\r\n };\r\n}\r\n","import { ChrButtonComponent } from './lib/chr-button/chr-button.component';\nimport { BreadcrumbComponent } from './lib/chr-breadcrumb/chr-breadcrumb.component';\n/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-components.module';\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i3","i6.ChrSearchSelectComponent","i3.ChrFormComponent","i2.ChrButtonComponent","i3.ChrPaginatorComponent","i4.ChrTableHeaderCellComponent","i5","i6","i3.ChrButtonComponent"],"mappings":"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"}
1
+ {"version":3,"file":"chrv-components.mjs","sources":["../../../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-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-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-searchbar/chr-searchbar.component.ts","../../../projects/chrv-components/src/lib/chr-searchbar/chr-searchbar.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-form/chr-form.component.ts","../../../projects/chrv-components/src/lib/chr-form/chr-form.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-separator/chr-separator.component.ts","../../../projects/chrv-components/src/lib/chr-separator/chr-separator.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-components.module.ts","../../../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, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'app-chr-checkbox',\n templateUrl: './chr-checkbox.component.html',\n styleUrls: ['./chr-checkbox.component.scss']\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 <div *ngIf=\"checked\" (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 <div *ngIf=\"!checked\" (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</div>","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\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})\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 <div *ngFor=\"let crumb of crumbs\" 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</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-chr-button',\n templateUrl: './chr-button.component.html',\n styleUrls: ['./chr-button.component.scss'],\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 <a mat-button mat-flat-button *ngIf=\"predicate\" [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 <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\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} 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';\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})\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","<div *ngIf=\"predicate\" 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 <span *ngIf=\"filters\" [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 </div>\n\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 <mat-option class=\"dark:!bg-slate-600 dark:!text-gray-400 rounded-lg\"\n *ngFor=\"let model of filteredModelOptions | async\" [value]=\"model\" selected>\n {{ getModelDisplay(model) }}\n </mat-option>\n </mat-autocomplete>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'app-chr-searchbar',\n templateUrl: './chr-searchbar.component.html',\n styleUrls: ['./chr-searchbar.component.scss'],\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 { 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})\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})\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 * as 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})\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 { CdkPortal } from '@angular/cdk/portal';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { type } from './chr-validators/type-validator';\nimport { ValidatorFn } from '@angular/forms';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormControl,\n} from '@angular/forms';\nimport { decimal } from './chr-validators/decimal-validator';\nimport { maxDate } from './chr-validators/max-date-validator';\n\nexport interface ISearchFilter {\n display: string;\n callback?: Function;\n tooltip?: string;\n}\n\nexport interface IControlValidation {\n rule: string;\n value?: any;\n display?: string;\n}\n\nexport interface IControl {\n label?: string;\n name: string;\n span?: string;\n placeholder?: any;\n width?: 'col' | 'row';\n type:\n | 'text'\n | 'password'\n | 'textArea'\n | 'number'\n | 'date'\n | 'searchSelect'\n | 'select';\n value?: any;\n data?: any[] | null;\n icon?: string;\n iconCallback?: Function;\n iconCallbackDisabled?: boolean;\n iconTooltip?: string;\n fn?: Function;\n filters?: ISearchFilter[];\n validations?: IControlValidation[];\n}\n\nexport interface IFormSection {\n title?: string;\n controls: IControl[];\n}\n@Component({\n selector: 'app-chr-form',\n templateUrl: './chr-form.component.html',\n styleUrls: ['./chr-form.component.scss'],\n})\nexport class ChrFormComponent {\n @Input() sections: IFormSection[] = [];\n @Input() valid: boolean = false;\n @Output() validChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Input() model: any;\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() disabled: boolean = false;\n\n @Output() valuesChange: EventEmitter<any> = new EventEmitter();\n\n public form: FormGroup;\n constructor(private builder: FormBuilder) {\n this.form = builder.group({});\n }\n\n ngOnInit(): void {\n this._initValidators();\n this.form.valueChanges.subscribe((res) => {\n this.valid = this.form.valid;\n this.validChange.emit(this.form.valid);\n this.valuesChange.emit(res);\n });\n }\n\n value = (input?: string) => {\n if (input) return this.form.controls[input]?.value;\n return this.form.value;\n };\n\n setValue = (input: string, value: any) => {\n if (input) this.form.controls[input]?.setValue(value);\n };\n\n isValid = (input?: string) => {\n if (input) return this.form.controls[input]?.valid;\n return this.valid;\n };\n\n isControlRequired = (control: IControl) => {\n return control.validations?.find((v) => v.rule.toLowerCase() == 'required');\n };\n\n patchValue = (key: string, value: any) => {\n this.form.patchValue({ [key]: value });\n };\n\n reset = () => {\n this.form.reset();\n };\n\n private _initValidators() {\n for (const section of this.sections) {\n for (const input of section.controls) {\n if (input.type == 'searchSelect' && !input.fn)\n throw new Error(\n \"An input of type 'searchSelect' needs a display function !\"\n );\n const control = new FormControl(\n input.value,\n this._getValidators(input.validations)\n );\n this.form.addControl(input.name, control);\n }\n }\n }\n\n private _getValidators = (validations?: IControlValidation[]) => {\n const validators: ValidatorFn[] = [];\n if (!validations) return validators;\n //Switch case breaks the mobile app so we'll do if statements\n for (const validation of validations) {\n const rule = validation.rule.toLocaleLowerCase();\n if (rule == 'min') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.min(validation.value));\n }\n if (rule == 'max') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.max(validation.value));\n }\n if (rule == 'required') {\n validation.display = 'Ce champs est requis !';\n validators.push(Validators.required);\n }\n if (rule == 'email') {\n validation.display = \"Cette adresse email n'est pas valide !\";\n validators.push(Validators.email);\n }\n if (rule == 'minlength') {\n validation.display = 'Cette valeur est trop petite !';\n validators.push(Validators.minLength(validation.value));\n }\n if (rule == 'maxlength') {\n validation.display = 'Cette valeur est trop grande !';\n validators.push(Validators.maxLength(validation.value));\n }\n if (rule == 'type') {\n validation.display = \"Cette valeur n'est pas valide !\";\n validators.push(type(validation.value));\n }\n if (rule == 'decimal') {\n validation.display = `Le nombre de décimal n'est pas valide (max: ${validation.value}) !`;\n validators.push(decimal(validation.value));\n }\n if (rule == 'maxdate') {\n validation.display = `Cette date est trop grande ! (max: ${validation.value}) !`;\n validators.push(maxDate(validation.value));\n }\n }\n return validators;\n };\n}\n","<div class=\"flex flex-col justify-center min-h-5/6\">\n <form [formGroup]=\"form\">\n <fieldset [disabled]=\"disabled\">\n <div *ngFor=\"let section of sections; let index = index\">\n <h2 *ngIf=\"section.title\" class=\"mb-2 font-bold text-xl text-gray-900 dark:text-white\">\n {{ section.title }}\n </h2>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n <div *ngFor=\"let control of section.controls; let index = index\" class=\"relative\"\n [ngClass]=\"control.width == 'row' ? 'sm:col-span-2' : 'col-span-1'\">\n <label *ngIf=\"control.label\"\n class=\"form-control block mb-2 text-sm font-medium text-gray-900 dark:text-white\">{{\n control.label\n }}\n <span class=\"text-red-500\" *ngIf=\"isControlRequired(control)\">*</span>\n :\n </label>\n <!-- Here we will *ngIf each type of input cause it's the cleanest way I can imagine-->\n <!--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 *ngIf=\"control.type == 'text'\" type=\"text\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'password'\" type=\"password\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <textarea class=\"relative\"\n [ngClass]=\"(form.controls[control.name].touched && form.controls[control.name].errors) ? 'bg-red-100 dark:bg-red-800':''\"\n *ngIf=\"control.type == 'textArea'\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'number'\" type=\"number\" id=\"{{ control.name }}_{{ index }}\"\n name=\"{{ control.name }}\" [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\"\n [(ngModel)]=\"\n control.value ? control.value : model && model[control.name]\n \"\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 <!--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 *ngIf=\"control.type == 'date'\" type=\"date\" id=\"{{ control.name }}_{{ index }}\" name=\"{{ control.name }}\"\n [formControlName]=\"control.name\" placeholder=\"{{ control.placeholder }}\" [ngModel]=\"\n control.value\n ? (control.value | date : 'yyyy-MM-dd')\n : (model && model[control.name] | date : 'yyyy-MM-dd')\n \" (ngModelChange)=\"\n control.value\n ? (control.value = $event)\n : (model[control.name] = $event)\n \"\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 <!--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 *ngIf=\"control.type == 'searchSelect'\" id=\"{{ control.name }}_{{ index }}\" [data]=\"control.data || []\"\n [display]=\"control.fn!\" [placeholder]=\"control.placeholder\" [(model)]=\"\n control.value ? control.value : model && model[control.name]\n \" [filters]=\"control.filters\" [formControlName]=\"control.name\">\n </app-chr-search-select>\n <span *ngIf=\"control.icon\"\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 <div *ngFor=\"let validation of control.validations\" class=\"h-0\">\n <mat-error *ngIf=\"\n form.controls[control.name].touched &&\n form.hasError(validation.rule.toLowerCase(), control.name)\n \">{{ validation.display }}</mat-error>\n </div>\n <span *ngIf=\"control.span && (!form.controls[control.name].errors || !form.controls[control.name].touched)\"\n class=\"h-0 text-xs text-gray-600 dark:text-gray-300\">{{ control.span\n }}</span>\n </div>\n </div>\n <div class=\"py-4\" *ngIf=\"index != sections.length - 1\">\n <hr class=\"\" />\n </div>\n </div>\n </fieldset>\n </form>\n</div>","import {\n AfterContentChecked,\n Component,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { PaginationInstance, PaginationService } from 'ngx-pagination';\n\n@Component({\n selector: 'app-chr-paginator',\n templateUrl: './chr-paginator.component.html',\n styleUrls: ['./chr-paginator.component.scss'],\n})\nexport class ChrPaginatorComponent implements OnInit, AfterContentChecked {\n public currentPage: number = 1;\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter();\n instance: PaginationInstance;\n\n constructor(public service: PaginationService) {}\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 this.currentPage--;\n this.emit();\n };\n\n public next = () => {\n this.currentPage++;\n this.emit();\n };\n\n public setPage = (page: number) => {\n if (page < 1 || page > this.lastPage()) return;\n this.currentPage = 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.currentPage == 1;\n };\n\n public setPageSize = (pageSize: number) => {\n this.setPage(1);\n 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.currentPage ==\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.currentPage);\n else this.pageChange.emit(page);\n };\n}\n","<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n Éléments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Précédent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Directive,\n} from '@angular/core';\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})\nexport class ChrTableHeaderCellComponent {\n @Input() display: string;\n @Input() column: 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 justify-between align-middle self-center\"\n (click)=\"orderBy(column)\" id=\"chr_th_cell_{{ column }}\">\n <p>{{ display }}</p>\n <div *ngIf=\"sortBy\" class=\"absolute right-3 top-0 h-0 w-0\">\n <mat-icon *ngIf=\"sortBy == column && isAsc\">arrow_upward</mat-icon>\n <mat-icon *ngIf=\"sortBy == column && !isAsc\">arrow_downward</mat-icon>\n </div>\n</div>\n<ng-content></ng-content>","import { DatePipe } from '@angular/common';\nimport * as moment from 'moment';\nimport {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nexport interface IColumn {\n display: string;\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 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})\nexport class ChrTableComponent implements AfterViewInit {\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 public pageSize: number = 50;\n public currentPage: number = 1;\n\n constructor(private _date: DatePipe) {}\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 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\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage}\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <!--\r\n <tr *ngFor=\"let entry of data | sort: isAsc:sortBy\">\r\n <td *ngFor=\"let column of columns\">\r\n <ng-container [ngTemplateOutlet]=\"\r\n column.isLink ? link: div\r\n \" [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties)}\">\r\n </ng-container>\r\n <ng-template #link let-prop='prop'>\r\n <a target=\"_blank\" href=\"{{column.linkStaticUrl || '#'}}\">{{column.date ? (prop | date: column.date) :\r\n prop}}</a>\r\n </ng-template>\r\n <ng-template #div let-prop='prop'>\r\n <div>\r\n <span *ngIf=\"column.chipsDisplay\">\r\n\r\n </span>\r\n <p>{{column.callback ? column.callback(prop) : prop}}</p>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n -->\r\n\r\n <tr\r\n *ngFor=\"let entry of data | paginate: {itemsPerPage: pageSize, currentPage: currentPage, id:'chr_data-table'} | sort:isAsc:sortBy; let i = index\"\r\n [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"default\"\r\n [ngTemplateOutletContext]=\"{prop: getProperty(entry, column.properties), column: column}\">\r\n </ng-container>\r\n </td>\r\n <ng-template #default let-column='column' let-property=\"prop\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n </a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(property)\r\n : (property | date : column.date)\r\n : column.callback\r\n ? column.callback(property)\r\n : property\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"column.chipsCallback ? (column.chipsCallback(entry) ? OK : NOK) : (getProperty(entry, column.chipsTarget) ? OK : NOK)\">\r\n </ng-container>\r\n <ng-template #OK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n </ng-template>\r\n <ng-template #NOK>\r\n <span\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <app-chr-paginator (pageSizeChange)=\"pageSize = $event\" (pageChange)=\"currentPage = $event\"></app-chr-paginator>\r\n</div>\r\n<!-- <div class=\"h-full no-scrollbar\">\r\n <ng-content class=\"mt-5\"></ng-content>\r\n <div class=\"h-full flex flex-col flex-1 overflow-auto no-scrollbar\">\r\n <table *ngIf=\"data\"\r\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\">\r\n <thead class=\"text-black dark:text-gray-400 sm:sticky sm:top-0 sm:z-10\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 border-primary text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\n class=\"h-14 p-3 text-left sm:text-center place-content-center place-items-center items-center align-middle w-36\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let entry of data\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 text-gray-800\">\r\n <th app-chr-table-header-cell class=\"p-3 h-auto\" *ngFor=\"let column of columns\" display=\"{{ column.display }}\"\r\n column=\"{{ column.properties }}\" [(isAsc)]=\"isAsc\" (isAscChange)=\"emitIsAsc($event)\" [(sortBy)]=\"sortBy\"\r\n (sortByChange)=\"emitSortBy($event)\"></th>\r\n <th *ngIf=\"actions\"\r\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\"\r\n [ngClass]=\"actions.length > 1 ? 'sm:w-72' : 'w-36'\">\r\n Actions\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"w-full dark:bg-slate-600\">\r\n <tr *ngIf=\"data.length <= 0\"\r\n class=\"flex flex-col flex-no-wrap sm:table-row rounded-l-lg mb-0 sm:mb-2 dark:bg-slate-600\">\r\n <td class=\"p-3 h-14\">Pas de donnée(s)</td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14 grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\"></td>\r\n </tr>\r\n <tr *ngFor=\"let entry of data | sort:isAsc:sortBy ; let i = index\" [attr.data-index]=\"i\"\r\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\">\r\n <td *ngFor=\"let column of columns\" [ngClass]=\"\r\n column.chipsTarget || column.chipsDisplay\r\n ? ''\r\n : ''\r\n \" class=\"p-3 min-h-[2.75rem] h-auto\">\r\n <a *ngIf=\"column.isLink\" target=\"_blank\" href=\"{{column.linkStaticUrl}}{{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}</a>\r\n <div *ngIf=\"!column.isLink\" class=\"flex flex-row justify-between\">\r\n {{\r\n column.date\r\n ? column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : (getProperty(entry, column.properties) | date : column.date)\r\n : column.callback\r\n ? column.callback(getProperty(entry, column.properties))\r\n : getProperty(entry, column.properties)\r\n }}\r\n <div *ngIf=\"column.chipsTarget || column.chipsDisplay\">\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? column.chipsCallback(entry)\r\n : getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[0] }}</span>\r\n <span *ngIf=\"\r\n column.chipsCallback\r\n ? !column.chipsCallback(entry)\r\n : !getProperty(entry, column.chipsTarget)\r\n \"\r\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\">{{\r\n column.chipsDisplay && column.chipsDisplay[1] }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"actions\" class=\"p-3 h-14\">\r\n <div class=\"grid gap-3 justify-center align-middle items-center\"\r\n [ngClass]=\"actions.length > 1 ? 'grid-cols-2' : 'grid-cols-1'\">\r\n <app-chr-button *ngFor=\"let action of actions\" [disabled]=\"\r\n action.disabledCallback\r\n ? action.disabledCallback(entry)\r\n : action.disabled || false\r\n \" [display]=\"action.display\" [click]=\"action.callback.bind(null, entry, i)\" [color]=\"action.color\"\r\n type=\"table\">\r\n </app-chr-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n-->","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})\nexport class ChrSeparatorComponent {\n\n}\n","<div class=\"py-4\">\n <hr class=\"\" />\n</div>","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-chr-delete-modal',\n templateUrl: './chr-delete-modal.component.html',\n styleUrls: ['./chr-delete-modal.component.scss'],\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>\n <h2 mat-dialog-title class=\"dark:!text-gray-400\">Supprimer un élément</h2>\n <mat-dialog-content class=\"dark:!text-gray-400\">\n Attention:\n <hr>\n <br>\n La suppression d'un élément est irréversible.\n <hr>\n <br>\n Vous allez supprimer un élément et sa référence sera effacée dans toute l'application.\n <hr>\n Si d'autres éléments y sont liés, il est possible qu'ils soient supprimés en même temps.\n <hr>\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 { PipeModule } from 'chrv-pipes';\nimport { NgModule } from '@angular/core';\nimport { ChrCheckboxComponent } from './chr-checkbox/chr-checkbox.component';\nimport { BreadcrumbComponent } from './chr-breadcrumb/chr-breadcrumb.component';\nimport { ChrButtonComponent } from './chr-button/chr-button.component';\nimport { ChrSearchSelectComponent } from './chr-search-select/chr-search-select.component';\nimport { ChrSearchbarComponent } from './chr-searchbar/chr-searchbar.component';\nimport { ChrTableComponent } from './chr-table/chr-table.component';\nimport { ChrTableHeaderCellComponent } from './chr-table-header-cell/chr-table-header-cell.component';\nimport { ChrFormComponent } from './chr-form/chr-form.component';\nimport { ChrSeparatorComponent } from './chr-separator/chr-separator.component';\nimport { ChrDeleteModalComponent } from './chr-delete-modal/chr-delete-modal.component';\nimport { TypeValidatorDirective } from './chr-form/chr-validators/type-validator';\nimport { DecimalValidatorDirective } from './chr-form/chr-validators/decimal-validator';\nimport { MaxDateValidatorDirective } from './chr-form/chr-validators/max-date-validator';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ChrPaginatorComponent } from './chr-paginator/chr-paginator.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\n@NgModule({\n declarations: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule,\n MatDialogModule,\n PipeModule,\n NgxPaginationModule,\n ],\n exports: [\n ChrCheckboxComponent,\n BreadcrumbComponent,\n ChrButtonComponent,\n ChrSearchSelectComponent,\n ChrSearchbarComponent,\n ChrPaginatorComponent,\n ChrTableComponent,\n ChrTableHeaderCellComponent,\n ChrFormComponent,\n ChrSeparatorComponent,\n ChrDeleteModalComponent,\n TypeValidatorDirective,\n DecimalValidatorDirective,\n MaxDateValidatorDirective,\n ],\n providers: [DatePipe],\n})\nexport class ChrComponentsModule {}\n","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) => {\r\n return this.dialog.open(component);\r\n };\r\n}\r\n","import { ChrButtonComponent } from './lib/chr-button/chr-button.component';\nimport { BreadcrumbComponent } from './lib/chr-breadcrumb/chr-breadcrumb.component';\n/*\n * Public API Surface of chr-components\n */\n\nexport * from './lib/chr-components.module';\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';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i3","i6.ChrSearchSelectComponent","i3.ChrFormComponent","i2.ChrButtonComponent","i3.ChrPaginatorComponent","i4.ChrTableHeaderCellComponent","i5","i6","i3.ChrButtonComponent"],"mappings":"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"}
@@ -19,7 +19,7 @@ export interface IControl {
19
19
  width?: 'col' | 'row';
20
20
  type: 'text' | 'password' | 'textArea' | 'number' | 'date' | 'searchSelect' | 'select';
21
21
  value?: any;
22
- data?: any[];
22
+ data?: any[] | null;
23
23
  icon?: string;
24
24
  iconCallback?: Function;
25
25
  iconCallbackDisabled?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chrv-components",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.1.0",
6
6
  "@angular/core": "^15.1.0",
Binary file