@hmcts/media-viewer 4.0.1 → 4.0.2
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/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
- package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
- package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
- package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
- package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
- package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
- package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
- package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
- package/{esm2022 → esm2020}/lib/annotations/annotations.module.mjs +61 -61
- package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
- package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
- package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
- package/{esm2022 → esm2020}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
- package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
- package/{esm2022 → esm2020}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
- package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
- package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +123 -0
- package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
- package/{esm2022 → esm2020}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
- package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
- package/{esm2022 → esm2020}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
- package/{esm2022 → esm2020}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/annotations/services/tags/tags.services.mjs +5 -5
- package/esm2020/lib/annotations/tags/tags.component.mjs +53 -0
- package/{esm2022 → esm2020}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
- package/{esm2022 → esm2020}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
- package/esm2020/lib/icp/icp-follower.service.mjs +60 -0
- package/esm2020/lib/icp/icp-presenter.service.mjs +55 -0
- package/esm2020/lib/icp/icp-session-api.service.mjs +21 -0
- package/esm2020/lib/icp/icp-update.service.mjs +65 -0
- package/{esm2022 → esm2020}/lib/icp/icp.interfaces.mjs +1 -1
- package/esm2020/lib/icp/icp.service.mjs +95 -0
- package/{esm2022 → esm2020}/lib/icp/participants-list/participants-list.component.mjs +5 -5
- package/esm2020/lib/icp/socket.service.mjs +118 -0
- package/esm2020/lib/media-viewer.component.mjs +245 -0
- package/{esm2022 → esm2020}/lib/media-viewer.module.mjs +55 -55
- package/{esm2022 → esm2020}/lib/print.service.mjs +4 -4
- package/esm2020/lib/redaction/components/redaction.component.mjs +91 -0
- package/{esm2022 → esm2020}/lib/redaction/services/redaction-api.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
- package/{esm2022 → esm2020}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
- package/{esm2022 → esm2020}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
- package/{esm2022 → esm2020}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
- package/{esm2022 → esm2020}/lib/shared/shared.module.mjs +19 -19
- package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
- package/{esm2022 → esm2020}/lib/shared/util/services/number.helper.service.mjs +5 -5
- package/esm2020/lib/store/actions/icp.actions.mjs +56 -0
- package/esm2020/lib/store/bookmarks-store-utils.mjs +49 -0
- package/esm2020/lib/store/effects/annotation.effects.mjs +51 -0
- package/{esm2022 → esm2020}/lib/store/effects/bookmarks.effects.mjs +5 -5
- package/{esm2022 → esm2020}/lib/store/effects/document.effects.mjs +5 -5
- package/esm2020/lib/store/effects/icp.effects.mjs +26 -0
- package/{esm2022 → esm2020}/lib/store/effects/redaction.effects.mjs +5 -5
- package/esm2020/lib/store/reducers/annotations.reducer.mjs +208 -0
- package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +116 -0
- package/esm2020/lib/store/reducers/document.reducer.mjs +135 -0
- package/esm2020/lib/store/reducers/icp.reducer.mjs +56 -0
- package/esm2020/lib/store/reducers/redaction.reducer.mjs +116 -0
- package/esm2020/lib/store/reducers/tags.reducer.mjs +93 -0
- package/esm2020/lib/store/selectors/annotation.selectors.mjs +81 -0
- package/{esm2022 → esm2020}/lib/store/selectors/bookmark.selectors.mjs +1 -1
- package/{esm2022 → esm2020}/lib/store/selectors/redaction.selectors.mjs +1 -1
- package/esm2020/lib/store/store-utils.mjs +131 -0
- package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
- package/{esm2022 → esm2020}/lib/toolbar/icp-event.service.mjs +1 -1
- package/{esm2022 → esm2020}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
- package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
- package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
- package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
- package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
- package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
- package/esm2020/lib/toolbar/toolbar-event.service.mjs +178 -0
- package/{esm2022 → esm2020}/lib/toolbar/toolbar.module.mjs +25 -25
- package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
- package/{esm2022 → esm2020}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
- package/esm2020/lib/viewers/grab-n-drag.directive.mjs +57 -0
- package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
- package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
- package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +209 -0
- package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
- package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
- package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
- package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
- package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +5 -5
- package/{esm2022 → esm2020}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
- package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
- package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
- package/{esm2022 → esm2020}/lib/viewers/viewer-event.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/viewers/viewer-util.service.mjs +5 -5
- package/fesm2015/hmcts-media-viewer.mjs +6953 -0
- package/fesm2015/hmcts-media-viewer.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/hmcts-media-viewer.mjs +462 -453
- package/fesm2020/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/icp-session-api.service.d.ts +4 -1
- package/lib/icp/icp-session-api.service.d.ts.map +1 -1
- package/lib/icp/icp-update.service.d.ts.map +1 -1
- package/lib/icp/icp.interfaces.d.ts +1 -0
- package/lib/icp/icp.interfaces.d.ts.map +1 -1
- package/lib/icp/icp.service.d.ts +1 -0
- package/lib/icp/icp.service.d.ts.map +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 +2 -1
- 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/actions/icp.actions.d.ts +8 -2
- package/lib/store/actions/icp.actions.d.ts.map +1 -1
- package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
- package/lib/store/effects/icp.effects.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 +23 -16
- package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
- package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
- package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
- package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
- package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
- package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
- package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
- package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
- package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
- package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
- package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
- package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
- package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
- package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
- package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
- package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
- package/esm2022/lib/icp/icp-follower.service.mjs +0 -60
- package/esm2022/lib/icp/icp-presenter.service.mjs +0 -55
- package/esm2022/lib/icp/icp-session-api.service.mjs +0 -21
- package/esm2022/lib/icp/icp-update.service.mjs +0 -57
- package/esm2022/lib/icp/icp.service.mjs +0 -93
- package/esm2022/lib/icp/socket.service.mjs +0 -118
- package/esm2022/lib/media-viewer.component.mjs +0 -244
- package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
- package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
- package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
- package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
- package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
- package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
- package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
- package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -116
- package/esm2022/lib/store/reducers/document.reducer.mjs +0 -135
- package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
- package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
- package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
- package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
- package/esm2022/lib/store/store-utils.mjs +0 -131
- package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
- package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
- package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
- package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
- package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
- package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
- package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
- package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
- package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
- package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
- package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
- package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -210
- package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
- package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
- package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
- package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
- package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
- package/fesm2022/hmcts-media-viewer.mjs.map +0 -1
- /package/{esm2022 → esm2020}/hmcts-media-viewer.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/models/api-persisted.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/models/event-select.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/models/tags.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/annotations/models/user.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/icp/icp.events.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/redaction/services/redaction.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/actions/annotation.actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/actions/bookmark.actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/actions/document.actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/actions/redaction.actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/actions/tag.actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/effects/index.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/models/bookmarks.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/models/filters.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/reducers/reducers.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/selectors/document.selectors.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/selectors/icp.selectors.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/store/selectors/tag.selectors.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/viewers/viewer-exception.model.mjs +0 -0
- /package/{esm2022 → esm2020}/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
|
+
}
|
|
43
|
+
/** @nocollapse */ CommentSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSearchComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
/** @nocollapse */ CommentSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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 });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", 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: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQtaGVhZGVyL2NvbW1lbnQtc2VhcmNoL2NvbW1lbnQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LWhlYWRlci9jb21tZW50LXNlYXJjaC9jb21tZW50LXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJILE9BQU8sS0FBSyxXQUFXLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHNCQUFzQjtJQVVqQyxZQUFvQixLQUEwQztRQUExQyxVQUFLLEdBQUwsS0FBSyxDQUFxQztRQUg5RCxrQkFBYSxHQUFpQixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7SUFFaUQsQ0FBQztJQUVsRSxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxnQ0FBZ0M7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxjQUFjLENBQUMsVUFBa0I7UUFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVztpQkFDbEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNwRCxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDbkIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNoRTtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzt1SUExQ1Usc0JBQXNCOzJIQUF0QixzQkFBc0IsNk1DWG5DLDJ5QkF5QkE7NEZEZGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQixpQkFFZCxpQkFBaUIsQ0FBQyxJQUFJOzRGQUlaLFdBQVc7c0JBQW5DLEtBQUs7Z0JBRXFDLFdBQVc7c0JBQXJELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21BY3Rpb25zIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtY29tbWVudC1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSBhbm5vdGF0aW9uczogQW5ub3RhdGlvbltdO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jywge3N0YXRpYzogZmFsc2V9KSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBzZWFyY2hTdHJpbmc6IHN0cmluZztcbiAgc2VhcmNoUmVzdWx0czogQW5ub3RhdGlvbltdID0gW107XG4gIHNlYXJjaEluZGV4ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFRPRE8gd29ya2Fyb3VuZCBmb3IgdGFiIGVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7dGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2VhcmNoQ29tbWVudCgnJykpOyB9LCAyNTApO1xuICB9XG5cbiAgc2VhcmNoQ29tbWVudHMoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclNlYXJjaCgpO1xuICAgIGlmIChzZWFyY2hUZXh0Lmxlbmd0aCA+IDIpIHtcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gc2VhcmNoVGV4dDtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHRoaXMuYW5ub3RhdGlvbnNcbiAgICAgICAgLmZpbHRlcihhbm5vdGF0aW9uID0+IGFubm90YXRpb24uY29tbWVudHMubGVuZ3RoID4gMClcbiAgICAgICAgLmZpbHRlcihhbm5vdGF0aW9uID0+XG4gICAgICAgICAgYW5ub3RhdGlvbi5jb21tZW50c1swXS5jb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgaWYgKHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlYXJjaENvbW1lbnQoc2VhcmNoVGV4dCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoSW5kZXggPSAwO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlYXJjaENvbW1lbnQoJycpKTtcbiAgfVxufVxuIiwiPGlucHV0XG4gICNzZWFyY2hJbnB1dFxuICB0eXBlPVwidGV4dFwiXG4gIGNsYXNzPVwiZ292dWstaW5wdXQgY29tbWVudC1zZWFyY2hfX2l0ZW1cIlxuICBpZD1cInNlYXJjaC1jb21tZW50cy1pbnB1dFwiXG4gIG5hbWU9XCJzZWFyY2hTdHJpbmdcIlxuICBhcmlhLWxhYmVsPVwic2VhcmNoIGNvbW1lbnRzIGlucHV0XCJcbiAgW25nTW9kZWxdPVwic2VhcmNoU3RyaW5nXCJcbi8+XG48YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBbY2xhc3MuZ292dWstYnV0dG9uLS1kaXNhYmxlZF09XCJzZWFyY2hJbnB1dD8udmFsdWUubGVuZ3RoIDw9IDJcIlxuICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBjb21tZW50LXNlYXJjaF9faXRlbVwiXG4gIChjbGljayk9XCJzZWFyY2hDb21tZW50cyhzZWFyY2hJbnB1dC52YWx1ZS50cmltKCkpXCJcbj5cbiAge3sgXCJTZWFyY2hcIiB8IHJweFRyYW5zbGF0ZSB9fVxuPC9idXR0b24+XG48bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwXCI+XG4gIDxtdi1jb21tZW50cy1uYXZpZ2F0ZSBbYW5ub3RhdGlvbkxpc3RdPVwic2VhcmNoUmVzdWx0c1wiPjwvbXYtY29tbWVudHMtbmF2aWdhdGU+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hTdHJpbmcgJiYgc2VhcmNoUmVzdWx0cz8ubGVuZ3RoID09PSAwXCI+XG4gIDxwIGNsYXNzPVwiY29tbWVudC1zZWFyY2hfX2l0ZW1cIj5cbiAgICB7eyBcIk5vIG1hdGNoZXMgaGF2ZSBiZWVuIGZvdW5kXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgPC9wPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
package/esm2020/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
|
+
}
|
|
58
|
+
/** @nocollapse */ CommentSetHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSetHeaderComponent, deps: [{ token: i1.Store }, { token: i2.CommentService }, { token: i3.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
/** @nocollapse */ CommentSetHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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", "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 });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", 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: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LWhlYWRlci9jb21tZW50LXNldC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQtaGVhZGVyL2NvbW1lbnQtc2V0LWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTbkQsTUFBTSxPQUFPLHlCQUF5QjtJQVlwQyxZQUFvQixLQUE2QixFQUM3QixjQUE4QixFQUMvQixhQUFrQztRQUZqQyxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBWDNCLDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHeEUsU0FBSSxHQUE0QyxFQUFFLENBQUM7UUFDbkQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFPdUMsQ0FBQztJQUV6RCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzVHLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQztZQUMvRyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OzBJQXBEVSx5QkFBeUI7OEhBQXpCLHlCQUF5QixzTENmdEMsKzBGQTBEQTs0RkQzQ2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QixpQkFFbEIsaUJBQWlCLENBQUMsSUFBSTsySkFJckIsa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUNvQix3QkFBd0I7c0JBQWpELE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L2Fubm90YXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tVGFnU2VsZWN0b3JzIGZyb20gJy4uLy4uLy4uL3N0b3JlL3NlbGVjdG9ycy90YWcuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21Bbm5vU2VsZWN0b3IgZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2Fubm90YXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWVudC9jb21tZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1jb21tZW50LXNldC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1zZXQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbWVudFNldEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0NvbW1lbnRTdW1tYXJ5OiBib29sZWFuO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNob3dDb21tZW50U3VtbWFyeURpYWxvZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBtYXJnaW5Ub0NvbW1lbnQ6IGJvb2xlYW47XG4gIHRhYnM6IHtpc0ZpbHRlcmVkPzogYm9vbGVhbjsgbGFiZWw6IHN0cmluZ31bXSA9IFtdO1xuICB0YWJTZWxlY3RlZCA9ICcnO1xuICBpc0ZpbHRlcmVkOiBib29sZWFuO1xuICBuYXZpZ2F0aW9uTGlzdDogQW5ub3RhdGlvbltdO1xuICAkc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5TdGF0ZT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwdWJsaWMgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB0YWdGaWx0ZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tVGFnU2VsZWN0b3JzLmdldFRhZ0ZpbHRlcnMpKTtcbiAgICBjb25zdCBmaWx0ZXJlZEFubm90YXRpb24kID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tQW5ub1NlbGVjdG9yLmdldEZpbHRlcmVkQW5ub3RhdGlvbnMpKTtcblxuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMgPSBjb21iaW5lTGF0ZXN0KFt0YWdGaWx0ZXIkLCBmaWx0ZXJlZEFubm90YXRpb24kXSkuc3Vic2NyaWJlKChbZm9ybURhdGEsIGZpbHRlcmVkQW5ub10pID0+IHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkxpc3QgPSBmaWx0ZXJlZEFubm87XG4gICAgICB0aGlzLnRhYnMgPSB0aGlzLm5hdmlnYXRpb25MaXN0Lmxlbmd0aCA+IDAgP1xuICAgICAgICBbe2xhYmVsOiAnY29tbWVudHMnfSwge2xhYmVsOiAnZmlsdGVyJ30sIHtsYWJlbDogJ3NlYXJjaCd9XSA6IFt7bGFiZWw6ICdjb21tZW50cyd9XTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJlZCA9ICFmb3JtRGF0YS5sZW5ndGg7XG4gICAgICB0aGlzLnRhYnMgPSBbLi4udGhpcy50YWJzXS5tYXAoKHRhYikgPT4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNGaWx0ZXJlZCAmJiB0YWIubGFiZWwgPT09ICdmaWx0ZXInID8gey4uLnRhYiwgaXNGaWx0ZXJlZDogdHJ1ZX0gOiB7Li4udGFiLCBpc0ZpbHRlcmVkOiBmYWxzZX07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb21tZW50c1N1bW1hcnkoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q29tbWVudFN1bW1hcnlEaWFsb2cuZW1pdCgpO1xuICB9XG5cbiAgc2VsZWN0VGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy50YWJTZWxlY3RlZCA9IHRhYiAhPT0gdGhpcy50YWJTZWxlY3RlZCA/IHRhYiA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy50YWJTZWxlY3RlZCkge1xuICAgICAgdGhpcy5tYXJnaW5Ub0NvbW1lbnQgPSB0cnVlO1xuICAgICAgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVNYXJnaW5Ub0NvbW1lbnRFdmVudCh0aGlzLm1hcmdpblRvQ29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFyZ2luVG9Db21tZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNyZWF0ZU1hcmdpblRvQ29tbWVudEV2ZW50KHRoaXMubWFyZ2luVG9Db21tZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ29tbWVudHNQYW5lbCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlQ29tbWVudHNQYW5lbCghdGhpcy50b29sYmFyRXZlbnRzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstdGFicyBjb21tZW50U3VtbWFyeUhlYWRlclwiIFtuZ0NsYXNzXT1cInsnaWNwLW1vZGUnOiB0b29sYmFyRXZlbnRzLmljcC5lbmFibGVkIHwgYXN5bmN9XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay10YWJzXCI+XG4gIDx1bCBjbGFzcz1cImdvdnVrLXRhYnNfX2xpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJnb3Z1ay10YWJzX19saXN0LWl0ZW0gZ292dWstdGFic19fbGlzdC1pdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay10YWJzX19saXN0LWl0ZW0tLXNlbGVjdGVkJzogdGFiU2VsZWN0ZWQgPT09IHRhYi5sYWJlbH1cIj5cbiAgICAgIDxhIGlkPVwiY29tbWVudFN1YlBhbmV7eyBpIH19XCIgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIubGFiZWwpXCIgW3JvdXRlckxpbmtdPVwiW11cIiBbbmdDbGFzc109XCJ7J2dvdnVrLXRhYnNfX2xpc3QtaXRlbS0tZmlsdGVyZWQnOiB0YWIuaXNGaWx0ZXJlZH1cIlxuICAgICAgICAgY2xhc3M9XCJnb3Z1ay10YWJzX190YWJcIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIHwgdGl0bGVjYXNlIH19XG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8YnV0dG9uIGlkPVwibXZDbG9zZUJ0blwiICNtdkNsb3NlQnRuIGNsYXNzPVwibXYtYnV0dG9uIGNvbW1lbnRTdW1tYXJ5SGVhZGVyLWJ1dHRvbi0tY2xvc2VcIlxuICAgICAgICB0aXRsZT1cIkNsb3NlIENvbW1lbnRzXCIgKGNsaWNrKT1cInRvZ2dsZUNvbW1lbnRzUGFuZWwoKVwiPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgPC91bD5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLXRhYnNfX3BhbmVsXCIgW2hpZGRlbl09XCIhdGFiU2VsZWN0ZWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiU2VsZWN0ZWQgPT09ICdjb21tZW50cydcIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG1jdHMtYmFubmVyXCIgKm5nSWY9XCJuYXZpZ2F0aW9uTGlzdD8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPHN2ZyBhbHQ9XCJcIiBjbGFzcz1cImhtY3RzLWJhbm5lcl9faWNvblwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgaGVpZ2h0PVwiMjVcIiB3aWR0aD1cIjI1XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjcsMTguNWgtMi40di0yLjRoMi40VjE4LjV6IE0xMi41LDEzLjdjLTAuNywwLTEuMi0wLjUtMS4yLTEuMlY3LjdjMC0wLjcsMC41LTEuMiwxLjItMS4yczEuMiwwLjUsMS4yLDEuMnY0LjhcbkMxMy43LDEzLjIsMTMuMiwxMy43LDEyLjUsMTMuN3ogTTEyLjUsMC41Yy02LjYsMC0xMiw1LjQtMTIsMTJzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMxOS4xLDAuNSwxMi41LDAuNXpcIiAvPjwvc3ZnPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJfX21lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaG1jdHMtYmFubmVyX19hc3Npc3RpdmVcIj5pbmZvcm1hdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgIFNlbGVjdCB0ZXh0IHRvIGFkZCBhIGNvbW1lbnQgb3IgaGlnaGxpZ2h0LlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAgICAgICAgIGlkPVwiY29tbWVudFN1bW1hcnlcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImNvbW1lbnRTdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIk9wZW4gY29sbGF0ZSBzdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tbWVudHNTdW1tYXJ5KClcIj5Db2xsYXRlIGNvbW1lbnRzPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXZpZ2F0aW9uTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICA8bXYtY29tbWVudHMtbmF2aWdhdGVcbiAgICAgICAgICBbYW5ub3RhdGlvbkxpc3RdPVwibmF2aWdhdGlvbkxpc3RcIj5cbiAgICAgICAgPC9tdi1jb21tZW50cy1uYXZpZ2F0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHAgY2xhc3M9XCJhdWktY29tbWVudF9fcHJpdmF0ZS10ZXh0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXVpLWNvbW1lbnRfX3ByaXZhdGVcIj5wcml2YXRlPC9zcGFuPlxuICAgICAgICBBbGwgY29tbWVudHMgY2FuIG9ubHkgYmUgc2VlbiBieSB5b3VcbiAgICAgIDwvcD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IFtoaWRkZW5dPVwidGFiU2VsZWN0ZWQgIT09ICdmaWx0ZXInXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstdGFic19fcGFuZWwtLWNvbnRhaW5lclwiPlxuICAgICAgICA8bXYtY29tbWVudC1maWx0ZXI+PC9tdi1jb21tZW50LWZpbHRlcj5cbiAgICAgICAgPG12LWNvbW1lbnRzLW5hdmlnYXRlXG4gICAgICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uTGlzdD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2Fubm90YXRpb25MaXN0XT1cIm5hdmlnYXRpb25MaXN0XCI+XG4gICAgICAgIDwvbXYtY29tbWVudHMtbmF2aWdhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgW2hpZGRlbl09XCJ0YWJTZWxlY3RlZCAhPT0gJ3NlYXJjaCdcIj5cbiAgICAgIDxtdi1jb21tZW50LXNlYXJjaCBbYW5ub3RhdGlvbnNdPVwibmF2aWdhdGlvbkxpc3RcIj48L212LWNvbW1lbnQtc2VhcmNoPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -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
|
+
}
|
|
49
|
+
/** @nocollapse */ CommentSetRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSetRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
/** @nocollapse */ CommentSetRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSetRenderService });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSetRenderService, decorators: [{
|
|
52
|
+
type: Injectable
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtcmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LXNldC1yZW5kZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLGdCQUFnQixDQUFDLGlCQUFxQyxFQUFFLFdBQWtCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDdEcsSUFBSSxXQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUF5QixFQUFFLEVBQUU7WUFDdEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsaUJBQXFDLEVBQUUsV0FBa0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUNwRyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQ3pFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF5QixFQUFFLFdBQTZCLEVBQUUsSUFBWTtRQUNoRyxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDMUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUM1RTtTQUNGO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sVUFBVSxDQUFDLENBQW1CLEVBQUUsQ0FBbUI7UUFDekQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sR0FBRyxDQUFDLFNBQWtDLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFZO1FBQzFGLE1BQU0sWUFBWSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1QixLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sWUFBWSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsT0FBWTtRQUN6QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ25FLENBQUM7SUFFTyxVQUFVLENBQUMsQ0FBUyxFQUFFLENBQVMsSUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7d0lBcERqRSx1QkFBdUI7NElBQXZCLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tZW50U2V0UmVuZGVyU2VydmljZSB7XG5cbiAgcmVkcmF3Q29tcG9uZW50cyhjb21tZW50Q29tcG9uZW50czogQ29tbWVudENvbXBvbmVudFtdLCBwYWdlSGVpZ2h0czogYW55W10sIHJvdGF0ZTogbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcbiAgICBsZXQgcHJldkNvbW1lbnQ6IENvbW1lbnRDb21wb25lbnQ7XG4gICAgdGhpcy5zb3J0Q29tcG9uZW50cyhjb21tZW50Q29tcG9uZW50cywgcGFnZUhlaWdodHMsIHJvdGF0ZSwgem9vbSkuZm9yRWFjaCgoY29tbWVudDogQ29tbWVudENvbXBvbmVudCkgPT4ge1xuICAgICAgdGhpcy5hZGp1c3RJZk92ZXJsYXBwaW5nKGNvbW1lbnQsIHByZXZDb21tZW50LCB6b29tKTtcbiAgICAgIHByZXZDb21tZW50ID0gY29tbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIHNvcnRDb21wb25lbnRzKGNvbW1lbnRDb21wb25lbnRzOiBDb21tZW50Q29tcG9uZW50W10sIHBhZ2VIZWlnaHRzOiBhbnlbXSwgcm90YXRlOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIHJldHVybiBjb21tZW50Q29tcG9uZW50cy5zb3J0KChhOiBDb21tZW50Q29tcG9uZW50LCBiOiBDb21tZW50Q29tcG9uZW50KSA9PiB7XG4gICAgICBhLnJlY3RUb3AgPSB0aGlzLnRvcChhLl9yZWN0YW5nbGUsIHBhZ2VIZWlnaHRzW2EucGFnZSAtIDFdLCByb3RhdGUsIHpvb20pO1xuICAgICAgYi5yZWN0VG9wID0gdGhpcy50b3AoYi5fcmVjdGFuZ2xlLCBwYWdlSGVpZ2h0c1tiLnBhZ2UgLSAxXSwgcm90YXRlLCB6b29tKTtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTb3J0KGEsIGIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RJZk92ZXJsYXBwaW5nKGNvbW1lbnQ6IENvbW1lbnRDb21wb25lbnQsIHByZXZDb21tZW50OiBDb21tZW50Q29tcG9uZW50LCB6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocHJldkNvbW1lbnQpIHtcbiAgICAgIGNvbnN0IGVuZE9mUHJldkNvbW1lbnQgPSBwcmV2Q29tbWVudC5jb21tZW50VG9wICsgdGhpcy5oZWlnaHQocHJldkNvbW1lbnQpO1xuICAgICAgaWYgKGNvbW1lbnQuY29tbWVudFRvcCA8PSBlbmRPZlByZXZDb21tZW50KSB7XG4gICAgICAgIGNvbW1lbnQucmVjdFRvcCA9IChlbmRPZlByZXZDb21tZW50IC0gY29tbWVudC50b3RhbFByZXZQYWdlc0hlaWdodCkgLyB6b29tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1NvcnQoYTogQ29tbWVudENvbXBvbmVudCwgYjogQ29tbWVudENvbXBvbmVudCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMub25TYW1lTGluZShhLCBiKSkge1xuICAgICAgcmV0dXJuIGEucmVjdExlZnQgPj0gYi5yZWN0TGVmdCA/IDEgOiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGEuY29tbWVudFRvcCA+PSBiLmNvbW1lbnRUb3AgPyAxIDogLTE7XG4gIH1cblxuICBwcml2YXRlIG9uU2FtZUxpbmUoYTogQ29tbWVudENvbXBvbmVudCwgYjogQ29tbWVudENvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2UoYS5jb21tZW50VG9wLCBiLmNvbW1lbnRUb3ApID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSB0b3AocmVjdGFuZ2xlOiB7IHgsIHksIGhlaWdodCwgd2lkdGggfSwgaGVpZ2h0OiBudW1iZXIsIHJvdGF0ZTogbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCBhY3R1YWxIZWlnaHQgPSBoZWlnaHQgLyB6b29tO1xuICAgIHN3aXRjaCAocm90YXRlKSB7XG4gICAgICBjYXNlIDkwOiByZXR1cm4gcmVjdGFuZ2xlLng7XG4gICAgICBjYXNlIDE4MDogcmV0dXJuIGFjdHVhbEhlaWdodCAtIChyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQpO1xuICAgICAgY2FzZSAyNzA6IHJldHVybiBhY3R1YWxIZWlnaHQgLSAocmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgpO1xuICAgICAgZGVmYXVsdDogcmV0dXJuIHJlY3RhbmdsZS55O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGVpZ2h0KGVsZW1lbnQ6IGFueSkge1xuICAgIHJldHVybiBlbGVtZW50LmZvcm0ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIGRpZmZlcmVuY2UoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIgeyByZXR1cm4gTWF0aC5hYnMoYSAtIGIpOyB9XG59XG4iXX0=
|
|
@@ -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
|
+
}
|
|
96
|
+
/** @nocollapse */ CommentSetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentSetComponent, deps: [{ token: i1.Store }, { token: i2.CommentService }, { token: i3.CommentSetRenderService }, { token: i4.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
97
|
+
/** @nocollapse */ CommentSetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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" }] });
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", 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: function () { return [{ 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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O3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ0YsS0FBSztzQkFBekMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUNELGlCQUFpQjtzQkFBbEQsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LCBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgQW5ub3RhdGlvblNldCB9IGZyb20gJy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tICcuLi9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBDb21tZW50IH0gZnJvbSAnLi9jb21tZW50L2NvbW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWVudFNldFJlbmRlclNlcnZpY2UgfSBmcm9tICcuL2NvbW1lbnQtc2V0LXJlbmRlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2Fubm90YXRpb24uYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBUYWdzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdGFncy5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Bbm5vdGF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LXNlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1jb21tZW50LXNldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LXNldC5jb21wb25lbnQuaHRtbCcsXG4gfSlcbmV4cG9ydCBjbGFzcyBDb21tZW50U2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgYW5ub3RhdGlvblNldDogQW5ub3RhdGlvblNldDtcbiAgQElucHV0KCkgem9vbTogbnVtYmVyO1xuICBASW5wdXQoKSByb3RhdGU6IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhZ2VIZWlnaHRzID0gW107XG4gIEBJbnB1dCgpIGNvbnRlbnRTY3JvbGxUb3A6IG51bWJlcjtcblxuICBjb21tZW50czogQ29tbWVudFtdO1xuICB0YWdzOiBUYWdzTW9kZWxbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgY29tbWVudHMkOiBPYnNlcnZhYmxlPEFubm90YXRpb25bXT47XG4gIHB1YmxpYyBhbm5vRW50aXRpZXMkOiBPYnNlcnZhYmxlPHsgW2lkOiBzdHJpbmddOiBBbm5vdGF0aW9uIH0+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
|
+
}
|
|
104
|
+
/** @nocollapse */ CommentsSummaryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommentsSummaryComponent, deps: [{ token: i1.Store }, { token: i2.PrintService }, { token: i3.ToolbarEventService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
105
|
+
/** @nocollapse */ CommentsSummaryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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", "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" }] });
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", 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: function () { return [{ 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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K0JBQ0UscUJBQXFCO21MQUt0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDeUMsU0FBUztzQkFBdkQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssYUFBYTtzQkFBOUQsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBQcmludFNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcmludC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbUFubm9BY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21UYWdTZWxlY3RvcnMgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL3RhZy5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1jb21tZW50cy1zdW1tYXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnRzLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50c1N1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgY29udGVudFR5cGU6IHN0cmluZztcbiAgQFZpZXdDaGlsZCgnb3V0ZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbW1lbnRDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29tbWVudHNUYWJsZTogRWxlbWVudFJlZjtcbiAgcHVibGljIGNvbW1lbnRzJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgZmlsdGVyc0ZnOiBGb3JtR3JvdXA7XG4gIHByaXZhdGUgJHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgYWxsVGFncyQ6IE9ic2VydmFibGU8eyBrZXk6IHN0cmluZzsgbGVuZ3RoOiBudW1iZXIgfVtdPjtcbiAgc2hvd0ZpbHRlcnMgPSBmYWxzZTtcbiAgaGFzRmlsdGVyID0gZmFsc2U7XG4gIGZyb21GaWx0ZXJWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gIHRvRmlsdGVyVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5Bbm5vdGF0aW9uU2V0U3RhdGU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRTZXJ2aWNlOiBQcmludFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzRmcgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRhdGVSYW5nZUZyb206IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBkYXk6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgbW9udGg6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgeWVhcjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICB9KSxcbiAgICAgIGRhdGVSYW5nZVRvOiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZGF5OiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIG1vbnRoOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHllYXI6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgfSksXG4gICAgICB0YWdGaWx0ZXJzOiB0aGlzLmZiLmdyb3VwKHt9KSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbW1lbnRzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVNlbGVjdG9ycy5nZXRDb21tZW50U3VtbWFyeSkpO1xuICAgIHRoaXMuYnVpbGRDaGVja0JveEZvcm0oKTtcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBidWlsZENoZWNrQm94Rm9ybSgpIHtcbiAgICB0aGlzLmZpbHRlcnNGZy5yZXNldCgpO1xuICAgIGNvbnN0IGNoZWNrYm94ZXMgPSA8Rm9ybUdyb3VwPnRoaXMuZmlsdGVyc0ZnLmdldCgndGFnRmlsdGVycycpO1xuICAgIGNvbnN0IGZpbHRlcnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldENvbW1lbnRTdW1tYXJ5RmlsdGVycykpO1xuICAgIHRoaXMuYWxsVGFncyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21UYWdTZWxlY3RvcnMuZ2V0QWxsVGFnc0FycikpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFsbFRhZ3MkLCBmaWx0ZXJzJF0pLnN1YnNjcmliZSgoW3RhZ3MsIGZpbHRlcnNdKSA9PiB7XG4gICAgICB0aGlzLmhhc0ZpbHRlciA9IGZpbHRlcnMuaGFzRmlsdGVyO1xuICAgICAgdGFncy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgY29uc3QgY2hlY2tCb3hWYWx1ZSA9IChmaWx0ZXJzLmZpbHRlcnMudGFnRmlsdGVycyAmJlxuICAgICAgICAgIGZpbHRlcnMuZmlsdGVycy50YWdGaWx0ZXJzLmhhc093blByb3BlcnR5KHZhbC5rZXkpKSA/XG4gICAgICAgICAgZmlsdGVycy5maWx0ZXJzLnRhZ0ZpbHRlcnNbdmFsLmtleV0gOiBmYWxzZTtcbiAgICAgICAgY2hlY2tib3hlcy5hZGRDb250cm9sKHZhbC5rZXksIG5ldyBGb3JtQ29udHJvbChjaGVja0JveFZhbHVlKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVyc0ZnLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Bbm5vQWN0aW9ucy5DbGVhckNvbW1lbnRTdW1tYXJ5RmlsdGVycygpKTtcbiAgICB0aGlzLmJ1aWxkQ2hlY2tCb3hGb3JtKCk7XG4gIH1cblxuICBvbkZpbHRlcigpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLmZpbHRlcnNGZztcblxuXG4gICAgY29uc3QgaGFzRGF0ZUZyb20gPSAodmFsdWUuZGF0ZVJhbmdlRnJvbS55ZWFyICYmIHZhbHVlLmRhdGVSYW5nZUZyb20ubW9udGggJiYgdmFsdWUuZGF0ZVJhbmdlRnJvbS5kYXkpO1xuICAgIGNvbnN0IGhhc0RhdGVUbyA9ICh2YWx1ZS5kYXRlUmFuZ2VUby55ZWFyICYmIHZhbHVlLmRhdGVSYW5nZVRvLm1vbnRoICYmIHZhbHVlLmRhdGVSYW5nZVRvLmRheSk7XG4gICAgY29uc3QgZGF0ZVJhbmdlRnJvbSA9IGhhc0RhdGVGcm9tID9cbiAgICAgIG5ldyBEYXRlKHZhbHVlLmRhdGVSYW5nZUZyb20ueWVhciwgdmFsdWUuZGF0ZVJhbmdlRnJvbS5tb250aCAtIDEsIHZhbHVlLmRhdGVSYW5nZUZyb20uZGF5KS5nZXRUaW1lKCkgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVSYW5nZVRvID0gaGFzRGF0ZVRvID9cbiAgICAgIG5ldyBEYXRlKHZhbHVlLmRhdGVSYW5nZVRvLnllYXIsIHZhbHVlLmRhdGVSYW5nZVRvLm1vbnRoIC0gMSwgdmFsdWUuZGF0ZVJhbmdlVG8uZGF5KS5nZXRUaW1lKCkgOiBudWxsO1xuXG4gICAgdGhpcy5mcm9tRmlsdGVyVmFsaWQgPSBoYXNEYXRlRnJvbSA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnRvRmlsdGVyVmFsaWQgPSBoYXNEYXRlVG8gPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJzRmcudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Bbm5vQWN0aW9ucy5BcHBseUNvbW1lbnRTeW1tYXJ5RmlsdGVyKHsgLi4udmFsdWUsIGRhdGVSYW5nZUZyb20sIGRhdGVSYW5nZVRvIH0pKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlcnNUb2dnbGUoKSB7XG4gICAgdGhpcy5zaG93RmlsdGVycyA9ICF0aGlzLnNob3dGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzU3VtbWFyeShmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25QcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLnByaW50U2VydmljZS5wcmludEVsZW1lbnROYXRpdmVseSh0aGlzLmNvbW1lbnRzVGFibGUubmF0aXZlRWxlbWVudCwgMTAwMCwgOTAwKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9QYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSAncGRmJykge1xuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNldFBhZ2UocGFnZU51bWJlcik7XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVDb21tZW50c1N1bW1hcnkoZmFsc2UpO1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVDb21tZW50c1BhbmVsKHRydWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwibW9kYWwtYmFja2dyb3VuZFwiIGNsYXNzPVwibW9kYWxcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gIDxkaXZcbiAgICAjb3V0ZXJDb250YWluZXJcbiAgICBpZD1cIm1vZGFsXCJcbiAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgZ292dWstd2lkdGgtY29udGFpbmVyIGNsZWFyZml4XCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjZGtUcmFwRm9jdXNcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdiBpZD1cImNvbW1lbnQtY29udGFpbmVyXCIgY2xhc3M9XCJjb21tZW50LWNvbnRhaW5lclwiICNjb21tZW50Q29udGFpbmVyPlxuICAgICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1tXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbW1lbnRzJCB8IGFzeW5jIGFzIGNvbW1lbnRzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tZW50cy5sZW5ndGhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyc1RvZ2dsZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAhc2hvd0ZpbHRlcnNcbiAgICAgICAgICAgICAgICA/IChcIlNob3cgRmlsdGVyc1wiIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIDogKFwiSGlkZSBGaWx0ZXJzXCIgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJoYXNGaWx0ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IFwiQ2xlYXIgRmlsdGVyc1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJzXCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlcnNGZ1wiIChuZ1N1Ym1pdCk9XCJvbkZpbHRlcigpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc19fZnJvbVwiPlxuICAgICAgICAgICAgICAgICAgPG12LWdvdi11ay1kYXRlXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwieyBpZDogJ2RhdGVSYW5nZUZyb20nLCBsZWdlbmQ6ICdGcm9tJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmaWx0ZXJzRmcuY29udHJvbHNbJ2RhdGVSYW5nZUZyb20nXVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZDogIWZyb21GaWx0ZXJWYWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlczogWydGcm9tIGRhdGUgaXMgcmVxdWlyZWQnXVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID48L212LWdvdi11ay1kYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc19fdG9cIj5cbiAgICAgICAgICAgICAgICAgIDxtdi1nb3YtdWstZGF0ZVxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInsgaWQ6ICdkYXRlUmFuZ2VUbycsIGxlZ2VuZDogJ1RvJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmaWx0ZXJzRmcuY29udHJvbHNbJ2RhdGVSYW5nZVRvJ11cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBpc0ludmFsaWQ6ICF0b0ZpbHRlclZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzOiBbJ1RvIGRhdGUgaXMgcmVxdWlyZWQnXVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID48L212LWdvdi11ay1kYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc19fdGFnc1wiPlxuICAgICAgICAgICAgICAgICAgPG12LWdvdi11ay1maWVsZHNldFxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6ICdUYWdzJyxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiAnZ292dWstbGFiZWwtLW0nLFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZmlsdGVycydcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0hlYWRpbmddPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzLS1zY3JvbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZmlsdGVyc0ZnLmNvbnRyb2xzWyd0YWdGaWx0ZXJzJ11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXMgZ292dWstY2hlY2tib3hlcy0tc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWxsVGFncyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmtleSB8IHVuc25ha2UgfX0gKHt7IGl0ZW0ubGVuZ3RoIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9tdi1nb3YtdWstZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzX19jdGFcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IFwiRmlsdGVyIGNvbW1lbnRzXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbWVudHNbMF1cIj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlXG4gICAgICAgICAgICAgIFtyb3dzXT1cImNvbW1lbnRzXCJcbiAgICAgICAgICAgICAgcm93SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICAgICAgIGhlYWRlckhlaWdodD1cImF1dG9cIlxuICAgICAgICAgICAgICBbY29sdW1uTW9kZV09XCInZmxleCdcIlxuICAgICAgICAgICAgICBbc29ydHNdPVwiW3sgcHJvcDogJ2RhdGUnLCBkaXI6ICdkZXNjJyB9XVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxuICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyAnVXNlcicgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtmbGV4R3Jvd109XCIxXCJcbiAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+PC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uXG4gICAgICAgICAgICAgICAgbmFtZT1cInt7ICdQYWdlJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW2ZsZXhHcm93XT1cIjFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW11cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtc3VtbWFyeV9wYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZSh2YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+e3sgdmFsdWUgfX08L2FcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cbiAgICAgICAgICAgICAgICBuYW1lPVwie3sgJ0RhdGUnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbZmxleEdyb3ddPVwiMVwiXG4gICAgICAgICAgICAgID48L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cbiAgICAgICAgICAgICAgICBuYW1lPVwie3sgJ0NvbW1lbnQnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbZmxleEdyb3ddPVwiM1wiXG4gICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPjwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxuICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyAnVGFncycgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtmbGV4R3Jvd109XCIxXCJcbiAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJobWN0cy1iYWRnZVwiICpuZ0Zvcj1cImxldCB0YWcgb2YgdmFsdWVcIj57e1xuICAgICAgICAgICAgICAgICAgICB0YWcubGFiZWxcbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICA8L25neC1kYXRhdGFibGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbW1lbnRzWzBdXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiZ292dWstaGVhZGluZy1zXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBcIk5vIGNvbW1lbnRzIGF2YWlsYWJsZS4gU2VsZWN0IHRleHQgdG8gYWRkIGEgaGlnaGxpZ2h0IG9yIGNvbW1lbnQuXCJcbiAgICAgICAgICAgICAgICB8IHJweFRyYW5zbGF0ZVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uUHJpbnQoKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgIHt7IFwiUHJpbnRcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGlkPVwibW9kYWwtY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgIHt7IFwiQ2xvc2VcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|