@posiwise/resource-module 0.0.164 → 0.0.165

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.
Files changed (107) hide show
  1. package/fesm2022/{posiwise-resource-module-base-top-banner.component-BFtr7G1c.mjs → posiwise-resource-module-base-top-banner.component-qdYdb5Le.mjs} +7 -6
  2. package/fesm2022/posiwise-resource-module-base-top-banner.component-qdYdb5Le.mjs.map +1 -0
  3. package/fesm2022/posiwise-resource-module-posiwise-resource-module-DlOc6owW.mjs +1795 -0
  4. package/fesm2022/posiwise-resource-module-posiwise-resource-module-DlOc6owW.mjs.map +1 -0
  5. package/fesm2022/posiwise-resource-module-resource-blogs.module-BY02aMCz.mjs +69 -0
  6. package/fesm2022/posiwise-resource-module-resource-blogs.module-BY02aMCz.mjs.map +1 -0
  7. package/fesm2022/posiwise-resource-module-resource-case-studies.module-CP7-pHth.mjs +133 -0
  8. package/fesm2022/posiwise-resource-module-resource-case-studies.module-CP7-pHth.mjs.map +1 -0
  9. package/fesm2022/posiwise-resource-module-resource-events.module-CXAhiCS6.mjs +228 -0
  10. package/fesm2022/posiwise-resource-module-resource-events.module-CXAhiCS6.mjs.map +1 -0
  11. package/fesm2022/posiwise-resource-module-resource-hub.module-a6qHwXRb.mjs +233 -0
  12. package/fesm2022/posiwise-resource-module-resource-hub.module-a6qHwXRb.mjs.map +1 -0
  13. package/fesm2022/posiwise-resource-module-resource-integrations.module-WfJfGko9.mjs +274 -0
  14. package/fesm2022/posiwise-resource-module-resource-integrations.module-WfJfGko9.mjs.map +1 -0
  15. package/fesm2022/posiwise-resource-module-resource-post.module-DvTdeeQt.mjs +304 -0
  16. package/fesm2022/posiwise-resource-module-resource-post.module-DvTdeeQt.mjs.map +1 -0
  17. package/fesm2022/posiwise-resource-module-resource-release-notes.module-CxAh59AL.mjs +104 -0
  18. package/fesm2022/posiwise-resource-module-resource-release-notes.module-CxAh59AL.mjs.map +1 -0
  19. package/fesm2022/posiwise-resource-module-resource-root.module-BHGO5PqT.mjs +393 -0
  20. package/fesm2022/posiwise-resource-module-resource-root.module-BHGO5PqT.mjs.map +1 -0
  21. package/fesm2022/posiwise-resource-module-resource-videos.module-BJxrv9JZ.mjs +69 -0
  22. package/fesm2022/posiwise-resource-module-resource-videos.module-BJxrv9JZ.mjs.map +1 -0
  23. package/fesm2022/posiwise-resource-module-resource-white-papers.module-iWQ29ue6.mjs +70 -0
  24. package/fesm2022/posiwise-resource-module-resource-white-papers.module-iWQ29ue6.mjs.map +1 -0
  25. package/fesm2022/posiwise-resource-module.mjs +1 -31
  26. package/fesm2022/posiwise-resource-module.mjs.map +1 -1
  27. package/lib/public/shared/resource-shared.module.d.ts +1 -1
  28. package/package.json +4 -6
  29. package/esm2022/index.mjs +0 -25
  30. package/esm2022/lib/public/components/base/base-resource.component.mjs +0 -144
  31. package/esm2022/lib/public/components/base/base-top-banner.component.mjs +0 -111
  32. package/esm2022/lib/public/components/reslease-note-card/release-note-card.component.mjs +0 -174
  33. package/esm2022/lib/public/components/resource-blogs/resource-blog-top-banner/resource-blog-top-banner.component.mjs +0 -27
  34. package/esm2022/lib/public/components/resource-blogs/resource-blog.component.mjs +0 -27
  35. package/esm2022/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.mjs +0 -108
  36. package/esm2022/lib/public/components/resource-case-studies/resource-case-studies.component.mjs +0 -106
  37. package/esm2022/lib/public/components/resource-company-card/resource-company-card.component.mjs +0 -88
  38. package/esm2022/lib/public/components/resource-contact-us/resource-contact-us.module.mjs +0 -16
  39. package/esm2022/lib/public/components/resource-edit-card/resource-edit-card.component.mjs +0 -230
  40. package/esm2022/lib/public/components/resource-edit-card-lazy/resource-edit-card-lazy.component.mjs +0 -75
  41. package/esm2022/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.mjs +0 -27
  42. package/esm2022/lib/public/components/resource-integration/resource-integration.component.mjs +0 -237
  43. package/esm2022/lib/public/components/resource-post/related-resources/related-resources.component.mjs +0 -124
  44. package/esm2022/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.mjs +0 -107
  45. package/esm2022/lib/public/components/resource-post/resource-post-details/resource-post-details.component.mjs +0 -128
  46. package/esm2022/lib/public/components/resource-post/resource-post.component.mjs +0 -39
  47. package/esm2022/lib/public/components/resource-release-notes/resource-release-notes-top-banner/resource-release-notes-top-banner.component.mjs +0 -27
  48. package/esm2022/lib/public/components/resource-release-notes/resource-release-notes.component.mjs +0 -59
  49. package/esm2022/lib/public/components/resource-top-banner-edit/resource-top-banner-edit.component.mjs +0 -106
  50. package/esm2022/lib/public/components/resource-vault/resource-vault.component.mjs +0 -76
  51. package/esm2022/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.mjs +0 -130
  52. package/esm2022/lib/public/components/resource-videos/resource-videos-top-banner/resource-videos-top-banner.component.mjs +0 -27
  53. package/esm2022/lib/public/components/resource-videos/resource-videos.component.mjs +0 -27
  54. package/esm2022/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.mjs +0 -101
  55. package/esm2022/lib/public/components/resource-webinars/resource-webinars.component.mjs +0 -115
  56. package/esm2022/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.mjs +0 -148
  57. package/esm2022/lib/public/components/resources/resource-tags/resource-tags.component.mjs +0 -84
  58. package/esm2022/lib/public/components/resources/resources.component.mjs +0 -84
  59. package/esm2022/lib/public/components/resources/vault-section/vault-section.component.mjs +0 -160
  60. package/esm2022/lib/public/components/resources-hub/resources-hub.component.mjs +0 -208
  61. package/esm2022/lib/public/components/testimonial-card/testimonial-card.component.mjs +0 -86
  62. package/esm2022/lib/public/components/white-papers/white-papers-top-banner/white-papers-top-banner.component.mjs +0 -27
  63. package/esm2022/lib/public/components/white-papers/white-papers.component.mjs +0 -27
  64. package/esm2022/lib/public/modules/blogs/resource-blogs.module.mjs +0 -31
  65. package/esm2022/lib/public/modules/case-studies/resource-case-studies.module.mjs +0 -36
  66. package/esm2022/lib/public/modules/events/resource-events.module.mjs +0 -31
  67. package/esm2022/lib/public/modules/hub/resource-hub.module.mjs +0 -30
  68. package/esm2022/lib/public/modules/integrations/resource-integrations.module.mjs +0 -31
  69. package/esm2022/lib/public/modules/post/resource-post.module.mjs +0 -33
  70. package/esm2022/lib/public/modules/release-notes/resource-release-notes.module.mjs +0 -31
  71. package/esm2022/lib/public/modules/root/resource-root-shared.module.mjs +0 -61
  72. package/esm2022/lib/public/modules/root/resource-root.module.mjs +0 -33
  73. package/esm2022/lib/public/modules/videos/resource-videos.module.mjs +0 -31
  74. package/esm2022/lib/public/modules/white-papers/resource-white-papers.module.mjs +0 -32
  75. package/esm2022/lib/public/resource-public.module.mjs +0 -18
  76. package/esm2022/lib/public/resource-public.routing.module.mjs +0 -61
  77. package/esm2022/lib/public/shared/resource-cards.module.mjs +0 -121
  78. package/esm2022/lib/public/shared/resource-edit.module.mjs +0 -64
  79. package/esm2022/lib/public/shared/resource-shared.module.mjs +0 -128
  80. package/esm2022/lib/resource.module.mjs +0 -15
  81. package/esm2022/lib/resource.service.mjs +0 -79
  82. package/esm2022/lib/shared/models/resource.model.mjs +0 -12
  83. package/esm2022/lib/shared/resource-modal.interface.mjs +0 -2
  84. package/esm2022/posiwise-resource-module.mjs +0 -5
  85. package/fesm2022/posiwise-resource-module-base-top-banner.component-BFtr7G1c.mjs.map +0 -1
  86. package/fesm2022/posiwise-resource-module-posiwise-resource-module-CSoAgDvz.mjs +0 -1795
  87. package/fesm2022/posiwise-resource-module-posiwise-resource-module-CSoAgDvz.mjs.map +0 -1
  88. package/fesm2022/posiwise-resource-module-resource-blogs.module-Bj-Zi-hs.mjs +0 -91
  89. package/fesm2022/posiwise-resource-module-resource-blogs.module-Bj-Zi-hs.mjs.map +0 -1
  90. package/fesm2022/posiwise-resource-module-resource-case-studies.module-C8dIufFw.mjs +0 -155
  91. package/fesm2022/posiwise-resource-module-resource-case-studies.module-C8dIufFw.mjs.map +0 -1
  92. package/fesm2022/posiwise-resource-module-resource-events.module-DyZv40A6.mjs +0 -245
  93. package/fesm2022/posiwise-resource-module-resource-events.module-DyZv40A6.mjs.map +0 -1
  94. package/fesm2022/posiwise-resource-module-resource-hub.module-Bxxsz8FP.mjs +0 -249
  95. package/fesm2022/posiwise-resource-module-resource-hub.module-Bxxsz8FP.mjs.map +0 -1
  96. package/fesm2022/posiwise-resource-module-resource-integrations.module-D8bz630p.mjs +0 -287
  97. package/fesm2022/posiwise-resource-module-resource-integrations.module-D8bz630p.mjs.map +0 -1
  98. package/fesm2022/posiwise-resource-module-resource-post.module-DVxk5PGg.mjs +0 -318
  99. package/fesm2022/posiwise-resource-module-resource-post.module-DVxk5PGg.mjs.map +0 -1
  100. package/fesm2022/posiwise-resource-module-resource-release-notes.module-yWTEtDrA.mjs +0 -124
  101. package/fesm2022/posiwise-resource-module-resource-release-notes.module-yWTEtDrA.mjs.map +0 -1
  102. package/fesm2022/posiwise-resource-module-resource-root.module-B321gKmv.mjs +0 -408
  103. package/fesm2022/posiwise-resource-module-resource-root.module-B321gKmv.mjs.map +0 -1
  104. package/fesm2022/posiwise-resource-module-resource-videos.module-dcXYpdg1.mjs +0 -91
  105. package/fesm2022/posiwise-resource-module-resource-videos.module-dcXYpdg1.mjs.map +0 -1
  106. package/fesm2022/posiwise-resource-module-resource-white-papers.module-BIPcEt7S.mjs +0 -92
  107. package/fesm2022/posiwise-resource-module-resource-white-papers.module-BIPcEt7S.mjs.map +0 -1
