@lowcodeunit/applications-flow-common 1.39.18-hardening-bugs → 1.39.20-merge

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.
@@ -36,14 +36,19 @@ export class SecurityToggleComponent {
36
36
  }
37
37
  ngOnInit() { }
38
38
  ngOnChanges() {
39
- if (this.IsPrivate === null || this.IsPrivate === undefined) {
40
- this.IsPrivate = this.EditingApplication.LookupConfig?.IsPrivate;
39
+ if ((this.IsPrivate === null || this.IsPrivate === undefined) &&
40
+ this.EditingApplication) {
41
+ this.IsPrivate = this.EditingApplication?.LookupConfig?.IsPrivate;
42
+ // console.log("IS PRIVATE: ", this.IsPrivate);
41
43
  this.setupSecurityFormGroup();
42
44
  }
43
45
  }
44
46
  SecuritySubmit() {
45
47
  //save the security settings
46
- console.log('submitting security values: ', this.SecurityFormGroup.value);
48
+ // console.log(
49
+ // 'submitting security values: ',
50
+ // this.SecurityFormGroup.value
51
+ // );
47
52
  this.SaveFormEvent.emit(this.SecurityFormGroup.value);
48
53
  }
49
54
  HandleIsPrivate(event) {
@@ -57,8 +62,8 @@ export class SecurityToggleComponent {
57
62
  this.setupSecurityForm();
58
63
  }
59
64
  setupSecurityForm() {
60
- this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(this.EditingApplication.LookupConfig?.IsPrivate || false, [Validators.required]));
61
- this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(this.EditingApplication.LookupConfig?.IsTriggerSignIn || false, [Validators.required]));
65
+ this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(this.EditingApplication?.LookupConfig?.IsPrivate || false, [Validators.required]));
66
+ this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(this.EditingApplication?.LookupConfig?.IsTriggerSignIn || false, [Validators.required]));
62
67
  this.SecurityFormGroup.addControl('accessRights', this.formBldr.control(this.EditingApplication?.AccessRightLookups));
63
68
  this.SecurityFormGroup.addControl('licenseConfigs', this.formBldr.control(this.EditingApplication?.LicenseConfigurationLookups));
64
69
  }
@@ -87,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
87
92
  type: Output,
88
93
  args: ['is-private-changed']
