@onecx/angular-accelerator 5.29.0 → 5.31.0
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/esm2022/index.mjs +3 -1
- package/esm2022/lib/angular-accelerator.module.mjs +26 -11
- package/esm2022/lib/components/column-group-selection/column-group-selection.component.mjs +3 -3
- package/esm2022/lib/components/diagram/diagram.component.mjs +26 -3
- package/esm2022/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +24 -6
- package/esm2022/lib/components/page-header/page-header.component.mjs +3 -3
- package/esm2022/lib/directives/if-permission.directive.mjs +3 -11
- package/esm2022/lib/injection-tokens/has-permission-checker.mjs +10 -0
- package/esm2022/lib/model/diagram-data.mjs +1 -1
- package/esm2022/lib/services/translation-cache.service.mjs +4 -1
- package/esm2022/lib/utils/async-translate-loader.utils.mjs +4 -1
- package/esm2022/lib/utils/caching-translate-loader.utils.mjs +4 -1
- package/esm2022/lib/utils/create-translate-loader.utils.mjs +4 -1
- package/esm2022/lib/utils/translate.combined.loader.mjs +4 -1
- package/fesm2022/onecx-angular-accelerator.mjs +96 -28
- package/fesm2022/onecx-angular-accelerator.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/components/diagram/diagram.component.d.ts +8 -1
- package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +10 -1
- package/lib/components/page-header/page-header.component.d.ts +2 -0
- package/lib/directives/if-permission.directive.d.ts +2 -11
- package/lib/injection-tokens/has-permission-checker.d.ts +13 -0
- package/lib/model/diagram-data.d.ts +1 -0
- package/lib/services/translation-cache.service.d.ts +3 -0
- package/lib/utils/async-translate-loader.utils.d.ts +3 -0
- package/lib/utils/caching-translate-loader.utils.d.ts +3 -0
- package/lib/utils/create-translate-loader.utils.d.ts +3 -0
- package/lib/utils/translate.combined.loader.d.ts +3 -0
- package/package.json +10 -6
|
@@ -195,11 +195,11 @@ export class PageHeaderComponent {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PageHeaderComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.TranslateService }, { token: i3.AppStateService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: PageHeaderComponent, selector: "ocx-page-header", inputs: { header: "header", loading: "loading", figureBackground: "figureBackground", showFigure: "showFigure", figureImage: "figureImage", disableDefaultActions: "disableDefaultActions", subheader: "subheader", actions: "actions", objectDetails: "objectDetails", showBreadcrumbs: "showBreadcrumbs", manualBreadcrumbs: "manualBreadcrumbs", enableGridView: "enableGridView", gridLayoutDesktopColumns: "gridLayoutDesktopColumns" }, outputs: { save: "save" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n alt=\"Figure image\"\n class=\"w-full\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [pTooltip]=\"(action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n pTooltip=\"{{ 'OCX_PAGE_HEADER.MORE_ACTIONS' | translate }}\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"('OCX_PAGE_HEADER.MORE_ACTIONS' | translate)\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure{width:3rem;height:3rem;margin-right:.5rem;position:relative}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i8.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i9.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i10.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.DynamicPipe, name: "dynamicPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: PageHeaderComponent, selector: "ocx-page-header", inputs: { header: "header", loading: "loading", figureBackground: "figureBackground", showFigure: "showFigure", figureImage: "figureImage", disableDefaultActions: "disableDefaultActions", subheader: "subheader", actions: "actions", objectDetails: "objectDetails", showBreadcrumbs: "showBreadcrumbs", manualBreadcrumbs: "manualBreadcrumbs", enableGridView: "enableGridView", gridLayoutDesktopColumns: "gridLayoutDesktopColumns" }, outputs: { save: "save" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n alt=\"Figure image\"\n class=\"w-full\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n pTooltip=\"{{ 'OCX_PAGE_HEADER.MORE_ACTIONS' | translate }}\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"('OCX_PAGE_HEADER.MORE_ACTIONS' | translate)\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure{width:3rem;height:3rem;margin-right:.5rem;position:relative}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i8.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i9.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i10.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.DynamicPipe, name: "dynamicPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
199
199
|
}
|
|
200
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
201
201
|
type: Component,
|
|
202
|
-
args: [{ selector: 'ocx-page-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n alt=\"Figure image\"\n class=\"w-full\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <p-button\n
|
|
202
|
+
args: [{ selector: 'ocx-page-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n alt=\"Figure image\"\n class=\"w-full\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n pTooltip=\"{{ 'OCX_PAGE_HEADER.MORE_ACTIONS' | translate }}\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"('OCX_PAGE_HEADER.MORE_ACTIONS' | translate)\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure{width:3rem;height:3rem;margin-right:.5rem;position:relative}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"] }]
|
|
203
203
|
}], ctorParameters: () => [{ type: i1.BreadcrumbService }, { type: i2.TranslateService }, { type: i3.AppStateService }, { type: i3.UserService }], propDecorators: { header: [{
|
|
204
204
|
type: Input
|
|
205
205
|
}], loading: [{
|
|
@@ -235,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
235
235
|
type: ContentChild,
|
|
236
236
|
args: ['additionalToolbarContentLeft']
|
|
237
237
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7Ozs7Ozs7Ozs7O0FBZ0VyRSxNQUFNLE9BQU8sbUJBQW1CO0lBd0I5QixJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNyQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtJ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QUF3QjtzQkFEdkIsS0FBSztnQkFJTixJQUFJO3NCQURILE1BQU07Z0JBSVAsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLDBCQUEwQjtnQkFJeEMsNEJBQTRCO3NCQUQzQixZQUFZO3VCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZUljb25zIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBjb25jYXQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JyZWFkY3J1bWIuc2VydmljZSdcbmltcG9ydCB7IFByaW1lSWNvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ByaW1laWNvbi51dGlscydcblxuLyoqXG4gKiBBY3Rpb24gZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24ge1xuICBpZD86IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQZXJtaXNzaW9uIGZvciB0aGlzIGFjdGlvbi4gSWYgdGhlIGN1cnJlbnQgdXNlciBkb2VzIG5vdCBoYXZlIHRoaXMgcGVybWlzc2lvbiwgdGhlIGFjdGlvbiB3aWxsIG5vdCBiZSBzaG93bi5cbiAgICovXG4gIHBlcm1pc3Npb24/OiBzdHJpbmdcbiAgdGl0bGU/OiBzdHJpbmdcbiAgdGl0bGVLZXk/OiBzdHJpbmdcbiAgYXJpYUxhYmVsPzogc3RyaW5nXG4gIGFyaWFMYWJlbEtleT86IHN0cmluZ1xuICBidG5DbGFzcz86IHN0cmluZ1xuICBhY3Rpb25DYWxsYmFjaygpOiB2b2lkXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBzaG93PzogJ2Fsd2F5cycgfCAnYXNPdmVyZmxvdydcbiAgY29uZGl0aW9uYWw/OiBib29sZWFuXG4gIC8vIE5vdGU6IFRoaXMgY3VycmVudGx5IGRvZXNuJ3Qgd29yayB3aXRoIGR5bmFtaWMgdmFsdWVzLCBzaW5jZSBhIHBhc3NlZCBpbiBBY3Rpb24gaXMganVzdCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAgLy8gQXMgYSB3b3JrYXJvdW5kLCB5b3UgY2FuIG1hbnVhbGx5IHVwZGF0ZS9yZXBsYWNlIHRoZSBwYXNzZWQgaW4gQWN0aW9uIGlmIHlvdSB3aXNoIHRvIHVwZGF0ZSBhIHNob3dDb25kaXRpb25cbiAgc2hvd0NvbmRpdGlvbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3REZXRhaWxJdGVtIHtcbiAgbGFiZWw6IHN0cmluZ1xuICB2YWx1ZT86IHN0cmluZ1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGB2YWx1ZVRvb2x0aXBgIGluc3RlYWRcbiAgICovXG4gIHRvb2x0aXA/OiBzdHJpbmdcbiAgbGFiZWxUb29sdGlwPzogc3RyaW5nXG4gIHZhbHVlVG9vbHRpcD86IHN0cmluZ1xuICBpY29uPzogUHJpbWVJY29uXG4gIGljb25TdHlsZUNsYXNzPzogc3RyaW5nXG4gIGxhYmVsUGlwZT86IFR5cGU8YW55PlxuICB2YWx1ZVBpcGU/OiBUeXBlPGFueT5cbiAgdmFsdWVQaXBlQXJncz86IHN0cmluZ1xuICB2YWx1ZUNzc0NsYXNzPzogc3RyaW5nXG4gIGFjdGlvbkl0ZW1JY29uPzogUHJpbWVJY29uXG4gIGFjdGlvbkl0ZW1DYWxsYmFjaz86ICgpID0+IHZvaWRcbiAgYWN0aW9uSXRlbVRvb2x0aXA/OiBzdHJpbmdcbiAgYWN0aW9uSXRlbUFyaWFMYWJlbEtleT86IHN0cmluZ1xuICBhY3Rpb25JdGVtQXJpYUxhYmVsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9tZUl0ZW0ge1xuICBtZW51SXRlbTogTWVudUl0ZW1cbiAgcGFnZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBHcmlkQ29sdW1uT3B0aW9ucyA9IDEgfCAyIHwgMyB8IDQgfCA2IHwgMTJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LXBhZ2UtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgbG9hZGluZyA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgZmlndXJlQmFja2dyb3VuZCA9IHRydWVcblxuICBASW5wdXQoKVxuICBzaG93RmlndXJlID0gdHJ1ZVxuXG4gIC8vaW1hZ2UgZm90IHByZXZpZXcgaW4gdG9wLWhlYWRlciBsZWZ0IHNpZGVcbiAgQElucHV0KClcbiAgZmlndXJlSW1hZ2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVEZWZhdWx0QWN0aW9ucyA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgc3ViaGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBfYWN0aW9uczogQWN0aW9uW10gfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnNcbiAgfVxuICBzZXQgYWN0aW9ucyh2YWx1ZSkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSB2YWx1ZVxuICAgIHRoaXMuZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKClcbiAgICB0aGlzLmdlbmVyYXRlT3ZlcmZsb3dBY3Rpb25zKClcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIG9iamVjdERldGFpbHM6IE9iamVjdERldGFpbEl0ZW1bXSB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIHNob3dCcmVhZGNydW1icyA9IHRydWVcblxuICBASW5wdXQoKVxuICBtYW51YWxCcmVhZGNydW1icyA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgZW5hYmxlR3JpZFZpZXc6IHVuZGVmaW5lZCB8IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBncmlkTGF5b3V0RGVza3RvcENvbHVtbnM6IHVuZGVmaW5lZCB8IEdyaWRDb2x1bW5PcHRpb25zXG5cbiAgQE91dHB1dCgpXG4gIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIG92ZXJmbG93QWN0aW9uczogTWVudUl0ZW1bXSA9IFtdXG4gIGlubGluZUFjdGlvbnM6IEFjdGlvbltdIHwgdW5kZWZpbmVkXG4gIGRkID0gbmV3IERhdGUoKVxuICBicmVhZGNydW1icyQhOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+XG5cbiAgaG9tZSQhOiBPYnNlcnZhYmxlPEhvbWVJdGVtPlxuXG4gIGZpZ3VyZUltYWdlTG9hZEVycm9yID0gZmFsc2VcblxuICBvYmplY3RQYW5lbEdyaWRMYXlvdXRDbGFzc2VzID0gJ2dyaWQgcm93LWdhcC0yIG0tMCdcbiAgb2JqZWN0UGFuZWxDb2x1bW5MYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gb3ZlcmZsb3cteC1hdXRvJ1xuXG4gIG9iamVjdFBhbmVsRGVmYXVsdExheW91dENsYXNzZXMgPSAnZmxleCBmbGV4LWNvbHVtbiByb3ctZ2FwLTIgbWQ6ZmxleC1yb3cgbWQ6anVzdGlmeS1jb250ZW50LWJldHdlZW4nXG5cbiAgb2JqZWN0SW5mb0dyaWRMYXlvdXRDbGFzc2VzID0gJ2NvbC0xMiBmbGV4IGdhcC00IG1kOmNvbC02IGFsaWduLWl0ZW1zLWNlbnRlciBwLTAnXG4gIG9iamVjdEluZm9Db2x1bW5MYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1pbi13LTEyMCdcblxuICBvYmplY3RJbmZvRGVmYXVsdExheW91dENsYXNzZXMgPSAnZmxleCBmbGV4LXJvdyBtZDpmbGV4LWNvbHVtbiBtZDphbGlnbi1pdGVtcy1jZW50ZXIgbWQ6Z2FwLTInXG5cbiAgcHJvdGVjdGVkIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iU2VydmljZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnNcbiAgICB0aGlzLmhvbWUkID0gY29uY2F0KFxuICAgICAgb2YoeyBtZW51SXRlbTogeyBpY29uOiBQcmltZUljb25zLkhPTUUsIHJvdXRlckxpbms6ICcvJyB9IH0pLFxuICAgICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFBvcnRhbCQucGlwZShcbiAgICAgICAgbWFwKChwb3J0YWwpID0+ICh7XG4gICAgICAgICAgbWVudUl0ZW06IHtcbiAgICAgICAgICAgIGljb246IFByaW1lSWNvbnMuSE9NRSxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IHBvcnRhbC5iYXNlVXJsLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFnZTogcG9ydGFsLnBvcnRhbE5hbWUsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGlvbnMnXSkge1xuICAgICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hbnVhbEJyZWFkY3J1bWJzKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuYnJlYWRjcnVtYnMuZ2VuZXJhdGVkSXRlbXNTb3VyY2VcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLmJyZWFkY3J1bWJzLml0ZW1zSGFuZGxlclxuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlSW5saW5lQWN0aW9ucygpXG4gICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gIH1cblxuICBvbkFjdGlvbihhY3Rpb246IHN0cmluZykge1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlLmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKCkge1xuICAgIHRoaXMuZmlndXJlSW1hZ2VMb2FkRXJyb3IgPSB0cnVlXG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVJdGVtU3R5bGUoaXRlbTogT2JqZWN0RGV0YWlsSXRlbSk6IHN0cmluZyB7XG4gICAgbGV0IHN0eWxlID0gJydcbiAgICBpZiAoaXRlbS5pY29uKSBzdHlsZSA9IHN0eWxlLmNvbmNhdChzdHlsZSwgJyAnLCAnZ2FwLTEgYWxpZ24taXRlbXMtY2VudGVyJylcbiAgICBpZiAoaXRlbS52YWx1ZUNzc0NsYXNzKSBzdHlsZSA9IHN0eWxlLmNvbmNhdChzdHlsZSwgJyAnLCBpdGVtLnZhbHVlQ3NzQ2xhc3MpXG4gICAgcmV0dXJuIHN0eWxlXG4gIH1cblxuICBwdWJsaWMgZ2V0T2JqZWN0UGFuZWxMYXlvdXRDbGFzc2VzKCkge1xuICAgIGlmICh0aGlzLmVuYWJsZUdyaWRWaWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5vYmplY3RQYW5lbEdyaWRMYXlvdXRDbGFzc2VzXG4gICAgfVxuICAgIGlmICh0aGlzLmVuYWJsZUdyaWRWaWV3ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRoaXMub2JqZWN0UGFuZWxDb2x1bW5MYXlvdXRDbGFzc2VzXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9iamVjdFBhbmVsRGVmYXVsdExheW91dENsYXNzZXNcbiAgfVxuXG4gIHB1YmxpYyBnZXRPYmplY3RJbmZvTGF5b3V0Q2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldykge1xuICAgICAgcmV0dXJuIGAke3RoaXMub2JqZWN0SW5mb0dyaWRMYXlvdXRDbGFzc2VzfSBsZzpjb2wtJHtcbiAgICAgICAgdGhpcy5ncmlkTGF5b3V0RGVza3RvcENvbHVtbnMgPyAxMiAvIHRoaXMuZ3JpZExheW91dERlc2t0b3BDb2x1bW5zIDogNFxuICAgICAgfWBcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5hYmxlR3JpZFZpZXcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vYmplY3RJbmZvQ29sdW1uTGF5b3V0Q2xhc3Nlc1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vYmplY3RJbmZvRGVmYXVsdExheW91dENsYXNzZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBsaXN0IG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYW4gb3ZlcmZsb3cgbWVudVxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGlvbktleXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAuLi50aGlzLmFjdGlvbnMubWFwKChhKSA9PiBhLmxhYmVsS2V5IHx8ICcnKS5maWx0ZXIoKGEpID0+ICEhYSksXG4gICAgICAgIC4uLnRoaXMuYWN0aW9ucy5tYXAoKGEpID0+IGEudGl0bGVLZXkgfHwgJycpLmZpbHRlcigoYSkgPT4gISFhKSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyQgPSB0cmFuc2xhdGlvbktleXMubGVuZ3RoID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleXMpIDogb2YoW10pXG4gICAgICB0cmFuc2xhdGlvbnMkLnN1YnNjcmliZSgodHJhbnNsYXRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbG93ZWRBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IGEuc2hvdyA9PT0gJ2FzT3ZlcmZsb3cnKVxuICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYS5jb25kaXRpb25hbCkge1xuICAgICAgICAgICAgICAgIGlmIChhLnNob3dDb25kaXRpb24pIHJldHVybiBhXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiBhXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWN0aW9uUGVybWlzc2lvbihhbGxvd2VkQWN0aW9ucywgYWN0aW9uKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB0aGlzLm92ZXJmbG93QWN0aW9ucyA9IFtcbiAgICAgICAgICAgIC4uLmFsbG93ZWRBY3Rpb25zLm1hcDxNZW51SXRlbT4oKGEpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiBhLmlkLFxuICAgICAgICAgICAgICBsYWJlbDogYS5sYWJlbEtleSA/IHRyYW5zbGF0aW9uc1thLmxhYmVsS2V5XSA6IGEubGFiZWwsXG4gICAgICAgICAgICAgIGljb246IGEuaWNvbixcbiAgICAgICAgICAgICAgdG9vbHRpcE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICB0b29sdGlwTGFiZWw6IGEudGl0bGVLZXkgPyB0cmFuc2xhdGlvbnNbYS50aXRsZUtleV0gOiBhLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRvb2x0aXBFdmVudDogJ2hvdmVyJyxcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb246ICd0b3AnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb21tYW5kOiBhLmFjdGlvbkNhbGxiYWNrLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogYS5kaXNhYmxlZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGxpc3Qgb2YgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBhcyBpbmxpbmUgYnV0dG9uc1xuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUlubGluZUFjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgLy8gVGVtcCBhcnJheSB0byBob2xkIGFsbCBpbmxpbmUgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSB2aXNpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXJcbiAgICAgIGNvbnN0IGFsbG93ZWRBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBmb3IgYWxsIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgJ2Fsd2F5cydcbiAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAuZmlsdGVyKChhKSA9PiBhLnNob3cgPT09ICdhbHdheXMnKVxuICAgICAgICAuZmlsdGVyKChhKSA9PiB7XG4gICAgICAgICAgaWYgKGEuY29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnNob3dDb25kaXRpb24gPyBhIDogbnVsbFxuICAgICAgICAgIH0gZWxzZSByZXR1cm4gYVxuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnMsIGFjdGlvbilcbiAgICAgICAgfSlcbiAgICAgIHRoaXMuaW5saW5lQWN0aW9ucyA9IFsuLi5hbGxvd2VkQWN0aW9uc11cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEFkZHMgYSBnaXZlbiBhY3Rpb24gdG8gYSBnaXZlbiBhcnJheSBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gc2VlIGl0XG4gICAqIEBwYXJhbSBhbGxvd2VkQWN0aW9ucyBBcnJheSB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIGFkZGVkIHRvIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBzZWUgaXRcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gZm9yIHdoaWNoIGEgcGVybWlzc2lvbiBjaGVjayBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICovXG4gIHByaXZhdGUgY2hlY2tBY3Rpb25QZXJtaXNzaW9uKGFsbG93ZWRBY3Rpb25zOiBBY3Rpb25bXSwgYWN0aW9uOiBBY3Rpb24pIHtcbiAgICBpZiAoYWN0aW9uLnBlcm1pc3Npb24pIHtcbiAgICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oYWN0aW9uLnBlcm1pc3Npb24pKSB7XG4gICAgICAgIC8vIFB1c2ggYWN0aW9uIHRvIGFsbG93ZWQgYXJyYXkgaWYgdXNlciBoYXMgc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICAgICAgICBhbGxvd2VkQWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHVzaCBhY3Rpb24gdG8gYWxsb3dlZCBhcnJheSBpZiBubyBwZXJtaXNzaW9uIHdhcyBzcGVjaWZpZWRcbiAgICAgIGFsbG93ZWRBY3Rpb25zLnB1c2goYWN0aW9uKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9uZWN4LXBhZ2UtaGVhZGVyIG1iLTRcIiBuYW1lPVwib2N4LXBhZ2UtaGVhZGVyLXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dCcmVhZGNydW1ic1wiPlxuICAgIDxwLWJyZWFkY3J1bWJcbiAgICAgIFttb2RlbF09XCJpdGVtc1wiXG4gICAgICAqbmdJZj1cImJyZWFkY3J1bWJzJCB8IGFzeW5jICBhcyBpdGVtc1wiXG4gICAgICBbaG9tZV09XCIoaG9tZSQgfCBhc3luYyk/Lm1lbnVJdGVtID8/IHt9XCJcbiAgICAgIFtob21lQXJpYUxhYmVsXT1cIihob21lJCB8IGFzeW5jKT8ucGFnZSA/ICgnT0NYX1BBR0VfSEVBREVSLkhPTUVfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGU6IHsgcGFnZTogKGhvbWUkIHwgYXN5bmMpPy5wYWdlfSkgOiAoJ09DWF9QQUdFX0hFQURFUi5IT01FX0RFRkFVTFRfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFthdHRyLm1hbnVhbF09XCJtYW51YWxCcmVhZGNydW1ic1wiXG4gICAgPjwvcC1icmVhZGNydW1iPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cInRpdGxlLWJhciBmbGV4IGZsZXgtcm93IG1kOmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS13cmFwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlndXJlIGZsZXggaC0ycmVtIHctMnJlbSBtZDpoLTNyZW0gbWQ6dy0zcmVtXCIgKm5nSWY9XCJzaG93RmlndXJlXCI+XG4gICAgICAgIDxkaXYgI3ByZXZpZXdJbWFnZSBjbGFzcz1cImZpZ3VyZS1pbWFnZSBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgcmlnaHQtMCBib3R0b20tMFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmaWd1cmVJbWFnZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCJmaWd1cmVJbWFnZSAmJiAhZmlndXJlSW1hZ2VMb2FkRXJyb3JcIlxuICAgICAgICAgICAgW29jeFNyY109XCJmaWd1cmVJbWFnZVwiXG4gICAgICAgICAgICBhbHQ9XCJGaWd1cmUgaW1hZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbG9yYmxvYiBmbGV4LTEgYm9yZGVyLXJvdW5kXCJcbiAgICAgICAgICAqbmdJZj1cInByZXZpZXdJbWFnZS5jaGlsZHJlbi5sZW5ndGggPT09IDAgfHwgZmlndXJlSW1hZ2VMb2FkRXJyb3JcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25CYXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIganVzdGlmeS1jb250ZW50LWV2ZW5seVwiPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMTByZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIxMHJlbVwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2Ugc2tlbGV0b25CYXJcIj5cbiAgICAgICAgPGgxIGlkPVwicGFnZS1oZWFkZXJcIiAqbmdJZj1cIiEhaGVhZGVyXCI+e3sgaGVhZGVyIH19PC9oMT5cbiAgICAgICAgPGgyIGlkPVwicGFnZS1zdWJoZWFkZXJcIiAqbmdJZj1cIiEhc3ViaGVhZGVyXCI+e3sgc3ViaGVhZGVyIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbXMtd3JhcCBtdC0yIG1kOm10LTBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZURlZmF1bHRBY3Rpb25zXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbkFjdGlvbnM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI1cmVtXCIgaGVpZ2h0PVwiMnJlbVwiIHN0eWxlQ2xhc3M9XCJtci0yXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMnJlbVwiIGhlaWdodD1cIjJyZW1cIiBzdHlsZUNsYXNzPVwibWItMlwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHNrZWxldG9uQWN0aW9uc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5saW5lQWN0aW9ucyAmJiBpbmxpbmVBY3Rpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cInRvb2xiYXIgZmxleCBmbGV4LXdyYXAgZ2FwLTEgc206Z2FwLTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lQWN0aW9uc1wiPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwie3sgYWN0aW9uLmlkIH19XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gPz8gJydcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cImFjdGlvbi5sYWJlbEtleSA/IChhY3Rpb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uLmFjdGlvbkNhbGxiYWNrKClcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZCA/IGFjdGlvbi5kaXNhYmxlZCA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCJhY3Rpb24uaWNvbiA/ICdvY3gtcGFnZS1oZWFkZXItaW5saW5lLWFjdGlvbi1pY29uLWJ1dHRvbicgOiAnb2N4LXBhZ2UtaGVhZGVyLWlubGluZS1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiIChhY3Rpb24uYXJpYUxhYmVsS2V5ID8gKGFjdGlvbi5hcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmFyaWFMYWJlbCkgfHwgKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2xiYXJJdGVtc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm92ZXJmbG93QWN0aW9ucy5sZW5ndGggIT09IDBcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJwYWdlSGVhZGVyTWVudUJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCJcbiAgICAgICAgICAgICAgcFRvb2x0aXA9XCJ7eyAnT0NYX1BBR0VfSEVBREVSLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibW9yZS1hY3Rpb25zLW1lbnUtYnV0dG9uIGFjdGlvbi1idXR0b24gbWwtMlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm9jeC1wYWdlLWhlYWRlci1vdmVyZmxvdy1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoJ09DWF9QQUdFX0hFQURFUi5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8cC1tZW51ICNtZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIm92ZXJmbG93QWN0aW9uc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZGl0aW9uYWxUb29sYmFyQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZGl0aW9uYWxUb29sYmFyQ29udGVudFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1wYW5lbFwiIFtuZ0NsYXNzXT1cImdldE9iamVjdFBhbmVsTGF5b3V0Q2xhc3NlcygpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9iamVjdERldGFpbHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtaW5mb1wiIFtuZ0NsYXNzXT1cImdldE9iamVjdEluZm9MYXlvdXRDbGFzc2VzKClcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvYmplY3REZXRhaWxzXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZvbnQtbWVkaXVtIHRleHQtNjAwIG9iamVjdC1pbmZvLWdyaWQtbGFiZWxcIlxuICAgICAgICAgIG5hbWU9XCJvYmplY3QtZGV0YWlsLWxhYmVsXCJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiaXRlbS5sYWJlbFRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgID57eyBpdGVtLmxhYmVsIHwgZHluYW1pY1BpcGU6aXRlbS5sYWJlbFBpcGUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaWNvbiB8fCBpdGVtLnZhbHVlXCIgY2xhc3M9XCJvYmplY3QtaW5mby1ncmlkLXZhbHVlXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCB0ZXh0LTkwMCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdy1tYXhcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2VuZXJhdGVJdGVtU3R5bGUoaXRlbSlcIlxuICAgICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtdmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiaXRlbS52YWx1ZVRvb2x0aXAgfHwgaXRlbS50b29sdGlwIHx8ICcnXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz0ne3tpdGVtLmljb24gKyBcIiBcIiArIChpdGVtLmljb25TdHlsZUNsYXNzIHx8IFwiXCIpfX0nXG4gICAgICAgICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtaWNvblwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfCBkeW5hbWljUGlwZTppdGVtLnZhbHVlUGlwZTppdGVtLnZhbHVlUGlwZUFyZ3N9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5hY3Rpb25JdGVtSWNvbiAmJiBpdGVtLmFjdGlvbkl0ZW1DYWxsYmFja1wiXG4gICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uYWN0aW9uSXRlbUljb25cIlxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tdGV4dCBwLTAgdy1mdWxsXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIml0ZW0uYWN0aW9uSXRlbVRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiKGl0ZW0uYWN0aW9uSXRlbUFyaWFMYWJlbEtleSA/IChpdGVtLmFjdGlvbkl0ZW1BcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogaXRlbS5hY3Rpb25JdGVtQXJpYUxhYmVsKSB8fCBpdGVtLmFjdGlvbkl0ZW1Ub29sdGlwIHx8ICcnXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaXRlbS5hY3Rpb25JdGVtQ2FsbGJhY2soKVwiXG4gICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7Ozs7Ozs7Ozs7O0FBa0VyRSxNQUFNLE9BQU8sbUJBQW1CO0lBd0I5QixJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNyQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtJ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QUF3QjtzQkFEdkIsS0FBSztnQkFJTixJQUFJO3NCQURILE1BQU07Z0JBSVAsd0JBQXdCO3NCQUR2QixZQUFZO3VCQUFDLDBCQUEwQjtnQkFJeEMsNEJBQTRCO3NCQUQzQixZQUFZO3VCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZUljb25zIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBjb25jYXQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JyZWFkY3J1bWIuc2VydmljZSdcbmltcG9ydCB7IFByaW1lSWNvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ByaW1laWNvbi51dGlscydcblxuLyoqXG4gKiBBY3Rpb24gZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24ge1xuICBpZD86IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIC8qKlxuICAgKiBQZXJtaXNzaW9uIGZvciB0aGlzIGFjdGlvbi4gSWYgdGhlIGN1cnJlbnQgdXNlciBkb2VzIG5vdCBoYXZlIHRoaXMgcGVybWlzc2lvbiwgdGhlIGFjdGlvbiB3aWxsIG5vdCBiZSBzaG93bi5cbiAgICovXG4gIHBlcm1pc3Npb24/OiBzdHJpbmdcbiAgdGl0bGU/OiBzdHJpbmdcbiAgdGl0bGVLZXk/OiBzdHJpbmdcbiAgYXJpYUxhYmVsPzogc3RyaW5nXG4gIGFyaWFMYWJlbEtleT86IHN0cmluZ1xuICBidG5DbGFzcz86IHN0cmluZ1xuICBhY3Rpb25DYWxsYmFjaygpOiB2b2lkXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBkaXNhYmxlZFRvb2x0aXA/OiBzdHJpbmdcbiAgZGlzYWJsZWRUb29sdGlwS2V5Pzogc3RyaW5nXG4gIHNob3c/OiAnYWx3YXlzJyB8ICdhc092ZXJmbG93J1xuICBjb25kaXRpb25hbD86IGJvb2xlYW5cbiAgLy8gTm90ZTogVGhpcyBjdXJyZW50bHkgZG9lc24ndCB3b3JrIHdpdGggZHluYW1pYyB2YWx1ZXMsIHNpbmNlIGEgcGFzc2VkIGluIEFjdGlvbiBpcyBqdXN0IGEgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LlxuICAvLyBBcyBhIHdvcmthcm91bmQsIHlvdSBjYW4gbWFudWFsbHkgdXBkYXRlL3JlcGxhY2UgdGhlIHBhc3NlZCBpbiBBY3Rpb24gaWYgeW91IHdpc2ggdG8gdXBkYXRlIGEgc2hvd0NvbmRpdGlvblxuICBzaG93Q29uZGl0aW9uPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdERldGFpbEl0ZW0ge1xuICBsYWJlbDogc3RyaW5nXG4gIHZhbHVlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHZhbHVlVG9vbHRpcGAgaW5zdGVhZFxuICAgKi9cbiAgdG9vbHRpcD86IHN0cmluZ1xuICBsYWJlbFRvb2x0aXA/OiBzdHJpbmdcbiAgdmFsdWVUb29sdGlwPzogc3RyaW5nXG4gIGljb24/OiBQcmltZUljb25cbiAgaWNvblN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgbGFiZWxQaXBlPzogVHlwZTxhbnk+XG4gIHZhbHVlUGlwZT86IFR5cGU8YW55PlxuICB2YWx1ZVBpcGVBcmdzPzogc3RyaW5nXG4gIHZhbHVlQ3NzQ2xhc3M/OiBzdHJpbmdcbiAgYWN0aW9uSXRlbUljb24/OiBQcmltZUljb25cbiAgYWN0aW9uSXRlbUNhbGxiYWNrPzogKCkgPT4gdm9pZFxuICBhY3Rpb25JdGVtVG9vbHRpcD86IHN0cmluZ1xuICBhY3Rpb25JdGVtQXJpYUxhYmVsS2V5Pzogc3RyaW5nXG4gIGFjdGlvbkl0ZW1BcmlhTGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb21lSXRlbSB7XG4gIG1lbnVJdGVtOiBNZW51SXRlbVxuICBwYWdlPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEdyaWRDb2x1bW5PcHRpb25zID0gMSB8IDIgfCAzIHwgNCB8IDYgfCAxMlxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtcGFnZS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBsb2FkaW5nID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBmaWd1cmVCYWNrZ3JvdW5kID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIHNob3dGaWd1cmUgPSB0cnVlXG5cbiAgLy9pbWFnZSBmb3QgcHJldmlldyBpbiB0b3AtaGVhZGVyIGxlZnQgc2lkZVxuICBASW5wdXQoKVxuICBmaWd1cmVJbWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgZGlzYWJsZURlZmF1bHRBY3Rpb25zID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBzdWJoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIF9hY3Rpb25zOiBBY3Rpb25bXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICB9XG5cbiAgQElucHV0KClcbiAgb2JqZWN0RGV0YWlsczogT2JqZWN0RGV0YWlsSXRlbVtdIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgc2hvd0JyZWFkY3J1bWJzID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIG1hbnVhbEJyZWFkY3J1bWJzID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBlbmFibGVHcmlkVmlldzogdW5kZWZpbmVkIHwgYm9vbGVhblxuXG4gIEBJbnB1dCgpXG4gIGdyaWRMYXlvdXREZXNrdG9wQ29sdW1uczogdW5kZWZpbmVkIHwgR3JpZENvbHVtbk9wdGlvbnNcblxuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBDb250ZW50Q2hpbGQoJ2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCcpXG4gIGFkZGl0aW9uYWxUb29sYmFyQ29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGQoJ2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgb3ZlcmZsb3dBY3Rpb25zOiBNZW51SXRlbVtdID0gW11cbiAgaW5saW5lQWN0aW9uczogQWN0aW9uW10gfCB1bmRlZmluZWRcbiAgZGQgPSBuZXcgRGF0ZSgpXG4gIGJyZWFkY3J1bWJzJCE6IE9ic2VydmFibGU8TWVudUl0ZW1bXT5cblxuICBob21lJCE6IE9ic2VydmFibGU8SG9tZUl0ZW0+XG5cbiAgZmlndXJlSW1hZ2VMb2FkRXJyb3IgPSBmYWxzZVxuXG4gIG9iamVjdFBhbmVsR3JpZExheW91dENsYXNzZXMgPSAnZ3JpZCByb3ctZ2FwLTIgbS0wJ1xuICBvYmplY3RQYW5lbENvbHVtbkxheW91dENsYXNzZXMgPSAnZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBvdmVyZmxvdy14LWF1dG8nXG5cbiAgb2JqZWN0UGFuZWxEZWZhdWx0TGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtY29sdW1uIHJvdy1nYXAtMiBtZDpmbGV4LXJvdyBtZDpqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcblxuICBvYmplY3RJbmZvR3JpZExheW91dENsYXNzZXMgPSAnY29sLTEyIGZsZXggZ2FwLTQgbWQ6Y29sLTYgYWxpZ24taXRlbXMtY2VudGVyIHAtMCdcbiAgb2JqZWN0SW5mb0NvbHVtbkxheW91dENsYXNzZXMgPSAnZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWluLXctMTIwJ1xuXG4gIG9iamVjdEluZm9EZWZhdWx0TGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtcm93IG1kOmZsZXgtY29sdW1uIG1kOmFsaWduLWl0ZW1zLWNlbnRlciBtZDpnYXAtMidcblxuICBwcm90ZWN0ZWQgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJTZXJ2aWNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1ic1xuICAgIHRoaXMuaG9tZSQgPSBjb25jYXQoXG4gICAgICBvZih7IG1lbnVJdGVtOiB7IGljb246IFByaW1lSWNvbnMuSE9NRSwgcm91dGVyTGluazogJy8nIH0gfSksXG4gICAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50UG9ydGFsJC5waXBlKFxuICAgICAgICBtYXAoKHBvcnRhbCkgPT4gKHtcbiAgICAgICAgICBtZW51SXRlbToge1xuICAgICAgICAgICAgaWNvbjogUHJpbWVJY29ucy5IT01FLFxuICAgICAgICAgICAgcm91dGVyTGluazogcG9ydGFsLmJhc2VVcmwsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWdlOiBwb3J0YWwucG9ydGFsTmFtZSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKVxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snYWN0aW9ucyddKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlSW5saW5lQWN0aW9ucygpXG4gICAgICB0aGlzLmdlbmVyYXRlT3ZlcmZsb3dBY3Rpb25zKClcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFudWFsQnJlYWRjcnVtYnMpIHtcbiAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5icmVhZGNydW1icy5nZW5lcmF0ZWRJdGVtc1NvdXJjZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuYnJlYWRjcnVtYnMuaXRlbXNIYW5kbGVyXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKClcbiAgICB0aGlzLmdlbmVyYXRlT3ZlcmZsb3dBY3Rpb25zKClcbiAgfVxuXG4gIG9uQWN0aW9uKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLnNhdmUuZW1pdCgpXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUltYWdlRXJyb3IoKSB7XG4gICAgdGhpcy5maWd1cmVJbWFnZUxvYWRFcnJvciA9IHRydWVcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUl0ZW1TdHlsZShpdGVtOiBPYmplY3REZXRhaWxJdGVtKTogc3RyaW5nIHtcbiAgICBsZXQgc3R5bGUgPSAnJ1xuICAgIGlmIChpdGVtLmljb24pIHN0eWxlID0gc3R5bGUuY29uY2F0KHN0eWxlLCAnICcsICdnYXAtMSBhbGlnbi1pdGVtcy1jZW50ZXInKVxuICAgIGlmIChpdGVtLnZhbHVlQ3NzQ2xhc3MpIHN0eWxlID0gc3R5bGUuY29uY2F0KHN0eWxlLCAnICcsIGl0ZW0udmFsdWVDc3NDbGFzcylcbiAgICByZXR1cm4gc3R5bGVcbiAgfVxuXG4gIHB1YmxpYyBnZXRPYmplY3RQYW5lbExheW91dENsYXNzZXMoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlR3JpZFZpZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLm9iamVjdFBhbmVsR3JpZExheW91dENsYXNzZXNcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5hYmxlR3JpZFZpZXcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vYmplY3RQYW5lbENvbHVtbkxheW91dENsYXNzZXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub2JqZWN0UGFuZWxEZWZhdWx0TGF5b3V0Q2xhc3Nlc1xuICB9XG5cbiAgcHVibGljIGdldE9iamVjdEluZm9MYXlvdXRDbGFzc2VzKCkge1xuICAgIGlmICh0aGlzLmVuYWJsZUdyaWRWaWV3KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5vYmplY3RJbmZvR3JpZExheW91dENsYXNzZXN9IGxnOmNvbC0ke1xuICAgICAgICB0aGlzLmdyaWRMYXlvdXREZXNrdG9wQ29sdW1ucyA/IDEyIC8gdGhpcy5ncmlkTGF5b3V0RGVza3RvcENvbHVtbnMgOiA0XG4gICAgICB9YFxuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLm9iamVjdEluZm9Db2x1bW5MYXlvdXRDbGFzc2VzXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9iamVjdEluZm9EZWZhdWx0TGF5b3V0Q2xhc3Nlc1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGxpc3Qgb2YgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhbiBvdmVyZmxvdyBtZW51XG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlT3ZlcmZsb3dBY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBbXG4gICAgICAgIC4uLnRoaXMuYWN0aW9ucy5tYXAoKGEpID0+IGEubGFiZWxLZXkgfHwgJycpLmZpbHRlcigoYSkgPT4gISFhKSxcbiAgICAgICAgLi4udGhpcy5hY3Rpb25zLm1hcCgoYSkgPT4gYS50aXRsZUtleSB8fCAnJykuZmlsdGVyKChhKSA9PiAhIWEpLFxuICAgICAgXVxuICAgICAgY29uc3QgdHJhbnNsYXRpb25zJCA9IHRyYW5zbGF0aW9uS2V5cy5sZW5ndGggPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uS2V5cykgOiBvZihbXSlcbiAgICAgIHRyYW5zbGF0aW9ucyQuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgYWxsb3dlZEFjdGlvbnM6IEFjdGlvbltdID0gW11cbiAgICAgICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4gYS5zaG93ID09PSAnYXNPdmVyZmxvdycpXG4gICAgICAgICAgICAuZmlsdGVyKChhKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChhLmNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGEuc2hvd0NvbmRpdGlvbikgcmV0dXJuIGFcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGFcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25QZXJtaXNzaW9uKGFsbG93ZWRBY3Rpb25zLCBhY3Rpb24pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMub3ZlcmZsb3dBY3Rpb25zID0gW1xuICAgICAgICAgICAgLi4uYWxsb3dlZEFjdGlvbnMubWFwPE1lbnVJdGVtPigoYSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgICAgICAgIGxhYmVsOiBhLmxhYmVsS2V5ID8gdHJhbnNsYXRpb25zW2EubGFiZWxLZXldIDogYS5sYWJlbCxcbiAgICAgICAgICAgICAgaWNvbjogYS5pY29uLFxuICAgICAgICAgICAgICB0b29sdGlwT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHRvb2x0aXBMYWJlbDogYS50aXRsZUtleSA/IHRyYW5zbGF0aW9uc1thLnRpdGxlS2V5XSA6IGEudGl0bGUsXG4gICAgICAgICAgICAgICAgdG9vbHRpcEV2ZW50OiAnaG92ZXInLFxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbjogJ3RvcCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNvbW1hbmQ6IGEuYWN0aW9uQ2FsbGJhY2ssXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBhLmRpc2FibGVkLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbGlzdCBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIGlubGluZSBidXR0b25zXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlSW5saW5lQWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAvLyBUZW1wIGFycmF5IHRvIGhvbGQgYWxsIGlubGluZSBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHZpc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlclxuICAgICAgY29uc3QgYWxsb3dlZEFjdGlvbnM6IEFjdGlvbltdID0gW11cbiAgICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIGZvciBhbGwgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCAnYWx3YXlzJ1xuICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgIC5maWx0ZXIoKGEpID0+IGEuc2hvdyA9PT0gJ2Fsd2F5cycpXG4gICAgICAgIC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICBpZiAoYS5jb25kaXRpb25hbCkge1xuICAgICAgICAgICAgcmV0dXJuIGEuc2hvd0NvbmRpdGlvbiA/IGEgOiBudWxsXG4gICAgICAgICAgfSBlbHNlIHJldHVybiBhXG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrQWN0aW9uUGVybWlzc2lvbihhbGxvd2VkQWN0aW9ucywgYWN0aW9uKVxuICAgICAgICB9KVxuICAgICAgdGhpcy5pbmxpbmVBY3Rpb25zID0gWy4uLmFsbG93ZWRBY3Rpb25zXVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQWRkcyBhIGdpdmVuIGFjdGlvbiB0byBhIGdpdmVuIGFycmF5IGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBzZWUgaXRcbiAgICogQHBhcmFtIGFsbG93ZWRBY3Rpb25zIEFycmF5IHRoYXQgdGhlIGFjdGlvbiBzaG91bGQgYmUgYWRkZWQgdG8gaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIHNlZSBpdFxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiBmb3Igd2hpY2ggYSBwZXJtaXNzaW9uIGNoZWNrIHNob3VsZCBiZSBleGVjdXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnM6IEFjdGlvbltdLCBhY3Rpb246IEFjdGlvbikge1xuICAgIGlmIChhY3Rpb24ucGVybWlzc2lvbikge1xuICAgICAgaWYgKHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbihhY3Rpb24ucGVybWlzc2lvbikpIHtcbiAgICAgICAgLy8gUHVzaCBhY3Rpb24gdG8gYWxsb3dlZCBhcnJheSBpZiB1c2VyIGhhcyBzdWZmaWNpZW50IHBlcm1pc3Npb25zXG4gICAgICAgIGFsbG93ZWRBY3Rpb25zLnB1c2goYWN0aW9uKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQdXNoIGFjdGlvbiB0byBhbGxvd2VkIGFycmF5IGlmIG5vIHBlcm1pc3Npb24gd2FzIHNwZWNpZmllZFxuICAgICAgYWxsb3dlZEFjdGlvbnMucHVzaChhY3Rpb24pXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib25lY3gtcGFnZS1oZWFkZXIgbWItNFwiIG5hbWU9XCJvY3gtcGFnZS1oZWFkZXItd3JhcHBlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0JyZWFkY3J1bWJzXCI+XG4gICAgPHAtYnJlYWRjcnVtYlxuICAgICAgW21vZGVsXT1cIml0ZW1zXCJcbiAgICAgICpuZ0lmPVwiYnJlYWRjcnVtYnMkIHwgYXN5bmMgIGFzIGl0ZW1zXCJcbiAgICAgIFtob21lXT1cIihob21lJCB8IGFzeW5jKT8ubWVudUl0ZW0gPz8ge31cIlxuICAgICAgW2hvbWVBcmlhTGFiZWxdPVwiKGhvbWUkIHwgYXN5bmMpPy5wYWdlID8gKCdPQ1hfUEFHRV9IRUFERVIuSE9NRV9BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZTogeyBwYWdlOiAoaG9tZSQgfCBhc3luYyk/LnBhZ2V9KSA6ICgnT0NYX1BBR0VfSEVBREVSLkhPTUVfREVGQVVMVF9BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgW2F0dHIubWFudWFsXT1cIm1hbnVhbEJyZWFkY3J1bWJzXCJcbiAgICA+PC9wLWJyZWFkY3J1bWI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwidGl0bGUtYmFyIGZsZXggZmxleC1yb3cgbWQ6anVzdGlmeS1jb250ZW50LWJldHdlZW4gcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlLXdyYXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWd1cmUgZmxleCBoLTJyZW0gdy0ycmVtIG1kOmgtM3JlbSBtZDp3LTNyZW1cIiAqbmdJZj1cInNob3dGaWd1cmVcIj5cbiAgICAgICAgPGRpdiAjcHJldmlld0ltYWdlIGNsYXNzPVwiZmlndXJlLWltYWdlIGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZpZ3VyZUltYWdlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cImZpZ3VyZUltYWdlICYmICFmaWd1cmVJbWFnZUxvYWRFcnJvclwiXG4gICAgICAgICAgICBbb2N4U3JjXT1cImZpZ3VyZUltYWdlXCJcbiAgICAgICAgICAgIGFsdD1cIkZpZ3VyZSBpbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sb3JibG9iIGZsZXgtMSBib3JkZXItcm91bmRcIlxuICAgICAgICAgICpuZ0lmPVwicHJldmlld0ltYWdlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB8fCBmaWd1cmVJbWFnZUxvYWRFcnJvclwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbkJhcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIxMHJlbVwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjEwcmVtXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBza2VsZXRvbkJhclwiPlxuICAgICAgICA8aDEgaWQ9XCJwYWdlLWhlYWRlclwiICpuZ0lmPVwiISFoZWFkZXJcIj57eyBoZWFkZXIgfX08L2gxPlxuICAgICAgICA8aDIgaWQ9XCJwYWdlLXN1YmhlYWRlclwiICpuZ0lmPVwiISFzdWJoZWFkZXJcIj57eyBzdWJoZWFkZXIgfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtcy13cmFwIG10LTIgbWQ6bXQtMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlRGVmYXVsdEFjdGlvbnNcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uQWN0aW9ucz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjVyZW1cIiBoZWlnaHQ9XCIycmVtXCIgc3R5bGVDbGFzcz1cIm1yLTJcIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIycmVtXCIgaGVpZ2h0PVwiMnJlbVwiIHN0eWxlQ2xhc3M9XCJtYi0yXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2Ugc2tlbGV0b25BY3Rpb25zXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbmxpbmVBY3Rpb25zICYmIGlubGluZUFjdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwidG9vbGJhciBmbGV4IGZsZXgtd3JhcCBnYXAtMSBzbTpnYXAtMlwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBpbmxpbmVBY3Rpb25zXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiYWN0aW9uLmRpc2FibGVkID8gKGFjdGlvbi5kaXNhYmxlZFRvb2x0aXBLZXkgPyAoYWN0aW9uLmRpc2FibGVkVG9vbHRpcEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24uZGlzYWJsZWRUb29sdGlwKSA6IChhY3Rpb24udGl0bGVLZXkgPyAoYWN0aW9uLnRpdGxlS2V5IHwgdHJhbnNsYXRlKSA6IGFjdGlvbi50aXRsZSlcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwie3sgYWN0aW9uLmlkIH19XCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvbiA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5hY3Rpb25DYWxsYmFjaygpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkID8gYWN0aW9uLmRpc2FibGVkIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYWN0aW9uLmljb24gPyAnb2N4LXBhZ2UtaGVhZGVyLWlubGluZS1hY3Rpb24taWNvbi1idXR0b24nIDogJ29jeC1wYWdlLWhlYWRlci1pbmxpbmUtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiIChhY3Rpb24uYXJpYUxhYmVsS2V5ID8gKGFjdGlvbi5hcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmFyaWFMYWJlbCkgfHwgKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhckl0ZW1zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3ZlcmZsb3dBY3Rpb25zLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInBhZ2VIZWFkZXJNZW51QnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgICBwVG9vbHRpcD1cInt7ICdPQ1hfUEFHRV9IRUFERVIuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb3JlLWFjdGlvbnMtbWVudS1idXR0b24gYWN0aW9uLWJ1dHRvbiBtbC0yXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICBuYW1lPVwib2N4LXBhZ2UtaGVhZGVyLW92ZXJmbG93LWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIignT0NYX1BBR0VfSEVBREVSLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwib3ZlcmZsb3dBY3Rpb25zXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCI+IDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LXBhbmVsXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0UGFuZWxMYXlvdXRDbGFzc2VzKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0RGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1pbmZvXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0SW5mb0xheW91dENsYXNzZXMoKVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9iamVjdERldGFpbHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImZsZXggZm9udC1tZWRpdW0gdGV4dC02MDAgb2JqZWN0LWluZm8tZ3JpZC1sYWJlbFwiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtbGFiZWxcIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLmxhYmVsVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPnt7IGl0ZW0ubGFiZWwgfCBkeW5hbWljUGlwZTppdGVtLmxhYmVsUGlwZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pY29uIHx8IGl0ZW0udmFsdWVcIiBjbGFzcz1cIm9iamVjdC1pbmZvLWdyaWQtdmFsdWVcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHRleHQtOTAwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB3LW1heFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZW5lcmF0ZUl0ZW1TdHlsZShpdGVtKVwiXG4gICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC12YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLnZhbHVlVG9vbHRpcCB8fCBpdGVtLnRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPSd7e2l0ZW0uaWNvbiArIFwiIFwiICsgKGl0ZW0uaWNvblN0eWxlQ2xhc3MgfHwgXCJcIil9fSdcbiAgICAgICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC1pY29uXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB8IGR5bmFtaWNQaXBlOml0ZW0udmFsdWVQaXBlOml0ZW0udmFsdWVQaXBlQXJnc319XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmFjdGlvbkl0ZW1JY29uICYmIGl0ZW0uYWN0aW9uSXRlbUNhbGxiYWNrXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5hY3Rpb25JdGVtSWNvblwiXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtMCB3LWZ1bGxcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiaXRlbS5hY3Rpb25JdGVtVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIoaXRlbS5hY3Rpb25JdGVtQXJpYUxhYmVsS2V5ID8gKGl0ZW0uYWN0aW9uSXRlbUFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBpdGVtLmFjdGlvbkl0ZW1BcmlhTGFiZWwpIHx8IGl0ZW0uYWN0aW9uSXRlbVRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJpdGVtLmFjdGlvbkl0ZW1DYWxsYmFjaygpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import { Directive, ElementRef, Inject,
|
|
1
|
+
import { Directive, ElementRef, Inject, Input, Optional, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import { UserService } from '@onecx/angular-integration-interface';
|
|
3
|
+
import { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@onecx/angular-integration-interface";
|
|
5
|
-
/**
|
|
6
|
-
* This checker always returns true, basically disabling the permission system on the UI side
|
|
7
|
-
*/
|
|
8
|
-
export class AlwaysGrantPermissionChecker {
|
|
9
|
-
hasPermission(_permissionKey) {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export const HAS_PERMISSION_CHECKER = new InjectionToken('hasPermission');
|
|
14
6
|
export class IfPermissionDirective {
|
|
15
7
|
set notPermission(value) {
|
|
16
8
|
this.permission = value;
|
|
@@ -100,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
100
92
|
}], ocxIfNotPermissionElseTemplate: [{
|
|
101
93
|
type: Input
|
|
102
94
|
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sc0JBQXNCLENBQUE7OztBQUduRixNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQWlDLGFBQWEsQ0FBQyxLQUFvQztRQUNqRixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBS0QsSUFDSSw2QkFBNkIsQ0FBQyxLQUEyQjtRQUMzRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFBO0lBQ3pDLENBQUM7SUFJRCxJQUNJLDhCQUE4QixDQUFDLEtBQW1DO1FBQ3BFLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUE7SUFDMUMsQ0FBQztJQUtELFlBQ1UsUUFBbUIsRUFDbkIsRUFBYyxFQUNkLGFBQStCLEVBRy9CLG9CQUEyQyxFQUMvQixXQUE4QixFQUM5QixXQUF5QjtRQVByQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFHL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF1QjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFD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biAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgSEFTX1BFUk1JU1NJT05fQ0hFQ0tFUiwgSGFzUGVybWlzc2lvbkNoZWNrZXIgfSBmcm9tICdAb25lY3gvYW5ndWxhci11dGlscydcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeElmUGVybWlzc2lvbl0sIFtvY3hJZk5vdFBlcm1pc3Npb25dJyB9KVxuZXhwb3J0IGNsYXNzIElmUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnb2N4SWZQZXJtaXNzaW9uJykgcGVybWlzc2lvbjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgQElucHV0KCdvY3hJZk5vdFBlcm1pc3Npb24nKSBzZXQgbm90UGVybWlzc2lvbih2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBlcm1pc3Npb24gPSB2YWx1ZVxuICAgIHRoaXMubmVnYXRlID0gdHJ1ZVxuICB9XG5cbiAgQElucHV0KCkgb25NaXNzaW5nUGVybWlzc2lvbjogJ2hpZGUnIHwgJ2Rpc2FibGUnID0gJ2hpZGUnXG5cbiAgQElucHV0KCkgb2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHNldCBvY3hJZk5vdFBlcm1pc3Npb25QZXJtaXNzaW9ucyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9jeElmUGVybWlzc2lvblBlcm1pc3Npb25zID0gdmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIG9jeElmUGVybWlzc2lvbkVsc2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBzZXQgb2N4SWZOb3RQZXJtaXNzaW9uRWxzZVRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5vY3hJZlBlcm1pc3Npb25FbHNlVGVtcGxhdGUgPSB2YWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBwZXJtaXNzaW9uQ2hlY2tlcjogSGFzUGVybWlzc2lvbkNoZWNrZXIgfCB1bmRlZmluZWRcbiAgbmVnYXRlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEhBU19QRVJNSVNTSU9OX0NIRUNLRVIpXG4gICAgcHJpdmF0ZSBoYXNQZXJtaXNzaW9uQ2hlY2tlcj86IEhhc1Blcm1pc3Npb25DaGVja2VyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdXNlclNlcnZpY2U/OiBVc2VyU2VydmljZVxuICApIHtcbiAgICBpZiAoIShoYXNQZXJtaXNzaW9uQ2hlY2tlciB8fCB1c2VyU2VydmljZSkpIHtcbiAgICAgIHRocm93ICdJZlBlcm1pc3Npb24gcmVxdWlyZXMgVXNlclNlcnZpY2Ugb3IgSGFzUGVybWlzc2lvbkNoZWNrZXIgdG8gYmUgcHJvdmlkZWQhJ1xuICAgIH1cblxuICAgIHRoaXMucGVybWlzc2lvbkNoZWNrZXIgPSBoYXNQZXJtaXNzaW9uQ2hlY2tlciA/PyB1c2VyU2VydmljZVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKFxuICAgICAgKHRoaXMucGVybWlzc2lvbiAmJlxuICAgICAgICB0aGlzLm5lZ2F0ZSA9PT0gdGhpcy5oYXNQZXJtaXNzaW9uKEFycmF5LmlzQXJyYXkodGhpcy5wZXJtaXNzaW9uKSA/IHRoaXMucGVybWlzc2lvbiA6IFt0aGlzLnBlcm1pc3Npb25dKSkgfHxcbiAgICAgICF0aGlzLnBlcm1pc3Npb25cbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9jeElmUGVybWlzc2lvbkVsc2VUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMub2N4SWZQZXJtaXNzaW9uRWxzZVRlbXBsYXRlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMub25NaXNzaW5nUGVybWlzc2lvbiA9PT0gJ2Rpc2FibGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudGVtcGxhdGVSZWYpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbjogc3RyaW5nW10pIHtcbiAgICBpZiAodGhpcy5vY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9ucykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGVybWlzc2lvbi5ldmVyeSgocCkgPT4gdGhpcy5vY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9ucz8uaW5jbHVkZXMocCkpXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBjb25zb2xlLmxvZygn8J+RruKAjeKZgO+4jyBObyBwZXJtaXNzaW9uIGluIG92ZXJ3cml0ZXMgZm9yOiBgJywgcGVybWlzc2lvbilcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb24uZXZlcnkoKHApID0+IHRoaXMucGVybWlzc2lvbkNoZWNrZXI/Lmhhc1Blcm1pc3Npb24ocCkpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This checker always returns true, basically disabling the permission system on the UI side
|
|
3
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
4
|
+
*/
|
|
5
|
+
export { AlwaysGrantPermissionChecker } from '@onecx/angular-utils';
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
8
|
+
*/
|
|
9
|
+
export { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXBlcm1pc3Npb24tY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2luamVjdGlvbi10b2tlbnMvaGFzLXBlcm1pc3Npb24tY2hlY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRTs7R0FFRztBQUNILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZCBQbGVhc2UgaW1wb3J0IGZyb20gYEBvbmVjeC9hbmd1bGFyLXV0aWxzYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgeyBIYXNQZXJtaXNzaW9uQ2hlY2tlciB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLXV0aWxzJ1xuXG4vKipcbiAqIFRoaXMgY2hlY2tlciBhbHdheXMgcmV0dXJucyB0cnVlLCBiYXNpY2FsbHkgZGlzYWJsaW5nIHRoZSBwZXJtaXNzaW9uIHN5c3RlbSBvbiB0aGUgVUkgc2lkZVxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIGltcG9ydCBmcm9tIGBAb25lY3gvYW5ndWxhci11dGlsc2AgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IHsgQWx3YXlzR3JhbnRQZXJtaXNzaW9uQ2hlY2tlciB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLXV0aWxzJ1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSBpbXBvcnQgZnJvbSBgQG9uZWN4L2FuZ3VsYXItdXRpbHNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCB7IEhBU19QRVJNSVNTSU9OX0NIRUNLRVIgfSBmcm9tICdAb25lY3gvYW5ndWxhci11dGlscydcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvbW9kZWwvZGlhZ3JhbS1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEaWFncmFtRGF0YSA9IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIH1cbiJdfQ==
|
|
@@ -10,6 +10,9 @@ class TranslationCacheTopic extends SyncableTopic {
|
|
|
10
10
|
super('translationCache', 2);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
15
|
+
*/
|
|
13
16
|
export class TranslationCacheService {
|
|
14
17
|
constructor() {
|
|
15
18
|
this.translationTopic$ = new TranslationCacheTopic();
|
|
@@ -38,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
38
41
|
type: Injectable,
|
|
39
42
|
args: [{ providedIn: 'root' }]
|
|
40
43
|
}], ctorParameters: () => [] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL3NlcnZpY2VzL3RyYW5zbGF0aW9uLWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUNyRCxPQUFPLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7O0FBRWxELHVFQUF1RTtBQUN2RSx3RUFBd0U7QUFDeEUsMEJBQTBCO0FBQzFCLE1BQU0scUJBQXNCLFNBQVEsYUFBcUI7SUFDdkQ7UUFDRSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUIsQ0FBQztDQUNGO0FBUUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDO1FBRFEsc0JBQWlCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFBO1FBRXJELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVyxFQUFFLGlCQUF3QztRQUN0RSxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ2hDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDM0MsS0FBSyxFQUFFLENBQ1IsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDdkMsT0FBTyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDM0MsS0FBSyxFQUFFLENBQ1IsQ0FBQTtJQUNILENBQUM7K0dBL0JVLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7NEZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBvZiwgdGFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFN5bmNhYmxlVG9waWMgfSBmcm9tICdAb25lY3gvYWNjZWxlcmF0b3InXG5cbi8vIFRoaXMgdG9waWMgaXMgZGVmaW5lZCBoZXJlIGFuZCBub3QgaW4gaW50ZWdyYXRpb24taW50ZXJmYWNlLCBiZWNhdXNlXG4vLyBpdCBpcyBub3QgdXNlZCBhcyBmcmFtZXdvcmsgaW5kZXBlbmRlbnQgaW50ZWdyYXRpb24gYnV0IGZvciBpbXByb3Zpbmdcbi8vIGFuZ3VsYXIgc3BlY2lmaWMgdGhpbmdzXG5jbGFzcyBUcmFuc2xhdGlvbkNhY2hlVG9waWMgZXh0ZW5kcyBTeW5jYWJsZVRvcGljPHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigndHJhbnNsYXRpb25DYWNoZScsIDIpXG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBvbmVjeFRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIGltcG9ydCBmcm9tIGBAb25lY3gvYW5ndWxhci11dGlsc2AgaW5zdGVhZC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbkNhY2hlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25Ub3BpYyQgPSBuZXcgVHJhbnNsYXRpb25DYWNoZVRvcGljKClcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgd2luZG93WydvbmVjeFRyYW5zbGF0aW9ucyddID8/PSB7fVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRpb25Ub3BpYyQuZGVzdHJveSgpXG4gIH1cblxuICBnZXRUcmFuc2xhdGlvbkZpbGUodXJsOiBzdHJpbmcsIGNhY2hlTWlzc0Z1bmN0aW9uOiAoKSA9PiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh3aW5kb3dbJ29uZWN4VHJhbnNsYXRpb25zJ11bdXJsXSkge1xuICAgICAgcmV0dXJuIG9mKHdpbmRvd1snb25lY3hUcmFuc2xhdGlvbnMnXVt1cmxdKVxuICAgIH1cblxuICAgIGlmICh3aW5kb3dbJ29uZWN4VHJhbnNsYXRpb25zJ11bdXJsXSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25Ub3BpYyQucGlwZShcbiAgICAgICAgZmlsdGVyKChtZXNzYWdlVXJsKSA9PiBtZXNzYWdlVXJsID09PSB1cmwpLFxuICAgICAgICBtYXAoKCkgPT4gd2luZG93WydvbmVjeFRyYW5zbGF0aW9ucyddW3VybF0pLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApXG4gICAgfVxuXG4gICAgd2luZG93WydvbmVjeFRyYW5zbGF0aW9ucyddW3VybF0gPSBudWxsXG4gICAgcmV0dXJuIGNhY2hlTWlzc0Z1bmN0aW9uKCkucGlwZShcbiAgICAgIHRhcCgodCkgPT4ge1xuICAgICAgICB3aW5kb3dbJ29uZWN4VHJhbnNsYXRpb25zJ11bdXJsXSA9IHRcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblRvcGljJC5wdWJsaXNoKHVybClcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHdpbmRvd1snb25lY3hUcmFuc2xhdGlvbnMnXVt1cmxdKSxcbiAgICAgIGZpcnN0KClcbiAgICApXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { defaultIfEmpty, first, mergeMap, of, tap } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
4
|
+
*/
|
|
2
5
|
export class AsyncTranslateLoader {
|
|
3
6
|
static { this.lastTimerId = 0; }
|
|
4
7
|
constructor(translateLoader$) {
|
|
@@ -9,4 +12,4 @@ export class AsyncTranslateLoader {
|
|
|
9
12
|
return this.translateLoader$.pipe(tap(() => console.time('AsyncTranslateLoader_' + this.timerId)), defaultIfEmpty(undefined), first(), mergeMap((translateLoader) => translateLoader?.getTranslation(lang) ?? of({})), tap(() => console.timeEnd('AsyncTranslateLoader_' + this.timerId)));
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHJhbnNsYXRlLWxvYWRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL3V0aWxzL2FzeW5jLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFM0U7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO2FBQ3hCLGdCQUFXLEdBQUcsQ0FBQyxBQUFKLENBQUk7SUFHdEIsWUFBb0IsZ0JBQTZDO1FBQTdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNkI7UUFGakUsWUFBTyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXdCLENBQUM7SUFFckUsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDL0QsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUN6QixLQUFLLEVBQUUsRUFDUCxRQUFRLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQzlFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNuRSxDQUFBO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBkZWZhdWx0SWZFbXB0eSwgZmlyc3QsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcydcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBQbGVhc2UgaW1wb3J0IGZyb20gYEBvbmVjeC9hbmd1bGFyLXV0aWxzYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgQXN5bmNUcmFuc2xhdGVMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xuICBzdGF0aWMgbGFzdFRpbWVySWQgPSAwXG4gIHRpbWVySWQgPSBBc3luY1RyYW5zbGF0ZUxvYWRlci5sYXN0VGltZXJJZCsrXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVMb2FkZXIkOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZUxvYWRlcj4pIHt9XG5cbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMb2FkZXIkLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gY29uc29sZS50aW1lKCdBc3luY1RyYW5zbGF0ZUxvYWRlcl8nICsgdGhpcy50aW1lcklkKSksXG4gICAgICBkZWZhdWx0SWZFbXB0eSh1bmRlZmluZWQpLFxuICAgICAgZmlyc3QoKSxcbiAgICAgIG1lcmdlTWFwKCh0cmFuc2xhdGVMb2FkZXIpID0+IHRyYW5zbGF0ZUxvYWRlcj8uZ2V0VHJhbnNsYXRpb24obGFuZykgPz8gb2Yoe30pKSxcbiAgICAgIHRhcCgoKSA9PiBjb25zb2xlLnRpbWVFbmQoJ0FzeW5jVHJhbnNsYXRlTG9hZGVyXycgKyB0aGlzLnRpbWVySWQpKVxuICAgIClcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
4
|
+
*/
|
|
2
5
|
export class CachingTranslateLoader {
|
|
3
6
|
constructor(translationCache, http, prefix, suffix) {
|
|
4
7
|
this.translationCache = translationCache;
|
|
@@ -12,4 +15,4 @@ export class CachingTranslateLoader {
|
|
|
12
15
|
return this.translationCache.getTranslationFile(url, () => this.translateLoader.getTranslation(lang));
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy10cmFuc2xhdGUtbG9hZGVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvdXRpbHMvY2FjaGluZy10cmFuc2xhdGUtbG9hZGVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBSWhFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUNVLGdCQUF5QyxFQUN6QyxJQUFnQixFQUNoQixNQUFlLEVBQ2YsTUFBZTtRQUhmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFDekMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUV2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDdkcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcidcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgVHJhbnNsYXRpb25DYWNoZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1jYWNoZS5zZXJ2aWNlJ1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSBpbXBvcnQgZnJvbSBgQG9uZWN4L2FuZ3VsYXItdXRpbHNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoaW5nVHJhbnNsYXRlTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVMb2FkZXI6IFRyYW5zbGF0ZUh0dHBMb2FkZXJcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uQ2FjaGU6IFRyYW5zbGF0aW9uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHByZWZpeD86IHN0cmluZyxcbiAgICBwcml2YXRlIHN1ZmZpeD86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZUxvYWRlciA9IG5ldyBUcmFuc2xhdGVIdHRwTG9hZGVyKHRoaXMuaHR0cCwgdGhpcy5wcmVmaXgsIHRoaXMuc3VmZml4KVxuICB9XG5cbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnByZWZpeH0ke2xhbmd9JHt0aGlzLnN1ZmZpeH1gXG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbkNhY2hlLmdldFRyYW5zbGF0aW9uRmlsZSh1cmwsICgpID0+IHRoaXMudHJhbnNsYXRlTG9hZGVyLmdldFRyYW5zbGF0aW9uKGxhbmcpKVxuICB9XG59XG4iXX0=
|
|
@@ -6,6 +6,9 @@ import { AsyncTranslateLoader } from './async-translate-loader.utils';
|
|
|
6
6
|
import { CachingTranslateLoader } from './caching-translate-loader.utils';
|
|
7
7
|
import { TranslateCombinedLoader } from './translate.combined.loader';
|
|
8
8
|
let lastTranslateLoaderTimerId = 0;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
11
|
+
*/
|
|
9
12
|
export function createTranslateLoader(http, appStateService, translationCacheService) {
|
|
10
13
|
const ts = translationCacheService ?? inject(TranslationCacheService);
|
|
11
14
|
const timerId = lastTranslateLoaderTimerId++;
|
|
@@ -24,4 +27,4 @@ export function createTranslateLoader(http, appStateService, translationCacheSer
|
|
|
24
27
|
new CachingTranslateLoader(ts, http, Location.joinWithSlash(currentMfe.remoteBaseUrl, `assets/i18n/`), '.json'));
|
|
25
28
|
}), tap(() => console.timeEnd('createTranslateLoader_' + timerId))));
|
|
26
29
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi91dGlscy9jcmVhdGUtdHJhbnNsYXRlLWxvYWRlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRXJFLElBQUksMEJBQTBCLEdBQUcsQ0FBQyxDQUFBO0FBRWxDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxJQUFnQixFQUNoQixlQUFnQyxFQUNoQyx1QkFBaUQ7SUFFakQsTUFBTSxFQUFFLEdBQUcsdUJBQXVCLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFDckUsTUFBTSxPQUFPLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQTtJQUU1QyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxDQUFBO0lBQ2hELE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFO1FBQ25CLE9BQU8sSUFBSSx1QkFBdUI7UUFDaEMscURBQXFEO1FBQ3JELElBQUksc0JBQXNCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7UUFDL0Qsb0RBQW9EO1FBQ3BELElBQUksc0JBQXNCLENBQ3hCLEVBQUUsRUFDRixJQUFJLEVBQ0osUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLCtCQUErQixDQUFDLEVBQ2pGLE9BQU8sQ0FDUjtRQUNELHNEQUFzRDtRQUN0RCxJQUFJLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsT0FBTyxDQUFDO1FBQ2hGLDJCQUEyQjtRQUMzQixJQUFJLHNCQUFzQixDQUN4QixFQUFFLEVBQ0YsSUFBSSxFQUNKLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSx1Q0FBdUMsQ0FBQyxFQUN6RixPQUFPLENBQ1I7UUFDRCwwQkFBMEI7UUFDMUIsSUFBSSxzQkFBc0IsQ0FDeEIsRUFBRSxFQUNGLElBQUksRUFDSixRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLEVBQ2hFLE9BQU8sQ0FDUixDQUNGLENBQUE7SUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUMvRCxDQUNGLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgVHJhbnNsYXRpb25DYWNoZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1jYWNoZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQXN5bmNUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICcuL2FzeW5jLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5pbXBvcnQgeyBDYWNoaW5nVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnLi9jYWNoaW5nLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5pbXBvcnQgeyBUcmFuc2xhdGVDb21iaW5lZExvYWRlciB9IGZyb20gJy4vdHJhbnNsYXRlLmNvbWJpbmVkLmxvYWRlcidcblxubGV0IGxhc3RUcmFuc2xhdGVMb2FkZXJUaW1lcklkID0gMFxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSBpbXBvcnQgZnJvbSBgQG9uZWN4L2FuZ3VsYXItdXRpbHNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2xhdGVMb2FkZXIoXG4gIGh0dHA6IEh0dHBDbGllbnQsXG4gIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICB0cmFuc2xhdGlvbkNhY2hlU2VydmljZT86IFRyYW5zbGF0aW9uQ2FjaGVTZXJ2aWNlXG4pOiBUcmFuc2xhdGVMb2FkZXIge1xuICBjb25zdCB0cyA9IHRyYW5zbGF0aW9uQ2FjaGVTZXJ2aWNlID8/IGluamVjdChUcmFuc2xhdGlvbkNhY2hlU2VydmljZSlcbiAgY29uc3QgdGltZXJJZCA9IGxhc3RUcmFuc2xhdGVMb2FkZXJUaW1lcklkKytcblxuICBjb25zb2xlLnRpbWUoJ2NyZWF0ZVRyYW5zbGF0ZUxvYWRlcl8nICsgdGltZXJJZClcbiAgcmV0dXJuIG5ldyBBc3luY1RyYW5zbGF0ZUxvYWRlcihcbiAgICBjb21iaW5lTGF0ZXN0KFthcHBTdGF0ZVNlcnZpY2UuY3VycmVudE1mZSQuYXNPYnNlcnZhYmxlKCksIGFwcFN0YXRlU2VydmljZS5nbG9iYWxMb2FkaW5nJC5hc09ic2VydmFibGUoKV0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFssIGlzTG9hZGluZ10pID0+ICFpc0xvYWRpbmcpLFxuICAgICAgbWFwKChbY3VycmVudE1mZV0pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdGVDb21iaW5lZExvYWRlcihcbiAgICAgICAgICAvLyB0cmFuc2xhdGlvbnMgb2Ygc2hlbGwgb3Igb2YgYXBwIGluIHN0YW5kYWxvbmUgbW9kZVxuICAgICAgICAgIG5ldyBDYWNoaW5nVHJhbnNsYXRlTG9hZGVyKHRzLCBodHRwLCBgLi9hc3NldHMvaTE4bi9gLCAnLmpzb24nKSxcbiAgICAgICAgICAvLyB0cmFuc2xhdGlvbnMgb2YgcG9ydGFsLWludGVncmF0aW9uLWFuZ3VsYXIgb2YgYXBwXG4gICAgICAgICAgbmV3IENhY2hpbmdUcmFuc2xhdGVMb2FkZXIoXG4gICAgICAgICAgICB0cyxcbiAgICAgICAgICAgIGh0dHAsXG4gICAgICAgICAgICBMb2NhdGlvbi5qb2luV2l0aFNsYXNoKGN1cnJlbnRNZmUucmVtb3RlQmFzZVVybCwgYG9uZWN4LXBvcnRhbC1saWIvYXNzZXRzL2kxOG4vYCksXG4gICAgICAgICAgICAnLmpzb24nXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyB0cmFuc2xhdGlvbnMgb2YgcG9ydGFsLWludGVncmF0aW9uLWFuZ3VsYXIgb2Ygc2hlbGxcbiAgICAgICAgICBuZXcgQ2FjaGluZ1RyYW5zbGF0ZUxvYWRlcih0cywgaHR0cCwgYC4vb25lY3gtcG9ydGFsLWxpYi9hc3NldHMvaTE4bi9gLCAnLmpzb24nKSxcbiAgICAgICAgICAvLyBQcmltZWxvY2FsZSBUcmFuc2xhdGlvbnNcbiAgICAgICAgICBuZXcgQ2FjaGluZ1RyYW5zbGF0ZUxvYWRlcihcbiAgICAgICAgICAgIHRzLFxuICAgICAgICAgICAgaHR0cCxcbiAgICAgICAgICAgIExvY2F0aW9uLmpvaW5XaXRoU2xhc2goY3VycmVudE1mZS5yZW1vdGVCYXNlVXJsLCBgb25lY3gtcG9ydGFsLWxpYi9hc3NldHMvaTE4bi9wcmltZW5nL2ApLFxuICAgICAgICAgICAgJy5qc29uJ1xuICAgICAgICAgICksXG4gICAgICAgICAgLy8gdHJhbnNsYXRpb25zIG9mIHRoZSBhcHBcbiAgICAgICAgICBuZXcgQ2FjaGluZ1RyYW5zbGF0ZUxvYWRlcihcbiAgICAgICAgICAgIHRzLFxuICAgICAgICAgICAgaHR0cCxcbiAgICAgICAgICAgIExvY2F0aW9uLmpvaW5XaXRoU2xhc2goY3VycmVudE1mZS5yZW1vdGVCYXNlVXJsLCBgYXNzZXRzL2kxOG4vYCksXG4gICAgICAgICAgICAnLmpzb24nXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiBjb25zb2xlLnRpbWVFbmQoJ2NyZWF0ZVRyYW5zbGF0ZUxvYWRlcl8nICsgdGltZXJJZCkpXG4gICAgKVxuICApXG59XG4iXX0=
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { catchError, forkJoin, map, of } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Please import from `@onecx/angular-utils` instead.
|
|
4
|
+
*/
|
|
2
5
|
export class TranslateCombinedLoader {
|
|
3
6
|
constructor(...loaders) {
|
|
4
7
|
this._loaders = loaders;
|
|
@@ -36,4 +39,4 @@ export class TranslateCombinedLoader {
|
|
|
36
39
|
return output;
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmNvbWJpbmVkLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL3V0aWxzL3RyYW5zbGF0ZS5jb21iaW5lZC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVoRTs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsWUFBWSxHQUFHLE9BQTBCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLFFBQVEsQ0FDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3RCLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN6QixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUN0QixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFDZixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUMvQyxDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFDRCxRQUFRLENBQUMsSUFBUztRQUNoQixPQUFPLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVyxFQUFFLE1BQVc7UUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQzt3QkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTs7d0JBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDN0QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgZm9ya0pvaW4sIG1hcCwgb2YgfSBmcm9tICdyeGpzJ1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSBpbXBvcnQgZnJvbSBgQG9uZWN4L2FuZ3VsYXItdXRpbHNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVDb21iaW5lZExvYWRlciBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XG4gIHByaXZhdGUgX2xvYWRlcnM6IFRyYW5zbGF0ZUxvYWRlcltdXG4gIGNvbnN0cnVjdG9yKC4uLmxvYWRlcnM6IFRyYW5zbGF0ZUxvYWRlcltdKSB7XG4gICAgdGhpcy5fbG9hZGVycyA9IGxvYWRlcnNcbiAgfVxuICBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIHRoaXMuX2xvYWRlcnMubWFwKChsKSA9PlxuICAgICAgICBsLmdldFRyYW5zbGF0aW9uKGxhbmcpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgdHJhbnNsYXRpb24gZmlsZScsIGwsIGVycilcbiAgICAgICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgbWFwKChhbGxUcmFuc2xhdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHt9XG4gICAgICAgIGFsbFRyYW5zbGF0aW9ucy5mb3JFYWNoKCh0cmFuc2xhdGlvbnMpID0+IHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLm1lcmdlRGVlcChyZXN1bHQsIHRyYW5zbGF0aW9ucylcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcbiAgICApXG4gIH1cbiAgaXNPYmplY3QoaXRlbTogYW55KTogYW55IHtcbiAgICByZXR1cm4gaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSlcbiAgfVxuXG4gIG1lcmdlRGVlcCh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IG91dHB1dCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldClcbiAgICBpZiAodGhpcy5pc09iamVjdCh0YXJnZXQpICYmIHRoaXMuaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCkpIE9iamVjdC5hc3NpZ24ob3V0cHV0LCB7IFtrZXldOiBzb3VyY2Vba2V5XSB9KVxuICAgICAgICAgIGVsc2Ugb3V0cHV0W2tleV0gPSB0aGlzLm1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihvdXRwdXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBvdXRwdXRcbiAgfVxufVxuIl19
|