@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.
- package/README.md +24 -0
- package/assets/images/Buffer-512.webp +0 -0
- package/assets/images/announcement.svg +25 -0
- package/assets/images/back-img.png +0 -0
- package/assets/images/bookmarks.png +0 -0
- package/assets/images/card-icon.png +0 -0
- package/assets/images/close.png +0 -0
- package/assets/images/delete.svg +13 -0
- package/assets/images/down-arrow.png +0 -0
- package/assets/images/down-chevron.png +0 -0
- package/assets/images/down.svg +12 -0
- package/assets/images/edit.svg +11 -0
- package/assets/images/empty.svg +37 -0
- package/assets/images/eye-icon.png +0 -0
- package/assets/images/general discussion.svg +15 -0
- package/assets/images/import-export-arrows.png +0 -0
- package/assets/images/loader-icon.svg +6 -0
- package/assets/images/profits.png +0 -0
- package/assets/images/search-icon.png +0 -0
- package/assets/images/select-bookmarks.png +0 -0
- package/assets/images/select-down-arrow.png +0 -0
- package/assets/images/select-profits.png +0 -0
- package/assets/images/select-up-arrow.png +0 -0
- package/assets/images/up-arrow.png +0 -0
- package/assets/images/up-chevron.png +0 -0
- package/assets/images/up.svg +12 -0
- package/assets/images/views.svg +9 -0
- package/assets/images/votes.svg +14 -0
- package/assets/styles/global.scss +283 -0
- package/esm2022/jeraldj-discussions-ui.mjs +5 -0
- package/esm2022/lib/common/constants.json +630 -0
- package/esm2022/lib/components/components.module.mjs +105 -0
- package/esm2022/lib/components/discuss-all/discuss-all.component.mjs +269 -0
- package/esm2022/lib/components/discuss-category/discuss-category.component.mjs +152 -0
- package/esm2022/lib/components/discuss-home/discuss-home.component.mjs +142 -0
- package/esm2022/lib/components/discuss-start/discuss-start.component.mjs +199 -0
- package/esm2022/lib/components/discuss-tags/discuss-tags.component.mjs +93 -0
- package/esm2022/lib/components/discussion-details/discussion-details.component.mjs +459 -0
- package/esm2022/lib/components/lib-entry/lib-entry.component.mjs +96 -0
- package/esm2022/lib/components/my-discussion/my-discussion.component.mjs +234 -0
- package/esm2022/lib/components/side-pannel/side-pannel.component.mjs +79 -0
- package/esm2022/lib/components/tag-all-discussion/tag-all-discussion.component.mjs +151 -0
- package/esm2022/lib/components/trending-tags/trending-tags.component.mjs +62 -0
- package/esm2022/lib/config/url.config.mjs +32 -0
- package/esm2022/lib/discussion-events.service.mjs +27 -0
- package/esm2022/lib/discussion-routing/discussion-routing.module.mjs +80 -0
- package/esm2022/lib/discussion-ui.module.mjs +41 -0
- package/esm2022/lib/elements/app-loader/app-loader.component.mjs +36 -0
- package/esm2022/lib/elements/avatar-photo/avatar-photo.component.mjs +81 -0
- package/esm2022/lib/elements/category-card/category-card.component.mjs +17 -0
- package/esm2022/lib/elements/discuss-card/discuss-card.component.mjs +45 -0
- package/esm2022/lib/elements/elements.module.mjs +69 -0
- package/esm2022/lib/elements/load-alert/load-alert.component.mjs +34 -0
- package/esm2022/lib/elements/post-reply/post-reply.component.mjs +69 -0
- package/esm2022/lib/elements/related-discussion/related-discussion.component.mjs +61 -0
- package/esm2022/lib/elements/sliders/sliders.component.mjs +76 -0
- package/esm2022/lib/events.service.mjs +31 -0
- package/esm2022/lib/models/discuss.model.mjs +16 -0
- package/esm2022/lib/models/discussion-config.model.mjs +2 -0
- package/esm2022/lib/navigation-service.service.mjs +39 -0
- package/esm2022/lib/pipes/pipe-filter/pipe-filter.pipe.mjs +20 -0
- package/esm2022/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.mjs +22 -0
- package/esm2022/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.mjs +41 -0
- package/esm2022/lib/pipes/pipes.module.mjs +24 -0
- package/esm2022/lib/pipes/sort-by/sort-by.pipe.mjs +34 -0
- package/esm2022/lib/pipes/split-initials/split-initials.pipe.mjs +23 -0
- package/esm2022/lib/router-service.service.mjs +21 -0
- package/esm2022/lib/services/abstract-config.service.mjs +3 -0
- package/esm2022/lib/services/config.service.mjs +76 -0
- package/esm2022/lib/services/discuss-utils.service.mjs +36 -0
- package/esm2022/lib/services/discussion.service.mjs +254 -0
- package/esm2022/lib/telemetry-utils.service.mjs +103 -0
- package/esm2022/lib/wrapper/base-wrapper/base-wrapper.component.mjs +41 -0
- package/esm2022/lib/wrapper/category-widget/category-widget.component.mjs +37 -0
- package/esm2022/lib/wrapper/tags-widget/tags-widget.component.mjs +33 -0
- package/esm2022/lib/wrapper-navigate.service.mjs +23 -0
- package/esm2022/public-api.mjs +29 -0
- package/fesm2022/jeraldj-discussions-ui.mjs +3929 -0
- package/fesm2022/jeraldj-discussions-ui.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/jeraldj-discussions-ui.d.ts.map +1 -0
- package/lib/components/components.module.d.ts +24 -0
- package/lib/components/components.module.d.ts.map +1 -0
- package/lib/components/discuss-all/discuss-all.component.d.ts +61 -0
- package/lib/components/discuss-all/discuss-all.component.d.ts.map +1 -0
- package/lib/components/discuss-category/discuss-category.component.d.ts +45 -0
- package/lib/components/discuss-category/discuss-category.component.d.ts.map +1 -0
- package/lib/components/discuss-home/discuss-home.component.d.ts +59 -0
- package/lib/components/discuss-home/discuss-home.component.d.ts.map +1 -0
- package/lib/components/discuss-start/discuss-start.component.d.ts +50 -0
- package/lib/components/discuss-start/discuss-start.component.d.ts.map +1 -0
- package/lib/components/discuss-tags/discuss-tags.component.d.ts +41 -0
- package/lib/components/discuss-tags/discuss-tags.component.d.ts.map +1 -0
- package/lib/components/discussion-details/discussion-details.component.d.ts +112 -0
- package/lib/components/discussion-details/discussion-details.component.d.ts.map +1 -0
- package/lib/components/lib-entry/lib-entry.component.d.ts +42 -0
- package/lib/components/lib-entry/lib-entry.component.d.ts.map +1 -0
- package/lib/components/my-discussion/my-discussion.component.d.ts +54 -0
- package/lib/components/my-discussion/my-discussion.component.d.ts.map +1 -0
- package/lib/components/side-pannel/side-pannel.component.d.ts +34 -0
- package/lib/components/side-pannel/side-pannel.component.d.ts.map +1 -0
- package/lib/components/tag-all-discussion/tag-all-discussion.component.d.ts +53 -0
- package/lib/components/tag-all-discussion/tag-all-discussion.component.d.ts.map +1 -0
- package/lib/components/trending-tags/trending-tags.component.d.ts +26 -0
- package/lib/components/trending-tags/trending-tags.component.d.ts.map +1 -0
- package/lib/config/url.config.d.ts +29 -0
- package/lib/config/url.config.d.ts.map +1 -0
- package/lib/discussion-events.service.d.ts +12 -0
- package/lib/discussion-events.service.d.ts.map +1 -0
- package/lib/discussion-routing/discussion-routing.module.d.ts +9 -0
- package/lib/discussion-routing/discussion-routing.module.d.ts.map +1 -0
- package/lib/discussion-ui.module.d.ts +16 -0
- package/lib/discussion-ui.module.d.ts.map +1 -0
- package/lib/elements/app-loader/app-loader.component.d.ts +17 -0
- package/lib/elements/app-loader/app-loader.component.d.ts.map +1 -0
- package/lib/elements/avatar-photo/avatar-photo.component.d.ts +19 -0
- package/lib/elements/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/elements/category-card/category-card.component.d.ts +10 -0
- package/lib/elements/category-card/category-card.component.d.ts.map +1 -0
- package/lib/elements/discuss-card/discuss-card.component.d.ts +17 -0
- package/lib/elements/discuss-card/discuss-card.component.d.ts.map +1 -0
- package/lib/elements/elements.module.d.ts +18 -0
- package/lib/elements/elements.module.d.ts.map +1 -0
- package/lib/elements/load-alert/load-alert.component.d.ts +15 -0
- package/lib/elements/load-alert/load-alert.component.d.ts.map +1 -0
- package/lib/elements/post-reply/post-reply.component.d.ts +22 -0
- package/lib/elements/post-reply/post-reply.component.d.ts.map +1 -0
- package/lib/elements/related-discussion/related-discussion.component.d.ts +26 -0
- package/lib/elements/related-discussion/related-discussion.component.d.ts.map +1 -0
- package/lib/elements/sliders/sliders.component.d.ts +18 -0
- package/lib/elements/sliders/sliders.component.d.ts.map +1 -0
- package/lib/events.service.d.ts +18 -0
- package/lib/events.service.d.ts.map +1 -0
- package/lib/models/discuss.model.d.ts +298 -0
- package/lib/models/discuss.model.d.ts.map +1 -0
- package/lib/models/discussion-config.model.d.ts +42 -0
- package/lib/models/discussion-config.model.d.ts.map +1 -0
- package/lib/navigation-service.service.d.ts +22 -0
- package/lib/navigation-service.service.d.ts.map +1 -0
- package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts +8 -0
- package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts.map +1 -0
- package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts +8 -0
- package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts.map +1 -0
- package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts +8 -0
- package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts.map +1 -0
- package/lib/pipes/pipes.module.d.ts +13 -0
- package/lib/pipes/pipes.module.d.ts.map +1 -0
- package/lib/pipes/sort-by/sort-by.pipe.d.ts +8 -0
- package/lib/pipes/sort-by/sort-by.pipe.d.ts.map +1 -0
- package/lib/pipes/split-initials/split-initials.pipe.d.ts +8 -0
- package/lib/pipes/split-initials/split-initials.pipe.d.ts.map +1 -0
- package/lib/router-service.service.d.ts +10 -0
- package/lib/router-service.service.d.ts.map +1 -0
- package/lib/services/abstract-config.service.d.ts +4 -0
- package/lib/services/abstract-config.service.d.ts.map +1 -0
- package/lib/services/config.service.d.ts +36 -0
- package/lib/services/config.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +14 -0
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/discussion.service.d.ts +76 -0
- package/lib/services/discussion.service.d.ts.map +1 -0
- package/lib/telemetry-utils.service.d.ts +20 -0
- package/lib/telemetry-utils.service.d.ts.map +1 -0
- package/lib/wrapper/base-wrapper/base-wrapper.component.d.ts +22 -0
- package/lib/wrapper/base-wrapper/base-wrapper.component.d.ts.map +1 -0
- package/lib/wrapper/category-widget/category-widget.component.d.ts +23 -0
- package/lib/wrapper/category-widget/category-widget.component.d.ts.map +1 -0
- package/lib/wrapper/tags-widget/tags-widget.component.d.ts +17 -0
- package/lib/wrapper/tags-widget/tags-widget.component.d.ts.map +1 -0
- package/lib/wrapper-navigate.service.d.ts +11 -0
- package/lib/wrapper-navigate.service.d.ts.map +1 -0
- package/package.json +44 -0
- package/public-api.d.ts +26 -0
- 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> </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> </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()\">×</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()\">×</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==
|