89
94
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2NvbnRyb2xzL3NlY3VyaXR5LXRvZ2dsZS9zZWN1cml0eS10b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvc2VjdXJpdHktdG9nZ2xlL3NlY3VyaXR5LXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJSCxVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU3hCLE1BQU0sT0FBTyx1QkFBdUI7SUEyQ2hDLFlBQXNCLE1BQWtCLEVBQVksUUFBcUI7UUFBbkQsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUFZLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUE1QkQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBVywwQkFBMEI7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGVBQWUs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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEVhQ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LXNlY3VyaXR5LXRvZ2dsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlY3VyaXR5LXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VjdXJpdHktdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5VG9nZ2xlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoJ2VkaXRpbmctYXBwbGljYXRpb24nKVxuICAgIHB1YmxpYyBFZGl0aW5nQXBwbGljYXRpb246IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuXG4gICAgQElucHV0KCdsb2FkaW5nJylcbiAgICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgnYWNjZXNzLXJpZ2h0cycpXG4gICAgcHVibGljIEFjY2Vzc1JpZ2h0czogYW55O1xuXG4gICAgQElucHV0KCdsaWNlbnNlLWNvbmZpZ3MnKVxuICAgIHB1YmxpYyBMaWNlbnNlQ29uZmlnczogYW55O1xuXG4gICAgQE91dHB1dCgnc2F2ZS1mb3JtLWV2ZW50JylcbiAgICBwdWJsaWMgU2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPHt9PjtcblxuICAgIEBPdXRwdXQoJ2lzLXByaXZhdGUtY2hhbmdlZCcpXG4gICAgcHVibGljIElzUHJpdmF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgcHVibGljIGdldCBBY2Nlc3NSaWdodHNGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5TZWN1cml0eUZvcm1Hcm91cD8uY29udHJvbHMuYWNjZXNzUmlnaHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgSXNQcml2YXRlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXA/LmNvbnRyb2xzLmlzUHJpdmF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IElzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwPy5jb250cm9scy5pc1RyaWdnZXJTaWduSW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBMaWNlbnNlQ29uZmlnc0Zvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwPy5jb250cm9scy5saWNlbnNlQ29uZmlncztcbiAgICB9XG5cbiAgICBwdWJsaWMgSXNQcml2YXRlOiBib29sZWFuO1xuXG4gICAgcHVibGljIFNlY3VyaXR5Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgICBwdWJsaWMgUHJvY2Vzc29yVHlwZTogc3RyaW5nO1xuXG4gICAgcHVibGljIFNrZWxldG9uRWZmZWN0OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWFjU3ZjOiBFYUNTZXJ2aWNlLCBwcm90ZWN0ZWQgZm9ybUJsZHI6IEZvcm1CdWlsZGVyKSB7XG4gICAgICAgIHRoaXMuU2F2ZUZvcm1FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5Jc1ByaXZhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICB0aGlzLlNrZWxldG9uRWZmZWN0ID0gJ3dhdmUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLklzUHJpdmF0ZSA9PT0gbnVsbCB8fCB0aGlzLklzUHJpdmF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLklzUHJpdmF0ZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uSXNQcml2YXRlO1xuICAgICAgICAgICAgdGhpcy5zZXR1cFNlY3VyaXR5Rm9ybUdyb3VwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgU2VjdXJpdHlTdWJtaXQoKSB7XG4gICAgICAgIC8vc2F2ZSB0aGUgc2VjdXJpdHkgc2V0dGluZ3NcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAnc3VibWl0dGluZyBzZWN1cml0eSB2YWx1ZXM6ICcsXG4gICAgICAgICAgICB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuU2F2ZUZvcm1FdmVudC5lbWl0KHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBIYW5kbGVJc1ByaXZhdGUoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLklzUHJpdmF0ZSA9IHRoaXMuSXNQcml2YXRlRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgIHRoaXMuSXNQcml2YXRlQ2hhbmdlZC5lbWl0KHRoaXMuSXNQcml2YXRlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBTZWN1cml0eUZvcm1Hcm91cCgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldHRpbmcgZm9ybScpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvclR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uUHJvY2Vzc29yPy5UeXBlIHx8ICcnO1xuICAgICAgICB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwID0gdGhpcy5mb3JtQmxkci5ncm91cCh7fSk7XG4gICAgICAgIHRoaXMuc2V0dXBTZWN1cml0eUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBTZWN1cml0eUZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdpc1ByaXZhdGUnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uSXNQcml2YXRlIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdpc1RyaWdnZXJTaWduSW4nLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uSXNUcmlnZ2VyU2lnbkluIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdhY2Nlc3NSaWdodHMnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5BY2Nlc3NSaWdodExvb2t1cHMpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5TZWN1cml0eUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2xpY2Vuc2VDb25maWdzJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTGljZW5zZUNvbmZpZ3VyYXRpb25Mb29rdXBzXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGZvcm1cbiAgICBjbGFzcz1cInNlY3VyaXR5LWZvcm1cIlxuICAgIFtmb3JtR3JvdXBdPVwiU2VjdXJpdHlGb3JtR3JvdXBcIlxuICAgIChuZ1N1Ym1pdCk9XCJTZWN1cml0eVN1Ym1pdCgpXCJcbj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmbG93LWNhcmRcIj5cbiAgICAgICAgPCEtLSBTS0VMRVRPTiBMT0FESU5HIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTG9hZGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgIFNlY3VyaXR5IFNldHRpbmdzXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+WFhYPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHNrZWxldG9uLXRleHQgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19vdXRsaW5lXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGZ4RmxleD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBza2VsZXRvbi10ZXh0XG4gICAgICAgICAgICAgICAgICAgIFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc2tlbGV0b24tdGV4dCBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZSBTZXR0aW5nc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBFTkQgU0tFTEVUT04gTE9BRElORyAtLT5cblxuICAgICAgICA8IS0tIEJFR0lOIEFDVFVBTCBDT05URU5UIC0tPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTG9hZGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+IFNlY3VyaXR5IFNldHRpbmdzIDwvbWF0LWNhcmQtdGl0bGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzUHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJcyBTZWN1cmUgQXBwbGljYXRpb24/XCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJIYW5kbGVJc1ByaXZhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkEgU2VjdXJlZCBBcHBsaWNhdGlvbiBpcyBvbmUgdGhhdCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkIHRvIHVzZSB0aGUgYXBwbGljYXRpb24uIFRoZSBhcHBsaWNhdGlvbiBpcyBob3N0ZWQgYmVoaW5kIGFuIGlkZW50aXR5IHdhbGwuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzUHJpdmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJpc1RyaWdnZXJTaWduSW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXMgVHJpZ2dlciBTaWduIEluIEFwcGxpY2F0aW9uP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkEgVHJpZ2dlciBTaWduIEluIEFwcGxpY2F0aW9uIHdpbGwgZGlyZWN0IHRoZSB1c2VyIHRvIHNpZ24gaW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QWNjZXNzIFJpZ2h0czwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjZXNzUmlnaHRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YWNjZXNzUmlnaHRzPy52YWx1ZT8uWzBdIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKGFjY2Vzc1JpZ2h0cy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMVwiIGNsYXNzPVwiZXhhbXBsZS1hZGRpdGlvbmFsLXNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoK3t7KGFjY2Vzc1JpZ2h0cy52YWx1ZT8ubGVuZ3RoIHx8IDApIC0gMX19IHt7YWNjZXNzUmlnaHRzLnZhbHVlPy5sZW5ndGggPT09IDIgPyAnb3RoZXInIDogJ290aGVycyd9fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByaWdodHMgb2YgQWNjZXNzUmlnaHRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmlnaHRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmlnaHRzIH19PC9tYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxpY2Vuc2UgQ29uZmlnczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGljZW5zZUNvbmZpZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaWNlbnNlQ29uZmlncy52YWx1ZT8uWzBdIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKGxpY2Vuc2VDb25maWdzLnZhbHVlPy5sZW5ndGggfHwgMCkgPiAxXCIgY2xhc3M9XCJleGFtcGxlLWFkZGl0aW9uYWwtc2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgre3sobGljZW5zZUNvbmZpZ3MudmFsdWU/Lmxlbmd0aCB8fCAwKSAtIDF9fSB7e2xpY2Vuc2VDb25maWdzLnZhbHVlPy5sZW5ndGggPT09IDIgPyAnb3RoZXInIDogJ290aGVycyd9fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb25maWdzIG9mIExpY2Vuc2VDb25maWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29uZmlnc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNvbmZpZ3MgfX08L21hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgZnhGbGV4PVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICFTZWN1cml0eUZvcm1Hcm91cC52YWxpZCB8fCAhU2VjdXJpdHlGb3JtR3JvdXAuZGlydHlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZSBTZXR0aW5nc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1jYXJkPlxuPC9mb3JtPlxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2NvbnRyb2xzL3NlY3VyaXR5LXRvZ2dsZS9zZWN1cml0eS10b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvc2VjdXJpdHktdG9nZ2xlL3NlY3VyaXR5LXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJSCxVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU3hCLE1BQU0sT0FBTyx1QkFBdUI7SUEyQ2hDLFlBQXNCLE1BQWtCLEVBQVksUUFBcUI7UUFBbkQsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUFZLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUE1QkQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBVywwQkFBMEI7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGVBQWUs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QUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBFYUNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWFjLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1zZWN1cml0eS10b2dnbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWN1cml0eS10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlY3VyaXR5LXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZWN1cml0eVRvZ2dsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdlZGl0aW5nLWFwcGxpY2F0aW9uJylcbiAgICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIEBJbnB1dCgnbG9hZGluZycpXG4gICAgcHVibGljIExvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ2FjY2Vzcy1yaWdodHMnKVxuICAgIHB1YmxpYyBBY2Nlc3NSaWdodHM6IGFueTtcblxuICAgIEBJbnB1dCgnbGljZW5zZS1jb25maWdzJylcbiAgICBwdWJsaWMgTGljZW5zZUNvbmZpZ3M6IGFueTtcblxuICAgIEBPdXRwdXQoJ3NhdmUtZm9ybS1ldmVudCcpXG4gICAgcHVibGljIFNhdmVGb3JtRXZlbnQ6IEV2ZW50RW1pdHRlcjx7fT47XG5cbiAgICBAT3V0cHV0KCdpcy1wcml2YXRlLWNoYW5nZWQnKVxuICAgIHB1YmxpYyBJc1ByaXZhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIHB1YmxpYyBnZXQgQWNjZXNzUmlnaHRzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXA/LmNvbnRyb2xzLmFjY2Vzc1JpZ2h0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IElzUHJpdmF0ZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwPy5jb250cm9scy5pc1ByaXZhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBJc1RyaWdnZXJTaWduSW5Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5TZWN1cml0eUZvcm1Hcm91cD8uY29udHJvbHMuaXNUcmlnZ2VyU2lnbkluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgTGljZW5zZUNvbmZpZ3NGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5TZWN1cml0eUZvcm1Hcm91cD8uY29udHJvbHMubGljZW5zZUNvbmZpZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIElzUHJpdmF0ZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBTZWN1cml0eUZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gICAgcHVibGljIFByb2Nlc3NvclR5cGU6IHN0cmluZztcblxuICAgIHB1YmxpYyBTa2VsZXRvbkVmZmVjdDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSwgcHJvdGVjdGVkIGZvcm1CbGRyOiBGb3JtQnVpbGRlcikge1xuICAgICAgICB0aGlzLlNhdmVGb3JtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuSXNQcml2YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5Ta2VsZXRvbkVmZmVjdCA9ICd3YXZlJztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGhpcy5Jc1ByaXZhdGUgPT09IG51bGwgfHwgdGhpcy5Jc1ByaXZhdGUgPT09IHVuZGVmaW5lZCkgJiZcbiAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5Jc1ByaXZhdGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG9va3VwQ29uZmlnPy5Jc1ByaXZhdGU7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIklTIFBSSVZBVEU6IFwiLCB0aGlzLklzUHJpdmF0ZSk7XG4gICAgICAgICAgICB0aGlzLnNldHVwU2VjdXJpdHlGb3JtR3JvdXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBTZWN1cml0eVN1Ym1pdCgpIHtcbiAgICAgICAgLy9zYXZlIHRoZSBzZWN1cml0eSBzZXR0aW5nc1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICAgICdzdWJtaXR0aW5nIHNlY3VyaXR5IHZhbHVlczogJyxcbiAgICAgICAgLy8gICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAudmFsdWVcbiAgICAgICAgLy8gKTtcbiAgICAgICAgdGhpcy5TYXZlRm9ybUV2ZW50LmVtaXQodGhpcy5TZWN1cml0eUZvcm1Hcm91cC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZUlzUHJpdmF0ZShldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuSXNQcml2YXRlID0gdGhpcy5Jc1ByaXZhdGVGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5Jc1ByaXZhdGVDaGFuZ2VkLmVtaXQodGhpcy5Jc1ByaXZhdGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFNlY3VyaXR5Rm9ybUdyb3VwKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnc2V0dGluZyBmb3JtJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5Qcm9jZXNzb3I/LlR5cGUgfHwgJyc7XG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAgPSB0aGlzLmZvcm1CbGRyLmdyb3VwKHt9KTtcbiAgICAgICAgdGhpcy5zZXR1cFNlY3VyaXR5Rm9ybSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFNlY3VyaXR5Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5TZWN1cml0eUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2lzUHJpdmF0ZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvb2t1cENvbmZpZz8uSXNQcml2YXRlIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdpc1RyaWdnZXJTaWduSW4nLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb29rdXBDb25maWc/LklzVHJpZ2dlclNpZ25JbiB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlNlY3VyaXR5Rm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYWNjZXNzUmlnaHRzJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbCh0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uQWNjZXNzUmlnaHRMb29rdXBzKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdsaWNlbnNlQ29uZmlncycsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/LkxpY2Vuc2VDb25maWd1cmF0aW9uTG9va3Vwc1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxmb3JtXG4gICAgY2xhc3M9XCJzZWN1cml0eS1mb3JtXCJcbiAgICBbZm9ybUdyb3VwXT1cIlNlY3VyaXR5Rm9ybUdyb3VwXCJcbiAgICAobmdTdWJtaXQpPVwiU2VjdXJpdHlTdWJtaXQoKVwiXG4+XG4gICAgPG1hdC1jYXJkIGNsYXNzPVwiZmxvdy1jYXJkXCI+XG4gICAgICAgIDwhLS0gU0tFTEVUT04gTE9BRElORyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIHNrZWxldG9uLXRleHQgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiPlxuICAgICAgICAgICAgICAgICAgICBTZWN1cml0eSBTZXR0aW5nc1xuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHNrZWxldG9uLXRleHQgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiPlhYWDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBza2VsZXRvbi10ZXh0IFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBmeEZsZXg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgc2tlbGV0b24tdGV4dFxuICAgICAgICAgICAgICAgICAgICBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHNrZWxldG9uLXRleHQgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAgICAgIFNhdmUgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gRU5EIFNLRUxFVE9OIExPQURJTkcgLS0+XG5cbiAgICAgICAgPCEtLSBCRUdJTiBBQ1RVQUwgQ09OVEVOVCAtLT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPiBTZWN1cml0eSBTZXR0aW5ncyA8L21hdC1jYXJkLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1ByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiSXMgU2VjdXJlIEFwcGxpY2F0aW9uP1wiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiSGFuZGxlSXNQcml2YXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBIFNlY3VyZWQgQXBwbGljYXRpb24gaXMgb25lIHRoYXQgcmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZCB0byB1c2UgdGhlIGFwcGxpY2F0aW9uLiBUaGUgYXBwbGljYXRpb24gaXMgaG9zdGVkIGJlaGluZCBhbiBpZGVudGl0eSB3YWxsLlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBpbmZvX291dGxpbmVcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJc1ByaXZhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiaXNUcmlnZ2VyU2lnbkluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzIFRyaWdnZXIgU2lnbiBJbiBBcHBsaWNhdGlvbj9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBIFRyaWdnZXIgU2lnbiBJbiBBcHBsaWNhdGlvbiB3aWxsIGRpcmVjdCB0aGUgdXNlciB0byBzaWduIGluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX291dGxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkFjY2VzcyBSaWdodHM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY2Vzc1JpZ2h0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjY2Vzc1JpZ2h0cz8udmFsdWU/LlswXSB8fCAnJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIihhY2Nlc3NSaWdodHMudmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDFcIiBjbGFzcz1cImV4YW1wbGUtYWRkaXRpb25hbC1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCt7eyhhY2Nlc3NSaWdodHMudmFsdWU/Lmxlbmd0aCB8fCAwKSAtIDF9fSB7e2FjY2Vzc1JpZ2h0cy52YWx1ZT8ubGVuZ3RoID09PSAyID8gJ290aGVyJyA6ICdvdGhlcnMnfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmlnaHRzIG9mIEFjY2Vzc1JpZ2h0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJpZ2h0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHJpZ2h0cyB9fTwvbWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MaWNlbnNlIENvbmZpZ3M8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxpY2Vuc2VDb25maWdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGljZW5zZUNvbmZpZ3MudmFsdWU/LlswXSB8fCAnJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIihsaWNlbnNlQ29uZmlncy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMVwiIGNsYXNzPVwiZXhhbXBsZS1hZGRpdGlvbmFsLXNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoK3t7KGxpY2Vuc2VDb25maWdzLnZhbHVlPy5sZW5ndGggfHwgMCkgLSAxfX0ge3tsaWNlbnNlQ29uZmlncy52YWx1ZT8ubGVuZ3RoID09PSAyID8gJ290aGVyJyA6ICdvdGhlcnMnfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29uZmlncyBvZiBMaWNlbnNlQ29uZmlnc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbmZpZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjb25maWdzIH19PC9tYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gICAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIGZ4RmxleD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhU2VjdXJpdHlGb3JtR3JvdXAudmFsaWQgfHwgIVNlY3VyaXR5Rm9ybUdyb3VwLmRpcnR5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIFNhdmUgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtY2FyZD5cbjwvZm9ybT5cbiJdfQ==
@@ -4863,15 +4863,20 @@ class SecurityToggleComponent {
4863
4863
  }