@@ -1,124 +0,0 @@
1
- import { Component, Injector } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { AppBaseComponent } from '@posiwise/app-base-component';
4
- import { AuthService, CustomToastService, TagService } 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 "@angular/platform-browser";
11
- import * as i3 from "@posiwise/common-services";
12
- import * as i4 from "./resource-cards/resource-cards.component";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "@angular/forms";
15
- import * as i7 from "@angular/router";
16
- import * as i8 from "@posiwise/directives";
17
- import * as i9 from "@posiwise/alpha-module";
18
- import * as i10 from "primeng/inputtextarea";
19
- import * as i11 from "@jsverse/transloco";
20
- export class RelatedResourcesComponent extends AppBaseComponent {
21
- constructor(resourceService, injector, sanitizer, tagService, authService, toastr) {
22
- super(injector);
23
- this.resourceService = resourceService;
24
- this.sanitizer = sanitizer;
25
- this.tagService = tagService;
26
- this.authService = authService;
27
- this.toastr = toastr;
28
- this.resourceCards = [
29
- {
30
- title: 'BLOG: Here’s why you should QA your distributor invoices',
31
- image: '/assets/img/resource/resource-qa.png',
32
- alt: 'QA distributor invoices',
33
- url: '/resources/view/here-s-why-you-should-be-seeking-independent-qa-of-all-distributor-inv'
34
- },
35
- {
36
- title: 'BLOG: 4 instant hacks to uplift your MSP’s monthly billing',
37
- image: '/assets/img/resource/resource-hacks.png',
38
- alt: 'Monthly billing hacks',
39
- url: '/resources/view/4-instant-hacks-to-uplift-your-msp-s-monthly-billing'
40
- },
41
- {
42
- title: 'BLOG: The trivial detail that will either future-proof or sabotage your PSA.',
43
- image: '/assets/img/resource/resource-psa.png',
44
- alt: 'PSA future-proof',
45
- url: '/resources/view/the-trivial-detail-that-will-either-future-proof-or-sabotage-your-psa'
46
- }
47
- ];
48
- this.postComments = [];
49
- this.demoLinks = this.appConfig?.pages_config?.book_demo?.items;
50
- this.linkedInUrl = this.appConfig?.social?.linkedin_url;
51
- this.company_email = this.appConfig.company.email;
52
- this.commentForm = ResourceBlog.getResourcePostsForm();
53
- }
54
- ngOnInit() {
55
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
56
- this.route.params.subscribe(params => {
57
- this.slug = params['slug'] ?? '';
58
- this.getBlogItem(this.slug);
59
- });
60
- this.authService.getToken$().subscribe(res => {
61
- this.userLoggedIn = !!res;
62
- if (this.userLoggedIn) {
63
- this.localStorage.getItem$('product').subscribe(res => {
64
- const data = res ? JSON.parse(res) : null;
65
- this.subscriptionId = data?.subscriptionId;
66
- });
67
- this.userService.getUserInfo().subscribe(data => {
68
- this.user = data;
69
- this.getPostTags();
70
- });
71
- }
72
- else {
73
- this.getPostTags();
74
- }
75
- });
76
- }
77
- get hasValidDemoLinks() {
78
- return (Array.isArray(this.demoLinks) && this.demoLinks.some(link => link?.title ?? link?.url));
79
- }
80
- getPostTags() {
81
- this.tagService
82
- .getTagsByType('post_categories', {}, this.getEffectiveSubscriptionId())
83
- .subscribe(response => {
84
- this.blogPostTag = response.tags.find(tag => tag.name === 'Blog Posts');
85
- });
86
- }
87
- getBlogItem(slug) {
88
- this.resourceService.getPostBySlug(slug).subscribe(response => {
89
- let blogBody;
90
- if (response?.body) {
91
- blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);
92
- }
93
- const date = new Date(response?.when);
94
- const formatted = date.toISOString().split('T')[0];
95
- this.postComments = response.entity_comments;
96
- this.post = { ...response, body: blogBody, when: formatted };
97
- });
98
- }
99
- onComment() {
100
- const data = { ...this.commentForm.value };
101
- data.related_entity_id = this.post?.id;
102
- data.related_entity_type = 'Post';
103
- data.user_id = this.user?.id;
104
- this.resourceService.postComments(data).subscribe(() => {
105
- this.getBlogItem(this.slug);
106
- this.commentForm.reset();
107
- this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));
108
- });
109
- }
110
- trackByComment(_index, item) {
111
- return item.id;
112
- }
113
- /** Helper method to get effective subscription ID */
114
- getEffectiveSubscriptionId() {
115
- return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
116
- }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RelatedResourcesComponent, deps: [{ token: i1.ResourceService }, { token: i0.Injector }, { token: i2.DomSanitizer }, { token: i3.TagService }, { token: i3.AuthService }, { token: i3.CustomToastService }], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: RelatedResourcesComponent, selector: "pw-related-resources", usesInheritance: true, ngImport: i0, template: "\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\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 <section class=\"resource-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm no-border p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">\uD83D\uDCAC Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\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 text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\" *ngIf=\"postComments.length > 0\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card no-border shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"resource-divider\" />\n</section>\n\n<section class=\"resource-book-section\" *ngIf=\"hasValidDemoLinks\">\n <div class=\"container\">\n\n <p class=\"resource-contact\">\n Any questions, get in touch <a href=\"mailto:{{ company_email }}\">here</a>,\n <a [href]=\"linkedInUrl\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-book-a-demo>\n <hr class=\"resource-divider\" />\n</section>\n\n\n<pw-resource-cards *ngIf=\"blogPostTag?.tag_category_id\" [tag]=\"blogPostTag\" [categoryId]=\"blogPostTag?.tag_category_id\" [resourceTitle]=\"blogPostTag?.title\" [isHeaderVisible]=\"true\" resourceLink=\"/resources/blogs\" [isRelated]=\"true\" [resourceTitle]=\"'Other resources you may be interested in:'\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-cards>\n", 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!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .vault-card{width:100%!important}.resource-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){.resource-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}.resource-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.resource-book-section .container{max-width:850px;margin:0 auto;padding:0 2rem!important;text-align:left}.resource-book-section .resource-contact{line-height:1.6;font-size:1.5rem}.resource-book-section .resource-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.resource-book-section .resource-contact a:hover{color:var(--first)!important}.resource-offer-section{background:#fff;padding-top:2rem}.resource-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.resource-offer-section .resource-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.resource-offer-section .resource-title strong{font-weight:700}.resource-offer-section .resource-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.resource-offer-section .resource-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.resource-offer-section .resource-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.resource-offer-section .resource-signup{margin-bottom:2.5rem}.resource-offer-section .resource-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.resource-offer-section .resource-book-section{padding-top:2rem!important}.resource-offer-section .container{text-align:left}.resource-offer-section .resource-title{font-size:1.5rem}.resource-offer-section .resource-description,.resource-offer-section .resource-offer-list,.resource-offer-section .resource-signup,.resource-offer-section .signup-link,.resource-offer-section .resource-contact,.resource-offer-section .resource-offer-list p{font-size:1.2rem!important}}.resource-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){.resource-book-section{padding-top:2rem!important}.resource-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: "component", type: i4.ResourceCardComponent, selector: "pw-resource-cards", inputs: ["categoryId", "isHeaderVisible", "isRelated", "resourceTitle", "postSlice", "header", "tag", "resourceLink", "user", "userLoggedIn"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "component", type: i9.HubSpotMeetingsComponent, selector: "pw-book-a-demo", inputs: ["isBlog", "user", "userLoggedIn"] }, { kind: "directive", type: i10.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i11.TranslocoPipe, name: "transloco" }] }); }
119
- }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RelatedResourcesComponent, decorators: [{
121
- type: Component,
122
- args: [{ selector: 'pw-related-resources', template: "\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\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 <section class=\"resource-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm no-border p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">\uD83D\uDCAC Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\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 text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\" *ngIf=\"postComments.length > 0\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card no-border shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"resource-divider\" />\n</section>\n\n<section class=\"resource-book-section\" *ngIf=\"hasValidDemoLinks\">\n <div class=\"container\">\n\n <p class=\"resource-contact\">\n Any questions, get in touch <a href=\"mailto:{{ company_email }}\">here</a>,\n <a [href]=\"linkedInUrl\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-book-a-demo>\n <hr class=\"resource-divider\" />\n</section>\n\n\n<pw-resource-cards *ngIf=\"blogPostTag?.tag_category_id\" [tag]=\"blogPostTag\" [categoryId]=\"blogPostTag?.tag_category_id\" [resourceTitle]=\"blogPostTag?.title\" [isHeaderVisible]=\"true\" resourceLink=\"/resources/blogs\" [isRelated]=\"true\" [resourceTitle]=\"'Other resources you may be interested in:'\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-cards>\n", 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!important}}@media (width >= 768px) and (width <= 1200px){.container{padding:1rem 3rem!important}}@media (width <= 1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .vault-card{width:100%!important}.resource-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){.resource-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}.resource-book-section{background:#fff;padding-top:7rem;padding-bottom:0}.resource-book-section .container{max-width:850px;margin:0 auto;padding:0 2rem!important;text-align:left}.resource-book-section .resource-contact{line-height:1.6;font-size:1.5rem}.resource-book-section .resource-contact a{text-decoration:underline;color:#000;margin:0 .2rem}.resource-book-section .resource-contact a:hover{color:var(--first)!important}.resource-offer-section{background:#fff;padding-top:2rem}.resource-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.resource-offer-section .resource-title{font-size:2rem;font-weight:700;color:#000;margin-bottom:.25em!important}.resource-offer-section .resource-title strong{font-weight:700}.resource-offer-section .resource-description{font-size:1.5rem;line-height:1.8rem;color:#333;margin-bottom:1.5rem}.resource-offer-section .resource-offer-list{font-size:1.1rem;line-height:1.5rem;margin-bottom:2.5rem;margin-top:2.5rem}.resource-offer-section .resource-offer-list p{font-size:1.5rem;margin:.5rem 0;font-weight:400}.resource-offer-section .resource-signup{margin-bottom:2.5rem}.resource-offer-section .resource-signup .signup-link{font-size:1.5rem;font-weight:400;text-decoration:underline;color:#000}@media (width <= 768px){.resource-offer-section .resource-book-section{padding-top:2rem!important}.resource-offer-section .container{text-align:left}.resource-offer-section .resource-title{font-size:1.5rem}.resource-offer-section .resource-description,.resource-offer-section .resource-offer-list,.resource-offer-section .resource-signup,.resource-offer-section .signup-link,.resource-offer-section .resource-contact,.resource-offer-section .resource-offer-list p{font-size:1.2rem!important}}.resource-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){.resource-book-section{padding-top:2rem!important}.resource-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"] }]
123
- }], ctorParameters: () => [{ type: i1.ResourceService }, { type: i0.Injector }, { type: i2.DomSanitizer }, { type: i3.TagService }, { type: i3.AuthService }, { type: i3.CustomToastService }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1wb3N0L3JlbGF0ZWQtcmVzb3VyY2VzL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZWxhdGVkLXJlc291cmNlcy9yZWxhdGVkLXJlc291cmNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU94RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsZ0JBQWdCO0lBd0MzRCxZQUNxQixlQUFnQyxFQUNqRCxRQUFrQixFQUNELFNBQXVCLEVBQ3ZCLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLE1BQTBCO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVBDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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LFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFvQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELHFEQUFxRDtJQUM3QywwQkFBMEI7UUFDOUIsT0FBTyxhQUFhLENBQUMsMEJBQTBCLENBQzNDLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUM1QixDQUFDO0lBQ04sQ0FBQzsrR0E5SFEseUJBQXlCO21HQUF6Qix5QkFBeUIsbUZDaEJ0Qyx3aUlBb0dBOzs0RkRwRmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNJLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBDdXN0b21Ub2FzdFNlcnZpY2UsIFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNvdXJjZUJsb2cgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3Jlc291cmNlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZWxhdGVkLXJlc291cmNlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlbGF0ZWQtcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWxhdGVkLXJlc291cmNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlbGF0ZWRSZXNvdXJjZXNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICByZXNvdXJjZUNhcmRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ0JMT0c6IEhlcmXigJlzIHdoeSB5b3Ugc2hvdWxkIFFBIHlvdXIgZGlzdHJpYnV0b3IgaW52b2ljZXMnLFxuICAgICAgICAgICAgaW1hZ2U6ICcvYXNzZXRzL2ltZy9yZXNvdXJjZS9yZXNvdXJjZS1xYS5wbmcnLFxuICAgICAgICAgICAgYWx0OiAnUUEgZGlzdHJpYnV0b3IgaW52b2ljZXMnLFxuICAgICAgICAgICAgdXJsOiAnL3Jlc291cmNlcy92aWV3L2hlcmUtcy13aHkteW91LXNob3VsZC1iZS1zZWVraW5nLWluZGVwZW5kZW50LXFhLW9mLWFsbC1kaXN0cmlidXRvci1pbnYnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQkxPRzogNCBpbnN0YW50IGhhY2tzIHRvIHVwbGlmdCB5b3VyIE1TUOKAmXMgbW9udGhseSBiaWxsaW5nJyxcbiAgICAgICAgICAgIGltYWdlOiAnL2Fzc2V0cy9pbWcvcmVzb3VyY2UvcmVzb3VyY2UtaGFja3MucG5nJyxcbiAgICAgICAgICAgIGFsdDogJ01vbnRobHkgYmlsbGluZyBoYWNrcycsXG4gICAgICAgICAgICB1cmw6ICcvcmVzb3VyY2VzL3ZpZXcvNC1pbnN0YW50LWhhY2tzLXRvLXVwbGlmdC15b3VyLW1zcC1zLW1vbnRobHktYmlsbGluZydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdCTE9HOiBUaGUgdHJpdmlhbCBkZXRhaWwgdGhhdCB3aWxsIGVpdGhlciBmdXR1cmUtcHJvb2Ygb3Igc2Fib3RhZ2UgeW91ciBQU0EuJyxcbiAgICAgICAgICAgIGltYWdlOiAnL2Fzc2V0cy9pbWcvcmVzb3VyY2UvcmVzb3VyY2UtcHNhLnBuZycsXG4gICAgICAgICAgICBhbHQ6ICdQU0EgZnV0dXJlLXByb29mJyxcbiAgICAgICAgICAgIHVybDogJy9yZXNvdXJjZXMvdmlldy90aGUtdHJpdmlhbC1kZXRhaWwtdGhhdC13aWxsLWVpdGhlci1mdXR1cmUtcHJvb2Ytb3Itc2Fib3RhZ2UteW91ci1wc2EnXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcG9zdDtcbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZDtcbiAgICBzbHVnO1xuXG4gICAgcG9zdENvbW1lbnRzID0gW107XG4gICAgY29tbWVudEZvcm07XG5cbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgICBkZW1vTGlua3MgPSB0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8/Lml0ZW1zO1xuXG4gICAgdXNlcjogVXNlcjtcbiAgICBibG9nUG9zdFRhZztcbiAgICBzdWJzY3JpcHRpb25JZDtcbiAgICBpc01hc3RlclN1YnNjcmlwdGlvbjtcbiAgICBsaW5rZWRJblVybCA9IHRoaXMuYXBwQ29uZmlnPy5zb2NpYWw/LmxpbmtlZGluX3VybDtcbiAgICBjb21wYW55X2VtYWlsID0gdGhpcy5hcHBDb25maWcuY29tcGFueS5lbWFpbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlU2VydmljZTogUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmNvbW1lbnRGb3JtID0gUmVzb3VyY2VCbG9nLmdldFJlc291cmNlUG9zdHNGb3JtKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQgPSB0aGlzLmFwcENvbmZpZy5tYXN0ZXJfc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbl9pZDtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnNsdWcgPSBwYXJhbXNbJ3NsdWcnXSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuZ2V0QmxvZ0l0ZW0odGhpcy5zbHVnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4kKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/IEpTT04ucGFyc2UocmVzKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBkYXRhPy5zdWJzY3JpcHRpb25JZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UG9zdFRhZ3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0VGFncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgaGFzVmFsaWREZW1vTGlua3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMuZGVtb0xpbmtzKSAmJiB0aGlzLmRlbW9MaW5rcy5zb21lKGxpbmsgPT4gbGluaz8udGl0bGUgPz8gbGluaz8udXJsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdFRhZ3MoKSB7XG4gICAgICAgIHRoaXMudGFnU2VydmljZVxuICAgICAgICAgICAgLmdldFRhZ3NCeVR5cGUoJ3Bvc3RfY2F0ZWdvcmllcycsIHt9LCB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2dQb3N0VGFnID0gcmVzcG9uc2UudGFncy5maW5kKHRhZyA9PiB0YWcubmFtZSA9PT0gJ0Jsb2cgUG9zdHMnKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmxvZ0l0ZW0oc2x1Zzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFBvc3RCeVNsdWcoc2x1Zykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGxldCBibG9nQm9keTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uYm9keSkge1xuICAgICAgICAgICAgICAgIGJsb2dCb2R5ID0gSGVscGVyU2VydmljZS5zYW5pdGl6ZVF1aWxsQm9keShyZXNwb25zZS5ib2R5LCB0aGlzLnNhbml0aXplcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUocmVzcG9uc2U/LndoZW4pO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICAgICAgICB0aGlzLnBvc3RDb21tZW50cyA9IHJlc3BvbnNlLmVudGl0eV9jb21tZW50cztcbiAgICAgICAgICAgIHRoaXMucG9zdCA9IHsgLi4ucmVzcG9uc2UsIGJvZHk6IGJsb2dCb2R5LCB3aGVuOiBmb3JtYXR0ZWQgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db21tZW50KCkge1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmNvbW1lbnRGb3JtLnZhbHVlIH07XG4gICAgICAgIGRhdGEucmVsYXRlZF9lbnRpdHlfaWQgPSB0aGlzLnBvc3Q/LmlkO1xuICAgICAgICBkYXRhLnJlbGF0ZWRfZW50aXR5X3R5cGUgPSAnUG9zdCc7XG4gICAgICAgIGRhdGEudXNlcl9pZCA9IHRoaXMudXNlcj8uaWQ7XG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLnBvc3RDb21tZW50cyhkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRCbG9nSXRlbSh0aGlzLnNsdWcpO1xuICAgICAgICAgICAgdGhpcy5jb21tZW50Rm9ybS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnUmVzb3VyY2UuUG9zdHMuQ29tbWVudEFkZGVkJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5Q29tbWVudChfaW5kZXg6IG51bWJlciwgaXRlbTogeyBpZDogbnVtYmVyIH0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgLyoqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGVmZmVjdGl2ZSBzdWJzY3JpcHRpb24gSUQgKi9cbiAgICBwcml2YXRlIGdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBIZWxwZXJTZXJ2aWNlLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKFxuICAgICAgICAgICAgdGhpcy51c2VyLFxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgIHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWRcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJcblxuPHNlY3Rpb24gY2xhc3M9XCJyZXNvdXJjZS1ib2R5LXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJxbC1zbm93IGJvZHktcXVpbGxcIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwicWwtZWRpdG9yIGJvZHkgcG9zdC1ib2R5LXRleHRcIlxuICAgICAgW2lubmVySFRNTF09XCJwb3N0Py5ib2R5XCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8c2VjdGlvbiBjbGFzcz1cInJlc291cmNlLW9mZmVyLXNlY3Rpb25cIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC01IG1iLTQgcmVzcG9uc2Utcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgY2xhc3M9XCJwLWZsdWlkIG1iLTVcIlxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJjb21tZW50Rm9ybVwiXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwib25Db21tZW50KClcIlxuICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTG9nZ2VkSW47IGVsc2UgdXNlckxvZ2dlZE91dFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgc2hhZG93LXNtIG5vLWJvcmRlciBwLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbW1lbnRcIiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnIG1iLTQgY29tbWVudC1sYWJlbFwiPvCfkqwgTGVhdmUgYSBjb21tZW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCI2XCJcbiAgICAgICAgICAgICAgICAgIGF1dG9SZXNpemU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1pbnB1dHRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCdzIG9uIHlvdXIgbWluZD9cIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnRGb3JtLmdldCgnY29tbWVudCcpPy5pbnZhbGlkICYmIGNvbW1lbnRGb3JtLmdldCgnY29tbWVudCcpPy50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICAgID5QbGVhc2UgZW50ZXIgY29tbWVudDwvc21hbGxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgbXQtM1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaWduLWJ0biBzaWduLWhlYWRlci1idG5cIj5cbiAgICAgICAgICAgICAgICB7eyAnQnV0dG9uLlN1Ym1pdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlckxvZ2dlZE91dD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtMyBwYi0zIHVzZXItbm90LWxvZ2dlZC1pbiB0ZXh0LW11dGVkIHNoYWRvdy1zbSBtYi01XCI+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2xvZ2luJ11cIiBjbGFzcz1cInRleHQtcHJpbWFyeSBmdy1ib2xkXCI+TG9nIGluPC9hPiB0byBsZWF2ZSBhIGNvbW1lbnQhXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC01IGNvbW1lbnQtcm93XCIgKm5nSWY9XCJwb3N0Q29tbWVudHMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgcG9zdENvbW1lbnRzOyB0cmFja0J5OiB0cmFja0J5Q29tbWVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG5vLWJvcmRlciBzaGFkb3ctc20gcC0zIG1iLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tbWVudD8uYXV0aG9yPy5hdmF0YXI/LlswXT8udXJsIHx8ICdhc3NldHMvaW1nL2ljb25zL21hbGUucG5nJ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIG1lLTNcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQsICdhc3NldHMvaW1nL2ljb25zL21hbGUucG5nJylcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWRhcmtcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQudXNlcj8uZmlyc3RfbmFtZSB8fCAnJyB9fSB7eyBjb21tZW50LnVzZXI/Lmxhc3RfbmFtZSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTJcIj57eyBjb21tZW50LmNyZWF0ZWRfYXQgfCBkYXRlOiAnZGQgTU1NIHl5eXksIGg6bW0gYScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb21tZW50LmNvbW1lbnQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuXG4gIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxociBjbGFzcz1cInJlc291cmNlLWRpdmlkZXJcIiAvPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiBjbGFzcz1cInJlc291cmNlLWJvb2stc2VjdGlvblwiICpuZ0lmPVwiaGFzVmFsaWREZW1vTGlua3NcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuXG4gICAgPHAgY2xhc3M9XCJyZXNvdXJjZS1jb250YWN0XCI+XG4gICAgICBBbnkgcXVlc3Rpb25zLCBnZXQgaW4gdG91Y2ggPGEgaHJlZj1cIm1haWx0bzp7eyBjb21wYW55X2VtYWlsIH19XCI+aGVyZTwvYT4sXG4gICAgICA8YSBbaHJlZl09XCJsaW5rZWRJblVybFwiIHRhcmdldD1cIl9ibGFua1wiPmNvbm5lY3Qgb24gTGlua2VkSW48L2E+LCBvciBib29rIGEgbWVldGluZyBiZWxvdzpcbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8cHctYm9vay1hLWRlbW8gW2lzQmxvZ109XCJ0cnVlXCIgW3VzZXJdPVwidXNlclwiIFt1c2VyTG9nZ2VkSW5dPVwidXNlckxvZ2dlZEluXCI+PC9wdy1ib29rLWEtZGVtbz5cbiAgPGhyIGNsYXNzPVwicmVzb3VyY2UtZGl2aWRlclwiIC8+XG48L3NlY3Rpb24+XG5cblxuPHB3LXJlc291cmNlLWNhcmRzICpuZ0lmPVwiYmxvZ1Bvc3RUYWc/LnRhZ19jYXRlZ29yeV9pZFwiIFt0YWddPVwiYmxvZ1Bvc3RUYWdcIiBbY2F0ZWdvcnlJZF09XCJibG9nUG9zdFRhZz8udGFnX2NhdGVnb3J5X2lkXCIgW3Jlc291cmNlVGl0bGVdPVwiYmxvZ1Bvc3RUYWc/LnRpdGxlXCIgW2lzSGVhZGVyVmlzaWJsZV09XCJ0cnVlXCIgcmVzb3VyY2VMaW5rPVwiL3Jlc291cmNlcy9ibG9nc1wiIFtpc1JlbGF0ZWRdPVwidHJ1ZVwiIFtyZXNvdXJjZVRpdGxlXT1cIidPdGhlciByZXNvdXJjZXMgeW91IG1heSBiZSBpbnRlcmVzdGVkIGluOidcIiBbdXNlcl09XCJ1c2VyXCIgW3VzZXJMb2dnZWRJbl09XCJ1c2VyTG9nZ2VkSW5cIj48L3B3LXJlc291cmNlLWNhcmRzPlxuIl19
@@ -1,107 +0,0 @@
1
- import { Component, Injector, Input } from '@angular/core';
2
- import { AppBaseComponent } from '@posiwise/app-base-component';
3
- import { TagService } from '@posiwise/common-services';
4
- import { HelperService } from '@posiwise/helper-service';
5
- import { ResourceService } from '../../../../../resource.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../../../../resource.service";
8
- import * as i2 from "@posiwise/common-services";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "@angular/router";
11
- import * as i5 from "@angular/forms";
12
- import * as i6 from "@posiwise/shared-components";
13
- import * as i7 from "primeng/progressspinner";
14
- import * as i8 from "@posiwise/directives";
15
- import * as i9 from "../../../resource-edit-card-lazy/resource-edit-card-lazy.component";
16
- import * as i10 from "@jsverse/transloco";
17
- export class ResourceCardComponent extends AppBaseComponent {
18
- constructor(injector, resourceService, tagService) {
19
- super(injector);
20
- this.resourceService = resourceService;
21
- this.tagService = tagService;
22
- this.isHeaderVisible = true;
23
- this.isRelated = false;
24
- this.postSlice = false;
25
- this.isLoaded = false;
26
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
27
- this.posts = [];
28
- this.canEditResourcesValue = false;
29
- }
30
- ngOnInit() {
31
- if (this.userLoggedIn) {
32
- this.localStorage.getItem$('product').subscribe(res => {
33
- const data = res ? JSON.parse(res) : null;
34
- this.subscriptionId = data?.subscriptionId;
35
- });
36
- }
37
- this.getPosts(1, 10);
38
- }
39
- ngOnChanges(changes) {
40
- if (changes['user'] || changes['userLoggedIn']) {
41
- if (this.userLoggedIn && this.user) {
42
- this.updateCanEditResourcesValue();
43
- }
44
- }
45
- }
46
- getPosts(page, pageSize) {
47
- this.isLoaded = false;
48
- this.resourceService
49
- .getPublicPosts(this.getEffectiveSubscriptionId(), page, pageSize, '', this.categoryId)
50
- .subscribe(response => {
51
- const sortedPosts = (response.posts ?? [])
52
- .filter(post => post.showcase === true)
53
- .sort((a, b) => new Date(b.published_at).getTime() - new Date(a.published_at).getTime());
54
- this.posts = this.postSlice ? sortedPosts : [...sortedPosts].slice(0, 3);
55
- })
56
- .add(() => {
57
- this.isLoaded = true;
58
- });
59
- }
60
- toggleTagEditTitle() {
61
- this.isEditingTitle = true;
62
- this.editedTitle = this.resourceTitle;
63
- }
64
- saveEditedTitle() {
65
- HelperService.updateTagTitle(this.tag, this.editedTitle, this.tagService, this.getEffectiveSubscriptionId(), this.toast).subscribe(() => {
66
- this.resourceTitle = this.editedTitle;
67
- this.isEditingTitle = false;
68
- });
69
- }
70
- /** Helper method to get effective subscription ID */
71
- getEffectiveSubscriptionId() {
72
- return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
73
- }
74
- updateCanEditResourcesValue() {
75
- this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
76
- }
77
- canEditResources() {
78
- return this.canEditResourcesValue;
79
- }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCardComponent, deps: [{ token: i0.Injector }, { token: i1.ResourceService }, { token: i2.TagService }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceCardComponent, selector: "pw-resource-cards", inputs: { categoryId: "categoryId", isHeaderVisible: "isHeaderVisible", isRelated: "isRelated", resourceTitle: "resourceTitle", postSlice: "postSlice", header: "header", tag: "tag", resourceLink: "resourceLink", user: "user", userLoggedIn: "userLoggedIn" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\" *ngIf=\"isHeaderVisible\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n <ng-container *ngIf=\"!isEditingTitle; else editTitleBlock\">\n <span *ngIf=\"resourceTitle; else fallback\" [innerHTML]=\"resourceTitle\"></span>\n <ng-template #fallback>Our team\u2019s articles</ng-template>\n <i *ngIf=\"!isRelated && canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n </ng-container>\n\n <ng-template #editTitleBlock>\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n </ng-template>\n </h2>\n <a class=\"view-all\" [routerLink]=\"resourceLink\">VIEW ALL ></a>\n </div>\n\n <div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div *ngIf=\"posts.length === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\" *ngIf=\"posts.length !== 0 && isLoaded\">\n <div class=\"resource-blog-card p-4\" *ngFor=\"let post of posts\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, 100)\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title \"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Navigate to resource\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n /></a>\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n aria-label=\"Navigate to 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=\"resource-btn mt-3\" aria-label=\"Navigate to resource view\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\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 </div>\n </div>\n </div>\n </section>", styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media (width <= 1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media (width >= 991px){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}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 768px){.video-row{gap:3rem!important}}@media (max-width: 768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media (width <= 1200px){.container{padding:7rem 3rem 1rem!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i8.LazyImgDirective, selector: "img" }, { kind: "component", type: i9.ResourceEditCardLazyComponent, selector: "pw-resource-edit-card-lazy", inputs: ["id", "resourceData", "canEdit"], outputs: ["updated"] }, { kind: "pipe", type: i10.TranslocoPipe, name: "transloco" }] }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCardComponent, decorators: [{
84
- type: Component,
85
- args: [{ selector: 'pw-resource-cards', template: "<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\" *ngIf=\"isHeaderVisible\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n <ng-container *ngIf=\"!isEditingTitle; else editTitleBlock\">\n <span *ngIf=\"resourceTitle; else fallback\" [innerHTML]=\"resourceTitle\"></span>\n <ng-template #fallback>Our team\u2019s articles</ng-template>\n <i *ngIf=\"!isRelated && canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n </ng-container>\n\n <ng-template #editTitleBlock>\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n </ng-template>\n </h2>\n <a class=\"view-all\" [routerLink]=\"resourceLink\">VIEW ALL ></a>\n </div>\n\n <div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div *ngIf=\"posts.length === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\" *ngIf=\"posts.length !== 0 && isLoaded\">\n <div class=\"resource-blog-card p-4\" *ngFor=\"let post of posts\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"getPosts(1, 100)\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title \"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Navigate to resource\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n /></a>\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n aria-label=\"Navigate to 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=\"resource-btn mt-3\" aria-label=\"Navigate to resource view\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\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 </div>\n </div>\n </div>\n </section>", styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media (width <= 1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media (width >= 991px){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}}.vault-header{text-align:left}@media (width >= 768px) and (width <= 1200px){.container{padding:0 6rem!important}}@media (width <= 768px){.video-row{gap:3rem!important}}@media (max-width: 768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media (width <= 1200px){.container{padding:7rem 3rem 1rem!important}}\n"] }]
86
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ResourceService }, { type: i2.TagService }], propDecorators: { categoryId: [{
87
- type: Input
88
- }], isHeaderVisible: [{
89
- type: Input
90
- }], isRelated: [{
91
- type: Input
92
- }], resourceTitle: [{
93
- type: Input
94
- }], postSlice: [{
95
- type: Input
96
- }], header: [{
97
- type: Input
98
- }], tag: [{
99
- type: Input
100
- }], resourceLink: [{
101
- type: Input
102
- }], user: [{
103
- type: Input
104
- }], userLoggedIn: [{
105
- type: Input
106
- }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY2FyZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1tb2R1bGUvc3JjL2xpYi9wdWJsaWMvY29tcG9uZW50cy9yZXNvdXJjZS1wb3N0L3JlbGF0ZWQtcmVzb3VyY2VzL3Jlc291cmNlLWNhcmRzL3Jlc291cmNlLWNhcmRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZWxhdGVkLXJlc291cmNlcy9yZXNvdXJjZS1jYXJkcy9yZXNvdXJjZS1jYXJkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPbEUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQXdCdkQsWUFDSSxRQUFrQixFQUNELGVBQWdDLEVBQ2hDLFVBQXNCO1FBRXZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBekJsQyxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFP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RyxLQUFLLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscURBQXFEO0lBQzdDLDBCQUEwQjtRQUM5QixPQUFPLGFBQWEsQ0FBQywwQkFBMEIsQ0FDM0MsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDTixDQUFDO0lBQ08sMkJBQTJCO1FBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQ3ZELElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7K0dBeEdRLHFCQUFxQjttR0FBckIscUJBQXFCLHVXQ2RsQywrNUdBaUVZOzs0RkRuREMscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLG1CQUFtQjtvSUFLcEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZS1jYXJkcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlLWNhcmRzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vcmVzb3VyY2VzL3Jlc291cmNlcy1zaGFyZWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUNhcmRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGNhdGVnb3J5SWQhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNIZWFkZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpc1JlbGF0ZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZXNvdXJjZVRpdGxlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBvc3RTbGljZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGhlYWRlcjtcbiAgICBASW5wdXQoKSB0YWc7XG4gICAgQElucHV0KCkgcmVzb3VyY2VMaW5rO1xuICAgIEBJbnB1dCgpIHVzZXI6IFVzZXI7XG4gICAgQElucHV0KCkgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgICBzdWJzY3JpcHRpb25JZDtcbiAgICBtYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuXG4gICAgcG9zdHM6IFJlc291cmNlW10gPSBbXTtcblxuICAgIGlzRWRpdGluZ1RpdGxlOiBib29sZWFuO1xuICAgIGVkaXRlZFRpdGxlOiBzdHJpbmc7XG4gICAgaXNNYXN0ZXJTdWJzY3JpcHRpb247XG5cbiAgICBjYW5FZGl0UmVzb3VyY2VzVmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnU2VydmljZTogVGFnU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldFBvc3RzKDEsIDEwKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd1c2VyJ10gfHwgY2hhbmdlc1sndXNlckxvZ2dlZEluJ10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbiAmJiB0aGlzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbkVkaXRSZXNvdXJjZXNWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UG9zdHMocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQdWJsaWNQb3N0cyh0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCksIHBhZ2UsIHBhZ2VTaXplLCAnJywgdGhpcy5jYXRlZ29yeUlkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkUG9zdHMgPSAocmVzcG9uc2UucG9zdHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocG9zdCA9PiBwb3N0LnNob3djYXNlID09PSB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAuc29ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGIucHVibGlzaGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLnB1Ymxpc2hlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0cyA9IHRoaXMucG9zdFNsaWNlID8gc29ydGVkUG9zdHMgOiBbLi4uc29ydGVkUG9zdHNdLnNsaWNlKDAsIDMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlVGFnRWRpdFRpdGxlKCkge1xuICAgICAgICB0aGlzLmlzRWRpdGluZ1RpdGxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lZGl0ZWRUaXRsZSA9IHRoaXMucmVzb3VyY2VUaXRsZTtcbiAgICB9XG5cbiAgICBzYXZlRWRpdGVkVGl0bGUoKSB7XG4gICAgICAgIEhlbHBlclNlcnZpY2UudXBkYXRlVGFnVGl0bGUoXG4gICAgICAgICAgICB0aGlzLnRhZyxcbiAgICAgICAgICAgIHRoaXMuZWRpdGVkVGl0bGUsXG4gICAgICAgICAgICB0aGlzLnRhZ1NlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLmdldEVmZmVjdGl2ZVN1YnNjcmlwdGlvbklkKCksXG4gICAgICAgICAgICB0aGlzLnRvYXN0XG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VUaXRsZSA9IHRoaXMuZWRpdGVkVGl0bGU7XG4gICAgICAgICAgICB0aGlzLmlzRWRpdGluZ1RpdGxlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBlZmZlY3RpdmUgc3Vic2NyaXB0aW9uIElEICovXG4gICAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gSGVscGVyU2VydmljZS5nZXRFZmZlY3RpdmVTdWJzY3JpcHRpb25JZChcbiAgICAgICAgICAgIHRoaXMudXNlcixcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLm1hc3RlclN1YnNjcmlwdGlvbklkXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByaXZhdGUgdXBkYXRlQ2FuRWRpdFJlc291cmNlc1ZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbkVkaXRSZXNvdXJjZXNWYWx1ZSA9IEhlbHBlclNlcnZpY2UuY2FuRWRpdFJlc291cmNlcyhcbiAgICAgICAgICAgIHRoaXMudXNlcixcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluLFxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNhbkVkaXRSZXNvdXJjZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkVkaXRSZXNvdXJjZXNWYWx1ZTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInJlc291cmNlLXZhdWx0LXNlY3Rpb24gYmctd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIiAqbmdJZj1cImlzSGVhZGVyVmlzaWJsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtuZ0NsYXNzXT1cInsgJ3ctNTAnOiBpc0VkaXRpbmdUaXRsZSB9XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdUaXRsZTsgZWxzZSBlZGl0VGl0bGVCbG9ja1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXNvdXJjZVRpdGxlOyBlbHNlIGZhbGxiYWNrXCIgW2lubmVySFRNTF09XCJyZXNvdXJjZVRpdGxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmYWxsYmFjaz5PdXIgdGVhbeKAmXMgYXJ0aWNsZXM8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGkgICpuZ0lmPVwiIWlzUmVsYXRlZCAmJiBjYW5FZGl0UmVzb3VyY2VzVmFsdWVcIiBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gbXMtMyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVUYWdFZGl0VGl0bGUoKVwiIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZVRhZ0VkaXRUaXRsZSgpXCIgKGtleWRvd24uc3BhY2UpPVwidG9nZ2xlVGFnRWRpdFRpdGxlKClcIiB0aXRsZT1cIkVkaXQgVGl0bGVcIj48L2k+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZWRpdGVkVGl0bGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkLWlubGluZSB3LWF1dG8gbWUtMlwiIFtuZ0NsYXNzXT1cInsgJ3ctMTAwJzogaXNFZGl0aW5nVGl0bGUgfVwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBtZS0xXCIgKGNsaWNrKT1cInNhdmVFZGl0ZWRUaXRsZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJpc0VkaXRpbmdUaXRsZSA9IGZhbHNlXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGEgY2xhc3M9XCJ2aWV3LWFsbFwiIFtyb3V0ZXJMaW5rXT1cInJlc291cmNlTGlua1wiPlZJRVcgQUxMID48L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIiAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJwb3N0cy5sZW5ndGggPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgICAgICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1Jlc291cmNlLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC00IHZpZGVvLXJvd1wiICpuZ0lmPVwicG9zdHMubGVuZ3RoICE9PSAwICYmIGlzTG9hZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc291cmNlLWJsb2ctY2FyZCBwLTRcIiAqbmdGb3I9XCJsZXQgcG9zdCBvZiBwb3N0c1wiPlxuICAgICAgICAgICAgPHB3LXJlc291cmNlLWVkaXQtY2FyZC1sYXp5XG4gICAgICAgICAgICBbY2FuRWRpdF09XCJjYW5FZGl0UmVzb3VyY2VzVmFsdWVcIlxuICAgICAgICAgICAgW2lkXT1cInBvc3QuaWRcIlxuICAgICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJwb3N0XCJcbiAgICAgICAgICAgICh1cGRhdGVkKT1cImdldFBvc3RzKDEsIDEwMClcIj5cbiAgICAgICAgICAgIDwvcHctcmVzb3VyY2UtZWRpdC1jYXJkLWxhenk+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInJlc291cmNlLXRpdGxlXCIgW2lubmVySFRNTF09XCJwb3N0LnRpdGxlIFwiPjwvcD5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICBbaHJlZl09XCJwb3N0LmV4dGVybmFsX3VybCB8fCAoJy9yZXNvdXJjZXMvdmlldy8nICsgcG9zdD8uc2x1ZylcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHRvIHJlc291cmNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIFtzcmNdPVwicG9zdC5waWN0dXJlLnVybFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkIG15LTMgbXQtYXV0b1wiXG4gICAgICAgICAgICAgIGFsdD1cIldlYmluYXJcIlxuICAgICAgICAgICAgLz48L2E+XG4gICAgICAgICAgICA8YSAqbmdJZj1cInBvc3Q/LmV4dGVybmFsX3VybDsgZWxzZSBpbnRlcm5hbExpbmtcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJlc291cmNlLWJ0biBtdC0zXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwicG9zdC5leHRlcm5hbF91cmxcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gZXh0ZXJuYWwgdXJsXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwb3N0Py5jdGFfdGV4dCAmJiBwb3N0LmN0YV90ZXh0ICE9PSAnbnVsbCcgPyBwb3N0LmN0YV90ZXh0IDogJ1JlYWQgTm93JyAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj7ihpI8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVybmFsTGluaz5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwicmVzb3VyY2UtYnRuIG10LTNcIiBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gcmVzb3VyY2Ugdmlld1wiIFtocmVmXT1cIicvcmVzb3VyY2VzL3ZpZXcvJyArIHBvc3Q/LnNsdWdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgcG9zdD8uY3RhX3RleHQgJiYgcG9zdC5jdGFfdGV4dCAhPT0gJ251bGwnID8gcG9zdC5jdGFfdGV4dCA6ICdSZWFkIE5vdycgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+4oaSPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPiJdfQ==
@@ -1,128 +0,0 @@
1
- import { Component, Injector } from '@angular/core';
2
- import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
3
- import { AppBaseComponent } from '@posiwise/app-base-component';
4
- import { AuthService, TagService } from '@posiwise/common-services';
5
- import { ADMIN_ROUTERS } from '@posiwise/common-utilities';
6
- import { HelperService } from '@posiwise/helper-service';
7
- import { ResourceService } from '../../../../resource.service';
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/router";
14
- import * as i6 from "@posiwise/directives";
15
- import * as i7 from "@posiwise/shared-components";
16
- import * as i8 from "@posiwise/pipes";
17
- import * as i9 from "@jsverse/transloco";
18
- export class ResourcePostDetailsComponent extends AppBaseComponent {
19
- constructor(resourceService, tagService, authService, titleService, meta, injector, sanitizer) {
20
- super(injector);
21
- this.resourceService = resourceService;
22
- this.tagService = tagService;
23
- this.authService = authService;
24
- this.titleService = titleService;
25
- this.meta = meta;
26
- this.sanitizer = sanitizer;
27
- this.routers = ADMIN_ROUTERS;
28
- this.isLoaded = false;
29
- }
30
- ngOnInit() {
31
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
32
- this.getUserSubscriptionId().subscribe(response => {
33
- this.subscriptionId = response;
34
- });
35
- this.route.params.subscribe(params => {
36
- this.slug = params['slug'] ?? '';
37
- this.getBlogItem(this.slug);
38
- });
39
- this.authService.getToken$().subscribe(res => {
40
- this.userLoggedIn = !!res;
41
- if (res) {
42
- this.userService.getUserInfo().subscribe(data => {
43
- this.user = data;
44
- this.hasBlogAccess = HelperService.checkBlogPermission(this.user);
45
- });
46
- }
47
- this.getPostTags();
48
- });
49
- }
50
- getPostTags() {
51
- this.tagService
52
- .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)
53
- .subscribe(response => {
54
- this.blogPostTag = response.tags.find(tag => tag.name === 'Blog Posts');
55
- // Update SEO metadata again now that blogPostTag is available
56
- if (this.post) {
57
- this.setOpenGraphMetaTags();
58
- }
59
- })
60
- .add(() => {
61
- this.isLoaded = true;
62
- });
63
- }
64
- getBlogItem(slug) {
65
- this.resourceService.getPostBySlug(slug).subscribe(response => {
66
- let blogBody;
67
- if (response?.body) {
68
- blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);
69
- }
70
- this.post = { ...response, body: blogBody };
71
- });
72
- }
73
- setOpenGraphMetaTags() {
74
- console.log('Post', this.post);
75
- if (this.post.title) {
76
- // Debug: Log the title being set
77
- console.log('Setting og:title to:', this.post.title);
78
- // Check if title is generic placeholder
79
- if (this.post.title === 'Updated Trial Title') {
80
- console.warn('Using generic title "Updated Trial Title" - consider updating the resource title');
81
- }
82
- this.meta.updateTag({ property: 'og:title', content: this.post.title });
83
- this.meta.updateTag({ name: 'twitter:title', content: this.post.title });
84
- }
85
- else {
86
- console.warn('No title found in post data');
87
- }
88
- if (this.post.blurb) {
89
- this.meta.updateTag({ property: 'og:description', content: this.post.blurb });
90
- this.meta.updateTag({ name: 'twitter:description', content: this.post.blurb });
91
- }
92
- let imageUrl = null;
93
- if (this.post?.picture?.url && !this.post.picture.url.includes('default-photo.jpg')) {
94
- imageUrl = this.post.picture.url;
95
- }
96
- else if (this.blogPostTag?.image?.url &&
97
- !this.blogPostTag.image.url.includes('no_image_uploaded_squared')) {
98
- imageUrl = this.blogPostTag.image.url;
99
- }
100
- if (imageUrl) {
101
- this.meta.updateTag({ property: 'og:image', content: imageUrl });
102
- this.meta.updateTag({ name: 'twitter:image', content: imageUrl });
103
- }
104
- this.meta.updateTag({ property: 'og:type', content: 'article' });
105
- this.meta.updateTag({ property: 'og:url', content: window.location.href });
106
- this.meta.updateTag({ property: 'og:site_name', content: 'PosiWise' });
107
- // Twitter Card properties
108
- this.meta.updateTag({ name: 'twitter:card', content: 'summary_large_image' });
109
- this.meta.updateTag({ name: 'twitter:site', content: '@posiwise' });
110
- }
111
- getImageUrl() {
112
- if (this.post?.picture?.url && !this.post.picture.url.includes('default-photo.jpg')) {
113
- return this.post.picture.url;
114
- }
115
- else if (this.blogPostTag?.image?.url &&
116
- !this.blogPostTag.image.url.includes('no_image_uploaded_squared')) {
117
- return this.blogPostTag.image.url;
118
- }
119
- return null;
120
- }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourcePostDetailsComponent, deps: [{ token: i1.ResourceService }, { token: i2.TagService }, { token: i2.AuthService }, { token: i3.Title }, { token: i3.Meta }, { token: i0.Injector }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourcePostDetailsComponent, selector: "pw-resource-post-details", usesInheritance: true, ngImport: i0, template: "<section class=\"resource-hero-section\">\n <div class=\"container d-flex flex-wrap\" [ngClass]=\"getImageUrl() ? 'container-top' : 'container-no-image'\">\n <div class=\"hero-left\">\n <p class=\"blog-label\">BLOG</p>\n\n <h1 class=\"hero-title\">\n <span *ngIf=\"post?.title; else emptySpace\" [innerHTML]=\"post.title\"></span>\n <ng-template #emptySpace>\n &nbsp;\n </ng-template>\n <a *ngIf=\"userLoggedIn && hasBlogAccess\"\n class=\"ms-3 text-decoration-none\"\n ngbTooltip=\"Edit this post\"\n aria-label=\"Edit this blog post\"\n [routerLink]=\"['/admin/resources/', post?.slug]\"\n target=\"_blank\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </a>\n </h1>\n\n\n <div class=\"author-info\">\n <img [src]=\"post?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\" alt=\"User Profile Logo\" class=\"author-img\" />\n <div class=\"author-meta\">\n <p>Article by {{ post?.author?.first_name }} {{ post?.author?.last_name }}</p>\n <p class=\"date\">{{post?.published_at | dateFormat}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"hero-right\" *ngIf=\"isLoaded\">\n <img\n *ngIf=\"getImageUrl(); else noImage\"\n [src]=\"getImageUrl()\"\n alt=\"Blog Post\"\n class=\"hero-image\"\n />\n\n <ng-template #noImage>\n <pw-no-data\n class=\"data-image\"\n [withImage]=\"true\"\n [message]=\"'Resource.Tag.NoImageMessage' | transloco\"\n [description]=\"'Resource.Tag.NoDataMessage' | transloco\"\n ></pw-no-data>\n </ng-template>\n </div>\n </div>\n </section>\n", styles: [".outer-section-fadeout{position:absolute;top:46rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.container-top{padding-top:6rem!important}.container-no-image{padding-top:15rem!important}.container{padding-bottom:2.5rem!important}.edit-icon{vertical-align:middle!important}.resource-hero-section{background:#fff;box-shadow:0 4px 32px -14px #40576d4d!important;position:relative}.resource-hero-section .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.resource-hero-section .blog-label{font-weight:700;font-size:1.7rem;margin-bottom:3rem}.resource-hero-section .hero-title{font-size:3.75rem;font-weight:300;line-height:1.3;color:#000;margin-bottom:2rem}.resource-hero-section .hero-title strong{font-weight:800}.resource-hero-section .hero-left{max-width:700px}.resource-hero-section .author-info{display:flex;align-items:center;gap:1rem;max-width:100%;overflow:hidden}.resource-hero-section .author-info .mobile-math-image{margin-right:0!important;margin-bottom:1rem;height:100px!important}.resource-hero-section .author-info .author-img{width:60px;height:60px;border-radius:50%;object-fit:cover}.resource-hero-section .author-info .author-meta p{font-size:1.2rem;margin-bottom:0!important}.resource-hero-section .author-info .author-meta .date{font-size:.95rem;color:#333}.resource-hero-section .hero-right{flex-shrink:0;width:40%}.resource-hero-section .hero-right .hero-image{height:auto}@media (width <= 768px){.resource-hero-section .hero-title{font-size:2rem}.resource-hero-section .hero-right{margin-top:2rem;text-align:center;width:100%}.resource-hero-section .hero-right .data-image{width:100%}.resource-hero-section .hero-right .hero-image{max-width:300px;width:100%;position:relative;z-index:3;left:4%;height:auto!important;top:2rem}.resource-hero-section .author-info{flex-direction:row;justify-content:flex-start}}@media (width >= 1200px){.hero-image{max-width:500px!important;max-height:500px!important;height:auto;position:relative!important;top:2.5rem}}@media (width >= 1020px) and (width <= 1200px){.outer-section-fadeout{top:34rem!important}}@media (width >= 768px) and (width <= 869px){.hero-image{width:320px!important;height:auto;position:relative;top:7.7rem}.hero-left{max-width:500px!important}.resource-hero-section .container{flex-wrap:nowrap!important}}@media (width >= 869px) and (width <= 1199px){.hero-image{left:3%;position:relative;width:100%;max-width:600px!important;top:6.1rem;height:auto}.hero-left{max-width:500px!important}.resource-hero-section .container{flex-wrap:nowrap!important}}@media (width >= 768px) and (width <= 991px){.container{padding:18rem 6rem 6rem!important}}@media (width >= 991px) and (width <= 1200px){.container{padding:14rem 6rem 6rem!important}}@media (width >= 768px) and (width <= 1200px){.resource-hero-section{padding:0!important}.outer-section-fadeout{top:53rem}.hero-title{font-size:2.75rem!important}.hero-right{text-align:center;width:40%}}@media (width <= 768px){.container{padding:8rem 2rem 2rem!important}.outer-section-fadeout{top:50rem}}@media (width <= 400px){.mobile-math-image{margin-left:-1rem!important}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.LazyImgDirective, selector: "img" }, { kind: "component", type: i7.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i8.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }] }); }
123
- }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourcePostDetailsComponent, decorators: [{
125
- type: Component,
126
- args: [{ selector: 'pw-resource-post-details', template: "<section class=\"resource-hero-section\">\n <div class=\"container d-flex flex-wrap\" [ngClass]=\"getImageUrl() ? 'container-top' : 'container-no-image'\">\n <div class=\"hero-left\">\n <p class=\"blog-label\">BLOG</p>\n\n <h1 class=\"hero-title\">\n <span *ngIf=\"post?.title; else emptySpace\" [innerHTML]=\"post.title\"></span>\n <ng-template #emptySpace>\n &nbsp;\n </ng-template>\n <a *ngIf=\"userLoggedIn && hasBlogAccess\"\n class=\"ms-3 text-decoration-none\"\n ngbTooltip=\"Edit this post\"\n aria-label=\"Edit this blog post\"\n [routerLink]=\"['/admin/resources/', post?.slug]\"\n target=\"_blank\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </a>\n </h1>\n\n\n <div class=\"author-info\">\n <img [src]=\"post?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\" alt=\"User Profile Logo\" class=\"author-img\" />\n <div class=\"author-meta\">\n <p>Article by {{ post?.author?.first_name }} {{ post?.author?.last_name }}</p>\n <p class=\"date\">{{post?.published_at | dateFormat}}</p>\n </div>\n </div>\n </div>\n\n <div class=\"hero-right\" *ngIf=\"isLoaded\">\n <img\n *ngIf=\"getImageUrl(); else noImage\"\n [src]=\"getImageUrl()\"\n alt=\"Blog Post\"\n class=\"hero-image\"\n />\n\n <ng-template #noImage>\n <pw-no-data\n class=\"data-image\"\n [withImage]=\"true\"\n [message]=\"'Resource.Tag.NoImageMessage' | transloco\"\n [description]=\"'Resource.Tag.NoDataMessage' | transloco\"\n ></pw-no-data>\n </ng-template>\n </div>\n </div>\n </section>\n", styles: [".outer-section-fadeout{position:absolute;top:46rem;height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.container-top{padding-top:6rem!important}.container-no-image{padding-top:15rem!important}.container{padding-bottom:2.5rem!important}.edit-icon{vertical-align:middle!important}.resource-hero-section{background:#fff;box-shadow:0 4px 32px -14px #40576d4d!important;position:relative}.resource-hero-section .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.resource-hero-section .blog-label{font-weight:700;font-size:1.7rem;margin-bottom:3rem}.resource-hero-section .hero-title{font-size:3.75rem;font-weight:300;line-height:1.3;color:#000;margin-bottom:2rem}.resource-hero-section .hero-title strong{font-weight:800}.resource-hero-section .hero-left{max-width:700px}.resource-hero-section .author-info{display:flex;align-items:center;gap:1rem;max-width:100%;overflow:hidden}.resource-hero-section .author-info .mobile-math-image{margin-right:0!important;margin-bottom:1rem;height:100px!important}.resource-hero-section .author-info .author-img{width:60px;height:60px;border-radius:50%;object-fit:cover}.resource-hero-section .author-info .author-meta p{font-size:1.2rem;margin-bottom:0!important}.resource-hero-section .author-info .author-meta .date{font-size:.95rem;color:#333}.resource-hero-section .hero-right{flex-shrink:0;width:40%}.resource-hero-section .hero-right .hero-image{height:auto}@media (width <= 768px){.resource-hero-section .hero-title{font-size:2rem}.resource-hero-section .hero-right{margin-top:2rem;text-align:center;width:100%}.resource-hero-section .hero-right .data-image{width:100%}.resource-hero-section .hero-right .hero-image{max-width:300px;width:100%;position:relative;z-index:3;left:4%;height:auto!important;top:2rem}.resource-hero-section .author-info{flex-direction:row;justify-content:flex-start}}@media (width >= 1200px){.hero-image{max-width:500px!important;max-height:500px!important;height:auto;position:relative!important;top:2.5rem}}@media (width >= 1020px) and (width <= 1200px){.outer-section-fadeout{top:34rem!important}}@media (width >= 768px) and (width <= 869px){.hero-image{width:320px!important;height:auto;position:relative;top:7.7rem}.hero-left{max-width:500px!important}.resource-hero-section .container{flex-wrap:nowrap!important}}@media (width >= 869px) and (width <= 1199px){.hero-image{left:3%;position:relative;width:100%;max-width:600px!important;top:6.1rem;height:auto}.hero-left{max-width:500px!important}.resource-hero-section .container{flex-wrap:nowrap!important}}@media (width >= 768px) and (width <= 991px){.container{padding:18rem 6rem 6rem!important}}@media (width >= 991px) and (width <= 1200px){.container{padding:14rem 6rem 6rem!important}}@media (width >= 768px) and (width <= 1200px){.resource-hero-section{padding:0!important}.outer-section-fadeout{top:53rem}.hero-title{font-size:2.75rem!important}.hero-right{text-align:center;width:40%}}@media (width <= 768px){.container{padding:8rem 2rem 2rem!important}.outer-section-fadeout{top:50rem}}@media (width <= 400px){.mobile-math-image{margin-left:-1rem!important}}\n"] }]
127
- }], ctorParameters: () => [{ type: i1.ResourceService }, { type: i2.TagService }, { type: i2.AuthService }, { type: i3.Title }, { type: i3.Meta }, { type: i0.Injector }, { type: i3.DomSanitizer }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcG9zdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZXNvdXJjZS1wb3N0LWRldGFpbHMvcmVzb3VyY2UtcG9zdC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtcG9zdC9yZXNvdXJjZS1wb3N0LWRldGFpbHMvcmVzb3VyY2UtcG9zdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBUSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7O0FBTS9ELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxnQkFBZ0I7SUFhOUQsWUFDcUIsZUFBZ0MsRUFDaEMsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsWUFBbUIsRUFDbkIsSUFBVSxFQUMzQixRQUFrQixFQUNELFNBQXVCO1FBRXhDLEtBQUssQ0FBQyxRQUFRLENB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QUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDNUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEVBQ25FLENBQUM7WUFDQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0FwSVEsNEJBQTRCO21HQUE1Qiw0QkFBNEIsdUZDZHpDLHd5REFpREE7OzRGRG5DYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBUYWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBRE1JTl9ST1VURVJTLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IFJlc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Jlc291cmNlLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZS1wb3N0LWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1wb3N0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Jlc291cmNlLXBvc3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlUG9zdERldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwb3N0O1xuICAgIG1hc3RlclN1YnNjcmlwdGlvbklkO1xuICAgIHNsdWc7XG4gICAgYmxvZ1Blcm1pc3Npb246IHN0cmluZztcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgcm91dGVycyA9IEFETUlOX1JPVVRFUlM7XG4gICAgaGFzQmxvZ0FjY2VzczogYm9vbGVhbjtcbiAgICB1c2VyOiBVc2VyO1xuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG4gICAgYmxvZ1Bvc3RUYWc7XG4gICAgaXNMb2FkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlU2VydmljZTogUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YTogTWV0YSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXN0ZXJTdWJzY3JpcHRpb25JZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uX2lkO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2x1ZyA9IHBhcmFtc1snc2x1ZyddID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5nZXRCbG9nSXRlbSh0aGlzLnNsdWcpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuJCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcblxuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlciA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzQmxvZ0FjY2VzcyA9IEhlbHBlclNlcnZpY2UuY2hlY2tCbG9nUGVybWlzc2lvbih0aGlzLnVzZXIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdFRhZ3MoKSB7XG4gICAgICAgIHRoaXMudGFnU2VydmljZVxuICAgICAgICAgICAgLmdldFRhZ3NCeVR5cGUoJ3Bvc3RfY2F0ZWdvcmllcycsIHt9LCB0aGlzLnN1YnNjcmlwdGlvbklkIHx8IHRoaXMubWFzdGVyU3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2dQb3N0VGFnID0gcmVzcG9uc2UudGFncy5maW5kKHRhZyA9PiB0YWcubmFtZSA9PT0gJ0Jsb2cgUG9zdHMnKTtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgU0VPIG1ldGFkYXRhIGFnYWluIG5vdyB0aGF0IGJsb2dQb3N0VGFnIGlzIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRPcGVuR3JhcGhNZXRhVGFncygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmxvZ0l0ZW0oc2x1Zzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFBvc3RCeVNsdWcoc2x1Zykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGxldCBibG9nQm9keTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uYm9keSkge1xuICAgICAgICAgICAgICAgIGJsb2dCb2R5ID0gSGVscGVyU2VydmljZS5zYW5pdGl6ZVF1aWxsQm9keShyZXNwb25zZS5ib2R5LCB0aGlzLnNhbml0aXplcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvc3QgPSB7IC4uLnJlc3BvbnNlLCBib2R5OiBibG9nQm9keSB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9wZW5HcmFwaE1ldGFUYWdzKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnUG9zdCcsIHRoaXMucG9zdCk7XG4gICAgICAgIGlmICh0aGlzLnBvc3QudGl0bGUpIHtcbiAgICAgICAgICAgIC8vIERlYnVnOiBMb2cgdGhlIHRpdGxlIGJlaW5nIHNldFxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1NldHRpbmcgb2c6dGl0bGUgdG86JywgdGhpcy5wb3N0LnRpdGxlKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGl0bGUgaXMgZ2VuZXJpYyBwbGFjZWhvbGRlclxuICAgICAgICAgICAgaWYgKHRoaXMucG9zdC50aXRsZSA9PT0gJ1VwZGF0ZWQgVHJpYWwgVGl0bGUnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAnVXNpbmcgZ2VuZXJpYyB0aXRsZSBcIlVwZGF0ZWQgVHJpYWwgVGl0bGVcIiAtIGNvbnNpZGVyIHVwZGF0aW5nIHRoZSByZXNvdXJjZSB0aXRsZSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHRoaXMucG9zdC50aXRsZSB9KTtcbiAgICAgICAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjp0aXRsZScsIGNvbnRlbnQ6IHRoaXMucG9zdC50aXRsZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignTm8gdGl0bGUgZm91bmQgaW4gcG9zdCBkYXRhJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3N0LmJsdXJiKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IHRoaXMucG9zdC5ibHVyYiB9KTtcbiAgICAgICAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IHRoaXMucG9zdC5ibHVyYiB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbWFnZVVybCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnBvc3Q/LnBpY3R1cmU/LnVybCAmJiAhdGhpcy5wb3N0LnBpY3R1cmUudXJsLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpKSB7XG4gICAgICAgICAgICBpbWFnZVVybCA9IHRoaXMucG9zdC5waWN0dXJlLnVybDtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMuYmxvZ1Bvc3RUYWc/LmltYWdlPy51cmwgJiZcbiAgICAgICAgICAgICF0aGlzLmJsb2dQb3N0VGFnLmltYWdlLnVybC5pbmNsdWRlcygnbm9faW1hZ2VfdXBsb2FkZWRfc3F1YXJlZCcpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaW1hZ2VVcmwgPSB0aGlzLmJsb2dQb3N0VGFnLmltYWdlLnVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZVVybCkge1xuICAgICAgICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiBpbWFnZVVybCB9KTtcbiAgICAgICAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjppbWFnZScsIGNvbnRlbnQ6IGltYWdlVXJsIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICdhcnRpY2xlJyB9KTtcbiAgICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dXJsJywgY29udGVudDogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XG4gICAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnNpdGVfbmFtZScsIGNvbnRlbnQ6ICdQb3NpV2lzZScgfSk7XG5cbiAgICAgICAgLy8gVHdpdHRlciBDYXJkIHByb3BlcnRpZXNcbiAgICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IG5hbWU6ICd0d2l0dGVyOmNhcmQnLCBjb250ZW50OiAnc3VtbWFyeV9sYXJnZV9pbWFnZScgfSk7XG4gICAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjpzaXRlJywgY29udGVudDogJ0Bwb3Npd2lzZScgfSk7XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VVcmwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBvc3Q/LnBpY3R1cmU/LnVybCAmJiAhdGhpcy5wb3N0LnBpY3R1cmUudXJsLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wb3N0LnBpY3R1cmUudXJsO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5ibG9nUG9zdFRhZz8uaW1hZ2U/LnVybCAmJlxuICAgICAgICAgICAgIXRoaXMuYmxvZ1Bvc3RUYWcuaW1hZ2UudXJsLmluY2x1ZGVzKCdub19pbWFnZV91cGxvYWRlZF9zcXVhcmVkJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ibG9nUG9zdFRhZy5pbWFnZS51cmw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJyZXNvdXJjZS1oZXJvLXNlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGQtZmxleCBmbGV4LXdyYXBcIiBbbmdDbGFzc109XCJnZXRJbWFnZVVybCgpID8gJ2NvbnRhaW5lci10b3AnIDogJ2NvbnRhaW5lci1uby1pbWFnZSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZXJvLWxlZnRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJibG9nLWxhYmVsXCI+QkxPRzwvcD5cblxuICAgICAgICA8aDEgY2xhc3M9XCJoZXJvLXRpdGxlXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3N0Py50aXRsZTsgZWxzZSBlbXB0eVNwYWNlXCIgW2lubmVySFRNTF09XCJwb3N0LnRpdGxlXCI+PC9zcGFuPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlTcGFjZT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPGEgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgaGFzQmxvZ0FjY2Vzc1wiXG4gICAgICAgICAgICAgY2xhc3M9XCJtcy0zIHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRWRpdCB0aGlzIHBvc3RcIlxuICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFZGl0IHRoaXMgYmxvZyBwb3N0XCJcbiAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hZG1pbi9yZXNvdXJjZXMvJywgcG9zdD8uc2x1Z11cIlxuICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGVkaXQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvaDE+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yLWluZm9cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwicG9zdD8uYXV0aG9yPy5hdmF0YXI/LlswXT8udXJsIHx8ICdhc3NldHMvaW1nL2ljb25zL21hbGUucG5nJ1wiIGFsdD1cIlVzZXIgUHJvZmlsZSBMb2dvXCIgY2xhc3M9XCJhdXRob3ItaW1nXCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yLW1ldGFcIj5cbiAgICAgICAgICAgIDxwPkFydGljbGUgYnkge3sgcG9zdD8uYXV0aG9yPy5maXJzdF9uYW1lIH19IHt7IHBvc3Q/LmF1dGhvcj8ubGFzdF9uYW1lIH19PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJkYXRlXCI+e3twb3N0Py5wdWJsaXNoZWRfYXQgfCBkYXRlRm9ybWF0fX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZXJvLXJpZ2h0XCIgKm5nSWY9XCJpc0xvYWRlZFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICpuZ0lmPVwiZ2V0SW1hZ2VVcmwoKTsgZWxzZSBub0ltYWdlXCJcbiAgICAgICAgW3NyY109XCJnZXRJbWFnZVVybCgpXCJcbiAgICAgICAgYWx0PVwiQmxvZyBQb3N0XCJcbiAgICAgICAgY2xhc3M9XCJoZXJvLWltYWdlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cbiAgICAgICAgPHB3LW5vLWRhdGFcbiAgICAgICAgICBjbGFzcz1cImRhdGEtaW1hZ2VcIlxuICAgICAgICAgIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgW21lc3NhZ2VdPVwiJ1Jlc291cmNlLlRhZy5Ob0ltYWdlTWVzc2FnZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCInUmVzb3VyY2UuVGFnLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgPjwvcHctbm8tZGF0YT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuIl19