@posiwise/resource-module 0.0.93 → 0.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +3 -2
- package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +26 -0
- package/esm2022/lib/public/components/resource-blogs/resource-blog.component.mjs +64 -0
- package/esm2022/lib/public/components/resource-card-list/resource-card-list.component.mjs +22 -0
- package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +24 -0
- package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +83 -0
- package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +43 -0
- package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +52 -0
- package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +102 -0
- package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +36 -0
- package/esm2022/lib/public/components/resource-post/resource-post-details/resource-post-details.component.mjs +42 -0
- package/esm2022/lib/public/components/resource-post/resource-post.component.mjs +31 -0
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes.component.mjs +64 -0
- package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +41 -0
- package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +35 -0
- package/esm2022/lib/public/components/resource-videos/resource-videos.component.mjs +63 -0
- package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +31 -0
- package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +79 -0
- package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +19 -0
- package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +51 -0
- package/esm2022/lib/public/components/resources/resources.component.mjs +21 -0
- package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +12 -0
- package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +174 -0
- package/esm2022/lib/public/components/resources-read/resources-read.component.mjs +3 -3
- package/esm2022/lib/public/components/testimonial-card/testimonial-card.component.mjs +74 -0
- package/esm2022/lib/public/components/white-papers/white-papers.component.mjs +63 -0
- package/esm2022/lib/public/resource-public.module.mjs +88 -7
- package/esm2022/lib/public/resource-public.routing.module.mjs +80 -8
- package/esm2022/lib/resource.service.mjs +14 -3
- package/fesm2022/posiwise-resource-module.mjs +1130 -77
- package/fesm2022/posiwise-resource-module.mjs.map +1 -1
- package/index.d.ts +2 -1
- package/lib/public/components/reslease-note-card/release-note-card.component.d.ts +11 -0
- package/lib/public/components/resource-blogs/resource-blog.component.d.ts +20 -0
- package/lib/public/components/resource-card-list/resource-card-list.component.d.ts +7 -0
- package/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.d.ts +11 -0
- package/lib/public/components/resource-case-studies/resource-case-studies.component.d.ts +23 -0
- package/lib/public/components/resource-company-card/resource-company-card.component.d.ts +22 -0
- package/lib/public/components/resource-integration/resource-integration.component.d.ts +34 -0
- package/lib/public/components/resource-post/related-resources/related-resources.component.d.ts +34 -0
- package/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.d.ts +11 -0
- package/lib/public/components/resource-post/resource-post-details/resource-post-details.component.d.ts +17 -0
- package/lib/public/components/resource-post/resource-post.component.d.ts +13 -0
- package/lib/public/components/resource-release-notes/resource-release-notes.component.d.ts +20 -0
- package/lib/public/components/resource-vault/resource-vault.component.d.ts +20 -0
- package/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.d.ts +29 -0
- package/lib/public/components/resource-videos/resource-videos.component.d.ts +20 -0
- package/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.d.ts +28 -0
- package/lib/public/components/resource-webinars/resource-webinars.component.d.ts +22 -0
- package/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.d.ts +6 -0
- package/lib/public/components/resources/resource-tags/resource-tags.component.d.ts +20 -0
- package/lib/public/components/resources/resources.component.d.ts +5 -0
- package/lib/public/components/resources/vault-section/vault-section.component.d.ts +5 -0
- package/lib/public/components/{resources-list/resources-list.component.d.ts → resources-hub/resources-hub.component.d.ts} +14 -6
- package/lib/public/components/resources-read/resources-read.component.d.ts +1 -2
- package/lib/public/components/testimonial-card/testimonial-card.component.d.ts +11 -0
- package/lib/public/components/white-papers/white-papers.component.d.ts +20 -0
- package/lib/public/resource-public.module.d.ts +41 -16
- package/lib/resource.service.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/public/components/resources-list/resources-list.component.mjs +0 -129
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { Component, Injector, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
3
|
-
import { TagService } from '@posiwise/common-services';
|
|
4
|
-
import { TOKEN_KEY } from '@posiwise/common-utilities';
|
|
5
|
-
import { forkJoin } from 'rxjs';
|
|
6
|
-
import { ResourceService } from '../../../resource.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../resource.service";
|
|
9
|
-
import * as i2 from "@posiwise/common-services";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "@angular/router";
|
|
12
|
-
import * as i5 from "primeng/progressspinner";
|
|
13
|
-
import * as i6 from "@posiwise/shared-components";
|
|
14
|
-
import * as i7 from "@angular/forms";
|
|
15
|
-
import * as i8 from "@posiwise/directives";
|
|
16
|
-
import * as i9 from "@posiwise/pipes";
|
|
17
|
-
export class ResourceListComponent extends AppBaseComponent {
|
|
18
|
-
constructor(resourceService, tagService, injector) {
|
|
19
|
-
super(injector);
|
|
20
|
-
this.resourceService = resourceService;
|
|
21
|
-
this.tagService = tagService;
|
|
22
|
-
this.delayTimeout = null;
|
|
23
|
-
this.data = [];
|
|
24
|
-
this.posts = [];
|
|
25
|
-
this.tags = [];
|
|
26
|
-
this.searchTextItems = '';
|
|
27
|
-
this.searchInput = false;
|
|
28
|
-
this.loading = true;
|
|
29
|
-
this.loaded = false;
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {
|
|
33
|
-
this.userLoggedIn = !!res;
|
|
34
|
-
if (this.userLoggedIn) {
|
|
35
|
-
this.localStorage.getItem$('product').subscribe(res => {
|
|
36
|
-
const data = res ? JSON.parse(res) : null;
|
|
37
|
-
this.subscriptionId = data?.subscriptionId;
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
|
|
42
|
-
this.getPostsAndTags();
|
|
43
|
-
this.readingTime = 0;
|
|
44
|
-
}
|
|
45
|
-
getPostsAndTags() {
|
|
46
|
-
this.loading = true;
|
|
47
|
-
this.loaded = false;
|
|
48
|
-
forkJoin({
|
|
49
|
-
resPosts: this.resourceService.getPublicPosts(this.masterSubscriptionId, 1, 100, this.searchTextItems),
|
|
50
|
-
resTags: this.tagService.getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)
|
|
51
|
-
})
|
|
52
|
-
.subscribe(res => {
|
|
53
|
-
// posts
|
|
54
|
-
this.posts = res?.resPosts?.posts;
|
|
55
|
-
this.data = res?.resPosts?.posts;
|
|
56
|
-
this.totalRecords = this.posts?.length;
|
|
57
|
-
// tags
|
|
58
|
-
this.tags = res?.resTags?.tags;
|
|
59
|
-
})
|
|
60
|
-
.add(() => {
|
|
61
|
-
this.loading = false;
|
|
62
|
-
this.loaded = true;
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
getPosts(page, pageSize) {
|
|
66
|
-
this.loading = true;
|
|
67
|
-
this.loaded = false;
|
|
68
|
-
this.resourceService
|
|
69
|
-
.getPublicPosts(this.masterSubscriptionId, page, pageSize, this.searchTextItems)
|
|
70
|
-
.subscribe(response => {
|
|
71
|
-
this.posts = response.posts;
|
|
72
|
-
this.data = response.posts;
|
|
73
|
-
this.totalRecords = this.posts?.length;
|
|
74
|
-
})
|
|
75
|
-
.add(() => {
|
|
76
|
-
this.loading = false;
|
|
77
|
-
this.loaded = true;
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
showSearch(close) {
|
|
81
|
-
this.searchInput = !this.searchInput;
|
|
82
|
-
if (close) {
|
|
83
|
-
this.searchTextItems = '';
|
|
84
|
-
this.getPosts(1, 100);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
onSearch(seconds) {
|
|
88
|
-
let delay = 0;
|
|
89
|
-
delay = seconds * 1000;
|
|
90
|
-
clearTimeout(this.delayTimeout);
|
|
91
|
-
// wait for timeout before get posts
|
|
92
|
-
const delayTimeout = setTimeout(() => {
|
|
93
|
-
this.getPosts(1, 100);
|
|
94
|
-
}, delay);
|
|
95
|
-
this.delayTimeout = delayTimeout;
|
|
96
|
-
}
|
|
97
|
-
tagPost(selectedTag) {
|
|
98
|
-
let filtered;
|
|
99
|
-
this.data = [];
|
|
100
|
-
this.posts.forEach(element => {
|
|
101
|
-
if (element.tags.length > 0) {
|
|
102
|
-
filtered = element.tags.filter(tag => tag.id === selectedTag.id);
|
|
103
|
-
if (filtered.length > 0) {
|
|
104
|
-
this.data.push(element);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
thisPostReadingTime(text) {
|
|
110
|
-
if (text) {
|
|
111
|
-
const wordsPerMinute = 200;
|
|
112
|
-
const noOfWords = text.split(/\s/g).length;
|
|
113
|
-
const minutes = noOfWords / wordsPerMinute;
|
|
114
|
-
const readTime = Math.ceil(minutes);
|
|
115
|
-
return `${readTime} minute read`;
|
|
116
|
-
}
|
|
117
|
-
return '';
|
|
118
|
-
}
|
|
119
|
-
ngOnDestroy() {
|
|
120
|
-
super.ngOnDestroy();
|
|
121
|
-
}
|
|
122
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceListComponent, deps: [{ token: i1.ResourceService }, { token: i2.TagService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceListComponent, selector: "pw-posts-list", usesInheritance: true, ngImport: i0, template: "<pw-header/>\n<div class=\"all-posts py-5\">\n <div class=\"row mt-5 mb-4 px-2\">\n <div class=\"col-md-9\">\n <ul class=\"tags\">\n <li (keydown.enter)=\"getPosts(1, 100)\" (click)=\"getPosts(1, 100)\">All Resources</li>\n <li *ngFor=\"let tag of tags\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">{{ tag.name }}</li>\n </ul>\n </div>\n <div class=\"col-md-3\">\n <div class=\"search\"\n *ngIf=\"searchInput; else searchIcon\">\n <input type=\"text\"\n class=\"w-100\"\n placeholder=\"search...\"\n [(ngModel)]=\"searchTextItems\"\n (keydown.enter)=\"onSearch(0.5)\" />\n <i class=\"fa fa-times\" (click)=\"showSearch('close')\" (keydown.enter)=\"showSearch('close')\" aria-hidden=\"true\"></i>\n </div>\n <ng-template #searchIcon>\n <i\n class=\"fa fa-search w-100 text-end\"\n (click)=\"showSearch('open')\"\n (keydown.enter)=\"showSearch('open')\"\n aria-hidden=\"true\"\n ></i>\n </ng-template>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div class=\"blog-list\">\n <div class=\"row mt-4 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\"\n [routerLink]=\"['/resource', post.slug]\">\n <div class=\"list-blog-image\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"mt-4\">\n <div class=\"author mb-3 d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Post Menu\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </div>\n <h4 [routerLink]=\"['/resource', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resource', post.slug]\"\n class=\"body mb-5 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resource', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resource', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <p>No blog posts available</p>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer}.all-posts{margin:5em auto 0;max-width:980px;padding:14px 20px;width:100%}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:25px}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:0;top:20px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (max-width: 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (max-width: 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (min-width: 768px){.blog-list-write-view{position:absolute}.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i6.HeaderComponent, selector: "pw-header", inputs: ["landing"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i9.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i9.TextTruncatePipe, name: "textTruncate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
124
|
-
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceListComponent, decorators: [{
|
|
126
|
-
type: Component,
|
|
127
|
-
args: [{ selector: 'pw-posts-list', encapsulation: ViewEncapsulation.None, template: "<pw-header/>\n<div class=\"all-posts py-5\">\n <div class=\"row mt-5 mb-4 px-2\">\n <div class=\"col-md-9\">\n <ul class=\"tags\">\n <li (keydown.enter)=\"getPosts(1, 100)\" (click)=\"getPosts(1, 100)\">All Resources</li>\n <li *ngFor=\"let tag of tags\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">{{ tag.name }}</li>\n </ul>\n </div>\n <div class=\"col-md-3\">\n <div class=\"search\"\n *ngIf=\"searchInput; else searchIcon\">\n <input type=\"text\"\n class=\"w-100\"\n placeholder=\"search...\"\n [(ngModel)]=\"searchTextItems\"\n (keydown.enter)=\"onSearch(0.5)\" />\n <i class=\"fa fa-times\" (click)=\"showSearch('close')\" (keydown.enter)=\"showSearch('close')\" aria-hidden=\"true\"></i>\n </div>\n <ng-template #searchIcon>\n <i\n class=\"fa fa-search w-100 text-end\"\n (click)=\"showSearch('open')\"\n (keydown.enter)=\"showSearch('open')\"\n aria-hidden=\"true\"\n ></i>\n </ng-template>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div class=\"blog-list\">\n <div class=\"row mt-4 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\"\n [routerLink]=\"['/resource', post.slug]\">\n <div class=\"list-blog-image\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"mt-4\">\n <div class=\"author mb-3 d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Post Menu\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </div>\n <h4 [routerLink]=\"['/resource', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resource', post.slug]\"\n class=\"body mb-5 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resource', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resource', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <p>No blog posts available</p>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}body{background:#fff}.blog-listing{border:1px solid rgb(238,238,238);cursor:pointer}.all-posts{margin:5em auto 0;max-width:980px;padding:14px 20px;width:100%}ul.tags{display:inline-flex;font-size:16px;font-weight:400}ul.tags li{color:#337ab7;cursor:pointer;font-weight:600;margin-right:20px}ul.tags li:hover{color:#000}.search{position:relative}.search input{border:0;border-bottom:1px solid rgb(213,206,206)}.search i{position:absolute;right:5px}.blog-list .blog-listing h4{color:#000;font:28px/1.3 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing h4:hover{color:#0045c7}.blog-list .blog-listing p.body{color:#b3b3b3;font:16px/1.4 Roboto,sans-serif;transition:all .5s}.blog-list .blog-listing p.body:hover{color:#0045c7}.blog-list .blog-listing p.body p{color:inherit;font:inherit;transition:inherit}.blog-list .blog-listing p.body p:hover{color:#0045c7}.blog-list .blog-listing .list-blog-image img{padding:25px}.blog-list .blog-listing .author .avatar-image{border:1px solid rgb(0,0,0);border-radius:50px;height:50px;clip-path:circle(50% at 50% 50%);width:50px}.blog-list .blog-listing .author .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.blog-list .blog-listing .author .avatar-image .default-user-image{width:50px}.blog-list .blog-listing .author .author-name p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.blog-list .blog-listing .author .author-name p.name:hover{color:#0045c7}.blog-list .blog-listing .author .author-name p.name i{color:#000}.blog-list .blog-listing .author .author-name ul li{display:inline-block;padding-right:10px;vertical-align:middle}.blog-list .blog-listing .author .author-name ul li a{color:#b3b3b3;font:12px/1 Roboto,sans-serif}.blog-list .blog-listing .author .share-post{flex-grow:3;position:relative;text-align:right}.blog-list .blog-listing .author .share-post i{color:var(--first)}.blog-list .blog-listing .author .share-post .dropdown-menu{border:0 0;box-shadow:0 3px 8px #0003;left:auto!important;right:0;top:20px!important;transform:translate(0)!important}.blog-list .blog-listing .blog-view{border-top:1px solid rgb(238,238,238)}.blog-list .blog-listing .blog-view ul li{color:#b3b3b3;font:12px/1 Roboto,sans-serif;padding-right:14px}.blog-list .blog-listing .blog-view ul li a{color:inherit;font:inherit;transition:all .5s}.blog-list .blog-listing .blog-view ul li a:hover{color:#0045c7}.blog-list .blog-listing .blog-view ul li:last-child{flex-grow:3;padding-right:0;text-align:right}.blog-list .blog-listing .blog-view ul li:last-child i{color:#e84a43;font-size:14px}@media only screen and (max-width: 1024px){.cust-mt{padding:14px 5px}.cust-mt .blog-list .blog-listing h4{font:20px/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body{font:.9rem/1.3 Roboto,sans-serif}.cust-mt .blog-list .blog-listing p.body p{font:inherit}.cust-mt .blog-list .blog-listing .blog-image{height:300px}}@media only screen and (max-width: 767px){.blog-list .blog-listing{height:auto;max-height:none;overflow:visible}.blog-list .blog-listing .blog-view{padding-bottom:1rem}}@media (min-width: 768px){.blog-list-write-view{position:absolute}.blog-view{bottom:0;width:92%}}.post-body-text:hover{color:var(--titles)!important}\n"] }]
|
|
128
|
-
}], ctorParameters: () => [{ type: i1.ResourceService }, { type: i2.TagService }, { type: i0.Injector }] });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMtbGlzdC9yZXNvdXJjZXMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1saXN0L3Jlc291cmNlcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7OztBQVE1RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZ0JBQWdCO0lBc0J2RCxZQUNxQixlQUFnQyxFQUNoQyxVQUFzQixFQUN2QyxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZCbkMsaUJBQVksR0FBeUMsSUFBSSxDQUFDO1FBRWxFLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFFakIsb0JB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QyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDNUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsY0FBYyxDQUFDO1lBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEMsT0FBTyxHQUFHLFFBQVEsY0FBYyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFUSxXQUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTNJUSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw0RUNqQmxDLDQzS0FvSUE7OzRGRG5IYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlc291cmNlLCBUYWcgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFRPS0VOX0tFWSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcG9zdHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXNvdXJjZXMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VMaXN0Q29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGRlbGF5VGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICAgIGRhdGEgPSBbXTtcblxuICAgIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgdGFnczogVGFnW10gPSBbXTtcblxuICAgIHNlYXJjaFRleHRJdGVtcyA9ICcnO1xuICAgIHNlYXJjaElucHV0ID0gZmFsc2U7XG5cbiAgICByZWFkaW5nVGltZTogbnVtYmVyO1xuXG4gICAgdG90YWxSZWNvcmRzOiBudW1iZXI7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcbiAgICBsb2FkZWQgPSBmYWxzZTtcblxuICAgIG1hc3RlclN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG4gICAgc3Vic2NyaXB0aW9uSWQ7XG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLmdldFBvc3RzQW5kVGFncygpO1xuICAgICAgICB0aGlzLnJlYWRpbmdUaW1lID0gMDtcbiAgICB9XG5cbiAgICBnZXRQb3N0c0FuZFRhZ3MoKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIHJlc1Bvc3RzOiB0aGlzLnJlc291cmNlU2VydmljZS5nZXRQdWJsaWNQb3N0cyhcbiAgICAgICAgICAgICAgICB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dEl0ZW1zXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVzVGFnczogdGhpcy50YWdTZXJ2aWNlLmdldFRhZ3NCeVR5cGUoXG4gICAgICAgICAgICAgICAgJ3Bvc3RfY2F0ZWdvcmllcycsXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCB8fCB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gcG9zdHNcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gcmVzPy5yZXNQb3N0cz8ucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzPy5yZXNQb3N0cz8ucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBvc3RzPy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gdGFnc1xuICAgICAgICAgICAgICAgIHRoaXMudGFncyA9IHJlcz8ucmVzVGFncz8udGFncztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRQb3N0cyhwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQdWJsaWNQb3N0cyh0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkLCBwYWdlLCBwYWdlU2l6ZSwgdGhpcy5zZWFyY2hUZXh0SXRlbXMpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RzID0gcmVzcG9uc2UucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2UucG9zdHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBvc3RzPy5sZW5ndGg7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvd1NlYXJjaChjbG9zZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQgPSAhdGhpcy5zZWFyY2hJbnB1dDtcbiAgICAgICAgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHRJdGVtcyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3N0cygxLCAxMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWFyY2goc2Vjb25kczogbnVtYmVyKSB7XG4gICAgICAgIGxldCBkZWxheSA9IDA7XG4gICAgICAgIGRlbGF5ID0gc2Vjb25kcyAqIDEwMDA7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dCk7XG4gICAgICAgIC8vIHdhaXQgZm9yIHRpbWVvdXQgYmVmb3JlIGdldCBwb3N0c1xuICAgICAgICBjb25zdCBkZWxheVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgMTAwKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIHRoaXMuZGVsYXlUaW1lb3V0ID0gZGVsYXlUaW1lb3V0O1xuICAgIH1cblxuICAgIHRhZ1Bvc3Qoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgbGV0IGZpbHRlcmVkO1xuICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5wb3N0cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBlbGVtZW50LnRhZ3MuZmlsdGVyKHRhZyA9PiB0YWcuaWQgPT09IHNlbGVjdGVkVGFnLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXNQb3N0UmVhZGluZ1RpbWUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzUGVyTWludXRlID0gMjAwO1xuICAgICAgICAgICAgY29uc3Qgbm9PZldvcmRzID0gdGV4dC5zcGxpdCgvXFxzL2cpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub09mV29yZHMgLyB3b3Jkc1Blck1pbnV0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRUaW1lID0gTWF0aC5jZWlsKG1pbnV0ZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7cmVhZFRpbWV9IG1pbnV0ZSByZWFkYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8cHctaGVhZGVyLz5cbjxkaXYgY2xhc3M9XCJhbGwtcG9zdHMgcHktNVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IG10LTUgbWItNCBweC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XG4gICAgICA8dWwgY2xhc3M9XCJ0YWdzXCI+XG4gICAgICAgIDxsaSAoa2V5ZG93bi5lbnRlcik9XCJnZXRQb3N0cygxLCAxMDApXCIgKGNsaWNrKT1cImdldFBvc3RzKDEsIDEwMClcIj5BbGwgUmVzb3VyY2VzPC9saT5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGFnUG9zdCh0YWcpXCJcbiAgICAgICAgICAoY2xpY2spPVwidGFnUG9zdCh0YWcpXCI+e3sgdGFnLm5hbWUgfX08L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hcIlxuICAgICAgICAqbmdJZj1cInNlYXJjaElucHV0OyBlbHNlIHNlYXJjaEljb25cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInNlYXJjaC4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0SXRlbXNcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2VhcmNoKDAuNSlcIiAvPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgKGNsaWNrKT1cInNob3dTZWFyY2goJ2Nsb3NlJylcIiAoa2V5ZG93bi5lbnRlcik9XCJzaG93U2VhcmNoKCdjbG9zZScpXCIgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uPlxuICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXNlYXJjaCB3LTEwMCB0ZXh0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93U2VhcmNoKCdvcGVuJylcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzaG93U2VhcmNoKCdvcGVuJylcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmcgJiYgIWxvYWRlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCI+XG4gICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9zdHM/Lmxlbmd0aCAmJiAhbG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJibG9nLWxpc3RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNCBtcy0xIG1lLTEgYmxvZy1saXN0aW5nXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHBvc3Qgb2YgZGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBteS1hdXRvXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZScsIHBvc3Quc2x1Z11cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ibG9nLWltYWdlXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwicG9zdC5waWN0dXJlPy51cmxcIlxuICAgICAgICAgICAgICBhbHQ9XCJQb3N0IExpc3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cImltZy1mbHVpZFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLXNtLTEyIGNvbC14cy0xMiBweC00IHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3IgbWItMyBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1pbWFnZVwiPlxuICAgICAgICAgICAgICAgIDxhIFthdHRyLmRpc2FibGVkXT1cIiF1c2VyTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJwb3N0LmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJwb3N0LmF1dGhvcj8uYXZhdGFyWzBdPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIiAvPlxuICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFwb3N0LmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmdcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdXRob3JcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtdXNlci1pbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yLW5hbWUgcHMtMlwiPlxuICAgICAgICAgICAgICAgIDxhIFthdHRyLmRpc2FibGVkXT1cIiF1c2VyTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICB7eyBwb3N0LmF1dGhvci5maXJzdF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jcm93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBvc3QucHVibGlzaGVkX2F0IHwgZGF0ZTogJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+LjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+e3sgdGhpc1Bvc3RSZWFkaW5nVGltZShwb3N0LmJvZHkpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wb3N0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQb3N0IE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duTWVudUxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnRhcmdldC5jbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC50YXJnZXQuY2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1lbGxpcHNpcy12XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHA6Ly93d3cuZmFjZWJvb2suY29tL1wiXG4gICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc2hhcmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNoYXJlIFBvc3RcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDQgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2UnLCBwb3N0LnNsdWddXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZSBteS0zXCI+e3sgcG9zdC50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICA8cCBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZScsIHBvc3Quc2x1Z11cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJvZHkgbWItNSBwYi0zIHBvc3QtYm9keS10ZXh0XCI+XG4gICAgICAgICAgICAgIHt7IHBvc3QuYm9keSB8IHJlbW92ZUh0bWw6ICdxdWlsbCcgfCB0ZXh0VHJ1bmNhdGU6IDIwMCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2ctdmlldyBweS0zIGJsb2ctbGlzdC13cml0ZS12aWV3XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxsaT57eyBwb3N0LnZpZXcgIT09IG51bGwgPyBwb3N0LnZpZXcgOiAnMCcgfX0gVmlldzwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlJywgcG9zdC5zbHVnXVwiPldyaXRlIENvbW1lbnQ8L2E+PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9yZXNvdXJjZScsIHBvc3Quc2x1Z11cIiBhcmlhLWxhYmVsPVwiQmxvZ1wiPjxpIGNsYXNzPVwiZmFyIGZhLWhlYXJ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9zdHM/Lmxlbmd0aCAmJiBsb2FkZWRcIj5cbiAgICA8cD5ObyBibG9nIHBvc3RzIGF2YWlsYWJsZTwvcD5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|