4864
4864
  ngOnInit() { }
4865
4865
  ngOnChanges() {
4866
- var _a;
4867
- if (this.IsPrivate === null || this.IsPrivate === undefined) {
4868
- this.IsPrivate = (_a = this.EditingApplication.LookupConfig) === null || _a === void 0 ? void 0 : _a.IsPrivate;
4866
+ var _a, _b;
4867
+ if ((this.IsPrivate === null || this.IsPrivate === undefined) &&
4868
+ this.EditingApplication) {
4869
+ this.IsPrivate = (_b = (_a = this.EditingApplication) === null || _a === void 0 ? void 0 : _a.LookupConfig) === null || _b === void 0 ? void 0 : _b.IsPrivate;
4870
+ // console.log("IS PRIVATE: ", this.IsPrivate);
4869
4871
  this.setupSecurityFormGroup();
4870
4872
  }
4871
4873
  }
4872
4874
  SecuritySubmit() {
4873
4875
  //save the security settings
4874
- console.log('submitting security values: ', this.SecurityFormGroup.value);
4876
+ // console.log(
4877
+ // 'submitting security values: ',
4878
+ // this.SecurityFormGroup.value
4879
+ // );
4875
4880
  this.SaveFormEvent.emit(this.SecurityFormGroup.value);
4876
4881
  }
4877
4882
  HandleIsPrivate(event) {
@@ -4886,11 +4891,11 @@ class SecurityToggleComponent {
4886
4891
  this.setupSecurityForm();
4887
4892
  }
4888
4893
  setupSecurityForm() {
4889
- var _a, _b, _c, _d;
4890
- this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(((_a = this.EditingApplication.LookupConfig) === null || _a === void 0 ? void 0 : _a.IsPrivate) || false, [Validators.required]));
4891
- this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(((_b = this.EditingApplication.LookupConfig) === null || _b === void 0 ? void 0 : _b.IsTriggerSignIn) || false, [Validators.required]));
4892
- this.SecurityFormGroup.addControl('accessRights', this.formBldr.control((_c = this.EditingApplication) === null || _c === void 0 ? void 0 : _c.AccessRightLookups));
4893
- this.SecurityFormGroup.addControl('licenseConfigs', this.formBldr.control((_d = this.EditingApplication) === null || _d === void 0 ? void 0 : _d.LicenseConfigurationLookups));
4894
+ var _a, _b, _c, _d, _e, _f;
4895
+ this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(((_b = (_a = this.EditingApplication) === null || _a === void 0 ? void 0 : _a.LookupConfig) === null || _b === void 0 ? void 0 : _b.IsPrivate) || false, [Validators.required]));
4896
+ this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(((_d = (_c = this.EditingApplication) === null || _c === void 0 ? void 0 : _c.LookupConfig) === null || _d === void 0 ? void 0 : _d.IsTriggerSignIn) || false, [Validators.required]));
4897
+ this.SecurityFormGroup.addControl('accessRights', this.formBldr.control((_e = this.EditingApplication) === null || _e === void 0 ? void 0 : _e.AccessRightLookups));
4898
+ this.SecurityFormGroup.addControl('licenseConfigs', this.formBldr.control((_f = this.EditingApplication) === null || _f === void 0 ? void 0 : _f.LicenseConfigurationLookups));
4894
4899
  }
