@lowcodeunit/applications-flow-common 1.33.93-lets-get-social-ish → 1.33.99-lets-get-social-ish

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 (79) hide show
  1. package/bundles/lowcodeunit-applications-flow-common.umd.js +1149 -493
  2. package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
  3. package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
  4. package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
  5. package/esm2015/lcu.api.js +2 -1
  6. package/esm2015/lib/applications-flow.module.js +22 -6
  7. package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +69 -0
  8. package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +418 -0
  9. package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +2 -2
  10. package/esm2015/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.js +22 -0
  11. package/esm2015/lib/dialogs/source-control-dialog/source-control-dialog.component.js +22 -0
  12. package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
  13. package/esm2015/lib/elements/projects/controls/builds/builds.component.js +4 -9
  14. package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +6 -6
  15. package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +3 -6
  16. package/esm2015/lib/elements/projects/controls/header/header.component.js +7 -7
  17. package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +1 -1
  18. package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +7 -7
  19. package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +8 -10
  20. package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +7 -7
  21. package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +7 -7
  22. package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +6 -6
  23. package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
  24. package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +6 -6
  25. package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +6 -6
  26. package/esm2015/lib/elements/projects/projects.component.js +16 -143
  27. package/esm2015/lib/services/eac.service.js +217 -0
  28. package/esm2015/lowcodeunit-applications-flow-common.js +32 -29
  29. package/fesm2015/lowcodeunit-applications-flow-common.js +765 -239
  30. package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
  31. package/lcu.api.d.ts +1 -0
  32. package/lcu.api.d.ts.map +1 -1
  33. package/lib/applications-flow.module.d.ts.map +1 -1
  34. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +28 -0
  35. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +1 -0
  36. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +75 -0
  37. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +1 -0
  38. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +14 -0
  39. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts.map +1 -0
  40. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +14 -0
  41. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts.map +1 -0
  42. package/lib/elements/base-form/base-form.component.d.ts +3 -3
  43. package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
  44. package/lib/elements/projects/controls/builds/builds.component.d.ts +1 -3
  45. package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
  46. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
  47. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
  48. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +1 -3
  49. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
  50. package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
  51. package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
  52. package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
  53. package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
  54. package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
  55. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
  56. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
  57. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
  58. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
  59. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
  60. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
  61. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
  62. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
  63. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
  64. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
  65. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
  66. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
  67. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
  68. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
  69. package/lib/elements/projects/projects.component.d.ts +4 -11
  70. package/lib/elements/projects/projects.component.d.ts.map +1 -1
  71. package/lib/services/eac.service.d.ts +54 -0
  72. package/lib/services/eac.service.d.ts.map +1 -0
  73. package/lowcodeunit-applications-flow-common.d.ts +31 -28
  74. package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
  75. package/lowcodeunit-applications-flow-common.metadata.json +1 -1
  76. package/package.json +1 -1
  77. package/esm2015/lib/services/applications-flow-events.service.js +0 -83
  78. package/lib/services/applications-flow-events.service.d.ts +0 -58
  79. package/lib/services/applications-flow-events.service.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ɵɵdefineInjectable, Injectable, ɵɵinject, INJECTOR, Injector, EventEmitter, Component, Input, Output, ViewChild, ComponentFactoryResolver, ViewContainerRef, ChangeDetectorRef, NgModule } from '@angular/core';
1
+ import { ɵɵdefineInjectable, Injectable, ɵɵinject, INJECTOR, Injector, Component, Input, EventEmitter, Output, ViewChild, ComponentFactoryResolver, ViewContainerRef, ChangeDetectorRef, Inject, NgModule } from '@angular/core';
2
2
  import { Subject, Observable } from 'rxjs';
3
3
  import { __awaiter } from 'tslib';
4
4
  import { HttpClient, HttpBackend } from '@angular/common/http';
@@ -11,6 +11,7 @@ import { map, debounceTime, switchMap } from 'rxjs/operators';
11
11
  import { BreakpointObserver } from '@angular/cdk/layout';
12
12
  import { MatTooltipModule } from '@angular/material/tooltip';
13
13
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
14
+ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
14
15
 
15
16
  /**
16
17
  * Model for form values
@@ -707,159 +708,123 @@ class SaveEnvironmentAsCodeEventRequest {
707
708
  }
708
709
  class SaveProjectAsCodeEventRequest {
709
710
  }
710
- class ApplicationsFlowEventsService {
711
- // Constructors
712
- constructor() {
713
- this.DeleteApplicationEvent = new EventEmitter();
714
- this.DeleteDevOpsActionEvent = new EventEmitter();
715
- this.DeleteProjectEvent = new EventEmitter();
716
- this.DeleteSourceControlEvent = new EventEmitter();
717
- this.EnsureUserEnterpriseEvent = new EventEmitter();
718
- this.LoadEnterpriseAsCodeEvent = new EventEmitter();
719
- this.SaveApplicationAsCodeEvent = new EventEmitter();
720
- this.SaveDFSModifierEvent = new EventEmitter();
721
- this.SaveEnterpriseAsCodeEvent = new EventEmitter();
722
- this.SaveEnvironmentAsCodeEvent = new EventEmitter();
723
- this.SaveProjectAsCodeEvent = new EventEmitter();
724
- this.SetCreatingProjectEvent = new EventEmitter();
725
- this.SetEditProjectSettingsEvent = new EventEmitter();
726
- this.UnpackLowCodeUnitEvent = new EventEmitter();
711
+ class EaCService {
712
+ // Constructors
713
+ constructor(projectService) {
714
+ this.projectService = projectService;
715
+ this.State = new ApplicationsFlowState();
727
716
  }
728
- // API Methods
729
- DeleteApplication(appLookup) {
730
- this.DeleteApplicationEvent.emit(appLookup);
717
+ // API Methods
718
+ get CreatingProject() {
719
+ return this.projectService.CreatingProject;
720
+ }
721
+ DeleteApplication(appLookup, appName) {
722
+ return __awaiter(this, void 0, void 0, function* () {
723
+ if (confirm(`Are you sure you want to delete application '${appName}'?`)) {
724
+ yield this.projectService.DeleteApplication(this.State, appLookup);
725
+ }
726
+ });
731
727
  }
732
728
  DeleteDevOpsAction(doaLookup) {
733
- this.DeleteDevOpsActionEvent.emit(doaLookup);
729
+ return __awaiter(this, void 0, void 0, function* () {
730
+ if (confirm(`Are you sure you want to delete DevOps action '${doaLookup}'?`)) {
731
+ yield this.projectService.DeleteDevOpsAction(this.State, doaLookup);
732
+ }
733
+ });
734
734
  }
735
735
  DeleteProject(projectLookup) {
736
- this.DeleteProjectEvent.emit(projectLookup);
736
+ return __awaiter(this, void 0, void 0, function* () {
737
+ if (confirm(`Are you sure you want to delete Project '${projectLookup}'?`)) {
738
+ yield this.projectService.DeleteProject(this.State, projectLookup);
739
+ }
740
+ });
737
741
  }
738
742
  DeleteSourceControl(scLookup) {
739
- this.DeleteSourceControlEvent.emit(scLookup);
743
+ return __awaiter(this, void 0, void 0, function* () {
744
+ if (confirm(`Are you sure you want to delete Source Control '${scLookup}'?`)) {
745
+ yield this.projectService.DeleteSourceControl(this.State, scLookup);
746
+ }
747
+ });
740
748
  }
749
+ // this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(async () => {
750
+ // await this.projectService.EnsureUserEnterprise(this.State);
751
+ // });
741
752
  EnsureUserEnterprise() {
742
- this.EnsureUserEnterpriseEvent.emit();
753
+ return __awaiter(this, void 0, void 0, function* () {
754
+ yield this.projectService.EnsureUserEnterprise(this.State);
755
+ });
756
+ }
757
+ GetActiveEnterprise() {
758
+ return __awaiter(this, void 0, void 0, function* () {
759
+ yield this.projectService.GetActiveEnterprise(this.State);
760
+ });
761
+ }
762
+ get EditingProjectLookup() {
763
+ return this.projectService.EditingProjectLookup;
764
+ }
765
+ HasValidConnection() {
766
+ return __awaiter(this, void 0, void 0, function* () {
767
+ yield this.projectService.HasValidConnection(this.State);
768
+ });
769
+ }
770
+ ListEnterprises() {
771
+ return __awaiter(this, void 0, void 0, function* () {
772
+ yield this.projectService.ListEnterprises(this.State);
773
+ });
743
774
  }
744
- // public ListProjects(withLoading: boolean): void {
745
- // this.ListProjectsEvent.emit(withLoading);
746
- // }
747
775
  LoadEnterpriseAsCode() {
748
- this.LoadEnterpriseAsCodeEvent.emit();
776
+ return __awaiter(this, void 0, void 0, function* () {
777
+ yield this.projectService.LoadEnterpriseAsCode(this.State);
778
+ });
749
779
  }
750
780
  SaveApplicationAsCode(req) {
751
- this.SaveApplicationAsCodeEvent.emit(req);
781
+ return __awaiter(this, void 0, void 0, function* () {
782
+ yield this.handleSaveApplication(req);
783
+ });
752
784
  }
753
785
  SaveDFSModifier(req) {
754
- this.SaveDFSModifierEvent.emit(req);
786
+ return __awaiter(this, void 0, void 0, function* () {
787
+ yield this.handleSaveDFSModifier(req);
788
+ });
755
789
  }
756
790
  SaveEnterpriseAsCode(eac) {
757
- this.SaveEnterpriseAsCodeEvent.emit(eac);
791
+ return __awaiter(this, void 0, void 0, function* () {
792
+ yield this.projectService.SaveEnterpriseAsCode(this.State, eac);
793
+ });
758
794
  }
759
795
  SaveEnvironmentAsCode(req) {
760
- this.SaveEnvironmentAsCodeEvent.emit(req);
796
+ return __awaiter(this, void 0, void 0, function* () {
797
+ yield this.handleSaveEnvironment(req);
798
+ });
761
799
  }
762
800
  SaveProjectAsCode(req) {
763
- this.SaveProjectAsCodeEvent.emit(req);
764
- }
765
- SetCreatingProject(creatingProject) {
766
- this.SetCreatingProjectEvent.emit(creatingProject);
767
- }
768
- SetEditProjectSettings(projectLookup) {
769
- this.SetEditProjectSettingsEvent.emit(projectLookup);
770
- }
771
- UnpackLowCodeUnit(req) {
772
- this.UnpackLowCodeUnitEvent.emit(req);
773
- }
774
- }
775
- ApplicationsFlowEventsService.ɵprov = ɵɵdefineInjectable({ factory: function ApplicationsFlowEventsService_Factory() { return new ApplicationsFlowEventsService(); }, token: ApplicationsFlowEventsService, providedIn: "root" });
776
- ApplicationsFlowEventsService.decorators = [
777
- { type: Injectable, args: [{
778
- providedIn: 'root',
779
- },] }
780
- ];
781
- ApplicationsFlowEventsService.ctorParameters = () => [];
782
-
783
- class ApplicationsFlowProjectsElementState {
784
- }
785
- class ApplicationsFlowProjectsContext extends LCUElementContext {
786
- }
787
- const SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT = 'applications-flow-projects-element';
788
- class ApplicationsFlowProjectsElementComponent extends LcuElementComponent {
789
- // Constructors
790
- constructor(injector, appsFlowSvc, projectService, appsFlowEventsSvc) {
791
- super(injector);
792
- this.injector = injector;
793
- this.appsFlowSvc = appsFlowSvc;
794
- this.projectService = projectService;
795
- this.appsFlowEventsSvc = appsFlowEventsSvc;
796
- this.State = new ApplicationsFlowState();
797
- this.setServices();
798
- }
799
- // Properties
800
- get ActiveEnvironment() {
801
- var _a, _b;
802
- return (_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Environments[this.ActiveEnvironmentLookup];
803
- }
804
- get ActiveEnvironmentLookup() {
805
- var _a, _b;
806
- // TODO: Eventually support multiple environments
807
- const envLookups = Object.keys(((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Environments) || {});
808
- return envLookups[0];
809
- }
810
- get CreatingProject() {
811
- return this.projectService.CreatingProject;
812
- }
813
- get EditingProject() {
814
- var _a, _b, _c, _d;
815
- return ((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) ? (_d = (_c = this.State) === null || _c === void 0 ? void 0 : _c.EaC) === null || _d === void 0 ? void 0 : _d.Projects[this.EditingProjectLookup] : null;
816
- }
817
- get EditingProjectLookup() {
818
- return this.projectService.EditingProjectLookup;
819
- }
820
- get ProjectLookups() {
821
- var _a, _b;
822
- return Object.keys(((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) || {});
801
+ return __awaiter(this, void 0, void 0, function* () {
802
+ yield this.handleSaveProject(req.ProjectLookup, req.Project);
803
+ });
823
804
  }
824
- // Life Cycle
825
- ngOnDestroy() { }
826
- ngOnInit() {
827
- super.ngOnInit();
828
- this.handleStateChange().then((eac) => { });
829
- // this.setupProjectMonitor();
805
+ SetActiveEnterprise(eventValue) {
806
+ return __awaiter(this, void 0, void 0, function* () {
807
+ this.projectService.SetActiveEnterprise(this.State, eventValue);
808
+ });
830
809
  }
831
- // API Methods
832
- ActiveEnterpriseChanged(event) {
810
+ SetCreatingProject(creatingProject) {
833
811
  return __awaiter(this, void 0, void 0, function* () {
834
- yield this.projectService.SetActiveEnterprise(this.State, event.value);
812
+ this.projectService.SetCreatingProject(creatingProject);
835
813
  });
836
814
  }
837
- ConfigureDevOpsAction(devOpsActionLookup) {
838
- this.State.Loading = true;
839
- this.appsFlowSvc
840
- .ConfigureDevOpsAction(devOpsActionLookup)
841
- .subscribe((response) => {
842
- if (response.Status.Code === 0) {
843
- this.projectService.LoadEnterpriseAsCode(this.State);
844
- }
845
- else {
846
- this.State.Loading = false;
847
- }
815
+ SetEditProjectSettings(projectLookup) {
816
+ return __awaiter(this, void 0, void 0, function* () {
817
+ yield this.projectService.SetEditProjectSettings(this.State, projectLookup);
848
818
  });
849
819
  }
850
- // Helpers
851
- handleStateChange() {
852
- var _a;
820
+ UnpackLowCodeUnit(req) {
853
821
  return __awaiter(this, void 0, void 0, function* () {
854
- this.State.Loading = true;
855
- yield this.projectService.HasValidConnection(this.State);
856
- yield this.projectService.EnsureUserEnterprise(this.State);
857
- yield this.projectService.ListEnterprises(this.State);
858
- if (((_a = this.State.Enterprises) === null || _a === void 0 ? void 0 : _a.length) > 0) {
859
- yield this.projectService.GetActiveEnterprise(this.State);
822
+ if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
823
+ yield this.projectService.UnpackLowCodeUnit(this.State, req);
860
824
  }
861
825
  });
862
826
  }
827
+ // Helpers
863
828
  handleSaveApplication(req) {
864
829
  var _a;
865
830
  return __awaiter(this, void 0, void 0, function* () {
@@ -920,7 +885,7 @@ class ApplicationsFlowProjectsElementComponent extends LcuElementComponent {
920
885
  var _a;
921
886
  return __awaiter(this, void 0, void 0, function* () {
922
887
  const projHosts = {};
923
- (_a = project === null || project === void 0 ? void 0 : project.Hosts) === null || _a === void 0 ? void 0 : _a.forEach(host => {
888
+ (_a = project === null || project === void 0 ? void 0 : project.Hosts) === null || _a === void 0 ? void 0 : _a.forEach((host) => {
924
889
  projHosts[host] = this.State.EaC.Hosts[host];
925
890
  });
926
891
  const saveEaC = {
@@ -932,57 +897,99 @@ class ApplicationsFlowProjectsElementComponent extends LcuElementComponent {
932
897
  };
933
898
  saveEaC.Projects[projectLookup] = project;
934
899
  yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
935
- this.appsFlowEventsSvc.SetEditProjectSettings(projectLookup);
900
+ this.SetEditProjectSettings(projectLookup);
936
901
  });
937
902
  }
938
- setServices() {
939
- this.appsFlowEventsSvc.DeleteApplicationEvent.subscribe((appLookup) => __awaiter(this, void 0, void 0, function* () {
940
- yield this.projectService.DeleteApplication(this.State, appLookup);
941
- }));
942
- this.appsFlowEventsSvc.DeleteDevOpsActionEvent.subscribe((doaLookup) => __awaiter(this, void 0, void 0, function* () {
943
- yield this.projectService.DeleteDevOpsAction(this.State, doaLookup);
944
- }));
945
- this.appsFlowEventsSvc.DeleteProjectEvent.subscribe((projectLookup) => __awaiter(this, void 0, void 0, function* () {
946
- yield this.projectService.DeleteProject(this.State, projectLookup);
947
- }));
948
- this.appsFlowEventsSvc.DeleteSourceControlEvent.subscribe((scLookup) => __awaiter(this, void 0, void 0, function* () {
949
- yield this.projectService.DeleteSourceControl(this.State, scLookup);
950
- }));
951
- this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(() => __awaiter(this, void 0, void 0, function* () {
952
- yield this.projectService.EnsureUserEnterprise(this.State);
953
- }));
954
- // this.appsFlowEventsSvc.ListProjectsEvent.subscribe((withLoading) => {
955
- // this.projectService.ListProjects(this.State, withLoading);
956
- // });
957
- this.appsFlowEventsSvc.LoadEnterpriseAsCodeEvent.subscribe(() => __awaiter(this, void 0, void 0, function* () {
958
- yield this.projectService.LoadEnterpriseAsCode(this.State);
959
- }));
960
- this.appsFlowEventsSvc.SaveEnterpriseAsCodeEvent.subscribe((eac) => __awaiter(this, void 0, void 0, function* () {
961
- yield this.projectService.SaveEnterpriseAsCode(this.State, eac);
962
- }));
963
- this.appsFlowEventsSvc.SaveApplicationAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
964
- yield this.handleSaveApplication(req);
965
- }));
966
- this.appsFlowEventsSvc.SaveDFSModifierEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
967
- yield this.handleSaveDFSModifier(req);
968
- }));
969
- this.appsFlowEventsSvc.SaveEnvironmentAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
970
- yield this.handleSaveEnvironment(req);
971
- }));
972
- this.appsFlowEventsSvc.SaveProjectAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
973
- yield this.handleSaveProject(req.ProjectLookup, req.Project);
974
- }));
975
- this.appsFlowEventsSvc.SetCreatingProjectEvent.subscribe((creatingProject) => {
976
- this.projectService.SetCreatingProject(creatingProject);
903
+ }
904
+ EaCService.ɵprov = ɵɵdefineInjectable({ factory: function EaCService_Factory() { return new EaCService(ɵɵinject(ProjectService)); }, token: EaCService, providedIn: "root" });
905
+ EaCService.decorators = [
906
+ { type: Injectable, args: [{
907
+ providedIn: 'root',
908
+ },] }
909
+ ];
910
+ EaCService.ctorParameters = () => [
911
+ { type: ProjectService }
912
+ ];
913
+
914
+ class ApplicationsFlowProjectsElementState {
915
+ }
916
+ class ApplicationsFlowProjectsContext extends LCUElementContext {
917
+ }
918
+ const SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT = 'applications-flow-projects-element';
919
+ class ApplicationsFlowProjectsElementComponent extends LcuElementComponent {
920
+ // Constructors
921
+ constructor(injector, appsFlowSvc, eacSvc) {
922
+ super(injector);
923
+ this.injector = injector;
924
+ this.appsFlowSvc = appsFlowSvc;
925
+ this.eacSvc = eacSvc;
926
+ }
927
+ // Properties
928
+ get ActiveEnvironment() {
929
+ var _a, _b;
930
+ return (_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Environments[this.ActiveEnvironmentLookup];
931
+ }
932
+ get ActiveEnvironmentLookup() {
933
+ var _a, _b;
934
+ // TODO: Eventually support multiple environments
935
+ const envLookups = Object.keys(((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Environments) || {});
936
+ return envLookups[0];
937
+ }
938
+ get CreatingProject() {
939
+ return this.eacSvc.CreatingProject;
940
+ }
941
+ get EditingProject() {
942
+ var _a, _b, _c, _d;
943
+ return ((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) ? (_d = (_c = this.State) === null || _c === void 0 ? void 0 : _c.EaC) === null || _d === void 0 ? void 0 : _d.Projects[this.EditingProjectLookup] : null;
944
+ }
945
+ get EditingProjectLookup() {
946
+ return this.eacSvc.EditingProjectLookup;
947
+ }
948
+ get ProjectLookups() {
949
+ var _a, _b;
950
+ return Object.keys(((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) || {});
951
+ }
952
+ get State() {
953
+ return this.eacSvc.State;
954
+ }
955
+ // Life Cycle
956
+ ngOnDestroy() { }
957
+ ngOnInit() {
958
+ super.ngOnInit();
959
+ this.handleStateChange().then((eac) => { });
960
+ // this.setupProjectMonitor();
961
+ }
962
+ // API Methods
963
+ ActiveEnterpriseChanged(event) {
964
+ return __awaiter(this, void 0, void 0, function* () {
965
+ yield this.eacSvc.SetActiveEnterprise(event.value);
977
966
  });
978
- this.appsFlowEventsSvc.SetEditProjectSettingsEvent.subscribe((projectLookup) => __awaiter(this, void 0, void 0, function* () {
979
- yield this.projectService.SetEditProjectSettings(this.State, projectLookup);
980
- }));
981
- this.appsFlowEventsSvc.UnpackLowCodeUnitEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
982
- if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
983
- yield this.projectService.UnpackLowCodeUnit(this.State, req);
967
+ }
968
+ ConfigureDevOpsAction(devOpsActionLookup) {
969
+ this.State.Loading = true;
970
+ this.appsFlowSvc
971
+ .ConfigureDevOpsAction(devOpsActionLookup)
972
+ .subscribe((response) => {
973
+ if (response.Status.Code === 0) {
974
+ this.eacSvc.LoadEnterpriseAsCode();
984
975
  }
985
- }));
976
+ else {
977
+ this.State.Loading = false;
978
+ }
979
+ });
980
+ }
981
+ // Helpers
982
+ handleStateChange() {
983
+ var _a;
984
+ return __awaiter(this, void 0, void 0, function* () {
985
+ this.State.Loading = true;
986
+ yield this.eacSvc.HasValidConnection();
987
+ yield this.eacSvc.EnsureUserEnterprise();
988
+ yield this.eacSvc.ListEnterprises();
989
+ if (((_a = this.State.Enterprises) === null || _a === void 0 ? void 0 : _a.length) > 0) {
990
+ yield this.eacSvc.GetActiveEnterprise();
991
+ }
992
+ });
986
993
  }
987
994
  }
988
995
  ApplicationsFlowProjectsElementComponent.decorators = [
@@ -995,8 +1002,7 @@ ApplicationsFlowProjectsElementComponent.decorators = [
995
1002
  ApplicationsFlowProjectsElementComponent.ctorParameters = () => [
996
1003
  { type: Injector },
997
1004
  { type: ApplicationsFlowService },
998
- { type: ProjectService },
999
- { type: ApplicationsFlowEventsService }
1005
+ { type: EaCService }
1000
1006
  ];
1001
1007
 
1002
1008
  class HostingDetailsFormGroupComponent {
@@ -1101,10 +1107,9 @@ HostingDetailsFormGroupComponent.propDecorators = {
1101
1107
 
1102
1108
  class SourceControlFormControlsComponent {
1103
1109
  // Constructors
1104
- constructor(formBuilder, appsFlowSvc, appsFlowEventsSvc) {
1110
+ constructor(formBuilder, appsFlowSvc) {
1105
1111
  this.formBuilder = formBuilder;
1106
1112
  this.appsFlowSvc = appsFlowSvc;
1107
- this.appsFlowEventsSvc = appsFlowEventsSvc;
1108
1113
  this.SeparatorKeysCodes = [ENTER, COMMA];
1109
1114
  this.BranchesChanged = new EventEmitter();
1110
1115
  this.SelectedBranches = [];
@@ -1341,8 +1346,7 @@ SourceControlFormControlsComponent.decorators = [
1341
1346
  ];
1342
1347
  SourceControlFormControlsComponent.ctorParameters = () => [
1343
1348
  { type: FormBuilder },
1344
- { type: ApplicationsFlowService },
1345
- { type: ApplicationsFlowEventsService }
1349
+ { type: ApplicationsFlowService }
1346
1350
  ];
1347
1351
  SourceControlFormControlsComponent.propDecorators = {
1348
1352
  BranchesChanged: [{ type: Output, args: ['branches-changed',] }],
@@ -1361,10 +1365,10 @@ SourceControlFormControlsComponent.propDecorators = {
1361
1365
 
1362
1366
  class CreateProjectWizardComponent {
1363
1367
  // Constructors
1364
- constructor(formBuilder, appsFlowSvc, appsFlowEventsSvc) {
1368
+ constructor(formBuilder, appsFlowSvc, eacSvc) {
1365
1369
  this.formBuilder = formBuilder;
1366
1370
  this.appsFlowSvc = appsFlowSvc;
1367
- this.appsFlowEventsSvc = appsFlowEventsSvc;
1371
+ this.eacSvc = eacSvc;
1368
1372
  this.HostingDetails = new ProjectHostingDetails();
1369
1373
  }
1370
1374
  // Fields
@@ -1403,7 +1407,7 @@ class CreateProjectWizardComponent {
1403
1407
  }
1404
1408
  // API Methods
1405
1409
  Cancel() {
1406
- this.appsFlowEventsSvc.SetCreatingProject(false);
1410
+ this.eacSvc.SetCreatingProject(false);
1407
1411
  }
1408
1412
  ConfigureRepository() {
1409
1413
  this.loadProjectHostingDetails();
@@ -1491,7 +1495,7 @@ CreateProjectWizardComponent.decorators = [
1491
1495
  CreateProjectWizardComponent.ctorParameters = () => [
1492
1496
  { type: FormBuilder },
1493
1497
  { type: ApplicationsFlowService },
1494
- { type: ApplicationsFlowEventsService }
1498
+ { type: EaCService }
1495
1499
  ];
1496
1500
  CreateProjectWizardComponent.propDecorators = {
1497
1501
  SourceControl: [{ type: ViewChild, args: [SourceControlFormControlsComponent,] }],
@@ -1567,10 +1571,10 @@ DynamicTabsComponent.propDecorators = {
1567
1571
 
1568
1572
  class HeaderComponent {
1569
1573
  // Constructors
1570
- constructor(formBuilder, lcuSettings, appsFlowEventsSvc) {
1574
+ constructor(formBuilder, lcuSettings, eacSvc) {
1571
1575
  this.formBuilder = formBuilder;
1572
1576
  this.lcuSettings = lcuSettings;
1573
- this.appsFlowEventsSvc = appsFlowEventsSvc;
1577
+ this.eacSvc = eacSvc;
1574
1578
  }
1575
1579
  get HasProjects() {
1576
1580
  return this.ProjectLookups && this.ProjectLookups.length > 0;
@@ -1609,13 +1613,13 @@ class HeaderComponent {
1609
1613
  TrustedProviderLookups: ['ADB2C'],
1610
1614
  },
1611
1615
  };
1612
- this.appsFlowEventsSvc.SaveProjectAsCode({
1616
+ this.eacSvc.SaveProjectAsCode({
1613
1617
  ProjectLookup: Guid.CreateRaw(),
1614
1618
  Project: proj,
1615
1619
  });
1616
1620
  }
1617
1621
  EnableCreatingProject() {
1618
- this.appsFlowEventsSvc.SetCreatingProject(true);
1622
+ this.eacSvc.SetCreatingProject(true);
1619
1623
  }
1620
1624
  }
1621
1625
  HeaderComponent.decorators = [
@@ -1628,7 +1632,7 @@ HeaderComponent.decorators = [
1628
1632
  HeaderComponent.ctorParameters = () => [
1629
1633
  { type: FormBuilder },
1630
1634
  { type: LCUServiceSettings },
1631
- { type: ApplicationsFlowEventsService }
1635
+ { type: EaCService }
1632
1636
  ];
1633
1637
  HeaderComponent.propDecorators = {
1634
1638
  CreatingProject: [{ type: Input, args: ['creating-project',] }],
@@ -1643,9 +1647,9 @@ class CardFormConfigModel {
1643
1647
  }
1644
1648
 
1645
1649
  class DomainsComponent {
1646
- constructor(formsService, appsFlowEventsSvc) {
1650
+ constructor(formsService, eacSvc) {
1647
1651
  this.formsService = formsService;
1648
- this.appsFlowEventsSvc = appsFlowEventsSvc;
1652
+ this.eacSvc = eacSvc;
1649
1653
  }
1650
1654
  /**
1651
1655
  * Access form control for root directory
@@ -1743,7 +1747,7 @@ class DomainsComponent {
1743
1747
  * Save changes
1744
1748
  */
