@hmcts/media-viewer 4.0.2 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
- package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
- package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
- package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
- package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
- package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
- package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
- package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
- package/{esm2020 → esm2022}/lib/annotations/annotations.module.mjs +61 -61
- package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
- package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
- package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
- package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
- package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
- package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
- package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
- package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
- package/{esm2020 → esm2022}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
- package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/annotations/services/tags/tags.services.mjs +5 -5
- package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
- package/{esm2020 → esm2022}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
- package/esm2022/lib/icp/icp-follower.service.mjs +60 -0
- package/esm2022/lib/icp/icp-presenter.service.mjs +55 -0
- package/{esm2020 → esm2022}/lib/icp/icp-session-api.service.mjs +5 -5
- package/esm2022/lib/icp/icp-update.service.mjs +65 -0
- package/esm2022/lib/icp/icp.service.mjs +95 -0
- package/{esm2020 → esm2022}/lib/icp/participants-list/participants-list.component.mjs +5 -5
- package/esm2022/lib/icp/socket.service.mjs +118 -0
- package/esm2022/lib/media-viewer.component.mjs +244 -0
- package/{esm2020 → esm2022}/lib/media-viewer.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/print.service.mjs +4 -4
- package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/redaction/services/redaction-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/shared.module.mjs +19 -19
- package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
- package/{esm2020 → esm2022}/lib/shared/util/services/number.helper.service.mjs +5 -5
- package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
- package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
- package/esm2022/lib/store/effects/bookmarks.effects.mjs +44 -0
- package/{esm2020 → esm2022}/lib/store/effects/document.effects.mjs +5 -5
- package/{esm2020 → esm2022}/lib/store/effects/icp.effects.mjs +5 -5
- package/{esm2020 → esm2022}/lib/store/effects/redaction.effects.mjs +5 -5
- package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
- package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +116 -0
- package/esm2022/lib/store/reducers/document.reducer.mjs +135 -0
- package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
- package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
- package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
- package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
- package/{esm2020 → esm2022}/lib/store/selectors/bookmark.selectors.mjs +1 -1
- package/{esm2020 → esm2022}/lib/store/selectors/redaction.selectors.mjs +1 -1
- package/esm2022/lib/store/store-utils.mjs +131 -0
- package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
- package/{esm2020 → esm2022}/lib/toolbar/icp-event.service.mjs +1 -1
- package/{esm2020 → esm2022}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
- package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
- package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
- package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
- package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
- package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
- package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
- package/{esm2020 → esm2022}/lib/toolbar/toolbar.module.mjs +25 -25
- package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
- package/{esm2020 → esm2022}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
- package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
- package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
- package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
- package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +210 -0
- package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
- package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +78 -0
- package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
- package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
- package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
- package/{esm2020 → esm2022}/lib/viewers/viewer-event.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/viewers/viewer-util.service.mjs +5 -5
- package/{fesm2020 → fesm2022}/hmcts-media-viewer.mjs +445 -445
- package/fesm2022/hmcts-media-viewer.mjs.map +1 -0
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +1 -1
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +1 -1
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment/comment.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -1
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set.component.d.ts +1 -1
- package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
- package/lib/annotations/tags/tags.component.d.ts +1 -1
- package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -1
- package/lib/icp/socket.service.d.ts +6 -6
- package/lib/icp/socket.service.d.ts.map +1 -1
- package/lib/media-viewer.component.d.ts +1 -2
- package/lib/media-viewer.component.d.ts.map +1 -1
- package/lib/redaction/components/redaction.component.d.ts +1 -1
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -1
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -1
- package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
- package/lib/toolbar/icp-event.service.d.ts +4 -4
- package/lib/toolbar/icp-event.service.d.ts.map +1 -1
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -1
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +1 -1
- package/lib/toolbar/toolbar-event.service.d.ts +6 -6
- package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -1
- package/lib/viewers/grab-n-drag.directive.d.ts +1 -1
- package/lib/viewers/image-viewer/image-viewer.component.d.ts +1 -1
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +1 -1
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -1
- package/lib/viewers/viewer-event.service.d.ts +1 -1
- package/lib/viewers/viewer-event.service.d.ts.map +1 -1
- package/package.json +16 -23
- package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
- package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
- package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
- package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
- package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
- package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
- package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
- package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
- package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
- package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
- package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
- package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
- package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +0 -123
- package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
- package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
- package/esm2020/lib/annotations/tags/tags.component.mjs +0 -53
- package/esm2020/lib/icp/icp-follower.service.mjs +0 -60
- package/esm2020/lib/icp/icp-presenter.service.mjs +0 -55
- package/esm2020/lib/icp/icp-update.service.mjs +0 -65
- package/esm2020/lib/icp/icp.service.mjs +0 -95
- package/esm2020/lib/icp/socket.service.mjs +0 -118
- package/esm2020/lib/media-viewer.component.mjs +0 -245
- package/esm2020/lib/redaction/components/redaction.component.mjs +0 -91
- package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
- package/esm2020/lib/store/bookmarks-store-utils.mjs +0 -49
- package/esm2020/lib/store/effects/annotation.effects.mjs +0 -51
- package/esm2020/lib/store/effects/bookmarks.effects.mjs +0 -44
- package/esm2020/lib/store/reducers/annotations.reducer.mjs +0 -208
- package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +0 -116
- package/esm2020/lib/store/reducers/document.reducer.mjs +0 -135
- package/esm2020/lib/store/reducers/icp.reducer.mjs +0 -56
- package/esm2020/lib/store/reducers/redaction.reducer.mjs +0 -116
- package/esm2020/lib/store/reducers/tags.reducer.mjs +0 -93
- package/esm2020/lib/store/selectors/annotation.selectors.mjs +0 -81
- package/esm2020/lib/store/store-utils.mjs +0 -131
- package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
- package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
- package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
- package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
- package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
- package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
- package/esm2020/lib/toolbar/toolbar-event.service.mjs +0 -178
- package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
- package/esm2020/lib/viewers/grab-n-drag.directive.mjs +0 -57
- package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
- package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
- package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -209
- package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
- package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
- package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
- package/esm2020/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -78
- package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
- package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
- package/fesm2015/hmcts-media-viewer.mjs +0 -6953
- package/fesm2015/hmcts-media-viewer.mjs.map +0 -1
- package/fesm2020/hmcts-media-viewer.mjs.map +0 -1
- /package/{esm2020 → esm2022}/hmcts-media-viewer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/api-persisted.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/event-select.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/tags.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/user.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icp/icp.events.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icp/icp.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/redaction/services/redaction.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/annotation.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/bookmark.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/document.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/icp.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/redaction.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/tag.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/effects/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/models/bookmarks.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/models/filters.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/reducers/reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/document.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/icp.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/tag.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/viewer-exception.model.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as fromActions from '../../../../store/actions/annotation.actions';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngrx/store";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "../../comment-navigate/comments-navigate.component";
|
|
8
|
+
import * as i5 from "rpx-xui-translation";
|
|
9
|
+
export class CommentSearchComponent {
|
|
10
|
+
constructor(store) {
|
|
11
|
+
this.store = store;
|
|
12
|
+
this.searchResults = [];
|
|
13
|
+
this.searchIndex = 0;
|
|
14
|
+
}
|
|
15
|
+
ngAfterViewInit() {
|
|
16
|
+
if (this.searchInput) {
|
|
17
|
+
this.searchInput.nativeElement.focus();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
// TODO workaround for tab error
|
|
22
|
+
setTimeout(() => { this.store.dispatch(new fromActions.SearchComment('')); }, 250);
|
|
23
|
+
}
|
|
24
|
+
searchComments(searchText) {
|
|
25
|
+
this.clearSearch();
|
|
26
|
+
if (searchText.length > 2) {
|
|
27
|
+
this.searchString = searchText;
|
|
28
|
+
this.searchResults = this.annotations
|
|
29
|
+
.filter(annotation => annotation.comments.length > 0)
|
|
30
|
+
.filter(annotation => annotation.comments[0].content.toLowerCase().includes(this.searchString.toLowerCase()));
|
|
31
|
+
if (this.searchResults.length > 0) {
|
|
32
|
+
this.store.dispatch(new fromActions.SearchComment(searchText));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
clearSearch() {
|
|
37
|
+
this.searchString = undefined;
|
|
38
|
+
this.searchResults = [];
|
|
39
|
+
this.searchIndex = 0;
|
|
40
|
+
this.store.dispatch(new fromActions.SearchComment(''));
|
|
41
|
+
}
|
|
42
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSearchComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CommentSearchComponent, selector: "mv-comment-search", inputs: { annotations: "annotations" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<input\n #searchInput\n type=\"text\"\n class=\"govuk-input comment-search__item\"\n id=\"search-comments-input\"\n name=\"searchString\"\n aria-label=\"search comments input\"\n [ngModel]=\"searchString\"\n/>\n<button\n type=\"button\"\n [class.govuk-button--disabled]=\"searchInput?.value.length <= 2\"\n class=\"govuk-button comment-search__item\"\n (click)=\"searchComments(searchInput.value.trim())\"\n>\n {{ \"Search\" | rpxTranslate }}\n</button>\n<ng-container *ngIf=\"searchResults.length > 0\">\n <mv-comments-navigate [annotationList]=\"searchResults\"></mv-comments-navigate>\n</ng-container>\n<ng-container *ngIf=\"searchString && searchResults?.length === 0\">\n <p class=\"comment-search__item\">\n {{ \"No matches have been found\" | rpxTranslate }}\n </p>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.CommentsNavigateComponent, selector: "mv-comments-navigate", inputs: ["annotationList", "autoSelect"] }, { kind: "pipe", type: i5.RpxTranslatePipe, name: "rpxTranslate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSearchComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'mv-comment-search', encapsulation: ViewEncapsulation.None, template: "<input\n #searchInput\n type=\"text\"\n class=\"govuk-input comment-search__item\"\n id=\"search-comments-input\"\n name=\"searchString\"\n aria-label=\"search comments input\"\n [ngModel]=\"searchString\"\n/>\n<button\n type=\"button\"\n [class.govuk-button--disabled]=\"searchInput?.value.length <= 2\"\n class=\"govuk-button comment-search__item\"\n (click)=\"searchComments(searchInput.value.trim())\"\n>\n {{ \"Search\" | rpxTranslate }}\n</button>\n<ng-container *ngIf=\"searchResults.length > 0\">\n <mv-comments-navigate [annotationList]=\"searchResults\"></mv-comments-navigate>\n</ng-container>\n<ng-container *ngIf=\"searchString && searchResults?.length === 0\">\n <p class=\"comment-search__item\">\n {{ \"No matches have been found\" | rpxTranslate }}\n </p>\n</ng-container>\n" }]
|
|
48
|
+
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { annotations: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], searchInput: [{
|
|
51
|
+
type: ViewChild,
|
|
52
|
+
args: ['searchInput', { static: false }]
|
|
53
|
+
}] } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQtaGVhZGVyL2NvbW1lbnQtc2VhcmNoL2NvbW1lbnQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LWhlYWRlci9jb21tZW50LXNlYXJjaC9jb21tZW50LXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJILE9BQU8sS0FBSyxXQUFXLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHNCQUFzQjtJQVVqQyxZQUFvQixLQUEwQztRQUExQyxVQUFLLEdBQUwsS0FBSyxDQUFxQztRQUg5RCxrQkFBYSxHQUFpQixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7SUFFaUQsQ0FBQztJQUVsRSxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsZ0NBQWdDO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVztpQkFDbEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNwRCxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDbkIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO2tJQTFDVSxzQkFBc0I7c0hBQXRCLHNCQUFzQiw2TUNYbkMsMnlCQXlCQTs7NEZEZGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQixpQkFFZCxpQkFBaUIsQ0FBQyxJQUFJOzBFQUlaLFdBQVc7c0JBQW5DLEtBQUs7Z0JBRXFDLFdBQVc7c0JBQXJELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21BY3Rpb25zIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtY29tbWVudC1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSBhbm5vdGF0aW9uczogQW5ub3RhdGlvbltdO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jywge3N0YXRpYzogZmFsc2V9KSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBzZWFyY2hTdHJpbmc6IHN0cmluZztcbiAgc2VhcmNoUmVzdWx0czogQW5ub3RhdGlvbltdID0gW107XG4gIHNlYXJjaEluZGV4ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFRPRE8gd29ya2Fyb3VuZCBmb3IgdGFiIGVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7dGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2VhcmNoQ29tbWVudCgnJykpOyB9LCAyNTApO1xuICB9XG5cbiAgc2VhcmNoQ29tbWVudHMoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclNlYXJjaCgpO1xuICAgIGlmIChzZWFyY2hUZXh0Lmxlbmd0aCA+IDIpIHtcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gc2VhcmNoVGV4dDtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHRoaXMuYW5ub3RhdGlvbnNcbiAgICAgICAgLmZpbHRlcihhbm5vdGF0aW9uID0+IGFubm90YXRpb24uY29tbWVudHMubGVuZ3RoID4gMClcbiAgICAgICAgLmZpbHRlcihhbm5vdGF0aW9uID0+XG4gICAgICAgICAgYW5ub3RhdGlvbi5jb21tZW50c1swXS5jb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgaWYgKHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlYXJjaENvbW1lbnQoc2VhcmNoVGV4dCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoSW5kZXggPSAwO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlYXJjaENvbW1lbnQoJycpKTtcbiAgfVxufVxuIiwiPGlucHV0XG4gICNzZWFyY2hJbnB1dFxuICB0eXBlPVwidGV4dFwiXG4gIGNsYXNzPVwiZ292dWstaW5wdXQgY29tbWVudC1zZWFyY2hfX2l0ZW1cIlxuICBpZD1cInNlYXJjaC1jb21tZW50cy1pbnB1dFwiXG4gIG5hbWU9XCJzZWFyY2hTdHJpbmdcIlxuICBhcmlhLWxhYmVsPVwic2VhcmNoIGNvbW1lbnRzIGlucHV0XCJcbiAgW25nTW9kZWxdPVwic2VhcmNoU3RyaW5nXCJcbi8+XG48YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBbY2xhc3MuZ292dWstYnV0dG9uLS1kaXNhYmxlZF09XCJzZWFyY2hJbnB1dD8udmFsdWUubGVuZ3RoIDw9IDJcIlxuICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBjb21tZW50LXNlYXJjaF9faXRlbVwiXG4gIChjbGljayk9XCJzZWFyY2hDb21tZW50cyhzZWFyY2hJbnB1dC52YWx1ZS50cmltKCkpXCJcbj5cbiAge3sgXCJTZWFyY2hcIiB8IHJweFRyYW5zbGF0ZSB9fVxuPC9idXR0b24+XG48bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXCI+XG4gIDxtdi1jb21tZW50cy1uYXZpZ2F0ZSBbYW5ub3RhdGlvbkxpc3RdPVwic2VhcmNoUmVzdWx0c1wiPjwvbXYtY29tbWVudHMtbmF2aWdhdGU+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hTdHJpbmcgJiYgc2VhcmNoUmVzdWx0cz8ubGVuZ3RoID09PSAwXCI+XG4gIDxwIGNsYXNzPVwiY29tbWVudC1zZWFyY2hfX2l0ZW1cIj5cbiAgICB7eyBcIk5vIG1hdGNoZXMgaGF2ZSBiZWVuIGZvdW5kXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgPC9wPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromTagSelectors from '../../../store/selectors/tag.selectors';
|
|
4
|
+
import * as fromAnnoSelector from '../../../store/selectors/annotation.selectors';
|
|
5
|
+
import { combineLatest } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ngrx/store";
|
|
8
|
+
import * as i2 from "../comment/comment.service";
|
|
9
|
+
import * as i3 from "../../../toolbar/toolbar-event.service";
|
|
10
|
+
import * as i4 from "@angular/common";
|
|
11
|
+
import * as i5 from "@angular/router";
|
|
12
|
+
import * as i6 from "./comment-search/comment-search.component";
|
|
13
|
+
import * as i7 from "../comment-navigate/comments-navigate.component";
|
|
14
|
+
import * as i8 from "./comment-filter/comment-filter.component";
|
|
15
|
+
export class CommentSetHeaderComponent {
|
|
16
|
+
constructor(store, commentService, toolbarEvents) {
|
|
17
|
+
this.store = store;
|
|
18
|
+
this.commentService = commentService;
|
|
19
|
+
this.toolbarEvents = toolbarEvents;
|
|
20
|
+
this.showCommentSummaryDialog = new EventEmitter();
|
|
21
|
+
this.tabs = [];
|
|
22
|
+
this.tabSelected = '';
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
const tagFilter$ = this.store.pipe(select(fromTagSelectors.getTagFilters));
|
|
26
|
+
const filteredAnnotation$ = this.store.pipe(select(fromAnnoSelector.getFilteredAnnotations));
|
|
27
|
+
this.$subscriptions = combineLatest([tagFilter$, filteredAnnotation$]).subscribe(([formData, filteredAnno]) => {
|
|
28
|
+
this.navigationList = filteredAnno;
|
|
29
|
+
this.tabs = this.navigationList.length > 0 ?
|
|
30
|
+
[{ label: 'comments' }, { label: 'filter' }, { label: 'search' }] : [{ label: 'comments' }];
|
|
31
|
+
this.isFiltered = !formData.length;
|
|
32
|
+
this.tabs = [...this.tabs].map((tab) => {
|
|
33
|
+
return !this.isFiltered && tab.label === 'filter' ? { ...tab, isFiltered: true } : { ...tab, isFiltered: false };
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
toggleCommentsSummary() {
|
|
38
|
+
this.showCommentSummaryDialog.emit();
|
|
39
|
+
}
|
|
40
|
+
selectTab(tab) {
|
|
41
|
+
this.tabSelected = tab !== this.tabSelected ? tab : undefined;
|
|
42
|
+
if (this.tabSelected) {
|
|
43
|
+
this.marginToComment = true;
|
|
44
|
+
this.commentService.createMarginToCommentEvent(this.marginToComment);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.marginToComment = false;
|
|
48
|
+
this.commentService.createMarginToCommentEvent(this.marginToComment);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
toggleCommentsPanel() {
|
|
52
|
+
this.toolbarEvents.toggleCommentsPanel(!this.toolbarEvents.commentsPanelVisible.getValue());
|
|
53
|
+
}
|
|
54
|
+
ngOnDestroy() {
|
|
55
|
+
this.$subscriptions.unsubscribe();
|
|
56
|
+
}
|
|
57
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetHeaderComponent, deps: [{ token: i1.Store }, { token: i2.CommentService }, { token: i3.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CommentSetHeaderComponent, selector: "mv-comment-set-header", inputs: { showCommentSummary: "showCommentSummary" }, outputs: { showCommentSummaryDialog: "showCommentSummaryDialog" }, ngImport: i0, template: "<div class=\"govuk-tabs commentSummaryHeader\" [ngClass]=\"{'icp-mode': toolbarEvents.icp.enabled | async}\" data-module=\"govuk-tabs\">\n <ul class=\"govuk-tabs__list\">\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"govuk-tabs__list-item govuk-tabs__list-item\"\n [ngClass]=\"{'govuk-tabs__list-item--selected': tabSelected === tab.label}\">\n <a id=\"commentSubPane{{ i }}\" (click)=\"selectTab(tab.label)\" [routerLink]=\"[]\" [ngClass]=\"{'govuk-tabs__list-item--filtered': tab.isFiltered}\"\n class=\"govuk-tabs__tab\">\n {{ tab.label | titlecase }}\n </a>\n </li>\n <li>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button commentSummaryHeader-button--close\"\n title=\"Close Comments\" (click)=\"toggleCommentsPanel()\">\n </button>\n </li>\n </ul>\n <div class=\"govuk-tabs__panel\" [hidden]=\"!tabSelected\">\n <ng-container *ngIf=\"tabSelected === 'comments'\">\n <div style=\"width: 100%\">\n <div class=\"hmcts-banner\" *ngIf=\"navigationList?.length === 0\">\n <svg alt=\"\" class=\"hmcts-banner__icon\" fill=\"currentColor\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\nC13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">information</span>\n Select text to add a comment or highlight.\n </div>\n </div>\n <button type=\"button\" class=\"govuk-button\"\n id=\"commentSummary\" tabindex=\"0\"\n data-l10n-id=\"commentSummary\"\n title=\"Open collate summary\"\n (click)=\"toggleCommentsSummary()\">Collate comments</button>\n </div>\n <ng-container *ngIf=\"navigationList?.length > 0\">\n <mv-comments-navigate\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </ng-container>\n <p class=\"aui-comment__private-text\">\n <span class=\"aui-comment__private\">private</span>\n All comments can only be seen by you\n </p>\n </ng-container>\n <div [hidden]=\"tabSelected !== 'filter'\">\n <div class=\"govuk-tabs__panel--container\">\n <mv-comment-filter></mv-comment-filter>\n <mv-comments-navigate\n *ngIf=\"navigationList?.length > 0\"\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </div>\n </div>\n\n <div [hidden]=\"tabSelected !== 'search'\">\n <mv-comment-search [annotations]=\"navigationList\"></mv-comment-search>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.CommentSearchComponent, selector: "mv-comment-search", inputs: ["annotations"] }, { kind: "component", type: i7.CommentsNavigateComponent, selector: "mv-comments-navigate", inputs: ["annotationList", "autoSelect"] }, { kind: "component", type: i8.CommentFilterComponent, selector: "mv-comment-filter" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetHeaderComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'mv-comment-set-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"govuk-tabs commentSummaryHeader\" [ngClass]=\"{'icp-mode': toolbarEvents.icp.enabled | async}\" data-module=\"govuk-tabs\">\n <ul class=\"govuk-tabs__list\">\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"govuk-tabs__list-item govuk-tabs__list-item\"\n [ngClass]=\"{'govuk-tabs__list-item--selected': tabSelected === tab.label}\">\n <a id=\"commentSubPane{{ i }}\" (click)=\"selectTab(tab.label)\" [routerLink]=\"[]\" [ngClass]=\"{'govuk-tabs__list-item--filtered': tab.isFiltered}\"\n class=\"govuk-tabs__tab\">\n {{ tab.label | titlecase }}\n </a>\n </li>\n <li>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button commentSummaryHeader-button--close\"\n title=\"Close Comments\" (click)=\"toggleCommentsPanel()\">\n </button>\n </li>\n </ul>\n <div class=\"govuk-tabs__panel\" [hidden]=\"!tabSelected\">\n <ng-container *ngIf=\"tabSelected === 'comments'\">\n <div style=\"width: 100%\">\n <div class=\"hmcts-banner\" *ngIf=\"navigationList?.length === 0\">\n <svg alt=\"\" class=\"hmcts-banner__icon\" fill=\"currentColor\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\nC13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">information</span>\n Select text to add a comment or highlight.\n </div>\n </div>\n <button type=\"button\" class=\"govuk-button\"\n id=\"commentSummary\" tabindex=\"0\"\n data-l10n-id=\"commentSummary\"\n title=\"Open collate summary\"\n (click)=\"toggleCommentsSummary()\">Collate comments</button>\n </div>\n <ng-container *ngIf=\"navigationList?.length > 0\">\n <mv-comments-navigate\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </ng-container>\n <p class=\"aui-comment__private-text\">\n <span class=\"aui-comment__private\">private</span>\n All comments can only be seen by you\n </p>\n </ng-container>\n <div [hidden]=\"tabSelected !== 'filter'\">\n <div class=\"govuk-tabs__panel--container\">\n <mv-comment-filter></mv-comment-filter>\n <mv-comments-navigate\n *ngIf=\"navigationList?.length > 0\"\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </div>\n </div>\n\n <div [hidden]=\"tabSelected !== 'search'\">\n <mv-comment-search [annotations]=\"navigationList\"></mv-comment-search>\n </div>\n </div>\n</div>\n" }]
|
|
63
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.CommentService }, { type: i3.ToolbarEventService }], propDecorators: { showCommentSummary: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], showCommentSummaryDialog: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LWhlYWRlci9jb21tZW50LXNldC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQtaGVhZGVyL2NvbW1lbnQtc2V0LWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTbkQsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUFvQixLQUE2QixFQUM3QixjQUE4QixFQUMvQixhQUFrQztRQUZqQyxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBWDNCLDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHeEUsU0FBSSxHQUE0QyxFQUFFLENBQUM7UUFDbkQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFPdUMsQ0FBQztJQUV6RCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzVHLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQztZQUMvRyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztrSUFwRFUseUJBQXlCO3NIQUF6Qix5QkFBeUIsc0xDZnRDLCswRkEwREE7OzRGRDNDYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCLGlCQUVsQixpQkFBaUIsQ0FBQyxJQUFJO3lJQUlyQixrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ29CLHdCQUF3QjtzQkFBakQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21UYWdTZWxlY3RvcnMgZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2VsZWN0b3JzL3RhZy5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbUFubm9TZWxlY3RvciBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZWxlY3RvcnMvYW5ub3RhdGlvbi5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21tZW50L2NvbW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LWNvbW1lbnQtc2V0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LXNldC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50U2V0SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93Q29tbWVudFN1bW1hcnk6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2hvd0NvbW1lbnRTdW1tYXJ5RGlhbG9nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG1hcmdpblRvQ29tbWVudDogYm9vbGVhbjtcbiAgdGFiczoge2lzRmlsdGVyZWQ/OiBib29sZWFuOyBsYWJlbDogc3RyaW5nfVtdID0gW107XG4gIHRhYlNlbGVjdGVkID0gJyc7XG4gIGlzRmlsdGVyZWQ6IGJvb2xlYW47XG4gIG5hdmlnYXRpb25MaXN0OiBBbm5vdGF0aW9uW107XG4gICRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLlN0YXRlPixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ0ZpbHRlciQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21UYWdTZWxlY3RvcnMuZ2V0VGFnRmlsdGVycykpO1xuICAgIGNvbnN0IGZpbHRlcmVkQW5ub3RhdGlvbiQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Bbm5vU2VsZWN0b3IuZ2V0RmlsdGVyZWRBbm5vdGF0aW9ucykpO1xuXG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucyA9IGNvbWJpbmVMYXRlc3QoW3RhZ0ZpbHRlciQsIGZpbHRlcmVkQW5ub3RhdGlvbiRdKS5zdWJzY3JpYmUoKFtmb3JtRGF0YSwgZmlsdGVyZWRBbm5vXSkgPT4ge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTGlzdCA9IGZpbHRlcmVkQW5ubztcbiAgICAgIHRoaXMudGFicyA9IHRoaXMubmF2aWdhdGlvbkxpc3QubGVuZ3RoID4gMCA/XG4gICAgICAgIFt7bGFiZWw6ICdjb21tZW50cyd9LCB7bGFiZWw6ICdmaWx0ZXInfSwge2xhYmVsOiAnc2VhcmNoJ31dIDogW3tsYWJlbDogJ2NvbW1lbnRzJ31dO1xuICAgICAgdGhpcy5pc0ZpbHRlcmVkID0gIWZvcm1EYXRhLmxlbmd0aDtcbiAgICAgIHRoaXMudGFicyA9IFsuLi50aGlzLnRhYnNdLm1hcCgodGFiKSA9PiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc0ZpbHRlcmVkICYmIHRhYi5sYWJlbCA9PT0gJ2ZpbHRlcicgPyB7Li4udGFiLCBpc0ZpbHRlcmVkOiB0cnVlfSA6IHsuLi50YWIsIGlzRmlsdGVyZWQ6IGZhbHNlfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNvbW1lbnRzU3VtbWFyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDb21tZW50U3VtbWFyeURpYWxvZy5lbWl0KCk7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYlNlbGVjdGVkID0gdGFiICE9PSB0aGlzLnRhYlNlbGVjdGVkID8gdGFiIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLnRhYlNlbGVjdGVkKSB7XG4gICAgICB0aGlzLm1hcmdpblRvQ29tbWVudCA9IHRydWU7XG4gICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNyZWF0ZU1hcmdpblRvQ29tbWVudEV2ZW50KHRoaXMubWFyZ2luVG9Db21tZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXJnaW5Ub0NvbW1lbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlTWFyZ2luVG9Db21tZW50RXZlbnQodGhpcy5tYXJnaW5Ub0NvbW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb21tZW50c1BhbmVsKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVDb21tZW50c1BhbmVsKCF0aGlzLnRvb2xiYXJFdmVudHMuY29tbWVudHNQYW5lbFZpc2libGUuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay10YWJzIGNvbW1lbnRTdW1tYXJ5SGVhZGVyXCIgW25nQ2xhc3NdPVwieydpY3AtbW9kZSc6IHRvb2xiYXJFdmVudHMuaWNwLmVuYWJsZWQgfCBhc3luY31cIiBkYXRhLW1vZHVsZT1cImdvdnVrLXRhYnNcIj5cbiAgPHVsIGNsYXNzPVwiZ292dWstdGFic19fbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImdvdnVrLXRhYnNfX2xpc3QtaXRlbSBnb3Z1ay10YWJzX19saXN0LWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLXRhYnNfX2xpc3QtaXRlbS0tc2VsZWN0ZWQnOiB0YWJTZWxlY3RlZCA9PT0gdGFiLmxhYmVsfVwiPlxuICAgICAgPGEgaWQ9XCJjb21tZW50U3ViUGFuZXt7IGkgfX1cIiAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi5sYWJlbClcIiBbcm91dGVyTGlua109XCJbXVwiIFtuZ0NsYXNzXT1cInsnZ292dWstdGFic19fbGlzdC1pdGVtLS1maWx0ZXJlZCc6IHRhYi5pc0ZpbHRlcmVkfVwiXG4gICAgICAgICBjbGFzcz1cImdvdnVrLXRhYnNfX3RhYlwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfCB0aXRsZWNhc2UgfX1cbiAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaT5cbiAgICAgIDxidXR0b24gaWQ9XCJtdkNsb3NlQnRuXCIgI212Q2xvc2VCdG4gY2xhc3M9XCJtdi1idXR0b24gY29tbWVudFN1bW1hcnlIZWFkZXItYnV0dG9uLS1jbG9zZVwiXG4gICAgICAgIHRpdGxlPVwiQ2xvc2UgQ29tbWVudHNcIiAoY2xpY2spPVwidG9nZ2xlQ29tbWVudHNQYW5lbCgpXCI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstdGFic19fcGFuZWxcIiBbaGlkZGVuXT1cIiF0YWJTZWxlY3RlZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJTZWxlY3RlZCA9PT0gJ2NvbW1lbnRzJ1wiPlxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJcIiAqbmdJZj1cIm5hdmlnYXRpb25MaXN0Py5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8c3ZnIGFsdD1cIlwiIGNsYXNzPVwiaG1jdHMtYmFubmVyX19pY29uXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBoZWlnaHQ9XCIyNVwiIHdpZHRoPVwiMjVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuNywxOC41aC0yLjR2LTIuNGgyLjRWMTguNXogTTEyLjUsMTMuN2MtMC43LDAtMS4yLTAuNS0xLjItMS4yVjcuN2MwLTAuNywwLjUtMS4yLDEuMi0xLjJzMS4yLDAuNSwxLjIsMS4ydjQuOFxuQzEzLjcsMTMuMiwxMy4yLDEzLjcsMTIuNSwxMy43eiBNMTIuNSwwLjVjLTYuNiwwLTEyLDUuNC0xMiwxMnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzE5LjEsMC41LDEyLjUsMC41elwiIC8+PC9zdmc+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJobWN0cy1iYW5uZXJfX2Fzc2lzdGl2ZVwiPmluZm9ybWF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgU2VsZWN0IHRleHQgdG8gYWRkIGEgY29tbWVudCBvciBoaWdobGlnaHQuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjb21tZW50U3VtbWFyeVwiIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiY29tbWVudFN1bW1hcnlcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiT3BlbiBjb2xsYXRlIHN1bW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21tZW50c1N1bW1hcnkoKVwiPkNvbGxhdGUgY29tbWVudHM8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdmlnYXRpb25MaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxtdi1jb21tZW50cy1uYXZpZ2F0ZVxuICAgICAgICAgIFthbm5vdGF0aW9uTGlzdF09XCJuYXZpZ2F0aW9uTGlzdFwiPlxuICAgICAgICA8L212LWNvbW1lbnRzLW5hdmlnYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cCBjbGFzcz1cImF1aS1jb21tZW50X19wcml2YXRlLXRleHRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdWktY29tbWVudF9fcHJpdmF0ZVwiPnByaXZhdGU8L3NwYW4+XG4gICAgICAgIEFsbCBjb21tZW50cyBjYW4gb25seSBiZSBzZWVuIGJ5IHlvdVxuICAgICAgPC9wPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgW2hpZGRlbl09XCJ0YWJTZWxlY3RlZCAhPT0gJ2ZpbHRlcidcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay10YWJzX19wYW5lbC0tY29udGFpbmVyXCI+XG4gICAgICAgIDxtdi1jb21tZW50LWZpbHRlcj48L212LWNvbW1lbnQtZmlsdGVyPlxuICAgICAgICA8bXYtY29tbWVudHMtbmF2aWdhdGVcbiAgICAgICAgICAqbmdJZj1cIm5hdmlnYXRpb25MaXN0Py5sZW5ndGggPiAwXCJcbiAgICAgICAgICBbYW5ub3RhdGlvbkxpc3RdPVwibmF2aWdhdGlvbkxpc3RcIj5cbiAgICAgICAgPC9tdi1jb21tZW50cy1uYXZpZ2F0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBbaGlkZGVuXT1cInRhYlNlbGVjdGVkICE9PSAnc2VhcmNoJ1wiPlxuICAgICAgPG12LWNvbW1lbnQtc2VhcmNoIFthbm5vdGF0aW9uc109XCJuYXZpZ2F0aW9uTGlzdFwiPjwvbXYtY29tbWVudC1zZWFyY2g+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CommentSetRenderService {
|
|
4
|
+
redrawComponents(commentComponents, pageHeights, rotate, zoom) {
|
|
5
|
+
let prevComment;
|
|
6
|
+
this.sortComponents(commentComponents, pageHeights, rotate, zoom).forEach((comment) => {
|
|
7
|
+
this.adjustIfOverlapping(comment, prevComment, zoom);
|
|
8
|
+
prevComment = comment;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
sortComponents(commentComponents, pageHeights, rotate, zoom) {
|
|
12
|
+
return commentComponents.sort((a, b) => {
|
|
13
|
+
a.rectTop = this.top(a._rectangle, pageHeights[a.page - 1], rotate, zoom);
|
|
14
|
+
b.rectTop = this.top(b._rectangle, pageHeights[b.page - 1], rotate, zoom);
|
|
15
|
+
return this.processSort(a, b);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
adjustIfOverlapping(comment, prevComment, zoom) {
|
|
19
|
+
if (prevComment) {
|
|
20
|
+
const endOfPrevComment = prevComment.commentTop + this.height(prevComment);
|
|
21
|
+
if (comment.commentTop <= endOfPrevComment) {
|
|
22
|
+
comment.rectTop = (endOfPrevComment - comment.totalPrevPagesHeight) / zoom;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
processSort(a, b) {
|
|
27
|
+
if (this.onSameLine(a, b)) {
|
|
28
|
+
return a.rectLeft >= b.rectLeft ? 1 : -1;
|
|
29
|
+
}
|
|
30
|
+
return a.commentTop >= b.commentTop ? 1 : -1;
|
|
31
|
+
}
|
|
32
|
+
onSameLine(a, b) {
|
|
33
|
+
return this.difference(a.commentTop, b.commentTop) === 0;
|
|
34
|
+
}
|
|
35
|
+
top(rectangle, height, rotate, zoom) {
|
|
36
|
+
const actualHeight = height / zoom;
|
|
37
|
+
switch (rotate) {
|
|
38
|
+
case 90: return rectangle.x;
|
|
39
|
+
case 180: return actualHeight - (rectangle.y + rectangle.height);
|
|
40
|
+
case 270: return actualHeight - (rectangle.x + rectangle.width);
|
|
41
|
+
default: return rectangle.y;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
height(element) {
|
|
45
|
+
return element.form.nativeElement.getBoundingClientRect().height;
|
|
46
|
+
}
|
|
47
|
+
difference(a, b) { return Math.abs(a - b); }
|
|
48
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetRenderService }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetRenderService, decorators: [{
|
|
52
|
+
type: Injectable
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtcmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LXNldC1yZW5kZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLGdCQUFnQixDQUFDLGlCQUFxQyxFQUFFLFdBQWtCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDdEcsSUFBSSxXQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUF5QixFQUFFLEVBQUU7WUFDdEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsaUJBQXFDLEVBQUUsV0FBa0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUNwRyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQ3pFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF5QixFQUFFLFdBQTZCLEVBQUUsSUFBWTtRQUNoRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLEdBQUcsQ0FBQyxTQUFrQyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUMxRixNQUFNLFlBQVksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25DLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1QixLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sWUFBWSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFZO1FBQ3pCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDbkUsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxJQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2tJQXBEakUsdUJBQXVCO3NJQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21tZW50L2NvbW1lbnQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbW1lbnRTZXRSZW5kZXJTZXJ2aWNlIHtcblxuICByZWRyYXdDb21wb25lbnRzKGNvbW1lbnRDb21wb25lbnRzOiBDb21tZW50Q29tcG9uZW50W10sIHBhZ2VIZWlnaHRzOiBhbnlbXSwgcm90YXRlOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIGxldCBwcmV2Q29tbWVudDogQ29tbWVudENvbXBvbmVudDtcbiAgICB0aGlzLnNvcnRDb21wb25lbnRzKGNvbW1lbnRDb21wb25lbnRzLCBwYWdlSGVpZ2h0cywgcm90YXRlLCB6b29tKS5mb3JFYWNoKChjb21tZW50OiBDb21tZW50Q29tcG9uZW50KSA9PiB7XG4gICAgICB0aGlzLmFkanVzdElmT3ZlcmxhcHBpbmcoY29tbWVudCwgcHJldkNvbW1lbnQsIHpvb20pO1xuICAgICAgcHJldkNvbW1lbnQgPSBjb21tZW50O1xuICAgIH0pO1xuICB9XG5cbiAgc29ydENvbXBvbmVudHMoY29tbWVudENvbXBvbmVudHM6IENvbW1lbnRDb21wb25lbnRbXSwgcGFnZUhlaWdodHM6IGFueVtdLCByb3RhdGU6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbW1lbnRDb21wb25lbnRzLnNvcnQoKGE6IENvbW1lbnRDb21wb25lbnQsIGI6IENvbW1lbnRDb21wb25lbnQpID0+IHtcbiAgICAgIGEucmVjdFRvcCA9IHRoaXMudG9wKGEuX3JlY3RhbmdsZSwgcGFnZUhlaWdodHNbYS5wYWdlIC0gMV0sIHJvdGF0ZSwgem9vbSk7XG4gICAgICBiLnJlY3RUb3AgPSB0aGlzLnRvcChiLl9yZWN0YW5nbGUsIHBhZ2VIZWlnaHRzW2IucGFnZSAtIDFdLCByb3RhdGUsIHpvb20pO1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NvcnQoYSwgYik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdElmT3ZlcmxhcHBpbmcoY29tbWVudDogQ29tbWVudENvbXBvbmVudCwgcHJldkNvbW1lbnQ6IENvbW1lbnRDb21wb25lbnQsIHpvb206IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChwcmV2Q29tbWVudCkge1xuICAgICAgY29uc3QgZW5kT2ZQcmV2Q29tbWVudCA9IHByZXZDb21tZW50LmNvbW1lbnRUb3AgKyB0aGlzLmhlaWdodChwcmV2Q29tbWVudCk7XG4gICAgICBpZiAoY29tbWVudC5jb21tZW50VG9wIDw9IGVuZE9mUHJldkNvbW1lbnQpIHtcbiAgICAgICAgY29tbWVudC5yZWN0VG9wID0gKGVuZE9mUHJldkNvbW1lbnQgLSBjb21tZW50LnRvdGFsUHJldlBhZ2VzSGVpZ2h0KSAvIHpvb207XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU29ydChhOiBDb21tZW50Q29tcG9uZW50LCBiOiBDb21tZW50Q29tcG9uZW50KTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5vblNhbWVMaW5lKGEsIGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWN0TGVmdCA+PSBiLnJlY3RMZWZ0ID8gMSA6IC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5jb21tZW50VG9wID49IGIuY29tbWVudFRvcCA/IDEgOiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgb25TYW1lTGluZShhOiBDb21tZW50Q29tcG9uZW50LCBiOiBDb21tZW50Q29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlmZmVyZW5jZShhLmNvbW1lbnRUb3AsIGIuY29tbWVudFRvcCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHRvcChyZWN0YW5nbGU6IHsgeCwgeSwgaGVpZ2h0LCB3aWR0aCB9LCBoZWlnaHQ6IG51bWJlciwgcm90YXRlOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGFjdHVhbEhlaWdodCA9IGhlaWdodCAvIHpvb207XG4gICAgc3dpdGNoIChyb3RhdGUpIHtcbiAgICAgIGNhc2UgOTA6IHJldHVybiByZWN0YW5nbGUueDtcbiAgICAgIGNhc2UgMTgwOiByZXR1cm4gYWN0dWFsSGVpZ2h0IC0gKHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgICBjYXNlIDI3MDogcmV0dXJuIGFjdHVhbEhlaWdodCAtIChyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gcmVjdGFuZ2xlLnk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoZWlnaHQoZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZm9ybS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgZGlmZmVyZW5jZShhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7IHJldHVybiBNYXRoLmFicyhhIC0gYik7IH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, ViewChildren, } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromActions from '../../store/actions/annotation.actions';
|
|
4
|
+
import * as fromSelectors from '../../store/selectors/annotation.selectors';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngrx/store";
|
|
7
|
+
import * as i2 from "./comment/comment.service";
|
|
8
|
+
import * as i3 from "./comment-set-render.service";
|
|
9
|
+
import * as i4 from "../../toolbar/toolbar-event.service";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "./comment/comment.component";
|
|
12
|
+
export class CommentSetComponent {
|
|
13
|
+
constructor(store, commentService, renderService, toolbarEvents) {
|
|
14
|
+
this.store = store;
|
|
15
|
+
this.commentService = commentService;
|
|
16
|
+
this.renderService = renderService;
|
|
17
|
+
this.toolbarEvents = toolbarEvents;
|
|
18
|
+
this.pageHeights = [];
|
|
19
|
+
this.subscriptions = [];
|
|
20
|
+
this.clearSelection();
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.comments$ = this.store.pipe(select(fromSelectors.getCommentsArray));
|
|
24
|
+
this.annoEntities$ = this.store.pipe(select(fromSelectors.getAnnotationEntities));
|
|
25
|
+
this.subscriptions.push(this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {
|
|
26
|
+
this.redrawComments();
|
|
27
|
+
this.showCommentsPanel = toggle;
|
|
28
|
+
}));
|
|
29
|
+
this.subscriptions.push(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument()));
|
|
30
|
+
}
|
|
31
|
+
ngOnChanges(changes) {
|
|
32
|
+
if (changes.annotationSet) {
|
|
33
|
+
this.commentService.setCommentSet(this);
|
|
34
|
+
}
|
|
35
|
+
if (changes.contentScrollTop) {
|
|
36
|
+
if (this.container) {
|
|
37
|
+
this.container.nativeElement.scrollTo(0, this.contentScrollTop);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
if (this.subscriptions.length > 0) {
|
|
43
|
+
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
onSelect(annotationId) {
|
|
47
|
+
this.store.dispatch(new fromActions.SelectedAnnotation(annotationId));
|
|
48
|
+
}
|
|
49
|
+
onCommentDelete(comment) {
|
|
50
|
+
const annotation = this.annotationSet.annotations.find(anno => anno.id === comment.annotationId);
|
|
51
|
+
const comments = [];
|
|
52
|
+
const annot = {
|
|
53
|
+
...annotation,
|
|
54
|
+
comments
|
|
55
|
+
};
|
|
56
|
+
this.onAnnotationUpdate(annot);
|
|
57
|
+
this.redrawComments();
|
|
58
|
+
}
|
|
59
|
+
redrawComments() {
|
|
60
|
+
setTimeout(() => {
|
|
61
|
+
const componentList = this.commentComponents.map(comment => comment);
|
|
62
|
+
this.renderService.redrawComponents(componentList, this.pageHeights, this.rotate, this.zoom);
|
|
63
|
+
}, 0);
|
|
64
|
+
}
|
|
65
|
+
rotateDocument() {
|
|
66
|
+
if (this.panel) {
|
|
67
|
+
this.panel.nativeElement.style.height = '0';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
onCommentUpdate(payload) {
|
|
71
|
+
const annotation = this.annotationSet.annotations.find(anno => anno.id === payload.comment.annotationId);
|
|
72
|
+
const comments = [payload.comment];
|
|
73
|
+
const tags = payload.tags;
|
|
74
|
+
const annot = {
|
|
75
|
+
...annotation,
|
|
76
|
+
comments,
|
|
77
|
+
tags
|
|
78
|
+
};
|
|
79
|
+
this.onAnnotationUpdate(annot);
|
|
80
|
+
}
|
|
81
|
+
onAnnotationUpdate(annotation) {
|
|
82
|
+
this.store.dispatch(new fromActions.SaveAnnotation(annotation));
|
|
83
|
+
}
|
|
84
|
+
onContainerClick(e) {
|
|
85
|
+
if (e.path && e.path[0] === this.panel.nativeElement) {
|
|
86
|
+
this.clearSelection();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
clearSelection() {
|
|
90
|
+
this.store.dispatch(new fromActions.SelectedAnnotation({ annotationId: '', editable: false, selected: false }));
|
|
91
|
+
}
|
|
92
|
+
allCommentsSaved() {
|
|
93
|
+
this.commentService.allCommentsSaved();
|
|
94
|
+
}
|
|
95
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetComponent, deps: [{ token: i1.Store }, { token: i2.CommentService }, { token: i3.CommentSetRenderService }, { token: i4.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CommentSetComponent, selector: "mv-comment-set", inputs: { annotationSet: "annotationSet", zoom: "zoom", rotate: "rotate", height: "height", pageHeights: "pageHeights", contentScrollTop: "contentScrollTop" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "commentComponents", predicate: ["commentComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container [ngClass]=\"{'comments': showCommentsPanel}\">\n <div #panel [ngClass]=\"{ 'comments-panel comment-container': true, 'expanded': showCommentsPanel }\"\n [style.height.px]=\"height\"\n (click)=\"onContainerClick($event)\">\n <ng-container *ngFor=\"let comment of (comments$ | async); let i = index;\">\n <mv-anno-comment\n [ngStyle]=\"showCommentsPanel ? {} : {'display':'none'}\"\n #commentComponent\n (commentClick)=\"onSelect($event)\"\n (delete)=\"onCommentDelete($event)\"\n (updated)=\"onCommentUpdate($event)\"\n (changes)=\"allCommentsSaved()\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [index]=\"i\"\n [page]=\"comment.page\"\n [comment]=\"comment\"\n [annotation]=\"(annoEntities$ | async)[comment.annotationId]\"\n (renderComments)=\"redrawComments()\">\n </mv-anno-comment>\n </ng-container>\n </div>\n</div>\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.CommentComponent, selector: "mv-anno-comment", inputs: ["rotate", "zoom", "index", "page", "comment", "annotation"], outputs: ["commentClick", "renderComments", "delete", "updated", "changes"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentSetComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'mv-comment-set', template: "<div #container [ngClass]=\"{'comments': showCommentsPanel}\">\n <div #panel [ngClass]=\"{ 'comments-panel comment-container': true, 'expanded': showCommentsPanel }\"\n [style.height.px]=\"height\"\n (click)=\"onContainerClick($event)\">\n <ng-container *ngFor=\"let comment of (comments$ | async); let i = index;\">\n <mv-anno-comment\n [ngStyle]=\"showCommentsPanel ? {} : {'display':'none'}\"\n #commentComponent\n (commentClick)=\"onSelect($event)\"\n (delete)=\"onCommentDelete($event)\"\n (updated)=\"onCommentUpdate($event)\"\n (changes)=\"allCommentsSaved()\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [index]=\"i\"\n [page]=\"comment.page\"\n [comment]=\"comment\"\n [annotation]=\"(annoEntities$ | async)[comment.annotationId]\"\n (renderComments)=\"redrawComments()\">\n </mv-anno-comment>\n </ng-container>\n </div>\n</div>\n" }]
|
|
101
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.CommentService }, { type: i3.CommentSetRenderService }, { type: i4.ToolbarEventService }], propDecorators: { annotationSet: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], zoom: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], rotate: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], height: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], pageHeights: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], contentScrollTop: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], container: [{
|
|
114
|
+
type: ViewChild,
|
|
115
|
+
args: ['container', { static: false }]
|
|
116
|
+
}], panel: [{
|
|
117
|
+
type: ViewChild,
|
|
118
|
+
args: ['panel', { static: false }]
|
|
119
|
+
}], commentComponents: [{
|
|
120
|
+
type: ViewChildren,
|
|
121
|
+
args: ['commentComponent']
|
|
122
|
+
}] } });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBUzVDLE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxLQUFLLGFBQWEsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7QUFTNUUsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFBb0IsS0FBMEMsRUFDakMsY0FBOEIsRUFDOUIsYUFBc0MsRUFDdEMsYUFBa0M7UUFIM0MsVUFBSyxHQUFMLEtBQUssQ0FBcUM7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFsQnRELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBS2xCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQWN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FB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QWdCOytLQUtqQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ0YsS0FBSztzQkFBekMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUNELGlCQUFpQjtzQkFBbEQsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LCBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgQW5ub3RhdGlvblNldCB9IGZyb20gJy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tICcuLi9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBDb21tZW50IH0gZnJvbSAnLi9jb21tZW50L2NvbW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWVudFNldFJlbmRlclNlcnZpY2UgfSBmcm9tICcuL2NvbW1lbnQtc2V0LXJlbmRlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2Fubm90YXRpb24uYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBUYWdzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdGFncy5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Bbm5vdGF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LXNlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1jb21tZW50LXNldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LXNldC5jb21wb25lbnQuaHRtbCcsXG4gfSlcbmV4cG9ydCBjbGFzcyBDb21tZW50U2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgYW5ub3RhdGlvblNldDogQW5ub3RhdGlvblNldDtcbiAgQElucHV0KCkgem9vbTogbnVtYmVyO1xuICBASW5wdXQoKSByb3RhdGU6IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhZ2VIZWlnaHRzID0gW107XG4gIEBJbnB1dCgpIGNvbnRlbnRTY3JvbGxUb3A6IG51bWJlcjtcblxuICBjb21tZW50czogQ29tbWVudFtdO1xuICB0YWdzOiBUYWdzTW9kZWxbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgY29tbWVudHMkOiBPYnNlcnZhYmxlPEFubm90YXRpb25bXT47XG4gIHB1YmxpYyBhbm5vRW50aXRpZXMkOiBPYnNlcnZhYmxlPHsgW2lkOiBzdHJpbmddOiBBbm5vdGF0aW9uIH0+O1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHtzdGF0aWM6IGZhbHNlfSkgY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGFuZWwnLCB7c3RhdGljOiBmYWxzZX0pIHBhbmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZHJlbignY29tbWVudENvbXBvbmVudCcpIGNvbW1lbnRDb21wb25lbnRzOiBRdWVyeUxpc3Q8Q29tbWVudENvbXBvbmVudD47XG5cbiAgc2hvd0NvbW1lbnRzUGFuZWw6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlclNlcnZpY2U6IENvbW1lbnRTZXRSZW5kZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UpIHtcbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbW1lbnRzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVNlbGVjdG9ycy5nZXRDb21tZW50c0FycmF5KSk7XG4gICAgdGhpcy5hbm5vRW50aXRpZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldEFubm90YXRpb25FbnRpdGllcykpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLnN1YnNjcmliZSh0b2dnbGUgPT4ge1xuICAgICAgICB0aGlzLnJlZHJhd0NvbW1lbnRzKCk7XG4gICAgICAgIHRoaXMuc2hvd0NvbW1lbnRzUGFuZWwgPSB0b2dnbGU7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b29sYmFyRXZlbnRzLnJvdGF0ZVN1YmplY3Quc3Vic2NyaWJlKHJvdGF0ZSA9PiB0aGlzLnJvdGF0ZURvY3VtZW50KCkpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hbm5vdGF0aW9uU2V0KSB7XG4gICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLnNldENvbW1lbnRTZXQodGhpcyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmNvbnRlbnRTY3JvbGxUb3ApIHtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKDAsIHRoaXMuY29udGVudFNjcm9sbFRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdChhbm5vdGF0aW9uSWQ6IFNlbGVjdGlvbkFubm90YXRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5TZWxlY3RlZEFubm90YXRpb24oYW5ub3RhdGlvbklkKSk7XG4gIH1cblxuICBwdWJsaWMgb25Db21tZW50RGVsZXRlKGNvbW1lbnQ6IENvbW1lbnQpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uU2V0LmFubm90YXRpb25zLmZpbmQoYW5ubyA9PiBhbm5vLmlkID09PSBjb21tZW50LmFubm90YXRpb25JZCk7XG4gICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICBjb25zdCBhbm5vdCA9IHtcbiAgICAgIC4uLmFubm90YXRpb24sXG4gICAgICBjb21tZW50c1xuICAgIH07XG4gICAgdGhpcy5vbkFubm90YXRpb25VcGRhdGUoYW5ub3QpO1xuICAgIHRoaXMucmVkcmF3Q29tbWVudHMoKTtcbiAgfVxuXG4gIHJlZHJhd0NvbW1lbnRzKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50TGlzdDogQ29tbWVudENvbXBvbmVudFtdID0gdGhpcy5jb21tZW50Q29tcG9uZW50cy5tYXAoY29tbWVudCA9PiBjb21tZW50KTtcbiAgICAgICAgdGhpcy5yZW5kZXJTZXJ2aWNlLnJlZHJhd0NvbXBvbmVudHMoY29tcG9uZW50TGlzdCwgdGhpcy5wYWdlSGVpZ2h0cywgdGhpcy5yb3RhdGUsIHRoaXMuem9vbSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHJvdGF0ZURvY3VtZW50KCkge1xuICAgIGlmICh0aGlzLnBhbmVsKSB7XG4gICAgICB0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNvbW1lbnRVcGRhdGUocGF5bG9hZDoge2NvbW1lbnQ6IENvbW1lbnQsIHRhZ3M6IFRhZ3NNb2RlbFtdfSApIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uU2V0LmFubm90YXRpb25zLmZpbmQoYW5ubyA9PiBhbm5vLmlkID09PSBwYXlsb2FkLmNvbW1lbnQuYW5ub3RhdGlvbklkKTtcbiAgICBjb25zdCBjb21tZW50cyA9IFtwYXlsb2FkLmNvbW1lbnRdO1xuICAgIGNvbnN0IHRhZ3MgPSBwYXlsb2FkLnRhZ3M7XG4gICAgY29uc3QgYW5ub3QgPSB7XG4gICAgICAuLi5hbm5vdGF0aW9uLFxuICAgICAgY29tbWVudHMsXG4gICAgICB0YWdzXG4gICAgfTtcbiAgICB0aGlzLm9uQW5ub3RhdGlvblVwZGF0ZShhbm5vdCk7XG4gIH1cblxuICBwdWJsaWMgb25Bbm5vdGF0aW9uVXBkYXRlKGFubm90YXRpb246IEFubm90YXRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5TYXZlQW5ub3RhdGlvbihhbm5vdGF0aW9uKSk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGUpIHtcbiAgICBpZiAoZS5wYXRoICYmIGUucGF0aFswXSA9PT0gdGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2VsZWN0ZWRBbm5vdGF0aW9uKHsgYW5ub3RhdGlvbklkOiAnJywgZWRpdGFibGU6IGZhbHNlLCBzZWxlY3RlZDogZmFsc2V9KSk7XG4gIH1cblxuICBhbGxDb21tZW50c1NhdmVkKCkge1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuYWxsQ29tbWVudHNTYXZlZCgpO1xuICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwieydjb21tZW50cyc6IHNob3dDb21tZW50c1BhbmVsfVwiPlxuICA8ZGl2ICNwYW5lbCBbbmdDbGFzc109XCJ7ICdjb21tZW50cy1wYW5lbCBjb21tZW50LWNvbnRhaW5lcic6IHRydWUsICdleHBhbmRlZCc6IHNob3dDb21tZW50c1BhbmVsIH1cIlxuICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiXG4gICAgIChjbGljayk9XCJvbkNvbnRhaW5lckNsaWNrKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIChjb21tZW50cyQgfCBhc3luYyk7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICA8bXYtYW5uby1jb21tZW50XG4gICAgICAgIFtuZ1N0eWxlXT1cInNob3dDb21tZW50c1BhbmVsID8ge30gOiB7J2Rpc3BsYXknOidub25lJ31cIlxuICAgICAgICAjY29tbWVudENvbXBvbmVudFxuICAgICAgICAoY29tbWVudENsaWNrKT1cIm9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAoZGVsZXRlKT1cIm9uQ29tbWVudERlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgKHVwZGF0ZWQpPVwib25Db21tZW50VXBkYXRlKCRldmVudClcIlxuICAgICAgICAoY2hhbmdlcyk9XCJhbGxDb21tZW50c1NhdmVkKClcIlxuICAgICAgICBbem9vbV09XCJ6b29tXCJcbiAgICAgICAgW3JvdGF0ZV09XCJyb3RhdGVcIlxuICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgIFtwYWdlXT1cImNvbW1lbnQucGFnZVwiXG4gICAgICAgIFtjb21tZW50XT1cImNvbW1lbnRcIlxuICAgICAgICBbYW5ub3RhdGlvbl09XCIoYW5ub0VudGl0aWVzJCB8IGFzeW5jKVtjb21tZW50LmFubm90YXRpb25JZF1cIlxuICAgICAgICAocmVuZGVyQ29tbWVudHMpPVwicmVkcmF3Q29tbWVudHMoKVwiPlxuICAgICAgPC9tdi1hbm5vLWNvbW1lbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import { combineLatest } from 'rxjs';
|
|
4
|
+
import { select } from '@ngrx/store';
|
|
5
|
+
import * as fromSelectors from '../../store/selectors/annotation.selectors';
|
|
6
|
+
import * as fromAnnoActions from '../../store/actions/annotation.actions';
|
|
7
|
+
import * as fromTagSelectors from '../../store/selectors/tag.selectors';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngrx/store";
|
|
10
|
+
import * as i2 from "../../print.service";
|
|
11
|
+
import * as i3 from "../../toolbar/toolbar-event.service";
|
|
12
|
+
import * as i4 from "@angular/forms";
|
|
13
|
+
import * as i5 from "@angular/cdk/a11y";
|
|
14
|
+
import * as i6 from "@angular/common";
|
|
15
|
+
import * as i7 from "@angular/router";
|
|
16
|
+
import * as i8 from "@swimlane/ngx-datatable";
|
|
17
|
+
import * as i9 from "../../shared/gov-uk-date/gov-uk-date.component";
|
|
18
|
+
import * as i10 from "../../shared/gov-uk-fieldset/gov-uk-fieldset.component";
|
|
19
|
+
import * as i11 from "rpx-xui-translation";
|
|
20
|
+
import * as i12 from "../pipes/unsnake/unsnake.pipe";
|
|
21
|
+
export class CommentsSummaryComponent {
|
|
22
|
+
constructor(store, printService, toolbarEvents, fb) {
|
|
23
|
+
this.store = store;
|
|
24
|
+
this.printService = printService;
|
|
25
|
+
this.toolbarEvents = toolbarEvents;
|
|
26
|
+
this.fb = fb;
|
|
27
|
+
this.showFilters = false;
|
|
28
|
+
this.hasFilter = false;
|
|
29
|
+
this.fromFilterValid = true;
|
|
30
|
+
this.toFilterValid = true;
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.filtersFg = this.fb.group({
|
|
34
|
+
dateRangeFrom: new FormGroup({
|
|
35
|
+
day: new FormControl('', [Validators.required]),
|
|
36
|
+
month: new FormControl('', [Validators.required]),
|
|
37
|
+
year: new FormControl('', [Validators.required])
|
|
38
|
+
}),
|
|
39
|
+
dateRangeTo: new FormGroup({
|
|
40
|
+
day: new FormControl('', [Validators.required]),
|
|
41
|
+
month: new FormControl('', [Validators.required]),
|
|
42
|
+
year: new FormControl('', [Validators.required])
|
|
43
|
+
}),
|
|
44
|
+
tagFilters: this.fb.group({}),
|
|
45
|
+
});
|
|
46
|
+
this.comments$ = this.store.pipe(select(fromSelectors.getCommentSummary));
|
|
47
|
+
this.buildCheckBoxForm();
|
|
48
|
+
this.container.nativeElement.focus();
|
|
49
|
+
}
|
|
50
|
+
buildCheckBoxForm() {
|
|
51
|
+
this.filtersFg.reset();
|
|
52
|
+
const checkboxes = this.filtersFg.get('tagFilters');
|
|
53
|
+
const filters$ = this.store.pipe(select(fromSelectors.getCommentSummaryFilters));
|
|
54
|
+
this.allTags$ = this.store.pipe(select(fromTagSelectors.getAllTagsArr));
|
|
55
|
+
this.$subscriptions = combineLatest([this.allTags$, filters$]).subscribe(([tags, filters]) => {
|
|
56
|
+
this.hasFilter = filters.hasFilter;
|
|
57
|
+
tags.forEach((val) => {
|
|
58
|
+
const checkBoxValue = (filters.filters.tagFilters &&
|
|
59
|
+
filters.filters.tagFilters.hasOwnProperty(val.key)) ?
|
|
60
|
+
filters.filters.tagFilters[val.key] : false;
|
|
61
|
+
checkboxes.addControl(val.key, new FormControl(checkBoxValue));
|
|
62
|
+
});
|
|
63
|
+
this.filtersFg.updateValueAndValidity();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
onClearFilters() {
|
|
67
|
+
this.store.dispatch(new fromAnnoActions.ClearCommentSummaryFilters());
|
|
68
|
+
this.buildCheckBoxForm();
|
|
69
|
+
}
|
|
70
|
+
onFilter() {
|
|
71
|
+
const { value } = this.filtersFg;
|
|
72
|
+
const hasDateFrom = (value.dateRangeFrom.year && value.dateRangeFrom.month && value.dateRangeFrom.day);
|
|
73
|
+
const hasDateTo = (value.dateRangeTo.year && value.dateRangeTo.month && value.dateRangeTo.day);
|
|
74
|
+
const dateRangeFrom = hasDateFrom ?
|
|
75
|
+
new Date(value.dateRangeFrom.year, value.dateRangeFrom.month - 1, value.dateRangeFrom.day).getTime() : null;
|
|
76
|
+
const dateRangeTo = hasDateTo ?
|
|
77
|
+
new Date(value.dateRangeTo.year, value.dateRangeTo.month - 1, value.dateRangeTo.day).getTime() : null;
|
|
78
|
+
this.fromFilterValid = hasDateFrom ? true : false;
|
|
79
|
+
this.toFilterValid = hasDateTo ? true : false;
|
|
80
|
+
if (this.filtersFg.valid) {
|
|
81
|
+
this.store.dispatch(new fromAnnoActions.ApplyCommentSymmaryFilter({ ...value, dateRangeFrom, dateRangeTo }));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
onFiltersToggle() {
|
|
85
|
+
this.showFilters = !this.showFilters;
|
|
86
|
+
}
|
|
87
|
+
onClose() {
|
|
88
|
+
this.toolbarEvents.toggleCommentsSummary(false);
|
|
89
|
+
}
|
|
90
|
+
onPrint() {
|
|
91
|
+
this.printService.printElementNatively(this.commentsTable.nativeElement, 1000, 900);
|
|
92
|
+
}
|
|
93
|
+
navigateToPage(pageNumber) {
|
|
94
|
+
if (this.contentType === 'pdf') {
|
|
95
|
+
this.toolbarEvents.setPage(pageNumber);
|
|
96
|
+
}
|
|
97
|
+
this.toolbarEvents.toggleCommentsSummary(false);
|
|
98
|
+
this.toolbarEvents.toggleCommentsPanel(true);
|
|
99
|
+
}
|
|
100
|
+
ngOnDestroy() {
|
|
101
|
+
this.$subscriptions.unsubscribe();
|
|
102
|
+
}
|
|
103
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentsSummaryComponent, deps: [{ token: i1.Store }, { token: i2.PrintService }, { token: i3.ToolbarEventService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CommentsSummaryComponent, selector: "mv-comments-summary", inputs: { title: "title", contentType: "contentType" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["outerContainer"], descendants: true, static: true }, { propertyName: "commentsTable", first: true, predicate: ["commentContainer"], descendants: true }], ngImport: i0, template: "<div id=\"modal-background\" class=\"modal\" (click)=\"onClose()\">\n <div\n #outerContainer\n id=\"modal\"\n class=\"modal-content govuk-width-container clearfix\"\n (click)=\"$event.stopPropagation()\"\n cdkTrapFocus\n tabindex=\"0\"\n >\n <div id=\"comment-container\" class=\"comment-container\" #commentContainer>\n <h2 class=\"govuk-heading-m\">{{ title }}</h2>\n <ng-container *ngIf=\"comments$ | async as comments\">\n <ng-container *ngIf=\"comments.length\">\n <button\n type=\"submit\"\n class=\"govuk-button govuk-!-margin-right-1\"\n (click)=\"onFiltersToggle()\"\n >\n {{\n !showFilters\n ? (\"Show Filters\" | rpxTranslate)\n : (\"Hide Filters\" | rpxTranslate)\n }}\n </button>\n <button\n type=\"submit\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"onClearFilters()\"\n *ngIf=\"hasFilter\"\n >\n {{ \"Clear Filters\" | rpxTranslate }}\n </button>\n <ng-container *ngIf=\"showFilters\">\n <form [formGroup]=\"filtersFg\" (ngSubmit)=\"onFilter()\">\n <div class=\"dates\">\n <div class=\"dates__from\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeFrom', legend: 'From' }\"\n [formGroup]=\"filtersFg.controls['dateRangeFrom']\"\n [errorMessage]=\"{\n isInvalid: !fromFilterValid,\n messages: ['From date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__to\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeTo', legend: 'To' }\"\n [formGroup]=\"filtersFg.controls['dateRangeTo']\"\n [errorMessage]=\"{\n isInvalid: !toFilterValid,\n messages: ['To date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__tags\">\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: 'Tags',\n classes: 'govuk-label--m',\n id: 'filters'\n }\"\n [isHeading]=\"false\"\n >\n <div\n class=\"govuk-checkboxes--scroll\"\n [formGroup]=\"filtersFg.controls['tagFilters']\"\n >\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"let item of allTags$ | async\"\n >\n <input\n [formControlName]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n type=\"checkbox\"\n />\n <label class=\"govuk-label govuk-checkboxes__label\">\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n </div>\n <div class=\"dates__cta\">\n <button type=\"submit\" class=\"govuk-button\">\n {{ \"Filter comments\" | rpxTranslate }}\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n <ng-container *ngIf=\"comments[0]\">\n <ngx-datatable\n [rows]=\"comments\"\n rowHeight=\"auto\"\n headerHeight=\"auto\"\n [columnMode]=\"'flex'\"\n [sorts]=\"[{ prop: 'date', dir: 'desc' }]\"\n >\n <ngx-datatable-column\n name=\"{{ 'User' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Page' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <a\n [routerLink]=\"[]\"\n class=\"comment-summary_pages\"\n (click)=\"navigateToPage(value)\"\n >{{ value }}</a\n >\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Date' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Comment' | rpxTranslate }}\"\n [flexGrow]=\"3\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Tags' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <span class=\"hmcts-badge\" *ngFor=\"let tag of value\">{{\n tag.label\n }}</span>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!comments[0]\">\n <h3 class=\"govuk-heading-s\">\n {{\n \"No comments available. Select text to add a highlight or comment.\"\n | rpxTranslate\n }}\n </h3>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"button-container\">\n <button (click)=\"onPrint()\" class=\"govuk-button govuk-button--secondary\">\n {{ \"Print\" | rpxTranslate }}\n </button>\n <button id=\"modal-close-button\" (click)=\"onClose()\" class=\"govuk-button\">\n {{ \"Close\" | rpxTranslate }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i8.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i8.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i9.GovUkDateComponent, selector: "mv-gov-uk-date", inputs: ["config", "errorMessage", "formGroup"] }, { kind: "component", type: i10.GovUkFieldsetComponent, selector: "mv-gov-uk-fieldset", inputs: ["config", "isHeading", "errorMessage"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.RpxTranslatePipe, name: "rpxTranslate" }, { kind: "pipe", type: i12.UnsnakePipe, name: "unsnake" }] }); }
|
|
105
|
+
}
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CommentsSummaryComponent, decorators: [{
|
|
107
|
+
type: Component,
|
|
108
|
+
args: [{ selector: 'mv-comments-summary', template: "<div id=\"modal-background\" class=\"modal\" (click)=\"onClose()\">\n <div\n #outerContainer\n id=\"modal\"\n class=\"modal-content govuk-width-container clearfix\"\n (click)=\"$event.stopPropagation()\"\n cdkTrapFocus\n tabindex=\"0\"\n >\n <div id=\"comment-container\" class=\"comment-container\" #commentContainer>\n <h2 class=\"govuk-heading-m\">{{ title }}</h2>\n <ng-container *ngIf=\"comments$ | async as comments\">\n <ng-container *ngIf=\"comments.length\">\n <button\n type=\"submit\"\n class=\"govuk-button govuk-!-margin-right-1\"\n (click)=\"onFiltersToggle()\"\n >\n {{\n !showFilters\n ? (\"Show Filters\" | rpxTranslate)\n : (\"Hide Filters\" | rpxTranslate)\n }}\n </button>\n <button\n type=\"submit\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"onClearFilters()\"\n *ngIf=\"hasFilter\"\n >\n {{ \"Clear Filters\" | rpxTranslate }}\n </button>\n <ng-container *ngIf=\"showFilters\">\n <form [formGroup]=\"filtersFg\" (ngSubmit)=\"onFilter()\">\n <div class=\"dates\">\n <div class=\"dates__from\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeFrom', legend: 'From' }\"\n [formGroup]=\"filtersFg.controls['dateRangeFrom']\"\n [errorMessage]=\"{\n isInvalid: !fromFilterValid,\n messages: ['From date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__to\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeTo', legend: 'To' }\"\n [formGroup]=\"filtersFg.controls['dateRangeTo']\"\n [errorMessage]=\"{\n isInvalid: !toFilterValid,\n messages: ['To date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__tags\">\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: 'Tags',\n classes: 'govuk-label--m',\n id: 'filters'\n }\"\n [isHeading]=\"false\"\n >\n <div\n class=\"govuk-checkboxes--scroll\"\n [formGroup]=\"filtersFg.controls['tagFilters']\"\n >\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"let item of allTags$ | async\"\n >\n <input\n [formControlName]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n type=\"checkbox\"\n />\n <label class=\"govuk-label govuk-checkboxes__label\">\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n </div>\n <div class=\"dates__cta\">\n <button type=\"submit\" class=\"govuk-button\">\n {{ \"Filter comments\" | rpxTranslate }}\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n <ng-container *ngIf=\"comments[0]\">\n <ngx-datatable\n [rows]=\"comments\"\n rowHeight=\"auto\"\n headerHeight=\"auto\"\n [columnMode]=\"'flex'\"\n [sorts]=\"[{ prop: 'date', dir: 'desc' }]\"\n >\n <ngx-datatable-column\n name=\"{{ 'User' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Page' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <a\n [routerLink]=\"[]\"\n class=\"comment-summary_pages\"\n (click)=\"navigateToPage(value)\"\n >{{ value }}</a\n >\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Date' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Comment' | rpxTranslate }}\"\n [flexGrow]=\"3\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Tags' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <span class=\"hmcts-badge\" *ngFor=\"let tag of value\">{{\n tag.label\n }}</span>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!comments[0]\">\n <h3 class=\"govuk-heading-s\">\n {{\n \"No comments available. Select text to add a highlight or comment.\"\n | rpxTranslate\n }}\n </h3>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"button-container\">\n <button (click)=\"onPrint()\" class=\"govuk-button govuk-button--secondary\">\n {{ \"Print\" | rpxTranslate }}\n </button>\n <button id=\"modal-close-button\" (click)=\"onClose()\" class=\"govuk-button\">\n {{ \"Close\" | rpxTranslate }}\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
109
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.PrintService }, { type: i3.ToolbarEventService }, { type: i4.FormBuilder }], propDecorators: { title: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], contentType: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], container: [{
|
|
114
|
+
type: ViewChild,
|
|
115
|
+
args: ['outerContainer', { static: true }]
|
|
116
|
+
}], commentsTable: [{
|
|
117
|
+
type: ViewChild,
|
|
118
|
+
args: ['commentContainer', { static: false }]
|
|
119
|
+
}] } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMtc3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50cy1zdW1tYXJ5L2NvbW1lbnRzLXN1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudHMtc3VtbWFyeS9jb21tZW50cy1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQXNCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxhQUFhLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFJNUMsT0FBTyxLQUFLLGFBQWEsTUFBTSw0Q0FBNEMsQ0FBQztBQUU1RSxPQUFPLEtBQUssZUFBZSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLHdCQUF3QjtJQWVuQyxZQUNVLEtBQTBDLEVBQ2pDLFlBQTBCLEVBQzFCLGFBQWtDLEVBQzNDLEVBQWU7UUFIZixVQUFLLEdBQUwsS0FBSyxDQUFxQztRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDM0MsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVR6QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xC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LHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxxQkFBcUI7aUtBS3RCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUN5QyxTQUFTO3NCQUF2RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSyxhQUFhO3NCQUE5RCxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGZyb21TZWxlY3RvcnMgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2Fubm90YXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQW5ub0FjdGlvbnMgZnJvbSAnLi4vLi4vc3RvcmUvYWN0aW9ucy9hbm5vdGF0aW9uLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbVRhZ1NlbGVjdG9ycyBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvdGFnLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LWNvbW1lbnRzLXN1bW1hcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudHMtc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRzU3VtbWFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZW50VHlwZTogc3RyaW5nO1xuICBAVmlld0NoaWxkKCdvdXRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29tbWVudENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb21tZW50c1RhYmxlOiBFbGVtZW50UmVmO1xuICBwdWJsaWMgY29tbWVudHMkOiBPYnNlcnZhYmxlPGFueT47XG4gIHB1YmxpYyBmaWx0ZXJzRmc6IEZvcm1Hcm91cDtcbiAgcHJpdmF0ZSAkc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uO1xuICBhbGxUYWdzJDogT2JzZXJ2YWJsZTx7IGtleTogc3RyaW5nOyBsZW5ndGg6IG51bWJlciB9W10+O1xuICBzaG93RmlsdGVycyA9IGZhbHNlO1xuICBoYXNGaWx0ZXIgPSBmYWxzZTtcbiAgZnJvbUZpbHRlclZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgdG9GaWx0ZXJWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmludFNlcnZpY2U6IFByaW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcnNGZyA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZGF0ZVJhbmdlRnJvbTogbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGRheTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBtb250aDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICB5ZWFyOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgIH0pLFxuICAgICAgZGF0ZVJhbmdlVG86IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBkYXk6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgbW9udGg6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICB9KSxcbiAgICAgIHRhZ0ZpbHRlcnM6IHRoaXMuZmIuZ3JvdXAoe30pLFxuICAgIH0pO1xuICAgIHRoaXMuY29tbWVudHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldENvbW1lbnRTdW1tYXJ5KSk7XG4gICAgdGhpcy5idWlsZENoZWNrQm94Rm9ybSgpO1xuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGJ1aWxkQ2hlY2tCb3hGb3JtKCkge1xuICAgIHRoaXMuZmlsdGVyc0ZnLnJlc2V0KCk7XG4gICAgY29uc3QgY2hlY2tib3hlcyA9IDxGb3JtR3JvdXA+dGhpcy5maWx0ZXJzRmcuZ2V0KCd0YWdGaWx0ZXJzJyk7XG4gICAgY29uc3QgZmlsdGVycyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21TZWxlY3RvcnMuZ2V0Q29tbWVudFN1bW1hcnlGaWx0ZXJzKSk7XG4gICAgdGhpcy5hbGxUYWdzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVRhZ1NlbGVjdG9ycy5nZXRBbGxUYWdzQXJyKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucyA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuYWxsVGFncyQsIGZpbHRlcnMkXSkuc3Vic2NyaWJlKChbdGFncywgZmlsdGVyc10pID0+IHtcbiAgICAgIHRoaXMuaGFzRmlsdGVyID0gZmlsdGVycy5oYXNGaWx0ZXI7XG4gICAgICB0YWdzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja0JveFZhbHVlID0gKGZpbHRlcnMuZmlsdGVycy50YWdGaWx0ZXJzICYmXG4gICAgICAgICAgZmlsdGVycy5maWx0ZXJzLnRhZ0ZpbHRlcnMuaGFzT3duUHJvcGVydHkodmFsLmtleSkpID9cbiAgICAgICAgICBmaWx0ZXJzLmZpbHRlcnMudGFnRmlsdGVyc1t2YWwua2V5XSA6IGZhbHNlO1xuICAgICAgICBjaGVja2JveGVzLmFkZENvbnRyb2wodmFsLmtleSwgbmV3IEZvcm1Db250cm9sKGNoZWNrQm94VmFsdWUpKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWx0ZXJzRmcudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgb25DbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFubm9BY3Rpb25zLkNsZWFyQ29tbWVudFN1bW1hcnlGaWx0ZXJzKCkpO1xuICAgIHRoaXMuYnVpbGRDaGVja0JveEZvcm0oKTtcbiAgfVxuXG4gIG9uRmlsdGVyKCkge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuZmlsdGVyc0ZnO1xuXG5cbiAgICBjb25zdCBoYXNEYXRlRnJvbSA9ICh2YWx1ZS5kYXRlUmFuZ2VGcm9tLnllYXIgJiYgdmFsdWUuZGF0ZVJhbmdlRnJvbS5tb250aCAmJiB2YWx1ZS5kYXRlUmFuZ2VGcm9tLmRheSk7XG4gICAgY29uc3QgaGFzRGF0ZVRvID0gKHZhbHVlLmRhdGVSYW5nZVRvLnllYXIgJiYgdmFsdWUuZGF0ZVJhbmdlVG8ubW9udGggJiYgdmFsdWUuZGF0ZVJhbmdlVG8uZGF5KTtcbiAgICBjb25zdCBkYXRlUmFuZ2VGcm9tID0gaGFzRGF0ZUZyb20gP1xuICAgICAgbmV3IERhdGUodmFsdWUuZGF0ZVJhbmdlRnJvbS55ZWFyLCB2YWx1ZS5kYXRlUmFuZ2VGcm9tLm1vbnRoIC0gMSwgdmFsdWUuZGF0ZVJhbmdlRnJvbS5kYXkpLmdldFRpbWUoKSA6IG51bGw7XG4gICAgY29uc3QgZGF0ZVJhbmdlVG8gPSBoYXNEYXRlVG8gP1xuICAgICAgbmV3IERhdGUodmFsdWUuZGF0ZVJhbmdlVG8ueWVhciwgdmFsdWUuZGF0ZVJhbmdlVG8ubW9udGggLSAxLCB2YWx1ZS5kYXRlUmFuZ2VUby5kYXkpLmdldFRpbWUoKSA6IG51bGw7XG5cbiAgICB0aGlzLmZyb21GaWx0ZXJWYWxpZCA9IGhhc0RhdGVGcm9tID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMudG9GaWx0ZXJWYWxpZCA9IGhhc0RhdGVUbyA/IHRydWUgOiBmYWxzZTtcblxuICAgIGlmICh0aGlzLmZpbHRlcnNGZy52YWxpZCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFubm9BY3Rpb25zLkFwcGx5Q29tbWVudFN5bW1hcnlGaWx0ZXIoeyAuLi52YWx1ZSwgZGF0ZVJhbmdlRnJvbSwgZGF0ZVJhbmdlVG8gfSkpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmlsdGVyc1RvZ2dsZSgpIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJzID0gIXRoaXMuc2hvd0ZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlQ29tbWVudHNTdW1tYXJ5KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblByaW50KCk6IHZvaWQge1xuICAgIHRoaXMucHJpbnRTZXJ2aWNlLnByaW50RWxlbWVudE5hdGl2ZWx5KHRoaXMuY29tbWVudHNUYWJsZS5uYXRpdmVFbGVtZW50LCAxMDAwLCA5MDApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udGVudFR5cGUgPT09ICdwZGYnKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0UGFnZShwYWdlTnVtYmVyKTtcbiAgICB9XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzU3VtbWFyeShmYWxzZSk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzUGFuZWwodHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJtb2RhbC1iYWNrZ3JvdW5kXCIgY2xhc3M9XCJtb2RhbFwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgPGRpdlxuICAgICNvdXRlckNvbnRhaW5lclxuICAgIGlkPVwibW9kYWxcIlxuICAgIGNsYXNzPVwibW9kYWwtY29udGVudCBnb3Z1ay13aWR0aC1jb250YWluZXIgY2xlYXJmaXhcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNka1RyYXBGb2N1c1xuICAgIHRhYmluZGV4PVwiMFwiXG4gID5cbiAgICA8ZGl2IGlkPVwiY29tbWVudC1jb250YWluZXJcIiBjbGFzcz1cImNvbW1lbnQtY29udGFpbmVyXCIgI2NvbW1lbnRDb250YWluZXI+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj57eyB0aXRsZSB9fTwvaDI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbWVudHMkIHwgYXN5bmMgYXMgY29tbWVudHNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbW1lbnRzLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJzVG9nZ2xlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICFzaG93RmlsdGVyc1xuICAgICAgICAgICAgICAgID8gKFwiU2hvdyBGaWx0ZXJzXCIgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgOiAoXCJIaWRlIEZpbHRlcnNcIiB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgXCJDbGVhciBGaWx0ZXJzXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpbHRlcnNcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyc0ZnXCIgKG5nU3VibWl0KT1cIm9uRmlsdGVyKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzX19mcm9tXCI+XG4gICAgICAgICAgICAgICAgICA8bXYtZ292LXVrLWRhdGVcbiAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7IGlkOiAnZGF0ZVJhbmdlRnJvbScsIGxlZ2VuZDogJ0Zyb20nIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZpbHRlcnNGZy5jb250cm9sc1snZGF0ZVJhbmdlRnJvbSddXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkOiAhZnJvbUZpbHRlclZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzOiBbJ0Zyb20gZGF0ZSBpcyByZXF1aXJlZCddXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbXYtZ292LXVrLWRhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzX190b1wiPlxuICAgICAgICAgICAgICAgICAgPG12LWdvdi11ay1kYXRlXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwieyBpZDogJ2RhdGVSYW5nZVRvJywgbGVnZW5kOiAnVG8nIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZpbHRlcnNGZy5jb250cm9sc1snZGF0ZVJhbmdlVG8nXVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZDogIXRvRmlsdGVyVmFsaWQsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXM6IFsnVG8gZGF0ZSBpcyByZXF1aXJlZCddXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbXYtZ292LXVrLWRhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzX190YWdzXCI+XG4gICAgICAgICAgICAgICAgICA8bXYtZ292LXVrLWZpZWxkc2V0XG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogJ1RhZ3MnLFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6ICdnb3Z1ay1sYWJlbC0tbScsXG4gICAgICAgICAgICAgICAgICAgICAgaWQ6ICdmaWx0ZXJzJ1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSGVhZGluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXMtLXNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmaWx0ZXJzRmcuY29udHJvbHNbJ3RhZ0ZpbHRlcnMnXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlcyBnb3Z1ay1jaGVja2JveGVzLS1zbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbGxUYWdzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ua2V5IHwgdW5zbmFrZSB9fSAoe3sgaXRlbS5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L212LWdvdi11ay1maWVsZHNldD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXNfX2N0YVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgXCJGaWx0ZXIgY29tbWVudHNcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tZW50c1swXVwiPlxuICAgICAgICAgICAgPG5neC1kYXRhdGFibGVcbiAgICAgICAgICAgICAgW3Jvd3NdPVwiY29tbWVudHNcIlxuICAgICAgICAgICAgICByb3dIZWlnaHQ9XCJhdXRvXCJcbiAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICAgICAgIFtjb2x1bW5Nb2RlXT1cIidmbGV4J1wiXG4gICAgICAgICAgICAgIFtzb3J0c109XCJbeyBwcm9wOiAnZGF0ZScsIGRpcjogJ2Rlc2MnIH1dXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXG4gICAgICAgICAgICAgICAgbmFtZT1cInt7ICdVc2VyJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW2ZsZXhHcm93XT1cIjFcIlxuICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID48L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cbiAgICAgICAgICAgICAgICBuYW1lPVwie3sgJ1BhZ2UnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbZmxleEdyb3ddPVwiMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlIGxldC12YWx1ZT1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudC1zdW1tYXJ5X3BhZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9QYWdlKHZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgID57eyB2YWx1ZSB9fTwvYVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxuICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyAnRGF0ZScgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtmbGV4R3Jvd109XCIxXCJcbiAgICAgICAgICAgICAgPjwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxuICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyAnQ29tbWVudCcgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtmbGV4R3Jvd109XCIzXCJcbiAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+PC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXG4gICAgICAgICAgICAgICAgbmFtZT1cInt7ICdUYWdzJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW2ZsZXhHcm93XT1cIjFcIlxuICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlIGxldC12YWx1ZT1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhtY3RzLWJhZGdlXCIgKm5nRm9yPVwibGV0IHRhZyBvZiB2YWx1ZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgIHRhZy5sYWJlbFxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tbWVudHNbMF1cIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXNcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIFwiTm8gY29tbWVudHMgYXZhaWxhYmxlLiBTZWxlY3QgdGV4dCB0byBhZGQgYSBoaWdobGlnaHQgb3IgY29tbWVudC5cIlxuICAgICAgICAgICAgICAgIHwgcnB4VHJhbnNsYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25QcmludCgpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj5cbiAgICAgICAge3sgXCJQcmludFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gaWQ9XCJtb2RhbC1jbG9zZS1idXR0b25cIiAoY2xpY2spPVwib25DbG9zZSgpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAge3sgXCJDbG9zZVwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|