@lowcodeunit/applications-flow-common 1.37.142-ui-requests-10944 → 1.37.144-ui-ux-update
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.
- package/esm2020/lib/controls/edit-application-form/edit-application-form.component.mjs +6 -7
- package/esm2020/lib/controls/processor-details-form/processor-details-form.component.mjs +10 -11
- package/esm2020/lib/elements/breadcrumb/breadcrumb.component.mjs +8 -8
- package/esm2020/lib/elements/project-card/project-card.component.mjs +2 -1
- package/esm2020/lib/elements/route-card/route-card.component.mjs +2 -1
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +23 -23
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +23 -23
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/package.json +1 -1
@@ -111,6 +111,7 @@ export class RouteCardComponent {
|
|
111
111
|
url: 'https://' +
|
112
112
|
this.Project?.Hosts[this.Project?.Hosts?.length - 1] +
|
113
113
|
this.AppRoute,
|
114
|
+
routerLink: ['/route', this.AppRoute, this.ProjectLookup],
|
114
115
|
};
|
115
116
|
let tempApps = this.CurrentRouteApplicationLookups;
|
116
117
|
if (tempApps) {
|
@@ -178,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
178
179
|
type: Input,
|
179
180
|
args: ['active-environment-lookup']
|
180
181
|
}] } });
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9lbGVtZW50cy9yb3V0ZS1jYXJkL3JvdXRlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvcm91dGUtY2FyZC9yb3V0ZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNuQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7OztBQVF0SCxNQUFNLE9BQU8sa0JBQWtCO0lBNkkzQixZQUFzQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBNUkvQixnQkFBVyxHQUFHLENBQUMsSUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3BELE9BQU87Z0JBQ0gsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3ZELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLLEVBQUUsS0FBSztnQkFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzthQUNoQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBb0dL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QUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWE7UUFDNUIsaUNBQWlDO0lBQ3JDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNGLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDakMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUNsRDtTQUNKLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUM5Qyx3Q0FBd0M7WUFDeEMsaUNBQWlDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBbk9RLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZWQ2hCL0Isa2lMQThJQTsyRkQ5SGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGdCQUFnQjtnR0FrQm5CLGdCQUFnQjtzQkFEdEIsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBSW5CLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQWlIVCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFJVCxhQUFhO3NCQURuQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFJaEIsdUJBQXVCO3NCQUQ3QixLQUFLO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7XG4gICAgTWF0VHJlZUZsYXREYXRhU291cmNlLFxuICAgIE1hdFRyZWVGbGF0dGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgRWFDQXBwbGljYXRpb25Bc0NvZGUsIEVhQ1Byb2plY3RBc0NvZGUgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgTmV3QXBwbGljYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL25ldy1hcHBsaWNhdGlvbi1kaWFsb2cvbmV3LWFwcGxpY2F0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWUtbm9kZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LXJvdXRlLWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yb3V0ZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yb3V0ZS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1lciA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcbiAgICAgICAgICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICAgICAgICAgIGxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IG5vZGUucm91dGVyTGluayxcbiAgICAgICAgICAgIHVybDogbm9kZS51cmwsXG4gICAgICAgICAgICBsb29rdXA6IG5vZGUubG9va3VwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IG5vZGUuZGVzY3JpcHRpb24sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIEBJbnB1dCgnYXBwbGljYXRpb25zLWJhbmsnKVxuICAgIHB1YmxpYyBBcHBsaWNhdGlvbnNCYW5rOiBBcnJheTxFYUNBcHBsaWNhdGlvbkFzQ29kZT47XG5cbiAgICBASW5wdXQoJ2xvYWRpbmcnKVxuICAgIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIGdldCBBcHBsaWNhdGlvbnMoKToge1xuICAgICAgICBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICB9IHtcbiAgICAgICAgY29uc3QgYXBwczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9ID0ge307XG5cbiAgICAgICAgdGhpcy5Qcm9qZWN0Py5BcHBsaWNhdGlvbkxvb2t1cHM/LmZvckVhY2goKGFwcExvb2t1cDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBhcHBzW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc0JhbmtbYXBwTG9va3VwXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcHBzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnNbdGhpcy5BcHBSb3V0ZV0gfHwge30pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgUm91dGVkQXBwbGljYXRpb25zKCk6IHtcbiAgICAgICAgW3JvdXRlOiBzdHJpbmddOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG4gICAgfSB7XG4gICAgICAgIGNvbnN0IGFwcExvb2t1cHMgPSBPYmplY3Qua2V5cyh0aGlzLkFwcGxpY2F0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgYXBwcyA9IGFwcExvb2t1cHMubWFwKFxuICAgICAgICAgICAgKGFwcExvb2t1cCkgPT4gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBhcHBSb3V0ZXMgPVxuICAgICAgICAgICAgYXBwcy5tYXAoKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiQXBwIGZyb20gcHJvamVjdHM6IFwiLCBhcHApO1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpO1xuICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgYXBwUm91dGVzID0gYXBwUm91dGVzLmZpbHRlcigoYXIpID0+IGFyICE9IG51bGwpO1xuXG4gICAgICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcy5mb3JFYWNoKChhcHBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwUm91dGVQYXJ0cyA9IGFwcFJvdXRlLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlQmFzZSA9IGAvJHthcHBSb3V0ZVBhcnRzWzFdfWA7XG5cbiAgICAgICAgICAgIGlmIChyb3V0ZUJhc2VzLmluZGV4T2YoYXBwUm91dGVCYXNlKSA8IDApIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdvcmtpbmdBcHBMb29rdXBzID0gWy4uLihhcHBMb29rdXBzIHx8IFtdKV07XG5cbiAgICAgICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldCA9XG4gICAgICAgICAgICByb3V0ZUJhc2VzLnJlZHVjZSgocHJldlJvdXRlTWFwLCBjdXJyZW50Um91dGVCYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXZSb3V0ZU1hcCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRBcHBMb29rdXBzID0gd29ya2luZ0FwcExvb2t1cHMuZmlsdGVyKCh3YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2EgPSB0aGlzLkFwcGxpY2F0aW9uc1t3YWxdO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3YT8uTG9va3VwQ29uZmlnPy5QYXRoUmVnZXguc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZUJhc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJvdXRlTWFwW2N1cnJlbnRSb3V0ZUJhc2VdID1cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRBcHBMb29rdXBzLnJlZHVjZSgocHJldkFwcE1hcCwgYXBwTG9va3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHBNYXA6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2QXBwTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFwW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgICAgICAgICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVNYXA7XG4gICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgICAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldFJlc3VsdCA9IHt9O1xuXG4gICAgICAgIHJvdXRlU2V0S2V5cy5mb3JFYWNoKChyc2spID0+IChyb3V0ZVNldFJlc3VsdFtyc2tdID0gcm91dGVTZXRbcnNrXSkpO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiQXBwIFJvdXRlczogXCIscm91dGVTZXRSZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJvdXRlU2V0UmVzdWx0O1xuICAgIH1cbiAgICBwdWJsaWMgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5sZXZlbCxcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5leHBhbmRhYmxlXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXIsXG4gICAgICAgIChub2RlOiBhbnkpID0+IG5vZGUubGV2ZWwsXG4gICAgICAgIChub2RlOiBhbnkpID0+IG5vZGUuZXhwYW5kYWJsZSxcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5jaGlsZHJlblxuICAgICk7XG5cbiAgICBwdWJsaWMgRGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UoXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wsXG4gICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lclxuICAgICk7XG5cbiAgICBASW5wdXQoJ3Byb2plY3QnKVxuICAgIHB1YmxpYyBQcm9qZWN0OiBFYUNQcm9qZWN0QXNDb2RlO1xuXG4gICAgQElucHV0KCdwcm9qZWN0LWxvb2t1cCcpXG4gICAgcHVibGljIFByb2plY3RMb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgnYWN0aXZlLWVudmlyb25tZW50LWxvb2t1cCcpXG4gICAgcHVibGljIEFjdGl2ZUVudmlyb25tZW50TG9va3VwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgQXBwbGljYXRpb25Sb3V0ZXM6IEFycmF5PHN0cmluZz47XG5cbiAgICBwdWJsaWMgQXBwUm91dGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICAgIHB1YmxpYyBIYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdExvb2t1cCAmJiB0aGlzLlByb2plY3QpIHtcbiAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy5CdWlsZFJvdXRlVHJlZSgpO1xuXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5EYXRhU291cmNlLmRhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0ZW1wKSkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdJdHMgZGlmZmVyZW50OiAnLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5EYXRhU291cmNlLmRhdGEgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIEJ1aWxkUm91dGVUcmVlKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY2FsbGVkIHJvdXRlIHRyZWUnKTtcbiAgICAgICAgbGV0IHRlbXBUcmVlRGF0YTogQXJyYXk8VHJlZU5vZGU+ID0gW107XG5cbiAgICAgICAgdGhpcy5BcHBsaWNhdGlvblJvdXRlcyA9IE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgICAgICAgaWYgKHRoaXMuQXBwbGljYXRpb25Sb3V0ZXMpIHtcbiAgICAgICAgICAgIC8vIGxldCB0ZW1wUHJvakNoaWxkcmVuOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuQXBwbGljYXRpb25Sb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUgPSBhcHBSb3V0ZTtcbiAgICAgICAgICAgICAgICAvLyByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHRoaXMuUHJvamVjdExvb2t1cF0sXG5cbiAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHVybDpcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Py5Ib3N0c1t0aGlzLlByb2plY3Q/Lkhvc3RzPy5sZW5ndGggLSAxXSArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcHMgPSB0aGlzLkN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcztcbiAgICAgICAgICAgICAgICBpZiAodGVtcEFwcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBSb3V0ZUNoaWxkcmVuOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGVtcEFwcHMuZm9yRWFjaCgoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJvdXRlZEFwcGxpY2F0aW9uc1t0aGlzLkFwcFJvdXRlXVthcHBMb29rdXBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBBcHBOb2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXA6IGFwcExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZW1wQXBwLkFwcGxpY2F0aW9uLk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Py5Ib3N0c1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUHJvamVjdD8uSG9zdHM/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRlbXBBcHAuQXBwbGljYXRpb24uRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUm91dGVDaGlsZHJlbi5wdXNoKHRlbXBBcHBOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBSb3V0ZU5vZGUuY2hpbGRyZW4gPSB0ZW1wUm91dGVDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGVtcFRyZWVEYXRhLnB1c2godGVtcFJvdXRlTm9kZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVtcFRyZWVEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBIYW5kbGVSb3V0ZShyb3V0ZTogc3RyaW5nKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdyb3V0ZTogJywgcm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBPcGVuTmV3QXBwRGlhbG9nKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZXdBcHBsaWNhdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcHJvamVjdExvb2t1cDogdGhpcy5Qcm9qZWN0TG9va3VwLFxuICAgICAgICAgICAgICAgIGVudmlyb25tZW50TG9va3VwOiB0aGlzLkFjdGl2ZUVudmlyb25tZW50TG9va3VwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1RoZSBkaWFsb2cgd2FzIGNsb3NlZCcpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJyZXN1bHQ6XCIsIHJlc3VsdClcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPCEtLSBUUkVFIC0tPlxuPGxjdS1zbG90dGVkLWNhcmQtbGdcbiAgICAqbmdJZj1cIlByb2plY3RMb29rdXBcIlxuICAgIGNsYXNzPVwiZml0LWNvbnRlbnRcIlxuICAgIGNhcmQtdGl0bGU9XCJBcHBsaWNhdGlvblwiXG4gICAgYnV0dG9uLXRleHQ9XCJBZGQgUm91dGVcIlxuICAgIGljb249XCJyb3V0ZVwiXG4gICAgW2xvYWRpbmddPVwiTG9hZGluZ1wiXG4gICAgW21haW4tc2xvdC1kZXNjcmlwdGlvbl09XCJBcHBsaWNhdGlvblJvdXRlcz8ubGVuZ3RoICsgJyByb3V0ZShzKSBjb25maWd1cmVkJ1wiXG4gICAgKG1haW4tYWN0aW9uLWNsaWNrZWQpPVwiT3Blbk5ld0FwcERpYWxvZygkZXZlbnQpXCJcbj5cbiAgICA8IS0tIDxkaXY+IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEYXRhU291cmNlXCI+XG4gICAgICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJEYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlUGFkZGluZz5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1oZWFkZXItYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWFyb3VuZCBjZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHt7IG5vZGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPmVkaXQ8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIm5vZGUudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMYXVuY2gge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+bGF1bmNoPC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbj48L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBIYXNDaGlsZFwiXG4gICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVG9nZ2xlICcgKyBub2RlLm5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJleHBhbmRfbW9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJjaGV2cm9uX3JpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtaGVhZGVyLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5uYW1lXCIgY2xhc3M9XCJzbG90LW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInNsb3QtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmVlLWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5uYW1lXCIgY2xhc3M9XCJzbG90LW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInNsb3QtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9uLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB7eyBub2RlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5lZGl0PC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9uLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJub2RlLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTGF1bmNoIHt7IG5vZGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPmxhdW5jaDwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxuICAgICAgICA8L21hdC10cmVlPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9sY3Utc2xvdHRlZC1jYXJkLWxnPlxuIl19
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9lbGVtZW50cy9yb3V0ZS1jYXJkL3JvdXRlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvcm91dGUtY2FyZC9yb3V0ZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNuQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7OztBQVF0SCxNQUFNLE9BQU8sa0JBQWtCO0lBNkkzQixZQUFzQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBNUkvQixnQkFBVyxHQUFHLENBQUMsSUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3BELE9BQU87Z0JBQ0gsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3ZELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLLEVBQUUsS0FBSztnQkFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzthQUNoQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBb0dL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QUFHLGlCQUFpQixDQUFDO2lCQUM5QztnQkFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWE7UUFDNUIsaUNBQWlDO0lBQ3JDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNGLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDakMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUNsRDtTQUNKLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUM5Qyx3Q0FBd0M7WUFDeEMsaUNBQWlDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBcE9RLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZWQ2hCL0Isa2lMQThJQTsyRkQ5SGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGdCQUFnQjtnR0FrQm5CLGdCQUFnQjtzQkFEdEIsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBSW5CLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQWlIVCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFJVCxhQUFhO3NCQURuQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFJaEIsdUJBQXVCO3NCQUQ3QixLQUFLO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7XG4gICAgTWF0VHJlZUZsYXREYXRhU291cmNlLFxuICAgIE1hdFRyZWVGbGF0dGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgRWFDQXBwbGljYXRpb25Bc0NvZGUsIEVhQ1Byb2plY3RBc0NvZGUgfSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgTmV3QXBwbGljYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL25ldy1hcHBsaWNhdGlvbi1kaWFsb2cvbmV3LWFwcGxpY2F0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWUtbm9kZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LXJvdXRlLWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yb3V0ZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yb3V0ZS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1lciA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcbiAgICAgICAgICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICAgICAgICAgIGxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IG5vZGUucm91dGVyTGluayxcbiAgICAgICAgICAgIHVybDogbm9kZS51cmwsXG4gICAgICAgICAgICBsb29rdXA6IG5vZGUubG9va3VwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IG5vZGUuZGVzY3JpcHRpb24sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIEBJbnB1dCgnYXBwbGljYXRpb25zLWJhbmsnKVxuICAgIHB1YmxpYyBBcHBsaWNhdGlvbnNCYW5rOiBBcnJheTxFYUNBcHBsaWNhdGlvbkFzQ29kZT47XG5cbiAgICBASW5wdXQoJ2xvYWRpbmcnKVxuICAgIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIGdldCBBcHBsaWNhdGlvbnMoKToge1xuICAgICAgICBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICB9IHtcbiAgICAgICAgY29uc3QgYXBwczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9ID0ge307XG5cbiAgICAgICAgdGhpcy5Qcm9qZWN0Py5BcHBsaWNhdGlvbkxvb2t1cHM/LmZvckVhY2goKGFwcExvb2t1cDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBhcHBzW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc0JhbmtbYXBwTG9va3VwXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcHBzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnNbdGhpcy5BcHBSb3V0ZV0gfHwge30pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgUm91dGVkQXBwbGljYXRpb25zKCk6IHtcbiAgICAgICAgW3JvdXRlOiBzdHJpbmddOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG4gICAgfSB7XG4gICAgICAgIGNvbnN0IGFwcExvb2t1cHMgPSBPYmplY3Qua2V5cyh0aGlzLkFwcGxpY2F0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgYXBwcyA9IGFwcExvb2t1cHMubWFwKFxuICAgICAgICAgICAgKGFwcExvb2t1cCkgPT4gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBhcHBSb3V0ZXMgPVxuICAgICAgICAgICAgYXBwcy5tYXAoKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiQXBwIGZyb20gcHJvamVjdHM6IFwiLCBhcHApO1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpO1xuICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgYXBwUm91dGVzID0gYXBwUm91dGVzLmZpbHRlcigoYXIpID0+IGFyICE9IG51bGwpO1xuXG4gICAgICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcy5mb3JFYWNoKChhcHBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwUm91dGVQYXJ0cyA9IGFwcFJvdXRlLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlQmFzZSA9IGAvJHthcHBSb3V0ZVBhcnRzWzFdfWA7XG5cbiAgICAgICAgICAgIGlmIChyb3V0ZUJhc2VzLmluZGV4T2YoYXBwUm91dGVCYXNlKSA8IDApIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdvcmtpbmdBcHBMb29rdXBzID0gWy4uLihhcHBMb29rdXBzIHx8IFtdKV07XG5cbiAgICAgICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldCA9XG4gICAgICAgICAgICByb3V0ZUJhc2VzLnJlZHVjZSgocHJldlJvdXRlTWFwLCBjdXJyZW50Um91dGVCYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXZSb3V0ZU1hcCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRBcHBMb29rdXBzID0gd29ya2luZ0FwcExvb2t1cHMuZmlsdGVyKCh3YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2EgPSB0aGlzLkFwcGxpY2F0aW9uc1t3YWxdO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3YT8uTG9va3VwQ29uZmlnPy5QYXRoUmVnZXguc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZUJhc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJvdXRlTWFwW2N1cnJlbnRSb3V0ZUJhc2VdID1cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRBcHBMb29rdXBzLnJlZHVjZSgocHJldkFwcE1hcCwgYXBwTG9va3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHBNYXA6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2QXBwTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFwW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgICAgICAgICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVNYXA7XG4gICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgICAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldFJlc3VsdCA9IHt9O1xuXG4gICAgICAgIHJvdXRlU2V0S2V5cy5mb3JFYWNoKChyc2spID0+IChyb3V0ZVNldFJlc3VsdFtyc2tdID0gcm91dGVTZXRbcnNrXSkpO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiQXBwIFJvdXRlczogXCIscm91dGVTZXRSZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJvdXRlU2V0UmVzdWx0O1xuICAgIH1cbiAgICBwdWJsaWMgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5sZXZlbCxcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5leHBhbmRhYmxlXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXIsXG4gICAgICAgIChub2RlOiBhbnkpID0+IG5vZGUubGV2ZWwsXG4gICAgICAgIChub2RlOiBhbnkpID0+IG5vZGUuZXhwYW5kYWJsZSxcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS5jaGlsZHJlblxuICAgICk7XG5cbiAgICBwdWJsaWMgRGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UoXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wsXG4gICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lclxuICAgICk7XG5cbiAgICBASW5wdXQoJ3Byb2plY3QnKVxuICAgIHB1YmxpYyBQcm9qZWN0OiBFYUNQcm9qZWN0QXNDb2RlO1xuXG4gICAgQElucHV0KCdwcm9qZWN0LWxvb2t1cCcpXG4gICAgcHVibGljIFByb2plY3RMb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgnYWN0aXZlLWVudmlyb25tZW50LWxvb2t1cCcpXG4gICAgcHVibGljIEFjdGl2ZUVudmlyb25tZW50TG9va3VwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgQXBwbGljYXRpb25Sb3V0ZXM6IEFycmF5PHN0cmluZz47XG5cbiAgICBwdWJsaWMgQXBwUm91dGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICAgIHB1YmxpYyBIYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdExvb2t1cCAmJiB0aGlzLlByb2plY3QpIHtcbiAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy5CdWlsZFJvdXRlVHJlZSgpO1xuXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5EYXRhU291cmNlLmRhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0ZW1wKSkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdJdHMgZGlmZmVyZW50OiAnLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5EYXRhU291cmNlLmRhdGEgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIEJ1aWxkUm91dGVUcmVlKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY2FsbGVkIHJvdXRlIHRyZWUnKTtcbiAgICAgICAgbGV0IHRlbXBUcmVlRGF0YTogQXJyYXk8VHJlZU5vZGU+ID0gW107XG5cbiAgICAgICAgdGhpcy5BcHBsaWNhdGlvblJvdXRlcyA9IE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgICAgICAgaWYgKHRoaXMuQXBwbGljYXRpb25Sb3V0ZXMpIHtcbiAgICAgICAgICAgIC8vIGxldCB0ZW1wUHJvakNoaWxkcmVuOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuQXBwbGljYXRpb25Sb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUgPSBhcHBSb3V0ZTtcbiAgICAgICAgICAgICAgICAvLyByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHRoaXMuUHJvamVjdExvb2t1cF0sXG5cbiAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHVybDpcbiAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Py5Ib3N0c1t0aGlzLlByb2plY3Q/Lkhvc3RzPy5sZW5ndGggLSAxXSArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHRoaXMuUHJvamVjdExvb2t1cF0sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwcyA9IHRoaXMuQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzO1xuICAgICAgICAgICAgICAgIGlmICh0ZW1wQXBwcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlQ2hpbGRyZW46IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wQXBwcy5mb3JFYWNoKChhcHBMb29rdXA6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBBcHAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQXBwUm91dGVdW2FwcExvb2t1cF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcE5vZGU6IFRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cDogYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBBcHAuQXBwbGljYXRpb24uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlByb2plY3Q/Lkhvc3RzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9qZWN0Py5Ib3N0cz8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGVtcEFwcC5BcHBsaWNhdGlvbi5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUHJvamVjdExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3V0ZUNoaWxkcmVuLnB1c2godGVtcEFwcE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGVtcFJvdXRlTm9kZS5jaGlsZHJlbiA9IHRlbXBSb3V0ZUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wVHJlZURhdGEucHVzaCh0ZW1wUm91dGVOb2RlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wVHJlZURhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVJvdXRlKHJvdXRlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JvdXRlOiAnLCByb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIE9wZW5OZXdBcHBEaWFsb2coZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5ld0FwcGxpY2F0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TG9va3VwOiB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnRMb29rdXA6IHRoaXMuQWN0aXZlRW52aXJvbm1lbnRMb29rdXAsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGRpYWxvZyB3YXMgY2xvc2VkJyk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInJlc3VsdDpcIiwgcmVzdWx0KVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tIFRSRUUgLS0+XG48bGN1LXNsb3R0ZWQtY2FyZC1sZ1xuICAgICpuZ0lmPVwiUHJvamVjdExvb2t1cFwiXG4gICAgY2xhc3M9XCJmaXQtY29udGVudFwiXG4gICAgY2FyZC10aXRsZT1cIkFwcGxpY2F0aW9uXCJcbiAgICBidXR0b24tdGV4dD1cIkFkZCBSb3V0ZVwiXG4gICAgaWNvbj1cInJvdXRlXCJcbiAgICBbbG9hZGluZ109XCJMb2FkaW5nXCJcbiAgICBbbWFpbi1zbG90LWRlc2NyaXB0aW9uXT1cIkFwcGxpY2F0aW9uUm91dGVzPy5sZW5ndGggKyAnIHJvdXRlKHMpIGNvbmZpZ3VyZWQnXCJcbiAgICAobWFpbi1hY3Rpb24tY2xpY2tlZCk9XCJPcGVuTmV3QXBwRGlhbG9nKCRldmVudClcIlxuPlxuICAgIDwhLS0gPGRpdj4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRhdGFTb3VyY2VcIj5cbiAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cIkRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgbWF0VHJlZU5vZGVQYWRkaW5nPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWhlYWRlci1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ZWRpdDwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibm9kZS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkxhdW5jaCB7eyBub2RlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5sYXVuY2g8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IEhhc0NoaWxkXCJcbiAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVBhZGRpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImV4cGFuZF9tb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImNoZXZyb25fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1oZWFkZXItYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWFyb3VuZCBjZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHt7IG5vZGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPmVkaXQ8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIm5vZGUudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMYXVuY2gge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+bGF1bmNoPC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICAgIDwvbWF0LXRyZWU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2xjdS1zbG90dGVkLWNhcmQtbGc+XG4iXX0=
|
@@ -5020,13 +5020,12 @@ class ProcessorDetailsFormComponent {
|
|
5020
5020
|
else if (this.EditingApplication && !this.ProcessorDetailsFormGroup) {
|
5021
5021
|
this.setupProcessorDetailsForm();
|
5022
5022
|
}
|
5023
|
-
if (this.IsDisabled) {
|
5024
|
-
|
5025
|
-
|
5026
|
-
}
|
5027
|
-
|
5028
|
-
|
5029
|
-
}
|
5023
|
+
// if (this.IsDisabled) {
|
5024
|
+
// this.setupProcessorDetailsForm();
|
5025
|
+
// this.ProcessorDetailsFormGroup.disable();
|
5026
|
+
// } else {
|
5027
|
+
// this.ProcessorDetailsFormGroup.enable();
|
5028
|
+
// }
|
5030
5029
|
}
|
5031
5030
|
CreateNewApplication() {
|
5032
5031
|
this.SetEditingApplication(Guid.CreateRaw());
|
@@ -5246,7 +5245,7 @@ class ProcessorDetailsFormComponent {
|
|
5246
5245
|
this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(((_a = this.EditingApplication.LowCodeUnit) === null || _a === void 0 ? void 0 : _a.SourceControlLookup) || '', [Validators.required]));
|
5247
5246
|
this.IsSourceControlValid = this.SourceControlFormControl.valid;
|
5248
5247
|
this.ProcessorDetailsFormGroup.addControl('buildPath', this.formBldr.control(((_b = this.EditingApplication.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.Path) || '', [Validators.required]));
|
5249
|
-
this.ProcessorDetailsFormGroup.addControl('build', this.formBldr.control(((_c = this.EditingApplication.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.
|
5248
|
+
this.ProcessorDetailsFormGroup.addControl('build', this.formBldr.control(((_c = this.EditingApplication.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.CurrentBuild) || 'latest', [Validators.required]));
|
5250
5249
|
this.listBuildPaths();
|
5251
5250
|
}
|
5252
5251
|
setupLCUApplicationPointerForm() {
|
@@ -5325,10 +5324,10 @@ class ProcessorDetailsFormComponent {
|
|
5325
5324
|
}
|
5326
5325
|
}
|
5327
5326
|
ProcessorDetailsFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, deps: [{ token: ApplicationsFlowService }, { token: i1$1.FormBuilder }, { token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
5328
|
-
ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], Environment: ["environment", "Environment"], HasSaveButton: ["has-save-button", "HasSaveButton"], IsDisabled: ["is-disabled", "IsDisabled"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"], Loading: ["loading", "Loading"] }, outputs: { SaveFormEvent: "save-form-event" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"], components: [{ type: i3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i6$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i11$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
5327
|
+
ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], Environment: ["environment", "Environment"], HasSaveButton: ["has-save-button", "HasSaveButton"], IsDisabled: ["is-disabled", "IsDisabled"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"], Loading: ["loading", "Loading"] }, outputs: { SaveFormEvent: "save-form-event" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"], components: [{ type: i3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i6$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i11$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
5329
5328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, decorators: [{
|
5330
5329
|
type: Component,
|
5331
|
-
args: [{ selector: 'lcu-processor-details-form', template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"] }]
|
5330
|
+
args: [{ selector: 'lcu-processor-details-form', template: "<form\n class=\"processor-details-form\"\n [formGroup]=\"ProcessorDetailsFormGroup\"\n (ngSubmit)=\"SaveProcessorDetails()\"\n>\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"Loading\">\n <!-- <ng-container *ngFor=\"let fc of ValidFormControls\"> -->\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <skeleton-block\n [id]=\"fc\"\n class=\"s-block\"\n effect=\"wave\"\n ></skeleton-block>\n <!-- </ng-container> -->\n\n <lcu-loader\n *ngIf=\"LCUType === 'Redirect'\"\n [loading]=\"Loading\"\n ></lcu-loader>\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!Loading\">\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <mat-option value=\"Zip\">Zip</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"IsSourceControlValid\"\n >\n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container\n *ngFor=\"let buildPath of BuildPathOptions\"\n >\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to\n use for your configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"IsSourceControlValid\"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{\n EditingApplication?.LowCodeUnit\n ?.CurrentBuild\n }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option\n *ngFor=\"\n let scLookup of SourceControlLookups\n \"\n [value]=\"scLookup\"\n >\n {{ scLookup }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <lcu-npm-package-select\n [npm-package]=\"\n EditingApplication?.LowCodeUnit?.Package\n \"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{\n EditingApplication?.LowCodeUnit?.CurrentVersion\n }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'Zip'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Zip File\"\n formControlName=\"zipFile\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\"\n >Single Page Application</mat-option\n >\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"permanent\"\n >\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip=\"{{ redirectTooltip }}\"\n >\n info_outline\n </mat-icon>\n </div>\n\n <div>\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"includeRequest\"\n >\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n </ng-container>\n\n <!-- </mat-card> -->\n</form>\n", styles: [".s-block{margin:10px 0;width:100%;height:40px}.with-hint{margin-bottom:20px}\n"] }]
|
5332
5331
|
}], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type: i1$1.FormBuilder }, { type: EaCService }]; }, propDecorators: { EditingApplication: [{
|
5333
5332
|
type: Input,
|
5334
5333
|
args: ['editing-application']
|
@@ -5715,12 +5714,11 @@ class EditApplicationFormComponent {
|
|
5715
5714
|
ngOnInit() { }
|
5716
5715
|
ngOnChanges() {
|
5717
5716
|
this.setupApplicationForm();
|
5718
|
-
if (this.IsDisabled) {
|
5719
|
-
|
5720
|
-
}
|
5721
|
-
|
5722
|
-
|
5723
|
-
}
|
5717
|
+
// if (this.IsDisabled) {
|
5718
|
+
// this.ApplicationFormGroup.disable();
|
5719
|
+
// } else {
|
5720
|
+
// this.ApplicationFormGroup.enable();
|
5721
|
+
// }
|
5724
5722
|
}
|
5725
5723
|
SubmitApplicationControl() {
|
5726
5724
|
console.log('application form: ', this.ApplicationFormGroup.value);
|
@@ -5885,9 +5883,9 @@ class BreadcrumbComponent {
|
|
5885
5883
|
if (this.ProjectLookup) {
|
5886
5884
|
lastLevel = 'project';
|
5887
5885
|
}
|
5888
|
-
|
5889
|
-
|
5890
|
-
|
5886
|
+
if (this.SelectedRoute) {
|
5887
|
+
lastLevel = 'route';
|
5888
|
+
}
|
5891
5889
|
if (this.SelectedApplication) {
|
5892
5890
|
lastLevel = 'app';
|
5893
5891
|
}
|
@@ -5905,18 +5903,18 @@ class BreadcrumbComponent {
|
|
5905
5903
|
rLink = ['/project', this.ProjectLookup];
|
5906
5904
|
}
|
5907
5905
|
if (this.SelectedApplication) {
|
5908
|
-
rLink = ['/project', this.ProjectLookup];
|
5909
|
-
|
5906
|
+
// rLink = ['/project', this.ProjectLookup];
|
5907
|
+
rLink = ['/route', this.SelectedRoute, this.ProjectLookup];
|
5910
5908
|
}
|
5911
5909
|
console.log('rlink: ', rLink);
|
5912
5910
|
return rLink;
|
5913
5911
|
}
|
5914
5912
|
}
|
5915
5913
|
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: EaCService }, { token: i1$4.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
5916
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], Enterprise: ["enterprise", "Enterprise"], Enterprises: ["enterprises", "Enterprises"], Loading: ["loading", "Loading"], Projects: ["projects", "Projects"], ProjectLookup: ["project-lookup", "ProjectLookup"], RoutedApplications: ["routed-application", "RoutedApplications"], SelectedRoute: ["selected-route", "SelectedRoute"], ApplicationsBank: ["applications-bank", "ApplicationsBank"] }, usesOnChanges: true, ngImport: i0, template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <!-- <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div> -->\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<!-- MOBILE VIEW -->\n\n<div\n class=\"breadcrumb-container\"\n *ngIf=\"IsSmScreen\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n>\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">expand_more</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <button\n *ngIf=\"ReturnRouterLink\"\n mat-icon-button\n [routerLink]=\"ReturnRouterLink\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <ng-container [ngSwitch]=\"CurrentLevel\">\n <ng-container *ngSwitchCase=\"'ent'\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <!-- <mat-icon>home</mat-icon> -->\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'project'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/project', ProjectLookup]\"\n >\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'route'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'app'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i2$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
5914
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], Enterprise: ["enterprise", "Enterprise"], Enterprises: ["enterprises", "Enterprises"], Loading: ["loading", "Loading"], Projects: ["projects", "Projects"], ProjectLookup: ["project-lookup", "ProjectLookup"], RoutedApplications: ["routed-application", "RoutedApplications"], SelectedRoute: ["selected-route", "SelectedRoute"], ApplicationsBank: ["applications-bank", "ApplicationsBank"] }, usesOnChanges: true, ngImport: i0, template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<!-- MOBILE VIEW -->\n\n<div\n class=\"breadcrumb-container\"\n *ngIf=\"IsSmScreen\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n>\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">expand_more</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <button\n *ngIf=\"ReturnRouterLink\"\n mat-icon-button\n [routerLink]=\"ReturnRouterLink\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <ng-container [ngSwitch]=\"CurrentLevel\">\n <ng-container *ngSwitchCase=\"'ent'\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <!-- <mat-icon>home</mat-icon> -->\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'project'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/project', ProjectLookup]\"\n >\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'route'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'app'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i7$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i2$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
|
5917
5915
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
5918
5916
|
type: Component,
|
5919
|
-
args: [{ selector: 'lcu-breadcrumb', template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <!-- <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div> -->\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<!-- MOBILE VIEW -->\n\n<div\n class=\"breadcrumb-container\"\n *ngIf=\"IsSmScreen\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n>\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">expand_more</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <button\n *ngIf=\"ReturnRouterLink\"\n mat-icon-button\n [routerLink]=\"ReturnRouterLink\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <ng-container [ngSwitch]=\"CurrentLevel\">\n <ng-container *ngSwitchCase=\"'ent'\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <!-- <mat-icon>home</mat-icon> -->\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'project'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/project', ProjectLookup]\"\n >\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'route'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'app'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"] }]
|
5917
|
+
args: [{ selector: 'lcu-breadcrumb', template: "<div class=\"breadcrumb-container\" *ngIf=\"!IsSmScreen\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/project', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n\n<!-- MOBILE VIEW -->\n\n<div\n class=\"breadcrumb-container\"\n *ngIf=\"IsSmScreen\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n>\n <ng-container *ngIf=\"Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"\n >chevron_left</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Current Path</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">expand_more</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"!Loading\">\n <button\n *ngIf=\"ReturnRouterLink\"\n mat-icon-button\n [routerLink]=\"ReturnRouterLink\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <ng-container [ngSwitch]=\"CurrentLevel\">\n <ng-container *ngSwitchCase=\"'ent'\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprise']\">\n <!-- <mat-icon>home</mat-icon> -->\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprise']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'project'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/project', ProjectLookup]\"\n >\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/project', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'route'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/route', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/route', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'app'\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/application',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/application',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span\n *ngIf=\"\n RoutedApplications[SelectedRoute][appLookup];\n let app\n \"\n >{{ app.Application?.Name }}</span\n >\n </button>\n </mat-menu>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"] }]
|
5920
5918
|
}], ctorParameters: function () { return [{ type: EaCService }, { type: i1$4.BreakpointObserver }]; }, propDecorators: { ApplicationLookup: [{
|
5921
5919
|
type: Input,
|
5922
5920
|
args: ['application-lookup']
|
@@ -8457,6 +8455,7 @@ class ProjectCardComponent {
|
|
8457
8455
|
url: 'https://' +
|
8458
8456
|
(tempProj === null || tempProj === void 0 ? void 0 : tempProj.Hosts[((_a = tempProj === null || tempProj === void 0 ? void 0 : tempProj.Hosts) === null || _a === void 0 ? void 0 : _a.length) - 1]) +
|
8459
8457
|
this.AppRoute,
|
8458
|
+
routerLink: ['/route', this.AppRoute, pLookup],
|
8460
8459
|
};
|
8461
8460
|
let tempApps = this.CurrentRouteApplicationLookups;
|
8462
8461
|
if (tempApps) {
|
@@ -8665,6 +8664,7 @@ class RouteCardComponent {
|
|
8665
8664
|
url: 'https://' +
|
8666
8665
|
((_a = this.Project) === null || _a === void 0 ? void 0 : _a.Hosts[((_c = (_b = this.Project) === null || _b === void 0 ? void 0 : _b.Hosts) === null || _c === void 0 ? void 0 : _c.length) - 1]) +
|
8667
8666
|
this.AppRoute,
|
8667
|
+
routerLink: ['/route', this.AppRoute, this.ProjectLookup],
|
8668
8668
|
};
|
8669
8669
|
let tempApps = this.CurrentRouteApplicationLookups;
|
8670
8670
|
if (tempApps) {
|