1745
1749
  save() {
1746
- this.appsFlowEventsSvc.SaveProjectAsCode({
1750
+ this.eacSvc.SaveProjectAsCode({
1747
1751
  ProjectLookup: this.ProjectLookup,
1748
1752
  Project: Object.assign(Object.assign({}, this.Project), {
1749
1753
  // Hosts: [...this.Project.Hosts, this.Domain.value],
@@ -1764,7 +1768,7 @@ DomainsComponent.decorators = [
1764
1768
  ];
1765
1769
  DomainsComponent.ctorParameters = () => [
1766
1770
  { type: FormsService },
1767
- { type: ApplicationsFlowEventsService }
1771
+ { type: EaCService }
1768
1772
  ];
1769
1773
  DomainsComponent.propDecorators = {
1770
1774
  Data: [{ type: Input, args: ['data',] }]
@@ -1820,10 +1824,10 @@ GeneralComponent.propDecorators = {
1820
1824
 
1821
1825
  class AppsFlowComponent {
1822
1826
  // Constructors
1823
- constructor(formBldr, appsFlowSvc, appsFlowEventsSvc) {
1827
+ constructor(formBldr, appsFlowSvc, eacSvc) {
1824
1828
  this.formBldr = formBldr;
1825
1829
  this.appsFlowSvc = appsFlowSvc;
1826
- this.appsFlowEventsSvc = appsFlowEventsSvc;
1830
+ this.eacSvc = eacSvc;
1827
1831
  this.EditingApplicationLookup = null;
1828
1832
  this.redirectTooltip = '';
1829
1833
  // this.IsPermanent = false;
@@ -2036,9 +2040,7 @@ class AppsFlowComponent {
2036
2040
  this.SetEditingApplication(Guid.CreateRaw());
2037
2041
  }
2038
2042
  DeleteApplication(appLookup, appName) {
2039
- if (confirm(`Are you sure you want to delete application '${appName}'?`)) {
2040
- this.appsFlowEventsSvc.DeleteApplication(appLookup);
2041
- }
2043
+ this.eacSvc.DeleteApplication(appLookup, appName);
2042
2044
  }
2043
2045
  LCUTypeChanged(event) {
2044
2046
  this.LCUType = event.value;
@@ -2177,7 +2179,7 @@ class AppsFlowComponent {
2177
2179
  else if (app) {
2178
2180
  app.SourceControlLookup = null;
2179
2181
  }
2180
- this.appsFlowEventsSvc.SaveApplicationAsCode(saveAppReq);
2182
+ this.eacSvc.SaveApplicationAsCode(saveAppReq);
2181
2183
  }
2182
2184
  SetEditingApplication(appLookup) {
2183
2185
  this.EditingApplicationLookup = appLookup;
@@ -2197,7 +2199,7 @@ class AppsFlowComponent {
2197
2199
  }
2198
2200
  Unpack(appLookup, app) {
2199
2201
  var _a, _b, _c;
2200
- this.appsFlowEventsSvc.UnpackLowCodeUnit({
2202
+ this.eacSvc.UnpackLowCodeUnit({
2201
2203
  ApplicationLookup: appLookup,
2202
2204
  ApplicationName: (_a = app.Application) === null || _a === void 0 ? void 0 : _a.Name,
2203
2205
  Version: ((_b = app.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.Version) || ((_c = app.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.Build),
@@ -2397,7 +2399,7 @@ AppsFlowComponent.decorators = [
2397
2399
  AppsFlowComponent.ctorParameters = () => [
2398
2400
  { type: FormBuilder },
2399
2401
  { type: ApplicationsFlowService },
2400
- { type: ApplicationsFlowEventsService }
2402
+ { type: EaCService }
2401
2403
  ];
2402
2404
  AppsFlowComponent.propDecorators = {
2403
2405
  Data: [{ type: Input, args: ['data',] }],
@@ -2406,10 +2408,10 @@ AppsFlowComponent.propDecorators = {
2406
2408
 
2407
2409
  class DevOpsComponent {
2408
2410
  // Constructors
2409
- constructor(formBldr, appsFlowSvc, appsFlowEventsSvc) {
2411
+ constructor(formBldr, appsFlowSvc, eacSvc) {
2410
2412
  this.formBldr = formBldr;
2411
2413
  this.appsFlowSvc = appsFlowSvc;
2412
- this.appsFlowEventsSvc = appsFlowEventsSvc;
2414
+ this.eacSvc = eacSvc;
2413
2415
  this.EditingSourceControlLookup = null;
2414
2416
  this.HostingDetails = new ProjectHostingDetails();
2415
2417
  }
@@ -2483,7 +2485,7 @@ class DevOpsComponent {
2483
2485
  }
2484
2486
  DeleteSourceControl(scLookup) {
2485
2487
  if (confirm(`Are you sure you want to delete source control '${scLookup}'?`)) {
2486
- this.appsFlowEventsSvc.DeleteSourceControl(scLookup);
2488
+ this.eacSvc.DeleteSourceControl(scLookup);
2487
2489
  }
2488
2490
  }
2489
2491
  DevOpsActionLookupChanged(event) {
@@ -2537,7 +2539,7 @@ class DevOpsComponent {
2537
2539
  source = Object.assign(Object.assign({}, source), { Type: 'GitHub', Name: this.EditingSourceControlLookup, DevOpsActionTriggerLookups: [devOpsActionLookup], Organization: this.SourceControlFormControls.OrganizationFormControl.value, Repository: this.SourceControlFormControls.RepositoryFormControl.value });
2538
2540
  const scLookup = `github://${source.Organization}/${source.Repository}`;
2539
2541
  saveEnvReq.Environment.Sources[scLookup] = source;
2540
- this.appsFlowEventsSvc.SaveEnvironmentAsCode(saveEnvReq);
2542
+ this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
2541
2543
  }
2542
2544
  SetEditingSourceControl(scLookup) {
2543
2545
  this.EditingSourceControlLookup = scLookup;
@@ -2590,7 +2592,7 @@ DevOpsComponent.decorators = [
2590
2592
  DevOpsComponent.ctorParameters = () => [
2591
2593
  { type: FormBuilder },
2592
2594
  { type: ApplicationsFlowService },
2593
- { type: ApplicationsFlowEventsService }
2595
+ { type: EaCService }
2594
2596
  ];
2595
2597
  DevOpsComponent.propDecorators = {
2596
2598
  Data: [{ type: Input, args: ['data',] }],
@@ -2600,10 +2602,10 @@ DevOpsComponent.propDecorators = {
2600
2602
 
2601
2603
  class DFSModifiersComponent {
2602
2604
  // Constructors
2603
- constructor(formBldr, appsFlowSvc, appsFlowEventsSvc) {
2605
+ constructor(formBldr, appsFlowSvc, eacSvc) {
2604
2606
  this.formBldr = formBldr;
2605
2607
  this.appsFlowSvc = appsFlowSvc;
2606
- this.appsFlowEventsSvc = appsFlowEventsSvc;
2608
+ this.eacSvc = eacSvc;
2607
2609
  this.EditingModifierLookup = null;
2608
2610
  }
2609
2611
  get DetailsFormControl() {
@@ -2677,7 +2679,7 @@ class DFSModifiersComponent {
2677
2679
  }
2678
2680
  DeleteModifier(modifierLookup, modifierName) {
2679
2681
  if (confirm(`Are you sure you want to delete modifier '${modifierName}'?`)) {
2680
- this.appsFlowEventsSvc.DeleteSourceControl(modifierLookup);
2682
+ this.eacSvc.DeleteSourceControl(modifierLookup);
2681
2683
  }
2682
2684
  }
2683
2685
  SaveModifier(projectLookup = null) {
@@ -2700,7 +2702,7 @@ class DFSModifiersComponent {
2700
2702
  break;
2701
2703
  }
2702
2704
  saveMdfrReq.Modifier.Details = JSON.stringify(details);
2703
- this.appsFlowEventsSvc.SaveDFSModifier(saveMdfrReq);
2705
+ this.eacSvc.SaveDFSModifier(saveMdfrReq);
2704
2706
  }
2705
2707
  SetEditingModifier(modifierLookup) {
2706
2708
  this.EditingModifierLookup = modifierLookup;
@@ -2765,7 +2767,7 @@ DFSModifiersComponent.decorators = [
2765
2767
  DFSModifiersComponent.ctorParameters = () => [
2766
2768
  { type: FormBuilder },
2767
2769
  { type: ApplicationsFlowService },
2768
- { type: ApplicationsFlowEventsService }
2770
+ { type: EaCService }
2769
2771
  ];
2770
2772
  DFSModifiersComponent.propDecorators = {
2771
2773
  Data: [{ type: Input, args: ['data',] }]
@@ -2857,8 +2859,8 @@ ProjectTabsComponent.propDecorators = {
2857
2859
 
2858
2860
  class ProjectItemsComponent {
2859
2861
  // Constructors
2860
- constructor(appsFlowEventsSvc) {
2861
- this.appsFlowEventsSvc = appsFlowEventsSvc;
2862
+ constructor(eacSvc) {
2863
+ this.eacSvc = eacSvc;
2862
2864
  }
2863
2865
  // Fields
2864
2866
  // Properties
@@ -2871,7 +2873,7 @@ class ProjectItemsComponent {
2871
2873
  // API Methods
2872
2874
  DeleteProject(projectLookup, projectName) {
2873
2875
  if (confirm(`Are you sure you want to delete project '${projectName}'?`)) {
2874
- this.appsFlowEventsSvc.DeleteProject(projectLookup);
2876
+ this.eacSvc.DeleteProject(projectLookup);
2875
2877
  }
2876
2878
  }
2877
2879
  GetPrimaryHost(project) {
@@ -2884,7 +2886,7 @@ class ProjectItemsComponent {
2884
2886
  * Event to edit project settings
2885
2887
  */
2886
2888
  ProjectSettings(projectLookup) {
2887
- this.appsFlowEventsSvc.SetEditProjectSettings(projectLookup);
2889
+ this.eacSvc.SetEditProjectSettings(projectLookup);
2888
2890
  }
2889
2891
  }
2890
2892
  ProjectItemsComponent.decorators = [
@@ -2895,7 +2897,7 @@ ProjectItemsComponent.decorators = [
2895
2897
  },] }
2896
2898
  ];
2897
2899
  ProjectItemsComponent.ctorParameters = () => [
2898
- { type: ApplicationsFlowEventsService }
2900
+ { type: EaCService }
2899
2901
  ];
2900
2902
  ProjectItemsComponent.propDecorators = {
2901
2903
  Projects: [{ type: Input, args: ['projects',] }],
@@ -2903,9 +2905,7 @@ ProjectItemsComponent.propDecorators = {
2903
2905
  };
2904
2906
 
2905
2907
  class BuildsComponent {
2906
- constructor(appsFlowEventsSvc) {
2907
- this.appsFlowEventsSvc = appsFlowEventsSvc;
2908
- }
2908
+ constructor() { }
2909
2909
  ngOnInit() { }
2910
2910
  ngOnDestroy() {
2911
2911
  }
@@ -2924,9 +2924,7 @@ BuildsComponent.decorators = [
2924
2924
  styles: ["@import url(\"https://fonts.googleapis.com/icon?family=Material+Icons\");@import url(\"https://fonts.googleapis.com/css?family=Encode+Sans+Condensed:400,900&display=swap\");@import url(\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&display=swap\");.disable-autofill-background-default input:-webkit-autofill,.disable-autofill-background-default input:-webkit-autofill:focus,.disable-autofill-background-default input:-webkit-autofill:hover,.disable-autofill-background-default select:-webkit-autofill,.disable-autofill-background-default select:-webkit-autofill:focus,.disable-autofill-background-default select:-webkit-autofill:hover,.disable-autofill-background-default textarea:-webkit-autofill,.disable-autofill-background-default textarea:-webkit-autofill:focus,.disable-autofill-background-default textarea:-webkit-autofill:hover{-webkit-transition:background-color 5000s!important;transition:background-color 5000s!important}.list-item-disabled{cursor:not-allowed!important;filter:alpha(opacity=50);opacity:.5}.filler{display:inline-block!important;flex:1 1 auto}.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:750}.inline{display:inline-block}.contents,.page-element{display:contents}.mat-spinner{margin:auto}.mat-full-width{width:100%}.spread{margin:2rem}.spread-thin{margin:1rem}.overlay{position:-webkit-sticky!important;position:sticky!important}.overlay.top{top:0}.overlay.bottom{bottom:0}.margin-0{margin:0!important}.margin-top-0,.margin-y-0{margin-top:0!important}.margin-right-0,.margin-x-0{margin-right:0!important}.margin-bottom-0,.margin-y-0{margin-bottom:0!important}.margin-left-0,.margin-x-0{margin-left:0!important}.margin-1{margin:.25rem!important}.margin-top-1,.margin-y-1{margin-top:.25rem!important}.margin-right-1,.margin-x-1{margin-right:.25rem!important}.margin-bottom-1,.margin-y-1{margin-bottom:.25rem!important}.margin-left-1,.margin-x-1{margin-left:.25rem!important}.margin-2{margin:.5rem!important}.margin-top-2,.margin-y-2{margin-top:.5rem!important}.margin-right-2,.margin-x-2{margin-right:.5rem!important}.margin-bottom-2,.margin-y-2{margin-bottom:.5rem!important}.margin-left-2,.margin-x-2{margin-left:.5rem!important}.margin-3{margin:1rem!important}.margin-top-3,.margin-y-3{margin-top:1rem!important}.margin-top-bottom-3{margin:1rem 0!important}.margin-right-3,.margin-x-3{margin-right:1rem!important}.margin-bottom-3,.margin-y-3{margin-bottom:1rem!important}.margin-left-3,.margin-x-3{margin-left:1rem!important}.margin-4{margin:2rem!important}.margin-top-4,.margin-y-4{margin-top:2rem!important}.margin-right-4,.margin-x-4{margin-right:2rem!important}.margin-bottom-4,.margin-y-4{margin-bottom:2rem!important}.margin-left-4,.margin-x-4{margin-left:2rem!important}.margin-right-5,.margin-x-5{margin-right:4rem!important}.margin-bottom-5,.margin-y-5{margin-bottom:4rem!important}.margin-left-5,.margin-x-5{margin-left:4rem!important}.margin-5{margin:4rem!important}.margin-top-5,.margin-y-5{margin-top:4rem!important}.margin-right-6,.margin-x-6{margin-right:4.5rem!important}.margin-bottom-6,.margin-y-6{margin-bottom:4.5rem!important}.margin-left-6,.margin-x-6{margin-left:4.5rem!important}.margin-7{margin:6rem!important}.margin-top-7,.margin-y-7{margin-top:6rem!important}.margin-right-7,.margin-x-7{margin-right:6rem!important}.margin-bottom-7,.margin-y-7{margin-bottom:6rem!important}.margin-left-7,.margin-x-7{margin-left:6rem!important}.margin-8{margin:7.5rem!important}.margin-top-8,.margin-y-8{margin-top:7.5rem!important}.margin-right-8,.margin-x-8{margin-right:7.5rem!important}.margin-bottom-8,.margin-y-8{margin-bottom:7.5rem!important}.margin-left-8,.margin-x-8{margin-left:7.5rem!important}.margin-9{margin:9rem!important}.margin-top-9,.margin-y-9{margin-top:9rem!important}.margin-right-9,.margin-x-9{margin-right:9rem!important}.margin-bottom-9,.margin-y-9{margin-bottom:9rem!important}.margin-left-9,.margin-x-9{margin-left:9rem!important}.padding-0{padding:0!important}.padding-top-0,.padding-y-0{padding-top:0!important}.padding-right-0,.padding-x-0{padding-right:0!important}.padding-bottom-0,.padding-y-0{padding-bottom:0!important}.padding-left-0,.padding-x-0{padding-left:0!important}.padding-1{padding:.25rem!important}.padding-top-1,.padding-y-1{padding-top:.25rem!important}.padding-right-1,.padding-x-1{padding-right:.25rem!important}.padding-bottom-1,.padding-y-1{padding-bottom:.25rem!important}.padding-left-1,.padding-x-1{padding-left:.25rem!important}.padding-2{padding:.5rem!important}.padding-top-2,.padding-y-2{padding-top:.5rem!important}.padding-right-2,.padding-x-2{padding-right:.5rem!important}.padding-bottom-2,.padding-y-2{padding-bottom:.5rem!important}.padding-left-2,.padding-x-2{padding-left:.5rem!important}.padding-3{padding:1rem!important}.padding-top-3,.padding-y-3{padding-top:1rem!important}.padding-right-3,.padding-x-3{padding-right:1rem!important}.padding-bottom-3,.padding-y-3{padding-bottom:1rem!important}.padding-left-3,.padding-x-3{padding-left:1rem!important}.padding-4{padding:2rem!important}.padding-top-4,.padding-y-4{padding-top:2rem!important}.padding-right-4,.padding-x-4{padding-right:2rem!important}.padding-bottom-4,.padding-y-4{padding-bottom:2rem!important}.padding-left-4,.padding-x-4{padding-left:2rem!important}.padding-5{padding:4rem!important}.padding-top-5,.padding-y-5{padding-top:4rem!important}.padding-right-5,.padding-x-5{padding-right:4rem!important}.padding-bottom-5,.padding-y-5{padding-bottom:4rem!important}.padding-left-5,.padding-x-5{padding-left:4rem!important}.margin-n1{margin:-.25rem!important}.margin-top-n1,.margin-y-n1{margin-top:-.25rem!important}.margin-right-n1,.margin-x-n1{margin-right:-.25rem!important}.margin-bottom-n1,.margin-y-n1{margin-bottom:-.25rem!important}.margin-left-n1,.margin-x-n1{margin-left:-.25rem!important}.margin-n2{margin:-.5rem!important}.margin-top-n2,.margin-y-n2{margin-top:-.5rem!important}.margin-right-n2,.margin-x-n2{margin-right:-.5rem!important}.margin-bottom-n2,.margin-y-n2{margin-bottom:-.5rem!important}.margin-left-n2,.margin-x-n2{margin-left:-.5rem!important}.margin-n3{margin:-1rem!important}.margin-top-n3,.margin-y-n3{margin-top:-1rem!important}.margin-right-n3,.margin-x-n3{margin-right:-1rem!important}.margin-bottom-n3,.margin-y-n3{margin-bottom:-1rem!important}.margin-left-n3,.margin-x-n3{margin-left:-1rem!important}.margin-n4{margin:-2rem!important}.margin-top-n4,.margin-y-n4{margin-top:-2rem!important}.margin-right-n4,.margin-x-n4{margin-right:-2rem!important}.margin-bottom-n4,.margin-y-n4{margin-bottom:-2rem!important}.margin-left-n4,.margin-x-n4{margin-left:-2rem!important}.margin-n5{margin:-4rem!important}.margin-top-n5,.margin-y-n5{margin-top:-4rem!important}.margin-right-n5,.margin-x-n5{margin-right:-4rem!important}.margin-bottom-n5,.margin-y-n5{margin-bottom:-4rem!important}.margin-left-n5,.margin-x-n5{margin-left:-4rem!important}.margin-auto{margin:auto!important}.margin-top-auto,.margin-y-auto{margin-top:auto!important}.margin-right-auto,.margin-x-auto{margin-right:auto!important}.margin-bottom-auto,.margin-y-auto{margin-bottom:auto!important}.margin-left-auto,.margin-x-auto{margin-left:auto!important}@media (min-width:576px){.margin-sm-0{margin:0!important}.margin-top-sm-0,.margin-y-sm-0{margin-top:0!important}.margin-right-sm-0,.margin-x-sm-0{margin-right:0!important}.margin-bottom-sm-0,.margin-y-sm-0{margin-bottom:0!important}.margin-left-sm-0,.margin-x-sm-0{margin-left:0!important}.margin-sm-1{margin:.25rem!important}.margin-top-sm-1,.margin-y-sm-1{margin-top:.25rem!important}.margin-right-sm-1,.margin-x-sm-1{margin-right:.25rem!important}.margin-bottom-sm-1,.margin-y-sm-1{margin-bottom:.25rem!important}.margin-left-sm-1,.margin-x-sm-1{margin-left:.25rem!important}.margin-sm-2{margin:.5rem!important}.margin-top-sm-2,.margin-y-sm-2{margin-top:.5rem!important}.margin-right-sm-2,.margin-x-sm-2{margin-right:.5rem!important}.margin-bottom-sm-2,.margin-y-sm-2{margin-bottom:.5rem!important}.margin-left-sm-2,.margin-x-sm-2{margin-left:.5rem!important}.margin-sm-3{margin:1rem!important}.margin-top-sm-3,.margin-y-sm-3{margin-top:1rem!important}.margin-right-sm-3,.margin-x-sm-3{margin-right:1rem!important}.margin-bottom-sm-3,.margin-y-sm-3{margin-bottom:1rem!important}.margin-left-sm-3,.margin-x-sm-3{margin-left:1rem!important}.margin-sm-4{margin:2rem!important}.margin-top-sm-4,.margin-y-sm-4{margin-top:2rem!important}.margin-right-sm-4,.margin-x-sm-4{margin-right:2rem!important}.margin-bottom-sm-4,.margin-y-sm-4{margin-bottom:2rem!important}.margin-left-sm-4,.margin-x-sm-4{margin-left:2rem!important}.margin-sm-5{margin:4rem!important}.margin-top-sm-5,.margin-y-sm-5{margin-top:4rem!important}.margin-right-sm-5,.margin-x-sm-5{margin-right:4rem!important}.margin-bottom-sm-5,.margin-y-sm-5{margin-bottom:4rem!important}.margin-left-sm-5,.margin-x-sm-5{margin-left:4rem!important}.padding-sm-0{padding:0!important}.padding-top-sm-0,.padding-y-sm-0{padding-top:0!important}.padding-right-sm-0,.padding-x-sm-0{padding-right:0!important}.padding-bottom-sm-0,.padding-y-sm-0{padding-bottom:0!important}.padding-left-sm-0,.padding-x-sm-0{padding-left:0!important}.padding-sm-1{padding:.25rem!important}.padding-top-sm-1,.padding-y-sm-1{padding-top:.25rem!important}.padding-right-sm-1,.padding-x-sm-1{padding-right:.25rem!important}.padding-bottom-sm-1,.padding-y-sm-1{padding-bottom:.25rem!important}.padding-left-sm-1,.padding-x-sm-1{padding-left:.25rem!important}.padding-sm-2{padding:.5rem!important}.padding-top-sm-2,.padding-y-sm-2{padding-top:.5rem!important}.padding-right-sm-2,.padding-x-sm-2{padding-right:.5rem!important}.padding-bottom-sm-2,.padding-y-sm-2{padding-bottom:.5rem!important}.padding-left-sm-2,.padding-x-sm-2{padding-left:.5rem!important}.padding-sm-3{padding:1rem!important}.padding-top-sm-3,.padding-y-sm-3{padding-top:1rem!important}.padding-right-sm-3,.padding-x-sm-3{padding-right:1rem!important}.padding-bottom-sm-3,.padding-y-sm-3{padding-bottom:1rem!important}.padding-left-sm-3,.padding-x-sm-3{padding-left:1rem!important}.padding-sm-4{padding:2rem!important}.padding-top-sm-4,.padding-y-sm-4{padding-top:2rem!important}.padding-right-sm-4,.padding-x-sm-4{padding-right:2rem!important}.padding-bottom-sm-4,.padding-y-sm-4{padding-bottom:2rem!important}.padding-left-sm-4,.padding-x-sm-4{padding-left:2rem!important}.padding-sm-5{padding:4rem!important}.padding-top-sm-5,.padding-y-sm-5{padding-top:4rem!important}.padding-right-sm-5,.padding-x-sm-5{padding-right:4rem!important}.padding-bottom-sm-5,.padding-y-sm-5{padding-bottom:4rem!important}.padding-left-sm-5,.padding-x-sm-5{padding-left:4rem!important}.margin-sm-n1{margin:-.25rem!important}.margin-top-sm-n1,.margin-y-sm-n1{margin-top:-.25rem!important}.margin-right-sm-n1,.margin-x-sm-n1{margin-right:-.25rem!important}.margin-bottom-sm-n1,.margin-y-sm-n1{margin-bottom:-.25rem!important}.margin-left-sm-n1,.margin-x-sm-n1{margin-left:-.25rem!important}.margin-sm-n2{margin:-.5rem!important}.margin-top-sm-n2,.margin-y-sm-n2{margin-top:-.5rem!important}.margin-right-sm-n2,.margin-x-sm-n2{margin-right:-.5rem!important}.margin-bottom-sm-n2,.margin-y-sm-n2{margin-bottom:-.5rem!important}.margin-left-sm-n2,.margin-x-sm-n2{margin-left:-.5rem!important}.margin-sm-n3{margin:-1rem!important}.margin-top-sm-n3,.margin-y-sm-n3{margin-top:-1rem!important}.margin-right-sm-n3,.margin-x-sm-n3{margin-right:-1rem!important}.margin-bottom-sm-n3,.margin-y-sm-n3{margin-bottom:-1rem!important}.margin-left-sm-n3,.margin-x-sm-n3{margin-left:-1rem!important}.margin-sm-n4{margin:-2rem!important}.margin-top-sm-n4,.margin-y-sm-n4{margin-top:-2rem!important}.margin-right-sm-n4,.margin-x-sm-n4{margin-right:-2rem!important}.margin-bottom-sm-n4,.margin-y-sm-n4{margin-bottom:-2rem!important}.margin-left-sm-n4,.margin-x-sm-n4{margin-left:-2rem!important}.margin-sm-n5{margin:-4rem!important}.margin-top-sm-n5,.margin-y-sm-n5{margin-top:-4rem!important}.margin-right-sm-n5,.margin-x-sm-n5{margin-right:-4rem!important}.margin-bottom-sm-n5,.margin-y-sm-n5{margin-bottom:-4rem!important}.margin-left-sm-n5,.margin-x-sm-n5{margin-left:-4rem!important}.margin-sm-auto{margin:auto!important}.margin-top-sm-auto,.margin-y-sm-auto{margin-top:auto!important}.margin-right-sm-auto,.margin-x-sm-auto{margin-right:auto!important}.margin-bottom-sm-auto,.margin-y-sm-auto{margin-bottom:auto!important}.margin-left-sm-auto,.margin-x-sm-auto{margin-left:auto!important}}@media (min-width:768px){.margin-md-0{margin:0!important}.margin-top-md-0,.margin-y-md-0{margin-top:0!important}.margin-right-md-0,.margin-x-md-0{margin-right:0!important}.margin-bottom-md-0,.margin-y-md-0{margin-bottom:0!important}.margin-left-md-0,.margin-x-md-0{margin-left:0!important}.margin-md-1{margin:.25rem!important}.margin-top-md-1,.margin-y-md-1{margin-top:.25rem!important}.margin-right-md-1,.margin-x-md-1{margin-right:.25rem!important}.margin-bottom-md-1,.margin-y-md-1{margin-bottom:.25rem!important}.margin-left-md-1,.margin-x-md-1{margin-left:.25rem!important}.margin-md-2{margin:.5rem!important}.margin-top-md-2,.margin-y-md-2{margin-top:.5rem!important}.margin-right-md-2,.margin-x-md-2{margin-right:.5rem!important}.margin-bottom-md-2,.margin-y-md-2{margin-bottom:.5rem!important}.margin-left-md-2,.margin-x-md-2{margin-left:.5rem!important}.margin-md-3{margin:1rem!important}.margin-top-md-3,.margin-y-md-3{margin-top:1rem!important}.margin-right-md-3,.margin-x-md-3{margin-right:1rem!important}.margin-bottom-md-3,.margin-y-md-3{margin-bottom:1rem!important}.margin-left-md-3,.margin-x-md-3{margin-left:1rem!important}.margin-md-4{margin:2rem!important}.margin-top-md-4,.margin-y-md-4{margin-top:2rem!important}.margin-right-md-4,.margin-x-md-4{margin-right:2rem!important}.margin-bottom-md-4,.margin-y-md-4{margin-bottom:2rem!important}.margin-left-md-4,.margin-x-md-4{margin-left:2rem!important}.margin-md-5{margin:4rem!important}.margin-top-md-5,.margin-y-md-5{margin-top:4rem!important}.margin-right-md-5,.margin-x-md-5{margin-right:4rem!important}.margin-bottom-md-5,.margin-y-md-5{margin-bottom:4rem!important}.margin-left-md-5,.margin-x-md-5{margin-left:4rem!important}.padding-md-0{padding:0!important}.padding-top-md-0,.padding-y-md-0{padding-top:0!important}.padding-right-md-0,.padding-x-md-0{padding-right:0!important}.padding-bottom-md-0,.padding-y-md-0{padding-bottom:0!important}.padding-left-md-0,.padding-x-md-0{padding-left:0!important}.padding-md-1{padding:.25rem!important}.padding-top-md-1,.padding-y-md-1{padding-top:.25rem!important}.padding-right-md-1,.padding-x-md-1{padding-right:.25rem!important}.padding-bottom-md-1,.padding-y-md-1{padding-bottom:.25rem!important}.padding-left-md-1,.padding-x-md-1{padding-left:.25rem!important}.padding-md-2{padding:.5rem!important}.padding-top-md-2,.padding-y-md-2{padding-top:.5rem!important}.padding-right-md-2,.padding-x-md-2{padding-right:.5rem!important}.padding-bottom-md-2,.padding-y-md-2{padding-bottom:.5rem!important}.padding-left-md-2,.padding-x-md-2{padding-left:.5rem!important}.padding-md-3{padding:1rem!important}.padding-top-md-3,.padding-y-md-3{padding-top:1rem!important}.padding-right-md-3,.padding-x-md-3{padding-right:1rem!important}.padding-bottom-md-3,.padding-y-md-3{padding-bottom:1rem!important}.padding-left-md-3,.padding-x-md-3{padding-left:1rem!important}.padding-md-4{padding:2rem!important}.padding-top-md-4,.padding-y-md-4{padding-top:2rem!important}.padding-right-md-4,.padding-x-md-4{padding-right:2rem!important}.padding-bottom-md-4,.padding-y-md-4{padding-bottom:2rem!important}.padding-left-md-4,.padding-x-md-4{padding-left:2rem!important}.padding-md-5{padding:4rem!important}.padding-top-md-5,.padding-y-md-5{padding-top:4rem!important}.padding-right-md-5,.padding-x-md-5{padding-right:4rem!important}.padding-bottom-md-5,.padding-y-md-5{padding-bottom:4rem!important}.padding-left-md-5,.padding-x-md-5{padding-left:4rem!important}.margin-md-n1{margin:-.25rem!important}.margin-top-md-n1,.margin-y-md-n1{margin-top:-.25rem!important}.margin-right-md-n1,.margin-x-md-n1{margin-right:-.25rem!important}.margin-bottom-md-n1,.margin-y-md-n1{margin-bottom:-.25rem!important}.margin-left-md-n1,.margin-x-md-n1{margin-left:-.25rem!important}.margin-md-n2{margin:-.5rem!important}.margin-top-md-n2,.margin-y-md-n2{margin-top:-.5rem!important}.margin-right-md-n2,.margin-x-md-n2{margin-right:-.5rem!important}.margin-bottom-md-n2,.margin-y-md-n2{margin-bottom:-.5rem!important}.margin-left-md-n2,.margin-x-md-n2{margin-left:-.5rem!important}.margin-md-n3{margin:-1rem!important}.margin-top-md-n3,.margin-y-md-n3{margin-top:-1rem!important}.margin-right-md-n3,.margin-x-md-n3{margin-right:-1rem!important}.margin-bottom-md-n3,.margin-y-md-n3{margin-bottom:-1rem!important}.margin-left-md-n3,.margin-x-md-n3{margin-left:-1rem!important}.margin-md-n4{margin:-2rem!important}.margin-top-md-n4,.margin-y-md-n4{margin-top:-2rem!important}.margin-right-md-n4,.margin-x-md-n4{margin-right:-2rem!important}.margin-bottom-md-n4,.margin-y-md-n4{margin-bottom:-2rem!important}.margin-left-md-n4,.margin-x-md-n4{margin-left:-2rem!important}.margin-md-n5{margin:-4rem!important}.margin-top-md-n5,.margin-y-md-n5{margin-top:-4rem!important}.margin-right-md-n5,.margin-x-md-n5{margin-right:-4rem!important}.margin-bottom-md-n5,.margin-y-md-n5{margin-bottom:-4rem!important}.margin-left-md-n5,.margin-x-md-n5{margin-left:-4rem!important}.margin-md-auto{margin:auto!important}.margin-top-md-auto,.margin-y-md-auto{margin-top:auto!important}.margin-right-md-auto,.margin-x-md-auto{margin-right:auto!important}.margin-bottom-md-auto,.margin-y-md-auto{margin-bottom:auto!important}.margin-left-md-auto,.margin-x-md-auto{margin-left:auto!important}}@media (min-width:992px){.margin-lg-0{margin:0!important}.margin-top-lg-0,.margin-y-lg-0{margin-top:0!important}.margin-right-lg-0,.margin-x-lg-0{margin-right:0!important}.margin-bottom-lg-0,.margin-y-lg-0{margin-bottom:0!important}.margin-left-lg-0,.margin-x-lg-0{margin-left:0!important}.margin-lg-1{margin:.25rem!important}.margin-top-lg-1,.margin-y-lg-1{margin-top:.25rem!important}.margin-right-lg-1,.margin-x-lg-1{margin-right:.25rem!important}.margin-bottom-lg-1,.margin-y-lg-1{margin-bottom:.25rem!important}.margin-left-lg-1,.margin-x-lg-1{margin-left:.25rem!important}.margin-lg-2{margin:.5rem!important}.margin-top-lg-2,.margin-y-lg-2{margin-top:.5rem!important}.margin-right-lg-2,.margin-x-lg-2{margin-right:.5rem!important}.margin-bottom-lg-2,.margin-y-lg-2{margin-bottom:.5rem!important}.margin-left-lg-2,.margin-x-lg-2{margin-left:.5rem!important}.margin-lg-3{margin:1rem!important}.margin-top-lg-3,.margin-y-lg-3{margin-top:1rem!important}.margin-right-lg-3,.margin-x-lg-3{margin-right:1rem!important}.margin-bottom-lg-3,.margin-y-lg-3{margin-bottom:1rem!important}.margin-left-lg-3,.margin-x-lg-3{margin-left:1rem!important}.margin-lg-4{margin:2rem!important}.margin-top-lg-4,.margin-y-lg-4{margin-top:2rem!important}.margin-right-lg-4,.margin-x-lg-4{margin-right:2rem!important}.margin-bottom-lg-4,.margin-y-lg-4{margin-bottom:2rem!important}.margin-left-lg-4,.margin-x-lg-4{margin-left:2rem!important}.margin-lg-5{margin:4rem!important}.margin-top-lg-5,.margin-y-lg-5{margin-top:4rem!important}.margin-right-lg-5,.margin-x-lg-5{margin-right:4rem!important}.margin-bottom-lg-5,.margin-y-lg-5{margin-bottom:4rem!important}.margin-left-lg-5,.margin-x-lg-5{margin-left:4rem!important}.padding-lg-0{padding:0!important}.padding-top-lg-0,.padding-y-lg-0{padding-top:0!important}.padding-right-lg-0,.padding-x-lg-0{padding-right:0!important}.padding-bottom-lg-0,.padding-y-lg-0{padding-bottom:0!important}.padding-left-lg-0,.padding-x-lg-0{padding-left:0!important}.padding-lg-1{padding:.25rem!important}.padding-top-lg-1,.padding-y-lg-1{padding-top:.25rem!important}.padding-right-lg-1,.padding-x-lg-1{padding-right:.25rem!important}.padding-bottom-lg-1,.padding-y-lg-1{padding-bottom:.25rem!important}.padding-left-lg-1,.padding-x-lg-1{padding-left:.25rem!important}.padding-lg-2{padding:.5rem!important}.padding-top-lg-2,.padding-y-lg-2{padding-top:.5rem!important}.padding-right-lg-2,.padding-x-lg-2{padding-right:.5rem!important}.padding-bottom-lg-2,.padding-y-lg-2{padding-bottom:.5rem!important}.padding-left-lg-2,.padding-x-lg-2{padding-left:.5rem!important}.padding-lg-3{padding:1rem!important}.padding-top-lg-3,.padding-y-lg-3{padding-top:1rem!important}.padding-right-lg-3,.padding-x-lg-3{padding-right:1rem!important}.padding-bottom-lg-3,.padding-y-lg-3{padding-bottom:1rem!important}.padding-left-lg-3,.padding-x-lg-3{padding-left:1rem!important}.padding-lg-4{padding:2rem!important}.padding-top-lg-4,.padding-y-lg-4{padding-top:2rem!important}.padding-right-lg-4,.padding-x-lg-4{padding-right:2rem!important}.padding-bottom-lg-4,.padding-y-lg-4{padding-bottom:2rem!important}.padding-left-lg-4,.padding-x-lg-4{padding-left:2rem!important}.padding-lg-5{padding:4rem!important}.padding-top-lg-5,.padding-y-lg-5{padding-top:4rem!important}.padding-right-lg-5,.padding-x-lg-5{padding-right:4rem!important}.padding-bottom-lg-5,.padding-y-lg-5{padding-bottom:4rem!important}.padding-left-lg-5,.padding-x-lg-5{padding-left:4rem!important}.margin-lg-n1{margin:-.25rem!important}.margin-top-lg-n1,.margin-y-lg-n1{margin-top:-.25rem!important}.margin-right-lg-n1,.margin-x-lg-n1{margin-right:-.25rem!important}.margin-bottom-lg-n1,.margin-y-lg-n1{margin-bottom:-.25rem!important}.margin-left-lg-n1,.margin-x-lg-n1{margin-left:-.25rem!important}.margin-lg-n2{margin:-.5rem!important}.margin-top-lg-n2,.margin-y-lg-n2{margin-top:-.5rem!important}.margin-right-lg-n2,.margin-x-lg-n2{margin-right:-.5rem!important}.margin-bottom-lg-n2,.margin-y-lg-n2{margin-bottom:-.5rem!important}.margin-left-lg-n2,.margin-x-lg-n2{margin-left:-.5rem!important}.margin-lg-n3{margin:-1rem!important}.margin-top-lg-n3,.margin-y-lg-n3{margin-top:-1rem!important}.margin-right-lg-n3,.margin-x-lg-n3{margin-right:-1rem!important}.margin-bottom-lg-n3,.margin-y-lg-n3{margin-bottom:-1rem!important}.margin-left-lg-n3,.margin-x-lg-n3{margin-left:-1rem!important}.margin-lg-n4{margin:-2rem!important}.margin-top-lg-n4,.margin-y-lg-n4{margin-top:-2rem!important}.margin-right-lg-n4,.margin-x-lg-n4{margin-right:-2rem!important}.margin-bottom-lg-n4,.margin-y-lg-n4{margin-bottom:-2rem!important}.margin-left-lg-n4,.margin-x-lg-n4{margin-left:-2rem!important}.margin-lg-n5{margin:-4rem!important}.margin-top-lg-n5,.margin-y-lg-n5{margin-top:-4rem!important}.margin-right-lg-n5,.margin-x-lg-n5{margin-right:-4rem!important}.margin-bottom-lg-n5,.margin-y-lg-n5{margin-bottom:-4rem!important}.margin-left-lg-n5,.margin-x-lg-n5{margin-left:-4rem!important}.margin-lg-auto{margin:auto!important}.margin-top-lg-auto,.margin-y-lg-auto{margin-top:auto!important}.margin-right-lg-auto,.margin-x-lg-auto{margin-right:auto!important}.margin-bottom-lg-auto,.margin-y-lg-auto{margin-bottom:auto!important}.margin-left-lg-auto,.margin-x-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.margin-xl-0{margin:0!important}.margin-top-xl-0,.margin-y-xl-0{margin-top:0!important}.margin-right-xl-0,.margin-x-xl-0{margin-right:0!important}.margin-bottom-xl-0,.margin-y-xl-0{margin-bottom:0!important}.margin-left-xl-0,.margin-x-xl-0{margin-left:0!important}.margin-xl-1{margin:.25rem!important}.margin-top-xl-1,.margin-y-xl-1{margin-top:.25rem!important}.margin-right-xl-1,.margin-x-xl-1{margin-right:.25rem!important}.margin-bottom-xl-1,.margin-y-xl-1{margin-bottom:.25rem!important}.margin-left-xl-1,.margin-x-xl-1{margin-left:.25rem!important}.margin-xl-2{margin:.5rem!important}.margin-top-xl-2,.margin-y-xl-2{margin-top:.5rem!important}.margin-right-xl-2,.margin-x-xl-2{margin-right:.5rem!important}.margin-bottom-xl-2,.margin-y-xl-2{margin-bottom:.5rem!important}.margin-left-xl-2,.margin-x-xl-2{margin-left:.5rem!important}.margin-xl-3{margin:1rem!important}.margin-top-xl-3,.margin-y-xl-3{margin-top:1rem!important}.margin-right-xl-3,.margin-x-xl-3{margin-right:1rem!important}.margin-bottom-xl-3,.margin-y-xl-3{margin-bottom:1rem!important}.margin-left-xl-3,.margin-x-xl-3{margin-left:1rem!important}.margin-xl-4{margin:2rem!important}.margin-top-xl-4,.margin-y-xl-4{margin-top:2rem!important}.margin-right-xl-4,.margin-x-xl-4{margin-right:2rem!important}.margin-bottom-xl-4,.margin-y-xl-4{margin-bottom:2rem!important}.margin-left-xl-4,.margin-x-xl-4{margin-left:2rem!important}.margin-xl-5{margin:4rem!important}.margin-top-xl-5,.margin-y-xl-5{margin-top:4rem!important}.margin-right-xl-5,.margin-x-xl-5{margin-right:4rem!important}.margin-bottom-xl-5,.margin-y-xl-5{margin-bottom:4rem!important}.margin-left-xl-5,.margin-x-xl-5{margin-left:4rem!important}.padding-xl-0{padding:0!important}.padding-top-xl-0,.padding-y-xl-0{padding-top:0!important}.padding-right-xl-0,.padding-x-xl-0{padding-right:0!important}.padding-bottom-xl-0,.padding-y-xl-0{padding-bottom:0!important}.padding-left-xl-0,.padding-x-xl-0{padding-left:0!important}.padding-xl-1{padding:.25rem!important}.padding-top-xl-1,.padding-y-xl-1{padding-top:.25rem!important}.padding-right-xl-1,.padding-x-xl-1{padding-right:.25rem!important}.padding-bottom-xl-1,.padding-y-xl-1{padding-bottom:.25rem!important}.padding-left-xl-1,.padding-x-xl-1{padding-left:.25rem!important}.padding-xl-2{padding:.5rem!important}.padding-top-xl-2,.padding-y-xl-2{padding-top:.5rem!important}.padding-right-xl-2,.padding-x-xl-2{padding-right:.5rem!important}.padding-bottom-xl-2,.padding-y-xl-2{padding-bottom:.5rem!important}.padding-left-xl-2,.padding-x-xl-2{padding-left:.5rem!important}.padding-xl-3{padding:1rem!important}.padding-top-xl-3,.padding-y-xl-3{padding-top:1rem!important}.padding-right-xl-3,.padding-x-xl-3{padding-right:1rem!important}.padding-bottom-xl-3,.padding-y-xl-3{padding-bottom:1rem!important}.padding-left-xl-3,.padding-x-xl-3{padding-left:1rem!important}.padding-xl-4{padding:2rem!important}.padding-top-xl-4,.padding-y-xl-4{padding-top:2rem!important}.padding-right-xl-4,.padding-x-xl-4{padding-right:2rem!important}.padding-bottom-xl-4,.padding-y-xl-4{padding-bottom:2rem!important}.padding-left-xl-4,.padding-x-xl-4{padding-left:2rem!important}.padding-xl-5{padding:4rem!important}.padding-top-xl-5,.padding-y-xl-5{padding-top:4rem!important}.padding-right-xl-5,.padding-x-xl-5{padding-right:4rem!important}.padding-bottom-xl-5,.padding-y-xl-5{padding-bottom:4rem!important}.padding-left-xl-5,.padding-x-xl-5{padding-left:4rem!important}.margin-xl-n1{margin:-.25rem!important}.margin-top-xl-n1,.margin-y-xl-n1{margin-top:-.25rem!important}.margin-right-xl-n1,.margin-x-xl-n1{margin-right:-.25rem!important}.margin-bottom-xl-n1,.margin-y-xl-n1{margin-bottom:-.25rem!important}.margin-left-xl-n1,.margin-x-xl-n1{margin-left:-.25rem!important}.margin-xl-n2{margin:-.5rem!important}.margin-top-xl-n2,.margin-y-xl-n2{margin-top:-.5rem!important}.margin-right-xl-n2,.margin-x-xl-n2{margin-right:-.5rem!important}.margin-bottom-xl-n2,.margin-y-xl-n2{margin-bottom:-.5rem!important}.margin-left-xl-n2,.margin-x-xl-n2{margin-left:-.5rem!important}.margin-xl-n3{margin:-1rem!important}.margin-top-xl-n3,.margin-y-xl-n3{margin-top:-1rem!important}.margin-right-xl-n3,.margin-x-xl-n3{margin-right:-1rem!important}.margin-bottom-xl-n3,.margin-y-xl-n3{margin-bottom:-1rem!important}.margin-left-xl-n3,.margin-x-xl-n3{margin-left:-1rem!important}.margin-xl-n4{margin:-2rem!important}.margin-top-xl-n4,.margin-y-xl-n4{margin-top:-2rem!important}.margin-right-xl-n4,.margin-x-xl-n4{margin-right:-2rem!important}.margin-bottom-xl-n4,.margin-y-xl-n4{margin-bottom:-2rem!important}.margin-left-xl-n4,.margin-x-xl-n4{margin-left:-2rem!important}.margin-xl-n5{margin:-4rem!important}.margin-top-xl-n5,.margin-y-xl-n5{margin-top:-4rem!important}.margin-right-xl-n5,.margin-x-xl-n5{margin-right:-4rem!important}.margin-bottom-xl-n5,.margin-y-xl-n5{margin-bottom:-4rem!important}.margin-left-xl-n5,.margin-x-xl-n5{margin-left:-4rem!important}.margin-xl-auto{margin:auto!important}.margin-top-xl-auto,.margin-y-xl-auto{margin-top:auto!important}.margin-right-xl-auto,.margin-x-xl-auto{margin-right:auto!important}.margin-bottom-xl-auto,.margin-y-xl-auto{margin-bottom:auto!important}.margin-left-xl-auto,.margin-x-xl-auto{margin-left:auto!important}}.h1{font-size:2em}.h2{font-size:1.5em}.h3{font-size:1.17em}.h4{font-size:1em}.h5{font-size:.83em}.h6{font-size:.67em}.cursor-alias{cursor:alias}.cursor-all-scroll{cursor:all-scroll}.cursor-auto{cursor:auto}.cursor-cell{cursor:cell}.cursor-context-menu{cursor:context-menu}.cursor-col-resize{cursor:col-resize}.cursor-copy{cursor:copy}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-e-resize{cursor:e-resize}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:-webkit-grab;cursor:grab}.cursor-grabbing{cursor:-webkit-grabbing;cursor:grabbing}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-n-resize{cursor:n-resize}.cursor-ne-resize{cursor:ne-resize}.cursor-nesw-resize{cursor:nesw-resize}.cursor-ns-resize{cursor:ns-resize}.cursor-nw-resize{cursor:nw-resize}.cursor-nwse-resize{cursor:nwse-resize}.cursor-no-drop{cursor:no-drop}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.cursor-row-resize{cursor:row-resize}.cursor-s-resize{cursor:s-resize}.cursor-se-resize{cursor:se-resize}.cursor-sw-resize{cursor:sw-resize}.cursor-text{cursor:text}.cursor-w-resize{cursor:w-resize}.cursor-wait{cursor:wait}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.mat-tooltip{font-size:15px!important}body,html{height:100%}body{font-family:opens sans regular,sans-serif;margin:0;padding:0}iframe{border:none}.mat-badge-content{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;font-weight:600}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,Helvetica Neue,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,Helvetica Neue,sans-serif;margin:0 0 12px}.mat-body-2,.mat-body-strong{font:500 14px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-body-1 p,.mat-body p,.mat-typography p{margin:0 0 12px}.mat-caption,.mat-small{font:400 12px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.05em;margin:0 0 56px}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.02em;margin:0 0 64px}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Roboto,Helvetica Neue,sans-serif;letter-spacing:-.005em;margin:0 0 64px}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-bottom-sheet-container{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-button,.mat-fab,.mat-flat-button,.mat-icon-button,.mat-mini-fab,.mat-raised-button,.mat-stroked-button{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500}.mat-button-toggle,.mat-card{font-family:Roboto,Helvetica Neue,sans-serif}.mat-card-title{font-size:24px;font-weight:500}.mat-card-header .mat-card-title{font-size:20px}.mat-card-content,.mat-card-subtitle{font-size:14px}.mat-checkbox{font-family:Roboto,Helvetica Neue,sans-serif}.mat-checkbox-layout .mat-checkbox-label{line-height:24px}.mat-chip{font-size:14px;font-weight:500}.mat-chip .mat-chip-remove.mat-icon,.mat-chip .mat-chip-trailing-icon.mat-icon{font-size:18px}.mat-table{font-family:Roboto,Helvetica Neue,sans-serif}.mat-header-cell{font-size:12px;font-weight:500}.mat-cell,.mat-footer-cell{font-size:14px}.mat-calendar{font-family:Roboto,Helvetica Neue,sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-dialog-title{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-expansion-panel-header{font-family:Roboto,Helvetica Neue,sans-serif;font-size:15px;font-weight:400}.mat-expansion-panel-content{font:400 14px/20px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-form-field{font-family:Roboto,Helvetica Neue,sans-serif;font-size:inherit;font-weight:400;letter-spacing:normal;line-height:1.125}.mat-form-field-wrapper{padding-bottom:1.34375em}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{font-size:150%;line-height:1.125}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{height:1.125em;line-height:1.125}.mat-form-field-infix{border-top:.84375em solid transparent;padding:.5em 0}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34375em) scale(.75);width:133.3333333333%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34374em) scale(.75);width:133.3333433333%}.mat-form-field-label-wrapper{padding-top:.84375em;top:-.84375em}.mat-form-field-label{top:1.34375em}.mat-form-field-underline{bottom:1.34375em}.mat-form-field-subscript-wrapper{font-size:75%;margin-top:.6666666667em;top:calc(100% - 1.79167em)}.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-infix{padding:.4375em 0}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28125em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);width:133.3333333333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28124em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00101px);width:133.3333433333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{-ms-transform:translateY(-1.28123em) scale(.75);transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00102px);width:133.3333533333%}.mat-form-field-appearance-legacy .mat-form-field-label{top:1.28125em}.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper{margin-top:.5416666667em;top:calc(100% - 1.66667em)}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28122em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28121em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.2812em) scale(.75)}}.mat-form-field-appearance-fill .mat-form-field-infix{padding:.25em 0 .75em}.mat-form-field-appearance-fill .mat-form-field-label{margin-top:-.5em;top:1.09375em}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59375em) scale(.75);width:133.3333333333%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59374em) scale(.75);width:133.3333433333%}.mat-form-field-appearance-outline .mat-form-field-infix{padding:1em 0}.mat-form-field-appearance-outline .mat-form-field-label{margin-top:-.25em;top:1.84375em}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59375em) scale(.75);width:133.3333333333%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59374em) scale(.75);width:133.3333433333%}.mat-grid-tile-footer,.mat-grid-tile-header{font-size:14px}.mat-grid-tile-footer .mat-line,.mat-grid-tile-header .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-grid-tile-footer .mat-line:nth-child(n+2),.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:12px}input.mat-input-element{margin-top:-.0625em}.mat-menu-item{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px}.mat-radio-button,.mat-select{font-family:Roboto,Helvetica Neue,sans-serif}.mat-select-trigger{height:1.125em}.mat-slide-toggle-content,.mat-slider-thumb-label-text{font-family:Roboto,Helvetica Neue,sans-serif}.mat-slider-thumb-label-text{font-size:12px;font-weight:500}.mat-stepper-horizontal,.mat-stepper-vertical{font-family:Roboto,Helvetica Neue,sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:400}.mat-step-label-error{font-size:14px}.mat-step-label-selected{font-size:14px;font-weight:500}.mat-tab-group,.mat-tab-label,.mat-tab-link{font-family:Roboto,Helvetica Neue,sans-serif}.mat-tab-label,.mat-tab-link{font-size:14px;font-weight:500}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;margin:0}.mat-tooltip{font-family:Roboto,Helvetica Neue,sans-serif;font-size:10px;padding-bottom:6px;padding-top:6px}.mat-tooltip-handset{font-size:14px;padding-bottom:8px;padding-top:8px}.mat-list-item,.mat-list-option{font-family:Roboto,Helvetica Neue,sans-serif}.mat-list-base .mat-list-item{font-size:16px}.mat-list-base .mat-list-item .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-list-option{font-size:16px}.mat-list-base .mat-list-option .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base .mat-list-option .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-subheader{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:500}.mat-list-base[dense] .mat-list-item{font-size:12px}.mat-list-base[dense] .mat-list-item .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2),.mat-list-base[dense] .mat-list-option{font-size:12px}.mat-list-base[dense] .mat-list-option .mat-line{box-sizing:border-box;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-subheader{font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;font-weight:500}.mat-option{font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px}.mat-optgroup-label{font:500 14px/24px Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.mat-simple-snackbar{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px}.mat-simple-snackbar-action{font-family:inherit;font-size:inherit;font-weight:500;line-height:1}.mat-tree{font-family:Roboto,Helvetica Neue,sans-serif}.mat-nested-tree-node,.mat-tree-node{font-size:14px;font-weight:400}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{border-radius:50%;pointer-events:none;position:absolute;transform:scale(0);transition:opacity,transform 0ms cubic-bezier(0,0,.2,1)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{-moz-appearance:none;-webkit-appearance:none;border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;outline:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.cdk-global-overlay-wrapper,.cdk-overlay-container{height:100%;left:0;pointer-events:none;top:0;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper,.cdk-overlay-pane{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{box-sizing:border-box;max-height:100%;max-width:100%;pointer-events:auto}.cdk-overlay-backdrop{-webkit-tap-highlight-color:transparent;bottom:0;left:0;opacity:0;pointer-events:auto;position:absolute;right:0;top:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1);z-index:1000}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0}.cdk-overlay-connected-position-bounding-box{display:flex;flex-direction:column;min-height:1px;min-width:1px;position:absolute;z-index:1000}.cdk-global-scrollblock{overflow-y:scroll;position:fixed;width:100%}@-webkit-keyframes cdk-text-field-autofill-start{\n /*!*/}@keyframes cdk-text-field-autofill-start{\n /*!*/}@-webkit-keyframes cdk-text-field-autofill-end{\n /*!*/}@keyframes cdk-text-field-autofill-end{\n /*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{-webkit-animation:cdk-text-field-autofill-start 0s 1ms;animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){-webkit-animation:cdk-text-field-autofill-end 0s 1ms;animation:cdk-text-field-autofill-end 0s 1ms}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{box-sizing:content-box!important;height:auto!important;overflow:hidden!important;padding:2px 0!important}textarea.cdk-textarea-autosize-measuring-firefox{box-sizing:content-box!important;height:0!important;padding:2px 0!important}.mat-focus-indicator,.mat-mdc-focus-indicator{position:relative}.header,.title{font-family:Encode Sans Condensed,sans-serif;font-weight:900}.paragraph-title,.tagline{font-family:Open Sans,sans-serif;font-weight:400}.paragraph-title-bold .tagLine-bold{font-family:Open Sans,sans-serif;font-weight:700}.plain-text,.remarks{font-family:Open Sans,sans-serif;font-weight:300}.plain-text-bold{font-family:Open Sans,sans-serif;font-weight:700}.flex-column{flex-direction:column}.flex-column,.flex-row{box-sizing:border-box;display:flex}.flex-row{flex-direction:row}.flex-row-center{align-items:center;justify-content:center}.mat-button-large{font-size:18px;font-weight:700;line-height:48px;padding:0 24px!important}.mat-round{border-radius:.5em}:root{--background:#050505;--cyan-accent:rgba(132,255,255,0.75);--green-accent:#00e676;--initial-accent:#9cd8d7;--initial-dark-background:#222;--initial-dark-text:hsla(0,0%,100%,0.87);--initial-light-background:#f2f2f2;--initial-light-background:#fff;--initial-light-text:rgba(0,0,0,0.87);--initial-primary:#4a918e;--initial-warn:#ef4351;--orange-accent:#ff9800;--pink-accent:#e91e63;--purple-accent:#9c27b0;--success:#00e676;--yellow-accent:#fdd835}body{background-color:var(--initial-dark-background)}::ng-deep .mat-tooltip{font-size:16px!important}:host .valid-control{color:var(--green-accent)}:host .invalid-control{color:var(--theme-warn-500)}:host .actions .item:not(:last-child){margin-right:0}:host .project-thumbnail img{height:50px;width:auto}:host .active{background-color:var(--theme-accent-400)}:host .active,:host .inactive{transition:background-color 1s linear}:host .inactive{background-color:rgba(242,245,169,0)}:host .expansion-panel{margin-bottom:10px;width:100%}:host .expansion-container{max-height:300px;overflow-y:auto}:host .divider-fill-vert{background-color:var(--theme-accent-500);bottom:10%;min-height:100%;min-width:5px;top:10%}:host .divider-fill-hor{background-color:var(--theme-accent-500);height:5px;width:100%}:host .form-disabled{background-color:#797979;border-radius:4px;opacity:.5}::ng-deep input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:hsla(0,0%,100%,.8705882352941177);-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}@media (max-width:768px){.spread{margin:1em!important}}@media (max-width:480px){.spread{margin:.5em!important}}.spinner-logo{display:none!important}.success{color:var(--success)}.error{color:var(--theme-warn-500)}.icon-bg{border-radius:50%;padding:3px}.name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:150px}"]
2925
2925
  },] }
2926
2926
  ];
2927
- BuildsComponent.ctorParameters = () => [
2928
- { type: ApplicationsFlowEventsService }
2929
- ];
2927
+ BuildsComponent.ctorParameters = () => [];
2930
2928
  BuildsComponent.propDecorators = {
2931
2929
  Projects: [{ type: Input, args: ['projects',] }]
2932
2930
  };
@@ -2967,9 +2965,9 @@ FormCardComponent.propDecorators = {
2967
2965
  };
2968
2966
 
2969
2967
  class ProjectNameComponent {
2970
- constructor(formsService, appsFlowEventsSvc) {
2968
+ constructor(formsService, eacSvc) {
2971
2969
  this.formsService = formsService;
2972
- this.appsFlowEventsSvc = appsFlowEventsSvc;
2970
+ this.eacSvc = eacSvc;
2973
2971
  }
2974
2972
  /**
2975
2973
  * Access form control for description
@@ -3039,7 +3037,7 @@ class ProjectNameComponent {
3039
3037
  * Save form
3040
3038
  */
3041
3039
  save() {
3042
- this.appsFlowEventsSvc.SaveProjectAsCode({
3040
+ this.eacSvc.SaveProjectAsCode({
3043
3041
  ProjectLookup: this.ProjectLookup,
3044
3042
  Project: Object.assign(Object.assign({}, this.Project), { Project: Object.assign(Object.assign({}, (this.Project || {})), { Description: this.Description.value, Name: this.Name.value }) }),
3045
3043
  });
@@ -3083,7 +3081,7 @@ ProjectNameComponent.decorators = [
3083
3081
  ];
3084
3082
  ProjectNameComponent.ctorParameters = () => [
3085
3083
  { type: FormsService },
3086
- { type: ApplicationsFlowEventsService }
3084
+ { type: EaCService }
3087
3085
  ];
3088
3086
  ProjectNameComponent.propDecorators = {
3089
3087
  Project: [{ type: Input, args: ['project',] }],
@@ -3091,9 +3089,9 @@ ProjectNameComponent.propDecorators = {
3091
3089
  };
3092
3090
 
3093
3091
  class RootDirectoryComponent {
3094
- constructor(formsService, appsFlowEventsSvc) {
3092
+ constructor(formsService, eacSvc) {
3095
3093
  this.formsService = formsService;
3096
- this.appsFlowEventsSvc = appsFlowEventsSvc;
3094
+ this.eacSvc = eacSvc;
3097
3095
  }
3098
3096
  /**
3099
3097
  * Access form control for root directory
@@ -3158,7 +3156,7 @@ class RootDirectoryComponent {
3158
3156
  * Save form
3159
3157
  */
3160
3158
  save() {
3161
- this.appsFlowEventsSvc.SaveProjectAsCode({
3159
+ this.eacSvc.SaveProjectAsCode({
3162
3160
  ProjectLookup: this.ProjectLookup,
3163
3161
  Project: Object.assign({}, this.Project),
3164
3162
  });
@@ -3191,7 +3189,7 @@ RootDirectoryComponent.decorators = [
3191
3189
  ];
3192
3190
  RootDirectoryComponent.ctorParameters = () => [
3193
3191
  { type: FormsService },
3194
- { type: ApplicationsFlowEventsService }
3192
+ { type: EaCService }
3195
3193
  ];
3196
3194
  RootDirectoryComponent.propDecorators = {
3197
3195
  Project: [{ type: Input, args: ['project',] }],
@@ -3199,9 +3197,9 @@ RootDirectoryComponent.propDecorators = {
3199
3197
  };
3200
3198
 
3201
3199
  class BaseFormComponent {
3202
- constructor(formsService, appsFlowEventsSvc) {
3200
+ constructor(formsService, eac) {
3203
3201
  this.formsService = formsService;
3204
- this.appsFlowEventsSvc = appsFlowEventsSvc;
3202
+ this.eac = eac;
3205
3203
  }
3206
3204
  ngOnInit() {
3207
3205
  this.setupForm();
@@ -3253,7 +3251,7 @@ BaseFormComponent.decorators = [
3253
3251
  ];
3254
3252
  BaseFormComponent.ctorParameters = () => [
3255
3253
  { type: FormsService },
3256
- { type: ApplicationsFlowEventsService }
3254
+ { type: EaCService }
3257
3255
  ];
3258
3256
 
3259
3257
  class BaseFormConfigModel {
@@ -3263,10 +3261,10 @@ class BaseFormConfigModel {
3263
3261
  }
3264
3262
 
3265
3263
  class BaseFormTestComponent extends BaseFormComponent {
3266
- constructor(formsService, appsFlowEventsSvc) {
3267
- super(formsService, appsFlowEventsSvc);
3264
+ constructor(formsService, eacSvc) {
3265
+ super(formsService, eacSvc);
3268
3266
  this.formsService = formsService;
3269
- this.appsFlowEventsSvc = appsFlowEventsSvc;
3267
+ this.eacSvc = eacSvc;
3270
3268
  }
3271
3269
  /**
3272
3270
  * Access form control for description
@@ -3338,7 +3336,7 @@ BaseFormTestComponent.decorators = [
3338
3336
  ];
3339
3337
  BaseFormTestComponent.ctorParameters = () => [
3340
3338
  { type: FormsService },
3341
- { type: ApplicationsFlowEventsService }
3339
+ { type: EaCService }
3342
3340
  ];
3343
3341
 
3344
3342
  class GitAuthComponent {
@@ -4146,7 +4144,7 @@ class ProcessorDetailsFormComponent {
4146
4144
  ProcessorDetailsFormComponent.decorators = [
4147
4145
  { type: Component, args: [{
4148
4146
  selector: 'lcu-processor-details-form',
4149
- template: "<form class=\"processor-details-form\" [formGroup]=\"ProcessorDetailsFormGroup\" (ngSubmit)=\"SubmitProcessorDetails()\">\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 <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=\"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\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControls?.RepositoryFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\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 {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\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\">Single Page Application</mat-option>\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 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\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && !IsPreserve\"\n\n class=\"spread\"\n matSuffix\n matTooltip=\"302 \u2013 Not Permanent and Not Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"307 \u2013 Not Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"308 \u2013 Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n \n\n <!-- <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Values used to control the redirect type. Permanent and Not Preserve = 301; Not Permanent and Not Preserve = 302; Permanent and Preserve = 308; Not Permanent and Not Preserve = 307;\"\n >\n info_outline\n </mat-icon> -->\n </div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-actions>\n <!-- [disabled]=\"!SecurityFormGroup.valid || !SecurityFormGroup.dirty\" -->\n <button mat-raised-button type=\"submit\" >Save Security Settings</button>\n </mat-card-actions>\n</mat-card>\n</form>\n \n",
4147
+ template: "<form class=\"processor-details-form\" [formGroup]=\"ProcessorDetailsFormGroup\" (ngSubmit)=\"SubmitProcessorDetails()\">\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 <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=\"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\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControls?.RepositoryFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\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 {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\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\">Single Page Application</mat-option>\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 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\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && !IsPreserve\"\n\n class=\"spread\"\n matSuffix\n matTooltip=\"302 \u2013 Not Permanent and Not Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"307 \u2013 Not Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"308 \u2013 Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n \n\n <!-- <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Values used to control the redirect type. Permanent and Not Preserve = 301; Not Permanent and Not Preserve = 302; Permanent and Preserve = 308; Not Permanent and Not Preserve = 307;\"\n >\n info_outline\n </mat-icon> -->\n </div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-actions>\n <!-- [disabled]=\"!SecurityFormGroup.valid || !SecurityFormGroup.dirty\" -->\n <button mat-raised-button type=\"submit\" >Save</button>\n </mat-card-actions>\n</mat-card>\n</form>\n \n",
4150
4148
  styles: [""]
4151
4149
  },] }
4152
4150
  ];
@@ -4213,6 +4211,522 @@ SourceControlFormComponent.propDecorators = {
4213
4211
  SourceControlFormControls: [{ type: ViewChild, args: [SourceControlFormControlsComponent,] }]
4214
4212
  };
4215
4213
 
4214
+ class BuildPipelineFormComponent {
4215
+ constructor(formBldr, appsFlowSvc) {
4216
+ this.formBldr = formBldr;
4217
+ this.appsFlowSvc = appsFlowSvc;
4218
+ this.HostingDetails = new ProjectHostingDetails();
4219
+ }
4220
+ //PROPERTIES
4221
+ get Artifact() {
4222
+ var _a, _b;
4223
+ return ((_a = this.Environment) === null || _a === void 0 ? void 0 : _a.Artifacts) && this.ArtifactLookup
4224
+ ? ((_b = this.Environment) === null || _b === void 0 ? void 0 : _b.Artifacts[this.ArtifactLookup]) || {}
4225
+ : {};
4226
+ }
4227
+ get ArtifactLookup() {
4228
+ var _a, _b;
4229
+ const artLookup = ((_a = this.DevOpsAction) === null || _a === void 0 ? void 0 : _a.ArtifactLookups) ? (_b = this.DevOpsAction) === null || _b === void 0 ? void 0 : _b.ArtifactLookups[0] : null;
4230
+ return artLookup;
4231
+ }
4232
+ get DevOpsAction() {
4233
+ return this.Environment.DevOpsActions && this.DevOpsActionLookup
4234
+ ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}
4235
+ : {};
4236
+ }
4237
+ get DevOpsActions() {
4238
+ return this.Environment.DevOpsActions || {};
4239
+ }
4240
+ get EditingSourceControl() {
4241
+ var _a, _b;
4242
+ let sc = ((_a = this.Environment) === null || _a === void 0 ? void 0 : _a.Sources) ? (_b = this.Environment) === null || _b === void 0 ? void 0 : _b.Sources[this.EditingSourceControlLookup] : null;
4243
+ if (sc == null && this.EditingSourceControlLookup) {
4244
+ sc = {};
4245
+ }
4246
+ return sc;
4247
+ }
4248
+ // @Input('main-branch')
4249
+ // public MainBranch: string;
4250
+ // @Input('organization')
4251
+ // public Organization: string;
4252
+ // @Input('repository')
4253
+ // public Repository: string;
4254
+ get SourceControlLookups() {
4255
+ return Object.keys(this.SourceControls || {});
4256
+ }
4257
+ get SourceControls() {
4258
+ return this.Environment.Sources || {};
4259
+ }
4260
+ ngOnInit() {
4261
+ }
4262
+ }
4263
+ BuildPipelineFormComponent.decorators = [
4264
+ { type: Component, args: [{
4265
+ selector: 'lcu-build-pipeline-form',
4266
+ template: "<div class=\"form-card\" fxFlex=\"35%\" fxFlex.lt-md=\"100%\">\n <mat-card\n class=\"spread\"\n *ngIf=\"EditingSourceControl?.Branches?.length > 0\"\n >\n <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header>\n\n <mat-card-content>\n\n <ng-container>\n <!-- [details]=\"HostingDetails\" \n [organization]=\"Organization\"\n [formGroup]=\"DevOpsFormGroup\"-->\n\n <lcu-hosting-details-form-group\n [artifact]=\"Artifact\"\n [devops-action]=\"DevOpsActions[DevOpsActionLookup]\"\n \n \n [disabled]=\"false\"\n ></lcu-hosting-details-form-group>\n </ng-container>\n </mat-card-content>\n </mat-card>\n </div>\n",
4267
+ styles: [""]
4268
+ },] }
4269
+ ];
4270
+ BuildPipelineFormComponent.ctorParameters = () => [
4271
+ { type: FormBuilder },
4272
+ { type: ApplicationsFlowService }
4273
+ ];
4274
+ BuildPipelineFormComponent.propDecorators = {
4275
+ DevOpsActionLookup: [{ type: Input, args: ['devops-action-lookup',] }],
4276
+ Environment: [{ type: Input, args: ['environment',] }]
4277
+ };
4278
+
4279
+ class DevopsSourceControlFormComponent {
4280
+ // Constructors
4281
+ constructor(formBuilder, appsFlowSvc, eacSvc) {
4282
+ this.formBuilder = formBuilder;
4283
+ this.appsFlowSvc = appsFlowSvc;
4284
+ this.eacSvc = eacSvc;
4285
+ this.SeparatorKeysCodes = [ENTER, COMMA];
4286
+ this.BuildPath = null;
4287
+ // this.EditingSourceControlLookup = null;
4288
+ this.HostingDetails = new ProjectHostingDetails();
4289
+ this.SelectedBranches = [];
4290
+ this.SourceControlRoot = '';
4291
+ this.UseBranches = true;
4292
+ this.UseBuildPath = false;
4293
+ }
4294
+ // Fields
4295
+ // Properties
4296
+ get BranchesFormControl() {
4297
+ return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'branches');
4298
+ }
4299
+ get BuildPathFormControl() {
4300
+ return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'buildPath');
4301
+ }
4302
+ get DevOpsActionLookups() {
4303
+ return Object.keys(this.DevOpsActions || {});
4304
+ }
4305
+ get DevOpsActionLookup() {
4306
+ var _a, _b, _c;
4307
+ if (!!((_a = this.DevOpsActionLookupFormControl) === null || _a === void 0 ? void 0 : _a.value)) {
4308
+ return this.DevOpsActionLookupFormControl.value;
4309
+ }
4310
+ if (!!((_b = this.EditingSourceControl) === null || _b === void 0 ? void 0 : _b.DevOpsActionTriggerLookups)) {
4311
+ return (_c = this.EditingSourceControl) === null || _c === void 0 ? void 0 : _c.DevOpsActionTriggerLookups[0];
4312
+ }
4313
+ else {
4314
+ return null;
4315
+ }
4316
+ }
4317
+ get DevOpsActionLookupFormControl() {
4318
+ return this.DevOpsSourceControlFormGroup.get('devOpsActionLookup');
4319
+ }
4320
+ get DevOpsActions() {
4321
+ return this.Environment.DevOpsActions || {};
4322
+ }
4323
+ get EditingSourceControl() {
4324
+ var _a, _b;
4325
+ let sc = ((_a = this.Environment) === null || _a === void 0 ? void 0 : _a.Sources) ? (_b = this.Environment) === null || _b === void 0 ? void 0 : _b.Sources[this.EditingSourceControlLookup] : null;
4326
+ if (sc == null && this.EditingSourceControlLookup) {
4327
+ sc = {};
4328
+ }
4329
+ return sc;
4330
+ }
4331
+ get MainBranchFormControl() {
4332
+ return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'mainBranch');
4333
+ }
4334
+ get OrganizationFormControl() {
4335
+ return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'organization');
4336
+ }
4337
+ get RepositoryFormControl() {
4338
+ return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'repository');
4339
+ }
4340
+ // Life Cycle
4341
+ ngAfterViewInit() { }
4342
+ ngOnDestroy() {
4343
+ this.destroyFormControls();
4344
+ }
4345
+ ngOnInit() {
4346
+ console.log("org: ", this.EditingSourceControl);
4347
+ console.log("lookup: ", this.EditingSourceControlLookup);
4348
+ if (this.EditingSourceControlLookup === null) {
4349
+ this.CreateNewSourceControl();
4350
+ }
4351
+ console.log("org: ", this.EditingSourceControl);
4352
+ if (this.EditingSourceControl != null) {
4353
+ this.DevOpsSourceControlFormGroup = this.formBuilder.group({});
4354
+ this.setupFormControls();
4355
+ }
4356
+ this.RefreshOrganizations();
4357
+ }
4358
+ // API Methods
4359
+ AddBranchOption(event) {
4360
+ this.addBranchOption(event.value);
4361
+ event.input.value = '';
4362
+ }
4363
+ BranchOptionSelected(event) {
4364
+ this.addBranchOption(event.option.value);
4365
+ }
4366
+ BranchesChanged(branches) {
4367
+ this.loadProjectHostingDetails();
4368
+ }
4369
+ BuildPathChanged(event) {
4370
+ }
4371
+ CreateNewSourceControl() {
4372
+ this.SetEditingSourceControl(Guid.CreateRaw());
4373
+ }
4374
+ CreateRepository() {
4375
+ this.CreatingRepository = true;
4376
+ this.RepositoryFormControl.reset();
4377
+ }
4378
+ CancelCreateRepository() {
4379
+ this.CreatingRepository = false;
4380
+ }
4381
+ DevOpsActionLookupChanged(event) {
4382
+ this.configureDevOpsAction();
4383
+ }
4384
+ MainBranchChanged(event) {
4385
+ this.emitBranchesChanged();
4386
+ }
4387
+ OrganizationChanged(event) {
4388
+ const org = this.OrganizationFormControl;
4389
+ this.RepositoryFormControl.reset();
4390
+ if (this.UseBranches) {
4391
+ this.BranchesFormControl.reset();
4392
+ this.SelectedBranches = [];
4393
+ }
4394
+ this.listRepositories();
4395
+ }
4396
+ RefreshOrganizations() {
4397
+ var _a, _b, _c;
4398
+ // this.Loading = true;
4399
+ this.listOrganizations();
4400
+ (_a = this.OrganizationFormControl) === null || _a === void 0 ? void 0 : _a.reset();
4401
+ (_b = this.RepositoryFormControl) === null || _b === void 0 ? void 0 : _b.reset();
4402
+ if (this.UseBranches) {
4403
+ (_c = this.BranchesFormControl) === null || _c === void 0 ? void 0 : _c.reset();
4404
+ }
4405
+ }
4406
+ RemoveBranchOption(option) {
4407
+ const index = this.SelectedBranches.indexOf(option);
4408
+ if (index >= 0) {
4409
+ this.SelectedBranches.splice(index, 1);
4410
+ }
4411
+ this.emitBranchesChanged();
4412
+ }
4413
+ RepositoryChanged(event) {
4414
+ const repo = this.RepositoryFormControl;
4415
+ if (this.UseBranches) {
4416
+ this.BranchesFormControl.reset();
4417
+ this.SelectedBranches = [];
4418
+ this.listBranches();
4419
+ }
4420
+ if (!this.UseBranches) {
4421
+ this.listBuildPaths();
4422
+ }
4423
+ }
4424
+ SaveRepository() {
4425
+ this.Loading = true;
4426
+ const org = this.OrganizationFormControl.value;
4427
+ const repoName = this.RepositoryFormControl.value;
4428
+ this.appsFlowSvc
4429
+ .CreateRepository(org, repoName)
4430
+ .subscribe((response) => {
4431
+ if (response.Status.Code === 0) {
4432
+ this.listRepositories(repoName);
4433
+ this.CreatingRepository = false;
4434
+ }
4435
+ else {
4436
+ // TODO: Need to surface an error to the user...
4437
+ this.Loading = false;
4438
+ }
4439
+ });
4440
+ }
4441
+ SetEditingSourceControl(scLookup) {
4442
+ this.EditingSourceControlLookup = scLookup;
4443
+ }
4444
+ SubmitSourceControl() {
4445
+ console.log("source control submitted");
4446
+ }
4447
+ // public SaveSourceControl(): void {
4448
+ // const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {
4449
+ // Environment: {
4450
+ // ...this.Environment,
4451
+ // Artifacts: this.Environment.Artifacts || {},
4452
+ // DevOpsActions: this.Environment.DevOpsActions || {},
4453
+ // Secrets: this.Environment.Secrets || {},
4454
+ // Sources: this.Environment.Sources || {},
4455
+ // },
4456
+ // EnvironmentLookup: this.EnvironmentLookup,
4457
+ // EnterpriseDataTokens: {},
4458
+ // };
4459
+ // let artifactLookup: string;
4460
+ // // let artifact: EaCArtifact = {
4461
+ // // ...this.Artifact,
4462
+ // // ...this.HostingDetailsFormControls
4463
+ // // .SelectedHostingOptionInputControlValues,
4464
+ // // };
4465
+ // if (!this.ArtifactLookup) {
4466
+ // artifactLookup = Guid.CreateRaw();
4467
+ // artifact = {
4468
+ // ...artifact,
4469
+ // Type: this.HostingDetailsFormControls.SelectedHostingOption
4470
+ // .ArtifactType,
4471
+ // Name: this.HostingDetailsFormControls.SelectedHostingOption.Name,
4472
+ // NPMRegistry: 'https://registry.npmjs.org/',
4473
+ // };
4474
+ // } else {
4475
+ // artifactLookup = this.ArtifactLookup;
4476
+ // }
4477
+ // saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;
4478
+ // let devOpsActionLookup: string;
4479
+ // if (!this.DevOpsActionLookup) {
4480
+ // devOpsActionLookup = Guid.CreateRaw();
4481
+ // // const doa: EaCDevOpsAction = {
4482
+ // // ...this.DevOpsAction,
4483
+ // // ArtifactLookups: [artifactLookup],
4484
+ // // Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,
4485
+ // // Path: this.HostingDetailsFormControls.SelectedHostingOption.Path,
4486
+ // // Templates:
4487
+ // // this.HostingDetailsFormControls.SelectedHostingOption.Templates,
4488
+ // // };
4489
+ // if (this.HostingDetailsFormControls.NPMTokenFormControl?.value) {
4490
+ // const secretLookup = 'npm-access-token';
4491
+ // doa.SecretLookups = [secretLookup];
4492
+ // saveEnvReq.Environment.Secrets[secretLookup] = {
4493
+ // Name: 'NPM Access Token',
4494
+ // DataTokenLookup: secretLookup,
4495
+ // KnownAs: 'NPM_TOKEN',
4496
+ // };
4497
+ // saveEnvReq.EnterpriseDataTokens[secretLookup] = {
4498
+ // Name: saveEnvReq.Environment.Secrets[secretLookup].Name,
4499
+ // Description: saveEnvReq.Environment.Secrets[secretLookup].Name,
4500
+ // Value: this.NPMTokenFormControl.value,
4501
+ // };
4502
+ // }
4503
+ // saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
4504
+ // } else {
4505
+ // devOpsActionLookup = this.DevOpsActionLookupFormControl.value;
4506
+ // const doa: EaCDevOpsAction = {
4507
+ // ...this.DevOpsAction,
4508
+ // Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,
4509
+ // };
4510
+ // saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
4511
+ // }
4512
+ // let source: EaCSourceControl = {
4513
+ // ...this.EditingSourceControl,
4514
+ // Branches: this.SelectedBranches,
4515
+ // MainBranch: this.MainBranchFormControl.value,
4516
+ // };
4517
+ // source = {
4518
+ // ...source,
4519
+ // Type: 'GitHub',
4520
+ // Name: this.EditingSourceControlLookup,
4521
+ // DevOpsActionTriggerLookups: [devOpsActionLookup],
4522
+ // Organization:
4523
+ // this.OrganizationFormControl.value,
4524
+ // Repository: this.RepositoryFormControl.value,
4525
+ // };
4526
+ // const scLookup = `github://${source.Organization}/${source.Repository}`;
4527
+ // saveEnvReq.Environment.Sources[scLookup] = source;
4528
+ // this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
4529
+ // }
4530
+ // Helpers
4531
+ addBranchOption(value) {
4532
+ value = (value || '').trim();
4533
+ if (value && this.SelectedBranches.indexOf(value) < 0) {
4534
+ this.SelectedBranches.push(value);
4535
+ }
4536
+ this.BranchesInput.nativeElement.blur();
4537
+ this.emitBranchesChanged();
4538
+ }
4539
+ configureDevOpsAction() {
4540
+ setTimeout(() => {
4541
+ this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);
4542
+ }, 0);
4543
+ }
4544
+ destroyFormControls() {
4545
+ var _a, _b, _c, _d;
4546
+ this.DevOpsSourceControlFormGroup.removeControl([this.SourceControlRoot, 'mainBranch'].join(''));
4547
+ (_a = this.DevOpsSourceControlFormGroup) === null || _a === void 0 ? void 0 : _a.removeControl([this.SourceControlRoot, 'branches'].join(''));
4548
+ (_b = this.DevOpsSourceControlFormGroup) === null || _b === void 0 ? void 0 : _b.removeControl([this.SourceControlRoot, 'buildPath'].join(''));
4549
+ this.SelectedBranches = [];
4550
+ (_c = this.DevOpsSourceControlFormGroup) === null || _c === void 0 ? void 0 : _c.removeControl([this.SourceControlRoot, 'organization'].join(''));
4551
+ (_d = this.DevOpsSourceControlFormGroup) === null || _d === void 0 ? void 0 : _d.removeControl([this.SourceControlRoot, 'repository'].join(''));
4552
+ }
4553
+ emitBranchesChanged() {
4554
+ var _a, _b;
4555
+ if (((_a = this.SelectedBranches) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
4556
+ (!this.MainBranchFormControl.value ||
4557
+ this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)) {
4558
+ this.MainBranchFormControl.setValue(this.SelectedBranches.find((branch) => branch === 'main' || branch === 'master') || this.SelectedBranches[0]);
4559
+ }
4560
+ else if (((_b = this.SelectedBranches) === null || _b === void 0 ? void 0 : _b.length) <= 0) {
4561
+ this.MainBranchFormControl.reset();
4562
+ }
4563
+ this.BranchesFormControl.setValue(this.SelectedBranches.join(','));
4564
+ this.BranchesChanged(this.SelectedBranches || []);
4565
+ }
4566
+ listBranches() {
4567
+ if (this.UseBranches) {
4568
+ this.Loading = true;
4569
+ this.appsFlowSvc
4570
+ .ListBranches(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
4571
+ .subscribe((response) => {
4572
+ var _a, _b, _c;
4573
+ this.BranchOptions = response.Model;
4574
+ this.Loading = false;
4575
+ if (((_b = (_a = this.EditingSourceControl) === null || _a === void 0 ? void 0 : _a.Branches) === null || _b === void 0 ? void 0 : _b.length) > 0) {
4576
+ this.SelectedBranches = this.EditingSourceControl.Branches;
4577
+ }
4578
+ else if (((_c = this.BranchOptions) === null || _c === void 0 ? void 0 : _c.length) === 1) {
4579
+ this.BranchesFormControl.setValue(this.BranchOptions[0].Name);
4580
+ this.SelectedBranches = [this.BranchOptions[0].Name];
4581
+ }
4582
+ this.emitBranchesChanged();
4583
+ this.listBuildPaths();
4584
+ });
4585
+ }
4586
+ }
4587
+ listBuildPaths() {
4588
+ if (this.UseBuildPath) {
4589
+ this.Loading = true;
4590
+ this.appsFlowSvc
4591
+ .ListBuildPaths(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
4592
+ .subscribe((response) => {
4593
+ var _a;
4594
+ this.BuildPathOptions = response.Model;
4595
+ this.Loading = false;
4596
+ if (((_a = this.BuildPathOptions) === null || _a === void 0 ? void 0 : _a.length) === 1) {
4597
+ this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
4598
+ }
4599
+ });
4600
+ }
4601
+ }
4602
+ listOrganizations() {
4603
+ this.Loading = true;
4604
+ this.appsFlowSvc
4605
+ .ListOrganizations()
4606
+ .subscribe((response) => {
4607
+ var _a;
4608
+ this.OrganizationOptions = response.Model;
4609
+ this.Loading = false;
4610
+ if ((_a = this.EditingSourceControl) === null || _a === void 0 ? void 0 : _a.Organization) {
4611
+ setTimeout(() => {
4612
+ var _a;
4613
+ this.OrganizationFormControl.setValue(this.EditingSourceControl.Organization);
4614
+ this.listRepositories((_a = this.EditingSourceControl) === null || _a === void 0 ? void 0 : _a.Repository);
4615
+ }, 0);
4616
+ }
4617
+ });
4618
+ }
4619
+ listRepositories(activeRepo = null) {
4620
+ this.Loading = true;
4621
+ this.appsFlowSvc
4622
+ .ListRepositories(this.OrganizationFormControl.value)
4623
+ .subscribe((response) => {
4624
+ var _a;
4625
+ this.RepositoryOptions = response.Model;
4626
+ this.Loading = false;
4627
+ if (activeRepo) {
4628
+ setTimeout(() => {
4629
+ this.RepositoryFormControl.setValue(activeRepo);
4630
+ this.listBranches();
4631
+ if (!this.UseBranches) {
4632
+ this.listBuildPaths();
4633
+ }
4634
+ }, 0);
4635
+ }
4636
+ else if (((_a = this.RepositoryOptions) === null || _a === void 0 ? void 0 : _a.length) <= 0) {
4637
+ this.CreatingRepository = true;
4638
+ }
4639
+ });
4640
+ }
4641
+ loadProjectHostingDetails() {
4642
+ var _a, _b, _c, _d;
4643
+ if (((_a = this.SelectedBranches) === null || _a === void 0 ? void 0 : _a.length) > 0) {
4644
+ this.HostingDetails.Loading = true;
4645
+ this.appsFlowSvc
4646
+ .LoadProjectHostingDetails((_b = this.OrganizationFormControl) === null || _b === void 0 ? void 0 : _b.value, (_c = this.RepositoryFormControl) === null || _c === void 0 ? void 0 : _c.value, (_d = this.MainBranchFormControl) === null || _d === void 0 ? void 0 : _d.value)
4647
+ .subscribe((response) => {
4648
+ this.HostingDetails = response.Model;
4649
+ this.HostingDetails.Loading = false;
4650
+ this.configureDevOpsAction();
4651
+ }, (err) => {
4652
+ this.HostingDetails.Loading = false;
4653
+ });
4654
+ }
4655
+ }
4656
+ setupFormControls() {
4657
+ // this.destroyFormControls();
4658
+ var _a, _b, _c, _d, _e, _f, _g;
4659
+ this.DevOpsSourceControlFormGroup.addControl('devOpsActionLookup', new FormControl(this.DevOpsActionLookup || '', []));
4660
+ this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'organization'].join(''), new FormControl((_a = this.EditingSourceControl.Organization) !== null && _a !== void 0 ? _a : '', Validators.required));
4661
+ this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'repository'].join(''), new FormControl((_b = this.EditingSourceControl.Repository) !== null && _b !== void 0 ? _b : '', Validators.required));
4662
+ if (this.UseBranches) {
4663
+ this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'branches'].join(''), new FormControl((_d = (_c = this.EditingSourceControl) === null || _c === void 0 ? void 0 : _c.Branches) !== null && _d !== void 0 ? _d : '', Validators.required));
4664
+ this.SelectedBranches = (_e = this.EditingSourceControl) === null || _e === void 0 ? void 0 : _e.Branches;
4665
+ this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'mainBranch'].join(''), new FormControl((_f = this.EditingSourceControl.MainBranch) !== null && _f !== void 0 ? _f : '', Validators.required));
4666
+ }
4667
+ if (this.UseBuildPath) {
4668
+ this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'buildPath'].join(''), new FormControl((_g = this.BuildPath) !== null && _g !== void 0 ? _g : '', Validators.required));
4669
+ }
4670
+ }
4671
+ }
4672
+ DevopsSourceControlFormComponent.decorators = [
4673
+ { type: Component, args: [{
4674
+ selector: 'lcu-devops-source-control-form',
4675
+ template: "<form class=\"form-card\" [formGroup]=\"DevOpsSourceControlFormGroup\" (ngSubmit)=\"SubmitSourceControl()\">\n\n <mat-card class=\"spread\" class=\"sc-card\">\n <mat-card-header>\n <mat-card-title> Source Control </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon matSuffix matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\">\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"card\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select formControlName=\"devOpsActionLookup\" placeholder=\"DevOps Action\"\n [disabled]=\"HostingDetails?.Loading\" (selectionChange)=\"DevOpsActionLookupChanged($event)\">\n <ng-container *ngFor=\"let devOpsActionLookup of DevOpsActionLookups\">\n <mat-option [value]=\"devOpsActionLookup\" *ngIf=\"DevOpsActions[devOpsActionLookup]; let devOpsAction\">\n {{ devOpsAction.Name }}\n </mat-option>\n </ng-container>\n\n <mat-option value=\"\">-- Create New --</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"card\" *ngIf=\"OrganizationFormControl?.valid || !Loading\">\n <mat-form-field class=\"mat-full-width with-hint\" *ngIf=\"OrganizationOptions?.length > 0\">\n <mat-icon class=\"org-icon\" matPrefix>corporate_fare</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'organization'\" placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" [disabled]=\"Loading || HostingDetails?.Loading\" required>\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" matTooltip=\"Refresh Organization\"> refresh </mat-icon>\n\n <a matSuffix href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon color=\"accent\" matTooltip=\"Re-authorize Organizations\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" target=\"_blank\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n RepositoryFormControl?.valid ||\n (OrganizationFormControl?.valid && !Loading)\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>description</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'repository'\" [placeholder]=\"\n OrganizationFormControl?.valid\n ? 'Repository'\n : 'Repository (select organization first)'\n \" [disabled]=\"\n !OrganizationFormControl?.valid || Loading || HostingDetails?.Loading\n \" (selectionChange)=\"RepositoryChanged($event)\" *ngIf=\"!CreatingRepository\" required>\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <input matInput placeholder=\"Repository (creates new if does not exist)\"\n [formControlName]=\"SourceControlRoot + 'repository'\" *ngIf=\"CreatingRepository\"\n [fxHide]=\"Loading || HostingDetails?.Loading\" required />\n\n <mat-icon matSuffix (click)=\"CreateRepository()\" [fxHide]=\"Loading || HostingDetails?.Loading\"\n *ngIf=\"!CreatingRepository && OrganizationFormControl?.valid\">\n add_circle\n </mat-icon>\n\n <button mat-button type=\"button\" (click)=\"SaveRepository()\"\n *ngIf=\"CreatingRepository && RepositoryFormControl?.valid\">\n\n <mat-icon matSuffix color=\"primary\">\n save\n </mat-icon>\n </button>\n\n <button mat-button type=\"button\" (click)=\"CancelCreateRepository()\" *ngIf=\"CreatingRepository\">\n\n <mat-icon matSuffix>\n cancel\n </mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BranchesFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBranches\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-label>Selected Branches</mat-label>\n\n <mat-autocomplete (optionSelected)=\"BranchOptionSelected($event)\" #branchOptions=\"matAutocomplete\">\n <ng-container *ngFor=\"let branchOpt of BranchOptions\">\n <mat-option [value]=\"branchOpt.Name\">\n {{ branchOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-chip-list #selectedBranches>\n <mat-chip [removable]=\"true\" (removed)=\"RemoveBranchOption(selBranch)\"\n *ngFor=\"let selBranch of SelectedBranches\">\n {{ selBranch }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input matInput placeholder=\"New Branch...\" [formControlName]=\"SourceControlRoot + 'branches'\" #branches\n [matAutocomplete]=\"branchOptions\" [matChipInputFor]=\"selectedBranches\"\n [matChipInputSeparatorKeyCodes]=\"SeparatorKeysCodes\" [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"AddBranchOption($event)\" [disabled]=\"Loading || HostingDetails?.Loading\"\n required />\n </mat-chip-list>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width with-hint\" [fxShow]=\"SelectedBranches?.length > 1\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'mainBranch'\" placeholder=\"Main Branch\"\n [disabled]=\"Loading || HostingDetails?.Loading\" (selectionChange)=\"MainBranchChanged($event)\" required>\n <ng-container *ngFor=\"let branch of SelectedBranches\">\n <mat-option [value]=\"branch\">\n {{ branch }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\"> refresh </mat-icon>\n\n <a matSuffix mat-icon-button href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon matTooltip=\"Re-authorize Organizations\" color=\"accent\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" target=\"_blank\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BuildPathFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBuildPath\n \">\n <mat-form-field class=\"mat-full-width with-hint\">\n <mat-icon class=\"org-icon\" matPrefix>build</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'buildPath'\" placeholder=\"Build Path\"\n [disabled]=\"Loading || BuildPathDisabled\" (selectionChange)=\"BuildPathChanged($event)\" required>\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\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 use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\" *ngIf=\"!OrganizationFormControl?.valid\">\n Loading organizations\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n OrganizationFormControl?.valid && !RepositoryFormControl?.valid\n \">\n Loading repositories\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"RepositoryFormControl?.valid && !BranchesFormControl?.valid\">\n Loading branches\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n (RepositoryFormControl?.valid || BranchesFormControl?.valid) &&\n !BuildPathFormControl?.valid\n \">\n Loading build paths\n </h4>\n </div>\n </div>\n </div>\n <!-- </div> -->\n\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n <!-- [disabled]=\"!SecurityFormGroup.valid || !SecurityFormGroup.dirty\" -->\n <button mat-raised-button type=\"submit\">Save</button>\n </mat-card-actions>\n </mat-card>\n</form>",
4676
+ styles: [".form-card,.sc-card{width:100%}"]
4677
+ },] }
4678
+ ];
4679
+ DevopsSourceControlFormComponent.ctorParameters = () => [
4680
+ { type: FormBuilder },
4681
+ { type: ApplicationsFlowService },
4682
+ { type: EaCService }
4683
+ ];
4684
+ DevopsSourceControlFormComponent.propDecorators = {
4685
+ BranchesInput: [{ type: ViewChild, args: ['branches',] }],
4686
+ EditingSourceControlLookup: [{ type: Input, args: ['editing-source-control-lookup',] }],
4687
+ Environment: [{ type: Input, args: ['environment',] }]
4688
+ };
4689
+
4690
+ class SourceControlDialogComponent {
4691
+ constructor(dialogRef, data) {
4692
+ this.dialogRef = dialogRef;
4693
+ this.data = data;
4694
+ }
4695
+ ngOnInit() {
4696
+ }
4697
+ }
4698
+ SourceControlDialogComponent.decorators = [
4699
+ { type: Component, args: [{
4700
+ selector: 'lcu-source-control-dialog',
4701
+ template: "\n<div fxLayoutAlign=\"center center\">\n<lcu-devops-source-control-form\n [environment]=\"data.environment\"\n [editing-source-control-lookup]=\"data.scLookup\">\n</lcu-devops-source-control-form>\n</div>",
4702
+ styles: [""]
4703
+ },] }
4704
+ ];
4705
+ SourceControlDialogComponent.ctorParameters = () => [
4706
+ { type: MatDialogRef },
4707
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
4708
+ ];
4709
+
4710
+ class BuildPipelineDialogComponent {
4711
+ constructor(dialogRef, data) {
4712
+ this.dialogRef = dialogRef;
4713
+ this.data = data;
4714
+ }
4715
+ ngOnInit() {
4716
+ }
4717
+ }
4718
+ BuildPipelineDialogComponent.decorators = [
4719
+ { type: Component, args: [{
4720
+ selector: 'lcu-build-pipeline-dialog',
4721
+ template: "<lcu-build-pipeline-form\n[devops-action-lookup]=\"data.devopsActionLookup\"\n[environment]=\"data.environment\"\n>\n\n</lcu-build-pipeline-form>\n",
4722
+ styles: [""]
4723
+ },] }
4724
+ ];
4725
+ BuildPipelineDialogComponent.ctorParameters = () => [
4726
+ { type: MatDialogRef },
4727
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
4728
+ ];
4729
+
4216
4730
  class ApplicationsFlowModule {
4217
4731
  static forRoot() {
4218
4732
  return {
@@ -4223,7 +4737,7 @@ class ApplicationsFlowModule {
4223
4737
  ProjectService,
4224
4738
  NPMService,
4225
4739
  FormsService,
4226
- ApplicationsFlowEventsService,
4740
+ EaCService
4227
4741
  ],
4228
4742
  };
4229
4743
  }
@@ -4265,7 +4779,11 @@ ApplicationsFlowModule.decorators = [
4265
4779
  CardCarouselComponent,
4266
4780
  SecurityToggleComponent,
4267
4781
  ProcessorDetailsFormComponent,
4268
- SourceControlFormComponent
4782
+ SourceControlFormComponent,
4783
+ BuildPipelineFormComponent,
4784
+ DevopsSourceControlFormComponent,
4785
+ SourceControlDialogComponent,
4786
+ BuildPipelineDialogComponent
4269
4787
  ],
4270
4788
  imports: [
4271
4789
  FathymSharedModule,
@@ -4313,7 +4831,11 @@ ApplicationsFlowModule.decorators = [
4313
4831
  CardCarouselComponent,
4314
4832
  SecurityToggleComponent,
4315
4833
  ProcessorDetailsFormComponent,
4316
- SourceControlFormComponent
4834
+ SourceControlFormComponent,
4835
+ BuildPipelineFormComponent,
4836
+ DevopsSourceControlFormComponent,
4837
+ SourceControlDialogComponent,
4838
+ BuildPipelineDialogComponent
4317
4839
  ],
4318
4840
  entryComponents: [
4319
4841
  ApplicationsFlowProjectsElementComponent,
@@ -4348,7 +4870,11 @@ ApplicationsFlowModule.decorators = [
4348
4870
  CardCarouselComponent,
4349
4871
  SecurityToggleComponent,
4350
4872
  ProcessorDetailsFormComponent,
4351
- SourceControlFormComponent
4873
+ SourceControlFormComponent,
4874
+ BuildPipelineFormComponent,
4875
+ DevopsSourceControlFormComponent,
4876
+ SourceControlDialogComponent,
4877
+ BuildPipelineDialogComponent
4352
4878
  ],
4353
4879
  },] }
4354
4880
  ];
@@ -4381,5 +4907,5 @@ class FormModel {
4381
4907
  * Generated bundle index. Do not edit.
4382
4908
  */
4383
4909
 
4384
- export { ActionsModel, ApplicationsFlowModule, ApplicationsFlowProjectsContext, ApplicationsFlowProjectsElementComponent, ApplicationsFlowProjectsElementState, ApplicationsFlowService, ApplicationsFlowState, ApplicationsFlowStateContext, BaseFormConfigModel, CardFormConfigModel, CreateProjectWizardComponent, DevSettingsPresetModel, DomainModel, DynamicTabsModel, FormActionsModel, FormModel, FormValuesModel, FormsService, GitAuthComponent, GitHubBranch, GitHubOrganization, GitHubRepository, GitHubSetupState, GitHubWorkflowRun, HostingDetailsFormGroupComponent, NPMService, ProjectActionsModel, ProjectHostingDetails, ProjectHostingOption, ProjectHostingOptionInput, ProjectNameComponent, ProjectService, RootDirectoryComponent, SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT, SourceControlFormControlsComponent, ThreeColumnComponent, UnpackLowCodeUnitRequest, ApplicationsFlowEventsService as ɵa, DynamicTabsComponent as ɵb, ProcessorDetailsFormComponent as ɵba, SourceControlFormComponent as ɵbb, HeaderComponent as ɵc, ProjectTabsComponent as ɵd, GeneralComponent as ɵe, DomainsComponent as ɵf, ProjectItemsComponent as ɵg, BuildsComponent as ɵh, RecentActivitiesComponent as ɵi, FormCardComponent as ɵj, BaseFormComponent as ɵk, BaseFormTestComponent as ɵl, AppsFlowComponent as ɵm, DevOpsComponent as ɵn, DFSModifiersComponent as ɵo, NpmPackageSelectComponent as ɵp, ColumnInfoCardComponent as ɵq, SlottedCardComponent as ɵr, ProjectInfoCardComponent as ɵs, AnalyticsCardComponent as ɵt, FeedCardSmComponent as ɵu, GhControlComponent as ɵv, MainFeedCardComponent as ɵw, TwoColumnHeaderComponent as ɵx, CardCarouselComponent as ɵy, SecurityToggleComponent as ɵz };
4910
+ export { ActionsModel, ApplicationsFlowModule, ApplicationsFlowProjectsContext, ApplicationsFlowProjectsElementComponent, ApplicationsFlowProjectsElementState, ApplicationsFlowService, ApplicationsFlowState, ApplicationsFlowStateContext, BaseFormConfigModel, CardFormConfigModel, CreateProjectWizardComponent, DevSettingsPresetModel, DomainModel, DynamicTabsModel, EaCService, FormActionsModel, FormModel, FormValuesModel, FormsService, GitAuthComponent, GitHubBranch, GitHubOrganization, GitHubRepository, GitHubSetupState, GitHubWorkflowRun, HostingDetailsFormGroupComponent, NPMService, ProjectActionsModel, ProjectHostingDetails, ProjectHostingOption, ProjectHostingOptionInput, ProjectNameComponent, ProjectService, RootDirectoryComponent, SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT, SaveApplicationAsCodeEventRequest, SaveDFSModifierEventRequest, SaveEnvironmentAsCodeEventRequest, SaveProjectAsCodeEventRequest, SourceControlFormControlsComponent, ThreeColumnComponent, UnpackLowCodeUnitRequest, DynamicTabsComponent as ɵa, HeaderComponent as ɵb, SourceControlFormComponent as ɵba, BuildPipelineFormComponent as ɵbb, DevopsSourceControlFormComponent as ɵbc, SourceControlDialogComponent as ɵbd, BuildPipelineDialogComponent as ɵbe, ProjectTabsComponent as ɵc, GeneralComponent as ɵd, DomainsComponent as ɵe, ProjectItemsComponent as ɵf, BuildsComponent as ɵg, RecentActivitiesComponent as ɵh, FormCardComponent as ɵi, BaseFormComponent as ɵj, BaseFormTestComponent as ɵk, AppsFlowComponent as ɵl, DevOpsComponent as ɵm, DFSModifiersComponent as ɵn, NpmPackageSelectComponent as ɵo, ColumnInfoCardComponent as ɵp, SlottedCardComponent as ɵq, ProjectInfoCardComponent as ɵr, AnalyticsCardComponent as ɵs, FeedCardSmComponent as ɵt, GhControlComponent as ɵu, MainFeedCardComponent as ɵv, TwoColumnHeaderComponent as ɵw, CardCarouselComponent as ɵx, SecurityToggleComponent as ɵy, ProcessorDetailsFormComponent as ɵz };
4385
4911
  //# sourceMappingURL=lowcodeunit-applications-flow-common.js.map