@posiwise/resource-module 0.0.164 → 0.0.166
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/fesm2022/{posiwise-resource-module-base-top-banner.component-BFtr7G1c.mjs → posiwise-resource-module-base-top-banner.component-R9azIxIo.mjs} +7 -6
- package/fesm2022/posiwise-resource-module-base-top-banner.component-R9azIxIo.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-E-pkuYdu.mjs +1795 -0
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-E-pkuYdu.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-blogs.module-WNIO7DrW.mjs +69 -0
- package/fesm2022/posiwise-resource-module-resource-blogs.module-WNIO7DrW.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-Dh5OXqvt.mjs +133 -0
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-Dh5OXqvt.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-events.module-ChCoscHv.mjs +228 -0
- package/fesm2022/posiwise-resource-module-resource-events.module-ChCoscHv.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-hub.module-BmxgRdgm.mjs +233 -0
- package/fesm2022/posiwise-resource-module-resource-hub.module-BmxgRdgm.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-integrations.module-DT8UMURB.mjs +274 -0
- package/fesm2022/posiwise-resource-module-resource-integrations.module-DT8UMURB.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-post.module-DjQ0iYHm.mjs +304 -0
- package/fesm2022/posiwise-resource-module-resource-post.module-DjQ0iYHm.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-sOmibA2d.mjs +104 -0
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-sOmibA2d.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-root.module-Ce2CFCAX.mjs +393 -0
- package/fesm2022/posiwise-resource-module-resource-root.module-Ce2CFCAX.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-videos.module-C6URbeS-.mjs +69 -0
- package/fesm2022/posiwise-resource-module-resource-videos.module-C6URbeS-.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-D1ph6ZVS.mjs +70 -0
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-D1ph6ZVS.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module.mjs +1 -31
- package/fesm2022/posiwise-resource-module.mjs.map +1 -1
- package/lib/public/shared/resource-shared.module.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/index.mjs +0 -25
- package/esm2022/lib/public/components/base/base-resource.component.mjs +0 -144
- package/esm2022/lib/public/components/base/base-top-banner.component.mjs +0 -111
- package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +0 -174
- package/esm2022/lib/public/components/resource-blogs/resource-blog-top-banner/resource-blog-top-banner.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-blogs/resource-blog.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +0 -108
- package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +0 -106
- package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +0 -88
- package/esm2022/lib/public/components/resource-contact-us/resource-contact-us.module.mjs +0 -16
- package/esm2022/lib/public/components/resource-edit-card/resource-edit-card.component.mjs +0 -230
- package/esm2022/lib/public/components/resource-edit-card-lazy/resource-edit-card-lazy.component.mjs +0 -75
- package/esm2022/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +0 -237
- package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +0 -124
- package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +0 -107
- package/esm2022/lib/public/components/resource-post/resource-post-details/resource-post-details.component.mjs +0 -128
- package/esm2022/lib/public/components/resource-post/resource-post.component.mjs +0 -39
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes-top-banner/resource-release-notes-top-banner.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes.component.mjs +0 -59
- package/esm2022/lib/public/components/resource-top-banner-edit/resource-top-banner-edit.component.mjs +0 -106
- package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +0 -76
- package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +0 -130
- package/esm2022/lib/public/components/resource-videos/resource-videos-top-banner/resource-videos-top-banner.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-videos/resource-videos.component.mjs +0 -27
- package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +0 -101
- package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +0 -115
- package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +0 -148
- package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +0 -84
- package/esm2022/lib/public/components/resources/resources.component.mjs +0 -84
- package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +0 -160
- package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +0 -208
- package/esm2022/lib/public/components/testimonial-card/testimonial-card.component.mjs +0 -86
- package/esm2022/lib/public/components/white-papers/white-papers-top-banner/white-papers-top-banner.component.mjs +0 -27
- package/esm2022/lib/public/components/white-papers/white-papers.component.mjs +0 -27
- package/esm2022/lib/public/modules/blogs/resource-blogs.module.mjs +0 -31
- package/esm2022/lib/public/modules/case-studies/resource-case-studies.module.mjs +0 -36
- package/esm2022/lib/public/modules/events/resource-events.module.mjs +0 -31
- package/esm2022/lib/public/modules/hub/resource-hub.module.mjs +0 -30
- package/esm2022/lib/public/modules/integrations/resource-integrations.module.mjs +0 -31
- package/esm2022/lib/public/modules/post/resource-post.module.mjs +0 -33
- package/esm2022/lib/public/modules/release-notes/resource-release-notes.module.mjs +0 -31
- package/esm2022/lib/public/modules/root/resource-root-shared.module.mjs +0 -61
- package/esm2022/lib/public/modules/root/resource-root.module.mjs +0 -33
- package/esm2022/lib/public/modules/videos/resource-videos.module.mjs +0 -31
- package/esm2022/lib/public/modules/white-papers/resource-white-papers.module.mjs +0 -32
- package/esm2022/lib/public/resource-public.module.mjs +0 -18
- package/esm2022/lib/public/resource-public.routing.module.mjs +0 -61
- package/esm2022/lib/public/shared/resource-cards.module.mjs +0 -121
- package/esm2022/lib/public/shared/resource-edit.module.mjs +0 -64
- package/esm2022/lib/public/shared/resource-shared.module.mjs +0 -128
- package/esm2022/lib/resource.module.mjs +0 -15
- package/esm2022/lib/resource.service.mjs +0 -79
- package/esm2022/lib/shared/models/resource.model.mjs +0 -12
- package/esm2022/lib/shared/resource-modal.interface.mjs +0 -2
- package/esm2022/posiwise-resource-module.mjs +0 -5
- package/fesm2022/posiwise-resource-module-base-top-banner.component-BFtr7G1c.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-CSoAgDvz.mjs +0 -1795
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-CSoAgDvz.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-blogs.module-Bj-Zi-hs.mjs +0 -91
- package/fesm2022/posiwise-resource-module-resource-blogs.module-Bj-Zi-hs.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-C8dIufFw.mjs +0 -155
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-C8dIufFw.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-events.module-DyZv40A6.mjs +0 -245
- package/fesm2022/posiwise-resource-module-resource-events.module-DyZv40A6.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-hub.module-Bxxsz8FP.mjs +0 -249
- package/fesm2022/posiwise-resource-module-resource-hub.module-Bxxsz8FP.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-integrations.module-D8bz630p.mjs +0 -287
- package/fesm2022/posiwise-resource-module-resource-integrations.module-D8bz630p.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-post.module-DVxk5PGg.mjs +0 -318
- package/fesm2022/posiwise-resource-module-resource-post.module-DVxk5PGg.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-yWTEtDrA.mjs +0 -124
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-yWTEtDrA.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-root.module-B321gKmv.mjs +0 -408
- package/fesm2022/posiwise-resource-module-resource-root.module-B321gKmv.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-videos.module-dcXYpdg1.mjs +0 -91
- package/fesm2022/posiwise-resource-module-resource-videos.module-dcXYpdg1.mjs.map +0 -1
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-BIPcEt7S.mjs +0 -92
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-BIPcEt7S.mjs.map +0 -1
package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';
|
|
2
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
3
|
-
import { HelperService } from '@posiwise/helper-service';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@posiwise/shared-components";
|
|
8
|
-
import * as i3 from "@posiwise/directives";
|
|
9
|
-
import * as i4 from "../resource-edit-card-lazy/resource-edit-card-lazy.component";
|
|
10
|
-
import * as i5 from "primeng/paginator";
|
|
11
|
-
import * as i6 from "@jsverse/transloco";
|
|
12
|
-
export class ResourceCompanyCardComponent extends AppBaseComponent {
|
|
13
|
-
constructor(injector) {
|
|
14
|
-
super(injector);
|
|
15
|
-
this.getPosts = new EventEmitter();
|
|
16
|
-
this.destroy$ = new Subject();
|
|
17
|
-
this.canEditResourcesValue = false;
|
|
18
|
-
this.header = '';
|
|
19
|
-
this.data = [];
|
|
20
|
-
this.vendor = false;
|
|
21
|
-
this.postData = false;
|
|
22
|
-
this.filteredData = [];
|
|
23
|
-
this.first = 0;
|
|
24
|
-
this.rows = 12;
|
|
25
|
-
}
|
|
26
|
-
ngOnChanges() {
|
|
27
|
-
this.search();
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
if (this.userLoggedIn) {
|
|
31
|
-
this.updateCanEditResourcesValue();
|
|
32
|
-
this.localStorage.getItem$('product').subscribe(res => {
|
|
33
|
-
const data = res ? JSON.parse(res) : null;
|
|
34
|
-
this.subscriptionId = data?.subscriptionId;
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
search(keywords) {
|
|
39
|
-
if (keywords) {
|
|
40
|
-
this.filteredData = this.data.filter(x => x.title.toLowerCase().includes(keywords.toLowerCase()));
|
|
41
|
-
if (this.filteredData.length === 0) {
|
|
42
|
-
this.postData = true;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.postData = false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.filteredData = [...this.data];
|
|
50
|
-
this.postData = false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
onPageChange(event) {
|
|
54
|
-
this.first = event.first;
|
|
55
|
-
this.rows = event.rows;
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
this.destroy$.next();
|
|
59
|
-
this.destroy$.complete();
|
|
60
|
-
}
|
|
61
|
-
updateCanEditResourcesValue() {
|
|
62
|
-
this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
|
|
63
|
-
}
|
|
64
|
-
canEditResources() {
|
|
65
|
-
return this.canEditResourcesValue;
|
|
66
|
-
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCompanyCardComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceCompanyCardComponent, selector: "pw-resource-company-card", inputs: { header: "header", data: "data", integrationCountDisplay: "integrationCountDisplay", vendor: "vendor", user: "user", userLoggedIn: "userLoggedIn" }, outputs: { getPosts: "getPosts" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <ng-container *ngIf=\"img?.showcase; else noLinkImage\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n </ng-container>\n <ng-template #noLinkImage>\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </ng-template>\n\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\">\n </pw-resource-edit-card-lazy>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <ng-container *ngIf=\"img?.showcase; else noLinkTitle\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n </ng-container>\n <ng-template #noLinkTitle>\n <span class=\"vendor-name text-center\">{{ img?.title }}</span>\n </ng-template>\n\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\">\n </pw-resource-edit-card-lazy>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "component", type: i4.ResourceEditCardLazyComponent, selector: "pw-resource-edit-card-lazy", inputs: ["id", "resourceData", "canEdit"], outputs: ["updated"] }, { kind: "component", type: i5.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
|
|
69
|
-
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCompanyCardComponent, decorators: [{
|
|
71
|
-
type: Component,
|
|
72
|
-
args: [{ selector: 'pw-resource-company-card', template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <ng-container *ngIf=\"img?.showcase; else noLinkImage\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n </ng-container>\n <ng-template #noLinkImage>\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </ng-template>\n\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\">\n </pw-resource-edit-card-lazy>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <ng-container *ngIf=\"img?.showcase; else noLinkTitle\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n </ng-container>\n <ng-template #noLinkTitle>\n <span class=\"vendor-name text-center\">{{ img?.title }}</span>\n </ng-template>\n\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\">\n </pw-resource-edit-card-lazy>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"] }]
|
|
73
|
-
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { getPosts: [{
|
|
74
|
-
type: Output
|
|
75
|
-
}], header: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], data: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], integrationCountDisplay: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], vendor: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], user: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], userLoggedIn: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtY29tcGFueS1jYXJkL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWNvbXBhbnktY2FyZC9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBYS9CLE1BQU0sT0FBTyw0QkFDVCxTQUFRLGdCQUFnQjtJQW9CeEIsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFsQlYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWhELDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNyQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFJeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsU0FBSSxHQUFHLEVBQUUsQ0FBQztJQUtWLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsY0FBYyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsUUFBUztRQUNaLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUN6RCxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFnQjtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFUSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ08sMkJBQTJCO1FBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQ3ZELElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7K0dBdkVRLDRCQUE0QjttR0FBNUIsNEJBQTRCLDZTQzVCekMsa3dHQWlGQTs7NEZEckRhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSwwQkFBMEI7NkVBUTFCLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VQb3N0LCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIFBhZ2VFdmVudCB7XG4gICAgZmlyc3Q6IG51bWJlcjtcbiAgICByb3dzOiBudW1iZXI7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIHBhZ2VDb3VudDogbnVtYmVyO1xufVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZS1jb21wYW55LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlQ29tcGFueUNhcmRDb21wb25lbnRcbiAgICBleHRlbmRzIEFwcEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBAT3V0cHV0KCkgZ2V0UG9zdHMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc291cmNlUG9zdFtdPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY2FuRWRpdFJlc291cmNlc1ZhbHVlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGVhZGVyID0gJyc7XG4gICAgQElucHV0KCkgZGF0YSA9IFtdO1xuICAgIEBJbnB1dCgpIGludGVncmF0aW9uQ291bnREaXNwbGF5O1xuICAgIEBJbnB1dCgpIHZlbmRvciA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHVzZXI6IFVzZXI7XG4gICAgQElucHV0KCkgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgcG9zdERhdGEgPSBmYWxzZTtcbiAgICBmaWx0ZXJlZERhdGEgPSBbXTtcbiAgICBmaXJzdCA9IDA7XG4gICAgcm93cyA9IDEyO1xuICAgIHN1YnNjcmlwdGlvbklkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaCgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbkVkaXRSZXNvdXJjZXNWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWFyY2goa2V5d29yZHM/KSB7XG4gICAgICAgIGlmIChrZXl3b3Jkcykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgICAgICAgICB4LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZHMudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0RGF0YSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdERhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICAgICAgICB0aGlzLnBvc3REYXRhID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGV2ZW50LmZpcnN0O1xuICAgICAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIHVwZGF0ZUNhbkVkaXRSZXNvdXJjZXNWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYW5FZGl0UmVzb3VyY2VzVmFsdWUgPSBIZWxwZXJTZXJ2aWNlLmNhbkVkaXRSZXNvdXJjZXMoXG4gICAgICAgICAgICB0aGlzLnVzZXIsXG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbixcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjYW5FZGl0UmVzb3VyY2VzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5FZGl0UmVzb3VyY2VzVmFsdWU7XG4gICAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJ7ICd2ZW5kb3JzLWRpc3RyaWJ1dG9yLXdyYXBwZXInOiAhdmVuZG9yIH1cIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMyBzZWFyY2gtY29udGFpbmVyXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW50LXNwYW5cIj57e2hlYWRlcn19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0lmPVwiaW50ZWdyYXRpb25Db3VudERpc3BsYXkgPiAwXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBzZWFyY2gtaWNvblwiPjwvaT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG5cbiAgICAgICAgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGVnIHNlY3VyaXR5XCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXQgdG9wLXNlYXJjaC1pbnB1dFwiIC8+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInBvc3REYXRhXCI+XG4gICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1NlYXJjaC5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPiA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFwb3N0RGF0YSAmJiBpbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXQtNFwiXG4gICAgKm5nRm9yPVwibGV0IGltZyBvZiBmaWx0ZXJlZERhdGEgfCBzbGljZTpmaXJzdDooZmlyc3QgKyByb3dzKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJib3hlcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWc/LmNvbXBhbnlJbWc7IGVsc2UgY2hlY2tSZWN0YW5ndWxhclwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiaW1nLmNvbXBhbnlJbWdcIiBhbHQ9XCJWZW5kb3IgQ29tcGFueSBJY29uXCIgY2xhc3M9XCJ2ZW5kb3ItaWNvblwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNjaGVja1JlY3Rhbmd1bGFyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1nPy5yZWN0YW5ndWxhcl9waWN0dXJlPy51cmw7IGVsc2Ugbm9JbWFnZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1nLnJlY3Rhbmd1bGFyX3BpY3R1cmUudXJsLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvJyk7IGVsc2Ugc2hvd1Bvc3ROYW1lXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1nPy5zaG93Y2FzZTsgZWxzZSBub0xpbmtJbWFnZVwiPlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cInZlbmRvci1saW5rXCIgW2hyZWZdPVwiaW1nLmV4dGVybmFsX3VybCB8fCAoJy9yZXNvdXJjZXMvdmlldy8nICsgaW1nLnNsdWcpXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5yZWN0YW5ndWxhcl9waWN0dXJlLnVybFwiIGFsdD1cIlZlbmRvciBSZWN0YW5ndWxhciBDb21wYW55IEljb25cIiBjbGFzcz1cInZlbmRvci1pY29uXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vTGlua0ltYWdlPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1nLnJlY3Rhbmd1bGFyX3BpY3R1cmUudXJsXCIgYWx0PVwiVmVuZG9yIFJlY3Rhbmd1bGFyIENvbXBhbnkgSWNvblwiIGNsYXNzPVwidmVuZG9yLWljb25cIiAvPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPHB3LXJlc291cmNlLWVkaXQtY2FyZC1sYXp5XG4gICAgICAgICAgICAgIFtjYW5FZGl0XT1cImNhbkVkaXRSZXNvdXJjZXNWYWx1ZVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpbWc/LmlkXCJcbiAgICAgICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJpbWdcIlxuICAgICAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cy5lbWl0KClcIj5cbiAgICAgICAgICAgIDwvcHctcmVzb3VyY2UtZWRpdC1jYXJkLWxhenk+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93UG9zdE5hbWU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWc/LnNob3djYXNlOyBlbHNlIG5vTGlua1RpdGxlXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ2ZW5kb3ItbGlua1wiIFtocmVmXT1cImltZy5leHRlcm5hbF91cmwgfHwgKCcvcmVzb3VyY2VzL3ZpZXcvJyArIGltZy5zbHVnKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZW5kb3ItbmFtZSB0ZXh0LWNlbnRlciBtdC0yXCI+e3sgaW1nPy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vTGlua1RpdGxlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmVuZG9yLW5hbWUgdGV4dC1jZW50ZXJcIj57eyBpbWc/LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxwdy1yZXNvdXJjZS1lZGl0LWNhcmQtbGF6eVxuICAgICAgICAgIFtjYW5FZGl0XT1cImNhbkVkaXRSZXNvdXJjZXNWYWx1ZVwiXG4gICAgICAgICAgW2lkXT1cImltZz8uaWRcIlxuICAgICAgICAgIFtyZXNvdXJjZURhdGFdPVwiaW1nXCJcbiAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cy5lbWl0KClcIj5cbiAgICAgICAgPC9wdy1yZXNvdXJjZS1lZGl0LWNhcmQtbGF6eT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbVBhZ2luYXRvciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTUganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICA8cC1wYWdpbmF0b3JcbiAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICBbcm93c109XCJyb3dzXCJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwiZmlsdGVyZWREYXRhLmxlbmd0aFwiXG4gICAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9wLXBhZ2luYXRvcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { Trial4SharedContactUsModule } from '@posiwise/resource-contact-us';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class Trial4ContactUsModule {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Trial4ContactUsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: Trial4ContactUsModule, imports: [Trial4SharedContactUsModule], exports: [Trial4SharedContactUsModule] }); }
|
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Trial4ContactUsModule, imports: [Trial4SharedContactUsModule, Trial4SharedContactUsModule] }); }
|
|
8
|
-
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Trial4ContactUsModule, decorators: [{
|
|
10
|
-
type: NgModule,
|
|
11
|
-
args: [{
|
|
12
|
-
imports: [Trial4SharedContactUsModule],
|
|
13
|
-
exports: [Trial4SharedContactUsModule]
|
|
14
|
-
}]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29udGFjdC11cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWNvbnRhY3QtdXMvcmVzb3VyY2UtY29udGFjdC11cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO2dIQUFyQixxQkFBcUIsWUFIcEIsMkJBQTJCLGFBQzNCLDJCQUEyQjtnSEFFNUIscUJBQXFCLFlBSHBCLDJCQUEyQixFQUMzQiwyQkFBMkI7OzRGQUU1QixxQkFBcUI7a0JBSmpDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyaWFsNFNoYXJlZENvbnRhY3RVc01vZHVsZSB9IGZyb20gJ0Bwb3Npd2lzZS9yZXNvdXJjZS1jb250YWN0LXVzJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbVHJpYWw0U2hhcmVkQ29udGFjdFVzTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVHJpYWw0U2hhcmVkQ29udGFjdFVzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUcmlhbDRDb250YWN0VXNNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';
|
|
2
|
-
import { FormBuilder } from '@angular/forms';
|
|
3
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
4
|
-
import { AuthService, TagService } from '@posiwise/common-services';
|
|
5
|
-
import { HelperService } from '@posiwise/helper-service';
|
|
6
|
-
import moment from 'moment';
|
|
7
|
-
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
8
|
-
import { ResourceService } from '../../../resource.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/forms";
|
|
11
|
-
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
12
|
-
import * as i3 from "../../../resource.service";
|
|
13
|
-
import * as i4 from "@posiwise/common-services";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "primeng/calendar";
|
|
16
|
-
import * as i7 from "primeng/autocomplete";
|
|
17
|
-
import * as i8 from "@posiwise/utils";
|
|
18
|
-
import * as i9 from "@posiwise/shared-components";
|
|
19
|
-
import * as i10 from "@posiwise/directives";
|
|
20
|
-
import * as i11 from "ngx-quill";
|
|
21
|
-
import * as i12 from "ngx-ui-switch";
|
|
22
|
-
import * as i13 from "@jsverse/transloco";
|
|
23
|
-
export class ResourceEditCardComponent extends AppBaseComponent {
|
|
24
|
-
constructor(fb, modalService, resourceService, authService, tagService, injector) {
|
|
25
|
-
super(injector);
|
|
26
|
-
this.fb = fb;
|
|
27
|
-
this.modalService = modalService;
|
|
28
|
-
this.resourceService = resourceService;
|
|
29
|
-
this.authService = authService;
|
|
30
|
-
this.tagService = tagService;
|
|
31
|
-
this.updated = new EventEmitter();
|
|
32
|
-
this.image = '';
|
|
33
|
-
this.rectangularImage = '';
|
|
34
|
-
this.file = null;
|
|
35
|
-
this.rectangularFile = null;
|
|
36
|
-
this.selectedTags = [];
|
|
37
|
-
this.allTags = [];
|
|
38
|
-
this.tagsSuggestion = [];
|
|
39
|
-
this.buttonBusy = false;
|
|
40
|
-
this.editForm = this.fb.group({
|
|
41
|
-
title: [''],
|
|
42
|
-
external_url: [''],
|
|
43
|
-
cta_text: [''],
|
|
44
|
-
when: [''],
|
|
45
|
-
showcase: [false],
|
|
46
|
-
published_at: [false],
|
|
47
|
-
accepted_at: [false],
|
|
48
|
-
body: ['']
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
ngOnInit() {
|
|
52
|
-
this.authService.getToken$().subscribe(res => {
|
|
53
|
-
this.userLoggedIn = !!res;
|
|
54
|
-
if (this.userLoggedIn) {
|
|
55
|
-
this.localStorage.getItem$('product').subscribe(res => {
|
|
56
|
-
const data = res ? JSON.parse(res) : null;
|
|
57
|
-
this.subscriptionId = data?.subscriptionId;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
navigateToResourceEdit() {
|
|
63
|
-
const basePath = `/admin/resources/${this.resourceData?.slug}`;
|
|
64
|
-
const fullUrl = `${location.origin}${basePath}`;
|
|
65
|
-
window.open(fullUrl, '_blank');
|
|
66
|
-
}
|
|
67
|
-
openModal(modalTemplate) {
|
|
68
|
-
if (this.resourceData) {
|
|
69
|
-
const when = this.resourceData.when ? new Date(this.resourceData.when) : null;
|
|
70
|
-
this.editForm.setValue({
|
|
71
|
-
title: this.resourceData.title ?? '',
|
|
72
|
-
external_url: this.resourceData.external_url ?? '',
|
|
73
|
-
cta_text: this.resourceData.cta_text ?? '',
|
|
74
|
-
when: when ?? '',
|
|
75
|
-
showcase: !!this.resourceData.showcase,
|
|
76
|
-
published_at: !!this.resourceData.published_at,
|
|
77
|
-
accepted_at: !!this.resourceData.accepted_at,
|
|
78
|
-
body: this.resourceData.body
|
|
79
|
-
});
|
|
80
|
-
this.image = this.resourceData.picture?.url ?? '';
|
|
81
|
-
this.selectedTags = this.resourceData?.tags?.length ? [...this.resourceData.tags] : [];
|
|
82
|
-
this.rectangularImage = this.resourceData.rectangular_picture?.url ?? '';
|
|
83
|
-
}
|
|
84
|
-
this.modalService.open(modalTemplate, { centered: true, size: 'lg' });
|
|
85
|
-
this.getPostTags();
|
|
86
|
-
}
|
|
87
|
-
search(event) {
|
|
88
|
-
let values = [];
|
|
89
|
-
if (event.query) {
|
|
90
|
-
values = this.allTags.filter(x => x.name.toLowerCase().includes(event.query.toLowerCase()));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
this.allTags.forEach(element => {
|
|
94
|
-
values.push(element);
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
this.tagsSuggestion = values;
|
|
98
|
-
}
|
|
99
|
-
getPostTags() {
|
|
100
|
-
this.tagService
|
|
101
|
-
.getTagsByType('post_categories', {}, this.subscriptionId)
|
|
102
|
-
.subscribe(response => {
|
|
103
|
-
this.allTags = response.tags;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
deleteRectangularImage() {
|
|
107
|
-
this.rectangularImage = null;
|
|
108
|
-
this.rectangularFile = null;
|
|
109
|
-
}
|
|
110
|
-
openImageModal(modalTemplate) {
|
|
111
|
-
this.imageModalRef = this.modalService.open(modalTemplate, { centered: true, size: 'md' });
|
|
112
|
-
}
|
|
113
|
-
onImageSelected(base64) {
|
|
114
|
-
this.image = base64;
|
|
115
|
-
this.file = HelperService.convertBase64ToFile(base64);
|
|
116
|
-
this.imageModalRef?.close();
|
|
117
|
-
}
|
|
118
|
-
onRectangularImageSelection(base64) {
|
|
119
|
-
this.rectangularImage = base64;
|
|
120
|
-
this.rectangularFile = HelperService.convertBase64ToFile(base64);
|
|
121
|
-
this.imageModalRef?.close();
|
|
122
|
-
}
|
|
123
|
-
removeImage() {
|
|
124
|
-
this.image = null;
|
|
125
|
-
this.file = null;
|
|
126
|
-
}
|
|
127
|
-
saveResource() {
|
|
128
|
-
this.buttonBusy = true;
|
|
129
|
-
this.saveTags(this.id);
|
|
130
|
-
const payload = {
|
|
131
|
-
...this.editForm.value,
|
|
132
|
-
subscription_id: this.subscriptionId
|
|
133
|
-
};
|
|
134
|
-
this.handlePicture(payload);
|
|
135
|
-
this.handlePublishedAt(payload);
|
|
136
|
-
this.handleAcceptedAt(payload);
|
|
137
|
-
this.handleAcceptedAt(payload);
|
|
138
|
-
this.handleOptionalFields(payload);
|
|
139
|
-
this.handleRectangularPicture(payload);
|
|
140
|
-
this.handleRemovals(payload);
|
|
141
|
-
this.resourceService.updatePost(payload, this.id).subscribe(() => {
|
|
142
|
-
this.buttonBusy = false;
|
|
143
|
-
this.toast.success('Blog Post Updated');
|
|
144
|
-
this.updated.emit();
|
|
145
|
-
this.modalService.dismissAll();
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
saveTags(id) {
|
|
149
|
-
if (this.selectedTags.length) {
|
|
150
|
-
const data = {
|
|
151
|
-
entity_tags: this.selectedTags.map(tag => ({ tag_id: tag.id })),
|
|
152
|
-
slug: id,
|
|
153
|
-
tag_entity: 'Post' // or use TAG_ENTITY.POST if you imported it
|
|
154
|
-
};
|
|
155
|
-
this.tagService.addTags(data, this.subscriptionId).subscribe();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
handlePicture(data) {
|
|
159
|
-
if (this.file) {
|
|
160
|
-
data.picture = this.file;
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
delete data.picture;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
handlePublishedAt(data) {
|
|
167
|
-
const control = this.editForm.get('published_at');
|
|
168
|
-
if (control?.dirty) {
|
|
169
|
-
data.published_at = control.value ? moment().format('DD-MMM-YYYY') : '';
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
delete data.published_at;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
handleAcceptedAt(data) {
|
|
176
|
-
const control = this.editForm.get('accepted_at');
|
|
177
|
-
if (control?.dirty) {
|
|
178
|
-
data.accepted_at = control.value ? moment().format('DD-MMM-YYYY') : '';
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
delete data.accepted_at;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
handleOptionalFields(data) {
|
|
185
|
-
if (!this.editForm.get('when')?.value) {
|
|
186
|
-
data.when = '';
|
|
187
|
-
}
|
|
188
|
-
if (!this.editForm.get('showcase')?.value) {
|
|
189
|
-
data.showcase = '';
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
handleRectangularPicture(data) {
|
|
193
|
-
if (this.rectangularFile) {
|
|
194
|
-
data.rectangular_picture = this.rectangularFile;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
delete data.rectangular_picture;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
handleRemovals(data) {
|
|
201
|
-
if (!this.file && !this.image) {
|
|
202
|
-
data.remove_picture = true;
|
|
203
|
-
}
|
|
204
|
-
if (!this.rectangularFile && !this.rectangularImage) {
|
|
205
|
-
data.remove_rectangular_picture = true;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
openRectModal(content) {
|
|
209
|
-
this.imageModalRef = this.modalService.open(content, {
|
|
210
|
-
centered: true,
|
|
211
|
-
windowClass: 'modal-holder'
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
handleImageError(event, fallbackPath) {
|
|
215
|
-
HelperService.handleImageFallbackPath(event, fallbackPath);
|
|
216
|
-
}
|
|
217
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardComponent, deps: [{ token: i1.FormBuilder }, { token: i2.NgbModal }, { token: i3.ResourceService }, { token: i4.AuthService }, { token: i4.TagService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
218
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: { id: "id", resourceData: "resourceData" }, outputs: { updated: "updated" }, usesInheritance: true, ngImport: i0, template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\"\n (keydown.enter)=\"openModal(editResourceModal)\"\n (keydown.space)=\"openModal(editResourceModal)\"\n title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\"\n (keydown.enter)=\"navigateToResourceEdit()\"\n (keydown.space)=\"navigateToResourceEdit()\"\n title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.ExternalUrl' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i7.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i8.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.LazyImgDirective, selector: "img" }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "component", type: i12.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
219
|
-
}
|
|
220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardComponent, decorators: [{
|
|
221
|
-
type: Component,
|
|
222
|
-
args: [{ selector: 'pw-resource-edit-card', template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\"\n (keydown.enter)=\"openModal(editResourceModal)\"\n (keydown.space)=\"openModal(editResourceModal)\"\n title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\"\n (keydown.enter)=\"navigateToResourceEdit()\"\n (keydown.space)=\"navigateToResourceEdit()\"\n title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.ExternalUrl' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"] }]
|
|
223
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.NgbModal }, { type: i3.ResourceService }, { type: i4.AuthService }, { type: i4.TagService }, { type: i0.Injector }], propDecorators: { id: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], resourceData: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], updated: [{
|
|
228
|
-
type: Output
|
|
229
|
-
}] } });
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZWRpdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtZWRpdC1jYXJkL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWVkaXQtY2FyZC9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPNUQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGdCQUFnQjtJQW1CM0QsWUFDcUIsRUFBZSxFQUNmLFlBQXNCLEVBQ3RCLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3ZDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVBDLE9B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ZSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUMzQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFPO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pELFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLGNBQWM7U0FDOUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVksRUFBRSxZQUFZO1FBQ3ZDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0QsQ0FBQzsrR0EvTlEseUJBQXlCO21HQUF6Qix5QkFBeUIseUtDbEJ0QyxvZ1RBZ09BOzs0RkQ5TWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNJLHVCQUF1QjsrTUFLeEIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVGFnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IFJlc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXJlc291cmNlLWVkaXQtY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VFZGl0Q2FyZENvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlkITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHJlc291cmNlRGF0YTtcbiAgICBAT3V0cHV0KCkgdXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gICAgaW1hZ2UgPSAnJztcbiAgICByZWN0YW5ndWxhckltYWdlID0gJyc7XG4gICAgZmlsZTogRmlsZSB8IG51bGwgPSBudWxsO1xuICAgIHJlY3Rhbmd1bGFyRmlsZTogRmlsZSB8IG51bGwgPSBudWxsO1xuXG4gICAgaW1hZ2VNb2RhbFJlZjtcbiAgICBzZWxlY3RlZFRhZ3MgPSBbXTtcbiAgICBhbGxUYWdzID0gW107XG4gICAgdGFnc1N1Z2dlc3Rpb24gPSBbXTtcbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBidXR0b25CdXN5ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdGl0bGU6IFsnJ10sXG4gICAgICAgICAgICBleHRlcm5hbF91cmw6IFsnJ10sXG4gICAgICAgICAgICBjdGFfdGV4dDogWycnXSxcbiAgICAgICAgICAgIHdoZW46IFsnJ10sXG4gICAgICAgICAgICBzaG93Y2FzZTogW2ZhbHNlXSxcbiAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogW2ZhbHNlXSxcbiAgICAgICAgICAgIGFjY2VwdGVkX2F0OiBbZmFsc2VdLFxuICAgICAgICAgICAgYm9keTogWycnXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvUmVzb3VyY2VFZGl0KCkge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGAvYWRtaW4vcmVzb3VyY2VzLyR7dGhpcy5yZXNvdXJjZURhdGE/LnNsdWd9YDtcbiAgICAgICAgY29uc3QgZnVsbFVybCA9IGAke2xvY2F0aW9uLm9yaWdpbn0ke2Jhc2VQYXRofWA7XG4gICAgICAgIHdpbmRvdy5vcGVuKGZ1bGxVcmwsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwobW9kYWxUZW1wbGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZURhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoZW4gPSB0aGlzLnJlc291cmNlRGF0YS53aGVuID8gbmV3IERhdGUodGhpcy5yZXNvdXJjZURhdGEud2hlbikgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMucmVzb3VyY2VEYXRhLnRpdGxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGV4dGVybmFsX3VybDogdGhpcy5yZXNvdXJjZURhdGEuZXh0ZXJuYWxfdXJsID8/ICcnLFxuICAgICAgICAgICAgICAgIGN0YV90ZXh0OiB0aGlzLnJlc291cmNlRGF0YS5jdGFfdGV4dCA/PyAnJyxcbiAgICAgICAgICAgICAgICB3aGVuOiB3aGVuID8/ICcnLFxuICAgICAgICAgICAgICAgIHNob3djYXNlOiAhIXRoaXMucmVzb3VyY2VEYXRhLnNob3djYXNlLFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogISF0aGlzLnJlc291cmNlRGF0YS5wdWJsaXNoZWRfYXQsXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWRfYXQ6ICEhdGhpcy5yZXNvdXJjZURhdGEuYWNjZXB0ZWRfYXQsXG4gICAgICAgICAgICAgICAgYm9keTogdGhpcy5yZXNvdXJjZURhdGEuYm9keVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5yZXNvdXJjZURhdGEucGljdHVyZT8udXJsID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSB0aGlzLnJlc291cmNlRGF0YT8udGFncz8ubGVuZ3RoID8gWy4uLnRoaXMucmVzb3VyY2VEYXRhLnRhZ3NdIDogW107XG4gICAgICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSB0aGlzLnJlc291cmNlRGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlPy51cmwgPz8gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnIH0pO1xuICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgfVxuXG4gICAgc2VhcmNoKGV2ZW50KSB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmFsbFRhZ3MuZmlsdGVyKHggPT5cbiAgICAgICAgICAgICAgICB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWxsVGFncy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWdzU3VnZ2VzdGlvbiA9IHZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc3RUYWdzKCkge1xuICAgICAgICB0aGlzLnRhZ1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRUYWdzQnlUeXBlKCdwb3N0X2NhdGVnb3JpZXMnLCB7fSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsVGFncyA9IHJlc3BvbnNlLnRhZ3M7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVSZWN0YW5ndWxhckltYWdlKCkge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFyRmlsZSA9IG51bGw7XG4gICAgfVxuICAgIG9wZW5JbWFnZU1vZGFsKG1vZGFsVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnIH0pO1xuICAgIH1cblxuICAgIG9uSW1hZ2VTZWxlY3RlZChiYXNlNjQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlID0gYmFzZTY0O1xuICAgICAgICB0aGlzLmZpbGUgPSBIZWxwZXJTZXJ2aWNlLmNvbnZlcnRCYXNlNjRUb0ZpbGUoYmFzZTY0KTtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIG9uUmVjdGFuZ3VsYXJJbWFnZVNlbGVjdGlvbihiYXNlNjQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBiYXNlNjQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ3VsYXJGaWxlID0gSGVscGVyU2VydmljZS5jb252ZXJ0QmFzZTY0VG9GaWxlKGJhc2U2NCk7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmVJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgc2F2ZVJlc291cmNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVUYWdzKHRoaXMuaWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgLi4udGhpcy5lZGl0Rm9ybS52YWx1ZSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlUGljdHVyZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVQdWJsaXNoZWRBdChwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVBY2NlcHRlZEF0KHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZUFjY2VwdGVkQXQocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uYWxGaWVsZHMocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVjdGFuZ3VsYXJQaWN0dXJlKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlbW92YWxzKHBheWxvYWQpO1xuXG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLnVwZGF0ZVBvc3QocGF5bG9hZCwgdGhpcy5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdCbG9nIFBvc3QgVXBkYXRlZCcpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlVGFncyhpZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5X3RhZ3M6IHRoaXMuc2VsZWN0ZWRUYWdzLm1hcCh0YWcgPT4gKHsgdGFnX2lkOiB0YWcuaWQgfSkpLFxuICAgICAgICAgICAgICAgIHNsdWc6IGlkLFxuICAgICAgICAgICAgICAgIHRhZ19lbnRpdHk6ICdQb3N0JyAvLyBvciB1c2UgVEFHX0VOVElUWS5QT1NUIGlmIHlvdSBpbXBvcnRlZCBpdFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy50YWdTZXJ2aWNlLmFkZFRhZ3MoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVBpY3R1cmUoZGF0YSkge1xuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICBkYXRhLnBpY3R1cmUgPSB0aGlzLmZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQdWJsaXNoZWRBdChkYXRhKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmVkaXRGb3JtLmdldCgncHVibGlzaGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5wdWJsaXNoZWRfYXQgPSBjb250cm9sLnZhbHVlID8gbW9tZW50KCkuZm9ybWF0KCdERC1NTU0tWVlZWScpIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5wdWJsaXNoZWRfYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFjY2VwdGVkQXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2FjY2VwdGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5hY2NlcHRlZF9hdCA9IGNvbnRyb2wudmFsdWUgPyBtb21lbnQoKS5mb3JtYXQoJ0RELU1NTS1ZWVlZJykgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmFjY2VwdGVkX2F0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVPcHRpb25hbEZpZWxkcyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3doZW4nKT8udmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGEud2hlbiA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3Nob3djYXNlJyk/LnZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhLnNob3djYXNlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJlY3Rhbmd1bGFyUGljdHVyZShkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLnJlY3Rhbmd1bGFyRmlsZSkge1xuICAgICAgICAgICAgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlID0gdGhpcy5yZWN0YW5ndWxhckZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZW1vdmFscyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlICYmICF0aGlzLmltYWdlKSB7XG4gICAgICAgICAgICBkYXRhLnJlbW92ZV9waWN0dXJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVjdGFuZ3VsYXJGaWxlICYmICF0aGlzLnJlY3Rhbmd1bGFySW1hZ2UpIHtcbiAgICAgICAgICAgIGRhdGEucmVtb3ZlX3JlY3Rhbmd1bGFyX3BpY3R1cmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblJlY3RNb2RhbChjb250ZW50KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oY29udGVudCwge1xuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDogRXZlbnQsIGZhbGxiYWNrUGF0aCk6IHZvaWQge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLmhhbmRsZUltYWdlRmFsbGJhY2tQYXRoKGV2ZW50LCBmYWxsYmFja1BhdGgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlZGl0LWNhcmRcIj5cbiAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGN1cnNvci1wb2ludGVyIHRleHQtZGFyayBpbi1wYWdlLWVkaXQtaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0yXCJcbiAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbChlZGl0UmVzb3VyY2VNb2RhbClcIlxuICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuTW9kYWwoZWRpdFJlc291cmNlTW9kYWwpXCJcbiAgICAgKGtleWRvd24uc3BhY2UpPVwib3Blbk1vZGFsKGVkaXRSZXNvdXJjZU1vZGFsKVwiXG4gICAgIHRpdGxlPVwiRWRpdCBSZXNvdXJjZVwiPjwvaT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VkaXRSZXNvdXJjZU1vZGFsIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+RWRpdCBSZXNvdXJjZTwvaDU+XG4gICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGN1cnNvci1wb2ludGVyIHRleHQtZGFyayBpbi1wYWdlLWVkaXQtaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtcy0zXCJcbiAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9SZXNvdXJjZUVkaXQoKVwiXG4gICAgIChrZXlkb3duLmVudGVyKT1cIm5hdmlnYXRlVG9SZXNvdXJjZUVkaXQoKVwiXG4gICAgIChrZXlkb3duLnNwYWNlKT1cIm5hdmlnYXRlVG9SZXNvdXJjZUVkaXQoKVwiXG4gICAgIHRpdGxlPVwiR28gdG8gdGhlIG1haW4gZWRpdCBwYWdlXCI+PC9pPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGxhYmVsPVwiVGl0bGVcIiBuYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiAvPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd1wiPlxuICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgbGFiZWw9XCJDVEEgVGV4dFwiIG5hbWU9XCJjdGFfdGV4dFwiIGNsYXNzPVwiY29sLW1kLTZcIlxuICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidSZXNvdXJjZS5Qb3N0cy5Ub29sdGlwLkN0YVRleHQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImN0YV90ZXh0XCIgLz5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgbGFiZWw9XCJFeHRlcm5hbCBVUkxcIiBuYW1lPVwiZXh0ZXJuYWxfdXJsXCIgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ1Jlc291cmNlLlBvc3RzLlRvb2x0aXAuRXh0ZXJuYWxVcmwnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsX3VybFwiIC8+XG4gICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1Jlc291cmNlLlBvc3RzLkJvZHknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgIG5hbWU9XCJib2R5XCJcbiAgICAgICAgICAgIFtlcnJvck1zZ109XCInUmVzb3VyY2UuUG9zdHMuVmFsaWRhdGlvbi5Cb2R5JyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgPHF1aWxsLWVkaXRvclxuICAgICAgICAgICAgICBbc3R5bGVzXT1cInsgaGVpZ2h0OiAnMzAwcHgnIH1cIlxuICAgICAgICAgICAgICBjbGFzcz1cInF1aWxsRWRpdG9yXCJcbiAgICAgICAgICAgICAgW21vZHVsZXNdPVwiZWRpdG9yQ29uZmlnXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYm9keVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAndy0xMDAnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdxdWlsbC1jb250YWluZXInOiB0cnVlLFxuICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2JvZHknXS5lcnJvcnNcbiAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgPC9xdWlsbC1lZGl0b3I+XG4gICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgY29sLXNtLTZcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1Jlc291cmNlLlBvc3RzLldoZW4nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInUmVzb3VyY2UuUG9zdHMuVG9vbHRpcC5XaGVuJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwid2hlblwiPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgZm9ybUNvbnRyb2xOYW1lPVwid2hlblwiXG4gICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLU0teXlcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBEYXRlJ1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnd2hlbiddLmVycm9ycyB9XCI+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLThcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1Jlc291cmNlLlBvc3RzLlRhZ3MnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgIGNsYXNzPVwidWktZmx1aWQgc2tpbGxzLW1vZGFsIHRhZ3NcIlxuICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidSZXNvdXJjZS5Qb3N0cy5Ub29sdGlwLkN0YVRleHQnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgIG5hbWU9XCJjdGFfdGV4dFwiPlxuICAgICAgICAgICAgPHAtYXV0b0NvbXBsZXRlIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUYWdzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJib2R5LWJnXCJcbiAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInRhZ3NTdWdnZXN0aW9uXCJcbiAgICAgICAgICAgICAgZGF0YUtleT1cImlkXCJcbiAgICAgICAgICAgICAgZmllbGQ9XCJuYW1lXCJcbiAgICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgW21pbkxlbmd0aF09XCIxXCJcbiAgICAgICAgICAgICAgW21heGxlbmd0aF09XCIxMFwiXG4gICAgICAgICAgICAgIFtkcm9wZG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUYWdzXCJcbiAgICAgICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIj5cbiAgICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC1zbS02XCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInU0hPV0NBU0UnXCJcbiAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ01hcmsgYXMgc2hvd2Nhc2UgcG9zdCdcIlxuICAgICAgICAgICAgICBuYW1lPVwic2hvd2Nhc2VcIj5cbiAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJzaG93Y2FzZVwiIGNsYXNzPVwiZC1ibG9ja1wiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidQVUJMSVNIRUQnXCJcbiAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ1NldCB0byBwdWJsaXNoIHRoZSBwb3N0J1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJwdWJsaXNoZWRfYXRcIj5cbiAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaXNoZWRfYXRcIiBjbGFzcz1cImQtYmxvY2tcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC1zbS02XCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInQUNDRVBURUQgQlkgQURNSU4nXCJcbiAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0luZGljYXRlcyBhcHByb3ZhbCBieSBhZG1pbidcIlxuICAgICAgICAgICAgICBuYW1lPVwiYWNjZXB0ZWRfYXRcIj5cbiAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJhY2NlcHRlZF9hdFwiIGNsYXNzPVwiZC1ibG9ja1wiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTQgY29sLXNtLTQgbXktNCBtcy0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG1iLTRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3ZlclBpY3R1cmVcIj57eyAnUmVzb3VyY2UuUG9zdHMuQ292ZXJQaWN0dXJlJyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiKGltYWdlICYmICFpbWFnZS5pbmNsdWRlcygnZGVmYXVsdC1waG90by5qcGcnKSkgPyBpbWFnZSA6ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgYWx0PVwiTW9kYWxcIlxuICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKCRldmVudCwgJ2Fzc2V0cy9pbWcvcmVzb3VyY2UvYmxvZy5wbmcnKVwiIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgKGNsaWNrKT1cIm9wZW5JbWFnZU1vZGFsKGltYWdlQ3JvcENvbnRlbnQpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzbHVnICE9PSAnY3JlYXRlJyA/ICdFZGl0JyA6ICdBZGQnIH19IFBpY3R1cmVcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpbWFnZSAmJiAhaW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJylcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb24gdGV4dC1kYW5nZXIgbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJbWFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVJbWFnZSgpXCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00IGNvbC1zbS00IG15LTQgbXMtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVjdGFuZ3VsYXJQaWN0dXJlXCI+UmVjdGFuZ3VsYXIgUGljdHVyZTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiKHJlY3Rhbmd1bGFySW1hZ2UgJiYgIXJlY3Rhbmd1bGFySW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJykpID8gcmVjdGFuZ3VsYXJJbWFnZSA6ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWN0TW9kYWwocmVjdENvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuUmVjdE1vZGFsKHJlY3RDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgYWx0PVwiVXBsb2FkZWQgcmVjdGFuZ3VsYXIgbWVkaWEgcHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZycpXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiAoY2xpY2spPVwib3BlblJlY3RNb2RhbChyZWN0Q29udGVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsdWcgIT09ICdjcmVhdGUnID8gJ0VkaXQnIDogJ0FkZCcgfX0gUGljdHVyZVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInJlY3Rhbmd1bGFySW1hZ2UgJiYgIXJlY3Rhbmd1bGFySW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJylcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb24gdGV4dC1kYW5nZXIgbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWN0YW5ndWxhckltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImRlbGV0ZVJlY3Rhbmd1bGFySW1hZ2UoKVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiIChjbGljayk9XCJzYXZlUmVzb3VyY2UoKVwiPlNhdmU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ltYWdlQ3JvcENvbnRlbnQgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5VcGxvYWQgUGljdHVyZTwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxzbWFsbD5Zb3UgY2FuIHVwbG9hZCBhIEpQRywgR0lGLCBvciBQTkcgZmlsZS4gKERvIG5vdCB1cGxvYWQgcGljdHVyZXMgY29udGFpbmluZyBjZWxlYnJpdGllcyxcbiAgICAgIG51ZGl0eSwgYXJ0d29yayBvciBjb3B5cmlnaHRlZCBpbWFnZXMuKTwvc21hbGw+XG4gICAgPHB3LWltYWdlLWNyb3BwZXJcbiAgICAgIFthc3BlY3RSYXRpb109XCInZHluYW1pYydcIlxuICAgICAgKGltYWdlU2VsZWN0aW9uRXZlbnQpPVwib25JbWFnZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwibW9kYWwuY2xvc2UoKVwiPlxuICAgIDwvcHctaW1hZ2UtY3JvcHBlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JlY3RDb250ZW50IGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+VXBsb2FkIFBpY3R1cmU8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPHNtYWxsPllvdSBjYW4gdXBsb2FkIGEgSlBHLCBHSUYsIG9yIFBORyBmaWxlLiAoRG8gbm90IHVwbG9hZCBwaWN0dXJlcyBjb250YWluaW5nIGNlbGVicml0aWVzLFxuICAgICAgbnVkaXR5LCBhcnR3b3JrIG9yIGNvcHlyaWdodGVkIGltYWdlcy4pPC9zbWFsbD5cbiAgICA8cHctaW1hZ2UtY3JvcHBlclxuICAgICAgI3Byb2ZpbGVcbiAgICAgIFthc3BlY3RSYXRpb109XCInZHluYW1pYydcIlxuICAgICAgKGltYWdlU2VsZWN0aW9uRXZlbnQpPVwib25SZWN0YW5ndWxhckltYWdlU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwib25DbG9zZSgpXCI+XG4gICAgPC9wdy1pbWFnZS1jcm9wcGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2022/lib/public/components/resource-edit-card-lazy/resource-edit-card-lazy.component.mjs
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Lazy-loading wrapper for ResourceEditCard
|
|
5
|
-
*/
|
|
6
|
-
export class ResourceEditCardLazyComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.canEdit = false;
|
|
9
|
-
this.updated = new EventEmitter();
|
|
10
|
-
this.componentRef = null;
|
|
11
|
-
this.loading = false;
|
|
12
|
-
}
|
|
13
|
-
async ngOnChanges(changes) {
|
|
14
|
-
if (this.canEdit && !this.componentRef && !this.loading) {
|
|
15
|
-
await this.loadEditCard();
|
|
16
|
-
}
|
|
17
|
-
else if (!this.canEdit && this.componentRef) {
|
|
18
|
-
this.container.clear();
|
|
19
|
-
this.componentRef = null;
|
|
20
|
-
}
|
|
21
|
-
else if (this.componentRef && (changes['id'] || changes['resourceData'])) {
|
|
22
|
-
// Update existing component inputs
|
|
23
|
-
this.componentRef.instance.id = this.id;
|
|
24
|
-
this.componentRef.instance.resourceData = this.resourceData;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
async loadEditCard() {
|
|
28
|
-
if (this.componentRef || this.loading)
|
|
29
|
-
return; // Prevent double loading
|
|
30
|
-
this.loading = true; // Set BEFORE async operation
|
|
31
|
-
try {
|
|
32
|
-
// Dynamically import ResourceEditCard component (145 KB)
|
|
33
|
-
const module = await import('../resource-edit-card/resource-edit-card.component');
|
|
34
|
-
const ResourceEditCardComponent = module.ResourceEditCardComponent;
|
|
35
|
-
// Ensure container exists and is clear
|
|
36
|
-
if (!this.container)
|
|
37
|
-
return;
|
|
38
|
-
this.container.clear();
|
|
39
|
-
// Create component dynamically (only once)
|
|
40
|
-
this.componentRef = this.container.createComponent(ResourceEditCardComponent);
|
|
41
|
-
this.componentRef.instance.id = this.id;
|
|
42
|
-
this.componentRef.instance.resourceData = this.resourceData;
|
|
43
|
-
this.componentRef.instance.updated.subscribe(() => this.updated.emit());
|
|
44
|
-
this.loading = false;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
console.error('Failed to load ResourceEditCard:', error);
|
|
48
|
-
this.loading = false;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
ngOnDestroy() {
|
|
52
|
-
this.componentRef?.destroy();
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardLazyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceEditCardLazyComponent, selector: "pw-resource-edit-card-lazy", inputs: { id: "id", resourceData: "resourceData", canEdit: "canEdit" }, outputs: { updated: "updated" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["editCardContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<ng-container #editCardContainer></ng-container>`, isInline: true }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardLazyComponent, decorators: [{
|
|
58
|
-
type: Component,
|
|
59
|
-
args: [{
|
|
60
|
-
selector: 'pw-resource-edit-card-lazy',
|
|
61
|
-
template: `<ng-container #editCardContainer></ng-container>`
|
|
62
|
-
}]
|
|
63
|
-
}], propDecorators: { container: [{
|
|
64
|
-
type: ViewChild,
|
|
65
|
-
args: ['editCardContainer', { read: ViewContainerRef, static: true }]
|
|
66
|
-
}], id: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], resourceData: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], canEdit: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], updated: [{
|
|
73
|
-
type: Output
|
|
74
|
-
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZWRpdC1jYXJkLWxhenkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1lZGl0LWNhcmQtbGF6eS9yZXNvdXJjZS1lZGl0LWNhcmQtbGF6eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7R0FFRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFKMUM7UUFVYSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQztLQTRDM0I7SUExQ0csS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFzQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RELE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlCLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2hFLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxDQUFDLHlCQUF5QjtRQUV4RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLDZCQUE2QjtRQUVsRCxJQUFJLENBQUM7WUFDRCx5REFBeUQ7WUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUNsRixNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztZQUVuRSx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU87WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUV2QiwyQ0FBMkM7WUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLENBQUM7K0dBckRRLDZCQUE2QjttR0FBN0IsNkJBQTZCLHNRQUNFLGdCQUFnQixnRUFIOUMsa0RBQWtEOzs0RkFFbkQsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSxrREFBa0Q7aUJBQy9EOzhCQUdHLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcvRCxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIExhenktbG9hZGluZyB3cmFwcGVyIGZvciBSZXNvdXJjZUVkaXRDYXJkXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2UtZWRpdC1jYXJkLWxhenknLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRhaW5lciAjZWRpdENhcmRDb250YWluZXI+PC9uZy1jb250YWluZXI+YFxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUVkaXRDYXJkTGF6eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKCdlZGl0Q2FyZENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBJbnB1dCgpIGlkITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHJlc291cmNlRGF0YTtcbiAgICBASW5wdXQoKSBjYW5FZGl0ID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIHVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgcHJpdmF0ZSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkVkaXQgJiYgIXRoaXMuY29tcG9uZW50UmVmICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEVkaXRDYXJkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY2FuRWRpdCAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbXBvbmVudFJlZiAmJiAoY2hhbmdlc1snaWQnXSB8fCBjaGFuZ2VzWydyZXNvdXJjZURhdGEnXSkpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBjb21wb25lbnQgaW5wdXRzXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pZCA9IHRoaXMuaWQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZXNvdXJjZURhdGEgPSB0aGlzLnJlc291cmNlRGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZEVkaXRDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgfHwgdGhpcy5sb2FkaW5nKSByZXR1cm47IC8vIFByZXZlbnQgZG91YmxlIGxvYWRpbmdcblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOyAvLyBTZXQgQkVGT1JFIGFzeW5jIG9wZXJhdGlvblxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBEeW5hbWljYWxseSBpbXBvcnQgUmVzb3VyY2VFZGl0Q2FyZCBjb21wb25lbnQgKDE0NSBLQilcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydCgnLi4vcmVzb3VyY2UtZWRpdC1jYXJkL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRWRpdENhcmRDb21wb25lbnQgPSBtb2R1bGUuUmVzb3VyY2VFZGl0Q2FyZENvbXBvbmVudDtcblxuICAgICAgICAgICAgLy8gRW5zdXJlIGNvbnRhaW5lciBleGlzdHMgYW5kIGlzIGNsZWFyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgY29tcG9uZW50IGR5bmFtaWNhbGx5IChvbmx5IG9uY2UpXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChSZXNvdXJjZUVkaXRDYXJkQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlkID0gdGhpcy5pZDtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnJlc291cmNlRGF0YSA9IHRoaXMucmVzb3VyY2VEYXRhO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVkLmVtaXQoKSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIFJlc291cmNlRWRpdENhcmQ6JywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
|