@jeraldj/discussions-ui 8.0.3-v16

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 (174) hide show
  1. package/README.md +24 -0
  2. package/assets/images/Buffer-512.webp +0 -0
  3. package/assets/images/announcement.svg +25 -0
  4. package/assets/images/back-img.png +0 -0
  5. package/assets/images/bookmarks.png +0 -0
  6. package/assets/images/card-icon.png +0 -0
  7. package/assets/images/close.png +0 -0
  8. package/assets/images/delete.svg +13 -0
  9. package/assets/images/down-arrow.png +0 -0
  10. package/assets/images/down-chevron.png +0 -0
  11. package/assets/images/down.svg +12 -0
  12. package/assets/images/edit.svg +11 -0
  13. package/assets/images/empty.svg +37 -0
  14. package/assets/images/eye-icon.png +0 -0
  15. package/assets/images/general discussion.svg +15 -0
  16. package/assets/images/import-export-arrows.png +0 -0
  17. package/assets/images/loader-icon.svg +6 -0
  18. package/assets/images/profits.png +0 -0
  19. package/assets/images/search-icon.png +0 -0
  20. package/assets/images/select-bookmarks.png +0 -0
  21. package/assets/images/select-down-arrow.png +0 -0
  22. package/assets/images/select-profits.png +0 -0
  23. package/assets/images/select-up-arrow.png +0 -0
  24. package/assets/images/up-arrow.png +0 -0
  25. package/assets/images/up-chevron.png +0 -0
  26. package/assets/images/up.svg +12 -0
  27. package/assets/images/views.svg +9 -0
  28. package/assets/images/votes.svg +14 -0
  29. package/assets/styles/global.scss +283 -0
  30. package/esm2022/jeraldj-discussions-ui.mjs +5 -0
  31. package/esm2022/lib/common/constants.json +630 -0
  32. package/esm2022/lib/components/components.module.mjs +105 -0
  33. package/esm2022/lib/components/discuss-all/discuss-all.component.mjs +269 -0
  34. package/esm2022/lib/components/discuss-category/discuss-category.component.mjs +152 -0
  35. package/esm2022/lib/components/discuss-home/discuss-home.component.mjs +142 -0
  36. package/esm2022/lib/components/discuss-start/discuss-start.component.mjs +199 -0
  37. package/esm2022/lib/components/discuss-tags/discuss-tags.component.mjs +93 -0
  38. package/esm2022/lib/components/discussion-details/discussion-details.component.mjs +459 -0
  39. package/esm2022/lib/components/lib-entry/lib-entry.component.mjs +96 -0
  40. package/esm2022/lib/components/my-discussion/my-discussion.component.mjs +234 -0
  41. package/esm2022/lib/components/side-pannel/side-pannel.component.mjs +79 -0
  42. package/esm2022/lib/components/tag-all-discussion/tag-all-discussion.component.mjs +151 -0
  43. package/esm2022/lib/components/trending-tags/trending-tags.component.mjs +62 -0
  44. package/esm2022/lib/config/url.config.mjs +32 -0
  45. package/esm2022/lib/discussion-events.service.mjs +27 -0
  46. package/esm2022/lib/discussion-routing/discussion-routing.module.mjs +80 -0
  47. package/esm2022/lib/discussion-ui.module.mjs +41 -0
  48. package/esm2022/lib/elements/app-loader/app-loader.component.mjs +36 -0
  49. package/esm2022/lib/elements/avatar-photo/avatar-photo.component.mjs +81 -0
  50. package/esm2022/lib/elements/category-card/category-card.component.mjs +17 -0
  51. package/esm2022/lib/elements/discuss-card/discuss-card.component.mjs +45 -0
  52. package/esm2022/lib/elements/elements.module.mjs +69 -0
  53. package/esm2022/lib/elements/load-alert/load-alert.component.mjs +34 -0
  54. package/esm2022/lib/elements/post-reply/post-reply.component.mjs +69 -0
  55. package/esm2022/lib/elements/related-discussion/related-discussion.component.mjs +61 -0
  56. package/esm2022/lib/elements/sliders/sliders.component.mjs +76 -0
  57. package/esm2022/lib/events.service.mjs +31 -0
  58. package/esm2022/lib/models/discuss.model.mjs +16 -0
  59. package/esm2022/lib/models/discussion-config.model.mjs +2 -0
  60. package/esm2022/lib/navigation-service.service.mjs +39 -0
  61. package/esm2022/lib/pipes/pipe-filter/pipe-filter.pipe.mjs +20 -0
  62. package/esm2022/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.mjs +22 -0
  63. package/esm2022/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.mjs +41 -0
  64. package/esm2022/lib/pipes/pipes.module.mjs +24 -0
  65. package/esm2022/lib/pipes/sort-by/sort-by.pipe.mjs +34 -0
  66. package/esm2022/lib/pipes/split-initials/split-initials.pipe.mjs +23 -0
  67. package/esm2022/lib/router-service.service.mjs +21 -0
  68. package/esm2022/lib/services/abstract-config.service.mjs +3 -0
  69. package/esm2022/lib/services/config.service.mjs +76 -0
  70. package/esm2022/lib/services/discuss-utils.service.mjs +36 -0
  71. package/esm2022/lib/services/discussion.service.mjs +254 -0
  72. package/esm2022/lib/telemetry-utils.service.mjs +103 -0
  73. package/esm2022/lib/wrapper/base-wrapper/base-wrapper.component.mjs +41 -0
  74. package/esm2022/lib/wrapper/category-widget/category-widget.component.mjs +37 -0
  75. package/esm2022/lib/wrapper/tags-widget/tags-widget.component.mjs +33 -0
  76. package/esm2022/lib/wrapper-navigate.service.mjs +23 -0
  77. package/esm2022/public-api.mjs +29 -0
  78. package/fesm2022/jeraldj-discussions-ui.mjs +3929 -0
  79. package/fesm2022/jeraldj-discussions-ui.mjs.map +1 -0
  80. package/index.d.ts +6 -0
  81. package/jeraldj-discussions-ui.d.ts.map +1 -0
  82. package/lib/components/components.module.d.ts +24 -0
  83. package/lib/components/components.module.d.ts.map +1 -0
  84. package/lib/components/discuss-all/discuss-all.component.d.ts +61 -0
  85. package/lib/components/discuss-all/discuss-all.component.d.ts.map +1 -0
  86. package/lib/components/discuss-category/discuss-category.component.d.ts +45 -0
  87. package/lib/components/discuss-category/discuss-category.component.d.ts.map +1 -0
  88. package/lib/components/discuss-home/discuss-home.component.d.ts +59 -0
  89. package/lib/components/discuss-home/discuss-home.component.d.ts.map +1 -0
  90. package/lib/components/discuss-start/discuss-start.component.d.ts +50 -0
  91. package/lib/components/discuss-start/discuss-start.component.d.ts.map +1 -0
  92. package/lib/components/discuss-tags/discuss-tags.component.d.ts +41 -0
  93. package/lib/components/discuss-tags/discuss-tags.component.d.ts.map +1 -0
  94. package/lib/components/discussion-details/discussion-details.component.d.ts +112 -0
  95. package/lib/components/discussion-details/discussion-details.component.d.ts.map +1 -0
  96. package/lib/components/lib-entry/lib-entry.component.d.ts +42 -0
  97. package/lib/components/lib-entry/lib-entry.component.d.ts.map +1 -0
  98. package/lib/components/my-discussion/my-discussion.component.d.ts +54 -0
  99. package/lib/components/my-discussion/my-discussion.component.d.ts.map +1 -0
  100. package/lib/components/side-pannel/side-pannel.component.d.ts +34 -0
  101. package/lib/components/side-pannel/side-pannel.component.d.ts.map +1 -0
  102. package/lib/components/tag-all-discussion/tag-all-discussion.component.d.ts +53 -0
  103. package/lib/components/tag-all-discussion/tag-all-discussion.component.d.ts.map +1 -0
  104. package/lib/components/trending-tags/trending-tags.component.d.ts +26 -0
  105. package/lib/components/trending-tags/trending-tags.component.d.ts.map +1 -0
  106. package/lib/config/url.config.d.ts +29 -0
  107. package/lib/config/url.config.d.ts.map +1 -0
  108. package/lib/discussion-events.service.d.ts +12 -0
  109. package/lib/discussion-events.service.d.ts.map +1 -0
  110. package/lib/discussion-routing/discussion-routing.module.d.ts +9 -0
  111. package/lib/discussion-routing/discussion-routing.module.d.ts.map +1 -0
  112. package/lib/discussion-ui.module.d.ts +16 -0
  113. package/lib/discussion-ui.module.d.ts.map +1 -0
  114. package/lib/elements/app-loader/app-loader.component.d.ts +17 -0
  115. package/lib/elements/app-loader/app-loader.component.d.ts.map +1 -0
  116. package/lib/elements/avatar-photo/avatar-photo.component.d.ts +19 -0
  117. package/lib/elements/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  118. package/lib/elements/category-card/category-card.component.d.ts +10 -0
  119. package/lib/elements/category-card/category-card.component.d.ts.map +1 -0
  120. package/lib/elements/discuss-card/discuss-card.component.d.ts +17 -0
  121. package/lib/elements/discuss-card/discuss-card.component.d.ts.map +1 -0
  122. package/lib/elements/elements.module.d.ts +18 -0
  123. package/lib/elements/elements.module.d.ts.map +1 -0
  124. package/lib/elements/load-alert/load-alert.component.d.ts +15 -0
  125. package/lib/elements/load-alert/load-alert.component.d.ts.map +1 -0
  126. package/lib/elements/post-reply/post-reply.component.d.ts +22 -0
  127. package/lib/elements/post-reply/post-reply.component.d.ts.map +1 -0
  128. package/lib/elements/related-discussion/related-discussion.component.d.ts +26 -0
  129. package/lib/elements/related-discussion/related-discussion.component.d.ts.map +1 -0
  130. package/lib/elements/sliders/sliders.component.d.ts +18 -0
  131. package/lib/elements/sliders/sliders.component.d.ts.map +1 -0
  132. package/lib/events.service.d.ts +18 -0
  133. package/lib/events.service.d.ts.map +1 -0
  134. package/lib/models/discuss.model.d.ts +298 -0
  135. package/lib/models/discuss.model.d.ts.map +1 -0
  136. package/lib/models/discussion-config.model.d.ts +42 -0
  137. package/lib/models/discussion-config.model.d.ts.map +1 -0
  138. package/lib/navigation-service.service.d.ts +22 -0
  139. package/lib/navigation-service.service.d.ts.map +1 -0
  140. package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts +8 -0
  141. package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts.map +1 -0
  142. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts +8 -0
  143. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts.map +1 -0
  144. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts +8 -0
  145. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts.map +1 -0
  146. package/lib/pipes/pipes.module.d.ts +13 -0
  147. package/lib/pipes/pipes.module.d.ts.map +1 -0
  148. package/lib/pipes/sort-by/sort-by.pipe.d.ts +8 -0
  149. package/lib/pipes/sort-by/sort-by.pipe.d.ts.map +1 -0
  150. package/lib/pipes/split-initials/split-initials.pipe.d.ts +8 -0
  151. package/lib/pipes/split-initials/split-initials.pipe.d.ts.map +1 -0
  152. package/lib/router-service.service.d.ts +10 -0
  153. package/lib/router-service.service.d.ts.map +1 -0
  154. package/lib/services/abstract-config.service.d.ts +4 -0
  155. package/lib/services/abstract-config.service.d.ts.map +1 -0
  156. package/lib/services/config.service.d.ts +36 -0
  157. package/lib/services/config.service.d.ts.map +1 -0
  158. package/lib/services/discuss-utils.service.d.ts +14 -0
  159. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  160. package/lib/services/discussion.service.d.ts +76 -0
  161. package/lib/services/discussion.service.d.ts.map +1 -0
  162. package/lib/telemetry-utils.service.d.ts +20 -0
  163. package/lib/telemetry-utils.service.d.ts.map +1 -0
  164. package/lib/wrapper/base-wrapper/base-wrapper.component.d.ts +22 -0
  165. package/lib/wrapper/base-wrapper/base-wrapper.component.d.ts.map +1 -0
  166. package/lib/wrapper/category-widget/category-widget.component.d.ts +23 -0
  167. package/lib/wrapper/category-widget/category-widget.component.d.ts.map +1 -0
  168. package/lib/wrapper/tags-widget/tags-widget.component.d.ts +17 -0
  169. package/lib/wrapper/tags-widget/tags-widget.component.d.ts.map +1 -0
  170. package/lib/wrapper-navigate.service.d.ts +11 -0
  171. package/lib/wrapper-navigate.service.d.ts.map +1 -0
  172. package/package.json +44 -0
  173. package/public-api.d.ts +26 -0
  174. package/public-api.d.ts.map +1 -0
