ng-prime-tools 1.0.22 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +9 -0
  2. package/esm2022/lib/models/metric-indicateur-data.model.mjs +2 -0
  3. package/esm2022/lib/models/metric-panel-data.model.mjs +2 -0
  4. package/esm2022/lib/models/public-api.mjs +3 -1
  5. package/esm2022/lib/models/search-criteria.model.mjs +1 -1
  6. package/esm2022/lib/multi-search-criteria/multi-search-criteria.component.mjs +21 -5
  7. package/esm2022/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.mjs +22 -4
  8. package/esm2022/lib/pt-group/index.mjs +2 -0
  9. package/esm2022/lib/pt-group/pt-group.component.mjs +39 -0
  10. package/esm2022/lib/pt-group/pt-group.module.mjs +19 -0
  11. package/esm2022/lib/pt-group/public-api.mjs +3 -0
  12. package/esm2022/lib/pt-metric-panel/index.mjs +2 -0
  13. package/esm2022/lib/pt-metric-panel/pt-metric-panel.component.mjs +93 -0
  14. package/esm2022/lib/pt-metric-panel/pt-metric-panel.module.mjs +19 -0
  15. package/esm2022/lib/pt-metric-panel/public-api.mjs +3 -0
  16. package/esm2022/public-api.mjs +3 -1
  17. package/fesm2022/ng-prime-tools.mjs +204 -17
  18. package/fesm2022/ng-prime-tools.mjs.map +1 -1
  19. package/lib/models/metric-indicateur-data.model.d.ts +9 -0
  20. package/lib/models/metric-indicateur-data.model.d.ts.map +1 -0
  21. package/lib/models/metric-panel-data.model.d.ts +7 -0
  22. package/lib/models/metric-panel-data.model.d.ts.map +1 -0
  23. package/lib/models/public-api.d.ts +2 -0
  24. package/lib/models/public-api.d.ts.map +1 -1
  25. package/lib/models/search-criteria.model.d.ts +4 -0
  26. package/lib/models/search-criteria.model.d.ts.map +1 -1
  27. package/lib/multi-search-criteria/multi-search-criteria.component.d.ts +4 -0
  28. package/lib/multi-search-criteria/multi-search-criteria.component.d.ts.map +1 -1
  29. package/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.d.ts +1 -0
  30. package/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.d.ts.map +1 -1
  31. package/lib/pt-group/index.d.ts +2 -0
  32. package/lib/pt-group/index.d.ts.map +1 -0
  33. package/lib/pt-group/pt-group.component.d.ts +12 -0
  34. package/lib/pt-group/pt-group.component.d.ts.map +1 -0
  35. package/lib/pt-group/pt-group.module.d.ts +10 -0
  36. package/lib/pt-group/pt-group.module.d.ts.map +1 -0
  37. package/lib/pt-group/public-api.d.ts +3 -0
  38. package/lib/pt-group/public-api.d.ts.map +1 -0
  39. package/lib/pt-metric-panel/index.d.ts +2 -0
  40. package/lib/pt-metric-panel/index.d.ts.map +1 -0
  41. package/lib/pt-metric-panel/pt-metric-panel.component.d.ts +55 -0
  42. package/lib/pt-metric-panel/pt-metric-panel.component.d.ts.map +1 -0
  43. package/lib/pt-metric-panel/pt-metric-panel.module.d.ts +10 -0
  44. package/lib/pt-metric-panel/pt-metric-panel.module.d.ts.map +1 -0
  45. package/lib/pt-metric-panel/public-api.d.ts +3 -0
  46. package/lib/pt-metric-panel/public-api.d.ts.map +1 -0
  47. package/package.json +1 -1
  48. package/public-api.d.ts +2 -0
  49. package/public-api.d.ts.map +1 -1
