@hmcts/media-viewer 4.0.0 → 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 +461 -451
- 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-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 -209
- 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,236 @@
|
|
|
1
|
+
import { SearchType } from './../toolbar-event.service';
|
|
2
|
+
import { Component, HostListener, ViewChild } from '@angular/core';
|
|
3
|
+
import { select } from '@ngrx/store';
|
|
4
|
+
import * as fromDocument from '../../store/selectors/document.selectors';
|
|
5
|
+
import * as fromRedactionActions from '../../store/actions/redaction.actions';
|
|
6
|
+
import uuid from 'uuid';
|
|
7
|
+
import { some } from 'lodash';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngrx/store";
|
|
10
|
+
import * as i2 from "../toolbar-button-visibility.service";
|
|
11
|
+
import * as i3 from "../toolbar-event.service";
|
|
12
|
+
import * as i4 from "../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.service";
|
|
13
|
+
import * as i5 from "@angular/common";
|
|
14
|
+
import * as i6 from "@angular/forms";
|
|
15
|
+
import * as i7 from "rpx-xui-translation";
|
|
16
|
+
export class RedactionSearchBarComponent {
|
|
17
|
+
constructor(store, toolbarButtons, toolbarEvents, highlightService) {
|
|
18
|
+
this.store = store;
|
|
19
|
+
this.toolbarButtons = toolbarButtons;
|
|
20
|
+
this.toolbarEvents = toolbarEvents;
|
|
21
|
+
this.highlightService = highlightService;
|
|
22
|
+
this.highlightAll = true;
|
|
23
|
+
this.matchCase = false;
|
|
24
|
+
this.wholeWord = false;
|
|
25
|
+
this.resultsText = '';
|
|
26
|
+
this.searchText = '';
|
|
27
|
+
this.resultCount = 0;
|
|
28
|
+
this.redactElements = [];
|
|
29
|
+
this.advancedSearchVisible = false;
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.subscription = this.toolbarEvents.redactionSerachSubject.subscribe((results) => this.redactAllSearched(results));
|
|
33
|
+
this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));
|
|
34
|
+
this.subscription.add(this.store.pipe(select(fromDocument.getPages)).subscribe((pages) => {
|
|
35
|
+
if (pages[1]) {
|
|
36
|
+
this.allPages = pages;
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
this.subscription.add(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
|
|
40
|
+
this.subscription.add(this.toolbarEvents.openRedactionSearch.subscribe((searchMode) => {
|
|
41
|
+
if (searchMode) {
|
|
42
|
+
this.openSearchModal = searchMode.isOpen;
|
|
43
|
+
this.searchType = searchMode.modeType;
|
|
44
|
+
this.modeText();
|
|
45
|
+
}
|
|
46
|
+
}));
|
|
47
|
+
this.subscription.add(this.toolbarEvents.redactAllInProgressSubject
|
|
48
|
+
.subscribe(inProgress => this.redactAllInProgress = inProgress));
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this.subscription.unsubscribe();
|
|
52
|
+
}
|
|
53
|
+
onWindowKeyDown(e) {
|
|
54
|
+
if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
this.toolbarEvents.searchBarHidden.next(false);
|
|
57
|
+
setTimeout(() => this.findInput.nativeElement.focus(), 200);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
search(reset = true) {
|
|
61
|
+
this.redactAll = !reset;
|
|
62
|
+
if (this.redactAll) {
|
|
63
|
+
this.toolbarEvents.redactAllInProgressSubject.next(true);
|
|
64
|
+
}
|
|
65
|
+
if (reset) {
|
|
66
|
+
this.redactElements = [];
|
|
67
|
+
}
|
|
68
|
+
this.toolbarEvents.search({
|
|
69
|
+
searchTerm: this.searchText,
|
|
70
|
+
highlightAll: this.highlightAll,
|
|
71
|
+
matchCase: this.matchCase,
|
|
72
|
+
wholeWord: this.wholeWord,
|
|
73
|
+
previous: false,
|
|
74
|
+
reset
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
modeText() {
|
|
78
|
+
if (this.searchType === SearchType.Highlight) {
|
|
79
|
+
this.inProgressText = 'Highlighting';
|
|
80
|
+
this.titleText = 'Highlight';
|
|
81
|
+
}
|
|
82
|
+
else if (this.searchType === SearchType.Redact) {
|
|
83
|
+
this.inProgressText = 'Redacting';
|
|
84
|
+
this.titleText = 'Redact';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
saveRedaction(redactRectangle) {
|
|
88
|
+
const redaction = redactRectangle.map(ele => {
|
|
89
|
+
return { page: ele.page, rectangles: ele.rectangles, redactionId: uuid(), documentId: this.documentId };
|
|
90
|
+
});
|
|
91
|
+
this.store.dispatch(new fromRedactionActions.SaveBulkRedaction({ searchRedactions: redaction }));
|
|
92
|
+
}
|
|
93
|
+
existInRedactElements(pageNumber, matechedIndex, rectangles) {
|
|
94
|
+
if (this.redactElements && this.redactElements.length > 0) {
|
|
95
|
+
const pagesFound = this.redactElements.find(re => re.page === pageNumber && re.matchedIndex === matechedIndex);
|
|
96
|
+
const pageRectangles = pagesFound?.rectangles;
|
|
97
|
+
if (!pageRectangles || pageRectangles.length <= 0) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
let matchesRectangles = 0;
|
|
101
|
+
for (let rectIndx = 0; rectIndx < pageRectangles.length; rectIndx++) {
|
|
102
|
+
const rectangle = pageRectangles[rectIndx];
|
|
103
|
+
const foundRectangle = rectangles.find(re => re.width === rectangle.width &&
|
|
104
|
+
re.height === rectangle.height && re.x === rectangle.x && re.y === rectangle.y);
|
|
105
|
+
if (foundRectangle) {
|
|
106
|
+
matchesRectangles++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return pageRectangles.length === matchesRectangles;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
onCloseSearchModal() {
|
|
114
|
+
this.toolbarEvents.openRedactionSearch.next({ isOpen: false, modeType: this.searchType });
|
|
115
|
+
}
|
|
116
|
+
setSearchResultsCount(results) {
|
|
117
|
+
this.resultCount = results.total;
|
|
118
|
+
this.resultsText = this.resultCount > 0
|
|
119
|
+
? `${results.total} results founds`
|
|
120
|
+
: 'No results found';
|
|
121
|
+
}
|
|
122
|
+
redactAllSearched(results) {
|
|
123
|
+
const $this = this;
|
|
124
|
+
const intervalId = setInterval(() => {
|
|
125
|
+
const highlightElement = document.getElementsByClassName('highlight selected');
|
|
126
|
+
if (highlightElement && highlightElement.length > 0) {
|
|
127
|
+
clearInterval(intervalId);
|
|
128
|
+
$this.redactAllSearchedTick(results);
|
|
129
|
+
}
|
|
130
|
+
}, 100);
|
|
131
|
+
}
|
|
132
|
+
redactAllSearchedTick(results) {
|
|
133
|
+
const highlightElement = document.getElementsByClassName('highlight selected');
|
|
134
|
+
if (highlightElement && highlightElement.length > 0) {
|
|
135
|
+
this.resultCount = results.matchesCount;
|
|
136
|
+
const pageNumber = results.page + 1;
|
|
137
|
+
const rectangles = this.getRectangles(pageNumber);
|
|
138
|
+
if (rectangles && this.redactElements.length <= this.resultCount
|
|
139
|
+
&& !this.existInRedactElements(pageNumber, results.matchedIndex, rectangles)) {
|
|
140
|
+
this.redactElements.push({ page: pageNumber, matchedIndex: results?.matchedIndex, rectangles });
|
|
141
|
+
this.CreateRedactAllText();
|
|
142
|
+
}
|
|
143
|
+
if (this.redactAll && this.resultCount && this.resultCount > 0
|
|
144
|
+
&& rectangles && this.redactElements.length < this.resultCount) {
|
|
145
|
+
this.search(false);
|
|
146
|
+
}
|
|
147
|
+
if (this.redactAll && this.resultCount && this.redactElements.length === this.resultCount) {
|
|
148
|
+
this.redactAll = false;
|
|
149
|
+
this.redactAllText = null;
|
|
150
|
+
if (this.searchType === SearchType.Redact) {
|
|
151
|
+
this.saveRedaction(this.redactElements);
|
|
152
|
+
}
|
|
153
|
+
else if (this.searchType === SearchType.Highlight) {
|
|
154
|
+
this.highlightService.saveAnnotationSet(this.redactElements);
|
|
155
|
+
this.cleanUpPostSave();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
cleanUpPostSave() {
|
|
161
|
+
this.toolbarEvents.redactAllInProgressSubject.next(false);
|
|
162
|
+
this.searchText = '';
|
|
163
|
+
this.search();
|
|
164
|
+
}
|
|
165
|
+
CreateRedactAllText() {
|
|
166
|
+
this.redactAllText = `${this.redactElements.length} of ${this.resultCount}`;
|
|
167
|
+
}
|
|
168
|
+
onEscapeKeyPress(e) {
|
|
169
|
+
this.toolbarEvents.searchBarHidden.next(true);
|
|
170
|
+
}
|
|
171
|
+
onEnterKeyPress(e) {
|
|
172
|
+
this.search();
|
|
173
|
+
}
|
|
174
|
+
toggleSearchBar() {
|
|
175
|
+
this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
|
|
176
|
+
}
|
|
177
|
+
getRectangles(page) {
|
|
178
|
+
this.pageHeight = this.allPages[page].styles.height;
|
|
179
|
+
this.pageWidth = this.allPages[page].styles.width;
|
|
180
|
+
this.zoom = parseFloat(this.allPages[page].scaleRotation.scale);
|
|
181
|
+
this.rotate = parseInt(this.allPages[page].scaleRotation.rotation, 10);
|
|
182
|
+
const selectedHighLightedElements = document.getElementsByClassName('highlight selected');
|
|
183
|
+
if (selectedHighLightedElements && selectedHighLightedElements.length > 0) {
|
|
184
|
+
const docRange = document.createRange();
|
|
185
|
+
if (some(selectedHighLightedElements, element => element.className === 'highlight begin selected' || element.className === 'highlight end selected')) {
|
|
186
|
+
docRange.setStart(selectedHighLightedElements[0], 0);
|
|
187
|
+
const endNode = selectedHighLightedElements[selectedHighLightedElements.length - 1];
|
|
188
|
+
docRange.setEnd(endNode, endNode.childNodes.length);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
docRange.selectNodeContents(selectedHighLightedElements[0]);
|
|
192
|
+
}
|
|
193
|
+
const selection = window.getSelection();
|
|
194
|
+
selection?.removeAllRanges();
|
|
195
|
+
selection?.addRange(docRange);
|
|
196
|
+
if (selection.rangeCount && !selection.isCollapsed) {
|
|
197
|
+
const range = selection.getRangeAt(0).cloneRange();
|
|
198
|
+
const clientRects = range.getClientRects();
|
|
199
|
+
if (clientRects) {
|
|
200
|
+
const parentRect = selectedHighLightedElements[0].parentElement.parentElement.getBoundingClientRect();
|
|
201
|
+
const selectionRectangles = [];
|
|
202
|
+
for (let i = 0; i < clientRects.length; i++) {
|
|
203
|
+
const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);
|
|
204
|
+
const findSelecttionRectangle = selectionRectangles.find((rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x);
|
|
205
|
+
if (!findSelecttionRectangle) {
|
|
206
|
+
selectionRectangles.push(selectionRectangle);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return selectionRectangles;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
createTextRectangle(rect, parentRect) {
|
|
215
|
+
const height = rect.bottom - rect.top;
|
|
216
|
+
const width = rect.right - rect.left;
|
|
217
|
+
const top = rect.top - parentRect.top;
|
|
218
|
+
const left = rect.left - parentRect.left;
|
|
219
|
+
let rectangle = this.highlightService.applyRotation(this.pageHeight, this.pageWidth, height, width, top, left, this.rotate, this.zoom);
|
|
220
|
+
rectangle = { id: uuid(), ...rectangle };
|
|
221
|
+
return rectangle;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/** @nocollapse */ RedactionSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RedactionSearchBarComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.ToolbarEventService }, { token: i4.HighlightCreateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
225
|
+
/** @nocollapse */ RedactionSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RedactionSearchBarComponent, selector: "mv-redaction-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.RpxTranslatePipe, name: "rpxTranslate" }] });
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RedactionSearchBarComponent, decorators: [{
|
|
227
|
+
type: Component,
|
|
228
|
+
args: [{ selector: 'mv-redaction-search-bar', template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"] }]
|
|
229
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.ToolbarEventService }, { type: i4.HighlightCreateService }]; }, propDecorators: { findInput: [{
|
|
230
|
+
type: ViewChild,
|
|
231
|
+
args: ['findInput', { static: true }]
|
|
232
|
+
}], onWindowKeyDown: [{
|
|
233
|
+
type: HostListener,
|
|
234
|
+
args: ['window:keydown', ['$event']]
|
|
235
|
+
}] } });
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0MsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlsRyxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxZQUFZLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxLQUFLLG9CQUFvQixNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7QUFPOUIsTUFBTSxPQUFPLDJCQUEyQjtJQThCdEMsWUFDVSxLQUE2QixFQUNyQixjQUE4QyxFQUM5QyxhQUFrQyxFQUNsQyxnQkFBd0M7UUFIaEQsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBOUIxRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FB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Q0FBQyxJQUFJLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUV6QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUNqRCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxTQUFTLEVBQ2QsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBQ0gsSUFBSSxFQUNKLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1FBQ0YsU0FBUyxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFFekMsT0FBTyxTQUFzQixDQUFDO0lBQ2hDLENBQUM7OzRJQXhRVSwyQkFBMkI7Z0lBQTNCLDJCQUEyQiwyUENyQnhDLDRzRkEyRUE7NEZEdERhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7Z05BTU8sU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQThEakMsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1bGtSZWRhY3Rpb24sIFJlZGFjdGlvbiB9IGZyb20gJy4vLi4vLi4vcmVkYWN0aW9uL3NlcnZpY2VzL3JlZGFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBTZWFyY2hNb2RlLCBTZWFyY2hSZXN1bHRzQ291bnQsIFNlYXJjaFR5cGUgfSBmcm9tICcuLy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZWRhY3Rpb25TZWFyY2gsIFJlZGFjdFJlY3RhbmdsZSB9IGZyb20gJy4vcmVkYWN0aW9uLXNlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9yZWN0YW5nbGUvcmVjdGFuZ2xlLm1vZGVsJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudCBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3Rpb25BY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvcmVkYWN0aW9uLmFjdGlvbnMnO1xuaW1wb3J0IHV1aWQgZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBIaWdobGlnaHRDcmVhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi1jcmVhdGUvaGlnaGxpZ2h0LWNyZWF0ZS9oaWdobGlnaHQtY3JlYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgc29tZSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXJlZGFjdGlvbi1zZWFyY2gtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRhY3Rpb25TZWFyY2hCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnZmluZElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgZmluZElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIGhpZ2hsaWdodEFsbCA9IHRydWU7XG4gIG1hdGNoQ2FzZSA9IGZhbHNlO1xuICB3aG9sZVdvcmQgPSBmYWxzZTtcbiAgcmVzdWx0c1RleHQgPSAnJztcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICByZXN1bHRDb3VudCA9IDA7XG4gIHJlZGFjdEVsZW1lbnRzOiBSZWRhY3RSZWN0YW5nbGVbXSA9IFtdO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7XG4gIHJvdGF0ZTogbnVtYmVyO1xuICBhbGxQYWdlczogb2JqZWN0O1xuICByZWRhY3RBbGw6IGJvb2xlYW47XG4gIG9wZW5TZWFyY2hNb2RhbDogYm9vbGVhbjtcbiAgcmVkYWN0QWxsSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgcmVkYWN0QWxsVGV4dD86IHN0cmluZztcbiAgc2VhcmNoVHlwZTogU2VhcmNoVHlwZTtcbiAgaW5Qcm9ncmVzc1RleHQ6IHN0cmluZztcbiAgdGl0bGVUZXh0OiBzdHJpbmc7XG5cblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGFkdmFuY2VkU2VhcmNoVmlzaWJsZSA9IGZhbHNlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLlN0YXRlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZTogSGlnaGxpZ2h0Q3JlYXRlU2VydmljZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0aW9uU2VyYWNoU3ViamVjdC5zdWJzY3JpYmUoKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCkgPT4gdGhpcy5yZWRhY3RBbGxTZWFyY2hlZChyZXN1bHRzKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50LmdldERvY3VtZW50SWQpKS5zdWJzY3JpYmUoZG9jSWQgPT4gdGhpcy5kb2N1bWVudElkID0gZG9jSWQpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnQuZ2V0UGFnZXMpKS5zdWJzY3JpYmUoKHBhZ2VzKSA9PiB7XG4gICAgICBpZiAocGFnZXNbMV0pIHtcbiAgICAgICAgdGhpcy5hbGxQYWdlcyA9IHBhZ2VzO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5zdWJzY3JpYmUocmVzdWx0cyA9PiB0aGlzLnNldFNlYXJjaFJlc3VsdHNDb3VudChyZXN1bHRzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMub3BlblJlZGFjdGlvblNlYXJjaC5zdWJzY3JpYmUoKHNlYXJjaE1vZGU6IFNlYXJjaE1vZGUpID0+IHtcbiAgICAgIGlmIChzZWFyY2hNb2RlKSB7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaE1vZGFsID0gc2VhcmNoTW9kZS5pc09wZW47XG4gICAgICAgIHRoaXMuc2VhcmNoVHlwZSA9IHNlYXJjaE1vZGUubW9kZVR5cGU7XG4gICAgICAgIHRoaXMubW9kZVRleHQoKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdFxuICAgICAgLnN1YnNjcmliZShpblByb2dyZXNzID0+IHRoaXMucmVkYWN0QWxsSW5Qcm9ncmVzcyA9IGluUHJvZ3Jlc3MpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dChmYWxzZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZmluZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2gocmVzZXQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5yZWRhY3RBbGwgPSAhcmVzZXQ7XG4gICAgaWYgKHRoaXMucmVkYWN0QWxsKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0QWxsSW5Qcm9ncmVzc1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHJlc2V0KSB7XG4gICAgICB0aGlzLnJlZGFjdEVsZW1lbnRzID0gW107XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXRcbiAgICB9KTtcbiAgfVxuXG4gIG1vZGVUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNlYXJjaFR5cGUuSGlnaGxpZ2h0KSB7XG4gICAgICB0aGlzLmluUHJvZ3Jlc3NUZXh0ID0gJ0hpZ2hsaWdodGluZyc7XG4gICAgICB0aGlzLnRpdGxlVGV4dCA9ICdIaWdobGlnaHQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTZWFyY2hUeXBlLlJlZGFjdCkge1xuICAgICAgdGhpcy5pblByb2dyZXNzVGV4dCA9ICdSZWRhY3RpbmcnO1xuICAgICAgdGhpcy50aXRsZVRleHQgPSAnUmVkYWN0JztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVSZWRhY3Rpb24ocmVkYWN0UmVjdGFuZ2xlOiBSZWRhY3RSZWN0YW5nbGVbXSkge1xuICAgIGNvbnN0IHJlZGFjdGlvbiA9IHJlZGFjdFJlY3RhbmdsZS5tYXAoZWxlID0+IHtcbiAgICAgIHJldHVybiB7IHBhZ2U6IGVsZS5wYWdlLCByZWN0YW5nbGVzOiBlbGUucmVjdGFuZ2xlcywgcmVkYWN0aW9uSWQ6IHV1aWQoKSwgZG9jdW1lbnRJZDogdGhpcy5kb2N1bWVudElkIH0gYXMgUmVkYWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21SZWRhY3Rpb25BY3Rpb25zLlNhdmVCdWxrUmVkYWN0aW9uKHsgc2VhcmNoUmVkYWN0aW9uczogcmVkYWN0aW9uIH0gYXMgQnVsa1JlZGFjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGlzdEluUmVkYWN0RWxlbWVudHMocGFnZU51bWJlcjogbnVtYmVyLCBtYXRlY2hlZEluZGV4OiBudW1iZXIsIHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucmVkYWN0RWxlbWVudHMgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwYWdlc0ZvdW5kID0gdGhpcy5yZWRhY3RFbGVtZW50cy5maW5kKHJlID0+IHJlLnBhZ2UgPT09IHBhZ2VOdW1iZXIgJiYgcmUubWF0Y2hlZEluZGV4ID09PSBtYXRlY2hlZEluZGV4KTtcbiAgICAgIGNvbnN0IHBhZ2VSZWN0YW5nbGVzID0gcGFnZXNGb3VuZD8ucmVjdGFuZ2xlcztcbiAgICAgIGlmICghcGFnZVJlY3RhbmdsZXMgfHwgcGFnZVJlY3RhbmdsZXMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgbGV0IG1hdGNoZXNSZWN0YW5nbGVzID0gMDtcbiAgICAgIGZvciAobGV0IHJlY3RJbmR4ID0gMDsgcmVjdEluZHggPCBwYWdlUmVjdGFuZ2xlcy5sZW5ndGg7IHJlY3RJbmR4KyspIHtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gcGFnZVJlY3RhbmdsZXNbcmVjdEluZHhdO1xuICAgICAgICBjb25zdCBmb3VuZFJlY3RhbmdsZSA9IHJlY3RhbmdsZXMuZmluZChyZSA9PiByZS53aWR0aCA9PT0gcmVjdGFuZ2xlLndpZHRoICYmXG4gICAgICAgICAgcmUuaGVpZ2h0ID09PSByZWN0YW5nbGUuaGVpZ2h0ICYmIHJlLnggPT09IHJlY3RhbmdsZS54ICYmIHJlLnkgPT09IHJlY3RhbmdsZS55KTtcbiAgICAgICAgaWYgKGZvdW5kUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgbWF0Y2hlc1JlY3RhbmdsZXMrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHBhZ2VSZWN0YW5nbGVzLmxlbmd0aCA9PT0gbWF0Y2hlc1JlY3RhbmdsZXM7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uQ2xvc2VTZWFyY2hNb2RhbCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMub3BlblJlZGFjdGlvblNlYXJjaC5uZXh0KHsgaXNPcGVuOiBmYWxzZSwgbW9kZVR5cGU6IHRoaXMuc2VhcmNoVHlwZSB9KTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzZXRTZWFyY2hSZXN1bHRzQ291bnQocmVzdWx0czogU2VhcmNoUmVzdWx0c0NvdW50KTogdm9pZCB7XG4gICAgdGhpcy5yZXN1bHRDb3VudCA9IHJlc3VsdHMudG90YWw7XG4gICAgdGhpcy5yZXN1bHRzVGV4dCA9IHRoaXMucmVzdWx0Q291bnQgPiAwXG4gICAgICA/IGAke3Jlc3VsdHMudG90YWx9IHJlc3VsdHMgZm91bmRzYFxuICAgICAgOiAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gIH1cblxuICBwcml2YXRlIHJlZGFjdEFsbFNlYXJjaGVkKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCk6IHZvaWQge1xuICAgIGNvbnN0ICR0aGlzID0gdGhpcztcbiAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgaGlnaGxpZ2h0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZ2hsaWdodCBzZWxlY3RlZCcpO1xuICAgICAgaWYgKGhpZ2hsaWdodEVsZW1lbnQgJiYgaGlnaGxpZ2h0RWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICR0aGlzLnJlZGFjdEFsbFNlYXJjaGVkVGljayhyZXN1bHRzKTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cblxuICBwcml2YXRlIHJlZGFjdEFsbFNlYXJjaGVkVGljayhyZXN1bHRzOiBSZWRhY3Rpb25TZWFyY2gpOiB2b2lkIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlnaGxpZ2h0IHNlbGVjdGVkJyk7XG4gICAgaWYgKGhpZ2hsaWdodEVsZW1lbnQgJiYgaGlnaGxpZ2h0RWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3VsdENvdW50ID0gcmVzdWx0cy5tYXRjaGVzQ291bnQ7XG4gICAgICBjb25zdCBwYWdlTnVtYmVyID0gcmVzdWx0cy5wYWdlICsgMTtcbiAgICAgIGNvbnN0IHJlY3RhbmdsZXMgPSB0aGlzLmdldFJlY3RhbmdsZXMocGFnZU51bWJlcik7XG4gICAgICBpZiAocmVjdGFuZ2xlcyAmJiB0aGlzLnJlZGFjdEVsZW1lbnRzLmxlbmd0aCA8PSB0aGlzLnJlc3VsdENvdW50XG4gICAgICAgICYmICF0aGlzLmV4aXN0SW5SZWRhY3RFbGVtZW50cyhwYWdlTnVtYmVyLCByZXN1bHRzLm1hdGNoZWRJbmRleCwgcmVjdGFuZ2xlcykpIHtcbiAgICAgICAgdGhpcy5yZWRhY3RFbGVtZW50cy5wdXNoKHsgcGFnZTogcGFnZU51bWJlciwgbWF0Y2hlZEluZGV4OiByZXN1bHRzPy5tYXRjaGVkSW5kZXgsIHJlY3RhbmdsZXMgfSBhcyBSZWRhY3RSZWN0YW5nbGUpO1xuICAgICAgICB0aGlzLkNyZWF0ZVJlZGFjdEFsbFRleHQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlZGFjdEFsbCAmJiB0aGlzLnJlc3VsdENvdW50ICYmIHRoaXMucmVzdWx0Q291bnQgPiAwXG4gICAgICAgICYmIHJlY3RhbmdsZXMgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPCB0aGlzLnJlc3VsdENvdW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmVkYWN0QWxsICYmIHRoaXMucmVzdWx0Q291bnQgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPT09IHRoaXMucmVzdWx0Q291bnQpIHtcbiAgICAgICAgdGhpcy5yZWRhY3RBbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWRhY3RBbGxUZXh0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gU2VhcmNoVHlwZS5SZWRhY3QpIHtcbiAgICAgICAgICB0aGlzLnNhdmVSZWRhY3Rpb24odGhpcy5yZWRhY3RFbGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTZWFyY2hUeXBlLkhpZ2hsaWdodCkge1xuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5zYXZlQW5ub3RhdGlvblNldCh0aGlzLnJlZGFjdEVsZW1lbnRzKTtcbiAgICAgICAgICB0aGlzLmNsZWFuVXBQb3N0U2F2ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUG9zdFNhdmUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdEFsbEluUHJvZ3Jlc3NTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBwcml2YXRlIENyZWF0ZVJlZGFjdEFsbFRleHQoKSB7XG4gICAgdGhpcy5yZWRhY3RBbGxUZXh0ID0gYCR7dGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGh9IG9mICR7dGhpcy5yZXN1bHRDb3VudH1gO1xuICB9XG5cbiAgcHVibGljIG9uRXNjYXBlS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGVyS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VhcmNoQmFyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCghdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVjdGFuZ2xlcyhwYWdlOiBudW1iZXIpOiBSZWN0YW5nbGVbXSB7XG4gICAgdGhpcy5wYWdlSGVpZ2h0ID0gdGhpcy5hbGxQYWdlc1twYWdlXS5zdHlsZXMuaGVpZ2h0O1xuICAgIHRoaXMucGFnZVdpZHRoID0gdGhpcy5hbGxQYWdlc1twYWdlXS5zdHlsZXMud2lkdGg7XG4gICAgdGhpcy56b29tID0gcGFyc2VGbG9hdCh0aGlzLmFsbFBhZ2VzW3BhZ2VdLnNjYWxlUm90YXRpb24uc2NhbGUpO1xuICAgIHRoaXMucm90YXRlID0gcGFyc2VJbnQodGhpcy5hbGxQYWdlc1twYWdlXS5zY2FsZVJvdGF0aW9uLnJvdGF0aW9uLCAxMCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlnaGxpZ2h0IHNlbGVjdGVkJyk7XG4gICAgaWYgKHNlbGVjdGVkSGlnaExpZ2h0ZWRFbGVtZW50cyAmJiBzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZG9jUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgaWYgKHNvbWUoc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzLCBlbGVtZW50ID0+IGVsZW1lbnQuY2xhc3NOYW1lID09PSAnaGlnaGxpZ2h0IGJlZ2luIHNlbGVjdGVkJyB8fCBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2hpZ2hsaWdodCBlbmQgc2VsZWN0ZWQnKSkge1xuICAgICAgICBkb2NSYW5nZS5zZXRTdGFydChzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0sIDApO1xuICAgICAgICBjb25zdCBlbmROb2RlID0gc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzW3NlbGVjdGVkSGlnaExpZ2h0ZWRFbGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgZG9jUmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRvY1JhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UoZG9jUmFuZ2UpO1xuICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50ICYmICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcblxuICAgICAgICBpZiAoY2xpZW50UmVjdHMpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzWzBdLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xpZW50UmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IHRoaXMuY3JlYXRlVGV4dFJlY3RhbmdsZShjbGllbnRSZWN0c1tpXSwgcGFyZW50UmVjdCk7XG4gICAgICAgICAgICBjb25zdCBmaW5kU2VsZWN0dGlvblJlY3RhbmdsZSA9IHNlbGVjdGlvblJlY3RhbmdsZXMuZmluZChcbiAgICAgICAgICAgICAgKHJlY3QpID0+IHJlY3Qud2lkdGggPT09IHNlbGVjdGlvblJlY3RhbmdsZS53aWR0aCAmJiByZWN0LnggPT09IHNlbGVjdGlvblJlY3RhbmdsZS54XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFmaW5kU2VsZWN0dGlvblJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVzLnB1c2goc2VsZWN0aW9uUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uUmVjdGFuZ2xlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dFJlY3RhbmdsZShyZWN0OiBET01SZWN0LCBwYXJlbnRSZWN0OiBhbnkpOiBSZWN0YW5nbGUge1xuICAgIGNvbnN0IGhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7XG4gICAgY29uc3Qgd2lkdGggPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IHRvcCA9IHJlY3QudG9wIC0gcGFyZW50UmVjdC50b3A7XG4gICAgY29uc3QgbGVmdCA9IHJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdDtcblxuICAgIGxldCByZWN0YW5nbGUgPSB0aGlzLmhpZ2hsaWdodFNlcnZpY2UuYXBwbHlSb3RhdGlvbihcbiAgICAgIHRoaXMucGFnZUhlaWdodCxcbiAgICAgIHRoaXMucGFnZVdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgd2lkdGgsXG4gICAgICB0b3AsXG4gICAgICBsZWZ0LFxuICAgICAgdGhpcy5yb3RhdGUsXG4gICAgICB0aGlzLnpvb21cbiAgICApO1xuICAgIHJlY3RhbmdsZSA9IHsgaWQ6IHV1aWQoKSwgLi4ucmVjdGFuZ2xlIH07XG5cbiAgICByZXR1cm4gcmVjdGFuZ2xlIGFzIFJlY3RhbmdsZTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cIm9wZW5TZWFyY2hNb2RhbFwiXG4gIGNsYXNzPVwic2VhcmNoYmFyIHJlZGFjdGlvbi1zZWFyY2gtYmFyIGdvdnVrLSEtcGFkZGluZy0zXCJcbj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgZ292dWstIS1wYWRkaW5nLXJpZ2h0LTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWRhY3Rpb24tc2VhcmNoLWJ1dHRvbnMtYXJlYVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaWQ9XCJtdkNsb3NlQnRuXCJcbiAgICAgICAgICAjbXZDbG9zZUJ0blxuICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIHNlYXJjaGJhci1idXR0b24tLWNsb3NlXCJcbiAgICAgICAgICB0aXRsZT1cIkNsb3NlIFNlYXJjaFwiXG4gICAgICAgICAgZGF0YS1sMTBuLWlkPVwibXZSZWRhY3RCdG5cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlU2VhcmNoTW9kYWwoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIGlkPVwic2VhcmNoX2lucHV0XCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLXdpZHRoLXRocmVlLXF1YXJ0ZXJzIGdvdnVrLSEtZGlzcGxheS1pbmxpbmUtYmxvY2sgZ292dWstIS1tYXJnaW4tdG9wLTVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZWRhY3QgZnJvbSBzZWFyY2hcIlxuICAgICAgICAjZmluZElucHV0XG4gICAgICAgIHRpdGxlPVwiUmVkYWN0IGZyb20gc2VhcmNoXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0aXRsZVRleHQgKyAnIGZyb20gc2VhcmNoLi4uJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cInNlYXJjaF9pbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJvbkVzY2FwZUtleVByZXNzKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzcz1cInJlZGFjdGlvbi1zZWFyY2gtYnV0dG9ucy1hcmVhXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBpZD1cIm12U2VhcmNoQWxsQnRuXCJcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiXG4gICAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJTZWFyY2hcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGlkPVwibXZSZWRhY3RBbGxCdG5cIlxuICAgICAgICAgIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLSEtbWFyZ2luLWxlZnQtMiBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiXG4gICAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2goZmFsc2UpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicmVkYWN0QWxsSW5Qcm9ncmVzcyB8fCByZXN1bHRDb3VudCA8PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRpdGxlVGV4dCArIFwiIGFsbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdGhyZWUtcXVhcnRlcnMgZ292dWstIS1wYWRkaW5nLWxlZnQtMCBnb3Z1ay0hLXBhZGRpbmctdG9wLTIgcmVkYWN0aW9uLXN0YXR1cy10ZXh0XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBpZD1cImZpbmRSZWRhY3RSZXN1bHRzQ291bnRcIlxuICAgICAgICAgIGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLW1hcmdpbi1yaWdodC00IGdvdnVrLSEtbWFyZ2luLWxlZnQtMCBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wXCJcbiAgICAgICAgICA+PGg0XG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLSEtZGlzcGxheS1pbmxpbmUtYmxvY2sgZ292dWstIS1tYXJnaW4tdG9wLTAgZ292dWstIS1tYXJnaW4tYm90dG9tLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpblByb2dyZXNzVGV4dCArIFwiIGluIHByb2dyZXNzXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIHt7IHJlZGFjdEFsbEluUHJvZ3Jlc3MgPyBcIlwiIDogcmVzdWx0c1RleHQgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8aDVcbiAgICAgICAgICAgIGlkPVwicmVkYWN0QWxsSW5Qcm9ncmVzc0NvdW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLW1hcmdpbi10b3AtMCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcmVkYWN0QWxsSW5Qcm9ncmVzcyA/IHJlZGFjdEFsbFRleHQgOiBcIlwiIH19XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { SearchType } from '../toolbar-event.service';
|
|
3
|
+
import { select } from '@ngrx/store';
|
|
4
|
+
import * as fromRedactSelectors from '../../store/selectors/redaction.selectors';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../toolbar-event.service";
|
|
7
|
+
import * as i2 from "../toolbar-button-visibility.service";
|
|
8
|
+
import * as i3 from "@ngrx/store";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "rpx-xui-translation";
|
|
11
|
+
export class RedactionToolbarComponent {
|
|
12
|
+
constructor(toolbarEventService, toolbarButtons, store) {
|
|
13
|
+
this.toolbarEventService = toolbarEventService;
|
|
14
|
+
this.toolbarButtons = toolbarButtons;
|
|
15
|
+
this.store = store;
|
|
16
|
+
this.preview = false;
|
|
17
|
+
this.hasRedactions = false;
|
|
18
|
+
this.subscriptions = [];
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.subscriptions.push(this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {
|
|
22
|
+
this.hasRedactions = !!redactions.redactions.length;
|
|
23
|
+
}));
|
|
24
|
+
this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {
|
|
25
|
+
this.redactionAllInProgress = inprogress;
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
onRedactAllSearch() {
|
|
29
|
+
this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: true });
|
|
30
|
+
}
|
|
31
|
+
toggleTextRedactionMode() {
|
|
32
|
+
this.toolbarEventService.highlightModeSubject.next(true);
|
|
33
|
+
}
|
|
34
|
+
toggleDrawMode() {
|
|
35
|
+
this.toolbarEventService.drawModeSubject.next(true);
|
|
36
|
+
}
|
|
37
|
+
togglePreview() {
|
|
38
|
+
this.preview = !this.preview;
|
|
39
|
+
this.toolbarEventService.toggleRedactionPreview(this.preview);
|
|
40
|
+
}
|
|
41
|
+
unmarkAll() {
|
|
42
|
+
this.toolbarEventService.unmarkAll();
|
|
43
|
+
}
|
|
44
|
+
redact() {
|
|
45
|
+
this.toolbarEventService.applyRedactionToDocument();
|
|
46
|
+
}
|
|
47
|
+
toggleRedactBar() {
|
|
48
|
+
this.toolbarEventService.toggleRedactionMode();
|
|
49
|
+
}
|
|
50
|
+
redactPage() {
|
|
51
|
+
this.toolbarEventService.drawModeSubject.next(true);
|
|
52
|
+
this.toolbarEventService.redactPage();
|
|
53
|
+
}
|
|
54
|
+
ngOnDestroy() {
|
|
55
|
+
for (const subscription of this.subscriptions) {
|
|
56
|
+
subscription.unsubscribe();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** @nocollapse */ RedactionToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RedactionToolbarComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
+
/** @nocollapse */ RedactionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RedactionToolbarComponent, selector: "mv-redaction-toolbar", inputs: { showRedactSearch: "showRedactSearch" }, ngImport: i0, template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.RpxTranslatePipe, name: "rpxTranslate" }] });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RedactionToolbarComponent, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{ selector: 'mv-redaction-toolbar', template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n" }]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i1.ToolbarEventService }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.Store }]; }, propDecorators: { showRedactSearch: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi10b29sYmFyL3JlZGFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUF1QixNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLG1CQUFtQixNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBVWpGLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFBNEIsbUJBQXdDLEVBQ2xELGNBQThDLEVBQ3RELEtBQTBDO1FBRnhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQ3RELFVBQUssR0FBTCxLQUFLLENBQXFDO1FBUnBELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFLYSxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNqRyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDN0MsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7MElBN0RVLHlCQUF5Qjs4SEFBekIseUJBQXlCLDhHQ2J0Qyx5ckhBdUhBOzRGRDFHYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usc0JBQXNCOzJLQUt2QixnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoVHlwZSwgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVJlZGFjdFNlbGVjdG9ycyBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvcmVkYWN0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXJlZGFjdGlvbi10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZGFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWRhY3Rpb25Ub29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHNob3dSZWRhY3RTZWFyY2g6IGJvb2xlYW47XG5cbiAgcHJldmlldyA9IGZhbHNlO1xuICBoYXNSZWRhY3Rpb25zID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICByZWRhY3Rpb25BbGxJblByb2dyZXNzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRTZXJ2aWNlOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5Bbm5vdGF0aW9uU2V0U3RhdGU+KSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21SZWRhY3RTZWxlY3RvcnMuZ2V0UmVkYWN0aW9uQXJyYXkpKS5zdWJzY3JpYmUocmVkYWN0aW9ucyA9PiB7XG4gICAgICB0aGlzLmhhc1JlZGFjdGlvbnMgPSAhIXJlZGFjdGlvbnMucmVkYWN0aW9ucy5sZW5ndGg7XG4gICAgfSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdC5zdWJzY3JpYmUoaW5wcm9ncmVzcyA9PiB7XG4gICAgICB0aGlzLnJlZGFjdGlvbkFsbEluUHJvZ3Jlc3MgPSBpbnByb2dyZXNzO1xuICAgIH0pKTtcbiAgfVxuXG4gIG9uUmVkYWN0QWxsU2VhcmNoKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5vcGVuUmVkYWN0aW9uU2VhcmNoLm5leHQoeyBtb2RlVHlwZTogU2VhcmNoVHlwZS5SZWRhY3QsIGlzT3BlbjogdHJ1ZSB9KTtcbiAgfVxuXG4gIHRvZ2dsZVRleHRSZWRhY3Rpb25Nb2RlKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlRHJhd01vZGUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLmRyYXdNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlUHJldmlldygpIHtcbiAgICB0aGlzLnByZXZpZXcgPSAhdGhpcy5wcmV2aWV3O1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS50b2dnbGVSZWRhY3Rpb25QcmV2aWV3KHRoaXMucHJldmlldyk7XG4gIH1cblxuICB1bm1hcmtBbGwoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnVubWFya0FsbCgpO1xuICB9XG5cbiAgcmVkYWN0KCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5hcHBseVJlZGFjdGlvblRvRG9jdW1lbnQoKTtcbiAgfVxuXG4gIHRvZ2dsZVJlZGFjdEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UudG9nZ2xlUmVkYWN0aW9uTW9kZSgpO1xuICB9XG5cbiAgcmVkYWN0UGFnZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UuZHJhd01vZGVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnJlZGFjdFBhZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVkYWN0aW9uXCI+XG4gIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIHJlZGFjdGlvbi10aXRsZVwiIGRhdGEtbDEwbi1pZD1cInJlZGFjdGlvbl9vcHRpb25zXCI+e3tcbiAgICBcIlJlZGFjdGlvbiBvcHRpb25zXCIgfCBycHhUcmFuc2xhdGVcbiAgfX08L2xhYmVsPlxuICA8YnV0dG9uXG4gICAgaWQ9XCJ0b2dnbGVEcmF3QnV0dG9uXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1kcmF3XCJcbiAgICB0aXRsZT1cInt7ICdEcmF3IGEgYm94JyB8IHJweFRyYW5zbGF0ZSB9fX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cInRvZ2dsZURyYXdCdXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcmF3TW9kZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJ0b2dnbGVEcmF3QnV0dG9uX2xhYmVsXCI+e3tcbiAgICAgIFwiRHJhdyBhIGJveFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBpZD1cInJlZGFjdFBhZ2VCdXR0b25cIlxuICAgIGNsYXNzPVwibXYtYnV0dG9uIHJlZGFjdGlvbi1idXR0b24tLXJlZGFjdC1wYWdlXCJcbiAgICB0aXRsZT1cInt7ICdSZWRhY3QgcGFnZScgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cInJlZGFjdFBhZ2VCdXR0b25cIlxuICAgIChjbGljayk9XCJyZWRhY3RQYWdlKClcIlxuICAgIFtkaXNhYmxlZF09XCJyZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cInJlZGFjdFBhZ2VCdXR0b25fbGFiZWxcIj57e1xuICAgICAgXCJSZWRhY3QgcGFnZVwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJzaG93UmVkYWN0U2VhcmNoXCJcbiAgICBpZD1cIm12UmVkYWN0RnJvbVNlYXJjaEJ0blwiXG4gICAgdGl0bGU9XCJ7eyAnRnJvbSBzZWFyY2gnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJmcm9tU2VhcmNoQnV0dG9uXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1zZWFyY2hcIlxuICAgIChjbGljayk9XCJvblJlZGFjdEFsbFNlYXJjaCgpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gID5cbiAgICA8c3BhbiBzdHlsZT1cIndpZHRoOiA1cmVtXCIgZGF0YS1sMTBuLWlkPVwiZnJvbVNlYXJjaEJ1dHRvbl9sYWJlbFwiPnt7XG4gICAgICBcIkZyb20gc2VhcmNoXCIgfCBycHhUcmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd0hpZ2hsaWdodEJ1dHRvblwiXG4gICAgaWQ9XCJ0b2dnbGVIaWdobGlnaHRCdXR0b25cIlxuICAgIGNsYXNzPVwibXYtYnV0dG9uIHJlZGFjdGlvbi1idXR0b24tLXJlZGFjdFwiXG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgIHRpdGxlPVwie3sgJ1JlZGFjdCB0ZXh0JyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlVGV4dFJlZGFjdGlvbkJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVRleHRSZWRhY3Rpb25Nb2RlKClcIlxuICAgIFtkaXNhYmxlZF09XCJyZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cInRvZ2dsZVRleHRSZWRhY3Rpb25CdXR0b25fbGFiZWxcIj57e1xuICAgICAgXCJSZWRhY3QgdGV4dFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiIWhhc1JlZGFjdGlvbnMgfHwgcmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gICAgaWQ9XCJtdkNsZWFyQnRuXCJcbiAgICAjbXZDbGVhckJ0blxuICAgIGNsYXNzPVwibXYtYnV0dG9uIHJlZGFjdGlvbi1idXR0b24tLWNsZWFyXCJcbiAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgdGl0bGU9XCJ7eyAnQ2xlYXIgYWxsJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlQ2xlYXJBbGxCdXR0b25cIlxuICAgIChjbGljayk9XCJ1bm1hcmtBbGwoKVwiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJDbGVhciBhbGxcIj57eyBcIkNsZWFyIGFsbFwiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cIiFoYXNSZWRhY3Rpb25zIHx8IHJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICAgIGlkPVwibXZQcmV2aWV3QnRuXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvblwiXG4gICAgW2NsYXNzLnJlZGFjdGlvbi1idXR0b24tLXByZXZpZXddPVwiIXByZXZpZXdcIlxuICAgIFtjbGFzcy5yZWRhY3Rpb24tYnV0dG9uLS1oaWRlLXByZXZpZXddPVwicHJldmlld1wiXG4gICAgcmVkYWN0aW9uLWJ1dHRvbi0tcHJldmlld1xuICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICB0aXRsZT1cInt7ICdQcmV2aWV3JyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlUHJldmlld0J1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVByZXZpZXcoKVwiXG4gID5cbiAgICA8c3BhbiAqbmdJZj1cIiFwcmV2aWV3XCIgZGF0YS1sMTBuLWlkPVwicmVkYWN0aW9uLXByZXZpZXdfbGFiZWxcIj57e1xuICAgICAgXCJQcmV2aWV3XCIgfCBycHhUcmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInByZXZpZXdcIiBkYXRhLWwxMG4taWQ9XCJyZWRhY3Rpb24taGlkZS1wcmV2aWV3X2xhYmVsXCI+e3tcbiAgICAgIFwiSGlkZSBwcmV2aWV3XCIgfCBycHhUcmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIhaGFzUmVkYWN0aW9ucyB8fCByZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgICBpZD1cIm12UmVkYWN0QnRuXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1kb3dubG9hZFwiXG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgIHRpdGxlPVwie3sgJ1NhdmUgZG9jdW1lbnQnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJtdlJlZGFjdEJ0blwiXG4gICAgKGNsaWNrKT1cInJlZGFjdCgpXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cIlNhdmUgRG9jdW1lbnRcIj57e1xuICAgICAgXCJTYXZlIGRvY3VtZW50XCIgfCBycHhUcmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIGlkPVwibXZDbG9zZUJ0blwiXG4gICAgI212Q2xvc2VCdG5cbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1jbG9zZVwiXG4gICAgdGl0bGU9XCJ7eyAnQ2xvc2UgUmVkYWN0aW9uJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwibXZSZWRhY3RCdG5cIlxuICAgIChjbGljayk9XCJ0b2dnbGVSZWRhY3RCYXIoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gZGF0YS1sMTBuLWlkPVwiQ2xvc2UgUmVkYWN0aW9uXCI+e3tcbiAgICAgIFwiQ2xvc2UgUmVkYWN0aW9uXCIgfCBycHhUcmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Component, HostListener, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../toolbar-button-visibility.service";
|
|
4
|
+
import * as i2 from "../toolbar-event.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@angular/forms";
|
|
7
|
+
import * as i5 from "@angular/router";
|
|
8
|
+
import * as i6 from "rpx-xui-translation";
|
|
9
|
+
export class SearchBarComponent {
|
|
10
|
+
constructor(toolbarButtons, toolbarEvents) {
|
|
11
|
+
this.toolbarButtons = toolbarButtons;
|
|
12
|
+
this.toolbarEvents = toolbarEvents;
|
|
13
|
+
this.highlightAll = true;
|
|
14
|
+
this.matchCase = false;
|
|
15
|
+
this.wholeWord = false;
|
|
16
|
+
this.resultsText = '';
|
|
17
|
+
this.searchText = '';
|
|
18
|
+
this.resultCount = 0;
|
|
19
|
+
this.subscriptions = [];
|
|
20
|
+
this.advancedSearchVisible = false;
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.subscriptions.push(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
|
|
24
|
+
}
|
|
25
|
+
ngAfterViewInit() {
|
|
26
|
+
this.findInput.nativeElement.focus();
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
for (const subscription of this.subscriptions) {
|
|
30
|
+
subscription.unsubscribe();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onWindowKeyDown(e) {
|
|
34
|
+
if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
this.toolbarEvents.searchBarHidden.next(false);
|
|
37
|
+
setTimeout(() => this.findInput.nativeElement.focus(), 200);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
searchNext() {
|
|
41
|
+
this.toolbarEvents.search({
|
|
42
|
+
searchTerm: this.searchText,
|
|
43
|
+
highlightAll: this.highlightAll,
|
|
44
|
+
matchCase: this.matchCase,
|
|
45
|
+
wholeWord: this.wholeWord,
|
|
46
|
+
previous: false,
|
|
47
|
+
reset: false
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
searchPrev() {
|
|
51
|
+
this.toolbarEvents.search({
|
|
52
|
+
searchTerm: this.searchText,
|
|
53
|
+
highlightAll: this.highlightAll,
|
|
54
|
+
matchCase: this.matchCase,
|
|
55
|
+
wholeWord: this.wholeWord,
|
|
56
|
+
previous: true,
|
|
57
|
+
reset: false
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
search() {
|
|
61
|
+
this.toolbarEvents.search({
|
|
62
|
+
searchTerm: this.searchText,
|
|
63
|
+
highlightAll: this.highlightAll,
|
|
64
|
+
matchCase: this.matchCase,
|
|
65
|
+
wholeWord: this.wholeWord,
|
|
66
|
+
previous: false,
|
|
67
|
+
reset: true
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
setSearchResultsCount(results) {
|
|
71
|
+
this.resultCount = results.total;
|
|
72
|
+
this.resultsText = this.resultCount > 0
|
|
73
|
+
? `Found ${results.current} of ${results.total}`
|
|
74
|
+
: 'No results found';
|
|
75
|
+
if (this.resultCount && this.resultCount > 0 && !results.isPrevious) {
|
|
76
|
+
setTimeout(() => {
|
|
77
|
+
this.findNext.nativeElement.focus();
|
|
78
|
+
}, 1000);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
onEscapeKeyPress(e) {
|
|
82
|
+
this.toolbarEvents.searchBarHidden.next(true);
|
|
83
|
+
}
|
|
84
|
+
onEnterKeyPress(e) {
|
|
85
|
+
this.search();
|
|
86
|
+
}
|
|
87
|
+
toggleAdvancedSearch() {
|
|
88
|
+
this.advancedSearchVisible = !this.advancedSearchVisible;
|
|
89
|
+
}
|
|
90
|
+
toggleSearchBar() {
|
|
91
|
+
this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** @nocollapse */ SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.ToolbarButtonVisibilityService }, { token: i2.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
/** @nocollapse */ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SearchBarComponent, selector: "mv-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }, { propertyName: "findNext", first: true, predicate: ["findNext"], descendants: true }], ngImport: i0, template: "<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Find in document\"\n #findInput\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Find in document\"\n placeholder=\"Find in document\u2026\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.RpxTranslatePipe, name: "rpxTranslate" }] });
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchBarComponent, decorators: [{
|
|
97
|
+
type: Component,
|
|
98
|
+
args: [{ selector: 'mv-search-bar', template: "<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Find in document\"\n #findInput\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Find in document\"\n placeholder=\"Find in document\u2026\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n" }]
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i1.ToolbarButtonVisibilityService }, { type: i2.ToolbarEventService }]; }, propDecorators: { findInput: [{
|
|
100
|
+
type: ViewChild,
|
|
101
|
+
args: ['findInput', { static: true }]
|
|
102
|
+
}], findNext: [{
|
|
103
|
+
type: ViewChild,
|
|
104
|
+
args: ['findNext', { static: false }]
|
|
105
|
+
}], onWindowKeyDown: [{
|
|
106
|
+
type: HostListener,
|
|
107
|
+
args: ['window:keydown', ['$event']]
|
|
108
|
+
}] } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBVSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVNqSCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QixZQUNrQixjQUE4QyxFQUM5QyxhQUFrQztRQURsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0M7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBYnBELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRVIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQUtqQyxDQUFDO0lBRUUsUUFBUTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUN2RyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxL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RCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7O21JQTNHVSxrQkFBa0I7dUhBQWxCLGtCQUFrQix3VUNUL0IsaXRLQTRKQTs0RkRuSmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGVBQWU7dUpBS2lCLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRSxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUNqQyxlQUFlO3NCQURyQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRzQ291bnQsIFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXNlYXJjaC1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbmRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbmRJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZmluZE5leHQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZmluZE5leHQ6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuXG4gIGhpZ2hsaWdodEFsbCA9IHRydWU7XG4gIG1hdGNoQ2FzZSA9IGZhbHNlO1xuICB3aG9sZVdvcmQgPSBmYWxzZTtcbiAgcmVzdWx0c1RleHQgPSAnJztcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICByZXN1bHRDb3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBhZHZhbmNlZFNlYXJjaFZpc2libGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hSZXN1bHRzQ291bnRTdWJqZWN0LnN1YnNjcmliZShyZXN1bHRzID0+IHRoaXMuc2V0U2VhcmNoUmVzdWx0c0NvdW50KHJlc3VsdHMpKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KGZhbHNlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maW5kSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hOZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoUHJldigpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoKHtcbiAgICAgIHNlYXJjaFRlcm06IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgIGhpZ2hsaWdodEFsbDogdGhpcy5oaWdobGlnaHRBbGwsXG4gICAgICBtYXRjaENhc2U6IHRoaXMubWF0Y2hDYXNlLFxuICAgICAgd2hvbGVXb3JkOiB0aGlzLndob2xlV29yZCxcbiAgICAgIHByZXZpb3VzOiB0cnVlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VhcmNoUmVzdWx0c0NvdW50KHJlc3VsdHM6IFNlYXJjaFJlc3VsdHNDb3VudCk6IHZvaWQge1xuICAgIHRoaXMucmVzdWx0Q291bnQgPSByZXN1bHRzLnRvdGFsO1xuICAgIHRoaXMucmVzdWx0c1RleHQgPSB0aGlzLnJlc3VsdENvdW50ID4gMFxuICAgICAgPyBgRm91bmQgJHtyZXN1bHRzLmN1cnJlbnR9IG9mICR7cmVzdWx0cy50b3RhbH1gXG4gICAgICA6ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBpZiAodGhpcy5yZXN1bHRDb3VudCAmJiB0aGlzLnJlc3VsdENvdW50ID4gMCAmJiAhcmVzdWx0cy5pc1ByZXZpb3VzKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maW5kTmV4dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Fc2NhcGVLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRW50ZXJLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgfVxuXG5cbiAgcHVibGljIHRvZ2dsZUFkdmFuY2VkU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hWaXNpYmxlID0gIXRoaXMuYWR2YW5jZWRTZWFyY2hWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQoIXRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4uZ2V0VmFsdWUoKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZWFyY2hiYXIgZ292dWstIS1wYWRkaW5nLTNcIlxuICBbaGlkZGVuXT1cInRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuIHwgYXN5bmNcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLXdpZHRoLXRocmVlLXF1YXJ0ZXJzIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS01IGdvdnVrLSEtbWFyZ2luLXRvcC01XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiRmluZCBpbiBkb2N1bWVudFwiXG4gICAgICAgICNmaW5kSW5wdXRcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJLZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgdGl0bGU9XCJGaW5kIGluIGRvY3VtZW50XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJGaW5kIGluIGRvY3VtZW504oCmXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9pbnB1dFwiXG4gICAgICAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCJcbiAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0MHB4OyByaWdodDogMTBweFwiXG4gICAgICA+XG4gICAgICAgIFNlYXJjaFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10aHJlZS1xdWFydGVyc1wiPlxuICAgICAgPHNwYW5cbiAgICAgICAgaWQ9XCJmaW5kUmVzdWx0c0NvdW50XCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTRcIlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgPnt7IHJlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cInJlc3VsdENvdW50ID4gMFwiXG4gICAgICAgIGlkPVwiZmluZFByZXZpb3VzXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiW11cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1saW5rIGdvdnVrLWxpbmstLW5vLXZpc2l0ZWQtc3RhdGUgZ292dWstIS1tYXJnaW4tcmlnaHQtMlwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hQcmV2KClcIlxuICAgICAgICB0aXRsZT1cIkZpbmQgdGhlIHByZXZpb3VzIG9jY3VycmVuY2Ugb2YgdGhlIHBocmFzZVwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfcHJldmlvdXNcIlxuICAgICAgICA+e3sgXCJQcmV2XCIgfCBycHhUcmFuc2xhdGUgfX08L2FcbiAgICAgID5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwicmVzdWx0Q291bnQgPiAwXCJcbiAgICAgICAgaWQ9XCJmaW5kTmV4dFwiXG4gICAgICAgICNmaW5kTmV4dFxuICAgICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstbGluay0tbm8tdmlzaXRlZC1zdGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hOZXh0KClcIlxuICAgICAgICB0aXRsZT1cIkZpbmQgdGhlIG5leHQgb2NjdXJyZW5jZSBvZiB0aGUgcGhyYXNlXCJcbiAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9uZXh0XCJcbiAgICAgICAgPnt7IFwiTmV4dFwiIHwgcnB4VHJhbnNsYXRlIH19PC9hXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLW9uZS1xdWFydGVyXCI+XG4gICAgICA8YVxuICAgICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICAgIGNsYXNzPVwiZ292dWstbGluayBnb3Z1ay1saW5rLS1uby12aXNpdGVkLXN0YXRlXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCJcbiAgICAgICAgdGl0bGU9XCJBZHZhbmNlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYWR2YW5jZWRTZWFyY2hWaXNpYmxlXCJcbiAgICAgICAgYXJpYS1jb250cm9scz1cImFkdmFuY2VkU2VhcmNoVmlzaWJsZVwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfYWR2YW5jZWRcIlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA5NXB4OyByaWdodDogMTVweFwiXG4gICAgICAgID57eyBcIkFkdmFuY2VkXCIgfCBycHhUcmFuc2xhdGUgfX08L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGlkPVwiYWR2YW5jZWRTZWFyY2hWaXNpYmxlXCJcbiAgICBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCJcbiAgICAqbmdJZj1cImFkdmFuY2VkU2VhcmNoVmlzaWJsZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXAgZ292dWstIS1tYXJnaW4tdG9wLTMgZ292dWstIS1tYXJnaW4tYm90dG9tLTFcIlxuICAgICAgPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJhZHZhbmNlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cImZpbmRIaWdobGlnaHRBbGxcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJmaW5kSGlnaGxpZ2h0QWxsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGlnaGxpZ2h0QWxsID0gIWhpZ2hsaWdodEFsbDsgc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImhpZ2hsaWdodEFsbFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIlxuICAgICAgICAgICAgICAgIGZvcj1cImZpbmRIaWdobGlnaHRBbGxcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfaGlnaGxpZ2h0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFwiSGlnaGxpZ2h0IGFsbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImZpbmRNYXRjaENhc2VcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtYXRjaENhc2UgPSAhbWF0Y2hDYXNlOyBzZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWF0Y2hDYXNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgZm9yPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9tYXRjaF9jYXNlX2xhYmVsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFwiTWF0Y2ggdGV4dCAoZXhhY3QgY2FzZSlcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cImZpbmRFbnRpcmVXb3JkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIndob2xlV29yZCA9ICF3aG9sZVdvcmQ7IHNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJ3aG9sZVdvcmRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCJcbiAgICAgICAgICAgICAgICBmb3I9XCJmaW5kRW50aXJlV29yZFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9lbnRpcmVfd29yZF9sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBcIk1hdGNoIHdob2xlIHdvcmRzIG9yIHNlbnRlbmNlc1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8YnV0dG9uXG4gICAgICBpZD1cIm12Q2xvc2VCdG5cIlxuICAgICAgI212Q2xvc2VCdG5cbiAgICAgIGNsYXNzPVwibXYtYnV0dG9uIHNlYXJjaGJhci1idXR0b24tLWNsb3NlXCJcbiAgICAgIHRpdGxlPVwiQ2xvc2UgU2VhcmNoXCJcbiAgICAgIGRhdGEtbDEwbi1pZD1cIm12UmVkYWN0QnRuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2hCYXIoKVwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|