sf-crud 12.3.3 → 13.0.1

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/fesm2022/sf-crud.mjs +3254 -0
  2. package/fesm2022/sf-crud.mjs.map +1 -0
  3. package/{sf-crud.d.ts → index.d.ts} +5 -5
  4. package/lib/components/control/control.component.d.ts +67 -67
  5. package/lib/components/file-upload/file-upload.component.d.ts +34 -34
  6. package/lib/components/form/form.component.d.ts +63 -63
  7. package/lib/components/registro/registro.component.d.ts +109 -109
  8. package/lib/components/step/step.component.d.ts +27 -27
  9. package/lib/components/tablero/tablero.component.d.ts +53 -52
  10. package/lib/directives/format-address.pipe.d.ts +7 -7
  11. package/lib/sf-crud.component.d.ts +8 -8
  12. package/lib/sf-crud.module.d.ts +94 -90
  13. package/lib/sf-crud.routing.module.d.ts +7 -7
  14. package/lib/sf-crud.service.d.ts +135 -135
  15. package/lib/shared/models/Conditions.model.d.ts +32 -32
  16. package/lib/shared/models/Empresa.model.d.ts +11 -11
  17. package/lib/shared/models/Reason.model.d.ts +5 -5
  18. package/lib/shared/models/crud-config.model.d.ts +109 -110
  19. package/lib/shared/models/shema.model.d.ts +37 -37
  20. package/lib/shared/services/general.service.d.ts +20 -20
  21. package/lib/shared/services/notification.service.d.ts +26 -27
  22. package/lib/shared/services/step.service.d.ts +27 -27
  23. package/package.json +20 -15
  24. package/public-api.d.ts +12 -12
  25. package/bundles/sf-crud.umd.js +0 -3795
  26. package/bundles/sf-crud.umd.js.map +0 -1
  27. package/esm2015/lib/components/control/control.component.js +0 -403
  28. package/esm2015/lib/components/file-upload/file-upload.component.js +0 -143
  29. package/esm2015/lib/components/form/form.component.js +0 -289
  30. package/esm2015/lib/components/registro/registro.component.js +0 -757
  31. package/esm2015/lib/components/step/step.component.js +0 -79
  32. package/esm2015/lib/components/tablero/tablero.component.js +0 -220
  33. package/esm2015/lib/directives/format-address.pipe.js +0 -22
  34. package/esm2015/lib/sf-crud.component.js +0 -26
  35. package/esm2015/lib/sf-crud.module.js +0 -359
  36. package/esm2015/lib/sf-crud.routing.module.js +0 -23
  37. package/esm2015/lib/sf-crud.service.js +0 -531
  38. package/esm2015/lib/shared/models/Conditions.model.js +0 -81
  39. package/esm2015/lib/shared/models/Empresa.model.js +0 -2
  40. package/esm2015/lib/shared/models/Reason.model.js +0 -7
  41. package/esm2015/lib/shared/models/crud-config.model.js +0 -76
  42. package/esm2015/lib/shared/models/shema.model.js +0 -11
  43. package/esm2015/lib/shared/services/general.service.js +0 -74
  44. package/esm2015/lib/shared/services/notification.service.js +0 -83
  45. package/esm2015/lib/shared/services/step.service.js +0 -63
  46. package/esm2015/public-api.js +0 -16
  47. package/esm2015/sf-crud.js +0 -5
  48. package/fesm2015/sf-crud.js +0 -3143
  49. package/fesm2015/sf-crud.js.map +0 -1
