@c8y/ngx-components 1018.503.62 → 1018.503.63
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/ecosystem/packages/package-details/package-details.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -107,9 +107,9 @@ export class PackageDetailsComponent {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
PackageDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FetchClient }, { token: i3.WizardModalService }, { token: i4.EcosystemService }, { token: i3.ContextRouteService }, { token: i3.PluginsService }, { token: i4.PackageAvailabilityService }, { token: i3.AppStateService }, { token: i3.PluginsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml : { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i8.PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i3.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i4.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
|
|
110
|
+
PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i8.PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i3.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i4.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
|
|
111
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, decorators: [{
|
|
112
112
|
type: Component,
|
|
113
|
-
args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability
|
|
113
|
+
args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n" }]
|
|
114
114
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FetchClient }, { type: i3.WizardModalService }, { type: i4.EcosystemService }, { type: i3.ContextRouteService }, { type: i3.PluginsService }, { type: i4.PackageAvailabilityService }, { type: i3.AppStateService }, { type: i3.PluginsService }]; } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFFTCxXQUFXLEVBSVosTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUVMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGNBQWMsRUFFZCxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLHVCQUF1QjtJQXNCbEMsWUFDVSxjQUE4QixFQUM5QixNQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QiwwQkFBc0QsRUFDdEQsRUFBbUIsRUFDbkIsYUFBNkI7UUFSN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBNUJ2QyxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUszQixxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakYsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQixnQ0FBMkIsR0FBRyxLQUFLLENBQUM7UUFLM0Isc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFDeEMsaUJBQVksR0FBRyxXQUFXLENBQUM7UUFDM0Isc0JBQWlCLEdBQXlCLGlCQUFpQixDQUFDO1FBQ3BELFlBQU8sR0FBUSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xGLHlCQUFvQixHQUFHLEdBQUcsQ0FBQztJQVloQyxDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQztRQUNyRixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sWUFBWSxHQUFRO1lBQ3hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxvQkFBb0I7WUFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFDRixNQUFNLFlBQVksR0FBaUIsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCLENBQUMsSUFBa0IsRUFBRSxlQUF3QztRQUMxRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyw4QkFBOEIsQ0FDekUsSUFBSSxFQUNKLGVBQWUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxlQUFlLENBQUM7UUFDckUsSUFBSSxzQkFBc0IsRUFBRTtZQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQW1CO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSTtZQUNqQixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7UUFDOUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLHNCQUFzQjtZQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDeEUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU5QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQzdCLE9BQU8sTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFzQixDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7b0hBbEhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ2pDcEMscXhOQStNQTsyRkQ5S2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBcHBsaWNhdGlvbixcbiAgSUZldGNoT3B0aW9ucyxcbiAgSUZldGNoUmVzcG9uc2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFdpemFyZE1vZGFsU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblN0YXRlLFxuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBFY29zeXN0ZW1XaXphcmRzLFxuICBwYWNrYWdlUHJvcGVydGllcyxcbiAgUEFDS0FHRV9UWVBFX0xBQkVMUyxcbiAgUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWFya2Rvd246IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb24gPSB7fTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgaXNQYWNrYWdlQmx1ZXByaW50OiBib29sZWFuO1xuICBleHBvcnRlZFBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICBpc093bmVkQnlDdXJyZW50VGVuYW50ID0gZmFsc2U7XG4gIGlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9IGZhbHNlO1xuICBwYWNrYWdlQ29udGVudFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBwYWNrYWdlVHlwZTogUGFja2FnZVR5cGU7XG4gIHBhY2thZ2VBdmFpbGFiaWxpdHk6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5O1xuXG4gIHJlYWRvbmx5IHBhY2thZ2VUeXBlTGFiZWxzID0gUEFDS0FHRV9UWVBFX0xBQkVMUztcbiAgcmVhZG9ubHkgUEFDS0FHRV9UWVBFID0gUGFja2FnZVR5cGU7XG4gIHJlYWRvbmx5IHBhY2thZ2VQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnM6IGFueSA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfTtcbiAgcHJpdmF0ZSBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IDQwNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2U6IFBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9ICEhdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5hbGxvd0NyZWF0ZVRlbmFudHM7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgZGVwbG95KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgd2l6YXJkQ29uZmlnOiB7fSxcbiAgICAgIGlkOiBFY29zeXN0ZW1XaXphcmRzLkJMVUVQUklOVF9ERVBMT1lNRU5ULFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwY2tnOiBJQXBwbGljYXRpb24sIG5ld0F2YWlsYWJpbGl0eTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkpIHtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSB0cnVlO1xuICAgIHBja2cgPSBhd2FpdCB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmFza0lmQXZhaWxhYmlsaXR5U2hvdWxkQmVTZXRUbyhcbiAgICAgIHBja2csXG4gICAgICBuZXdBdmFpbGFiaWxpdHlcbiAgICApO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUhhc0NoYW5nZWQgPSBwY2tnLmF2YWlsYWJpbGl0eSA9PT0gbmV3QXZhaWxhYmlsaXR5O1xuICAgIGlmIChhdmFpbGFiaWxpdHlIYXNDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHBja2cpO1xuICAgICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnNldENvbnRleHQodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgcGNrZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFja2FnZUF2YWlsYWJpbGl0eSA9IHRoaXMucGFja2FnZS5hdmFpbGFiaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwY2tnPzogSUFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5wYWNrYWdlID0gcGNrZ1xuICAgICAgPyBwY2tnXG4gICAgICA6IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5wYWNrYWdlQXZhaWxhYmlsaXR5ID0gdGhpcy5wYWNrYWdlLmF2YWlsYWJpbGl0eTtcbiAgICB0aGlzLnBhY2thZ2VDb250ZW50U3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0UGFja2FnZUNvbnRlbnRTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMucGFja2FnZVR5cGUgPSB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0UGFja2FnZVR5cGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBhY2thZ2U/Lm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMucGFja2FnZT8ubWFuaWZlc3Q/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMubWFya2Rvd24gPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGVDb250ZW50KCk7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgdGhpcy5hcHBTdGF0ZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNQYWNrYWdlQmx1ZXByaW50ID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzUGFja2FnZUJsdWVwcmludCh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNPd25lZEJ5Q3VycmVudFRlbmFudCA9XG4gICAgICB0aGlzLnBhY2thZ2U/Lm93bmVyPy50ZW5hbnQ/LmlkID09PSB0aGlzLnVpLmN1cnJlbnRUZW5hbnQudmFsdWU/Lm5hbWU7XG4gICAgdGhpcy5leHRyYWN0UGFja2FnZU1GRXhwb3J0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UGFja2FnZU1GRXhwb3J0cygpIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRkV4cG9ydHModGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmV4cG9ydGVkUGx1Z2lucyQubmV4dChleHBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVhZG1lRmlsZUNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkbWVGaWxlID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlKCk7XG5cbiAgICBpZiAocmVhZG1lRmlsZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRtZUZpbGUudGV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGUoKTogUHJvbWlzZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICBsZXQgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZTtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgIH07XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1SRUFETUUubWRgLCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN0YXR1cyA9PT0gdGhpcy5OT1RfRk9VTkRfRVJST1JfQ09ERSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1yZWFkbWUubWRgLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgL2FwcHMvJHt0aGlzLnBhY2thZ2UuY29udGV4dFBhdGh9L2A7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWF0b20nXCJcbiAgICBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidiaWctcGFyY2VsJ1wiXG4gICAgW2xhYmVsXT1cIidFeHRlbnNpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwibmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ0V4dGVuc2lvbiBwYWNrYWdlJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuICAqbmdJZj1cImlzT3duZWRCeUN1cnJlbnRUZW5hbnQgJiYgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIEF2YWlsYWJpbGl0eVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWNrYWdlQXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwYWNrYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdmFpbGFiaWxpdHkgb2YgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2UuYXZhaWxhYmlsaXRpZXNcIlxuICAgICAgICAgICAgW25nVmFsdWVdPVwiYXZhaWxhYmlsaXR5LnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBhdmFpbGFiaWxpdHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBkLWdyaWQgZ3JpZF9fY29sLS04LTQtLW1kIGdyaWRfX3Jvdy0tZml0LWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgZ3JpZF9fY29sLS1mdWxsc3BhbiBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTI0IHAtYi0yNCBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY2FyZF9fcmliYm9uIGJ0bi1jbGVhblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgKHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwpICtcbiAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAocGFja2FnZVR5cGVMYWJlbHNbcGFja2FnZVR5cGVdLnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIHRvb2x0aXA9XCJ7eyBwYWNrYWdlVHlwZUxhYmVsc1twYWNrYWdlVHlwZV0udG9vbHRpcCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cInBhY2thZ2VUeXBlICE9PSBQQUNLQUdFX1RZUEUuQ1VTVE9NXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWluZm8nOiBwYWNrYWdlVHlwZSA9PT0gUEFDS0FHRV9UWVBFLkNPTU1VTklUWSxcbiAgICAgICAgICAgICdiZy1wcmltYXJ5JzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5PRkZJQ0lBTFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFja2FnZS5sYWJlbCB8IHRyYW5zbGF0ZVBhY2thZ2VMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi00OFwiXG4gICAgICAgICAgICBjOHlJY29uPVwiYmlnLXBhcmNlbFwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAoYXBwU3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlKSArICc6ICcgKyAoYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcFN0YXRlPy5jbGFzc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIChwYWNrYWdlQ29udGVudFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSkgK1xuICAgICAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAgICAgKHBhY2thZ2VDb250ZW50U3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwicGFja2FnZUNvbnRlbnRTdGF0ZT8udG9vbHRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGFja2FnZUNvbnRlbnRTdGF0ZT8uY2xhc3NcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IGNvbC0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtODBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LWJvbGQgbS1iLThcIj57eyBuYW1lIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCJkZXNjcmlwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGVtPnt7ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuJyB8IHRyYW5zbGF0ZSB9fTwvZW0+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbC0zIHRleHQtcmlnaHQtbWQgcC1yLW1kLTQwXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1BhY2thZ2VCbHVlcHJpbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVwbG95KClcIlxuICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktcGFja2FnZS1kZXRhaWxzLS1kZXBsb3ktYXBwbGljYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJvdXRwdXRcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0RlcGxveSBhcHBsaWNhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJwYWNrYWdlLm1hbmlmZXN0XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJwYWNrYWdlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgID48L2M4eS1wcm9wZXJ0aWVzLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgJ0V4dGVuc2lvbiBwYWNrYWdlIG92ZXJ2aWV3JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTZcIj5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ3VzZXItbWFudWFsJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gUkVBRE1FLm1kIGZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnVG8gdmlldyB0aGUgY29udGVudHMgb2YgJnF1b3Q7UkVBRE1FJnF1b3Q7LCBhZGQgdGhlIGZpbGUgJnF1b3Q7UkVBRE1FLm1kJnF1b3Q7IHRvIHRoZSBwYWNrYWdlLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIW1hcmtkb3duXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwibWFya2Rvd24gfCBtYXJrZG93blRvSHRtbCA6IHsgYmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItYm90dG9tIHZpc2libGUtc20gdmlzaWJsZS14c1wiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnUGFja2FnZSBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItbGVmdCBmbGV4LWdyb3dcIj5cbiAgICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicC0xNlwiXG4gICAgICAgICpuZ0lmPVwiKGV4cG9ydGVkUGx1Z2lucyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwbHVnaW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoaXMgcGFja2FnZSBkb2VzblxcJ3QgY29udGFpbiBwbHVnaW5zLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktcGx1Z2luLWxpc3RcbiAgICAgICAgW3BsdWdpbnMkXT1cImV4cG9ydGVkUGx1Z2lucyRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtpbnN0YWxsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3BhY2thZ2VdPVwicGFja2FnZVwiXG4gICAgICA+PC9jOHktcGx1Z2luLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFFTCxXQUFXLEVBSVosTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUVMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGNBQWMsRUFFZCxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLHVCQUF1QjtJQXNCbEMsWUFDVSxjQUE4QixFQUM5QixNQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QiwwQkFBc0QsRUFDdEQsRUFBbUIsRUFDbkIsYUFBNkI7UUFSN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixH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R0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFzQixDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7b0hBbEhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ2pDcEMsbXpOQStNQTsyRkQ5S2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBcHBsaWNhdGlvbixcbiAgSUZldGNoT3B0aW9ucyxcbiAgSUZldGNoUmVzcG9uc2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFdpemFyZE1vZGFsU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblN0YXRlLFxuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBFY29zeXN0ZW1XaXphcmRzLFxuICBwYWNrYWdlUHJvcGVydGllcyxcbiAgUEFDS0FHRV9UWVBFX0xBQkVMUyxcbiAgUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWFya2Rvd246IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb24gPSB7fTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgaXNQYWNrYWdlQmx1ZXByaW50OiBib29sZWFuO1xuICBleHBvcnRlZFBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICBpc093bmVkQnlDdXJyZW50VGVuYW50ID0gZmFsc2U7XG4gIGlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9IGZhbHNlO1xuICBwYWNrYWdlQ29udGVudFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBwYWNrYWdlVHlwZTogUGFja2FnZVR5cGU7XG4gIHBhY2thZ2VBdmFpbGFiaWxpdHk6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5O1xuXG4gIHJlYWRvbmx5IHBhY2thZ2VUeXBlTGFiZWxzID0gUEFDS0FHRV9UWVBFX0xBQkVMUztcbiAgcmVhZG9ubHkgUEFDS0FHRV9UWVBFID0gUGFja2FnZVR5cGU7XG4gIHJlYWRvbmx5IHBhY2thZ2VQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnM6IGFueSA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfTtcbiAgcHJpdmF0ZSBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IDQwNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2U6IFBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9ICEhdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5hbGxvd0NyZWF0ZVRlbmFudHM7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgZGVwbG95KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgd2l6YXJkQ29uZmlnOiB7fSxcbiAgICAgIGlkOiBFY29zeXN0ZW1XaXphcmRzLkJMVUVQUklOVF9ERVBMT1lNRU5ULFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwY2tnOiBJQXBwbGljYXRpb24sIG5ld0F2YWlsYWJpbGl0eTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkpIHtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSB0cnVlO1xuICAgIHBja2cgPSBhd2FpdCB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmFza0lmQXZhaWxhYmlsaXR5U2hvdWxkQmVTZXRUbyhcbiAgICAgIHBja2csXG4gICAgICBuZXdBdmFpbGFiaWxpdHlcbiAgICApO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUhhc0NoYW5nZWQgPSBwY2tnLmF2YWlsYWJpbGl0eSA9PT0gbmV3QXZhaWxhYmlsaXR5O1xuICAgIGlmIChhdmFpbGFiaWxpdHlIYXNDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHBja2cpO1xuICAgICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnNldENvbnRleHQodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgcGNrZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFja2FnZUF2YWlsYWJpbGl0eSA9IHRoaXMucGFja2FnZS5hdmFpbGFiaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwY2tnPzogSUFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5wYWNrYWdlID0gcGNrZ1xuICAgICAgPyBwY2tnXG4gICAgICA6IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5wYWNrYWdlQXZhaWxhYmlsaXR5ID0gdGhpcy5wYWNrYWdlLmF2YWlsYWJpbGl0eTtcbiAgICB0aGlzLnBhY2thZ2VDb250ZW50U3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0UGFja2FnZUNvbnRlbnRTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMucGFja2FnZVR5cGUgPSB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0UGFja2FnZVR5cGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBhY2thZ2U/Lm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMucGFja2FnZT8ubWFuaWZlc3Q/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMubWFya2Rvd24gPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGVDb250ZW50KCk7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgdGhpcy5hcHBTdGF0ZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNQYWNrYWdlQmx1ZXByaW50ID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzUGFja2FnZUJsdWVwcmludCh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNPd25lZEJ5Q3VycmVudFRlbmFudCA9XG4gICAgICB0aGlzLnBhY2thZ2U/Lm93bmVyPy50ZW5hbnQ/LmlkID09PSB0aGlzLnVpLmN1cnJlbnRUZW5hbnQudmFsdWU/Lm5hbWU7XG4gICAgdGhpcy5leHRyYWN0UGFja2FnZU1GRXhwb3J0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UGFja2FnZU1GRXhwb3J0cygpIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRkV4cG9ydHModGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmV4cG9ydGVkUGx1Z2lucyQubmV4dChleHBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVhZG1lRmlsZUNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkbWVGaWxlID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlKCk7XG5cbiAgICBpZiAocmVhZG1lRmlsZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRtZUZpbGUudGV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGUoKTogUHJvbWlzZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICBsZXQgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZTtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgIH07XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1SRUFETUUubWRgLCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN0YXR1cyA9PT0gdGhpcy5OT1RfRk9VTkRfRVJST1JfQ09ERSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1yZWFkbWUubWRgLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgL2FwcHMvJHt0aGlzLnBhY2thZ2UuY29udGV4dFBhdGh9L2A7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWF0b20nXCJcbiAgICBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidiaWctcGFyY2VsJ1wiXG4gICAgW2xhYmVsXT1cIidFeHRlbnNpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwibmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ0V4dGVuc2lvbiBwYWNrYWdlJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuICAqbmdJZj1cImlzT3duZWRCeUN1cnJlbnRUZW5hbnQgJiYgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIEF2YWlsYWJpbGl0eWBvZiBwYWNrYWdlIGJhc2VkIG9uIGFwcCBzdGF0ZWBcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicGFja2FnZUF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQ2hhbmdpbmdBdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVBhY2thZ2VBdmFpbGFiaWxpdHkocGFja2FnZSwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIHBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmF2YWlsYWJpbGl0aWVzXCJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF2YWlsYWJpbGl0eS52YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYXZhaWxhYmlsaXR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgZC1ncmlkIGdyaWRfX2NvbC0tOC00LS1tZCBncmlkX19yb3ctLWZpdC1hdXRvXCI+XG4gIDxkaXYgY2xhc3M9XCJiZy1sZXZlbC0xIGdyaWRfX2NvbC0tZnVsbHNwYW4gc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0yNCBwLWItMjQgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImNhcmRfX3JpYmJvbiBidG4tY2xlYW5cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIChwYWNrYWdlLmxhYmVsIHwgdHJhbnNsYXRlUGFja2FnZUxhYmVsKSArXG4gICAgICAgICAgJzogJyArXG4gICAgICAgICAgKHBhY2thZ2VUeXBlTGFiZWxzW3BhY2thZ2VUeXBlXS50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICB0b29sdGlwPVwie3sgcGFja2FnZVR5cGVMYWJlbHNbcGFja2FnZVR5cGVdLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJwYWNrYWdlVHlwZSAhPT0gUEFDS0FHRV9UWVBFLkNVU1RPTVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdiZy1pbmZvJzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5DT01NVU5JVFksXG4gICAgICAgICAgICAnYmctcHJpbWFyeSc6IHBhY2thZ2VUeXBlID09PSBQQUNLQUdFX1RZUEUuT0ZGSUNJQUxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIlxuICAgICAgICAgICAgYzh5SWNvbj1cImJpZy1wYXJjZWxcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgKGFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cImFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcHBTdGF0ZT8uY2xhc3NcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhcHBTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAocGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAgICAgJzogJyArXG4gICAgICAgICAgICAgIChwYWNrYWdlQ29udGVudFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LmNsYXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTgwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgdGV4dC1ib2xkIG0tYi04XCI+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxlbT57eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlLicgfCB0cmFuc2xhdGUgfX08L2VtPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMyB0ZXh0LXJpZ2h0LW1kIHAtci1tZC00MFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNQYWNrYWdlQmx1ZXByaW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlcGxveSgpXCJcbiAgICAgICAgICAgICAgICBkYXRhLWN5PVwiYzh5LXBhY2thZ2UtZGV0YWlscy0tZGVwbG95LWFwcGxpY2F0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgICAgICBjOHlJY29uPVwib3V0cHV0XCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZXBsb3kgYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxjOHktcHJvcGVydGllcy1saXN0XG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicGFja2FnZS5tYW5pZmVzdFwiXG4gICAgICAgICAgICAgICAgW3Byb3BlcnRpZXNdPVwicGFja2FnZVByb3BlcnRpZXNcIlxuICAgICAgICAgICAgICA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdFeHRlbnNpb24gcGFja2FnZSBvdmVydmlldycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWwtMTYgcC1yLTE2XCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIid1c2VyLW1hbnVhbCdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIFJFQURNRS5tZCBmb3VuZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1RvIHZpZXcgdGhlIGNvbnRlbnRzIG9mICZxdW90O1JFQURNRSZxdW90OywgYWRkIHRoZSBmaWxlICZxdW90O1JFQURNRS5tZCZxdW90OyB0byB0aGUgcGFja2FnZS4nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICAqbmdJZj1cIiFtYXJrZG93blwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIm1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItYm90dG9tIHZpc2libGUtc20gdmlzaWJsZS14c1wiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnUGFja2FnZSBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItbGVmdCBmbGV4LWdyb3dcIj5cbiAgICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicC0xNlwiXG4gICAgICAgICpuZ0lmPVwiKGV4cG9ydGVkUGx1Z2lucyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwbHVnaW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoaXMgcGFja2FnZSBkb2VzblxcJ3QgY29udGFpbiBwbHVnaW5zLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktcGx1Z2luLWxpc3RcbiAgICAgICAgW3BsdWdpbnMkXT1cImV4cG9ydGVkUGx1Z2lucyRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtpbnN0YWxsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3BhY2thZ2VdPVwicGFja2FnZVwiXG4gICAgICA+PC9jOHktcGx1Z2luLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1773,10 +1773,10 @@ class PackageDetailsComponent {
|
|
|
1773
1773
|
}
|
|
1774
1774
|
}
|
|
1775
1775
|
PackageDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i4.FetchClient }, { token: i2.WizardModalService }, { token: i1.EcosystemService }, { token: i2.ContextRouteService }, { token: i2.PluginsService }, { token: i1.PackageAvailabilityService }, { token: i2.AppStateService }, { token: i2.PluginsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1776
|
-
PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml : { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i2.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i1.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
|
|
1776
|
+
PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i2.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i1.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
|
|
1777
1777
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, decorators: [{
|
|
1778
1778
|
type: Component,
|
|
1779
|
-
args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability
|
|
1779
|
+
args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n" }]
|
|
1780
1780
|
}], ctorParameters: function () { return [{ type: i1$2.ActivatedRoute }, { type: i4.FetchClient }, { type: i2.WizardModalService }, { type: i1.EcosystemService }, { type: i2.ContextRouteService }, { type: i2.PluginsService }, { type: i1.PackageAvailabilityService }, { type: i2.AppStateService }, { type: i2.PluginsService }]; } });
|
|
1781
1781
|
|
|
1782
1782
|
class PackagesListComponent {
|