package/README.md CHANGED
@@ -636,6 +636,15 @@ export class FormBuilderTesterComponent implements OnInit {
636
636
 
637
637
  ## Changelog
638
638
 
639
+ ### Version 1.0.24 - Release Date: 05/03/2025
640
+
641
+ - adding pt-group
642
+ - adding pt-metric-panel
643
+
644
+ ### Version 1.0.23 - Release Date: 03/03/2025
645
+
646
+ - fix NUMBER type in advanced table
647
+
639
648
  ### Version 1.0.22 - Release Date: 03/03/2025
640
649
 
641
650
  - adding styles for composed types in advanced table
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLWluZGljYXRldXItZGF0YS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL21ldHJpYy1pbmRpY2F0ZXVyLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25TdHlsZSB9IGZyb20gJy4vaWNvbi1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBUaXRsZVN0eWxlIH0gZnJvbSAnLi90aXRsZS1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljSW5kaWNhdGV1ckRhdGEge1xuICBpY29uPzogSWNvblN0eWxlO1xuICB0aXRsZT86IHN0cmluZyB8IFRpdGxlU3R5bGU7XG4gIHZhbHVlOiBzdHJpbmcgfCBUaXRsZVN0eWxlO1xuICB1cmw/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLXBhbmVsLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL21vZGVscy9tZXRyaWMtcGFuZWwtZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0cmljSW5kaWNhdGV1ckRhdGEgfSBmcm9tICcuL21ldHJpYy1pbmRpY2F0ZXVyLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgVGl0bGVTdHlsZSB9IGZyb20gJy4vdGl0bGUtc3R5bGUubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1BhbmVsRGF0YSB7XG4gIHRpdGxlPzogc3RyaW5nIHwgVGl0bGVTdHlsZTtcbiAgaW5kaWNhdG9yczogTWV0cmljSW5kaWNhdGV1ckRhdGFbXTtcbn1cbiJdfQ==
@@ -17,6 +17,8 @@ export * from './form-text-area-field.model';
17
17
  export * from './form-text-field.model';
18
18
  // Metric data for dashboard
19
19
  export * from './metric-card-data.model';
20
+ export * from './metric-panel-data.model';
21
+ export * from './metric-indicateur-data.model';
20
22
  // Chart
21
23
  export * from './chart-config.model';
22
24
  export * from './axis-chart-config.model';
@@ -50,4 +52,4 @@ export * from './image-style.model';
50
52
  export * from './badge.model';
51
53
  export * from './pattern.model';
52
54
  export * from './footer.model';
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsd0JBQXdCO0FBQ3hCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0Qyx1QkFBdUI7QUFDdkIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLDRCQUE0QjtBQUM1QixjQUFjLDBCQUEwQixDQUFDO0FBRXpDLFFBQVE7QUFDUixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxPQUFPO0FBQ1AsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxPQUFPO0FBQ1AsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxnQkFBZ0I7QUFDaEIsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxTQUFTO0FBQ1QsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjO0FBQ2QsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxRQUFRO0FBQ1IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGVBQWUsQ0FBQztBQUU5QixTQUFTO0FBQ1QsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixTQUFTO0FBQ1QsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBZHZhbmNlZCB0YWJsZVxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb2x1bW4ubW9kZWwnO1xuXG4vLyBNdWx0aSBzZWFyY2ggY3JpdGVyaWFcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWNyaXRlcmlhLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLW9wdGlvbi5tb2RlbCc7XG5cbi8vIEZvcm0gaW5wdXRzIGFuZCBidG5zXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tYnV0dG9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQtZ3JvdXAubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNoZWNrLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1kYXRlLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1kcm9wLWRvd24tZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLW11bHRpLXNlbGVjdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tbnVtYmVyLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1zd2l0Y2gtZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLXRleHQtYXJlYS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tdGV4dC1maWVsZC5tb2RlbCc7XG5cbi8vIE1ldHJpYyBkYXRhIGZvciBkYXNoYm9hcmRcbmV4cG9ydCAqIGZyb20gJy4vbWV0cmljLWNhcmQtZGF0YS5tb2RlbCc7XG5cbi8vIENoYXJ0XG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2F4aXMtY2hhcnQtY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYXhpcy1jaGFydC1kYXRhLm1vZGVsJztcblxuLy8gQ2FyZFxuZXhwb3J0ICogZnJvbSAnLi9jYXJkLWNvbmZpZy5tb2RlbCc7XG5cbi8vIE1lbnVcbmV4cG9ydCAqIGZyb20gJy4vbWVudS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbmF2LWJhci1tZW51LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NpZGUtbWVudS1iYXItY29uZmlnLm1vZGVsJztcblxuLy8gUGFnZSBTa2VsZXRvblxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXNrZWxldG9uLWNvbmZpZy5tb2RlbCc7XG5cbi8vIEZvb3RlclxuZXhwb3J0ICogZnJvbSAnLi9mb290ZXItY29uZmlnLm1vZGVsJztcblxuLy8gQnJlYWQgQ3J1bWJcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWQtY3J1bWItY29uZmlnLm1vZGVsJztcblxuLy8gbG9naW5cbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tcGFnZS1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dpbi1tb2RlbCc7XG5cbi8vIEJ1dHRvblxuZXhwb3J0ICogZnJvbSAnLi9idXR0b24ubW9kZWwnO1xuXG4vLyBEaWFsb2dcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nLm1vZGVsJztcblxuLy8gR2VuZXJpY1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGl0bGUtc3R5bGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Utc3R5bGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9iYWRnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3BhdHRlcm4ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb290ZXIubW9kZWwnO1xuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsd0JBQXdCO0FBQ3hCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0Qyx1QkFBdUI7QUFDdkIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLDRCQUE0QjtBQUM1QixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxRQUFRO0FBQ1IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsT0FBTztBQUNQLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTztBQUNQLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsZ0JBQWdCO0FBQ2hCLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsU0FBUztBQUNULGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsY0FBYztBQUNkLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsUUFBUTtBQUNSLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFFOUIsU0FBUztBQUNULGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsU0FBUztBQUNULGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsVUFBVTtBQUNWLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWR2YW5jZWQgdGFibGVcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtY29sdW1uLm1vZGVsJztcblxuLy8gTXVsdGkgc2VhcmNoIGNyaXRlcmlhXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1jcml0ZXJpYS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1vcHRpb24ubW9kZWwnO1xuXG4vLyBGb3JtIGlucHV0cyBhbmQgYnRuc1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWJ1dHRvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWdyb3VwLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1jaGVjay1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZGF0ZS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZHJvcC1kb3duLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1tdWx0aS1zZWxlY3QubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLW51bWJlci1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc3dpdGNoLWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS10ZXh0LWFyZWEtZmllbGQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLXRleHQtZmllbGQubW9kZWwnO1xuXG4vLyBNZXRyaWMgZGF0YSBmb3IgZGFzaGJvYXJkXG5leHBvcnQgKiBmcm9tICcuL21ldHJpYy1jYXJkLWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRyaWMtcGFuZWwtZGF0YS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21ldHJpYy1pbmRpY2F0ZXVyLWRhdGEubW9kZWwnO1xuXG4vLyBDaGFydFxuZXhwb3J0ICogZnJvbSAnLi9jaGFydC1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9heGlzLWNoYXJ0LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2F4aXMtY2hhcnQtZGF0YS5tb2RlbCc7XG5cbi8vIENhcmRcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1jb25maWcubW9kZWwnO1xuXG4vLyBNZW51XG5leHBvcnQgKiBmcm9tICcuL21lbnUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL25hdi1iYXItbWVudS1jb25maWcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWRlLW1lbnUtYmFyLWNvbmZpZy5tb2RlbCc7XG5cbi8vIFBhZ2UgU2tlbGV0b25cbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1za2VsZXRvbi1jb25maWcubW9kZWwnO1xuXG4vLyBGb290ZXJcbmV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLWNvbmZpZy5tb2RlbCc7XG5cbi8vIEJyZWFkIENydW1iXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkLWNydW1iLWNvbmZpZy5tb2RlbCc7XG5cbi8vIGxvZ2luXG5leHBvcnQgKiBmcm9tICcuL2xvZ2luLXBhZ2UtY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tbW9kZWwnO1xuXG4vLyBCdXR0b25cbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLm1vZGVsJztcblxuLy8gRGlhbG9nXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy5tb2RlbCc7XG5cbi8vIEdlbmVyaWNcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1zdHlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RpdGxlLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC1zdHlsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYmFkZ2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXR0ZXJuLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLm1vZGVsJztcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNyaXRlcmlhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvc2VhcmNoLWNyaXRlcmlhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvc2VhcmNoLWNyaXRlcmlhLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb24gfSBmcm9tICcuL2ZpbHRlci1vcHRpb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaENyaXRlcmlhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICB0eXBlOiBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtO1xuICB2YWx1ZT86IGFueTtcbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBjdXJyZW5jeT86IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNyaXRlcmlhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvc2VhcmNoLWNyaXRlcmlhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvc2VhcmNoLWNyaXRlcmlhLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb24gfSBmcm9tICcuL2ZpbHRlci1vcHRpb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaENyaXRlcmlhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICB0eXBlOiBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtO1xuICB2YWx1ZT86IGFueTtcbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgdGhvdXNhbmRTZXBhcmF0b3I/OiAnY29tbWEnIHwgJ3NwYWNlJztcbiAgZGVjaW1hbFNlcGFyYXRvcj86ICdjb21tYScgfCAnZG90JztcbiAgbWluRnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufVxuIl19
@@ -35,6 +35,17 @@ export class MultiSearchCriteriaComponent {
35
35
  getCurrencySymbol(input) {
36
36
  return input.currency || 'EUR';
37
37
  }
38
+ getMinFractionDigits(input) {
39
+ return input.minFractionDigits ?? 0;
40
+ }
41
+ getMaxFractionDigits(input) {
42
+ return input.maxFractionDigits ?? undefined;
43
+ }
44
+ getStepValue(input) {
45
+ return input.maxFractionDigits
46
+ ? parseFloat(`0.${'1'.padEnd(input.maxFractionDigits, '0')}`)
47
+ : 0.0000000001;
48
+ }
38
49
  search() {
39
50
  if (this.mode === 'dynamic') {
40
51
  const criteriaValues = {};
@@ -67,8 +78,10 @@ export class MultiSearchCriteriaComponent {
67
78
  return ((!parsedStartDate || itemDate >= parsedStartDate) &&
68
79
  (!parsedEndDate || itemDate <= parsedEndDate));
69
80
  }
70
- else if (criterion.type === SearchCriteriaTypeEnum.AMOUNT) {
71
- return !criterion.value || item[criterion.code] === criterion.value;
81
+ else if (criterion.type === SearchCriteriaTypeEnum.AMOUNT ||
82
+ criterion.type === SearchCriteriaTypeEnum.NUMBER) {
83
+ return (!criterion.value ||
84
+ Number(item[criterion.code]) === Number(criterion.value));
72
85
  }
73
86
  else if (criterion.type === SearchCriteriaTypeEnum.MULTISELECT) {
74
87
  return (!criterion.value ||
@@ -114,12 +127,15 @@ export class MultiSearchCriteriaComponent {
114
127
  }
115
128
  return null;
116
129
  }
130
+ getDecimalSeparator(input) {
131
+ return input.decimalSeparator === 'comma' ? 'fr-FR' : 'en-US';
132
+ }
117
133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MultiSearchCriteriaComponent, selector: "multi-search-criteria", inputs: { title: "title", criteria: "criteria", inputsPerRow: "inputsPerRow", data: "data", mode: "mode" }, outputs: { filteredData: "filteredData", searchCriteria: "searchCriteria" }, ngImport: i0, template: "<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n inputId=\"minmaxfraction\"\n [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"5\"\n [placeholder]=\"getCurrencySymbol(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: [".multi-search-criteria ::ng-deep .p-element .p-hidden-accessible input{display:none}.multi-search-criteria ::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}.multi-search-criteria ::ng-deep .custom-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}.multi-search-criteria ::ng-deep .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-inputnumber{width:100%}.multi-search-criteria .criteria-container{display:grid;gap:10px}.multi-search-criteria .criteria-item{margin-bottom:10px;box-sizing:border-box}.multi-search-criteria .full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.multi-search-criteria .footer-buttons{display:flex;justify-content:flex-end;gap:10px}.multi-search-criteria ::ng-deep .footer-button button{width:140px;cursor:pointer}.multi-search-criteria ::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }] }); }
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MultiSearchCriteriaComponent, selector: "multi-search-criteria", inputs: { title: "title", criteria: "criteria", inputsPerRow: "inputsPerRow", data: "data", mode: "mode" }, outputs: { filteredData: "filteredData", searchCriteria: "searchCriteria" }, ngImport: i0, template: "<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <!-- Date Range -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n\n <!-- Date -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n\n <!-- String Input -->\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <!-- AMOUNT (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [placeholder]=\"getCurrencySymbol(input)\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- NUMBER (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [useGrouping]=\"false\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- Multi-Select -->\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: [".multi-search-criteria ::ng-deep .p-element .p-hidden-accessible input{display:none}.multi-search-criteria ::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}.multi-search-criteria ::ng-deep .custom-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}.multi-search-criteria ::ng-deep .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-inputnumber{width:100%}.multi-search-criteria .criteria-container{display:grid;gap:10px}.multi-search-criteria .criteria-item{margin-bottom:10px;box-sizing:border-box}.multi-search-criteria .full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.multi-search-criteria .footer-buttons{display:flex;justify-content:flex-end;gap:10px}.multi-search-criteria ::ng-deep .footer-button button{width:140px;cursor:pointer}.multi-search-criteria ::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }] }); }
119
135
  }