@@ -0,0 +1,96 @@
1
+ import { Component } from '@angular/core';
2
+ import { NSDiscussData } from './../../models/discuss.model';
3
+ /* tslint:disable */
4
+ import * as _ from 'lodash';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "./../../services/discussion.service";
8
+ import * as i3 from "../../services/config.service";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "../../navigation-service.service";
11
+ import * as i6 from "./../../discussion-events.service";
12
+ import * as i7 from "./../../telemetry-utils.service";
13
+ import * as i8 from "../side-pannel/side-pannel.component";
14
+ import * as i9 from "../../elements/load-alert/load-alert.component";
15
+ /* tslint:enable */
16
+ export class LibEntryComponent {
17
+ constructor(activatedRoute, discussionService, configService, location, navigationServiceService, discussionEventService, telemetryUtils) {
18
+ this.activatedRoute = activatedRoute;
19
+ this.discussionService = discussionService;
20
+ this.configService = configService;
21
+ this.location = location;
22
+ this.navigationServiceService = navigationServiceService;
23
+ this.discussionEventService = discussionEventService;
24
+ this.telemetryUtils = telemetryUtils;
25
+ this.headerOption = true;
26
+ this.currentRoute = 'all-discussions';
27
+ this.showLoaderAlert = false;
28
+ this.bannerSubscription = this.activatedRoute.data.subscribe(data => {
29
+ if (data && data.pageData) {
30
+ this.banner = data.pageData.data.banner || [];
31
+ }
32
+ });
33
+ }
34
+ ngOnInit() {
35
+ /**
36
+ * calling the initservice to tell navigationservice to use the router service
37
+ * because this component is invoke only in router approach
38
+ */
39
+ this.navigationServiceService.initService('routerService');
40
+ this.histtoryStartIndex = window.history.length - 1;
41
+ this.configService.setConfig(this.activatedRoute);
42
+ // this.activatedRoute.data.subscribe((data) => {
43
+ this.data = this.configService.getConfig();
44
+ if (!this.data) {
45
+ // fallback for query params
46
+ this.configService.setConfigFromParams(this.activatedRoute);
47
+ this.data = this.configService.getConfig();
48
+ }
49
+ this.discussionService.userId = _.get(this.data, 'userId');
50
+ const rawCategories = _.get(this.data, 'categories');
51
+ this.discussionService.forumIds = _.get(rawCategories, 'result');
52
+ this.discussionService.initializeUserDetails(this.discussionService.userId);
53
+ this.handleLoaderAlert();
54
+ }
55
+ handleLoaderAlert() {
56
+ this.subscription = this.discussionService.alertEvent.subscribe(() => {
57
+ this.showLoaderAlert = true;
58
+ });
59
+ }
60
+ goBack() {
61
+ const eventAction = {
62
+ action: 'DF_BACK'
63
+ };
64
+ this.discussionEventService.emitTelemetry(eventAction);
65
+ this.location.back();
66
+ }
67
+ close(event) {
68
+ this.showLoaderAlert = false;
69
+ const eventAction = {
70
+ action: 'DF_CLOSE'
71
+ };
72
+ this.discussionEventService.emitTelemetry(eventAction);
73
+ this.telemetryUtils.logInteract(event, NSDiscussData.IPageName.LIB_ENTRY);
74
+ window.history.go(-(window.history.length - this.histtoryStartIndex));
75
+ }
76
+ closeLoadAlert() {
77
+ this.showLoaderAlert = false;
78
+ }
79
+ ngOnDestroy() {
80
+ this.subscription.unsubscribe();
81
+ }
82
+ onScrollTopActive(event) {
83
+ window.scroll({
84
+ top: 0,
85
+ left: 0,
86
+ behavior: 'smooth'
87
+ });
88
+ }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LibEntryComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DiscussionService }, { token: i3.ConfigService }, { token: i4.Location }, { token: i5.NavigationServiceService }, { token: i6.DiscussionEventsService }, { token: i7.TelemetryUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LibEntryComponent, selector: "lib-lib-entry", host: { classAttribute: "flex-1 main_discuss_lib" }, ngImport: i0, template: "<div class=\"sbt-inside-page-container ui container\">\n <div class=\"df-header\">\n <button type=\"button\" class=\"df-btn df-btn-normal df-btn-primary df-back-btn\" tabindex=\"0\" autofocus\n role=\"button\" (click)=\"goBack()\">\n <img src=\"./assets/discussion-ui/images/back-img.png\" alt=\"back icon\" />\n Back\n </button>\n <button (click)=\"close($event)\" class=\"df-btn df-btn-normal df-btn-danger df-close-btn\" tabindex=\"0\"\n id=\"close-discussion-forum\" type=\"button\" autofocus>\n Close\n <img src=\"./assets/discussion-ui/images/close.png\" alt=\"close icon\" />\n </button>\n </div>\n\n <div class=\"discussion-forum-content\">\n <div class=\"discuss-left-panel\">\n <lib-side-pannel></lib-side-pannel>\n </div>\n <div class=\"discuss-right-panel\">\n <router-outlet (activate)=\"onScrollTopActive($event)\"></router-outlet>\n </div>\n </div>\n</div>\n\n<lib-load-alert *ngIf=\"showLoaderAlert\" (exit)=\"close($event)\" (close)=\"closeLoadAlert()\"></lib-load-alert>", styles: ["::ng-deep:root{--df-header-bg:var(--df-common-bg)}.df-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--df-header-bg);margin-bottom:1rem}.df-header .df-back-btn{display:flex;align-items:center}.df-header .df-back-btn img{width:1rem;height:1rem;margin-right:.25rem;filter:invert(1)}.df-header .df-close-btn img{width:.5rem;height:.5rem;margin-left:.25rem;filter:invert(1)}.discussion-forum-content{display:grid;grid-template-columns:1fr 4fr;grid-gap:1.5rem}@media (max-width: 768px){.discussion-forum-content{grid-template-columns:1fr}}.ui.container{display:block;max-width:100%!important}@media only screen and (max-width: 767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}}@media only screen and (max-width: 1800px) and (min-width: 768px){.ui.container{width:90%;margin-left:auto!important;margin-right:auto!important}}\n"], dependencies: [{ kind: "component", type: i8.SidePannelComponent, selector: "lib-side-pannel" }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i9.LoadAlertComponent, selector: "lib-load-alert", outputs: ["close", "exit"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LibEntryComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ selector: 'lib-lib-entry', host: { class: 'flex-1 main_discuss_lib', }, template: "<div class=\"sbt-inside-page-container ui container\">\n <div class=\"df-header\">\n <button type=\"button\" class=\"df-btn df-btn-normal df-btn-primary df-back-btn\" tabindex=\"0\" autofocus\n role=\"button\" (click)=\"goBack()\">\n <img src=\"./assets/discussion-ui/images/back-img.png\" alt=\"back icon\" />\n Back\n </button>\n <button (click)=\"close($event)\" class=\"df-btn df-btn-normal df-btn-danger df-close-btn\" tabindex=\"0\"\n id=\"close-discussion-forum\" type=\"button\" autofocus>\n Close\n <img src=\"./assets/discussion-ui/images/close.png\" alt=\"close icon\" />\n </button>\n </div>\n\n <div class=\"discussion-forum-content\">\n <div class=\"discuss-left-panel\">\n <lib-side-pannel></lib-side-pannel>\n </div>\n <div class=\"discuss-right-panel\">\n <router-outlet (activate)=\"onScrollTopActive($event)\"></router-outlet>\n </div>\n </div>\n</div>\n\n<lib-load-alert *ngIf=\"showLoaderAlert\" (exit)=\"close($event)\" (close)=\"closeLoadAlert()\"></lib-load-alert>", styles: ["::ng-deep:root{--df-header-bg:var(--df-common-bg)}.df-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--df-header-bg);margin-bottom:1rem}.df-header .df-back-btn{display:flex;align-items:center}.df-header .df-back-btn img{width:1rem;height:1rem;margin-right:.25rem;filter:invert(1)}.df-header .df-close-btn img{width:.5rem;height:.5rem;margin-left:.25rem;filter:invert(1)}.discussion-forum-content{display:grid;grid-template-columns:1fr 4fr;grid-gap:1.5rem}@media (max-width: 768px){.discussion-forum-content{grid-template-columns:1fr}}.ui.container{display:block;max-width:100%!important}@media only screen and (max-width: 767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}}@media only screen and (max-width: 1800px) and (min-width: 768px){.ui.container{width:90%;margin-left:auto!important;margin-right:auto!important}}\n"] }]
95
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.DiscussionService }, { type: i3.ConfigService }, { type: i4.Location }, { type: i5.NavigationServiceService }, { type: i6.DiscussionEventsService }, { type: i7.TelemetryUtilsService }]; } });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWVudHJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rpc2N1c3Npb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL2xpYi1lbnRyeS9saWItZW50cnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlzY3Vzc2lvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvbGliLWVudHJ5L2xpYi1lbnRyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0Qsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBOzs7Ozs7Ozs7OztBQU8zQixtQkFBbUI7QUFTbkIsTUFBTSxPQUFPLGlCQUFpQjtJQWM1QixZQUNTLGNBQThCLEVBQzdCLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixRQUFrQixFQUNsQix3QkFBa0QsRUFDbEQsc0JBQStDLEVBQy9DLGNBQXFDO1FBTnRDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXlCO1FBQy9DLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQWxCL0MsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFJcEIsaUJBQVksR0FBRyxpQkFBaUIsQ0FBQTtRQUloQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQWN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJ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SUFDakMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQUs7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNaLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLENBQUM7WUFDUCxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiwwR0N6QjlCLDBuQ0F3QjJHOzs0RkRDOUYsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGVBQWUsUUFJbkIsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEdBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNjdXNzaW9uU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZGlzY3Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpc2N1c3Npb25FdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9kaXNjdXNzaW9uLWV2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbGVtZXRyeVV0aWxzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vdGVsZW1ldHJ5LXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTlNEaXNjdXNzRGF0YSB9IGZyb20gJy4vLi4vLi4vbW9kZWxzL2Rpc2N1c3MubW9kZWwnO1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBJZGlzY3Vzc2lvbkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9kaXNjdXNzaW9uLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hYnN0cmFjdC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbi8qIHRzbGludDplbmFibGUgKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1saWItZW50cnknLFxuICB0ZW1wbGF0ZVVybDogJy4vbGliLWVudHJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGliLWVudHJ5LmNvbXBvbmVudC5zY3NzJ10sXG4gIC8qIHRzbGludDpkaXNhYmxlICovXG4gIGhvc3Q6IHsgY2xhc3M6ICdmbGV4LTEgbWFpbl9kaXNjdXNzX2xpYicsfSxcbiAgLyogdHNsaW50OmVuYWJsZSAqL1xufSlcbmV4cG9ydCBjbGFzcyBMaWJFbnRyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBkYXRhOiBJZGlzY3Vzc2lvbkNvbmZpZztcbiAgaGVhZGVyT3B0aW9uID0gdHJ1ZTtcbiAgYmFubmVyOiBhbnlcbiAgcHJpdmF0ZSBiYW5uZXJTdWJzY3JpcHRpb246IGFueVxuICBiYW5uZXJPcHRpb246IGJvb2xlYW47XG4gIGN1cnJlbnRSb3V0ZSA9ICdhbGwtZGlzY3Vzc2lvbnMnXG4gIHBhZ2VLZXk6IHN0cmluZztcbiAgY29uZmlnOiBhbnk7XG4gIGhpc3R0b3J5U3RhcnRJbmRleDogbnVtYmVyO1xuICBzaG93TG9hZGVyQWxlcnQgPSBmYWxzZTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZGlzY3Vzc2lvblNlcnZpY2U6IERpc2N1c3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlzY3Vzc2lvbkV2ZW50U2VydmljZTogRGlzY3Vzc2lvbkV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZWxlbWV0cnlVdGlsczogVGVsZW1ldHJ5VXRpbHNTZXJ2aWNlLFxuICAgIC8vIEBJbmplY3QoJ2NvbmZpZ1NlcnZpY2UnKSBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQWJzdHJhY3RDb25maWdTZXJ2aWNlXG5cbiAgKSB7XG4gICAgdGhpcy5iYW5uZXJTdWJzY3JpcHRpb24gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5wYWdlRGF0YSkge1xuICAgICAgICB0aGlzLmJhbm5lciA9IGRhdGEucGFnZURhdGEuZGF0YS5iYW5uZXIgfHwgW11cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLyoqXG4gICAgICogY2FsbGluZyB0aGUgaW5pdHNlcnZpY2UgdG8gdGVsbCBuYXZpZ2F0aW9uc2VydmljZSB0byB1c2UgdGhlIHJvdXRlciBzZXJ2aWNlXG4gICAgICogYmVjYXVzZSB0aGlzIGNvbXBvbmVudCBpcyBpbnZva2Ugb25seSBpbiByb3V0ZXIgYXBwcm9hY2ggXG4gICAgICovXG4gICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZVNlcnZpY2UuaW5pdFNlcnZpY2UoJ3JvdXRlclNlcnZpY2UnKVxuICAgIHRoaXMuaGlzdHRvcnlTdGFydEluZGV4ID0gd2luZG93Lmhpc3RvcnkubGVuZ3RoLTE7XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldENvbmZpZyh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICAvLyB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3IgcXVlcnkgcGFyYW1zXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0Q29uZmlnRnJvbVBhcmFtcyh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG4gICAgdGhpcy5kaXNjdXNzaW9uU2VydmljZS51c2VySWQgPSBfLmdldCh0aGlzLmRhdGEsICd1c2VySWQnKTtcbiAgICBjb25zdCByYXdDYXRlZ29yaWVzID0gXy5nZXQodGhpcy5kYXRhLCAnY2F0ZWdvcmllcycpO1xuICAgIHRoaXMuZGlzY3Vzc2lvblNlcnZpY2UuZm9ydW1JZHMgPSBfLmdldChyYXdDYXRlZ29yaWVzLCAncmVzdWx0Jyk7XG4gICAgdGhpcy5kaXNjdXNzaW9uU2VydmljZS5pbml0aWFsaXplVXNlckRldGFpbHModGhpcy5kaXNjdXNzaW9uU2VydmljZS51c2VySWQpO1xuICAgIHRoaXMuaGFuZGxlTG9hZGVyQWxlcnQoKTtcbiAgIH1cblxuICBoYW5kbGVMb2FkZXJBbGVydCgpe1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc2N1c3Npb25TZXJ2aWNlLmFsZXJ0RXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0xvYWRlckFsZXJ0ID0gdHJ1ZTtcbiAgICB9KVxuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIGNvbnN0IGV2ZW50QWN0aW9uID0ge1xuICAgICAgYWN0aW9uOiAnREZfQkFDSydcbiAgICB9O1xuICAgIHRoaXMuZGlzY3Vzc2lvbkV2ZW50U2VydmljZS5lbWl0VGVsZW1ldHJ5KGV2ZW50QWN0aW9uKTtcbiAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgfVxuXG4gIGNsb3NlKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93TG9hZGVyQWxlcnQgPSBmYWxzZTtcbiAgICBjb25zdCBldmVudEFjdGlvbiA9IHtcbiAgICAgIGFjdGlvbjogJ0RGX0NMT1NFJ1xuICAgIH07XG4gICAgdGhpcy5kaXNjdXNzaW9uRXZlbnRTZXJ2aWNlLmVtaXRUZWxlbWV0cnkoZXZlbnRBY3Rpb24pO1xuICAgIHRoaXMudGVsZW1ldHJ5VXRpbHMubG9nSW50ZXJhY3QoZXZlbnQsIE5TRGlzY3Vzc0RhdGEuSVBhZ2VOYW1lLkxJQl9FTlRSWSk7XG4gICAgd2luZG93Lmhpc3RvcnkuZ28oLSh3aW5kb3cuaGlzdG9yeS5sZW5ndGggLSB0aGlzLmhpc3R0b3J5U3RhcnRJbmRleCApKTtcbiAgfVxuXG4gIGNsb3NlTG9hZEFsZXJ0KCl7XG4gICAgdGhpcy5zaG93TG9hZGVyQWxlcnQgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCl7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgb25TY3JvbGxUb3BBY3RpdmUoZXZlbnQpIHtcbiAgICB3aW5kb3cuc2Nyb2xsKHtcbiAgICAgIHRvcDogMCwgXG4gICAgICBsZWZ0OiAwLCBcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzYnQtaW5zaWRlLXBhZ2UtY29udGFpbmVyIHVpIGNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkZi1oZWFkZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkZi1idG4gZGYtYnRuLW5vcm1hbCBkZi1idG4tcHJpbWFyeSBkZi1iYWNrLWJ0blwiIHRhYmluZGV4PVwiMFwiIGF1dG9mb2N1c1xuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy9kaXNjdXNzaW9uLXVpL2ltYWdlcy9iYWNrLWltZy5wbmdcIiBhbHQ9XCJiYWNrIGljb25cIiAvPlxuICAgICAgICAgICAgQmFja1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiIGNsYXNzPVwiZGYtYnRuIGRmLWJ0bi1ub3JtYWwgZGYtYnRuLWRhbmdlciBkZi1jbG9zZS1idG5cIiB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgaWQ9XCJjbG9zZS1kaXNjdXNzaW9uLWZvcnVtXCIgdHlwZT1cImJ1dHRvblwiIGF1dG9mb2N1cz5cbiAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2Rpc2N1c3Npb24tdWkvaW1hZ2VzL2Nsb3NlLnBuZ1wiIGFsdD1cImNsb3NlIGljb25cIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaXNjdXNzaW9uLWZvcnVtLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2N1c3MtbGVmdC1wYW5lbFwiPlxuICAgICAgICAgICAgPGxpYi1zaWRlLXBhbm5lbD48L2xpYi1zaWRlLXBhbm5lbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNjdXNzLXJpZ2h0LXBhbmVsXCI+XG4gICAgICAgICAgICA8cm91dGVyLW91dGxldCAoYWN0aXZhdGUpPVwib25TY3JvbGxUb3BBY3RpdmUoJGV2ZW50KVwiPjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGxpYi1sb2FkLWFsZXJ0ICpuZ0lmPVwic2hvd0xvYWRlckFsZXJ0XCIgKGV4aXQpPVwiY2xvc2UoJGV2ZW50KVwiIChjbG9zZSk9XCJjbG9zZUxvYWRBbGVydCgpXCI+PC9saWItbG9hZC1hbGVydD4iXX0=
@@ -0,0 +1,234 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { NSDiscussData } from './../../models/discuss.model';
3
+ import * as CONSTANTS from '../../common/constants.json';
4
+ /* tslint:disable */
5
+ import * as _ from 'lodash';
6
+ import { combineLatest } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./../../services/discussion.service";
9
+ import * as i2 from "../../services/config.service";
10
+ import * as i3 from "@angular/router";
11
+ import * as i4 from "./../../telemetry-utils.service";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "../../elements/discuss-card/discuss-card.component";
14
+ import * as i7 from "../../elements/app-loader/app-loader.component";
15
+ import * as i8 from "ngx-infinite-scroll";
16
+ import * as i9 from "../../pipes/split-initials/split-initials.pipe";
17
+ /* tslint:enable */
18
+ export class MyDiscussionComponent {
19
+ constructor(discussService, configService, router, telemetryUtils) {
20
+ this.discussService = discussService;
21
+ this.configService = configService;
22
+ this.router = router;
23
+ this.telemetryUtils = telemetryUtils;
24
+ this.discussionList = []; // this is for posts
25
+ this.currentFilter = 'timestamp';
26
+ this.userInitial = '';
27
+ this.showLoader = false;
28
+ this.pagination = Object.create({});
29
+ // Input parameters for infinite scroll
30
+ this.InfiniteScrollConfig = {
31
+ modalScrollDistance: 2,
32
+ modalScrollThrottle: 50
33
+ };
34
+ }
35
+ /** To fetch user details */
36
+ fetchUserProfile(userName) {
37
+ this.discussService.fetchUserProfile(userName).subscribe(response => {
38
+ this.showLoader = false;
39
+ console.log(response);
40
+ this.data = response;
41
+ if (_.get(this.data, 'posts')) {
42
+ this.discussionList = _.get(this.data, 'posts').filter(p => (p.isMainPost === true));
43
+ }
44
+ // if (this.configSvc.userProfile) {
45
+ // localStorage.setItem(this.configSvc.userProfile.userId, this.profilePhoto);
46
+ // }
47
+ }, error => {
48
+ this.showLoader = false;
49
+ // error code check
50
+ this.discussService.showTrafficAlert(error);
51
+ // TODO: Toaster
52
+ console.log('error fetching user details');
53
+ });
54
+ }
55
+ ngOnInit() {
56
+ this.telemetryUtils.setContext([]);
57
+ this.telemetryUtils.logImpression(NSDiscussData.IPageName.MY_DISCUSSION);
58
+ this.filter(this.currentFilter, false);
59
+ }
60
+ /**
61
+ * @description - set the scroll container height
62
+ */
63
+ ngAfterViewChecked() {
64
+ if (this.elementView && this.elementView.nativeElement && !this.elementView.nativeElement.style.height) {
65
+ // the number 10 is just a random value to reduce the height of the parent container to the infinite scroll
66
+ this.elementView.nativeElement.style.height = (this.elementView.nativeElement.clientHeight - 10) + 'px';
67
+ }
68
+ }
69
+ /**
70
+ * @param {string|'timestamp'|'best'|'saved'|'watched'|'upvoted'|'downvoted'} key
71
+ * @param {boolean} resetpagination - its used to reset the pagination value based on the filter data
72
+ */
73
+ filter(key, resetpagination) {
74
+ this.currentFilter = key;
75
+ if (key) {
76
+ // reset the currentpage value to 1 and reset the discussionList data based on the respective api response when the filter is changed
77
+ if (resetpagination) {
78
+ this.discussionList = [];
79
+ this.pagination.currentPage = 1;
80
+ }
81
+ // setting the current page index
82
+ const scrollIndex = this.pagination.currentPage ? this.pagination.currentPage : 1;
83
+ this.showLoader = true;
84
+ switch (key) {
85
+ case 'timestamp':
86
+ this.getRecentTopics(scrollIndex);
87
+ break;
88
+ case 'best':
89
+ // this.discussionList = _.uniqBy(this.data.bestPosts, 'tid');
90
+ this.discussService.fetchBestPost(scrollIndex).subscribe(result => {
91
+ if (result) {
92
+ const bestPost = result['posts'].filter(p => (p.isMainPost === true));
93
+ this.discussionList = [...this.discussionList, ...bestPost];
94
+ this.pagination = _.get(result, 'pagination');
95
+ this.showLoader = false;
96
+ }
97
+ else {
98
+ this.showLoader = false;
99
+ this.discussionList = [];
100
+ }
101
+ }, error => {
102
+ // error code check
103
+ this.discussService.showTrafficAlert(error);
104
+ });
105
+ break;
106
+ case 'saved':
107
+ this.discussService.fetchSaved(scrollIndex).subscribe(response => {
108
+ if (response) {
109
+ // this.discussionList = _.uniqBy(response['posts'], 'tid');
110
+ this.discussionList = [...this.discussionList, ...response['posts']];
111
+ this.pagination = _.get(response, 'pagination');
112
+ this.showLoader = false;
113
+ }
114
+ else {
115
+ this.showLoader = false;
116
+ this.discussionList = [];
117
+ }
118
+ },
119
+ // tslint:disable-next-line
120
+ (error) => {
121
+ // error code check
122
+ this.discussService.showTrafficAlert(error);
123
+ this.discussionList = [];
124
+ });
125
+ break;
126
+ case 'watched':
127
+ this.showLoader = false;
128
+ this.discussionList = [];
129
+ break;
130
+ case 'upvoted':
131
+ this.discussService.fetchUpvoted(scrollIndex).subscribe(response => {
132
+ if (response) {
133
+ // this.discussionList = _.uniqBy(response['posts'], 'tid');
134
+ const upvoted = response['posts'].filter(p => (p.isMainPost === true));
135
+ this.pagination = _.get(response, 'pagination');
136
+ this.discussionList = [...this.discussionList, ...upvoted];
137
+ this.showLoader = false;
138
+ }
139
+ else {
140
+ this.showLoader = false;
141
+ this.discussionList = [];
142
+ }
143
+ },
144
+ // tslint:disable-next-line
145
+ (error) => {
146
+ this.discussionList = [];
147
+ // error code check
148
+ this.discussService.showTrafficAlert(error);
149
+ });
150
+ break;
151
+ case 'downvoted':
152
+ this.discussService.fetchDownvoted(scrollIndex).subscribe(response => {
153
+ if (response) {
154
+ // this.discussionList = _.uniqBy(response['posts'], 'tid');
155
+ const downvoted = response['posts'].filter(p => (p.isMainPost === true));
156
+ this.discussionList = [...this.discussionList, ...downvoted];
157
+ this.pagination = _.get(response, 'pagination');
158
+ this.showLoader = false;
159
+ }
160
+ else {
161
+ this.showLoader = false;
162
+ this.discussionList = [];
163
+ }
164
+ },
165
+ // tslint:disable-next-line
166
+ (error) => {
167
+ this.discussionList = [];
168
+ // error code check
169
+ this.discussService.showTrafficAlert(error);
170
+ });
171
+ break;
172
+ default:
173
+ // this.discussionList = _.uniqBy(this.data.latestPosts, 'tid');
174
+ this.pagination = _.get(this.data, 'pagination');
175
+ this.discussionList = _.get(this.data, 'latestPosts');
176
+ break;
177
+ }
178
+ }
179
+ }
180
+ navigateToDiscussionDetails(discussionData) {
181
+ console.log('discussionData', discussionData);
182
+ const slug = _.get(discussionData, 'slug') || _.get(discussionData, 'topic.slug');
183
+ this.router.navigate([`${this.configService.getRouterSlug()}${CONSTANTS.ROUTES.TOPIC}${slug}`]);
184
+ }
185
+ logTelemetry(event) {
186
+ this.telemetryUtils.logInteract(event, NSDiscussData.IPageName.MY_DISCUSSION);
187
+ }
188
+ /**
189
+ * @description - getting the recent post data
190
+ * @param {number} scrollIndex
191
+ */
192
+ getRecentTopics(scrollIndex) {
193
+ const userId = this.discussService.userId;
194
+ // const userSlug = this.discussService.userDetails.userslug;
195
+ combineLatest([
196
+ this.discussService.fetchUserProfile(userId),
197
+ this.discussService.fetchRecentPost(scrollIndex)
198
+ ]).subscribe(result => {
199
+ console.log('getRecentTopics', result);
200
+ this.showLoader = false;
201
+ this.data = _.merge(result[0], result[1]);
202
+ this.discussionList = [...this.discussionList, ...(_.get(this.data, 'posts'))];
203
+ this.discussionList = this.discussionList.filter(p => (p.isMainPost === true));
204
+ this.pagination = _.get(this.data, 'pagination');
205
+ }, error => {
206
+ this.showLoader = false;
207
+ console.log(error);
208
+ });
209
+ }
210
+ /**
211
+ * @description - call the topic get api when scrolled down and setting the limit of API Call
212
+ */
213
+ onModalScrollDown() {
214
+ if (this.pagination.currentPage !== this.pagination.pageCount) {
215
+ this.pagination.currentPage = this.pagination.next.page;
216
+ const resetpagination = false;
217
+ // using settimeout to avoid the function call before getting the pagination response from api,
218
+ // because the api is called twice with the same page index
219
+ setTimeout(() => {
220
+ this.filter(this.currentFilter, resetpagination);
221
+ }, 800);
222
+ }
223
+ }
224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MyDiscussionComponent, deps: [{ token: i1.DiscussionService }, { token: i2.ConfigService }, { token: i3.Router }, { token: i4.TelemetryUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MyDiscussionComponent, selector: "lib-my-discussion", viewQueries: [{ propertyName: "elementView", first: true, predicate: ["scrollContainerHeight"], descendants: true }], ngImport: i0, template: "<lib-app-loader *ngIf=\"showLoader\"></lib-app-loader>\n\n<div class=\"profileCard\">\n <div class=\"profile-card-content\">\n <div class=\"profile-header-image\">\n <div class=\"box-text\">\n <span class=\"box-label\"></span>{{ data?.username | splitInitials }}\n </div>\n </div>\n <div>\n <div class=\"profile-label name\" [innerHTML]=\"data?.username\"></div>\n <div class=\"profile-label department\">{{ department }}</div>\n <div class=\"profile-label location\">{{ location }}</div>\n <div class=\"profile-label email\">{{ data?.email || data?.username }}</div>\n <ng-container>\n <div class=\"my-discuss-topics\">\n <div class=\"my-discuss-topics__content\">\n <div class=\"my-discuss-label\">\n <span class=\"number\">{{ data?.topiccount || 0 }}</span>\n Discussions\n </div>\n <div class=\"post-count-area my-discuss-label\">\n <span class=\"number\">{{ data?.postcount || 0 }}</span>\n Posts\n </div>\n </div>\n <div class=\"text-right\">\n <!-- Enable lated when other user can visit your profile -->\n <!-- <span class=\"noocoments\" mat-card-subtitle>Last online {{data?.lastonline | pipeRelativeTime}}</span> -->\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-container>\n <div class=\"recent-tabs\">\n <div class=\"tabs-content\">\n <div class=\"tabs-filter\">\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'timestamp',\n 'ws-mat-accent-border font-medium': currentFilter !== 'timestamp'\n }\" (click)=\"filter('timestamp', true); logTelemetry($event)\" id=\"recent-post\">\n Recent posts\n </a>\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'best',\n 'ws-mat-accent-border font-medium': currentFilter !== 'best'\n }\" (click)=\"filter('best', true); logTelemetry($event)\" id=\"best-post\">\n Best posts\n </a>\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'saved',\n 'ws-mat-accent-border font-medium': currentFilter !== 'saved'\n }\" (click)=\"filter('saved', true); logTelemetry($event)\" id=\"saved-post\">\n Saved posts\n </a>\n <!-- <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option \" [ngClass]=\"{'ws-mat-accent-border-active' : currentFilter === 'watched',\n 'ws-mat-accent-border font-medium':currentFilter !== 'watched'}\" mat-button\n (click)=\"filter('watched')\">\n Watched </a> -->\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'upvoted',\n 'ws-mat-accent-border font-medium': currentFilter !== 'upvoted'\n }\" (click)=\"filter('upvoted', true); logTelemetry($event)\" id=\"upvoted-post\">\n Upvoted\n </a>\n\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'downvoted',\n 'ws-mat-accent-border font-medium': currentFilter !== 'downvoted'\n }\" (click)=\"filter('downvoted', true); logTelemetry($event)\" id=\"downvoted-post\">\n Downvoted\n </a>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div *ngIf=\"discussionList && discussionList.length > 0\" class=\"topic-list-container\" id=\"topic-scroll\"\n #scrollContainerHeight>\n <!--infinite scroll-->\n <div [infiniteScrollContainer]=\"'.topic-list-container'\" infinite-scroll class=\"infinite-scroll\"\n [scrollWindow]=\"false\" [infiniteScrollDistance]=\"InfiniteScrollConfig.modalScrollDistance\" [fromRoot]=\"true\"\n [infiniteScrollThrottle]=\"InfiniteScrollConfig.modalScrollThrottle\" (scrolled)=\"onModalScrollDown()\">\n <ng-container *ngFor=\"let data of discussionList\">\n <div (click)=\"navigateToDiscussionDetails(data); logTelemetry($event)\" id=\"discuss-card\">\n <lib-discuss-card [discussionData]=\"data\"></lib-discuss-card>\n </div>\n </ng-container>\n </div>\n</div>\n\n<lib-app-loader *ngIf=\"showLoader\"></lib-app-loader>\n<ng-container *ngIf=\"!(discussionList && discussionList.length > 0)\">\n <div class=\"no-card-content\" tabindex=\"0\">\n <div class=\"no-data-label\">No Data</div>\n <div>\n <span>&nbsp;</span>\n </div>\n </div>\n</ng-container>", styles: ["::ng-deep:root{--df-box-text:var(--white);--df-profile-bg: var(--primary-400)}.profileCard{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;background:var(--df-card-bg);color:var(--df-text);flex:1;height:auto;margin-bottom:0;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:1rem;border-radius:.25rem;width:auto}.profileCard .profile-card-content{display:flex;flex-wrap:wrap}.profileCard .profile-card-content .profile-header-image{display:flex;justify-content:center;align-items:center;width:100%;border-radius:.25rem;max-width:9.5rem;height:8.4375rem;border:.0625rem solid var(--gray-100);margin-right:1.5rem;background:var(--df-profile-bg);text-align:center}.profileCard .profile-card-content .profile-header-image .box-text{font-size:4rem;color:var(--df-box-text);text-transform:uppercase}.profileCard .profile-card-content .profile-header-image .box-text .box-label{color:var(--white);font-size:1rem;line-height:.75rem;letter-spacing:.2625px;text-transform:uppercase}.profileCard .profile-card-content .profile-label{font-weight:700;margin-bottom:.5rem;font-size:.875rem}.profileCard .profile-card-content .name{font-size:1rem}.profileCard .profile-card-content .my-discuss-topics{font-size:.875rem;margin:1rem 0;font-weight:600}.profileCard .profile-card-content .my-discuss-topics__content{display:flex}.profileCard .profile-card-content .my-discuss-topics__content .my-discussion-label{margin:0 .5rem}.profileCard .profile-card-content .my-discuss-topics__content .my-discussion-label .number{color:var(--primary-300)}.profileCard .profile-card-content .my-discuss-topics__content .post-count-area{margin-left:2rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DiscussCardComponent, selector: "lib-discuss-card", inputs: ["discussionData"] }, { kind: "component", type: i7.AppLoaderComponent, selector: "lib-app-loader", inputs: ["data"] }, { kind: "directive", type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i9.SplitInitialsPipe, name: "splitInitials" }] }); }
226
+ }
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MyDiscussionComponent, decorators: [{
228
+ type: Component,
229
+ args: [{ selector: 'lib-my-discussion', template: "<lib-app-loader *ngIf=\"showLoader\"></lib-app-loader>\n\n<div class=\"profileCard\">\n <div class=\"profile-card-content\">\n <div class=\"profile-header-image\">\n <div class=\"box-text\">\n <span class=\"box-label\"></span>{{ data?.username | splitInitials }}\n </div>\n </div>\n <div>\n <div class=\"profile-label name\" [innerHTML]=\"data?.username\"></div>\n <div class=\"profile-label department\">{{ department }}</div>\n <div class=\"profile-label location\">{{ location }}</div>\n <div class=\"profile-label email\">{{ data?.email || data?.username }}</div>\n <ng-container>\n <div class=\"my-discuss-topics\">\n <div class=\"my-discuss-topics__content\">\n <div class=\"my-discuss-label\">\n <span class=\"number\">{{ data?.topiccount || 0 }}</span>\n Discussions\n </div>\n <div class=\"post-count-area my-discuss-label\">\n <span class=\"number\">{{ data?.postcount || 0 }}</span>\n Posts\n </div>\n </div>\n <div class=\"text-right\">\n <!-- Enable lated when other user can visit your profile -->\n <!-- <span class=\"noocoments\" mat-card-subtitle>Last online {{data?.lastonline | pipeRelativeTime}}</span> -->\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-container>\n <div class=\"recent-tabs\">\n <div class=\"tabs-content\">\n <div class=\"tabs-filter\">\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'timestamp',\n 'ws-mat-accent-border font-medium': currentFilter !== 'timestamp'\n }\" (click)=\"filter('timestamp', true); logTelemetry($event)\" id=\"recent-post\">\n Recent posts\n </a>\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'best',\n 'ws-mat-accent-border font-medium': currentFilter !== 'best'\n }\" (click)=\"filter('best', true); logTelemetry($event)\" id=\"best-post\">\n Best posts\n </a>\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'saved',\n 'ws-mat-accent-border font-medium': currentFilter !== 'saved'\n }\" (click)=\"filter('saved', true); logTelemetry($event)\" id=\"saved-post\">\n Saved posts\n </a>\n <!-- <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option \" [ngClass]=\"{'ws-mat-accent-border-active' : currentFilter === 'watched',\n 'ws-mat-accent-border font-medium':currentFilter !== 'watched'}\" mat-button\n (click)=\"filter('watched')\">\n Watched </a> -->\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'upvoted',\n 'ws-mat-accent-border font-medium': currentFilter !== 'upvoted'\n }\" (click)=\"filter('upvoted', true); logTelemetry($event)\" id=\"upvoted-post\">\n Upvoted\n </a>\n\n <a href=\"javascript:void(0)\" role=\"link\" class=\"filter-option\" [ngClass]=\"{\n 'tabs-active': currentFilter === 'downvoted',\n 'ws-mat-accent-border font-medium': currentFilter !== 'downvoted'\n }\" (click)=\"filter('downvoted', true); logTelemetry($event)\" id=\"downvoted-post\">\n Downvoted\n </a>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div *ngIf=\"discussionList && discussionList.length > 0\" class=\"topic-list-container\" id=\"topic-scroll\"\n #scrollContainerHeight>\n <!--infinite scroll-->\n <div [infiniteScrollContainer]=\"'.topic-list-container'\" infinite-scroll class=\"infinite-scroll\"\n [scrollWindow]=\"false\" [infiniteScrollDistance]=\"InfiniteScrollConfig.modalScrollDistance\" [fromRoot]=\"true\"\n [infiniteScrollThrottle]=\"InfiniteScrollConfig.modalScrollThrottle\" (scrolled)=\"onModalScrollDown()\">\n <ng-container *ngFor=\"let data of discussionList\">\n <div (click)=\"navigateToDiscussionDetails(data); logTelemetry($event)\" id=\"discuss-card\">\n <lib-discuss-card [discussionData]=\"data\"></lib-discuss-card>\n </div>\n </ng-container>\n </div>\n</div>\n\n<lib-app-loader *ngIf=\"showLoader\"></lib-app-loader>\n<ng-container *ngIf=\"!(discussionList && discussionList.length > 0)\">\n <div class=\"no-card-content\" tabindex=\"0\">\n <div class=\"no-data-label\">No Data</div>\n <div>\n <span>&nbsp;</span>\n </div>\n </div>\n</ng-container>", styles: ["::ng-deep:root{--df-box-text:var(--white);--df-profile-bg: var(--primary-400)}.profileCard{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;background:var(--df-card-bg);color:var(--df-text);flex:1;height:auto;margin-bottom:0;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:1rem;border-radius:.25rem;width:auto}.profileCard .profile-card-content{display:flex;flex-wrap:wrap}.profileCard .profile-card-content .profile-header-image{display:flex;justify-content:center;align-items:center;width:100%;border-radius:.25rem;max-width:9.5rem;height:8.4375rem;border:.0625rem solid var(--gray-100);margin-right:1.5rem;background:var(--df-profile-bg);text-align:center}.profileCard .profile-card-content .profile-header-image .box-text{font-size:4rem;color:var(--df-box-text);text-transform:uppercase}.profileCard .profile-card-content .profile-header-image .box-text .box-label{color:var(--white);font-size:1rem;line-height:.75rem;letter-spacing:.2625px;text-transform:uppercase}.profileCard .profile-card-content .profile-label{font-weight:700;margin-bottom:.5rem;font-size:.875rem}.profileCard .profile-card-content .name{font-size:1rem}.profileCard .profile-card-content .my-discuss-topics{font-size:.875rem;margin:1rem 0;font-weight:600}.profileCard .profile-card-content .my-discuss-topics__content{display:flex}.profileCard .profile-card-content .my-discuss-topics__content .my-discussion-label{margin:0 .5rem}.profileCard .profile-card-content .my-discuss-topics__content .my-discussion-label .number{color:var(--primary-300)}.profileCard .profile-card-content .my-discuss-topics__content .post-count-area{margin-left:2rem}\n"] }]
230
+ }], ctorParameters: function () { return [{ type: i1.DiscussionService }, { type: i2.ConfigService }, { type: i3.Router }, { type: i4.TelemetryUtilsService }]; }, propDecorators: { elementView: [{
231
+ type: ViewChild,
232
+ args: ['scrollContainerHeight']
233
+ }] } });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktZGlzY3Vzc2lvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaXNjdXNzaW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy9teS1kaXNjdXNzaW9uL215LWRpc2N1c3Npb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlzY3Vzc2lvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvbXktZGlzY3Vzc2lvbi9teS1kaXNjdXNzaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0QsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFDckMsbUJBQW1CO0FBT25CLE1BQU0sT0FBTyxxQkFBcUI7SUFvQmhDLFlBQ1UsY0FBaUMsRUFDakMsYUFBNEIsRUFDN0IsTUFBYyxFQUNiLGNBQXFDO1FBSHJDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBcEIvQyxtQkFBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtRQUN6QyxrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQUk1QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FB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QUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDeEQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzlCLGdHQUFnRztZQUNoRywyREFBMkQ7WUFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUE7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7SUFDSCxDQUFDOytHQTFOVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwrS0NqQmxDLDBzSkFzR2U7OzRGRHJGRixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzZMQU1PLFdBQVc7c0JBQTlDLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlzY3Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2Rpc2N1c3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZWxlbWV0cnlVdGlsc1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3RlbGVtZXRyeS11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IE5TRGlzY3Vzc0RhdGEgfSBmcm9tICcuLy4uLy4uL21vZGVscy9kaXNjdXNzLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgKiBhcyBDT05TVEFOVFMgZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy5qc29uJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1teS1kaXNjdXNzaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL215LWRpc2N1c3Npb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9teS1kaXNjdXNzaW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTXlEaXNjdXNzaW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXJIZWlnaHQnKSBlbGVtZW50VmlldzogRWxlbWVudFJlZjtcbiAgZGF0YTsgLy8gdGhpcyBpcyBmb3IgdXNlclxuICBkaXNjdXNzaW9uTGlzdCA9IFtdOyAvLyB0aGlzIGlzIGZvciBwb3N0c1xuICBjdXJyZW50RmlsdGVyID0gJ3RpbWVzdGFtcCc7XG4gIGRlcGFydG1lbnQhOiBzdHJpbmcgfCBudWxsO1xuICBsb2NhdGlvbiE6IHN0cmluZyB8IG51bGw7XG4gIHByb2ZpbGVQaG90byE6IHN0cmluZztcbiAgdXNlckluaXRpYWwgPSAnJztcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwYWdpbmF0aW9uID0gT2JqZWN0LmNyZWF0ZSh7fSk7XG4gIHJlY2VudEZpbHRlcjtcblxuICAvLyBJbnB1dCBwYXJhbWV0ZXJzIGZvciBpbmZpbml0ZSBzY3JvbGxcbiAgSW5maW5pdGVTY3JvbGxDb25maWcgPSB7XG4gICAgbW9kYWxTY3JvbGxEaXN0YW5jZTogMixcbiAgICBtb2RhbFNjcm9sbFRocm90dGxlOiA1MFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGlzY3Vzc1NlcnZpY2U6IERpc2N1c3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB0ZWxlbWV0cnlVdGlsczogVGVsZW1ldHJ5VXRpbHNTZXJ2aWNlKSB7IH1cblxuICAvKiogVG8gZmV0Y2ggdXNlciBkZXRhaWxzICovXG4gIGZldGNoVXNlclByb2ZpbGUodXNlck5hbWUpIHtcbiAgICB0aGlzLmRpc2N1c3NTZXJ2aWNlLmZldGNoVXNlclByb2ZpbGUodXNlck5hbWUpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgaWYgKF8uZ2V0KHRoaXMuZGF0YSwgJ3Bvc3RzJykpIHtcbiAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IF8uZ2V0KHRoaXMuZGF0YSwgJ3Bvc3RzJykuZmlsdGVyKHAgPT4gKHAuaXNNYWluUG9zdCA9PT0gdHJ1ZSkpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlKSB7XG4gICAgICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCwgdGhpcy5wcm9maWxlUGhvdG8pO1xuICAgICAgLy8gfVxuICAgIH0sIGVycm9yID0+IHtcbiAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgLy8gZXJyb3IgY29kZSBjaGVja1xuICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5zaG93VHJhZmZpY0FsZXJ0KGVycm9yKTtcbiAgICAgIC8vIFRPRE86IFRvYXN0ZXJcbiAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBmZXRjaGluZyB1c2VyIGRldGFpbHMnKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGVsZW1ldHJ5VXRpbHMuc2V0Q29udGV4dChbXSk7XG4gICAgdGhpcy50ZWxlbWV0cnlVdGlscy5sb2dJbXByZXNzaW9uKE5TRGlzY3Vzc0RhdGEuSVBhZ2VOYW1lLk1ZX0RJU0NVU1NJT04pO1xuICAgIHRoaXMuZmlsdGVyKHRoaXMuY3VycmVudEZpbHRlciwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiAtIHNldCB0aGUgc2Nyb2xsIGNvbnRhaW5lciBoZWlnaHRcbiAgICovXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50VmlldyAmJiB0aGlzLmVsZW1lbnRWaWV3Lm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMuZWxlbWVudFZpZXcubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQpIHtcbiAgICAgIC8vIHRoZSBudW1iZXIgMTAgaXMganVzdCBhIHJhbmRvbSB2YWx1ZSB0byByZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgcGFyZW50IGNvbnRhaW5lciB0byB0aGUgaW5maW5pdGUgc2Nyb2xsXG4gICAgICB0aGlzLmVsZW1lbnRWaWV3Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKHRoaXMuZWxlbWVudFZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgLSAxMCkgKyAncHgnO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEBwYXJhbSAge3N0cmluZ3wndGltZXN0YW1wJ3wnYmVzdCd8J3NhdmVkJ3wnd2F0Y2hlZCd8J3Vwdm90ZWQnfCdkb3dudm90ZWQnfSBrZXlcbiAgICogQHBhcmFtICB7Ym9vbGVhbn0gcmVzZXRwYWdpbmF0aW9uIC0gaXRzIHVzZWQgdG8gcmVzZXQgdGhlIHBhZ2luYXRpb24gdmFsdWUgYmFzZWQgb24gdGhlIGZpbHRlciBkYXRhXG4gICAqL1xuICBmaWx0ZXIoa2V5OiBzdHJpbmcgfCAndGltZXN0YW1wJyB8ICdiZXN0JyB8ICdzYXZlZCcgfCAnd2F0Y2hlZCcgfCAndXB2b3RlZCcgfCAnZG93bnZvdGVkJywgcmVzZXRwYWdpbmF0aW9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyID0ga2V5O1xuICAgIGlmIChrZXkpIHtcbiAgICAgIC8vIHJlc2V0IHRoZSBjdXJyZW50cGFnZSB2YWx1ZSB0byAxIGFuZCByZXNldCB0aGUgZGlzY3Vzc2lvbkxpc3QgZGF0YSBiYXNlZCBvbiB0aGUgcmVzcGVjdGl2ZSBhcGkgcmVzcG9uc2Ugd2hlbiB0aGUgZmlsdGVyIGlzIGNoYW5nZWRcbiAgICAgIGlmIChyZXNldHBhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFtdXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB9XG4gICAgICAvLyBzZXR0aW5nIHRoZSBjdXJyZW50IHBhZ2UgaW5kZXggXG4gICAgICBjb25zdCBzY3JvbGxJbmRleCA9IHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSA/IHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSA6IDE7XG4gICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgICAgICB0aGlzLmdldFJlY2VudFRvcGljcyhzY3JvbGxJbmRleCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jlc3QnOlxuICAgICAgICAgIC8vIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSBfLnVuaXFCeSh0aGlzLmRhdGEuYmVzdFBvc3RzLCAndGlkJyk7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5mZXRjaEJlc3RQb3N0KHNjcm9sbEluZGV4KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgYmVzdFBvc3QgPSByZXN1bHRbJ3Bvc3RzJ10uZmlsdGVyKHAgPT4gKHAuaXNNYWluUG9zdCA9PT0gdHJ1ZSkpO1xuICAgICAgICAgICAgICB0aGlzLmRpc2N1c3Npb25MaXN0ID0gWy4uLnRoaXMuZGlzY3Vzc2lvbkxpc3QsIC4uLmJlc3RQb3N0XTtcbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gXy5nZXQocmVzdWx0LCAncGFnaW5hdGlvbicpO1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmRpc2N1c3Npb25MaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgLy8gZXJyb3IgY29kZSBjaGVja1xuICAgICAgICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5zaG93VHJhZmZpY0FsZXJ0KGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2F2ZWQnOlxuICAgICAgICAgIHRoaXMuZGlzY3Vzc1NlcnZpY2UuZmV0Y2hTYXZlZChzY3JvbGxJbmRleCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAvLyB0aGlzLmRpc2N1c3Npb25MaXN0ID0gXy51bmlxQnkocmVzcG9uc2VbJ3Bvc3RzJ10sICd0aWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFsuLi50aGlzLmRpc2N1c3Npb25MaXN0LCAuLi5yZXNwb25zZVsncG9zdHMnXV07XG4gICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IF8uZ2V0KHJlc3BvbnNlLCAncGFnaW5hdGlvbicpO1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmRpc2N1c3Npb25MaXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGVycm9yIGNvZGUgY2hlY2tcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5zaG93VHJhZmZpY0FsZXJ0KGVycm9yKTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFtdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd2F0Y2hlZCc6XG4gICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd1cHZvdGVkJzpcbiAgICAgICAgICB0aGlzLmRpc2N1c3NTZXJ2aWNlLmZldGNoVXB2b3RlZChzY3JvbGxJbmRleCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAvLyB0aGlzLmRpc2N1c3Npb25MaXN0ID0gXy51bmlxQnkocmVzcG9uc2VbJ3Bvc3RzJ10sICd0aWQnKTtcbiAgICAgICAgICAgICAgY29uc3QgdXB2b3RlZCA9IHJlc3BvbnNlWydwb3N0cyddLmZpbHRlcihwID0+IChwLmlzTWFpblBvc3QgPT09IHRydWUpKTtcbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gXy5nZXQocmVzcG9uc2UsICdwYWdpbmF0aW9uJyk7XG4gICAgICAgICAgICAgIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSBbLi4udGhpcy5kaXNjdXNzaW9uTGlzdCwgLi4udXB2b3RlZF07XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFtdO1xuICAgICAgICAgICAgICAvLyBlcnJvciBjb2RlIGNoZWNrXG4gICAgICAgICAgICAgIHRoaXMuZGlzY3Vzc1NlcnZpY2Uuc2hvd1RyYWZmaWNBbGVydChlcnJvcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkb3dudm90ZWQnOlxuICAgICAgICAgIHRoaXMuZGlzY3Vzc1NlcnZpY2UuZmV0Y2hEb3dudm90ZWQoc2Nyb2xsSW5kZXgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgLy8gdGhpcy5kaXNjdXNzaW9uTGlzdCA9IF8udW5pcUJ5KHJlc3BvbnNlWydwb3N0cyddLCAndGlkJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvd252b3RlZCA9IHJlc3BvbnNlWydwb3N0cyddLmZpbHRlcihwID0+IChwLmlzTWFpblBvc3QgPT09IHRydWUpKTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFsuLi50aGlzLmRpc2N1c3Npb25MaXN0LCAuLi5kb3dudm90ZWRdO1xuICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSBfLmdldChyZXNwb25zZSwgJ3BhZ2luYXRpb24nKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRpc2N1c3Npb25MaXN0ID0gW107XG4gICAgICAgICAgICAgIC8vIGVycm9yIGNvZGUgY2hlY2tcbiAgICAgICAgICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5zaG93VHJhZmZpY0FsZXJ0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIC8vIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSBfLnVuaXFCeSh0aGlzLmRhdGEubGF0ZXN0UG9zdHMsICd0aWQnKTtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSBfLmdldCh0aGlzLmRhdGEsICdwYWdpbmF0aW9uJyk7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzaW9uTGlzdCA9IF8uZ2V0KHRoaXMuZGF0YSwgJ2xhdGVzdFBvc3RzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVUb0Rpc2N1c3Npb25EZXRhaWxzKGRpc2N1c3Npb25EYXRhKSB7XG4gICAgY29uc29sZS5sb2coJ2Rpc2N1c3Npb25EYXRhJywgZGlzY3Vzc2lvbkRhdGEpO1xuICAgIGNvbnN0IHNsdWcgPSBfLmdldChkaXNjdXNzaW9uRGF0YSwgJ3NsdWcnKSB8fCBfLmdldChkaXNjdXNzaW9uRGF0YSwgJ3RvcGljLnNsdWcnKVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Um91dGVyU2x1ZygpfSR7Q09OU1RBTlRTLlJPVVRFUy5UT1BJQ30ke3NsdWd9YF0pO1xuICB9XG5cbiAgbG9nVGVsZW1ldHJ5KGV2ZW50KSB7XG4gICAgdGhpcy50ZWxlbWV0cnlVdGlscy5sb2dJbnRlcmFjdChldmVudCwgTlNEaXNjdXNzRGF0YS5JUGFnZU5hbWUuTVlfRElTQ1VTU0lPTik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIC0gZ2V0dGluZyB0aGUgcmVjZW50IHBvc3QgZGF0YVxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IHNjcm9sbEluZGV4XG4gICAqL1xuICBnZXRSZWNlbnRUb3BpY3Moc2Nyb2xsSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZGlzY3Vzc1NlcnZpY2UudXNlcklkO1xuICAgIC8vIGNvbnN0IHVzZXJTbHVnID0gdGhpcy5kaXNjdXNzU2VydmljZS51c2VyRGV0YWlscy51c2Vyc2x1ZztcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGlzY3Vzc1NlcnZpY2UuZmV0Y2hVc2VyUHJvZmlsZSh1c2VySWQpLFxuICAgICAgdGhpcy5kaXNjdXNzU2VydmljZS5mZXRjaFJlY2VudFBvc3Qoc2Nyb2xsSW5kZXgpXG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnZ2V0UmVjZW50VG9waWNzJywgcmVzdWx0KVxuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmRhdGEgPSBfLm1lcmdlKHJlc3VsdFswXSwgcmVzdWx0WzFdKTtcbiAgICAgIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSBbLi4udGhpcy5kaXNjdXNzaW9uTGlzdCwgLi4uKF8uZ2V0KHRoaXMuZGF0YSwgJ3Bvc3RzJykpXTtcbiAgICAgIHRoaXMuZGlzY3Vzc2lvbkxpc3QgPSB0aGlzLmRpc2N1c3Npb25MaXN0LmZpbHRlcihwID0+IChwLmlzTWFpblBvc3QgPT09IHRydWUpKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbiA9IF8uZ2V0KHRoaXMuZGF0YSwgJ3BhZ2luYXRpb24nKTtcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiAtIGNhbGwgdGhlIHRvcGljIGdldCBhcGkgd2hlbiBzY3JvbGxlZCBkb3duIGFuZCBzZXR0aW5nIHRoZSBsaW1pdCBvZiBBUEkgQ2FsbFxuICAgKi9cbiAgb25Nb2RhbFNjcm9sbERvd24oKSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbi5jdXJyZW50UGFnZSAhPT0gdGhpcy5wYWdpbmF0aW9uLnBhZ2VDb3VudCkge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24uY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2luYXRpb24ubmV4dC5wYWdlO1xuICAgICAgICBjb25zdCByZXNldHBhZ2luYXRpb24gPSBmYWxzZTtcbiAgICAgICAgLy8gdXNpbmcgc2V0dGltZW91dCB0byBhdm9pZCB0aGUgZnVuY3Rpb24gY2FsbCBiZWZvcmUgZ2V0dGluZyB0aGUgcGFnaW5hdGlvbiByZXNwb25zZSBmcm9tIGFwaSwgXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIGFwaSBpcyBjYWxsZWQgdHdpY2Ugd2l0aCB0aGUgc2FtZSBwYWdlIGluZGV4XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsdGVyKHRoaXMuY3VycmVudEZpbHRlciwgcmVzZXRwYWdpbmF0aW9uKVxuICAgICAgICB9LCA4MDApOyBcbiAgICB9XG4gIH1cbn1cbiIsIjxsaWItYXBwLWxvYWRlciAqbmdJZj1cInNob3dMb2FkZXJcIj48L2xpYi1hcHAtbG9hZGVyPlxuXG48ZGl2IGNsYXNzPVwicHJvZmlsZUNhcmRcIj5cbiAgPGRpdiBjbGFzcz1cInByb2ZpbGUtY2FyZC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaGVhZGVyLWltYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm94LXRleHRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJib3gtbGFiZWxcIj48L3NwYW4+e3sgZGF0YT8udXNlcm5hbWUgfCBzcGxpdEluaXRpYWxzIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgbmFtZVwiIFtpbm5lckhUTUxdPVwiZGF0YT8udXNlcm5hbWVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWxhYmVsIGRlcGFydG1lbnRcIj57eyBkZXBhcnRtZW50IH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1sYWJlbCBsb2NhdGlvblwiPnt7IGxvY2F0aW9uIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1sYWJlbCBlbWFpbFwiPnt7IGRhdGE/LmVtYWlsIHx8IGRhdGE/LnVzZXJuYW1lIH19PC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktZGlzY3Vzcy10b3BpY3NcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktZGlzY3Vzcy10b3BpY3NfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS1kaXNjdXNzLWxhYmVsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyXCI+e3sgZGF0YT8udG9waWNjb3VudCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICBEaXNjdXNzaW9uc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zdC1jb3VudC1hcmVhIG15LWRpc2N1c3MtbGFiZWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXJcIj57eyBkYXRhPy5wb3N0Y291bnQgfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgUG9zdHNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICA8IS0tIEVuYWJsZSBsYXRlZCB3aGVuIG90aGVyIHVzZXIgY2FuIHZpc2l0IHlvdXIgcHJvZmlsZSAtLT5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJub29jb21lbnRzXCIgbWF0LWNhcmQtc3VidGl0bGU+TGFzdCBvbmxpbmUge3tkYXRhPy5sYXN0b25saW5lIHwgcGlwZVJlbGF0aXZlVGltZX19PC9zcGFuPiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cInJlY2VudC10YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYnMtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYnMtZmlsdGVyXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb2xlPVwibGlua1wiIGNsYXNzPVwiZmlsdGVyLW9wdGlvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd0YWJzLWFjdGl2ZSc6IGN1cnJlbnRGaWx0ZXIgPT09ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgJ3dzLW1hdC1hY2NlbnQtYm9yZGVyIGZvbnQtbWVkaXVtJzogY3VycmVudEZpbHRlciAhPT0gJ3RpbWVzdGFtcCdcbiAgICAgICAgICB9XCIgKGNsaWNrKT1cImZpbHRlcigndGltZXN0YW1wJywgdHJ1ZSk7IGxvZ1RlbGVtZXRyeSgkZXZlbnQpXCIgaWQ9XCJyZWNlbnQtcG9zdFwiPlxuICAgICAgICAgIFJlY2VudCBwb3N0c1xuICAgICAgICA8L2E+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb2xlPVwibGlua1wiIGNsYXNzPVwiZmlsdGVyLW9wdGlvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd0YWJzLWFjdGl2ZSc6IGN1cnJlbnRGaWx0ZXIgPT09ICdiZXN0JyxcbiAgICAgICAgICAgICd3cy1tYXQtYWNjZW50LWJvcmRlciBmb250LW1lZGl1bSc6IGN1cnJlbnRGaWx0ZXIgIT09ICdiZXN0J1xuICAgICAgICAgIH1cIiAoY2xpY2spPVwiZmlsdGVyKCdiZXN0JywgdHJ1ZSk7IGxvZ1RlbGVtZXRyeSgkZXZlbnQpXCIgaWQ9XCJiZXN0LXBvc3RcIj5cbiAgICAgICAgICBCZXN0IHBvc3RzXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHJvbGU9XCJsaW5rXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3RhYnMtYWN0aXZlJzogY3VycmVudEZpbHRlciA9PT0gJ3NhdmVkJyxcbiAgICAgICAgICAgICd3cy1tYXQtYWNjZW50LWJvcmRlciBmb250LW1lZGl1bSc6IGN1cnJlbnRGaWx0ZXIgIT09ICdzYXZlZCdcbiAgICAgICAgICB9XCIgKGNsaWNrKT1cImZpbHRlcignc2F2ZWQnLCB0cnVlKTsgbG9nVGVsZW1ldHJ5KCRldmVudClcIiBpZD1cInNhdmVkLXBvc3RcIj5cbiAgICAgICAgICBTYXZlZCBwb3N0c1xuICAgICAgICA8L2E+XG4gICAgICAgIDwhLS0gPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHJvbGU9XCJsaW5rXCIgY2xhc3M9XCJmaWx0ZXItb3B0aW9uIFwiIFtuZ0NsYXNzXT1cInsnd3MtbWF0LWFjY2VudC1ib3JkZXItYWN0aXZlJyA6IGN1cnJlbnRGaWx0ZXIgPT09ICd3YXRjaGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dzLW1hdC1hY2NlbnQtYm9yZGVyIGZvbnQtbWVkaXVtJzpjdXJyZW50RmlsdGVyICE9PSAnd2F0Y2hlZCd9XCIgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlcignd2F0Y2hlZCcpXCI+XG4gICAgICAgICAgICBXYXRjaGVkIDwvYT4gLS0+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb2xlPVwibGlua1wiIGNsYXNzPVwiZmlsdGVyLW9wdGlvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd0YWJzLWFjdGl2ZSc6IGN1cnJlbnRGaWx0ZXIgPT09ICd1cHZvdGVkJyxcbiAgICAgICAgICAgICd3cy1tYXQtYWNjZW50LWJvcmRlciBmb250LW1lZGl1bSc6IGN1cnJlbnRGaWx0ZXIgIT09ICd1cHZvdGVkJ1xuICAgICAgICAgIH1cIiAoY2xpY2spPVwiZmlsdGVyKCd1cHZvdGVkJywgdHJ1ZSk7IGxvZ1RlbGVtZXRyeSgkZXZlbnQpXCIgaWQ9XCJ1cHZvdGVkLXBvc3RcIj5cbiAgICAgICAgICBVcHZvdGVkXG4gICAgICAgIDwvYT5cblxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgcm9sZT1cImxpbmtcIiBjbGFzcz1cImZpbHRlci1vcHRpb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAndGFicy1hY3RpdmUnOiBjdXJyZW50RmlsdGVyID09PSAnZG93bnZvdGVkJyxcbiAgICAgICAgICAgICd3cy1tYXQtYWNjZW50LWJvcmRlciBmb250LW1lZGl1bSc6IGN1cnJlbnRGaWx0ZXIgIT09ICdkb3dudm90ZWQnXG4gICAgICAgICAgfVwiIChjbGljayk9XCJmaWx0ZXIoJ2Rvd252b3RlZCcsIHRydWUpOyBsb2dUZWxlbWV0cnkoJGV2ZW50KVwiIGlkPVwiZG93bnZvdGVkLXBvc3RcIj5cbiAgICAgICAgICBEb3dudm90ZWRcbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgKm5nSWY9XCJkaXNjdXNzaW9uTGlzdCAmJiBkaXNjdXNzaW9uTGlzdC5sZW5ndGggPiAwXCIgY2xhc3M9XCJ0b3BpYy1saXN0LWNvbnRhaW5lclwiIGlkPVwidG9waWMtc2Nyb2xsXCJcbiAgI3Njcm9sbENvbnRhaW5lckhlaWdodD5cbiAgPCEtLWluZmluaXRlIHNjcm9sbC0tPlxuICA8ZGl2IFtpbmZpbml0ZVNjcm9sbENvbnRhaW5lcl09XCInLnRvcGljLWxpc3QtY29udGFpbmVyJ1wiIGluZmluaXRlLXNjcm9sbCBjbGFzcz1cImluZmluaXRlLXNjcm9sbFwiXG4gICAgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIkluZmluaXRlU2Nyb2xsQ29uZmlnLm1vZGFsU2Nyb2xsRGlzdGFuY2VcIiBbZnJvbVJvb3RdPVwidHJ1ZVwiXG4gICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiSW5maW5pdGVTY3JvbGxDb25maWcubW9kYWxTY3JvbGxUaHJvdHRsZVwiIChzY3JvbGxlZCk9XCJvbk1vZGFsU2Nyb2xsRG93bigpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkaXNjdXNzaW9uTGlzdFwiPlxuICAgICAgPGRpdiAoY2xpY2spPVwibmF2aWdhdGVUb0Rpc2N1c3Npb25EZXRhaWxzKGRhdGEpOyBsb2dUZWxlbWV0cnkoJGV2ZW50KVwiIGlkPVwiZGlzY3Vzcy1jYXJkXCI+XG4gICAgICAgIDxsaWItZGlzY3Vzcy1jYXJkIFtkaXNjdXNzaW9uRGF0YV09XCJkYXRhXCI+PC9saWItZGlzY3Vzcy1jYXJkPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxsaWItYXBwLWxvYWRlciAqbmdJZj1cInNob3dMb2FkZXJcIj48L2xpYi1hcHAtbG9hZGVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoZGlzY3Vzc2lvbkxpc3QgJiYgZGlzY3Vzc2lvbkxpc3QubGVuZ3RoID4gMClcIj5cbiAgPGRpdiBjbGFzcz1cIm5vLWNhcmQtY29udGVudFwiIHRhYmluZGV4PVwiMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJuby1kYXRhLWxhYmVsXCI+Tm8gRGF0YTwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,79 @@
1
+ import { NSDiscussData } from './../../models/discuss.model';
2
+ import { Component } from '@angular/core';
3
+ import * as CONSTANTS from './../../common/constants.json';
4
+ /* tslint:disable */
5
+ import * as _ from 'lodash';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "./../../services/discussion.service";
9
+ import * as i3 from "./../../telemetry-utils.service";
10
+ import * as i4 from "../../services/config.service";
11
+ import * as i5 from "@angular/common";
12
+ /* tslint:enable */
13
+ export class SidePannelComponent {
14
+ constructor(router, discussService, activatedRoute, telemetryUtils, configService) {
15
+ this.router = router;
16
+ this.discussService = discussService;
17
+ this.activatedRoute = activatedRoute;
18
+ this.telemetryUtils = telemetryUtils;
19
+ this.configService = configService;
20
+ this.defaultPage = 'categories';
21
+ this.menu = [];
22
+ this.showSideMenu = true;
23
+ }
24
+ ngOnInit() {
25
+ // TODO: loader or spinner
26
+ this.telemetryUtils.setContext([]);
27
+ this.hideSidePanel = document.body.classList.contains('widget');
28
+ this.telemetryUtils.logImpression(NSDiscussData.IPageName.HOME);
29
+ this.data = this.configService.getConfig();
30
+ const menuArr = _.get(this.data, 'menuOptions') && _.get(this.data, 'menuOptions').length > 0
31
+ ? this.data.menuOptions : CONSTANTS.MENUOPTIONS;
32
+ // })
33
+ for (let i = 0; i < menuArr.length; i++) {
34
+ if (menuArr[i].enable) {
35
+ this.menu.push(menuArr[i]);
36
+ }
37
+ }
38
+ }
39
+ isActive(selectedItem) {
40
+ this.landingPage = this.data.defaultLandingPage ? this.data.defaultLandingPage : 'categories';
41
+ if (this.router.url.indexOf(`/${selectedItem}`) > -1 || this.selectedTab === selectedItem) {
42
+ if (!this.selectedTab) {
43
+ this.selectedTab = selectedItem;
44
+ }
45
+ return true;
46
+ }
47
+ else if (selectedItem === this.landingPage && !this.selectedTab) {
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ navigate(pageName, event) {
53
+ this.selectedTab = pageName;
54
+ this.telemetryUtils.setContext([]);
55
+ if (event) {
56
+ this.telemetryUtils.logInteract(event, NSDiscussData.IPageName.HOME);
57
+ }
58
+ this.router.navigate([`${this.configService.getRouterSlug()}${CONSTANTS.ROUTES.DISCUSSION}${pageName}`], { queryParamsHandling: "merge" });
59
+ this.closeNav();
60
+ }
61
+ ngOnDestroy() {
62
+ if (this.paramsSubscription) {
63
+ this.paramsSubscription.unsubscribe();
64
+ }
65
+ }
66
+ showMenuButton() {
67
+ this.showSideMenu = this.showSideMenu ? false : true;
68
+ }
69
+ closeNav() {
70
+ this.showSideMenu = this.showSideMenu ? false : true;
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SidePannelComponent, deps: [{ token: i1.Router }, { token: i2.DiscussionService }, { token: i1.ActivatedRoute }, { token: i3.TelemetryUtilsService }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SidePannelComponent, selector: "lib-side-pannel", ngImport: i0, template: "<ul class=\"sb-sidebar-menu pl-0\" *ngIf=\"!hideSidePanel\">\n <!-- <li class=\"df-sidebar-menu-list\" *ngIf=\"false\" (click)=\"navigate('home', $event)\" id=\"all-discussions\"><a>All discussions</a></li> -->\n <li *ngFor='let d of menu' class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': isActive(d.route)}\"\n (click)=\"navigate(d.route, $event)\" id=\"d.route\"><a>{{d.label}}</a></li>\n <!-- <li class=\"df-sidebar-menu-list\" id=\"leader-board\"><a>Leaderboard</a></li> -->\n</ul>\n\n<!-- for mobile-view -->\n<button type=\"button\" class=\"open-btn\" (click)=\"showMenuButton()\">\u2630</button> \n<div class=\"overlay-sidebar\" *ngIf=\"!showSideMenu\">\n <div class=\"overlay-sidebar__menu\">\n <a href=\"javascript:void(0)\" class=\"close-btn\" (click)=\"closeNav()\">&times;</a>\n <div class=\"overlay-sidebar__menu__content\">\n <ul class=\"sb-sidebar-menu-mob pl-0\">\n <li *ngFor='let d of menu' class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': isActive(d.route)}\"\n (click)=\"navigate(d.route, $event)\" id=\"d.route\"><a>{{d.label}}</a></li>\n <!-- <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" *ngIf=\"false\" (click)=\"navigate('home', $event)\" id=\"all-discussions\"><a>All discussions</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': selectedTab === 'categories'}\" (click)=\"navigate('categories', $event)\" id=\"discussion-categories\"><a>Categories</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\"[ngClass]=\"{'menu-active': selectedTab === 'tags'}\" (click)=\"navigate('tags', $event)\" id=\"discussion-tags\"><a>Tags</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': selectedTab === 'my-discussion'}\" (click)=\"navigate('my-discussion', $event)\" id=\"my-discussion\"><a>My discussions</a></li> -->\n </ul>\n </div>\n </div>\n</div>", styles: ["::ng-deep:root{--df-sidebar-menu-text: var(--gray-600);--df-sidebar-menu-active-text: var(--primary);--df-sidebar-menu-bl:var(--primary);--df-sidebar-menu-active-bg: var(--df-common-bg);--open-btn-bg: var(--white);--open-btn-color: var(--gray-800);--df-overlay-sidebar-bg:var(--black);--df-overlay-sidebar-bg-menu:#f5f6fa}.sb-sidebar-menu{list-style-type:none;margin-bottom:0;height:100%;display:inline}.df-sidebar-menu-list{margin-bottom:.5rem;padding:.75rem 1rem;font-size:14px;color:var(--df-sidebar-menu-text);border-left:.125rem solid transparent;cursor:pointer}.df-sidebar-menu-list.menu-active,.df-sidebar-menu-list:hover{background-color:var(--df-sidebar-menu-active-bg);font-weight:700;border-left:.1875rem solid var(--df-sidebar-menu-bl);color:var(--df-sidebar-menu-active-text);border-bottom:0px}.sb-sidebar-menu-mob{list-style-type:none;margin-bottom:0;height:100%;display:inline}.open-btn,.overlay-sidebar{display:none}@media (max-width: 768px){.sb-sidebar-menu{display:none}.open-btn{display:inline;border:none;cursor:pointer;height:2.5rem;width:2.5rem;border-radius:1rem;font-size:1.375rem;background-color:var(--open-btn-bg);box-shadow:3px 3px 2px #0000001a;color:var(--open-btn-color)}.overlay-sidebar{height:100vh;width:100%;overflow:hidden;background:#0006;inset:0;position:absolute;display:inline;z-index:3;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}.overlay-sidebar__menu{position:relative;top:0;height:100%;width:15rem;right:0;z-index:100000;overflow-y:auto;overflow-x:hidden;background-color:var(--df-overlay-sidebar-bg-menu);box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #000}.overlay-sidebar__menu .close-btn{font-size:2.5rem;display:flex;justify-content:flex-end;padding-right:1rem;cursor:pointer}.overlay-sidebar__menu__content{padding:0 1rem;height:100%}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SidePannelComponent, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: 'lib-side-pannel', template: "<ul class=\"sb-sidebar-menu pl-0\" *ngIf=\"!hideSidePanel\">\n <!-- <li class=\"df-sidebar-menu-list\" *ngIf=\"false\" (click)=\"navigate('home', $event)\" id=\"all-discussions\"><a>All discussions</a></li> -->\n <li *ngFor='let d of menu' class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': isActive(d.route)}\"\n (click)=\"navigate(d.route, $event)\" id=\"d.route\"><a>{{d.label}}</a></li>\n <!-- <li class=\"df-sidebar-menu-list\" id=\"leader-board\"><a>Leaderboard</a></li> -->\n</ul>\n\n<!-- for mobile-view -->\n<button type=\"button\" class=\"open-btn\" (click)=\"showMenuButton()\">\u2630</button> \n<div class=\"overlay-sidebar\" *ngIf=\"!showSideMenu\">\n <div class=\"overlay-sidebar__menu\">\n <a href=\"javascript:void(0)\" class=\"close-btn\" (click)=\"closeNav()\">&times;</a>\n <div class=\"overlay-sidebar__menu__content\">\n <ul class=\"sb-sidebar-menu-mob pl-0\">\n <li *ngFor='let d of menu' class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': isActive(d.route)}\"\n (click)=\"navigate(d.route, $event)\" id=\"d.route\"><a>{{d.label}}</a></li>\n <!-- <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" *ngIf=\"false\" (click)=\"navigate('home', $event)\" id=\"all-discussions\"><a>All discussions</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': selectedTab === 'categories'}\" (click)=\"navigate('categories', $event)\" id=\"discussion-categories\"><a>Categories</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\"[ngClass]=\"{'menu-active': selectedTab === 'tags'}\" (click)=\"navigate('tags', $event)\" id=\"discussion-tags\"><a>Tags</a></li>\n <li class=\"df-sidebar-menu-list\" tabindex=\"0\" role=\"link\" [ngClass]=\"{'menu-active': selectedTab === 'my-discussion'}\" (click)=\"navigate('my-discussion', $event)\" id=\"my-discussion\"><a>My discussions</a></li> -->\n </ul>\n </div>\n </div>\n</div>", styles: ["::ng-deep:root{--df-sidebar-menu-text: var(--gray-600);--df-sidebar-menu-active-text: var(--primary);--df-sidebar-menu-bl:var(--primary);--df-sidebar-menu-active-bg: var(--df-common-bg);--open-btn-bg: var(--white);--open-btn-color: var(--gray-800);--df-overlay-sidebar-bg:var(--black);--df-overlay-sidebar-bg-menu:#f5f6fa}.sb-sidebar-menu{list-style-type:none;margin-bottom:0;height:100%;display:inline}.df-sidebar-menu-list{margin-bottom:.5rem;padding:.75rem 1rem;font-size:14px;color:var(--df-sidebar-menu-text);border-left:.125rem solid transparent;cursor:pointer}.df-sidebar-menu-list.menu-active,.df-sidebar-menu-list:hover{background-color:var(--df-sidebar-menu-active-bg);font-weight:700;border-left:.1875rem solid var(--df-sidebar-menu-bl);color:var(--df-sidebar-menu-active-text);border-bottom:0px}.sb-sidebar-menu-mob{list-style-type:none;margin-bottom:0;height:100%;display:inline}.open-btn,.overlay-sidebar{display:none}@media (max-width: 768px){.sb-sidebar-menu{display:none}.open-btn{display:inline;border:none;cursor:pointer;height:2.5rem;width:2.5rem;border-radius:1rem;font-size:1.375rem;background-color:var(--open-btn-bg);box-shadow:3px 3px 2px #0000001a;color:var(--open-btn-color)}.overlay-sidebar{height:100vh;width:100%;overflow:hidden;background:#0006;inset:0;position:absolute;display:inline;z-index:3;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}.overlay-sidebar__menu{position:relative;top:0;height:100%;width:15rem;right:0;z-index:100000;overflow-y:auto;overflow-x:hidden;background-color:var(--df-overlay-sidebar-bg-menu);box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #000}.overlay-sidebar__menu .close-btn{font-size:2.5rem;display:flex;justify-content:flex-end;padding-right:1rem;cursor:pointer}.overlay-sidebar__menu__content{padding:0 1rem;height:100%}}\n"] }]
78
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.DiscussionService }, { type: i1.ActivatedRoute }, { type: i3.TelemetryUtilsService }, { type: i4.ConfigService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5uZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlzY3Vzc2lvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1wYW5uZWwvc2lkZS1wYW5uZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlzY3Vzc2lvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1wYW5uZWwvc2lkZS1wYW5uZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzdELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sS0FBSyxTQUFTLE1BQU0sK0JBQStCLENBQUM7QUFFM0Qsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBOzs7Ozs7O0FBSTNCLG1CQUFtQjtBQU9uQixNQUFNLE9BQU8sbUJBQW1CO0lBZTlCLFlBQ1MsTUFBYyxFQUNkLGNBQWlDLEVBQ2pDLGNBQThCLEVBQzdCLGNBQXFDLEVBQ3JDLGFBQTRCO1FBSjdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWR0QyxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUkzQixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUUvQixpQkFBWSxHQUFZLElBQUksQ0FBQztJQVN6QixDQUFDO0lBRUwsUUFBUTtRQUNOLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFH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SSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkQsQ0FBQzsrR0EzRVUsbUJBQW1CO21HQUFuQixtQkFBbUIsdURDcEJoQyxpaUVBdUJNOzs0RkRITyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTlNEaXNjdXNzRGF0YSB9IGZyb20gJy4vLi4vLi4vbW9kZWxzL2Rpc2N1c3MubW9kZWwnO1xuaW1wb3J0IHsgVGVsZW1ldHJ5VXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi90ZWxlbWV0cnktdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBEaXNjdXNzaW9uU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZGlzY3Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBDT05TVEFOVFMgZnJvbSAnLi8uLi8uLi9jb21tb24vY29uc3RhbnRzLmpzb24nO1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBJZGlzY3Vzc2lvbkNvbmZpZywgSU1lbnVPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Rpc2N1c3Npb24tY29uZmlnLm1vZGVsJztcbi8qIHRzbGludDplbmFibGUgKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtcGFubmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtcGFubmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lkZS1wYW5uZWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlUGFubmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHBhcmFtc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHVzZXJOYW1lOiBzdHJpbmc7XG5cbiAgZGVmYXVsdFBhZ2UgPSAnY2F0ZWdvcmllcyc7XG5cbiAgZGF0YTogSWRpc2N1c3Npb25Db25maWc7XG4gIGhpZGVTaWRlUGFuZWw6IGJvb2xlYW47XG4gIG1lbnU6IEFycmF5PElNZW51T3B0aW9ucz4gPSBbXTtcbiAgc2VsZWN0ZWRUYWI6IHN0cmluZztcbiAgc2hvd1NpZGVNZW51OiBCb29sZWFuID0gdHJ1ZTtcbiAgbGFuZGluZ1BhZ2U6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgZGlzY3Vzc1NlcnZpY2U6IERpc2N1c3Npb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB0ZWxlbWV0cnlVdGlsczogVGVsZW1ldHJ5VXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFRPRE86IGxvYWRlciBvciBzcGlubmVyXG4gICAgdGhpcy50ZWxlbWV0cnlVdGlscy5zZXRDb250ZXh0KFtdKTtcbiAgICB0aGlzLmhpZGVTaWRlUGFuZWwgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnd2lkZ2V0Jyk7XG4gICAgdGhpcy50ZWxlbWV0cnlVdGlscy5sb2dJbXByZXNzaW9uKE5TRGlzY3Vzc0RhdGEuSVBhZ2VOYW1lLkhPTUUpO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICBjb25zdCBtZW51QXJyID0gXy5nZXQodGhpcy5kYXRhLCAnbWVudU9wdGlvbnMnKSAmJiBfLmdldCh0aGlzLmRhdGEsICdtZW51T3B0aW9ucycpLmxlbmd0aCA+IDBcbiAgICAgID8gdGhpcy5kYXRhLm1lbnVPcHRpb25zIDogQ09OU1RBTlRTLk1FTlVPUFRJT05TO1xuICAgIC8vIH0pXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobWVudUFycltpXS5lbmFibGUpIHtcbiAgICAgICAgdGhpcy5tZW51LnB1c2gobWVudUFycltpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBpc0FjdGl2ZShzZWxlY3RlZEl0ZW0pIHtcbiAgICB0aGlzLmxhbmRpbmdQYWdlID0gdGhpcy5kYXRhLmRlZmF1bHRMYW5kaW5nUGFnZSA/IHRoaXMuZGF0YS5kZWZhdWx0TGFuZGluZ1BhZ2UgOiAnY2F0ZWdvcmllcydcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoYC8ke3NlbGVjdGVkSXRlbX1gKSA+IC0xIHx8IHRoaXMuc2VsZWN0ZWRUYWIgPT09IHNlbGVjdGVkSXRlbSkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGFiKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZEl0ZW1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZEl0ZW0gPT09IHRoaXMubGFuZGluZ1BhZ2UgJiYgIXRoaXMuc2VsZWN0ZWRUYWIpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgbmF2aWdhdGUocGFnZU5hbWU6IHN0cmluZywgZXZlbnQ/KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IHBhZ2VOYW1lO1xuICAgIHRoaXMudGVsZW1ldHJ5VXRpbHMuc2V0Q29udGV4dChbXSk7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeVV0aWxzLmxvZ0ludGVyYWN0KGV2ZW50LCBOU0Rpc2N1c3NEYXRhLklQYWdlTmFtZS5IT01FKTtcbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMuY29uZmlnU2VydmljZS5nZXRSb3V0ZXJTbHVnKCl9JHtDT05TVEFOVFMuUk9VVEVTLkRJU0NVU1NJT059JHtwYWdlTmFtZX1gXSwgeyBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCIgfSk7XG4gICAgdGhpcy5jbG9zZU5hdigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucGFyYW1zU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBhcmFtc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dNZW51QnV0dG9uKCkge1xuICAgIHRoaXMuc2hvd1NpZGVNZW51ID0gdGhpcy5zaG93U2lkZU1lbnUgPyBmYWxzZSA6IHRydWU7XG4gIH1cblxuICBjbG9zZU5hdigpIHtcbiAgICB0aGlzLnNob3dTaWRlTWVudSA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiB0cnVlO1xuICB9XG5cbn1cbiIsIjx1bCBjbGFzcz1cInNiLXNpZGViYXItbWVudSBwbC0wXCIgKm5nSWY9XCIhaGlkZVNpZGVQYW5lbFwiPlxuICA8IS0tIDxsaSBjbGFzcz1cImRmLXNpZGViYXItbWVudS1saXN0XCIgKm5nSWY9XCJmYWxzZVwiIChjbGljayk9XCJuYXZpZ2F0ZSgnaG9tZScsICRldmVudClcIiBpZD1cImFsbC1kaXNjdXNzaW9uc1wiPjxhPkFsbCBkaXNjdXNzaW9uczwvYT48L2xpPiAtLT5cbiAgPGxpICpuZ0Zvcj0nbGV0IGQgb2YgbWVudScgY2xhc3M9XCJkZi1zaWRlYmFyLW1lbnUtbGlzdFwiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJsaW5rXCIgW25nQ2xhc3NdPVwieydtZW51LWFjdGl2ZSc6IGlzQWN0aXZlKGQucm91dGUpfVwiXG4gICAgKGNsaWNrKT1cIm5hdmlnYXRlKGQucm91dGUsICRldmVudClcIiBpZD1cImQucm91dGVcIj48YT57e2QubGFiZWx9fTwvYT48L2xpPlxuICAgIDwhLS0gPGxpIGNsYXNzPVwiZGYtc2lkZWJhci1tZW51LWxpc3RcIiBpZD1cImxlYWRlci1ib2FyZFwiPjxhPkxlYWRlcmJvYXJkPC9hPjwvbGk+IC0tPlxuPC91bD5cblxuPCEtLSBmb3IgbW9iaWxlLXZpZXcgLS0+XG48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm9wZW4tYnRuXCIgKGNsaWNrKT1cInNob3dNZW51QnV0dG9uKClcIj7imLA8L2J1dHRvbj4gXG48ZGl2IGNsYXNzPVwib3ZlcmxheS1zaWRlYmFyXCIgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCI+XG4gIDxkaXYgY2xhc3M9XCJvdmVybGF5LXNpZGViYXJfX21lbnVcIj5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJjbG9zZU5hdigpXCI+JnRpbWVzOzwvYT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LXNpZGViYXJfX21lbnVfX2NvbnRlbnRcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwic2Itc2lkZWJhci1tZW51LW1vYiBwbC0wXCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj0nbGV0IGQgb2YgbWVudScgY2xhc3M9XCJkZi1zaWRlYmFyLW1lbnUtbGlzdFwiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJsaW5rXCIgW25nQ2xhc3NdPVwieydtZW51LWFjdGl2ZSc6IGlzQWN0aXZlKGQucm91dGUpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKGQucm91dGUsICRldmVudClcIiBpZD1cImQucm91dGVcIj48YT57e2QubGFiZWx9fTwvYT48L2xpPlxuICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwiZGYtc2lkZWJhci1tZW51LWxpc3RcIiB0YWJpbmRleD1cIjBcIiByb2xlPVwibGlua1wiICpuZ0lmPVwiZmFsc2VcIiAoY2xpY2spPVwibmF2aWdhdGUoJ2hvbWUnLCAkZXZlbnQpXCIgaWQ9XCJhbGwtZGlzY3Vzc2lvbnNcIj48YT5BbGwgZGlzY3Vzc2lvbnM8L2E+PC9saT5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJkZi1zaWRlYmFyLW1lbnUtbGlzdFwiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJsaW5rXCIgW25nQ2xhc3NdPVwieydtZW51LWFjdGl2ZSc6IHNlbGVjdGVkVGFiID09PSAnY2F0ZWdvcmllcyd9XCIgKGNsaWNrKT1cIm5hdmlnYXRlKCdjYXRlZ29yaWVzJywgJGV2ZW50KVwiIGlkPVwiZGlzY3Vzc2lvbi1jYXRlZ29yaWVzXCI+PGE+Q2F0ZWdvcmllczwvYT48L2xpPlxuICAgICAgICAgIDxsaSBjbGFzcz1cImRmLXNpZGViYXItbWVudS1saXN0XCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cImxpbmtcIltuZ0NsYXNzXT1cInsnbWVudS1hY3RpdmUnOiBzZWxlY3RlZFRhYiA9PT0gJ3RhZ3MnfVwiIChjbGljayk9XCJuYXZpZ2F0ZSgndGFncycsICRldmVudClcIiBpZD1cImRpc2N1c3Npb24tdGFnc1wiPjxhPlRhZ3M8L2E+PC9saT5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJkZi1zaWRlYmFyLW1lbnUtbGlzdFwiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJsaW5rXCIgW25nQ2xhc3NdPVwieydtZW51LWFjdGl2ZSc6IHNlbGVjdGVkVGFiID09PSAnbXktZGlzY3Vzc2lvbid9XCIgKGNsaWNrKT1cIm5hdmlnYXRlKCdteS1kaXNjdXNzaW9uJywgJGV2ZW50KVwiIGlkPVwibXktZGlzY3Vzc2lvblwiPjxhPk15IGRpc2N1c3Npb25zPC9hPjwvbGk+IC0tPlxuICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==