@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47
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 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +2 -2
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
/* eslint-disable class-methods-use-this */
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
import { Subject } from "rxjs";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
6
|
-
import * as i2 from "@angular/router";
|
|
7
|
-
import * as i3 from "./models/comment.service";
|
|
8
|
-
export class ContentService {
|
|
9
|
-
constructor(modalService, router, commentService) {
|
|
10
|
-
this.modalService = modalService;
|
|
11
|
-
this.router = router;
|
|
12
|
-
this.commentService = commentService;
|
|
13
|
-
this.closeModal = new Subject();
|
|
14
|
-
this.nextSlide = new Subject();
|
|
15
|
-
}
|
|
16
|
-
presentVideoModal(video, videoComponent, modalDialogClass) {
|
|
17
|
-
this.modalReference = this.modalService.open(videoComponent, {
|
|
18
|
-
modalDialogClass: modalDialogClass,
|
|
19
|
-
});
|
|
20
|
-
this.modalReference.componentInstance.video = video;
|
|
21
|
-
this.modalReference.dismissed.subscribe(() => {
|
|
22
|
-
this.emitCloseModal();
|
|
23
|
-
});
|
|
24
|
-
this.modalReference.closed.subscribe(() => {
|
|
25
|
-
this.emitCloseModal();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
async presentAudioModal(audioCommentID, audioComponent, modalDialogClass) {
|
|
29
|
-
const audioComment = await this.commentService.getComment(audioCommentID);
|
|
30
|
-
const audioMediaContent = {
|
|
31
|
-
path: audioComment.annexe,
|
|
32
|
-
title: audioComment.title,
|
|
33
|
-
description: audioComment.description,
|
|
34
|
-
};
|
|
35
|
-
this.modalReference = this.modalService.open(audioComponent, {
|
|
36
|
-
modalDialogClass: modalDialogClass,
|
|
37
|
-
});
|
|
38
|
-
this.modalReference.componentInstance.audio = audioMediaContent;
|
|
39
|
-
this.modalReference.dismissed.subscribe(() => {
|
|
40
|
-
this.emitCloseModal();
|
|
41
|
-
});
|
|
42
|
-
this.modalReference.closed.subscribe(() => {
|
|
43
|
-
this.emitCloseModal();
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
presentImageCarouselModal(featureID, carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = '0') {
|
|
47
|
-
this.modalReference = this.modalService.open(carouselComponent, {
|
|
48
|
-
modalDialogClass: modalDialogClass,
|
|
49
|
-
});
|
|
50
|
-
this.modalReference.componentInstance.featureID = featureID;
|
|
51
|
-
this.modalReference.componentInstance.fromTag = fromTag;
|
|
52
|
-
this.modalReference.componentInstance.selectedImageIndex = selectedImageIndex;
|
|
53
|
-
this.modalReference.dismissed.subscribe(() => {
|
|
54
|
-
this.emitCloseModal();
|
|
55
|
-
});
|
|
56
|
-
this.modalReference.closed.subscribe(() => {
|
|
57
|
-
this.emitCloseModal();
|
|
58
|
-
});
|
|
59
|
-
this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
|
|
60
|
-
this.nextSlide.next(slide.current);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
presentPdfModal(url, pdfComponent, modalDialogClass) {
|
|
64
|
-
this.modalReference = this.modalService.open(pdfComponent, {
|
|
65
|
-
modalDialogClass: modalDialogClass,
|
|
66
|
-
});
|
|
67
|
-
this.modalReference.componentInstance.url = url;
|
|
68
|
-
this.modalReference.dismissed.subscribe(() => {
|
|
69
|
-
this.emitCloseModal();
|
|
70
|
-
});
|
|
71
|
-
this.modalReference.closed.subscribe(() => {
|
|
72
|
-
this.emitCloseModal();
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
presentMuseumImageCarouselModal(carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = "0", images = null, commentImageID = null) {
|
|
76
|
-
this.modalReference = this.modalService.open(carouselComponent, {
|
|
77
|
-
modalDialogClass,
|
|
78
|
-
});
|
|
79
|
-
this.modalReference.componentInstance.fromTag = fromTag;
|
|
80
|
-
this.modalReference.componentInstance.selectedImageIndex =
|
|
81
|
-
selectedImageIndex;
|
|
82
|
-
this.modalReference.componentInstance.images = images;
|
|
83
|
-
this.modalReference.componentInstance.commentID = commentImageID;
|
|
84
|
-
this.modalReference.dismissed.subscribe(() => {
|
|
85
|
-
this.emitCloseModal();
|
|
86
|
-
});
|
|
87
|
-
this.modalReference.closed.subscribe(() => {
|
|
88
|
-
this.emitCloseModal();
|
|
89
|
-
});
|
|
90
|
-
this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
|
|
91
|
-
this.nextSlide.next(slide.current);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
toogleAudioElement(url) {
|
|
95
|
-
if (!this.currentAudio || this.currentAudio.src !== url) {
|
|
96
|
-
this.currentAudio = new Audio(url);
|
|
97
|
-
}
|
|
98
|
-
if (this.currentAudio.duration > 0 && !this.currentAudio.paused) {
|
|
99
|
-
// it is playing, we stop it
|
|
100
|
-
this.currentAudio.pause();
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
this.currentAudio.play();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
showFullscreenCarouselForFeature(featureID, fromTag = false) {
|
|
107
|
-
const url = this.router.serializeUrl(this.router.createUrlTree([`/fullscreen/${featureID}`], {
|
|
108
|
-
queryParams: { fromTag },
|
|
109
|
-
}));
|
|
110
|
-
window.open(url, "_blank");
|
|
111
|
-
}
|
|
112
|
-
emitCloseModal() {
|
|
113
|
-
this.modalReference = null;
|
|
114
|
-
this.closeModal.next(true);
|
|
115
|
-
}
|
|
116
|
-
forceCloseCurrentModal() {
|
|
117
|
-
if (this.modalReference) {
|
|
118
|
-
this.modalReference.dismiss("forced");
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
moveToSlide(slide) {
|
|
122
|
-
if (this.modalReference) {
|
|
123
|
-
this.modalReference.componentInstance.navigateToSlide(slide);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
128
|
-
ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, providedIn: "root" });
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, decorators: [{
|
|
130
|
-
type: Injectable,
|
|
131
|
-
args: [{
|
|
132
|
-
providedIn: "root",
|
|
133
|
-
}]
|
|
134
|
-
}], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.CommentService }]; } });
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7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QUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7MkdBakpRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTWVkaWFDb250ZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xuICAgIG1vZGFsUmVmZXJlbmNlO1xuXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xuXG4gICAgY2xvc2VNb2RhbCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBuZXh0U2xpZGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XG5cbiAgICBwcmVzZW50VmlkZW9Nb2RhbCh2aWRlbzogTWVkaWFDb250ZW50LCB2aWRlb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYXVkaW9Db21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50KGF1ZGlvQ29tbWVudElEKTtcbiAgICAgICAgY29uc3QgYXVkaW9NZWRpYUNvbnRlbnQgPSB7XG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxuICAgICAgICAgICAgdGl0bGU6IGF1ZGlvQ29tbWVudC50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdWRpb0NvbW1lbnQuZGVzY3JpcHRpb24sXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihhdWRpb0NvbXBvbmVudCwge1xuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuYXVkaW8gPSBhdWRpb01lZGlhQ29udGVudDtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJlc2VudEltYWdlQ2Fyb3VzZWxNb2RhbChmZWF0dXJlSUQ6IHN0cmluZywgY2Fyb3VzZWxDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCBcbiAgICAgICAgZnJvbVRhZyA9IHRydWUsIHNlbGVjdGVkSW1hZ2VJbmRleD0nMCcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICBjYXJvdXNlbENvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuZnJvbVRhZyA9IGZyb21UYWc7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRJbWFnZUluZGV4ID0gc2VsZWN0ZWRJbWFnZUluZGV4O1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByZXNlbnRQZGZNb2RhbCh1cmw6IHN0cmluZywgcGRmQ29tcG9uZW50OiBhbnksIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZywpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4ocGRmQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcmVzZW50TXVzZXVtSW1hZ2VDYXJvdXNlbE1vZGFsKFxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxuICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLFxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcbiAgICAgICAgaW1hZ2VzOiBhbnlbXSA9IG51bGwsXG4gICAgICAgIGNvbW1lbnRJbWFnZUlEOiBzdHJpbmcgPSBudWxsLFxuICAgICkge1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihjYXJvdXNlbENvbXBvbmVudCwge1xuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuZnJvbVRhZyA9IGZyb21UYWc7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRJbWFnZUluZGV4ID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5pbWFnZXMgPSBpbWFnZXM7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuY29tbWVudElEID0gY29tbWVudEltYWdlSUQ7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0U2xpZGUubmV4dChzbGlkZS5jdXJyZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdG9vZ2xlQXVkaW9FbGVtZW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50QXVkaW8gfHwgdGhpcy5jdXJyZW50QXVkaW8uc3JjICE9PSB1cmwpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEF1ZGlvLmR1cmF0aW9uID4gMCAmJiAhdGhpcy5jdXJyZW50QXVkaW8ucGF1c2VkKSB7XG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpby5wYXVzZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0Z1bGxzY3JlZW5DYXJvdXNlbEZvckZlYXR1cmUoZmVhdHVyZUlEOiBzdHJpbmcsIGZyb21UYWcgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwoXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBmcm9tVGFnIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcbiAgICB9XG5cbiAgICBlbWl0Q2xvc2VNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3MoXCJmb3JjZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLm5hdmlnYXRlVG9TbGlkZShzbGlkZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
1
|
+
/* eslint-disable class-methods-use-this */
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { Subject } from "rxjs";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
6
|
+
import * as i2 from "@angular/router";
|
|
7
|
+
import * as i3 from "./models/comment.service";
|
|
8
|
+
export class ContentService {
|
|
9
|
+
constructor(modalService, router, commentService) {
|
|
10
|
+
this.modalService = modalService;
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.commentService = commentService;
|
|
13
|
+
this.closeModal = new Subject();
|
|
14
|
+
this.nextSlide = new Subject();
|
|
15
|
+
}
|
|
16
|
+
presentVideoModal(video, videoComponent, modalDialogClass) {
|
|
17
|
+
this.modalReference = this.modalService.open(videoComponent, {
|
|
18
|
+
modalDialogClass: modalDialogClass,
|
|
19
|
+
});
|
|
20
|
+
this.modalReference.componentInstance.video = video;
|
|
21
|
+
this.modalReference.dismissed.subscribe(() => {
|
|
22
|
+
this.emitCloseModal();
|
|
23
|
+
});
|
|
24
|
+
this.modalReference.closed.subscribe(() => {
|
|
25
|
+
this.emitCloseModal();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async presentAudioModal(audioCommentID, audioComponent, modalDialogClass) {
|
|
29
|
+
const audioComment = await this.commentService.getComment(audioCommentID);
|
|
30
|
+
const audioMediaContent = {
|
|
31
|
+
path: audioComment.annexe,
|
|
32
|
+
title: audioComment.title,
|
|
33
|
+
description: audioComment.description,
|
|
34
|
+
};
|
|
35
|
+
this.modalReference = this.modalService.open(audioComponent, {
|
|
36
|
+
modalDialogClass: modalDialogClass,
|
|
37
|
+
});
|
|
38
|
+
this.modalReference.componentInstance.audio = audioMediaContent;
|
|
39
|
+
this.modalReference.dismissed.subscribe(() => {
|
|
40
|
+
this.emitCloseModal();
|
|
41
|
+
});
|
|
42
|
+
this.modalReference.closed.subscribe(() => {
|
|
43
|
+
this.emitCloseModal();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
presentImageCarouselModal(featureID, carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = '0') {
|
|
47
|
+
this.modalReference = this.modalService.open(carouselComponent, {
|
|
48
|
+
modalDialogClass: modalDialogClass,
|
|
49
|
+
});
|
|
50
|
+
this.modalReference.componentInstance.featureID = featureID;
|
|
51
|
+
this.modalReference.componentInstance.fromTag = fromTag;
|
|
52
|
+
this.modalReference.componentInstance.selectedImageIndex = selectedImageIndex;
|
|
53
|
+
this.modalReference.dismissed.subscribe(() => {
|
|
54
|
+
this.emitCloseModal();
|
|
55
|
+
});
|
|
56
|
+
this.modalReference.closed.subscribe(() => {
|
|
57
|
+
this.emitCloseModal();
|
|
58
|
+
});
|
|
59
|
+
this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
|
|
60
|
+
this.nextSlide.next(slide.current);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
presentPdfModal(url, pdfComponent, modalDialogClass) {
|
|
64
|
+
this.modalReference = this.modalService.open(pdfComponent, {
|
|
65
|
+
modalDialogClass: modalDialogClass,
|
|
66
|
+
});
|
|
67
|
+
this.modalReference.componentInstance.url = url;
|
|
68
|
+
this.modalReference.dismissed.subscribe(() => {
|
|
69
|
+
this.emitCloseModal();
|
|
70
|
+
});
|
|
71
|
+
this.modalReference.closed.subscribe(() => {
|
|
72
|
+
this.emitCloseModal();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
presentMuseumImageCarouselModal(carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = "0", images = null, commentImageID = null) {
|
|
76
|
+
this.modalReference = this.modalService.open(carouselComponent, {
|
|
77
|
+
modalDialogClass,
|
|
78
|
+
});
|
|
79
|
+
this.modalReference.componentInstance.fromTag = fromTag;
|
|
80
|
+
this.modalReference.componentInstance.selectedImageIndex =
|
|
81
|
+
selectedImageIndex;
|
|
82
|
+
this.modalReference.componentInstance.images = images;
|
|
83
|
+
this.modalReference.componentInstance.commentID = commentImageID;
|
|
84
|
+
this.modalReference.dismissed.subscribe(() => {
|
|
85
|
+
this.emitCloseModal();
|
|
86
|
+
});
|
|
87
|
+
this.modalReference.closed.subscribe(() => {
|
|
88
|
+
this.emitCloseModal();
|
|
89
|
+
});
|
|
90
|
+
this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
|
|
91
|
+
this.nextSlide.next(slide.current);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
toogleAudioElement(url) {
|
|
95
|
+
if (!this.currentAudio || this.currentAudio.src !== url) {
|
|
96
|
+
this.currentAudio = new Audio(url);
|
|
97
|
+
}
|
|
98
|
+
if (this.currentAudio.duration > 0 && !this.currentAudio.paused) {
|
|
99
|
+
// it is playing, we stop it
|
|
100
|
+
this.currentAudio.pause();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.currentAudio.play();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
showFullscreenCarouselForFeature(featureID, fromTag = false) {
|
|
107
|
+
const url = this.router.serializeUrl(this.router.createUrlTree([`/fullscreen/${featureID}`], {
|
|
108
|
+
queryParams: { fromTag },
|
|
109
|
+
}));
|
|
110
|
+
window.open(url, "_blank");
|
|
111
|
+
}
|
|
112
|
+
emitCloseModal() {
|
|
113
|
+
this.modalReference = null;
|
|
114
|
+
this.closeModal.next(true);
|
|
115
|
+
}
|
|
116
|
+
forceCloseCurrentModal() {
|
|
117
|
+
if (this.modalReference) {
|
|
118
|
+
this.modalReference.dismiss("forced");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
moveToSlide(slide) {
|
|
122
|
+
if (this.modalReference) {
|
|
123
|
+
this.modalReference.componentInstance.navigateToSlide(slide);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
128
|
+
ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, providedIn: "root" });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, decorators: [{
|
|
130
|
+
type: Injectable,
|
|
131
|
+
args: [{
|
|
132
|
+
providedIn: "root",
|
|
133
|
+
}]
|
|
134
|
+
}], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.CommentService }]; } });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7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QUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7MkdBakpRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1lZGlhQ29udGVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9mZWF0dXJlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xyXG4gICAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xyXG5cclxuICAgIGNsb3NlTW9kYWwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIG5leHRTbGlkZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XHJcblxyXG4gICAgcHJlc2VudFZpZGVvTW9kYWwodmlkZW86IE1lZGlhQ29udGVudCwgdmlkZW9Db21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcclxuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnQoYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvTWVkaWFDb250ZW50ID0ge1xyXG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICB0aXRsZTogYXVkaW9Db21tZW50LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW9Db21tZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGF1ZGlvQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5hdWRpbyA9IGF1ZGlvTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcmVzZW50SW1hZ2VDYXJvdXNlbE1vZGFsKGZlYXR1cmVJRDogc3RyaW5nLCBjYXJvdXNlbENvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsIFxyXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLCBzZWxlY3RlZEltYWdlSW5kZXg9JzAnKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXHJcbiAgICAgICAgICAgIGNhcm91c2VsQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9IHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRTbGlkZS5uZXh0KHNsaWRlLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudFBkZk1vZGFsKHVybDogc3RyaW5nLCBwZGZDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHBkZkNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UudXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudE11c2V1bUltYWdlQ2Fyb3VzZWxNb2RhbChcclxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxyXG4gICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZyxcclxuICAgICAgICBmcm9tVGFnID0gdHJ1ZSxcclxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcclxuICAgICAgICBpbWFnZXM6IGFueVtdID0gbnVsbCxcclxuICAgICAgICBjb21tZW50SW1hZ2VJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNhcm91c2VsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmltYWdlcyA9IGltYWdlcztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmNvbW1lbnRJRCA9IGNvbW1lbnRJbWFnZUlEO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAoc2xpZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0b29nbGVBdWRpb0VsZW1lbnQodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEF1ZGlvIHx8IHRoaXMuY3VycmVudEF1ZGlvLnNyYyAhPT0gdXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBdWRpby5kdXJhdGlvbiA+IDAgJiYgIXRoaXMuY3VycmVudEF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RnVsbHNjcmVlbkNhcm91c2VsRm9yRmVhdHVyZShmZWF0dXJlSUQ6IHN0cmluZywgZnJvbVRhZyA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGZyb21UYWcgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXRDbG9zZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzKFwiZm9yY2VkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5uYXZpZ2F0ZVRvU2xpZGUoc2xpZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|