120
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaComponent, decorators: [{
121
137
  type: Component,
122
- args: [{ selector: 'multi-search-criteria', template: "<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n inputId=\"minmaxfraction\"\n [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"5\"\n [placeholder]=\"getCurrencySymbol(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: [".multi-search-criteria ::ng-deep .p-element .p-hidden-accessible input{display:none}.multi-search-criteria ::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}.multi-search-criteria ::ng-deep .custom-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}.multi-search-criteria ::ng-deep .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-inputnumber{width:100%}.multi-search-criteria .criteria-container{display:grid;gap:10px}.multi-search-criteria .criteria-item{margin-bottom:10px;box-sizing:border-box}.multi-search-criteria .full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.multi-search-criteria .footer-buttons{display:flex;justify-content:flex-end;gap:10px}.multi-search-criteria ::ng-deep .footer-button button{width:140px;cursor:pointer}.multi-search-criteria ::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"] }]
138
+ args: [{ selector: 'multi-search-criteria', template: "<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <!-- Date Range -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n\n <!-- Date -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n\n <!-- String Input -->\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <!-- AMOUNT (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [placeholder]=\"getCurrencySymbol(input)\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- NUMBER (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [useGrouping]=\"false\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- Multi-Select -->\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: [".multi-search-criteria ::ng-deep .p-element .p-hidden-accessible input{display:none}.multi-search-criteria ::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}.multi-search-criteria ::ng-deep .custom-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}.multi-search-criteria ::ng-deep .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext{width:100%}.multi-search-criteria ::ng-deep .p-inputnumber{width:100%}.multi-search-criteria .criteria-container{display:grid;gap:10px}.multi-search-criteria .criteria-item{margin-bottom:10px;box-sizing:border-box}.multi-search-criteria .full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}.multi-search-criteria ::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.multi-search-criteria .footer-buttons{display:flex;justify-content:flex-end;gap:10px}.multi-search-criteria ::ng-deep .footer-button button{width:140px;cursor:pointer}.multi-search-criteria ::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"] }]
123
139
  }], propDecorators: { title: [{
124
140
  type: Input
125
141
  }], criteria: [{
@@ -135,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
135
151
  }], searchCriteria: [{
136
152
  type: Output
137
153
  }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VhcmNoLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbXVsdGktc2VhcmNoLWNyaXRlcmlhL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL211bHRpLXNlYXJjaC1jcml0ZXJpYS9tdWx0aS1zZWFyY2gtY3JpdGVyaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyw0QkFBNEI7SUFMekM7UUFNRSwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUV2QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUF5QixRQUFRLENBQUMsQ0FBQyxpQkFBaUI7UUFDdkQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFdEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQW1CLEVBQUUsQ0FBQztLQTRHL0I7SUExR0MsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLFdBQVc7Z0JB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Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaENyaXRlcmlhVHlwZUVudW0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBTZWFyY2hDcml0ZXJpYSB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtY3JpdGVyaWEubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1vcHRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdWx0aS1zZWFyY2gtY3JpdGVyaWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VhcmNoLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VhcmNoLWNyaXRlcmlhLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWFyY2hDcml0ZXJpYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIFNlYXJjaENyaXRlcmlhVHlwZUVudW0gPSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtO1xuXG4gIEBJbnB1dCgpIHRpdGxlOiBTdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3JpdGVyaWE6IFNlYXJjaENyaXRlcmlhW10gPSBbXTtcbiAgQElucHV0KCkgaW5wdXRzUGVyUm93OiBudW1iZXIgPSAzO1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBtb2RlOiAnc3RhdGljJyB8ICdkeW5hbWljJyA9ICdzdGF0aWMnOyAvLyBBZGQgbW9kZSBpbnB1dFxuICBAT3V0cHV0KCkgZmlsdGVyZWREYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENyaXRlcmlhID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGFueSB9PigpO1xuXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZDogRmlsdGVyT3B0aW9uW10gPSBbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyaXRlcmlhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaXRlbS50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLk1VTFRJU0VMRUNUICYmXG4gICAgICAgIGl0ZW0uZmlsdGVyT3B0aW9uc1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbLi4uaXRlbS5maWx0ZXJPcHRpb25zXTtcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRDdXJyZW5jeVN5bWJvbChpbnB1dDogU2VhcmNoQ3JpdGVyaWEpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnB1dC5jdXJyZW5jeSB8fCAnRVVSJztcbiAgfVxuXG4gIHNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZHluYW1pYycpIHtcbiAgICAgIGNvbnN0IGNyaXRlcmlhVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICB0aGlzLmNyaXRlcmlhLmZvckVhY2goKGNyaXRlcmlvbikgPT4ge1xuICAgICAgICBpZiAoY3JpdGVyaW9uLnZhbHVlICE9PSBudWxsICYmIGNyaXRlcmlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY3JpdGVyaWFWYWx1ZXNbY3JpdGVyaW9uLmNvZGVdID0gY3JpdGVyaW9uLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEuZW1pdChjcml0ZXJpYVZhbHVlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5kYXRhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jcml0ZXJpYS5ldmVyeSgoY3JpdGVyaW9uKSA9PiB7XG4gICAgICAgICAgaWYgKGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLkRBVEVSQU5HRSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0RGF0ZSwgZW5kRGF0ZV0gPSBjcml0ZXJpb24udmFsdWUgfHwgW1xuICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBpdGVtRGF0ZSA9IHRoaXMucGFyc2VEYXRlKFxuICAgICAgICAgICAgICBpdGVtW2NyaXRlcmlvbi5jb2RlXSB8fCBpdGVtWydkYXRlJ11cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIXN0YXJ0RGF0ZSAmJiAhZW5kRGF0ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtRGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRTdGFydERhdGUgPSBzdGFydERhdGVcbiAgICAgICAgICAgICAgPyB0aGlzLnBhcnNlRGF0ZShzdGFydERhdGUpXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZEVuZERhdGUgPSBlbmREYXRlID8gdGhpcy5wYXJzZURhdGUoZW5kRGF0ZSkgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKCFwYXJzZWRTdGFydERhdGUgfHwgaXRlbURhdGUgPj0gcGFyc2VkU3RhcnREYXRlKSAmJlxuICAgICAgICAgICAgICAoIXBhcnNlZEVuZERhdGUgfHwgaXRlbURhdGUgPD0gcGFyc2VkRW5kRGF0ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjcml0ZXJpb24udHlwZSA9PT0gU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5BTU9VTlQpIHtcbiAgICAgICAgICAgIHJldHVybiAhY3JpdGVyaW9uLnZhbHVlIHx8IGl0ZW1bY3JpdGVyaW9uLmNvZGVdID09PSBjcml0ZXJpb24udmFsdWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjcml0ZXJpb24udHlwZSA9PT0gU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5NVUxUSVNFTEVDVCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgIWNyaXRlcmlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgICBjcml0ZXJpb24udmFsdWUuc29tZShcbiAgICAgICAgICAgICAgICAob3B0aW9uOiBGaWx0ZXJPcHRpb24pID0+IG9wdGlvbi5sYWJlbCA9PT0gaXRlbVtjcml0ZXJpb24uY29kZV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLlNUUklORykge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgIWNyaXRlcmlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgICBpdGVtW2NyaXRlcmlvbi5jb2RlXVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoY3JpdGVyaW9uLnZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWx0ZXJlZERhdGEuZW1pdChmaWx0ZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jcml0ZXJpYS5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgaW5wdXQudmFsdWUgPSBudWxsO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhLmVtaXQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGV2ZW50OiBhbnksIGNyaXRlcmlvbjogU2VhcmNoQ3JpdGVyaWEpIHtcbiAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgY3JpdGVyaW9uLnZhbHVlID0gZXZlbnQuY2hlY2tlZCA/IFsuLi4oY3JpdGVyaW9uLmZpbHRlck9wdGlvbnMgPz8gW10pXSA6IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nIHwgRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGRhdGVTdHJpbmcpID09PSAnW29iamVjdCBEYXRlXScpIHtcbiAgICAgIHJldHVybiBkYXRlU3RyaW5nIGFzIERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydHMgPSAoZGF0ZVN0cmluZyBhcyBzdHJpbmcpLnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgZGF5ID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKSAtIDE7XG4gICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsIjxwLXBhbmVsXG4gIGhlYWRlcj1cInt7IHRpdGxlIH19XCJcbiAgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiXG4gIFtjb2xsYXBzZWRdPVwidHJ1ZVwiXG4gIGNsYXNzPVwibXVsdGktc2VhcmNoLWNyaXRlcmlhXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3JpdGVyaWEtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJ7ICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnOiAncmVwZWF0KCcgKyBpbnB1dHNQZXJSb3cgKyAnLCAxZnIpJyB9XCJcbiAgPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGlucHV0IG9mIGNyaXRlcmlhXCIgY2xhc3M9XCJjcml0ZXJpYS1pdGVtXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJic2MtbGFiZWxcIj57eyBpbnB1dC50aXRsZSB9fTwvbGFiZWw+XG5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImlucHV0LnR5cGVcIj5cbiAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5EQVRFUkFOR0VcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2RkL21tL3l5J1wiXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoLWlucHV0XCJcbiAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaW5wdXQudmFsdWUgPSAkZXZlbnRcIlxuICAgICAgICA+PC9wLWNhbGVuZGFyPlxuICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLkRBVEVcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJpbnB1dC52YWx1ZSA9ICRldmVudFwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2RkL21tL3l5J1wiXG4gICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLlNUUklOR1wiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGgtaW5wdXRcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwLWlucHV0TnVtYmVyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uQU1PVU5UXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgICAgaW5wdXRJZD1cIm1pbm1heGZyYWN0aW9uXCJcbiAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiXG4gICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRDdXJyZW5jeVN5bWJvbChpbnB1dClcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtaW5wdXROdW1iZXI+XG5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5OVU1CRVJcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtaW5wdXROdW1iZXI+XG5cbiAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5NVUxUSVNFTEVDVFwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiaW5wdXQuZmlsdGVyT3B0aW9uc1wiXG4gICAgICAgICAgW2Rpc3BsYXldPVwiJ2NoaXAnXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICAgICAgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIChvblNlbGVjdEFsbENoYW5nZSk9XCJvblNlbGVjdEFsbENoYW5nZSgkZXZlbnQsIGlucHV0KVwiXG4gICAgICAgICAgY2xhc3M9XCJjdXN0b20tbXVsdGlzZWxlY3QgZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYnV0dG9uc1wiPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGxhYmVsPVwiRWZmYWNlclwiXG4gICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgY2xhc3M9XCJmb290ZXItYnV0dG9uXCJcbiAgICAgID48L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGxhYmVsPVwiUmVjaGVyY2hlclwiXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICBjbGFzcz1cImZvb3Rlci1idXR0b25cIlxuICAgICAgPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtcGFuZWw+XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VhcmNoLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbXVsdGktc2VhcmNoLWNyaXRlcmlhL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL211bHRpLXNlYXJjaC1jcml0ZXJpYS9tdWx0aS1zZWFyY2gtY3JpdGVyaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyw0QkFBNEI7SUFMekM7UUFNRSwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUV2QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUF5QixRQUFRLENBQUMsQ0FBQyxpQkFBaUI7UUFDdkQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFdEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQW1CLEVBQUUsQ0FBQztLQW1JL0I7SUFqSUMsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLFdBQVc7Z0JB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QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG1CQUFtQixDQUFDLEtBQXFCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDaEUsQ0FBQzsrR0E5SVUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsc1BDVnpDLDYyR0F3R0E7OzRGRDlGYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsdUJBQXVCOzhCQU94QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoQ3JpdGVyaWFUeXBlRW51bSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IFNlYXJjaENyaXRlcmlhIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC1jcml0ZXJpYS5tb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb24gfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLW9wdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ211bHRpLXNlYXJjaC1jcml0ZXJpYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWFyY2gtY3JpdGVyaWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWFyY2gtY3JpdGVyaWEuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlYXJjaENyaXRlcmlhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgU2VhcmNoQ3JpdGVyaWFUeXBlRW51bSA9IFNlYXJjaENyaXRlcmlhVHlwZUVudW07XG5cbiAgQElucHV0KCkgdGl0bGU6IFN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjcml0ZXJpYTogU2VhcmNoQ3JpdGVyaWFbXSA9IFtdO1xuICBASW5wdXQoKSBpbnB1dHNQZXJSb3c6IG51bWJlciA9IDM7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG1vZGU6ICdzdGF0aWMnIHwgJ2R5bmFtaWMnID0gJ3N0YXRpYyc7IC8vIEFkZCBtb2RlIGlucHV0XG4gIEBPdXRwdXQoKSBmaWx0ZXJlZERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgc2VhcmNoQ3JpdGVyaWEgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG5cbiAgc2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkOiBGaWx0ZXJPcHRpb25bXSA9IFtdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3JpdGVyaWEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnR5cGUgPT09IFNlYXJjaENyaXRlcmlhVHlwZUVudW0uTVVMVElTRUxFQ1QgJiZcbiAgICAgICAgaXRlbS5maWx0ZXJPcHRpb25zXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi5pdGVtLmZpbHRlck9wdGlvbnNdO1xuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEN1cnJlbmN5U3ltYm9sKGlucHV0OiBTZWFyY2hDcml0ZXJpYSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlucHV0LmN1cnJlbmN5IHx8ICdFVVInO1xuICB9XG5cbiAgZ2V0TWluRnJhY3Rpb25EaWdpdHMoaW5wdXQ6IFNlYXJjaENyaXRlcmlhKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5wdXQubWluRnJhY3Rpb25EaWdpdHMgPz8gMDtcbiAgfVxuXG4gIGdldE1heEZyYWN0aW9uRGlnaXRzKGlucHV0OiBTZWFyY2hDcml0ZXJpYSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGlucHV0Lm1heEZyYWN0aW9uRGlnaXRzID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFN0ZXBWYWx1ZShpbnB1dDogU2VhcmNoQ3JpdGVyaWEpOiBudW1iZXIge1xuICAgIHJldHVybiBpbnB1dC5tYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgPyBwYXJzZUZsb2F0KGAwLiR7JzEnLnBhZEVuZChpbnB1dC5tYXhGcmFjdGlvbkRpZ2l0cywgJzAnKX1gKVxuICAgICAgOiAwLjAwMDAwMDAwMDE7XG4gIH1cblxuICBzZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgICBjb25zdCBjcml0ZXJpYVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgdGhpcy5jcml0ZXJpYS5mb3JFYWNoKChjcml0ZXJpb24pID0+IHtcbiAgICAgICAgaWYgKGNyaXRlcmlvbi52YWx1ZSAhPT0gbnVsbCAmJiBjcml0ZXJpb24udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNyaXRlcmlhVmFsdWVzW2NyaXRlcmlvbi5jb2RlXSA9IGNyaXRlcmlvbi52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNlYXJjaENyaXRlcmlhLmVtaXQoY3JpdGVyaWFWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZGF0YS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JpdGVyaWEuZXZlcnkoKGNyaXRlcmlvbikgPT4ge1xuICAgICAgICAgIGlmIChjcml0ZXJpb24udHlwZSA9PT0gU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5EQVRFUkFOR0UpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydERhdGUsIGVuZERhdGVdID0gY3JpdGVyaW9uLnZhbHVlIHx8IFtcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgaXRlbURhdGUgPSB0aGlzLnBhcnNlRGF0ZShcbiAgICAgICAgICAgICAgaXRlbVtjcml0ZXJpb24uY29kZV0gfHwgaXRlbVsnZGF0ZSddXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFzdGFydERhdGUgJiYgIWVuZERhdGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbURhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGFyc2VkU3RhcnREYXRlID0gc3RhcnREYXRlXG4gICAgICAgICAgICAgID8gdGhpcy5wYXJzZURhdGUoc3RhcnREYXRlKVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRFbmREYXRlID0gZW5kRGF0ZSA/IHRoaXMucGFyc2VEYXRlKGVuZERhdGUpIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICghcGFyc2VkU3RhcnREYXRlIHx8IGl0ZW1EYXRlID49IHBhcnNlZFN0YXJ0RGF0ZSkgJiZcbiAgICAgICAgICAgICAgKCFwYXJzZWRFbmREYXRlIHx8IGl0ZW1EYXRlIDw9IHBhcnNlZEVuZERhdGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjcml0ZXJpb24udHlwZSA9PT0gU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5BTU9VTlQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLk5VTUJFUlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgIWNyaXRlcmlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgICBOdW1iZXIoaXRlbVtjcml0ZXJpb24uY29kZV0pID09PSBOdW1iZXIoY3JpdGVyaW9uLnZhbHVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAhY3JpdGVyaW9uLnZhbHVlIHx8XG4gICAgICAgICAgICAgIGNyaXRlcmlvbi52YWx1ZS5zb21lKFxuICAgICAgICAgICAgICAgIChvcHRpb246IEZpbHRlck9wdGlvbikgPT4gb3B0aW9uLmxhYmVsID09PSBpdGVtW2NyaXRlcmlvbi5jb2RlXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3JpdGVyaW9uLnR5cGUgPT09IFNlYXJjaENyaXRlcmlhVHlwZUVudW0uU1RSSU5HKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAhY3JpdGVyaW9uLnZhbHVlIHx8XG4gICAgICAgICAgICAgIGl0ZW1bY3JpdGVyaW9uLmNvZGVdXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhjcml0ZXJpb24udmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YS5lbWl0KGZpbHRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNyaXRlcmlhLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICBpbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IGFueSwgY3JpdGVyaW9uOiBTZWFyY2hDcml0ZXJpYSkge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gZXZlbnQuY2hlY2tlZDtcbiAgICBjcml0ZXJpb24udmFsdWUgPSBldmVudC5jaGVja2VkID8gWy4uLihjcml0ZXJpb24uZmlsdGVyT3B0aW9ucyA/PyBbXSldIDogW107XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0ZVN0cmluZykgPT09ICdbb2JqZWN0IERhdGVdJykge1xuICAgICAgcmV0dXJuIGRhdGVTdHJpbmcgYXMgRGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0cyA9IChkYXRlU3RyaW5nIGFzIHN0cmluZykuc3BsaXQoJy8nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0c1swXSwgMTApO1xuICAgICAgY29uc3QgbW9udGggPSBwYXJzZUludChwYXJ0c1sxXSwgMTApIC0gMTtcbiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChwYXJ0c1syXSwgMTApO1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgICAgcmV0dXJuIGlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXREZWNpbWFsU2VwYXJhdG9yKGlucHV0OiBTZWFyY2hDcml0ZXJpYSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlucHV0LmRlY2ltYWxTZXBhcmF0b3IgPT09ICdjb21tYScgPyAnZnItRlInIDogJ2VuLVVTJztcbiAgfVxufVxuIiwiPHAtcGFuZWxcbiAgaGVhZGVyPVwie3sgdGl0bGUgfX1cIlxuICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcbiAgW2NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgY2xhc3M9XCJtdWx0aS1zZWFyY2gtY3JpdGVyaWFcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcml0ZXJpYS1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyc6ICdyZXBlYXQoJyArIGlucHV0c1BlclJvdyArICcsIDFmciknIH1cIlxuICA+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgY3JpdGVyaWFcIiBjbGFzcz1cImNyaXRlcmlhLWl0ZW1cIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImJzYy1sYWJlbFwiPnt7IGlucHV0LnRpdGxlIH19PC9sYWJlbD5cblxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaW5wdXQudHlwZVwiPlxuICAgICAgICA8IS0tIERhdGUgUmFuZ2UgLS0+XG4gICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uREFURVJBTkdFXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9tbS95eSdcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlucHV0LnZhbHVlID0gJGV2ZW50XCJcbiAgICAgICAgPjwvcC1jYWxlbmRhcj5cblxuICAgICAgICA8IS0tIERhdGUgLS0+XG4gICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uREFURVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlucHV0LnZhbHVlID0gJGV2ZW50XCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCInZGQvbW0veXknXCJcbiAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoLWlucHV0XCJcbiAgICAgICAgPjwvcC1jYWxlbmRhcj5cblxuICAgICAgICA8IS0tIFN0cmluZyBJbnB1dCAtLT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uU1RSSU5HXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPCEtLSBBTU9VTlQgKEVuc3VyZXMgRGVjaW1hbCBIYW5kbGluZykgLS0+XG4gICAgICAgIDxwLWlucHV0TnVtYmVyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uQU1PVU5UXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdldE1pbkZyYWN0aW9uRGlnaXRzKGlucHV0KVwiXG4gICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cImdldE1heEZyYWN0aW9uRGlnaXRzKGlucHV0KVwiXG4gICAgICAgICAgW3N0ZXBdPVwiZ2V0U3RlcFZhbHVlKGlucHV0KVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldEN1cnJlbmN5U3ltYm9sKGlucHV0KVwiXG4gICAgICAgICAgW2xvY2FsZV09XCJnZXREZWNpbWFsU2VwYXJhdG9yKGlucHV0KVwiXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoLWlucHV0XCJcbiAgICAgICAgPjwvcC1pbnB1dE51bWJlcj5cblxuICAgICAgICA8IS0tIE5VTUJFUiAoRW5zdXJlcyBEZWNpbWFsIEhhbmRsaW5nKSAtLT5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5OVU1CRVJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2V0TWluRnJhY3Rpb25EaWdpdHMoaW5wdXQpXCJcbiAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2V0TWF4RnJhY3Rpb25EaWdpdHMoaW5wdXQpXCJcbiAgICAgICAgICBbc3RlcF09XCJnZXRTdGVwVmFsdWUoaW5wdXQpXCJcbiAgICAgICAgICBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIlxuICAgICAgICAgIFtsb2NhbGVdPVwiZ2V0RGVjaW1hbFNlcGFyYXRvcihpbnB1dClcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtaW5wdXROdW1iZXI+XG5cbiAgICAgICAgPCEtLSBNdWx0aS1TZWxlY3QgLS0+XG4gICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uTVVMVElTRUxFQ1RcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImlucHV0LmZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgIFtkaXNwbGF5XT1cIidjaGlwJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAob25TZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50LCBpbnB1dClcIlxuICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLW11bHRpc2VsZWN0IGZ1bGwtd2lkdGgtaW5wdXRcIlxuICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJ1dHRvbnNcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBsYWJlbD1cIkVmZmFjZXJcIlxuICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgICAgIGNsYXNzPVwiZm9vdGVyLWJ1dHRvblwiXG4gICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBsYWJlbD1cIlJlY2hlcmNoZXJcIlxuICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaCgpXCJcbiAgICAgICAgY2xhc3M9XCJmb290ZXItYnV0dG9uXCJcbiAgICAgID48L3AtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLXBhbmVsPlxuIl19