@posiwise/resource-module 0.0.149 → 0.0.150
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 +22 -3
- package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +13 -9
- package/esm2022/lib/public/components/resource-blogs/resource-blog-top-banner/resource-blog-top-banner.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-blogs/resource-blog.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +18 -12
- package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +10 -10
- package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +7 -8
- package/esm2022/lib/public/components/resource-contact-us/resource-contact-us.component.mjs +510 -0
- package/esm2022/lib/public/components/resource-contact-us/resource-contact-us.module.mjs +77 -0
- package/esm2022/lib/public/components/resource-edit-card/resource-edit-card.component.mjs +5 -5
- package/esm2022/lib/public/components/resource-edit-card-lazy/resource-edit-card-lazy.component.mjs +75 -0
- package/esm2022/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +13 -13
- package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +8 -8
- package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +8 -8
- package/esm2022/lib/public/components/resource-post/resource-post-details/resource-post-details.component.mjs +3 -27
- package/esm2022/lib/public/components/resource-post/resource-post.component.mjs +7 -8
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes-top-banner/resource-release-notes-top-banner.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-release-notes/resource-release-notes.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-top-banner-edit/resource-top-banner-edit.component.mjs +3 -3
- package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +8 -8
- package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +18 -12
- package/esm2022/lib/public/components/resource-videos/resource-videos-top-banner/resource-videos-top-banner.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-videos/resource-videos.component.mjs +6 -6
- package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +8 -8
- package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +9 -9
- package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +21 -14
- package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +3 -3
- package/esm2022/lib/public/components/resources/resources.component.mjs +21 -18
- package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +5 -5
- package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +12 -11
- package/esm2022/lib/public/components/testimonial-card/testimonial-card.component.mjs +10 -9
- package/esm2022/lib/public/components/white-papers/white-papers-top-banner/white-papers-top-banner.component.mjs +6 -6
- package/esm2022/lib/public/components/white-papers/white-papers.component.mjs +6 -6
- package/esm2022/lib/public/modules/blogs/resource-blogs.module.mjs +30 -0
- package/esm2022/lib/public/modules/case-studies/resource-case-studies.module.mjs +35 -0
- package/esm2022/lib/public/modules/events/resource-events.module.mjs +30 -0
- package/esm2022/lib/public/modules/hub/resource-hub.module.mjs +29 -0
- package/esm2022/lib/public/modules/integrations/resource-integrations.module.mjs +30 -0
- package/esm2022/lib/public/modules/post/resource-post.module.mjs +32 -0
- package/esm2022/lib/public/modules/release-notes/resource-release-notes.module.mjs +30 -0
- package/esm2022/lib/public/modules/root/resource-root-shared.module.mjs +61 -0
- package/esm2022/lib/public/modules/root/resource-root.module.mjs +32 -0
- package/esm2022/lib/public/modules/videos/resource-videos.module.mjs +30 -0
- package/esm2022/lib/public/modules/white-papers/resource-white-papers.module.mjs +31 -0
- package/esm2022/lib/public/resource-public.module.mjs +5 -175
- package/esm2022/lib/public/resource-public.routing.module.mjs +13 -62
- package/esm2022/lib/public/shared/resource-cards.module.mjs +116 -0
- package/esm2022/lib/public/shared/resource-edit.module.mjs +64 -0
- package/esm2022/lib/public/shared/resource-shared.module.mjs +116 -0
- package/esm2022/lib/shared/resource-modal.interface.mjs +2 -0
- package/fesm2022/posiwise-resource-module-base-top-banner.component-DFT3ZpJE.mjs +111 -0
- package/fesm2022/posiwise-resource-module-base-top-banner.component-DFT3ZpJE.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-D953ymF3.mjs +2311 -0
- package/fesm2022/posiwise-resource-module-posiwise-resource-module-D953ymF3.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-blogs.module-Dpg-VGXf.mjs +91 -0
- package/fesm2022/posiwise-resource-module-resource-blogs.module-Dpg-VGXf.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-Bxfa0c61.mjs +127 -0
- package/fesm2022/posiwise-resource-module-resource-case-studies.module-Bxfa0c61.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-events.module-CNKoXu2J.mjs +245 -0
- package/fesm2022/posiwise-resource-module-resource-events.module-CNKoXu2J.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-hub.module-ggk9jRt9.mjs +249 -0
- package/fesm2022/posiwise-resource-module-resource-hub.module-ggk9jRt9.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-integrations.module-vGdvpS64.mjs +286 -0
- package/fesm2022/posiwise-resource-module-resource-integrations.module-vGdvpS64.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-post.module-RkJpZSPU.mjs +318 -0
- package/fesm2022/posiwise-resource-module-resource-post.module-RkJpZSPU.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-DKu39Lgo.mjs +124 -0
- package/fesm2022/posiwise-resource-module-resource-release-notes.module-DKu39Lgo.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-root.module-CItOAAUj.mjs +403 -0
- package/fesm2022/posiwise-resource-module-resource-root.module-CItOAAUj.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-videos.module-CuXWTy8y.mjs +91 -0
- package/fesm2022/posiwise-resource-module-resource-videos.module-CuXWTy8y.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-BJe9cvpS.mjs +92 -0
- package/fesm2022/posiwise-resource-module-resource-white-papers.module-BJe9cvpS.mjs.map +1 -0
- package/fesm2022/posiwise-resource-module.mjs +32 -3174
- package/fesm2022/posiwise-resource-module.mjs.map +1 -1
- package/index.d.ts +17 -2
- package/lib/public/components/reslease-note-card/release-note-card.component.d.ts +2 -1
- package/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.d.ts +4 -2
- package/lib/public/components/resource-contact-us/resource-contact-us.component.d.ts +126 -0
- package/lib/public/components/resource-contact-us/resource-contact-us.module.d.ts +23 -0
- package/lib/public/components/resource-edit-card-lazy/resource-edit-card-lazy.component.d.ts +19 -0
- package/lib/public/components/resource-post/resource-post-details/resource-post-details.component.d.ts +0 -2
- package/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.d.ts +4 -2
- package/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.d.ts +4 -2
- package/lib/public/components/resources/resources.component.d.ts +3 -2
- package/lib/public/modules/blogs/resource-blogs.module.d.ts +10 -0
- package/lib/public/modules/case-studies/resource-case-studies.module.d.ts +10 -0
- package/lib/public/modules/events/resource-events.module.d.ts +10 -0
- package/lib/public/modules/hub/resource-hub.module.d.ts +9 -0
- package/lib/public/modules/integrations/resource-integrations.module.d.ts +10 -0
- package/lib/public/modules/post/resource-post.module.d.ts +11 -0
- package/lib/public/modules/release-notes/resource-release-notes.module.d.ts +10 -0
- package/lib/public/modules/root/resource-root-shared.module.d.ts +17 -0
- package/lib/public/modules/root/resource-root.module.d.ts +11 -0
- package/lib/public/modules/videos/resource-videos.module.d.ts +10 -0
- package/lib/public/modules/white-papers/resource-white-papers.module.d.ts +10 -0
- package/lib/public/resource-public.module.d.ts +2 -51
- package/lib/public/shared/resource-cards.module.d.ts +32 -0
- package/lib/public/shared/resource-edit.module.d.ts +22 -0
- package/lib/public/shared/resource-shared.module.d.ts +19 -0
- package/lib/shared/resource-modal.interface.d.ts +6 -0
- package/package.json +1 -1
- package/esm2022/lib/public/components/resource-card-list/resource-card-list.component.mjs +0 -22
- package/esm2022/lib/public/components/resources-read/resources-read.component.mjs +0 -125
- package/lib/public/components/resource-card-list/resource-card-list.component.d.ts +0 -8
- package/lib/public/components/resources-read/resources-read.component.d.ts +0 -43
package/package.json
CHANGED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "@posiwise/directives";
|
|
6
|
-
export class ResourceCardListComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.posts = [];
|
|
9
|
-
this.postHeader = '';
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceCardListComponent, selector: "pw-resource-card-list", inputs: { posts: "posts", postHeader: "postHeader" }, ngImport: i0, template: "<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let post of this.posts; let i = index\" [ngClass]=\"{ 'mt-5': i > 2 }\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ post.title }}</p>\n <img [src]=\"post.picture.url\" class=\"resource-image mt-4\" [alt]=\"\" />\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"read-now-btn\"\n aria-label=\"Navigate to external url\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">\u2192</span>\n </a>\n\n <ng-template #internalLink>\n <a class=\"read-now-btn\" aria-label=\"Navigate to resource view\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">\u2192</span>\n </a>\n </ng-template>\n\n </div>\n </div>\n </div>\n </div>\n </section>", styles: [".video-row{gap:5.5rem!important;margin-top:3rem!important}::ng-deep .resource-section{box-shadow:0 4px 32px -14px #40576d4d!important}.release-icon{height:auto;margin:0 11px 1.9rem;display:block;align-self:center}@media (width >= 768px) and (width <= 1200px){.resource-title{font-size:1.4rem!important}}textarea{font-size:1.4rem!important}@media (width <= 768px){.resource-title{font-size:1.2rem!important}.container{padding:1rem 3rem!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.msp-vault-section .vault-heading{font-size:3.5rem}.msp-vault-section .vault-description{margin-top:1.35rem}.msp-vault-section .vault-card{width:100%!important}.msp-vault-section .vault-btn{margin-left:0!important;width:100%!important}}@media (width >= 991px){::ng-deep .trial-meeting-section:before{top:600px!important}::ng-deep .dashboard{margin-bottom:1rem!important}section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}section.bg-white.text-center.extra-top-padding:before,section.bg-white.text-center.extra-top-padding:after{content:\"\";position:absolute;background:url(/assets/img/logos/background-banner.png) no-repeat;background-size:contain;width:160px;height:450px;z-index:0;opacity:.8}section.bg-white.text-center.extra-top-padding:before{top:500px;left:0}section.bg-white.text-center.extra-top-padding:after{top:90px;right:0}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 1200px){.resource-card{width:100%!important}.release-notes-section{padding:7rem 0!important}}@media (width >= 768px) and (width <= 1200px){.nce-hero-section{padding:0 6rem!important}.cards-row{justify-content:center}}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:0 1.5rem;padding-bottom:4rem!important;padding-top:7rem!important;max-width:850px;margin:0 auto;text-align:left}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:var(--first)!important;text-decoration:none;font-weight:500}.nce-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.nce-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-book-section .nce-contact{line-height:1.6;font-size:1.5rem}.nce-book-section .nce-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.nce-book-section .nce-contact a:hover{color:var(--first)!important}.nce-offer-section{background:#fff;padding-top:2rem}.nce-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-offer-section .nce-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.nce-offer-section .nce-title strong{font-weight:700}.nce-offer-section .nce-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.nce-offer-section .nce-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.nce-offer-section .nce-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.nce-offer-section .nce-signup{margin-bottom:2.5rem}.nce-offer-section .nce-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.nce-offer-section .nce-book-section{padding-top:2rem!important}.nce-offer-section .container{text-align:left}.nce-offer-section .nce-title{font-size:1.5rem}.nce-offer-section .nce-description,.nce-offer-section .nce-offer-list,.nce-offer-section .nce-signup,.nce-offer-section .signup-link,.nce-offer-section .nce-contact,.nce-offer-section .nce-offer-list p{font-size:1.2rem!important}}.nce-offer-intro{font-size:1.5rem;font-weight:400}.outer-section-fadeout{position:absolute;top:139rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.body-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}@media (width <= 768px){.nce-book-section{padding-top:2rem!important}.nce-contact{font-size:1.2rem!important}}::ng-deep .body-quill{border-width:0!important;max-width:900px;display:block;margin-left:auto;margin-right:auto}::ng-deep .p-inputtextarea{border-radius:.5rem;border-color:#ced4da;font-size:1rem}.card{background-color:#fff;border-radius:12px}.comment-row{gap:2rem;padding-bottom:5rem;max-width:1000px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:1.5rem!important}.response-row{max-width:1000px;display:block;margin-left:auto;margin-right:auto;margin-top:3rem!important}\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: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCardListComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'pw-resource-card-list', template: "<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let post of this.posts; let i = index\" [ngClass]=\"{ 'mt-5': i > 2 }\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ post.title }}</p>\n <img [src]=\"post.picture.url\" class=\"resource-image mt-4\" [alt]=\"\" />\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"read-now-btn\"\n aria-label=\"Navigate to external url\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">\u2192</span>\n </a>\n\n <ng-template #internalLink>\n <a class=\"read-now-btn\" aria-label=\"Navigate to resource view\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">\u2192</span>\n </a>\n </ng-template>\n\n </div>\n </div>\n </div>\n </div>\n </section>", styles: [".video-row{gap:5.5rem!important;margin-top:3rem!important}::ng-deep .resource-section{box-shadow:0 4px 32px -14px #40576d4d!important}.release-icon{height:auto;margin:0 11px 1.9rem;display:block;align-self:center}@media (width >= 768px) and (width <= 1200px){.resource-title{font-size:1.4rem!important}}textarea{font-size:1.4rem!important}@media (width <= 768px){.resource-title{font-size:1.2rem!important}.container{padding:1rem 3rem!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.msp-vault-section .vault-heading{font-size:3.5rem}.msp-vault-section .vault-description{margin-top:1.35rem}.msp-vault-section .vault-card{width:100%!important}.msp-vault-section .vault-btn{margin-left:0!important;width:100%!important}}@media (width >= 991px){::ng-deep .trial-meeting-section:before{top:600px!important}::ng-deep .dashboard{margin-bottom:1rem!important}section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}section.bg-white.text-center.extra-top-padding:before,section.bg-white.text-center.extra-top-padding:after{content:\"\";position:absolute;background:url(/assets/img/logos/background-banner.png) no-repeat;background-size:contain;width:160px;height:450px;z-index:0;opacity:.8}section.bg-white.text-center.extra-top-padding:before{top:500px;left:0}section.bg-white.text-center.extra-top-padding:after{top:90px;right:0}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 1200px){.resource-card{width:100%!important}.release-notes-section{padding:7rem 0!important}}@media (width >= 768px) and (width <= 1200px){.nce-hero-section{padding:0 6rem!important}.cards-row{justify-content:center}}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:0 1.5rem;padding-bottom:4rem!important;padding-top:7rem!important;max-width:850px;margin:0 auto;text-align:left}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:var(--first)!important;text-decoration:none;font-weight:500}.nce-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.nce-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-book-section .nce-contact{line-height:1.6;font-size:1.5rem}.nce-book-section .nce-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.nce-book-section .nce-contact a:hover{color:var(--first)!important}.nce-offer-section{background:#fff;padding-top:2rem}.nce-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.nce-offer-section .nce-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.nce-offer-section .nce-title strong{font-weight:700}.nce-offer-section .nce-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.nce-offer-section .nce-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.nce-offer-section .nce-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.nce-offer-section .nce-signup{margin-bottom:2.5rem}.nce-offer-section .nce-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.nce-offer-section .nce-book-section{padding-top:2rem!important}.nce-offer-section .container{text-align:left}.nce-offer-section .nce-title{font-size:1.5rem}.nce-offer-section .nce-description,.nce-offer-section .nce-offer-list,.nce-offer-section .nce-signup,.nce-offer-section .signup-link,.nce-offer-section .nce-contact,.nce-offer-section .nce-offer-list p{font-size:1.2rem!important}}.nce-offer-intro{font-size:1.5rem;font-weight:400}.outer-section-fadeout{position:absolute;top:139rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.body-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}@media (width <= 768px){.nce-book-section{padding-top:2rem!important}.nce-contact{font-size:1.2rem!important}}::ng-deep .body-quill{border-width:0!important;max-width:900px;display:block;margin-left:auto;margin-right:auto}::ng-deep .p-inputtextarea{border-radius:.5rem;border-color:#ced4da;font-size:1rem}.card{background-color:#fff;border-radius:12px}.comment-row{gap:2rem;padding-bottom:5rem;max-width:1000px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:1.5rem!important}.response-row{max-width:1000px;display:block;margin-left:auto;margin-right:auto;margin-top:3rem!important}\n"] }]
|
|
17
|
-
}], propDecorators: { posts: [{
|
|
18
|
-
type: Input
|
|
19
|
-
}], postHeader: [{
|
|
20
|
-
type: Input
|
|
21
|
-
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtY2FyZC1saXN0L3Jlc291cmNlLWNhcmQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWNhcmQtbGlzdC9yZXNvdXJjZS1jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU2pELE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNYSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7S0FDNUI7K0dBSFkseUJBQXlCO21HQUF6Qix5QkFBeUIsbUhDVHRDLHUrQ0ErQlk7OzRGRHRCQyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksdUJBQXVCOzhCQUt4QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2UtY2FyZC1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzb3VyY2UtY2FyZC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vcmVzb3VyY2UtcG9zdC9yZWxhdGVkLXJlc291cmNlcy9yZWxhdGVkLXJlc291cmNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlQ2FyZExpc3RDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHBvc3RzOiBSZXNvdXJjZVtdID0gW107XG4gICAgQElucHV0KCkgcG9zdEhlYWRlciA9ICcnO1xufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJyZXNvdXJjZS1zZWN0aW9uIGJnLXdoaXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicG9zdEhlYWRlclwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgbWItM1wiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi1oZWFkaW5nXCI+e3twb3N0SGVhZGVyfX08L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNCBjYXJkcy1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IGNvbC1tZC02IG1iLTRcIiAqbmdGb3I9XCJsZXQgcG9zdCBvZiAgdGhpcy5wb3N0czsgbGV0IGkgPSBpbmRleFwiICBbbmdDbGFzc109XCJ7ICdtdC01JzogaSA+IDIgfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1jYXJkXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInJlc291cmNlLXRpdGxlXCI+e3sgcG9zdC50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJwb3N0LnBpY3R1cmUudXJsXCIgY2xhc3M9XCJyZXNvdXJjZS1pbWFnZSBtdC00XCIgW2FsdF09XCJcIiAvPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJwb3N0Py5leHRlcm5hbF91cmw7IGVsc2UgaW50ZXJuYWxMaW5rXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmVhZC1ub3ctYnRuXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJOYXZpZ2F0ZSB0byBleHRlcm5hbCB1cmxcIlxuICAgICAgICAgICAgW2hyZWZdPVwicG9zdC5leHRlcm5hbF91cmxcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgPHNwYW4+e3sgcG9zdD8uY3RhX3RleHQgJiYgcG9zdC5jdGFfdGV4dCAhPT0gJ251bGwnID8gcG9zdC5jdGFfdGV4dCA6ICdSZWFkIE5vdycgIH19PC9zcGFuPlxuICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+4oaSPC9zcGFuPlxuICAgICAgICAgPC9hPlxuXG4gICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVybmFsTGluaz5cbiAgICAgICAgICAgPGEgY2xhc3M9XCJyZWFkLW5vdy1idG5cIiBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gcmVzb3VyY2Ugdmlld1wiIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgcG9zdD8uc2x1Z11cIj5cbiAgICAgICAgICAgICA8c3Bhbj57eyBwb3N0Py5jdGFfdGV4dCAmJiBwb3N0LmN0YV90ZXh0ICE9PSAnbnVsbCcgPyBwb3N0LmN0YV90ZXh0IDogJ1JlYWQgTm93JyAgfX08L3NwYW4+XG4gICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPuKGkjwvc3Bhbj5cbiAgICAgICAgICAgPC9hPlxuICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+Il19
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { Component, Injector, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
4
|
-
import { AuthService, CustomToastService } from '@posiwise/common-services';
|
|
5
|
-
import { HelperService } from '@posiwise/helper-service';
|
|
6
|
-
import { ResourceService } from '../../../resource.service';
|
|
7
|
-
import { ResourceBlog } from '../../../shared/models/resource.model';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../../resource.service";
|
|
10
|
-
import * as i2 from "@posiwise/common-services";
|
|
11
|
-
import * as i3 from "@angular/platform-browser";
|
|
12
|
-
import * as i4 from "@angular/common";
|
|
13
|
-
import * as i5 from "@angular/forms";
|
|
14
|
-
import * as i6 from "@angular/router";
|
|
15
|
-
import * as i7 from "@posiwise/shared-components";
|
|
16
|
-
import * as i8 from "ngx-sharebuttons/buttons";
|
|
17
|
-
import * as i9 from "@posiwise/directives";
|
|
18
|
-
import * as i10 from "@jsverse/transloco";
|
|
19
|
-
export class ResourceReadComponent extends AppBaseComponent {
|
|
20
|
-
constructor(resourceService, toastr, authService, injector, sanitizer) {
|
|
21
|
-
super(injector);
|
|
22
|
-
this.resourceService = resourceService;
|
|
23
|
-
this.toastr = toastr;
|
|
24
|
-
this.authService = authService;
|
|
25
|
-
this.sanitizer = sanitizer;
|
|
26
|
-
this.recentPosts = [];
|
|
27
|
-
this.postComments = [];
|
|
28
|
-
this.userLoggedIn = false;
|
|
29
|
-
this.buttonBusy = false;
|
|
30
|
-
this.commentForm = ResourceBlog.getResourcePostsForm();
|
|
31
|
-
}
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
|
|
34
|
-
this.route.params.subscribe(params => {
|
|
35
|
-
this.slug = params['slug'] ?? '';
|
|
36
|
-
this.getBlogItem(this.slug);
|
|
37
|
-
});
|
|
38
|
-
this.authService.getToken$().subscribe(res => {
|
|
39
|
-
this.userLoggedIn = !!res;
|
|
40
|
-
if (this.userLoggedIn) {
|
|
41
|
-
this.userService.getUserInfo().subscribe(data => {
|
|
42
|
-
this.user = data;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
readingTime(text) {
|
|
48
|
-
if (text) {
|
|
49
|
-
const textContent = text.toString();
|
|
50
|
-
const wordsPerMinute = 200;
|
|
51
|
-
const noOfWords = textContent.split(/\s/g).length;
|
|
52
|
-
const minutes = noOfWords / wordsPerMinute;
|
|
53
|
-
const readTime = Math.ceil(minutes);
|
|
54
|
-
return `${readTime} minute read`;
|
|
55
|
-
}
|
|
56
|
-
return '';
|
|
57
|
-
}
|
|
58
|
-
handleImageError(event, fallbackPath) {
|
|
59
|
-
HelperService.handleImageFallbackPath(event, fallbackPath);
|
|
60
|
-
}
|
|
61
|
-
getBlogItem(slug) {
|
|
62
|
-
this.resourceService.getPostBySlug(slug).subscribe(response => {
|
|
63
|
-
let blogBody;
|
|
64
|
-
if (response?.body) {
|
|
65
|
-
blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);
|
|
66
|
-
}
|
|
67
|
-
this.post = { ...response, body: blogBody };
|
|
68
|
-
this.postComments = response.entity_comments;
|
|
69
|
-
this.getPosts(1, 4);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
getPosts(page, pageSize) {
|
|
73
|
-
this.resourceService
|
|
74
|
-
.getPublicPosts(this.masterSubscriptionId, page, pageSize, '')
|
|
75
|
-
.subscribe(response => {
|
|
76
|
-
this.recentPosts = response.posts.filter(post => post.slug !== this.post.slug);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
onComment() {
|
|
80
|
-
this.buttonBusy = true;
|
|
81
|
-
const data = { ...this.commentForm.value };
|
|
82
|
-
data.related_entity_id = this.post?.id;
|
|
83
|
-
data.related_entity_type = 'Post';
|
|
84
|
-
data.user_id = this.user?.id;
|
|
85
|
-
this.resourceService
|
|
86
|
-
.postComments(data)
|
|
87
|
-
.subscribe(() => {
|
|
88
|
-
this.getBlogItem(this.slug);
|
|
89
|
-
this.commentForm.reset();
|
|
90
|
-
this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));
|
|
91
|
-
})
|
|
92
|
-
.add(() => {
|
|
93
|
-
this.buttonBusy = false;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
tagPost(selectedTag) {
|
|
97
|
-
this.recentPosts = this.recentPosts.filter(element => {
|
|
98
|
-
let filtered;
|
|
99
|
-
if (element.tags?.length) {
|
|
100
|
-
filtered = element.tags.filter(tag => tag.tag_category_id === selectedTag?.tag_category_id);
|
|
101
|
-
return { element, filtered };
|
|
102
|
-
}
|
|
103
|
-
return {};
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
trackByTagId(_index, item) {
|
|
107
|
-
return item.id;
|
|
108
|
-
}
|
|
109
|
-
trackByRecentPost(_index, item) {
|
|
110
|
-
return item.id;
|
|
111
|
-
}
|
|
112
|
-
trackByComment(_index, item) {
|
|
113
|
-
return item.id;
|
|
114
|
-
}
|
|
115
|
-
ngOnDestroy() {
|
|
116
|
-
super.ngOnDestroy();
|
|
117
|
-
}
|
|
118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceReadComponent, deps: [{ token: i1.ResourceService }, { token: i2.CustomToastService }, { token: i2.AuthService }, { token: i0.Injector }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceReadComponent, selector: "pw-post-read", usesInheritance: true, ngImport: i0, template: "<pw-header/>\n<div class=\"read-post mt-5 pt-5\">\n <div class=\"show-blog\">\n <div class=\"row\">\n <!-- content -->\n <div class=\"col-12\">\n <ul class=\"d-flex align-items-center mb-4 position-relative\">\n <li>\n <a href=\"javascript:void(0);\">\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 height=\"45\"\n width=\"45\"\n src=\"/assets/img/icons/male.png\"\n alt=\"author\" /></a>\n </div>\n </a>\n </li>\n <li>\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 </li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">{{\n post?.author.published_at\n }}</a>\n </li>\n <li>.</li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">\n {{ readingTime(post?.body) }}\n </a>\n </li>\n <li class=\"social-media\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n id=\"dropdownMenuLink2\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\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\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink2\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <h2 class=\"mb-3\">{{ post?.title }}</h2>\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n\n <ul class=\"bottom-social-icons d-flex justify-content-between mt-5 border-top border-bottom py-3\">\n <li class=\"social-media-blog-page\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n <li>\n <ul>\n <li *ngFor=\"let tag of post?.tags; trackBy: trackByTagId\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">\n {{ tag.name }}\n </li>\n </ul>\n </li>\n </ul>\n <ul class=\"d-flex justify-content-between mt-3 views\">\n <li>\n <span>{{ post?.view || 0 }} views</span>\n </li>\n <li><i class=\"far fa-heart\" aria-hidden=\"true\"></i></li>\n </ul>\n </div>\n <!--content end -->\n </div>\n <!-- modal for share buttons -->\n <div class=\"modal fade\"\n id=\"exampleModal\"\n tabindex=\"-1\"\n aria-labelledby=\"exampleModalLabel\">\n <div class=\"modal-dialog modal-dialog-centered\" >\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\"\n id=\"exampleModalLabel\">Share the post</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n data-dismiss=\"modal\"\n aria-label=\"Close\">\n <span>×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <share-buttons theme=\"material-dark\"\n show=\"7\"></share-buttons>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\">\n Close\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- recent posts -->\n <div class=\"related-posts mt-5\">\n <ul class=\"d-flex justify-content-between\">\n <li>\n <h5>Recent Resources</h5>\n </li>\n <li><a [routerLink]=\"['/resources/view']\">See All</a></li>\n </ul>\n <div class=\"row mt-4\">\n <div class=\"col-sm-6 col-md-6 col-lg-4 col-xs-12 mb-2\"\n *ngFor=\"let recentPost of recentPosts; trackBy: trackByRecentPost\">\n <div class=\"recent-post\"\n [routerLink]=\"['/resources/view', recentPost.slug]\">\n <div class=\"blog-image\">\n <img [src]=\"recentPost.picture.url\"\n alt=\"Resource\" />\n </div>\n <h5 class=\"pt-4 blog-title ps-3 pe-3\">{{ recentPost?.title }}</h5>\n <div class=\"blog-view pt-3 ps-3 pe-3\">\n <p>{{ recentPost.view !== null ? recentPost.view : '0' }} View</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 mb-4\">\n <div class=\"col-12\">\n <form class=\"comments-sec\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\">\n <div class=\"col-12 pt-4\">\n <!-- Comment Massage -->\n <pw-input-container label=\"Write a response\"\n name=\"comment\"\n errorMsg=\"Please enter comment\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"comment\"></textarea>\n </pw-input-container>\n\n <div class=\"text-end mt-4\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in\">\n <a [routerLink]=\"['/login']\">Log in</a>\n to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n <div class=\"row mt-5 mb-5\">\n <div class=\"col-12\"\n *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"comment-post mt-2\">\n <img *ngIf=\"comment?.user?.avatar\"\n [src]=\"comment.user?.avatar[0]?.url\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <img *ngIf=\"!comment?.user?.avatar\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n src=\"assets/img/icons/male.png\" />\n <small>{{ comment.user?.first_name ? comment.user?.first_name : '' }}\n {{ comment.user?.last_name ? comment.user?.last_name : '' }}\n </small>\n <p>{{ comment.comment }}</p>\n <p class=\"text-end comment-date\">{{ comment.created_at | date: 'dd/MM/yyyy' }}</p>\n </div>\n </div>\n </div>\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)}.show-blog,.recent-post{border:1px solid rgb(238,238,238)}.recent-post .blog-image{height:250px;min-height:250px}.recent-post .blog-image img{height:100%;width:100%}.recent-post .blog-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:300px}.recent-post .blog-view{border-top:1px solid rgb(238,238,238)}body{background:#fff}form.comments-sec{background-color:#f7f7f7;border:1px solid rgb(238,238,238)}form.comments-sec .no-padding{padding:0}form.comments-sec button{font-size:16px;margin-bottom:20px;margin-right:20px;padding:10px 25px;text-transform:uppercase}form.comments-sec label{background-color:#eee;color:gray;display:inline-block;margin:0;padding:15px;width:100%}form.comments-sec .mb-3{margin:0;padding:20px}form.comments-sec .mb-3 textarea{border:1px solid rgb(238,238,238);height:150px}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:#4444bc!important}.comment-post{background:#f7f7f7;border:1px solid rgb(238,238,238);padding:20px}.comment-post .comment-date{color:#777;font-size:14px;font-style:italic;margin:0}share-buttons{background-color:#eee;margin-bottom:10px}.read-post{margin:0 auto 20px;max-width:940px;padding-top:20px}.read-post .show-blog{padding:5rem 5rem 3rem}.read-post .show-blog ul li{display:inline-block;padding-right:10px}.read-post .show-blog ul li a{font:13px/1 Roboto,sans-serif}.read-post .show-blog ul li a .avatar-image{border-radius:50px;height:50px;overflow:hidden;width:50px}.read-post .show-blog ul li a .avatar-image i{color:#000}.read-post .show-blog ul li a .avatar-image i,.read-post .show-blog ul li a .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.read-post .show-blog ul li p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.read-post .show-blog ul li p.name:hover{color:#0045c7}.read-post .show-blog ul li p.name i{color:#000}.read-post .show-blog ul.views li:nth-child(2) i{color:#e84a43;font-size:14px}.read-post .show-blog ul.bottom-social-icons li:first-child ul li{padding-right:35px}.read-post .show-blog ul.bottom-social-icons li:first-child ul li i{color:#000}.read-post .show-blog ul.bottom-social-icons li:nth-child(2){padding:0}.read-post .show-blog ul.bottom-social-icons li:nth-child(2) ul li{padding-left:30px}.read-post .show-blog ul.bottom-social-icons li:nth-child(2) ul li a{color:#000}.read-post .show-blog .social-media{position:absolute;right:0;top:50%;transform:translateY(-50%)}.read-post .show-blog .social-media .share-post{flex-grow:3;position:relative;text-align:right}.read-post .show-blog .social-media .share-post i{color:var(--first)}.read-post .show-blog .social-media .share-post .dropdown-menu{border:0 none;box-shadow:0 3px 8px #0003;left:auto!important;right:0;top:20px!important;transform:translate(0)!important}.read-post .show-blog .body p img{max-width:100%}.social-media-blog-page a{color:#000}@media only screen and (width <= 1024px){.read-post{padding:1rem}.read-post .show-blog{padding:.5rem}.read-post .show-blog h2{font-size:30px}}@media only screen and (width <= 767px){.read-post,.read-post .show-blog{padding:.5rem}.read-post .show-blog ul{flex-wrap:wrap}.read-post .show-blog ul.bottom-social-icons li{width:100%}.read-post .show-blog ul.bottom-social-icons li ul{display:flex;justify-content:space-around;margin:10px 0}.read-post .show-blog ul.bottom-social-icons li ul li{padding:0!important;text-align:center;width:33.333%}.read-post .show-blog ul li{font:12px/1 Roboto,sans-serif;padding-right:5px}.read-post .show-blog ul li a{font:11px/1 Roboto,sans-serif}.read-post .show-blog ul li p.name{font:12px/1 Roboto,sans-serif}.read-post .show-blog h2{font-size:26px}.read-post .show-blog .body p{font-size:.8rem}}.subscribe-btn{background-color:var(--first);color:#fff}.subscribe-btn:hover{background-color:#fff;color:var(--first)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i7.HeaderComponent, selector: "pw-header", inputs: ["landing"] }, { kind: "component", type: i8.ShareButtons, selector: "share-buttons", inputs: ["theme", "include", "exclude", "show", "url", "title", "description", "image", "tags", "redirectUrl", "autoSetMeta", "showIcon", "showText", "disabled"], outputs: ["opened", "closed"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i9.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i10.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
120
|
-
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceReadComponent, decorators: [{
|
|
122
|
-
type: Component,
|
|
123
|
-
args: [{ selector: 'pw-post-read', encapsulation: ViewEncapsulation.None, template: "<pw-header/>\n<div class=\"read-post mt-5 pt-5\">\n <div class=\"show-blog\">\n <div class=\"row\">\n <!-- content -->\n <div class=\"col-12\">\n <ul class=\"d-flex align-items-center mb-4 position-relative\">\n <li>\n <a href=\"javascript:void(0);\">\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 height=\"45\"\n width=\"45\"\n src=\"/assets/img/icons/male.png\"\n alt=\"author\" /></a>\n </div>\n </a>\n </li>\n <li>\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 </li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">{{\n post?.author.published_at\n }}</a>\n </li>\n <li>.</li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">\n {{ readingTime(post?.body) }}\n </a>\n </li>\n <li class=\"social-media\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n id=\"dropdownMenuLink2\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\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\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink2\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <h2 class=\"mb-3\">{{ post?.title }}</h2>\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n\n <ul class=\"bottom-social-icons d-flex justify-content-between mt-5 border-top border-bottom py-3\">\n <li class=\"social-media-blog-page\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n <li>\n <ul>\n <li *ngFor=\"let tag of post?.tags; trackBy: trackByTagId\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">\n {{ tag.name }}\n </li>\n </ul>\n </li>\n </ul>\n <ul class=\"d-flex justify-content-between mt-3 views\">\n <li>\n <span>{{ post?.view || 0 }} views</span>\n </li>\n <li><i class=\"far fa-heart\" aria-hidden=\"true\"></i></li>\n </ul>\n </div>\n <!--content end -->\n </div>\n <!-- modal for share buttons -->\n <div class=\"modal fade\"\n id=\"exampleModal\"\n tabindex=\"-1\"\n aria-labelledby=\"exampleModalLabel\">\n <div class=\"modal-dialog modal-dialog-centered\" >\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\"\n id=\"exampleModalLabel\">Share the post</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n data-dismiss=\"modal\"\n aria-label=\"Close\">\n <span>×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <share-buttons theme=\"material-dark\"\n show=\"7\"></share-buttons>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\">\n Close\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- recent posts -->\n <div class=\"related-posts mt-5\">\n <ul class=\"d-flex justify-content-between\">\n <li>\n <h5>Recent Resources</h5>\n </li>\n <li><a [routerLink]=\"['/resources/view']\">See All</a></li>\n </ul>\n <div class=\"row mt-4\">\n <div class=\"col-sm-6 col-md-6 col-lg-4 col-xs-12 mb-2\"\n *ngFor=\"let recentPost of recentPosts; trackBy: trackByRecentPost\">\n <div class=\"recent-post\"\n [routerLink]=\"['/resources/view', recentPost.slug]\">\n <div class=\"blog-image\">\n <img [src]=\"recentPost.picture.url\"\n alt=\"Resource\" />\n </div>\n <h5 class=\"pt-4 blog-title ps-3 pe-3\">{{ recentPost?.title }}</h5>\n <div class=\"blog-view pt-3 ps-3 pe-3\">\n <p>{{ recentPost.view !== null ? recentPost.view : '0' }} View</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 mb-4\">\n <div class=\"col-12\">\n <form class=\"comments-sec\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\">\n <div class=\"col-12 pt-4\">\n <!-- Comment Massage -->\n <pw-input-container label=\"Write a response\"\n name=\"comment\"\n errorMsg=\"Please enter comment\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"comment\"></textarea>\n </pw-input-container>\n\n <div class=\"text-end mt-4\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in\">\n <a [routerLink]=\"['/login']\">Log in</a>\n to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n <div class=\"row mt-5 mb-5\">\n <div class=\"col-12\"\n *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"comment-post mt-2\">\n <img *ngIf=\"comment?.user?.avatar\"\n [src]=\"comment.user?.avatar[0]?.url\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <img *ngIf=\"!comment?.user?.avatar\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n src=\"assets/img/icons/male.png\" />\n <small>{{ comment.user?.first_name ? comment.user?.first_name : '' }}\n {{ comment.user?.last_name ? comment.user?.last_name : '' }}\n </small>\n <p>{{ comment.comment }}</p>\n <p class=\"text-end comment-date\">{{ comment.created_at | date: 'dd/MM/yyyy' }}</p>\n </div>\n </div>\n </div>\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)}.show-blog,.recent-post{border:1px solid rgb(238,238,238)}.recent-post .blog-image{height:250px;min-height:250px}.recent-post .blog-image img{height:100%;width:100%}.recent-post .blog-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:300px}.recent-post .blog-view{border-top:1px solid rgb(238,238,238)}body{background:#fff}form.comments-sec{background-color:#f7f7f7;border:1px solid rgb(238,238,238)}form.comments-sec .no-padding{padding:0}form.comments-sec button{font-size:16px;margin-bottom:20px;margin-right:20px;padding:10px 25px;text-transform:uppercase}form.comments-sec label{background-color:#eee;color:gray;display:inline-block;margin:0;padding:15px;width:100%}form.comments-sec .mb-3{margin:0;padding:20px}form.comments-sec .mb-3 textarea{border:1px solid rgb(238,238,238);height:150px}.user-not-logged-in{background:#f7f7f7;border:1px solid rgb(238,238,238);font-weight:400}.user-not-logged-in a{color:#4444bc!important}.comment-post{background:#f7f7f7;border:1px solid rgb(238,238,238);padding:20px}.comment-post .comment-date{color:#777;font-size:14px;font-style:italic;margin:0}share-buttons{background-color:#eee;margin-bottom:10px}.read-post{margin:0 auto 20px;max-width:940px;padding-top:20px}.read-post .show-blog{padding:5rem 5rem 3rem}.read-post .show-blog ul li{display:inline-block;padding-right:10px}.read-post .show-blog ul li a{font:13px/1 Roboto,sans-serif}.read-post .show-blog ul li a .avatar-image{border-radius:50px;height:50px;overflow:hidden;width:50px}.read-post .show-blog ul li a .avatar-image i{color:#000}.read-post .show-blog ul li a .avatar-image i,.read-post .show-blog ul li a .avatar-image img{left:50%;position:relative;top:50%;transform:translate(-50%,-50%)}.read-post .show-blog ul li p.name{color:#000;font:14px/1 Roboto,sans-serif;margin:0;transition:all .5s}.read-post .show-blog ul li p.name:hover{color:#0045c7}.read-post .show-blog ul li p.name i{color:#000}.read-post .show-blog ul.views li:nth-child(2) i{color:#e84a43;font-size:14px}.read-post .show-blog ul.bottom-social-icons li:first-child ul li{padding-right:35px}.read-post .show-blog ul.bottom-social-icons li:first-child ul li i{color:#000}.read-post .show-blog ul.bottom-social-icons li:nth-child(2){padding:0}.read-post .show-blog ul.bottom-social-icons li:nth-child(2) ul li{padding-left:30px}.read-post .show-blog ul.bottom-social-icons li:nth-child(2) ul li a{color:#000}.read-post .show-blog .social-media{position:absolute;right:0;top:50%;transform:translateY(-50%)}.read-post .show-blog .social-media .share-post{flex-grow:3;position:relative;text-align:right}.read-post .show-blog .social-media .share-post i{color:var(--first)}.read-post .show-blog .social-media .share-post .dropdown-menu{border:0 none;box-shadow:0 3px 8px #0003;left:auto!important;right:0;top:20px!important;transform:translate(0)!important}.read-post .show-blog .body p img{max-width:100%}.social-media-blog-page a{color:#000}@media only screen and (width <= 1024px){.read-post{padding:1rem}.read-post .show-blog{padding:.5rem}.read-post .show-blog h2{font-size:30px}}@media only screen and (width <= 767px){.read-post,.read-post .show-blog{padding:.5rem}.read-post .show-blog ul{flex-wrap:wrap}.read-post .show-blog ul.bottom-social-icons li{width:100%}.read-post .show-blog ul.bottom-social-icons li ul{display:flex;justify-content:space-around;margin:10px 0}.read-post .show-blog ul.bottom-social-icons li ul li{padding:0!important;text-align:center;width:33.333%}.read-post .show-blog ul li{font:12px/1 Roboto,sans-serif;padding-right:5px}.read-post .show-blog ul li a{font:11px/1 Roboto,sans-serif}.read-post .show-blog ul li p.name{font:12px/1 Roboto,sans-serif}.read-post .show-blog h2{font-size:26px}.read-post .show-blog .body p{font-size:.8rem}}.subscribe-btn{background-color:var(--first);color:#fff}.subscribe-btn:hover{background-color:#fff;color:var(--first)}\n"] }]
|
|
124
|
-
}], ctorParameters: () => [{ type: i1.ResourceService }, { type: i2.CustomToastService }, { type: i2.AuthService }, { type: i0.Injector }, { type: i3.DomSanitizer }] });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLXJlYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZXMtcmVhZC9yZXNvdXJjZXMtcmVhZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlcy1yZWFkL3Jlc291cmNlcy1yZWFkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFRckUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQWN2RCxZQUNxQixlQUFnQyxFQUNoQyxNQUEwQixFQUMxQixXQUF3QixFQUN6QyxRQUFrQixFQUNELFNBQXVCO1FBRXhDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQU5DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUV4Qixj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QUNqRCxJQUFJLFFBQVEsQ0FBQztZQUNiLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUMxQixHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEtBQUssV0FBVyxFQUFFLGVBQWUsQ0FDOUQsQ0FBQztnQkFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjLEVBQUUsSUFBb0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsSUFBb0I7UUFDbEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLElBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0E5SFEscUJBQXFCO21HQUFyQixxQkFBcUIsMkVDbEJsQywwMFJBZ1BBOzs0RkQ5TmEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNJLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWNlbnRQb3N0LCBSZXNvdXJjZSwgUmVzb3VyY2VDb21tZW50LCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IFJlc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzb3VyY2VCbG9nIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9yZXNvdXJjZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcG9zdC1yZWFkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzb3VyY2VzLXJlYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Jlc291cmNlcy1yZWFkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVJlYWRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHBvc3Q6IFJlc291cmNlO1xuICAgIHVzZXI6IFVzZXI7XG4gICAgcmVjZW50UG9zdHM6IFJlY2VudFBvc3RbXSA9IFtdO1xuICAgIHBvc3RDb21tZW50czogUmVzb3VyY2VDb21tZW50W10gPSBbXTtcblxuICAgIHNsdWc6IHN0cmluZztcbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgY29tbWVudEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICB1c2VyTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICBidXR0b25CdXN5ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVNlcnZpY2U6IFJlc291cmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IEN1c3RvbVRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tbWVudEZvcm0gPSBSZXNvdXJjZUJsb2cuZ2V0UmVzb3VyY2VQb3N0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2x1ZyA9IHBhcmFtc1snc2x1ZyddID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5nZXRCbG9nSXRlbSh0aGlzLnNsdWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWFkaW5nVGltZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gdGV4dC50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3Qgd29yZHNQZXJNaW51dGUgPSAyMDA7XG4gICAgICAgICAgICBjb25zdCBub09mV29yZHMgPSB0ZXh0Q29udGVudC5zcGxpdCgvXFxzL2cpLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub09mV29yZHMgLyB3b3Jkc1Blck1pbnV0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRUaW1lID0gTWF0aC5jZWlsKG1pbnV0ZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7cmVhZFRpbWV9IG1pbnV0ZSByZWFkYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVJbWFnZUVycm9yKGV2ZW50OiBFdmVudCwgZmFsbGJhY2tQYXRoKTogdm9pZCB7XG4gICAgICAgIEhlbHBlclNlcnZpY2UuaGFuZGxlSW1hZ2VGYWxsYmFja1BhdGgoZXZlbnQsIGZhbGxiYWNrUGF0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9nSXRlbShzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0UG9zdEJ5U2x1ZyhzbHVnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgbGV0IGJsb2dCb2R5O1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5ib2R5KSB7XG4gICAgICAgICAgICAgICAgYmxvZ0JvZHkgPSBIZWxwZXJTZXJ2aWNlLnNhbml0aXplUXVpbGxCb2R5KHJlc3BvbnNlLmJvZHksIHRoaXMuc2FuaXRpemVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9zdCA9IHsgLi4ucmVzcG9uc2UsIGJvZHk6IGJsb2dCb2R5IH07XG4gICAgICAgICAgICB0aGlzLnBvc3RDb21tZW50cyA9IHJlc3BvbnNlLmVudGl0eV9jb21tZW50cztcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHMoMSwgNCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdHMocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHVibGljUG9zdHModGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCwgcGFnZSwgcGFnZVNpemUsICcnKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRQb3N0cyA9IHJlc3BvbnNlLnBvc3RzLmZpbHRlcihwb3N0ID0+IHBvc3Quc2x1ZyAhPT0gdGhpcy5wb3N0LnNsdWcpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db21tZW50KCkge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmNvbW1lbnRGb3JtLnZhbHVlIH07XG4gICAgICAgIGRhdGEucmVsYXRlZF9lbnRpdHlfaWQgPSB0aGlzLnBvc3Q/LmlkO1xuICAgICAgICBkYXRhLnJlbGF0ZWRfZW50aXR5X3R5cGUgPSAnUG9zdCc7XG4gICAgICAgIGRhdGEudXNlcl9pZCA9IHRoaXMudXNlcj8uaWQ7XG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAucG9zdENvbW1lbnRzKGRhdGEpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEJsb2dJdGVtKHRoaXMuc2x1Zyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50Rm9ybS5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ1Jlc291cmNlLlBvc3RzLkNvbW1lbnRBZGRlZCcpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRhZ1Bvc3Qoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgdGhpcy5yZWNlbnRQb3N0cyA9IHRoaXMucmVjZW50UG9zdHMuZmlsdGVyKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFncz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBlbGVtZW50LnRhZ3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICB0YWcgPT4gdGFnLnRhZ19jYXRlZ29yeV9pZCA9PT0gc2VsZWN0ZWRUYWc/LnRhZ19jYXRlZ29yeV9pZFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBlbGVtZW50LCBmaWx0ZXJlZCB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnlUYWdJZChfaW5kZXg6IG51bWJlciwgaXRlbTogeyBpZDogbnVtYmVyIH0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgdHJhY2tCeVJlY2VudFBvc3QoX2luZGV4OiBudW1iZXIsIGl0ZW06IHsgaWQ6IG51bWJlciB9KSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHRyYWNrQnlDb21tZW50KF9pbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBudW1iZXIgfSkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8cHctaGVhZGVyLz5cbjxkaXYgY2xhc3M9XCJyZWFkLXBvc3QgbXQtNSBwdC01XCI+XG4gIDxkaXYgY2xhc3M9XCJzaG93LWJsb2dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8IS0tIGNvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21lbWJlcnMnLCBwb3N0Py5hdXRob3I/LnNsdWddXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicG9zdD8uYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInBvc3Q/LmF1dGhvcj8uYXZhdGFyWzBdLnVybFwiXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cImF1dGhvclwiIC8+XG4gICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIXBvc3Q/LmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDVcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQ1XCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2Fzc2V0cy9pbWcvaWNvbnMvbWFsZS5wbmdcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJhdXRob3JcIiAvPjwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YSBbYXR0ci5kaXNhYmxlZF09XCIhdXNlckxvZ2dlZEluXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHBvc3Q/LmF1dGhvcj8uc2x1Z11cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICAge3sgcG9zdD8uYXV0aG9yPy5maXJzdF9uYW1lIH19XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNyb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kYXJrXCJcbiAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Q/LmF1dGhvci5wdWJsaXNoZWRfYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPGxpPi48L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kYXJrXCJcbiAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj5cbiAgICAgICAgICAgICAge3sgcmVhZGluZ1RpbWUocG9zdD8uYm9keSkgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSBjbGFzcz1cInNvY2lhbC1tZWRpYVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlLXBvc3RcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJkcm9wZG93bk1lbnVMaW5rMlwiXG4gICAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNZW51XCJcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQudGFyZ2V0LmNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC50YXJnZXQuY2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVsbGlwc2lzLXZcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51TGluazJcIj5cbiAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNleGFtcGxlTW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaGFyZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gU2hhcmUgUG9zdFxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxoMiBjbGFzcz1cIm1iLTNcIj57eyBwb3N0Py50aXRsZSB9fTwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJxbC1zbm93IGJvZHktcXVpbGxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3IgYm9keSBwb3N0LWJvZHktdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJwb3N0Py5ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHVsIGNsYXNzPVwiYm90dG9tLXNvY2lhbC1pY29ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNSBib3JkZXItdG9wIGJvcmRlci1ib3R0b20gcHktM1wiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cInNvY2lhbC1tZWRpYS1ibG9nLXBhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wb3N0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNZW51XCJcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQudGFyZ2V0LmNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC50YXJnZXQuY2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duTWVudUxpbmtcIlxuICAgICAgICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVsbGlwc2lzLXZcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51TGlua1wiPlxuICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icy10b2dnbGU9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYnMtdGFyZ2V0PVwiI2V4YW1wbGVNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNoYXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTaGFyZSBQb3N0XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvc3Q/LnRhZ3M7IHRyYWNrQnk6IHRyYWNrQnlUYWdJZFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidGFnUG9zdCh0YWcpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFnUG9zdCh0YWcpXCI+XG4gICAgICAgICAgICAgICAge3sgdGFnLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPHVsIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTMgdmlld3NcIj5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8c3Bhbj57eyBwb3N0Py52aWV3IHx8IDAgfX0gdmlld3M8L3NwYW4+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGk+PGkgY2xhc3M9XCJmYXIgZmEtaGVhcnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLWNvbnRlbnQgZW5kIC0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gbW9kYWwgZm9yIHNoYXJlIGJ1dHRvbnMgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIlxuICAgICAgaWQ9XCJleGFtcGxlTW9kYWxcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJleGFtcGxlTW9kYWxMYWJlbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIiA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIlxuICAgICAgICAgICAgICBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+U2hhcmUgdGhlIHBvc3Q8L2g1PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCJcbiAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICA8c2hhcmUtYnV0dG9ucyB0aGVtZT1cIm1hdGVyaWFsLWRhcmtcIlxuICAgICAgICAgICAgICBzaG93PVwiN1wiPjwvc2hhcmUtYnV0dG9ucz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XG4gICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gcmVjZW50IHBvc3RzIC0tPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRlZC1wb3N0cyBtdC01XCI+XG4gICAgPHVsIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxoNT5SZWNlbnQgUmVzb3VyY2VzPC9oNT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGk+PGEgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnXVwiPlNlZSBBbGw8L2E+PC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGNvbC1tZC02IGNvbC1sZy00IGNvbC14cy0xMiBtYi0yXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHJlY2VudFBvc3Qgb2YgcmVjZW50UG9zdHM7IHRyYWNrQnk6IHRyYWNrQnlSZWNlbnRQb3N0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNlbnQtcG9zdFwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvcmVzb3VyY2VzL3ZpZXcnLCByZWNlbnRQb3N0LnNsdWddXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2ctaW1hZ2VcIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJyZWNlbnRQb3N0LnBpY3R1cmUudXJsXCJcbiAgICAgICAgICAgICAgYWx0PVwiUmVzb3VyY2VcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNSBjbGFzcz1cInB0LTQgYmxvZy10aXRsZSBwcy0zIHBlLTNcIj57eyByZWNlbnRQb3N0Py50aXRsZSB9fTwvaDU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2ctdmlldyBwdC0zIHBzLTMgcGUtM1wiPlxuICAgICAgICAgICAgPHA+e3sgcmVjZW50UG9zdC52aWV3ICE9PSBudWxsID8gcmVjZW50UG9zdC52aWV3IDogJzAnIH19IFZpZXc8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicm93IG10LTUgbWItNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgIDxmb3JtIGNsYXNzPVwiY29tbWVudHMtc2VjXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJjb21tZW50Rm9ybVwiXG4gICAgICAgIChuZ1N1Ym1pdCk9XCJvbkNvbW1lbnQoKVwiXG4gICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluOyBlbHNlIHVzZXJMb2dnZWRPdXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwdC00XCI+XG4gICAgICAgICAgPCEtLSBDb21tZW50IE1hc3NhZ2UgLS0+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBsYWJlbD1cIldyaXRlIGEgcmVzcG9uc2VcIlxuICAgICAgICAgICAgbmFtZT1cImNvbW1lbnRcIlxuICAgICAgICAgICAgZXJyb3JNc2c9XCJQbGVhc2UgZW50ZXIgY29tbWVudFwiPlxuICAgICAgICAgICAgPHRleHRhcmVhIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBtdC00XCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgICAgICAgICAge3sgJ0J1dHRvbi5TdWJtaXQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgICAgPG5nLXRlbXBsYXRlICN1c2VyTG9nZ2VkT3V0PlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHB0LTMgcGItMyB1c2VyLW5vdC1sb2dnZWQtaW5cIj5cbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9sb2dpbiddXCI+TG9nIGluPC9hPlxuICAgICAgICAgIHRvIGxlYXZlIGEgY29tbWVudCFcbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbXQtNSBtYi01XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiXG4gICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBwb3N0Q29tbWVudHM7IHRyYWNrQnk6IHRyYWNrQnlDb21tZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1wb3N0IG10LTJcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImNvbW1lbnQ/LnVzZXI/LmF2YXRhclwiXG4gICAgICAgICAgW3NyY109XCJjb21tZW50LnVzZXI/LmF2YXRhclswXT8udXJsXCJcbiAgICAgICAgICBhbHQ9XCJhdmF0YXJcIlxuICAgICAgICAgIHdpZHRoPVwiNDVcIlxuICAgICAgICAgIGhlaWdodD1cIjQ1XCJcbiAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIG1lLTMgbWItMlwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9pY29ucy9tYWxlLnBuZycpXCIgLz5cbiAgICAgICAgPGltZyAqbmdJZj1cIiFjb21tZW50Py51c2VyPy5hdmF0YXJcIlxuICAgICAgICAgIGFsdD1cImF2YXRhclwiXG4gICAgICAgICAgd2lkdGg9XCI0NVwiXG4gICAgICAgICAgaGVpZ2h0PVwiNDVcIlxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgbWUtMyBtYi0yXCJcbiAgICAgICAgICBzcmM9XCJhc3NldHMvaW1nL2ljb25zL21hbGUucG5nXCIgLz5cbiAgICAgICAgPHNtYWxsPnt7IGNvbW1lbnQudXNlcj8uZmlyc3RfbmFtZSA/IGNvbW1lbnQudXNlcj8uZmlyc3RfbmFtZSA6ICcnIH19XG4gICAgICAgICAge3sgY29tbWVudC51c2VyPy5sYXN0X25hbWUgPyBjb21tZW50LnVzZXI/Lmxhc3RfbmFtZSA6ICcnIH19XG4gICAgICAgIDwvc21hbGw+XG4gICAgICAgIDxwPnt7IGNvbW1lbnQuY29tbWVudCB9fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWVuZCBjb21tZW50LWRhdGVcIj57eyBjb21tZW50LmNyZWF0ZWRfYXQgfCBkYXRlOiAnZGQvTU0veXl5eScgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Resource } from '@posiwise/common-utilities';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class ResourceCardListComponent {
|
|
4
|
-
posts: Resource[];
|
|
5
|
-
postHeader: string;
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceCardListComponent, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceCardListComponent, "pw-resource-card-list", never, { "posts": { "alias": "posts"; "required": false; }; "postHeader": { "alias": "postHeader"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { UntypedFormGroup } from '@angular/forms';
|
|
3
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
|
-
import { AuthService, CustomToastService } from '@posiwise/common-services';
|
|
6
|
-
import { RecentPost, Resource, ResourceComment, User } from '@posiwise/common-utilities';
|
|
7
|
-
import { ResourceService } from '../../../resource.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export declare class ResourceReadComponent extends AppBaseComponent implements OnInit, OnDestroy {
|
|
10
|
-
private readonly resourceService;
|
|
11
|
-
private readonly toastr;
|
|
12
|
-
private readonly authService;
|
|
13
|
-
private readonly sanitizer;
|
|
14
|
-
post: Resource;
|
|
15
|
-
user: User;
|
|
16
|
-
recentPosts: RecentPost[];
|
|
17
|
-
postComments: ResourceComment[];
|
|
18
|
-
slug: string;
|
|
19
|
-
masterSubscriptionId: number;
|
|
20
|
-
commentForm: UntypedFormGroup;
|
|
21
|
-
userLoggedIn: boolean;
|
|
22
|
-
buttonBusy: boolean;
|
|
23
|
-
constructor(resourceService: ResourceService, toastr: CustomToastService, authService: AuthService, injector: Injector, sanitizer: DomSanitizer);
|
|
24
|
-
ngOnInit(): void;
|
|
25
|
-
readingTime(text: string): string;
|
|
26
|
-
handleImageError(event: Event, fallbackPath: any): void;
|
|
27
|
-
private getBlogItem;
|
|
28
|
-
private getPosts;
|
|
29
|
-
onComment(): void;
|
|
30
|
-
tagPost(selectedTag: any): void;
|
|
31
|
-
trackByTagId(_index: number, item: {
|
|
32
|
-
id: number;
|
|
33
|
-
}): number;
|
|
34
|
-
trackByRecentPost(_index: number, item: {
|
|
35
|
-
id: number;
|
|
36
|
-
}): number;
|
|
37
|
-
trackByComment(_index: number, item: {
|
|
38
|
-
id: number;
|
|
39
|
-
}): number;
|
|
40
|
-
ngOnDestroy(): void;
|
|
41
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceReadComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResourceReadComponent, "pw-post-read", never, {}, {}, never, never, false, never>;
|
|
43
|
-
}
|