4895
4900
  }
4896
4901
  SecurityToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SecurityToggleComponent, deps: [{ token: EaCService }, { token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
@@ -5289,7 +5294,7 @@ class ProcessorDetailsFormComponent {
5289
5294
  }
5290
5295
  setupLCUNPMForm() {
5291
5296
  var _a;
5292
- this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.SourceControlLookup) || '', [Validators.required]));
5297
+ this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.SourceControlLookup) || ''));
5293
5298
  }
5294
5299
  setupLCUGitHubOAuthForm() {
5295
5300
  var _a, _b;
@@ -5353,10 +5358,10 @@ class ProcessorDetailsFormComponent {
5353
5358
  }
5354
5359
  }
5355
5360
  ProcessorDetailsFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, deps: [{ token: ApplicationsFlowService }, { token: i1$1.FormBuilder }, { token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
5356
- ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], Environment: ["environment", "Environment"], HasSaveButton: ["has-save-button", "HasSaveButton"], IsDisabled: ["is-disabled", "IsDisabled"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"], Loading: ["loading", "Loading"] }, outputs: { SaveFormEvent: "save-form-event" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"], components: [{ type: i3$1.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i6$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
5361
+ ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], Environment: ["environment", "Environment"], HasSaveButton: ["has-save-button", "HasSaveButton"], IsDisabled: ["is-disabled", "IsDisabled"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"], Loading: ["loading", "Loading"] }, outputs: { SaveFormEvent: "save-form-event" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"], components: [{ type: i3$1.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i6$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i7$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
5357
5362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, decorators: [{
5358
5363
  type: Component,
5359
- args: [{ selector: 'lcu-processor-details-form', template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"] }]
5364
+ args: [{ selector: 'lcu-processor-details-form', template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"] }]
5360
5365
  }], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type: i1$1.FormBuilder }, { type: EaCService }]; }, propDecorators: { EditingApplication: [{
5361
5366
  type: Input,
5362
5367
  args: ['editing-application']
@@ -5521,11 +5526,12 @@ class BuildPipelineFormComponent {
5521
5526
  }
5522
5527
  SaveEnvironment() {
5523
5528
  var _a;
5529
+ // console.log("submitting build pipeline: ", this.BuildPipelineFormGroup.value);
5524
5530
  const saveEnvReq = {
5525
5531
  Environment: {
5526
5532
  //...this.Environment,
5527
5533
  Artifacts: this.Environment.Artifacts || {},
5528
- //DevOpsActions: this.Environment.DevOpsActions || {},
5534
+ DevOpsActions: this.Environment.DevOpsActions || {},
5529
5535
  //Secrets: this.Environment.Secrets || {},
5530
5536
  //Sources: this.Environment.Sources || {},
5531
5537
  },
@@ -5533,10 +5539,7 @@ class BuildPipelineFormComponent {
5533
5539
  //EnterpriseDataTokens: {},
5534
5540
  };
5535
5541
  let artifactLookup;
5536
- let artifact = {
5537
- // ...this.Artifact,
5538
- // ...this.SelectedHostingOptionInputControlValues,
5539
- };
5542
+ let artifact = Object.assign(Object.assign({}, this.Artifact), this.SelectedHostingOptionInputControlValues);
5540
5543
  if (!this.ArtifactLookup) {
5541
5544
  artifactLookup = Guid.CreateRaw();
5542
5545
  artifact = Object.assign(Object.assign({}, artifact), { Type: this.SelectedHostingOption.ArtifactType, Name: this.SelectedHostingOption.Name, NPMRegistry: 'https://registry.npmjs.org/' });
@@ -5570,7 +5573,7 @@ class BuildPipelineFormComponent {
5570
5573
  const doa = Object.assign(Object.assign({}, this.DevOpsAction), { Name: this.DevOpsActionNameFormControl.value });
5571
5574
  saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
5572
5575
  }
5573
- console.log('env req: ', saveEnvReq);
5576
+ // console.log('env req: ', saveEnvReq);
5574
5577
  this.eacSvc.SaveEnvironmentAsCode(saveEnvReq).then((res) => {
5575
5578
  this.ResponseEvent.emit(res);
5576
5579
  });