@@ -1,79 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/router";
4
- import * as i2 from "../../shared/services/step.service";
5
- import * as i3 from "primeng/steps";
6
- import * as i4 from "@angular/common";
7
- import * as i5 from "primeng/button";
8
- export class StepComponent {
9
- constructor(router, stepService, activatedRoute) {
10
- this.router = router;
11
- this.stepService = stepService;
12
- this.activatedRoute = activatedRoute;
13
- this.activeIndex = 0;
14
- this.loading = false;
15
- this.nextMovement = 0;
16
- }
17
- ngOnInit() {
18
- this.stepService.currentIndex$.subscribe((result) => {
19
- this.nextMovement = result;
20
- this.router.navigate([this.items[result].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: "preserve" });
21
- this.moveScroll(this.nextMovement);
22
- this.activeIndex = result;
23
- });
24
- }
25
- ngAfterViewInit() {
26
- this.stepService.requestApproved$.subscribe((result) => {
27
- if (result) {
28
- this.navigate();
29
- }
30
- this.loading = false;
31
- });
32
- this.moveScroll(this.nextMovement);
33
- }
34
- onactiveIndexChange($event) {
35
- this.requestNaviagtion($event - this.activeIndex);
36
- }
37
- /**
38
- * Button solicitates permissions to change tab.
39
- * @param add steps to advance. If negative will go back
40
- */
41
- requestNaviagtion(add) {
42
- this.loading = true;
43
- this.nextMovement = this.activeIndex + add;
44
- this.stepService.requestApproval = this.nextMovement;
45
- }
46
- navigate() {
47
- if (this.nextMovement < this.items.length) {
48
- this.activeIndex = this.nextMovement;
49
- this.router.navigate([this.items[this.nextMovement].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: "preserve" });
50
- }
51
- }
52
- moveScroll(nextIndex) {
53
- let miDiv = document.getElementById("step-container");
54
- const steps = document.querySelector(".p-steps ul[role='tablist']");
55
- if (steps !== null) {
56
- let i = 0;
57
- let value = 0;
58
- while (i < nextIndex) {
59
- const child = steps.children[i];
60
- value += child.clientWidth;
61
- i++;
62
- }
63
- miDiv.scrollLeft = value;
64
- }
65
- }
66
- }
67
- StepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StepComponent, deps: [{ token: i1.Router }, { token: i2.StepService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
68
- StepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StepComponent, selector: "app-step", inputs: { items: "items" }, ngImport: i0, template: "<div>\r\n <div id=\"step-container\">\r\n <p-steps #stepsComponent [model]=\"items\" [readonly]=\"false\" [activeIndex]=\"activeIndex\" (activeIndexChange)=\"onactiveIndexChange($event)\"></p-steps>\r\n </div>\r\n\r\n <div class=\"content\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <div class=\"buttons-step\">\r\n <div >\r\n <button pButton *ngIf=\"activeIndex != 0\" icon=\"pi pi-arrow-left\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(-1)\"></button>\r\n </div>\r\n <span >\r\n <button pButton *ngIf=\"!(activeIndex + 1 >= items.length)\" icon=\"pi pi-arrow-right\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(1)\"></button>\r\n </span>\r\n <button pButton *ngIf=\"activeIndex >= items.length - 1\" label=\"Finalizar\" [disabled]=\"loading\" (click)=\"requestNaviagtion(0)\"\r\n [style]=\"{'margin-left': '10px'}\"></button>\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep .p-steps-number{background-color:var(--secondary-color)!important}::ng-deep .p-button{border-radius:6px}::ng-deep .p-steps-item .p-menuitem-link{margin-inline:15vw}::ng-deep .p-steps .p-steps-item.p-highlight .p-steps-number{color:#fff;font-family:sans-serif}::ng-deep .p-steps .p-steps-item.p-highlight .p-steps-title{color:#4b5563;font-family:inherit}::ng-deep{& ul[role=tablist]{padding-bottom:10px}& .p-steps-number{color:#fff!important}}.buttons-step{margin-bottom:1.5rem}.buttons-step button{height:3.5rem}.buttons-step ::ng-deep .p-button{background-color:var(--button-color);border-color:var(--button-color)}.buttons-step .p-button-icon-only{width:3.5rem}#step-container{overflow-x:scroll;scrollbar-width:20px;padding-bottom:5px}.buttons-step{display:flex;justify-content:space-evenly}.content{margin-block:30px}@media screen and (max-width: 765px){::ng-deep{& .p-steps-title{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:inherit;text-align:center}}::ng-deep .p-steps-item a.p-menuitem-link{margin-inline:0!important;width:90vw}}\n"], components: [{ type: i3.Steps, selector: "p-steps", inputs: ["activeIndex", "model", "readonly", "style", "styleClass"], outputs: ["activeIndexChange"] }], directives: [{ type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StepComponent, decorators: [{
70
- type: Component,
71
- args: [{
72
- selector: 'app-step',
73
- templateUrl: './step.component.html',
74
- styleUrls: ['./step.component.css']
75
- }]
76
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.StepService }, { type: i1.ActivatedRoute }]; }, propDecorators: { items: [{
77
- type: Input
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZi1jcnVkL3NyYy9saWIvY29tcG9uZW50cy9zdGVwL3N0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC9zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVV4RSxNQUFNLE9BQU8sYUFBYTtJQVF4QixZQUNVLE1BQWMsRUFDZCxXQUF3QixFQUN4QixjQUE4QjtRQUY5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUHhDLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFNZCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFBO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDNUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDckQsSUFBSSxNQUFNLEVBQUM7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQ2hCO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDdkQsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3hJO0lBQ0gsQ0FBQztJQUdELFVBQVUsQ0FBQyxTQUFpQjtRQUMxQixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFFLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRXBFLElBQUksS0FBSyxLQUFLLElBQUksRUFBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDVCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUE7WUFDYixPQUFPLENBQUMsR0FBRyxTQUFTLEVBQUU7Z0JBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQy9CLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFBO2dCQUMxQixDQUFDLEVBQUUsQ0FBQTthQUNKO1lBQ0QsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7U0FDekI7SUFDSCxDQUFDOzsyR0FyRVUsYUFBYTsrRkFBYixhQUFhLDRFQ1YxQiwyL0JBcUJBOzRGRFhhLGFBQWE7a0JBTHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQztvSkFJVSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGVwLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3RlcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0ZXAuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zITogTWVudUl0ZW1bXTtcclxuICBhY3RpdmVJbmRleCA9IDA7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIG5leHRNb3ZlbWVudCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgc3RlcFNlcnZpY2U6IFN0ZXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RlcFNlcnZpY2UuY3VycmVudEluZGV4JC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm5leHRNb3ZlbWVudCA9IHJlc3VsdFxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5pdGVtc1tyZXN1bHRdLnJvdXRlckxpbmtdLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwicHJlc2VydmVcIiB9KTtcclxuICAgICAgdGhpcy5tb3ZlU2Nyb2xsKHRoaXMubmV4dE1vdmVtZW50KVxyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gcmVzdWx0XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGVwU2VydmljZS5yZXF1ZXN0QXBwcm92ZWQkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpe1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSlcclxuICAgIHRoaXMubW92ZVNjcm9sbCh0aGlzLm5leHRNb3ZlbWVudClcclxuICB9XHJcblxyXG4gIG9uYWN0aXZlSW5kZXhDaGFuZ2UoJGV2ZW50OiBudW1iZXIpe1xyXG4gICAgdGhpcy5yZXF1ZXN0TmF2aWFndGlvbigkZXZlbnQtdGhpcy5hY3RpdmVJbmRleCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdXR0b24gc29saWNpdGF0ZXMgcGVybWlzc2lvbnMgdG8gY2hhbmdlIHRhYi5cclxuICAgKiBAcGFyYW0gYWRkIHN0ZXBzIHRvIGFkdmFuY2UuIElmIG5lZ2F0aXZlIHdpbGwgZ28gYmFja1xyXG4gICAqL1xyXG4gIHJlcXVlc3ROYXZpYWd0aW9uKGFkZDogbnVtYmVyKXtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5leHRNb3ZlbWVudCA9IHRoaXMuYWN0aXZlSW5kZXggKyBhZGQ7XHJcbiAgICB0aGlzLnN0ZXBTZXJ2aWNlLnJlcXVlc3RBcHByb3ZhbCA9IHRoaXMubmV4dE1vdmVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZSgpe1xyXG4gICAgaWYgKHRoaXMubmV4dE1vdmVtZW50IDwgdGhpcy5pdGVtcy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdGhpcy5uZXh0TW92ZW1lbnQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLml0ZW1zW3RoaXMubmV4dE1vdmVtZW50XS5yb3V0ZXJMaW5rXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcInByZXNlcnZlXCIgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgbW92ZVNjcm9sbChuZXh0SW5kZXg6IG51bWJlcil7XHJcbiAgICBsZXQgbWlEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0ZXAtY29udGFpbmVyXCIpIVxyXG4gICAgY29uc3Qgc3RlcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnAtc3RlcHMgdWxbcm9sZT0ndGFibGlzdCddXCIpO1xyXG5cclxuICAgIGlmIChzdGVwcyAhPT0gbnVsbCl7XHJcbiAgICAgIGxldCBpID0gMFxyXG4gICAgICBsZXQgdmFsdWUgPSAwXHJcbiAgICAgIHdoaWxlIChpIDwgbmV4dEluZGV4KSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBzdGVwcy5jaGlsZHJlbltpXVxyXG4gICAgICAgIHZhbHVlICs9IGNoaWxkLmNsaWVudFdpZHRoXHJcbiAgICAgICAgaSsrXHJcbiAgICAgIH1cclxuICAgICAgbWlEaXYuc2Nyb2xsTGVmdCA9IHZhbHVlXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IGlkPVwic3RlcC1jb250YWluZXJcIj5cclxuICAgICAgICA8cC1zdGVwcyAjc3RlcHNDb21wb25lbnQgW21vZGVsXT1cIml0ZW1zXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgKGFjdGl2ZUluZGV4Q2hhbmdlKT1cIm9uYWN0aXZlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiPjwvcC1zdGVwcz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1zdGVwXCI+XHJcbiAgICAgICAgPGRpdiA+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiAqbmdJZj1cImFjdGl2ZUluZGV4ICE9IDBcIiBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0TmF2aWFndGlvbigtMSlcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiA+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiAqbmdJZj1cIiEoYWN0aXZlSW5kZXggKyAxID49IGl0ZW1zLmxlbmd0aClcIiAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3ROYXZpYWd0aW9uKDEpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiAqbmdJZj1cImFjdGl2ZUluZGV4ID49IGl0ZW1zLmxlbmd0aCAtIDFcIiBsYWJlbD1cIkZpbmFsaXphclwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKGNsaWNrKT1cInJlcXVlc3ROYXZpYWd0aW9uKDApXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cInsnbWFyZ2luLWxlZnQnOiAnMTBweCd9XCI+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,220 +0,0 @@
1
- import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
- import { CrudConfig } from '../../shared/models/crud-config.model';
3
- import * as _ from "lodash";
4
- import * as jsonpath from 'jsonpath';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../shared/services/general.service";
7
- import * as i2 from "@angular/router";
8
- import * as i3 from "../../sf-crud.service";
9
- import * as i4 from "../../shared/services/step.service";
10
- import * as i5 from "primeng/toolbar";
11
- import * as i6 from "primeng/table";
12
- import * as i7 from "primeng/splitbutton";
13
- import * as i8 from "@angular/common";
14
- import * as i9 from "primeng/api";
15
- import * as i10 from "primeng/button";
16
- import * as i11 from "primeng/ripple";
17
- import * as i12 from "primeng/inputtext";
18
- export class TableroComponent {
19
- constructor(generalService, router, sfCrudService, stepService) {
20
- this.generalService = generalService;
21
- this.router = router;
22
- this.sfCrudService = sfCrudService;
23
- this.stepService = stepService;
24
- this.opciones = [];
25
- this.idEntidad = '';
26
- this.idKatios = '';
27
- this.onSelectAction = new EventEmitter();
28
- this.items = [];
29
- this.crudConfig = new CrudConfig();
30
- this.data = [];
31
- this.initialData = [];
32
- this.btn = { create: undefined, read: undefined, update: undefined, delete: undefined };
33
- this.loading = { inProgress: false, target: undefined };
34
- }
35
- ngOnInit() {
36
- this.generalService.environment = this.environment;
37
- this.loadConfigCrud();
38
- }
39
- loadConfigCrud() {
40
- this.loading.inProgress = true;
41
- this.sfCrudService.formLoading = this.loading;
42
- this.generalService.getCrudByEntidad(this.idKatios, this.idEntidad)
43
- .then((res) => {
44
- this.crudConfig = res;
45
- this.getInfoTablero();
46
- })
47
- .catch(err => {
48
- console.log(err);
49
- this.loading.inProgress = false;
50
- this.sfCrudService.formLoading = this.loading;
51
- });
52
- }
53
- customizeCompany(uiEsquemas) {
54
- var _a, _b, _c;
55
- this.sfCrudService.configEmpresa = (_a = uiEsquemas.find(ui => ui.general)) === null || _a === void 0 ? void 0 : _a.general;
56
- if (this.sfCrudService.configEmpresa) {
57
- if ((_b = this.sfCrudService.configEmpresa.colors) === null || _b === void 0 ? void 0 : _b.secondary)
58
- this.color2 = this.sfCrudService.configEmpresa.colors.secondary;
59
- if ((_c = this.sfCrudService.configEmpresa.colors) === null || _c === void 0 ? void 0 : _c.button)
60
- this.colorButtons = this.sfCrudService.configEmpresa.colors.secondary;
61
- }
62
- if (!this.color2)
63
- this.color2 = this.colorButtons = "blue";
64
- }
65
- // submit(index: number) {
66
- // let registro = this.sfCrudService.getRegistro(index)
67
- // let operation = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(0)))!
68
- // console.log(operation)
69
- // let url = this.sfCrudService.getURL(operation, index)
70
- // return this.generalService.genericRequest(operation.method, url, this.sfCrudService.getData(index))
71
- // .then((res) => {
72
- // if (res === null) res = {}
73
- // res = this.sfCrudService.applyObjectKeys(res, operation.keysEsquema || [], registro)
74
- // console.log(res)
75
- // this.sfCrudService.setAnswers(res, 0)
76
- // if (operation.changeTrx) operation.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))
77
- // // this.notificationService.generateMessage(this.notificationService.genDefaultMessage("success", undefined, "Información subida correctamente", operation.answerChecking), res, operation.answerChecking)
78
- // // return res;
79
- // })
80
- // .catch(err => {
81
- // // const operation = this.sfCrudService.getRegistro(this.indexCrud).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(index)))!
82
- // // this.notificationService.generateMessage(this.notificationService.genDefaultMessage("error", "Error no controlado", "Por favor comunicarse con el admin",operation.errorChecking), err.error, operation.errorChecking)
83
- // // throw new Error(err)
84
- // })
85
- // }
86
- getInfoTablero() {
87
- //this.submit(0)
88
- this.data = [];
89
- this.initialData = [];
90
- this.loading.inProgress = true;
91
- this.sfCrudService.formLoading = this.loading;
92
- let url = this.aplyKeys(this.crudConfig.tablero.keys, `${this.generalService.jsonConfig[this.crudConfig.tablero.server]}${this.crudConfig.tablero.endpoint}`, this.dataExt);
93
- this.generalService.genericRequest(this.crudConfig.tablero.method, url, this.dataExt)
94
- .then((res) => {
95
- let aux;
96
- if (!Array.isArray(res))
97
- aux = res.data;
98
- else
99
- aux = res;
100
- this.initialData = _.cloneDeep(aux);
101
- this.generateData(aux);
102
- this.loadOptions();
103
- })
104
- .finally(() => {
105
- this.loading.inProgress = false;
106
- this.sfCrudService.formLoading = this.loading;
107
- });
108
- }
109
- generateData(data) {
110
- data.forEach((item) => {
111
- let newItem = {};
112
- this.crudConfig.tablero.columns.forEach(col => {
113
- newItem[col.col] = this.getValue(col.col, item);
114
- });
115
- this.data.push(newItem);
116
- });
117
- console.log(this.data);
118
- }
119
- getValue(path, item) {
120
- if (path.includes("."))
121
- return jsonpath.query(item, path)[0];
122
- return item[path];
123
- }
124
- externalLinkAction() {
125
- this.opciones.filter((opc) => opc.valor.action).forEach(opc => this.execAction(opc.valor));
126
- }
127
- loadOptions() {
128
- this.items = [];
129
- this.btn.create = this.opciones.find(x => x.label == 'Crear');
130
- this.opciones.filter((opc) => opc.valor.action).forEach(opc => {
131
- this.items.push({ label: opc.label, icon: opc.icon, command: () => this.execAction(opc.valor) });
132
- });
133
- }
134
- redirect(accion, data) {
135
- var _a, _b;
136
- this.stepService.reset();
137
- this.sfCrudService.reset();
138
- switch (accion) {
139
- case 'create':
140
- this.router.navigateByUrl(((_b = (_a = this.btn.create) === null || _a === void 0 ? void 0 : _a.valor) === null || _b === void 0 ? void 0 : _b.redirect) || '');
141
- break;
142
- case 'read':
143
- this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero.keys, this.btn.read.valor.redirect, data));
144
- break;
145
- case 'update':
146
- this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero.keys, this.btn.update.valor.redirect, data));
147
- break;
148
- case 'delete':
149
- this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero.keys, this.btn.delete.valor.redirect, data));
150
- break;
151
- default:
152
- break;
153
- }
154
- }
155
- aplyKeys(keys, endpoint, data) {
156
- keys.forEach(key => {
157
- var _a, _b, _c, _d;
158
- switch (key.key) {
159
- case '@ndoc':
160
- endpoint = endpoint.replace(key.key, ((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.UsuarioSistema) === null || _b === void 0 ? void 0 : _b.NDOC) || '');
161
- break;
162
- case '@tdoc':
163
- endpoint = endpoint.replace(key.key, ((_d = (_c = this.user) === null || _c === void 0 ? void 0 : _c.UsuarioSistema) === null || _d === void 0 ? void 0 : _d.TDOC) || '');
164
- break;
165
- case '@idKatios':
166
- endpoint = endpoint.replace(key.key, this.idKatios);
167
- break;
168
- default:
169
- if (endpoint.includes(key.key) && data)
170
- endpoint = endpoint.replace(key.key, jsonpath.query(data, (key === null || key === void 0 ? void 0 : key.scope) || '')[0]);
171
- break;
172
- }
173
- });
174
- return endpoint;
175
- }
176
- execAction(params) {
177
- switch (params.action) {
178
- case 'redirect':
179
- this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero.keys, params.link, this.itemSelected)).then(() => {
180
- if (params.reload)
181
- window.location.reload();
182
- });
183
- break;
184
- default:
185
- this.onSelectAction.emit({ data: _.cloneDeep(this.itemSelected), params });
186
- break;
187
- }
188
- }
189
- }
190
- TableroComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableroComponent, deps: [{ token: i1.GeneralService }, { token: i2.Router }, { token: i3.SfCrudService }, { token: i4.StepService }], target: i0.ɵɵFactoryTarget.Component });
191
- TableroComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TableroComponent, selector: "sf-crudtablero", inputs: { opciones: "opciones", idEntidad: "idEntidad", idKatios: "idKatios", environment: "environment", user: "user", dataExt: "dataExt" }, outputs: { onSelectAction: "onSelectAction" }, host: { properties: { "style.--secondary-color": "this.color2", "style.--button-color": "this.colorButtons" } }, ngImport: i0, template: "<div class=\"card\">\r\n <p-toolbar styleClass=\"mb-4 gap-2\" *ngIf=\"btn.create\">\r\n <ng-template pTemplate=\"left\">\r\n <button pButton pRipple [label]=\"btn.create.label\" [icon]=\"btn.create.icon\"\r\n class=\"p-button-success mr-2\" (click)=\"redirect('create')\"></button>\r\n </ng-template>\r\n </p-toolbar>\r\n <p-table *ngIf=\"crudConfig?.tablero?.columns\" #dt [columns]=\"crudConfig.tablero.columns\" [value]=\"data\" [rowHover]=\"true\" [rows]=\"10\" [paginator]=\"true\"\r\n [totalRecords]=\"data.length\" [globalFilterFields]=\"crudConfig.tablero?.filters || []\" [tableStyle]=\"{'min-width': '75rem'}\"\r\n currentPageReportTemplate=\"Registro {first} al {last} de {totalRecords}\" [showCurrentPageReport]=\"true\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <h5 class=\"m-0\">{{crudConfig.tablero?.label || idEntidad}}</h5>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\r\n placeholder=\"Buscar...\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{col.label}}\r\n </th>\r\n <th>Acci\u00F3n</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-index=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <td *ngSwitchCase=\"'text'\">{{rowData[col.col]}}</td>\r\n <td *ngSwitchCase=\"'date:yyyy-mm-dd'\">{{rowData[col.col] | date: 'yyyy-MM-dd'}}</td>\r\n <td *ngSwitchCase=\"'currency:USD'\">{{rowData[col.col] | currency: 'USD'}}</td>\r\n </ng-container>\r\n <td>\r\n <p-splitButton *ngIf=\"items.length > 1\" icon=\"pi pi-align-justify\" [model]=\"items\" appendTo=\"body\"\r\n (onDropdownClick)=\"itemSelected = rowData\"></p-splitButton>\r\n <div *ngIf=\"items.length <= 1\">\r\n <button *ngFor=\"let item of items\" pButton pRipple [icon]=\"item.icon\" class=\"mr-2\"\r\n (click)=\"itemSelected = initialData[index]; item.command()\"></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>\r\n", styles: ["::ng-deep .p-datatable table{min-width:100%}button:not(.p-button-success){background:var(--secondary-color)!important;border:var(--secondary-color)!important;color:#fff}\n"], components: [{ type: i5.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: i6.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollDelay", "virtualRowHeight", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "stateKey", "stateStorage", "editMode", "groupRowsBy", "minBufferPx", "maxBufferPx", "responsiveLayout", "breakpoint", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i7.SplitButton, selector: "p-splitButton", inputs: ["model", "icon", "iconPos", "label", "style", "styleClass", "menuStyle", "menuStyleClass", "disabled", "tabindex", "appendTo", "dir", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClick", "onDropdownClick"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i10.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i11.Ripple, selector: "[pRipple]" }, { type: i12.InputText, selector: "[pInputText]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "date": i8.DatePipe, "currency": i8.CurrencyPipe } });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableroComponent, decorators: [{
193
- type: Component,
194
- args: [{
195
- selector: 'sf-crudtablero',
196
- templateUrl: './tablero.component.html',
197
- styleUrls: ['./tablero.component.css']
198
- }]
199
- }], ctorParameters: function () { return [{ type: i1.GeneralService }, { type: i2.Router }, { type: i3.SfCrudService }, { type: i4.StepService }]; }, propDecorators: { opciones: [{
200
- type: Input
201
- }], idEntidad: [{
202
- type: Input
203
- }], idKatios: [{
204
- type: Input
205
- }], environment: [{
206
- type: Input
207
- }], user: [{
208
- type: Input
209
- }], dataExt: [{
210
- type: Input
211
- }], onSelectAction: [{
212
- type: Output
213
- }], color2: [{
214
- type: HostBinding,
215
- args: ["style.--secondary-color"]
216
- }], colorButtons: [{
217
- type: HostBinding,
218
- args: ["style.--button-color"]
219
- }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVyby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZi1jcnVkL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXJvL3RhYmxlcm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVyby90YWJsZXJvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJbEYsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVXJDLE1BQU0sT0FBTyxnQkFBZ0I7SUFvQjNCLFlBQ1UsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFdBQXdCO1FBSHhCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF0QnpCLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBSXJCLG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFJL0QsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUN2QixlQUFVLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFFBQUcs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aUJBQ3ZDO2dMQUdVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNpQyxNQUFNO3NCQUE3QyxXQUFXO3VCQUFDLHlCQUF5QjtnQkFDRCxZQUFZO3NCQUFoRCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpZ1RhYmxlcm8sIENydWRDb25maWcgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2NydWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZ2VuZXJhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgKiBhcyBqc29ucGF0aCBmcm9tICdqc29ucGF0aCc7XHJcbmltcG9ydCB7IExvYWRpbmcsIFNmQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZi1jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGVwLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2YtY3J1ZHRhYmxlcm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZXJvLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZXJvLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVyb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIG9wY2lvbmVzOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlkRW50aWRhZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaWRLYXRpb3M6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGVudmlyb25tZW50OiBhbnk7XHJcbiAgQElucHV0KCkgdXNlcjogYW55O1xyXG4gIEBJbnB1dCgpIGRhdGFFeHQ6IGFueTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKFwic3R5bGUuLS1zZWNvbmRhcnktY29sb3JcIikgY29sb3IyITogc3RyaW5nO1xyXG4gIEBIb3N0QmluZGluZyhcInN0eWxlLi0tYnV0dG9uLWNvbG9yXCIpIGNvbG9yQnV0dG9ucyE6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcbiAgcHVibGljIGNydWRDb25maWc6IENydWRDb25maWcgPSBuZXcgQ3J1ZENvbmZpZygpO1xyXG4gIHB1YmxpYyBkYXRhOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBpbml0aWFsRGF0YTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYnRuOiB7IGNyZWF0ZTogYW55LCByZWFkOiBhbnksIHVwZGF0ZTogYW55LCBkZWxldGU6IGFueSB9ID0geyBjcmVhdGU6IHVuZGVmaW5lZCwgcmVhZDogdW5kZWZpbmVkLCB1cGRhdGU6IHVuZGVmaW5lZCwgZGVsZXRlOiB1bmRlZmluZWQgfVxyXG4gIHB1YmxpYyBpdGVtU2VsZWN0ZWQ6IGFueTtcclxuICBwcml2YXRlIGxvYWRpbmchOkxvYWRpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBzZkNydWRTZXJ2aWNlOiBTZkNydWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdGVwU2VydmljZTogU3RlcFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHtpblByb2dyZXNzOiBmYWxzZSwgdGFyZ2V0OiB1bmRlZmluZWR9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLmVudmlyb25tZW50ID0gdGhpcy5lbnZpcm9ubWVudFxyXG4gICAgdGhpcy5sb2FkQ29uZmlnQ3J1ZCgpXHJcbiAgfVxyXG5cclxuICBsb2FkQ29uZmlnQ3J1ZCgpIHtcclxuICAgIHRoaXMubG9hZGluZy5pblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMuc2ZDcnVkU2VydmljZS5mb3JtTG9hZGluZyA9IHRoaXMubG9hZGluZztcclxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuZ2V0Q3J1ZEJ5RW50aWRhZCh0aGlzLmlkS2F0aW9zLCB0aGlzLmlkRW50aWRhZClcclxuICAgICAgLnRoZW4oKHJlczogQ3J1ZENvbmZpZyk9PiB7XHJcbiAgICAgICAgdGhpcy5jcnVkQ29uZmlnID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZ2V0SW5mb1RhYmxlcm8oKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcuaW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2ZDcnVkU2VydmljZS5mb3JtTG9hZGluZyA9IHRoaXMubG9hZGluZztcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gICAgY3VzdG9taXplQ29tcGFueSh1aUVzcXVlbWFzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZkNydWRTZXJ2aWNlLmNvbmZpZ0VtcHJlc2EgPSB1aUVzcXVlbWFzLmZpbmQodWkgPT4gdWkuZ2VuZXJhbCk/LmdlbmVyYWxcclxuICAgIGlmKHRoaXMuc2ZDcnVkU2VydmljZS5jb25maWdFbXByZXNhKXtcclxuICAgICAgaWYgKHRoaXMuc2ZDcnVkU2VydmljZS5jb25maWdFbXByZXNhLmNvbG9ycz8uc2Vjb25kYXJ5KSB0aGlzLmNvbG9yMiA9IHRoaXMuc2ZDcnVkU2VydmljZS5jb25maWdFbXByZXNhLmNvbG9ycy5zZWNvbmRhcnlcclxuICAgICAgaWYgKHRoaXMuc2ZDcnVkU2VydmljZS5jb25maWdFbXByZXNhLmNvbG9ycz8uYnV0dG9uKSB0aGlzLmNvbG9yQnV0dG9ucyA9IHRoaXMuc2ZDcnVkU2VydmljZS5jb25maWdFbXByZXNhLmNvbG9ycy5zZWNvbmRhcnlcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY29sb3IyKSB0aGlzLmNvbG9yMiA9IHRoaXMuY29sb3JCdXR0b25zID0gXCJibHVlXCI7XHJcbiAgfVxyXG4vLyAgIHN1Ym1pdChpbmRleDogbnVtYmVyKSB7XHJcbi8vICAgICBsZXQgcmVnaXN0cm8gPSB0aGlzLnNmQ3J1ZFNlcnZpY2UuZ2V0UmVnaXN0cm8oaW5kZXgpXHJcbi8vICAgICBsZXQgb3BlcmF0aW9uID0gcmVnaXN0cm8ub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUuc3RhcnRzV2l0aCh0aGlzLnNmQ3J1ZFNlcnZpY2UuZ2V0VHJ4KDApKSkhXHJcbi8vICAgICBjb25zb2xlLmxvZyhvcGVyYXRpb24pXHJcbi8vICAgICBsZXQgdXJsID0gdGhpcy5zZkNydWRTZXJ2aWNlLmdldFVSTChvcGVyYXRpb24sIGluZGV4KVxyXG4vLyAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFNlcnZpY2UuZ2VuZXJpY1JlcXVlc3Qob3BlcmF0aW9uLm1ldGhvZCwgdXJsLCB0aGlzLnNmQ3J1ZFNlcnZpY2UuZ2V0RGF0YShpbmRleCkpXHJcbi8vICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuLy8gICAgICAgICBpZiAocmVzID09PSBudWxsKSByZXMgPSB7fVxyXG4vLyAgICAgICAgIHJlcyA9IHRoaXMuc2ZDcnVkU2VydmljZS5hcHBseU9iamVjdEtleXMocmVzLCBvcGVyYXRpb24ua2V5c0VzcXVlbWEgfHwgW10sIHJlZ2lzdHJvKVxyXG4vLyAgICAgICAgIGNvbnNvbGUubG9nKHJlcylcclxuLy8gICAgICAgICB0aGlzLnNmQ3J1ZFNlcnZpY2Uuc2V0QW5zd2VycyhyZXMsIDApXHJcblxyXG4vLyAgICAgICAgIGlmIChvcGVyYXRpb24uY2hhbmdlVHJ4KSBvcGVyYXRpb24uY2hhbmdlVHJ4LmZvckVhY2goeCA9PiAgdGhpcy5zZkNydWRTZXJ2aWNlLnNldFRyeCh4LnRyeCwgeC5pbmRleCkpXHJcbi8vICAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdlbmVyYXRlTWVzc2FnZSh0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2VuRGVmYXVsdE1lc3NhZ2UoXCJzdWNjZXNzXCIsIHVuZGVmaW5lZCwgXCJJbmZvcm1hY2nDs24gc3ViaWRhIGNvcnJlY3RhbWVudGVcIiwgb3BlcmF0aW9uLmFuc3dlckNoZWNraW5nKSwgcmVzLCBvcGVyYXRpb24uYW5zd2VyQ2hlY2tpbmcpXHJcbi8vICAgICAgICAgLy8gcmV0dXJuIHJlcztcclxuLy8gICAgICAgfSlcclxuLy8gICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbi8vICAgICAgICAgLy8gY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5zZkNydWRTZXJ2aWNlLmdldFJlZ2lzdHJvKHRoaXMuaW5kZXhDcnVkKS5vcGVyYXRpb25zLmZpbmQob3AgPT4gb3AudHlwZS5zdGFydHNXaXRoKHRoaXMuc2ZDcnVkU2VydmljZS5nZXRUcngoaW5kZXgpKSkhXHJcbi8vICAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdlbmVyYXRlTWVzc2FnZSh0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2VuRGVmYXVsdE1lc3NhZ2UoXCJlcnJvclwiLCBcIkVycm9yIG5vIGNvbnRyb2xhZG9cIiwgXCJQb3IgZmF2b3IgY29tdW5pY2Fyc2UgY29uIGVsIGFkbWluXCIsb3BlcmF0aW9uLmVycm9yQ2hlY2tpbmcpLCBlcnIuZXJyb3IsIG9wZXJhdGlvbi5lcnJvckNoZWNraW5nKVxyXG4vLyAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihlcnIpXHJcbi8vICAgICAgIH0pXHJcbi8vIH1cclxuXHJcbiAgZ2V0SW5mb1RhYmxlcm8oKSB7XHJcbiAgICAvL3RoaXMuc3VibWl0KDApXHJcbiAgICB0aGlzLmRhdGEgPSBbXVxyXG4gICAgdGhpcy5pbml0aWFsRGF0YSA9IFtdXHJcbiAgICB0aGlzLmxvYWRpbmcuaW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLnNmQ3J1ZFNlcnZpY2UuZm9ybUxvYWRpbmcgPSB0aGlzLmxvYWRpbmc7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5hcGx5S2V5cyh0aGlzLmNydWRDb25maWcudGFibGVybyEua2V5cywgYCR7dGhpcy5nZW5lcmFsU2VydmljZS5qc29uQ29uZmlnW3RoaXMuY3J1ZENvbmZpZy50YWJsZXJvIS5zZXJ2ZXJdfSR7dGhpcy5jcnVkQ29uZmlnLnRhYmxlcm8hLmVuZHBvaW50fWAsIHRoaXMuZGF0YUV4dClcclxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuZ2VuZXJpY1JlcXVlc3QodGhpcy5jcnVkQ29uZmlnLnRhYmxlcm8hLm1ldGhvZCwgdXJsLCB0aGlzLmRhdGFFeHQpXHJcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBhdXg7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlcykpIGF1eCA9IHJlcy5kYXRhOyBlbHNlIGF1eCA9IHJlcztcclxuICAgICAgICB0aGlzLmluaXRpYWxEYXRhID0gXy5jbG9uZURlZXAoYXV4KTtcclxuICAgICAgICB0aGlzLmdlbmVyYXRlRGF0YShhdXgpO1xyXG4gICAgICAgIHRoaXMubG9hZE9wdGlvbnMoKTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZy5pblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZkNydWRTZXJ2aWNlLmZvcm1Mb2FkaW5nID0gdGhpcy5sb2FkaW5nO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVEYXRhKGRhdGE6IGFueVtdKSB7XHJcbiAgICBkYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgbmV3SXRlbTogYW55ID0ge307XHJcbiAgICAgIHRoaXMuY3J1ZENvbmZpZy50YWJsZXJvIS5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBuZXdJdGVtW2NvbC5jb2xdID0gdGhpcy5nZXRWYWx1ZShjb2wuY29sLCBpdGVtKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmRhdGEucHVzaChuZXdJdGVtKVxyXG4gICAgfSlcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSlcclxuICB9XHJcbiAgZ2V0VmFsdWUocGF0aDogc3RyaW5nLCBpdGVtOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCIuXCIpKSByZXR1cm4ganNvbnBhdGgucXVlcnkoaXRlbSwgcGF0aClbMF1cclxuICAgIHJldHVybiBpdGVtW3BhdGhdXHJcbiAgfVxyXG5cclxuICBleHRlcm5hbExpbmtBY3Rpb24oKXtcclxuICAgIHRoaXMub3BjaW9uZXMuZmlsdGVyKChvcGM6IGFueSkgPT4gb3BjLnZhbG9yLmFjdGlvbikuZm9yRWFjaChvcGMgPT4gdGhpcy5leGVjQWN0aW9uKG9wYy52YWxvcikpXHJcbiAgfVxyXG5cclxuICBsb2FkT3B0aW9ucygpIHtcclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuYnRuLmNyZWF0ZSA9IHRoaXMub3BjaW9uZXMuZmluZCh4ID0+IHgubGFiZWwgPT0gJ0NyZWFyJyk7XHJcbiAgICB0aGlzLm9wY2lvbmVzLmZpbHRlcigob3BjOiBhbnkpID0+IG9wYy52YWxvci5hY3Rpb24pLmZvckVhY2gob3BjID0+IHtcclxuICAgICAgdGhpcy5pdGVtcy5wdXNoKHsgbGFiZWw6IG9wYy5sYWJlbCwgaWNvbjogb3BjLmljb24sIGNvbW1hbmQ6ICgpID0+IHRoaXMuZXhlY0FjdGlvbihvcGMudmFsb3IpIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3QoYWNjaW9uOiBzdHJpbmcsIGRhdGE/OiBhbnkpIHtcclxuICAgIHRoaXMuc3RlcFNlcnZpY2UucmVzZXQoKTtcclxuICAgIHRoaXMuc2ZDcnVkU2VydmljZS5yZXNldCgpO1xyXG4gICAgc3dpdGNoIChhY2Npb24pIHtcclxuICAgICAgY2FzZSAnY3JlYXRlJzpcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYnRuLmNyZWF0ZT8udmFsb3I/LnJlZGlyZWN0IHx8ICcnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmVhZCc6XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmFwbHlLZXlzKHRoaXMuY3J1ZENvbmZpZy50YWJsZXJvIS5rZXlzLCB0aGlzLmJ0bi5yZWFkLnZhbG9yLnJlZGlyZWN0LCBkYXRhKSk7XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAndXBkYXRlJzpcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYXBseUtleXModGhpcy5jcnVkQ29uZmlnLnRhYmxlcm8hLmtleXMsIHRoaXMuYnRuLnVwZGF0ZS52YWxvci5yZWRpcmVjdCwgZGF0YSkpO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmFwbHlLZXlzKHRoaXMuY3J1ZENvbmZpZy50YWJsZXJvIS5rZXlzLCB0aGlzLmJ0bi5kZWxldGUudmFsb3IucmVkaXJlY3QsIGRhdGEpKTtcclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcGx5S2V5cyhrZXlzOiB7IGtleTogc3RyaW5nLCBzY29wZT86IHN0cmluZyB9W10sIGVuZHBvaW50OiBzdHJpbmcsIGRhdGE/OiBhbnkpIHtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGtleS5rZXkpIHtcclxuICAgICAgICBjYXNlICdAbmRvYyc6XHJcbiAgICAgICAgICBlbmRwb2ludCA9IGVuZHBvaW50LnJlcGxhY2Uoa2V5LmtleSwgdGhpcy51c2VyPy5Vc3VhcmlvU2lzdGVtYT8uTkRPQyB8fCAnJylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0B0ZG9jJzpcclxuICAgICAgICAgIGVuZHBvaW50ID0gZW5kcG9pbnQucmVwbGFjZShrZXkua2V5LCB0aGlzLnVzZXI/LlVzdWFyaW9TaXN0ZW1hPy5URE9DIHx8ICcnKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQGlkS2F0aW9zJzpcclxuICAgICAgICAgIGVuZHBvaW50ID0gZW5kcG9pbnQucmVwbGFjZShrZXkua2V5LCB0aGlzLmlkS2F0aW9zKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGlmIChlbmRwb2ludC5pbmNsdWRlcyhrZXkua2V5KSAmJiBkYXRhKSBlbmRwb2ludCA9IGVuZHBvaW50LnJlcGxhY2Uoa2V5LmtleSwganNvbnBhdGgucXVlcnkoZGF0YSwga2V5Py5zY29wZSB8fCAnJylbMF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgZXhlY0FjdGlvbihwYXJhbXM6IGFueSkge1xyXG4gICAgc3dpdGNoIChwYXJhbXMuYWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ3JlZGlyZWN0JzpcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYXBseUtleXModGhpcy5jcnVkQ29uZmlnLnRhYmxlcm8hLmtleXMsIHBhcmFtcy5saW5rLCB0aGlzLml0ZW1TZWxlY3RlZCkpLnRoZW4oKCk9PntcclxuICAgICAgICAgIGlmIChwYXJhbXMucmVsb2FkKVxyXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfVxyXG4gICAgICApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdEFjdGlvbi5lbWl0KHsgZGF0YTogXy5jbG9uZURlZXAodGhpcy5pdGVtU2VsZWN0ZWQpLCBwYXJhbXMgfSlcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cIm1iLTQgZ2FwLTJcIiAqbmdJZj1cImJ0bi5jcmVhdGVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBbbGFiZWxdPVwiYnRuLmNyZWF0ZS5sYWJlbFwiIFtpY29uXT1cImJ0bi5jcmVhdGUuaWNvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3MgbXItMlwiIChjbGljayk9XCJyZWRpcmVjdCgnY3JlYXRlJylcIj48L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRvb2xiYXI+XHJcbiAgICA8cC10YWJsZSAqbmdJZj1cImNydWRDb25maWc/LnRhYmxlcm8/LmNvbHVtbnNcIiAjZHQgW2NvbHVtbnNdPVwiY3J1ZENvbmZpZy50YWJsZXJvLmNvbHVtbnNcIiBbdmFsdWVdPVwiZGF0YVwiIFtyb3dIb3Zlcl09XCJ0cnVlXCIgW3Jvd3NdPVwiMTBcIiBbcGFnaW5hdG9yXT1cInRydWVcIlxyXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwiZGF0YS5sZW5ndGhcIiBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImNydWRDb25maWcudGFibGVybz8uZmlsdGVycyB8fCBbXVwiIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogJzc1cmVtJ31cIlxyXG4gICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJSZWdpc3RybyB7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfVwiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibS0wXCI+e3tjcnVkQ29uZmlnLnRhYmxlcm8/LmxhYmVsIHx8IGlkRW50aWRhZH19PC9oNT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkJ1c2Nhci4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tjb2wubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDx0aD5BY2Npw7NuPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LWluZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbbmdTd2l0Y2hdPVwiY29sLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPnt7cm93RGF0YVtjb2wuY29sXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nU3dpdGNoQ2FzZT1cIidkYXRlOnl5eXktbW0tZGQnXCI+e3tyb3dEYXRhW2NvbC5jb2xdIHwgZGF0ZTogJ3l5eXktTU0tZGQnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5OlVTRCdcIj57e3Jvd0RhdGFbY29sLmNvbF0gfCBjdXJyZW5jeTogJ1VTRCd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zcGxpdEJ1dHRvbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIiBpY29uPVwicGkgcGktYWxpZ24tanVzdGlmeVwiIFttb2RlbF09XCJpdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uRHJvcGRvd25DbGljayk9XCJpdGVtU2VsZWN0ZWQgPSByb3dEYXRhXCI+PC9wLXNwbGl0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtcy5sZW5ndGggPD0gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiICBwQnV0dG9uIHBSaXBwbGUgW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbVNlbGVjdGVkID0gaW5pdGlhbERhdGFbaW5kZXhdOyBpdGVtLmNvbW1hbmQoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG48L2Rpdj5cclxuIl19
@@ -1,22 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FormatAddressPipe {
4
- transform(address, separator) {
5
- if (!address) {
6
- return address;
7
- }
8
- if (separator) {
9
- return address.replaceAll(separator, ' ').replaceAll(' ', ' ');
10
- }
11
- return address;
12
- }
13
- }
14
- FormatAddressPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormatAddressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
- FormatAddressPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormatAddressPipe, name: "formatAddress" });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormatAddressPipe, decorators: [{
17
- type: Pipe,
18
- args: [{
19
- name: 'formatAddress'
20
- }]
21
- }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWFkZHJlc3MucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NmLWNydWQvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvcm1hdC1hZGRyZXNzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsU0FBUyxDQUFDLE9BQTJCLEVBQUUsU0FBa0I7UUFDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDakU7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzsrR0FaVSxpQkFBaUI7NkdBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUg3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZm9ybWF0QWRkcmVzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1hdEFkZHJlc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybShhZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQsIHNlcGFyYXRvcj86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWFkZHJlc3MpIHtcclxuICAgICAgcmV0dXJuIGFkZHJlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNlcGFyYXRvcikge1xyXG4gICAgICByZXR1cm4gYWRkcmVzcy5yZXBsYWNlQWxsKHNlcGFyYXRvciwgJyAnKS5yZXBsYWNlQWxsKCcgICcsICcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFkZHJlc3M7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,26 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SfCrudComponent {
4
- constructor() { }
5
- ngOnInit() {
6
- }
7
- }
8
- SfCrudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SfCrudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- SfCrudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SfCrudComponent, selector: "lib-sf-crud", ngImport: i0, template: `
10
- <p>
11
- sf-crud works!
12
- </p>
13
- `, isInline: true });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SfCrudComponent, decorators: [{
15
- type: Component,
16
- args: [{
17
- selector: 'lib-sf-crud',
18
- template: `
19
- <p>
20
- sf-crud works!
21
- </p>
22
- `,
23
- styles: []
24
- }]
25
- }], ctorParameters: function () { return []; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2YtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZi1jcnVkL3NyYy9saWIvc2YtY3J1ZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFZbEQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7OzZHQUxVLGVBQWU7aUdBQWYsZUFBZSxtREFSaEI7Ozs7R0FJVDs0RkFJVSxlQUFlO2tCQVYzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxNQUFNLEVBQUUsRUFDUDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zZi1jcnVkJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHA+XHJcbiAgICAgIHNmLWNydWQgd29ya3MhXHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZkNydWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==