@hmcts/media-viewer 4.0.2 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
- package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
- package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
- package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
- package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
- package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
- package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
- package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
- package/{esm2020 → esm2022}/lib/annotations/annotations.module.mjs +61 -61
- package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
- package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
- package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
- package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
- package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
- package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
- package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
- package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
- package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
- package/{esm2020 → esm2022}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
- package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/annotations/services/tags/tags.services.mjs +5 -5
- package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
- package/{esm2020 → esm2022}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
- package/esm2022/lib/icp/icp-follower.service.mjs +60 -0
- package/esm2022/lib/icp/icp-presenter.service.mjs +55 -0
- package/{esm2020 → esm2022}/lib/icp/icp-session-api.service.mjs +5 -5
- package/esm2022/lib/icp/icp-update.service.mjs +65 -0
- package/esm2022/lib/icp/icp.service.mjs +95 -0
- package/{esm2020 → esm2022}/lib/icp/participants-list/participants-list.component.mjs +5 -5
- package/esm2022/lib/icp/socket.service.mjs +118 -0
- package/esm2022/lib/media-viewer.component.mjs +244 -0
- package/{esm2020 → esm2022}/lib/media-viewer.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/print.service.mjs +4 -4
- package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/redaction/services/redaction-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/shared.module.mjs +19 -19
- package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
- package/{esm2020 → esm2022}/lib/shared/util/services/number.helper.service.mjs +5 -5
- package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
- package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
- package/esm2022/lib/store/effects/bookmarks.effects.mjs +44 -0
- package/{esm2020 → esm2022}/lib/store/effects/document.effects.mjs +5 -5
- package/{esm2020 → esm2022}/lib/store/effects/icp.effects.mjs +5 -5
- package/{esm2020 → esm2022}/lib/store/effects/redaction.effects.mjs +5 -5
- package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
- package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +116 -0
- package/esm2022/lib/store/reducers/document.reducer.mjs +135 -0
- package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
- package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
- package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
- package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
- package/{esm2020 → esm2022}/lib/store/selectors/bookmark.selectors.mjs +1 -1
- package/{esm2020 → esm2022}/lib/store/selectors/redaction.selectors.mjs +1 -1
- package/esm2022/lib/store/store-utils.mjs +131 -0
- package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
- package/{esm2020 → esm2022}/lib/toolbar/icp-event.service.mjs +1 -1
- package/{esm2020 → esm2022}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
- package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
- package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
- package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
- package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
- package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
- package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
- package/{esm2020 → esm2022}/lib/toolbar/toolbar.module.mjs +25 -25
- package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
- package/{esm2020 → esm2022}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
- package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
- package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
- package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
- package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +210 -0
- package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
- package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
- package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +78 -0
- package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
- package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
- package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
- package/{esm2020 → esm2022}/lib/viewers/viewer-event.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/viewers/viewer-util.service.mjs +5 -5
- package/{fesm2020 → fesm2022}/hmcts-media-viewer.mjs +445 -445
- package/fesm2022/hmcts-media-viewer.mjs.map +1 -0
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +1 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +1 -1
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +1 -1
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment/comment.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -1
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -1
- package/lib/annotations/comment-set/comment-set.component.d.ts +1 -1
- package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
- package/lib/annotations/tags/tags.component.d.ts +1 -1
- package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -1
- package/lib/icp/socket.service.d.ts +6 -6
- package/lib/icp/socket.service.d.ts.map +1 -1
- package/lib/media-viewer.component.d.ts +1 -2
- package/lib/media-viewer.component.d.ts.map +1 -1
- package/lib/redaction/components/redaction.component.d.ts +1 -1
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -1
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -1
- package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
- package/lib/toolbar/icp-event.service.d.ts +4 -4
- package/lib/toolbar/icp-event.service.d.ts.map +1 -1
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -1
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +1 -1
- package/lib/toolbar/toolbar-event.service.d.ts +6 -6
- package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -1
- package/lib/viewers/grab-n-drag.directive.d.ts +1 -1
- package/lib/viewers/image-viewer/image-viewer.component.d.ts +1 -1
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +1 -1
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +1 -1
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -1
- package/lib/viewers/viewer-event.service.d.ts +1 -1
- package/lib/viewers/viewer-event.service.d.ts.map +1 -1
- package/package.json +16 -23
- package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
- package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
- package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
- package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
- package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
- package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
- package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
- package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
- package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
- package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
- package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
- package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
- package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +0 -123
- package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
- package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
- package/esm2020/lib/annotations/tags/tags.component.mjs +0 -53
- package/esm2020/lib/icp/icp-follower.service.mjs +0 -60
- package/esm2020/lib/icp/icp-presenter.service.mjs +0 -55
- package/esm2020/lib/icp/icp-update.service.mjs +0 -65
- package/esm2020/lib/icp/icp.service.mjs +0 -95
- package/esm2020/lib/icp/socket.service.mjs +0 -118
- package/esm2020/lib/media-viewer.component.mjs +0 -245
- package/esm2020/lib/redaction/components/redaction.component.mjs +0 -91
- package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
- package/esm2020/lib/store/bookmarks-store-utils.mjs +0 -49
- package/esm2020/lib/store/effects/annotation.effects.mjs +0 -51
- package/esm2020/lib/store/effects/bookmarks.effects.mjs +0 -44
- package/esm2020/lib/store/reducers/annotations.reducer.mjs +0 -208
- package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +0 -116
- package/esm2020/lib/store/reducers/document.reducer.mjs +0 -135
- package/esm2020/lib/store/reducers/icp.reducer.mjs +0 -56
- package/esm2020/lib/store/reducers/redaction.reducer.mjs +0 -116
- package/esm2020/lib/store/reducers/tags.reducer.mjs +0 -93
- package/esm2020/lib/store/selectors/annotation.selectors.mjs +0 -81
- package/esm2020/lib/store/store-utils.mjs +0 -131
- package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
- package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
- package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
- package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
- package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
- package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
- package/esm2020/lib/toolbar/toolbar-event.service.mjs +0 -178
- package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
- package/esm2020/lib/viewers/grab-n-drag.directive.mjs +0 -57
- package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
- package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
- package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -209
- package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
- package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
- package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
- package/esm2020/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -78
- package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
- package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
- package/fesm2015/hmcts-media-viewer.mjs +0 -6953
- package/fesm2015/hmcts-media-viewer.mjs.map +0 -1
- package/fesm2020/hmcts-media-viewer.mjs.map +0 -1
- /package/{esm2020 → esm2022}/hmcts-media-viewer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/api-persisted.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/event-select.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/tags.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/annotations/models/user.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icp/icp.events.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icp/icp.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/redaction/services/redaction.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/annotation.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/bookmark.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/document.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/icp.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/redaction.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/actions/tag.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/effects/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/models/bookmarks.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/models/filters.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/reducers/reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/document.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/icp.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/store/selectors/tag.selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/viewers/viewer-exception.model.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ResponseType, ViewerException } from '../viewer-exception.model';
|
|
3
|
+
import * as fromDocument from '../../store/actions/document.actions';
|
|
4
|
+
import * as fromAnnotationActions from '../../store/actions/annotation.actions';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngrx/store";
|
|
7
|
+
import * as i2 from "../../print.service";
|
|
8
|
+
import * as i3 from "../viewer-util.service";
|
|
9
|
+
import * as i4 from "../../toolbar/toolbar-event.service";
|
|
10
|
+
import * as i5 from "../../toolbar/toolbar-button-visibility.service";
|
|
11
|
+
import * as i6 from "../viewer-event.service";
|
|
12
|
+
import * as i7 from "@angular/common";
|
|
13
|
+
import * as i8 from "../../annotations/comment-set/comment-set.component";
|
|
14
|
+
import * as i9 from "../../annotations/comment-set/comment-set-header/comment-set-header.component";
|
|
15
|
+
import * as i10 from "../../annotations/annotation-set/metadata-layer/metadata-layer.component";
|
|
16
|
+
import * as i11 from "../grab-n-drag.directive";
|
|
17
|
+
import * as i12 from "../../redaction/components/redaction.component";
|
|
18
|
+
export class ImageViewerComponent {
|
|
19
|
+
constructor(store, printService, viewerUtilService, toolbarEvents, toolbarButtons, viewerEvents) {
|
|
20
|
+
this.store = store;
|
|
21
|
+
this.printService = printService;
|
|
22
|
+
this.viewerUtilService = viewerUtilService;
|
|
23
|
+
this.toolbarEvents = toolbarEvents;
|
|
24
|
+
this.toolbarButtons = toolbarButtons;
|
|
25
|
+
this.viewerEvents = viewerEvents;
|
|
26
|
+
this.mediaLoadStatus = new EventEmitter();
|
|
27
|
+
this.imageViewerException = new EventEmitter();
|
|
28
|
+
this.rotation = 0;
|
|
29
|
+
this.zoom = 1;
|
|
30
|
+
this.subscriptions = [];
|
|
31
|
+
this.enableGrabNDrag = false;
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.subscriptions.push(this.toolbarEvents.rotateSubject.subscribe(rotation => this.rotateImage(rotation)), this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)), this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)), this.toolbarEvents.printSubject.subscribe(() => this.printService.printDocumentNatively(this.url)), this.toolbarEvents.downloadSubject.subscribe(() => this.download()), this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag), this.toolbarEvents.commentsPanelVisible.subscribe(toggle => this.showCommentsPanel = toggle));
|
|
35
|
+
}
|
|
36
|
+
onImageViewerClick(event) {
|
|
37
|
+
const classNme = event.target.className;
|
|
38
|
+
if (classNme.startsWith('pageContainer')) {
|
|
39
|
+
this.store.dispatch(new fromAnnotationActions.SelectedAnnotation({
|
|
40
|
+
annotationId: '',
|
|
41
|
+
selected: false,
|
|
42
|
+
editable: false,
|
|
43
|
+
}));
|
|
44
|
+
this.viewerEvents.clearCtxToolbar();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
this.subscriptions.filter(subscription => !subscription.closed)
|
|
49
|
+
.forEach(subscription => subscription.unsubscribe());
|
|
50
|
+
if (this.response) {
|
|
51
|
+
this.response.unsubscribe();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
ngOnChanges(changes) {
|
|
55
|
+
if (changes.url) {
|
|
56
|
+
this.errorMessage = null;
|
|
57
|
+
this.toolbarEvents.reset();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
rotateImage(rotation) {
|
|
61
|
+
this.rotation = (this.rotation + rotation) % 360;
|
|
62
|
+
this.initAnnoPage(this.img.nativeElement);
|
|
63
|
+
}
|
|
64
|
+
async setZoom(zoomFactor) {
|
|
65
|
+
if (!isNaN(zoomFactor)) {
|
|
66
|
+
await this.setZoomValue(this.calculateZoomValue(zoomFactor));
|
|
67
|
+
this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;
|
|
68
|
+
this.initAnnoPage(this.img.nativeElement);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async stepZoom(zoomFactor) {
|
|
72
|
+
if (!isNaN(zoomFactor)) {
|
|
73
|
+
await this.setZoomValue(this.calculateZoomValue(this.zoom, zoomFactor));
|
|
74
|
+
this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;
|
|
75
|
+
this.initAnnoPage(this.img.nativeElement);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
download() {
|
|
79
|
+
const a = document.createElement('a');
|
|
80
|
+
document.body.appendChild(a);
|
|
81
|
+
a.setAttribute('style', 'display: none');
|
|
82
|
+
a.href = this.url;
|
|
83
|
+
a.download = this.downloadFileName;
|
|
84
|
+
a.click();
|
|
85
|
+
a.remove();
|
|
86
|
+
}
|
|
87
|
+
// the returned promise is a work-around
|
|
88
|
+
setZoomValue(zoomValue) {
|
|
89
|
+
return new Promise((resolve) => {
|
|
90
|
+
this.zoom = zoomValue;
|
|
91
|
+
this.toolbarEvents.zoomValueSubject.next(zoomValue);
|
|
92
|
+
resolve(true);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
calculateZoomValue(zoomValue, increment = 0) {
|
|
96
|
+
const newZoomValue = zoomValue + increment;
|
|
97
|
+
if (newZoomValue > 5) {
|
|
98
|
+
return 5;
|
|
99
|
+
}
|
|
100
|
+
if (newZoomValue < 0.1) {
|
|
101
|
+
return 0.1;
|
|
102
|
+
}
|
|
103
|
+
return +newZoomValue.toFixed(2);
|
|
104
|
+
}
|
|
105
|
+
onLoadError(url) {
|
|
106
|
+
this.response = this.viewerUtilService.validateFile(url)
|
|
107
|
+
.subscribe(next => next, error => {
|
|
108
|
+
this.viewerException = new ViewerException(error.name, { httpResponseCode: error.status, message: error.message });
|
|
109
|
+
});
|
|
110
|
+
this.errorMessage = `Could not load the image "${this.url}"`;
|
|
111
|
+
this.mediaLoadStatus.emit(ResponseType.FAILURE);
|
|
112
|
+
this.imageViewerException.emit(this.viewerException);
|
|
113
|
+
}
|
|
114
|
+
onLoad(img) {
|
|
115
|
+
this.mediaLoadStatus.emit(ResponseType.SUCCESS);
|
|
116
|
+
this.initAnnoPage(img);
|
|
117
|
+
}
|
|
118
|
+
initAnnoPage(img) {
|
|
119
|
+
this.imageHeight = this.rotation % 180 !== 0 ? img.offsetWidth : img.offsetHeight;
|
|
120
|
+
this.imageWidth = this.rotation % 180 !== 0 ? img.offsetHeight : img.offsetWidth;
|
|
121
|
+
this.imageLeft = this.rotation % 180 !== 0 ? img.offsetTop : img.offsetLeft;
|
|
122
|
+
this.imageTop = this.rotation % 180 !== 0 ? img.offsetLeft : img.offsetTop;
|
|
123
|
+
const payload = [{
|
|
124
|
+
div: {
|
|
125
|
+
scrollHeight: this.imageHeight,
|
|
126
|
+
scrollWidth: this.imageWidth,
|
|
127
|
+
offsetLeft: this.imageLeft,
|
|
128
|
+
},
|
|
129
|
+
pageNumber: 1,
|
|
130
|
+
scale: this.zoom,
|
|
131
|
+
rotation: this.rotation,
|
|
132
|
+
id: 1
|
|
133
|
+
}];
|
|
134
|
+
this.store.dispatch(new fromDocument.AddPages(payload));
|
|
135
|
+
}
|
|
136
|
+
toggleCommentsSummary() {
|
|
137
|
+
this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());
|
|
138
|
+
}
|
|
139
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ImageViewerComponent, deps: [{ token: i1.Store }, { token: i2.PrintService }, { token: i3.ViewerUtilService }, { token: i4.ToolbarEventService }, { token: i5.ToolbarButtonVisibilityService }, { token: i6.ViewerEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ImageViewerComponent, selector: "mv-image-viewer", inputs: { url: "url", downloadFileName: "downloadFileName", enableAnnotations: "enableAnnotations", annotationSet: "annotationSet", height: "height" }, outputs: { mediaLoadStatus: "mediaLoadStatus", imageViewerException: "imageViewerException" }, host: { listeners: { "mousedown": "onImageViewerClick($event)" } }, viewQueries: [{ propertyName: "img", first: true, predicate: ["img"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.CommentSetComponent, selector: "mv-comment-set", inputs: ["annotationSet", "zoom", "rotate", "height", "pageHeights", "contentScrollTop"] }, { kind: "component", type: i9.CommentSetHeaderComponent, selector: "mv-comment-set-header", inputs: ["showCommentSummary"], outputs: ["showCommentSummaryDialog"] }, { kind: "component", type: i10.MetadataLayerComponent, selector: "mv-metadata-layer", inputs: ["zoom", "rotate"] }, { kind: "directive", type: i11.GrabNDragDirective, selector: "[mvGrabNDrag]", inputs: ["dragEnabled", "dragX"] }, { kind: "component", type: i12.RedactionComponent, selector: "mv-redactions", inputs: ["zoom", "rotate"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] }); }
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ImageViewerComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'mv-image-viewer', template: "<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n" }]
|
|
145
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.PrintService }, { type: i3.ViewerUtilService }, { type: i4.ToolbarEventService }, { type: i5.ToolbarButtonVisibilityService }, { type: i6.ViewerEventService }], propDecorators: { url: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], downloadFileName: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], enableAnnotations: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], annotationSet: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], height: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], mediaLoadStatus: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], imageViewerException: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], img: [{
|
|
160
|
+
type: ViewChild,
|
|
161
|
+
args: ['img', { static: false }]
|
|
162
|
+
}], onImageViewerClick: [{
|
|
163
|
+
type: HostListener,
|
|
164
|
+
args: ['mousedown', ['$event']]
|
|
165
|
+
}] } });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3ZpZXdlcnMvaW1hZ2Utdmlld2VyL2ltYWdlLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL2ltYWdlLXZpZXdlci9pbWFnZS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLMUUsT0FBTyxLQUFLLFlBQVksTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEtBQUsscUJBQXFCLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBT2hGLE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9CLFlBQ1UsS0FBMEMsRUFDakMsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3JDLGFBQWtDLEVBQ2xDLGNBQThDLEVBQ3RELFlBQWdDO1FBTGhDLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUN0RCxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUExQmhDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDbkQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFLckUsYUFBUSxHQUFHLENBQUMs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QztnQkFDcEIsR0FBRyxFQUFFO29CQUNILFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzNCO2dCQUNELFVBQVUsRUFBRSxDQUFDO2dCQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixFQUFFLEVBQUUsQ0FBQzthQUNOLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO2tJQXpLVSxvQkFBb0I7c0hBQXBCLG9CQUFvQixtZUM5QmpDLG9uREE4REE7OzRGRGhDYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0UsaUJBQWlCO3FQQUtsQixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFJNEIsR0FBRztzQkFBckMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQXFDakMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ub3RhdGlvblNldCB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZVR5cGUsIFZpZXdlckV4Y2VwdGlvbiB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyVXRpbFNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXItdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudCBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbUFubm90YXRpb25BY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcbmltcG9ydCB7IFZpZXdlckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3ZpZXdlci1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtaW1hZ2Utdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLXZpZXdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSB1cmw6IHN0cmluZztcbiAgQElucHV0KCkgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGVuYWJsZUFubm90YXRpb25zOiBib29sZWFuO1xuICBASW5wdXQoKSBhbm5vdGF0aW9uU2V0OiBBbm5vdGF0aW9uU2V0IHwgbnVsbDtcblxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZztcblxuICBAT3V0cHV0KCkgbWVkaWFMb2FkU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNwb25zZVR5cGU+KCk7XG4gIEBPdXRwdXQoKSBpbWFnZVZpZXdlckV4Y2VwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRXhjZXB0aW9uPigpO1xuXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2ltZycsIHtzdGF0aWM6IGZhbHNlfSkgaW1nOiBFbGVtZW50UmVmO1xuICByb3RhdGlvbiA9IDA7XG4gIHpvb20gPSAxO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB2aWV3ZXJFeGNlcHRpb246IFZpZXdlckV4Y2VwdGlvbjtcbiAgcHJpdmF0ZSByZXNwb25zZTogU3Vic2NyaXB0aW9uO1xuXG4gIHNob3dDb21tZW50c1BhbmVsOiBib29sZWFuO1xuICBlbmFibGVHcmFiTkRyYWcgPSBmYWxzZTtcbiAgaW1hZ2VIZWlnaHQ6IG51bWJlcjtcbiAgaW1hZ2VXaWR0aDogbnVtYmVyO1xuICBpbWFnZUxlZnQ6IG51bWJlcjtcbiAgaW1hZ2VUb3A6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld2VyVXRpbFNlcnZpY2U6IFZpZXdlclV0aWxTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyRXZlbnRzOiBWaWV3ZXJFdmVudFNlcnZpY2UsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucm90YXRlU3ViamVjdC5zdWJzY3JpYmUocm90YXRpb24gPT4gdGhpcy5yb3RhdGVJbWFnZShyb3RhdGlvbikpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnpvb21TdWJqZWN0LnN1YnNjcmliZSh6b29tID0+IHRoaXMuc2V0Wm9vbSh6b29tKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc3RlcFpvb21TdWJqZWN0LnN1YnNjcmliZSh6b29tID0+IHRoaXMuc3RlcFpvb20oem9vbSkpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnByaW50U3ViamVjdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wcmludFNlcnZpY2UucHJpbnREb2N1bWVudE5hdGl2ZWx5KHRoaXMudXJsKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuZG93bmxvYWRTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmRvd25sb2FkKCkpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmdyYWJORHJhZy5zdWJzY3JpYmUoZ3JhYk5EcmFnID0+IHRoaXMuZW5hYmxlR3JhYk5EcmFnID0gZ3JhYk5EcmFnKSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5jb21tZW50c1BhbmVsVmlzaWJsZS5zdWJzY3JpYmUodG9nZ2xlID0+IHRoaXMuc2hvd0NvbW1lbnRzUGFuZWwgPSB0b2dnbGUpXG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uSW1hZ2VWaWV3ZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNsYXNzTm1lID0gKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbGFzc05hbWU7XG4gICAgaWYgKGNsYXNzTm1lLnN0YXJ0c1dpdGgoJ3BhZ2VDb250YWluZXInKSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgbmV3IGZyb21Bbm5vdGF0aW9uQWN0aW9ucy5TZWxlY3RlZEFubm90YXRpb24oe1xuICAgICAgICAgIGFubm90YXRpb25JZDogJycsXG4gICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnZpZXdlckV2ZW50cy5jbGVhckN0eFRvb2xiYXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiAhc3Vic2NyaXB0aW9uLmNsb3NlZClcbiAgICAgIC5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgaWYgKHRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMudXJsKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVzZXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvdGF0ZUltYWdlKHJvdGF0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLnJvdGF0aW9uID0gKHRoaXMucm90YXRpb24gKyByb3RhdGlvbikgJSAzNjA7XG4gICAgdGhpcy5pbml0QW5ub1BhZ2UodGhpcy5pbWcubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFpvb20oem9vbUZhY3RvcjogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05hTih6b29tRmFjdG9yKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRab29tVmFsdWUodGhpcy5jYWxjdWxhdGVab29tVmFsdWUoem9vbUZhY3RvcikpO1xuICAgICAgdGhpcy5pbWcubmF0aXZlRWxlbWVudC53aWR0aCA9IHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQubmF0dXJhbFdpZHRoICogdGhpcy56b29tO1xuICAgICAgdGhpcy5pbml0QW5ub1BhZ2UodGhpcy5pbWcubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGVwWm9vbSh6b29tRmFjdG9yOiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmFOKHpvb21GYWN0b3IpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldFpvb21WYWx1ZSh0aGlzLmNhbGN1bGF0ZVpvb21WYWx1ZSh0aGlzLnpvb20sIHpvb21GYWN0b3IpKTtcbiAgICAgIHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQud2lkdGggPSB0aGlzLmltZy5uYXRpdmVFbGVtZW50Lm5hdHVyYWxXaWR0aCAqIHRoaXMuem9vbTtcbiAgICAgIHRoaXMuaW5pdEFubm9QYWdlKHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWQoKSB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgYS5ocmVmID0gdGhpcy51cmw7XG4gICAgYS5kb3dubG9hZCA9IHRoaXMuZG93bmxvYWRGaWxlTmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgYS5yZW1vdmUoKTtcbiAgfVxuXG4gIC8vIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGEgd29yay1hcm91bmRcbiAgc2V0Wm9vbVZhbHVlKHpvb21WYWx1ZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy56b29tID0gem9vbVZhbHVlO1xuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnpvb21WYWx1ZVN1YmplY3QubmV4dCh6b29tVmFsdWUpO1xuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVpvb21WYWx1ZSh6b29tVmFsdWUsIGluY3JlbWVudCA9IDApIHtcbiAgICBjb25zdCBuZXdab29tVmFsdWUgPSB6b29tVmFsdWUgKyBpbmNyZW1lbnQ7XG4gICAgaWYgKG5ld1pvb21WYWx1ZSA+IDUpIHsgcmV0dXJuIDU7IH1cbiAgICBpZiAobmV3Wm9vbVZhbHVlIDwgMC4xKSB7IHJldHVybiAwLjE7IH1cbiAgICByZXR1cm4gK25ld1pvb21WYWx1ZS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25Mb2FkRXJyb3IodXJsKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHRoaXMudmlld2VyVXRpbFNlcnZpY2UudmFsaWRhdGVGaWxlKHVybClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIG5leHQgPT4gbmV4dCxcbiAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMudmlld2VyRXhjZXB0aW9uID0gbmV3IFZpZXdlckV4Y2VwdGlvbihlcnJvci5uYW1lLFxuICAgICAgICAgICAgeyBodHRwUmVzcG9uc2VDb2RlOiBlcnJvci5zdGF0dXMsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgQ291bGQgbm90IGxvYWQgdGhlIGltYWdlIFwiJHt0aGlzLnVybH1cImA7XG4gICAgdGhpcy5tZWRpYUxvYWRTdGF0dXMuZW1pdChSZXNwb25zZVR5cGUuRkFJTFVSRSk7XG4gICAgdGhpcy5pbWFnZVZpZXdlckV4Y2VwdGlvbi5lbWl0KHRoaXMudmlld2VyRXhjZXB0aW9uKTtcbiAgfVxuXG4gIG9uTG9hZChpbWc6IGFueSkge1xuICAgIHRoaXMubWVkaWFMb2FkU3RhdHVzLmVtaXQoUmVzcG9uc2VUeXBlLlNVQ0NFU1MpO1xuICAgIHRoaXMuaW5pdEFubm9QYWdlKGltZyk7XG4gIH1cblxuICBpbml0QW5ub1BhZ2UoaW1nOiBhbnkpIHtcbiAgICB0aGlzLmltYWdlSGVpZ2h0ID0gdGhpcy5yb3RhdGlvbiAlIDE4MCAhPT0gMCA/IGltZy5vZmZzZXRXaWR0aCA6IGltZy5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5pbWFnZVdpZHRoID0gdGhpcy5yb3RhdGlvbiAlIDE4MCAhPT0gMCA/IGltZy5vZmZzZXRIZWlnaHQgOiBpbWcub2Zmc2V0V2lkdGg7XG4gICAgdGhpcy5pbWFnZUxlZnQgPSB0aGlzLnJvdGF0aW9uICUgMTgwICE9PSAwID8gaW1nLm9mZnNldFRvcCA6IGltZy5vZmZzZXRMZWZ0O1xuICAgIHRoaXMuaW1hZ2VUb3AgPSB0aGlzLnJvdGF0aW9uICUgMTgwICE9PSAwID8gaW1nLm9mZnNldExlZnQgOiBpbWcub2Zmc2V0VG9wO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IFt7XG4gICAgICBkaXY6IHtcbiAgICAgICAgc2Nyb2xsSGVpZ2h0OiB0aGlzLmltYWdlSGVpZ2h0LFxuICAgICAgICBzY3JvbGxXaWR0aDogdGhpcy5pbWFnZVdpZHRoLFxuICAgICAgICBvZmZzZXRMZWZ0OiB0aGlzLmltYWdlTGVmdCxcbiAgICAgIH0sXG4gICAgICBwYWdlTnVtYmVyOiAxLFxuICAgICAgc2NhbGU6IHRoaXMuem9vbSxcbiAgICAgIHJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uLFxuICAgICAgaWQ6IDFcbiAgICB9XTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Eb2N1bWVudC5BZGRQYWdlcyhwYXlsb2FkKSk7XG4gIH1cblxuICB0b2dnbGVDb21tZW50c1N1bW1hcnkoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzU3VtbWFyeSghdGhpcy50b29sYmFyRXZlbnRzLnNob3dDb21tZW50U3VtbWFyeS5nZXRWYWx1ZSgpKTtcbiAgfVxufVxuIiwiPG12LWNvbW1lbnQtc2V0LWhlYWRlclxuICBbbmdDbGFzc109XCJ7ICdzaG93LWNvbW1lbnRzLXBhbmVsJzogc2hvd0NvbW1lbnRzUGFuZWwgfVwiXG4gIFtzaG93Q29tbWVudFN1bW1hcnldPVwidG9vbGJhckJ1dHRvbnMuc2hvd0NvbW1lbnRTdW1tYXJ5XCJcbiAgKHNob3dDb21tZW50U3VtbWFyeURpYWxvZyk9XCJ0b2dnbGVDb21tZW50c1N1bW1hcnkoKVwiXG4+XG48L212LWNvbW1lbnQtc2V0LWhlYWRlcj5cbjxkaXZcbiAgaWQ9XCJ2aWV3ZXItd3JhcHBlclwiXG4gIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgfVwiXG4gIFtuZ0NsYXNzXT1cInsgZ3JhYk5EcmFnOiBlbmFibGVHcmFiTkRyYWcgfVwiXG4gICpuZ0lmPVwidXJsICYmICFlcnJvck1lc3NhZ2VcIlxuPlxuICA8ZGl2XG4gICAgI2ltYWdlQ29udGFpbmVyXG4gICAgaWQ9XCJpbWFnZS1jb250YWluZXJcIlxuICAgIG12R3JhYk5EcmFnXG4gICAgW2RyYWdYXT1cImltYWdlQ29udGFpbmVyXCJcbiAgICBbZHJhZ0VuYWJsZWRdPVwiZW5hYmxlR3JhYk5EcmFnXCJcbiAgICAoc2Nyb2xsKT1cIigkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnaW1hZ2UtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAgIGFubm90YXRpb25zOiBlbmFibGVBbm5vdGF0aW9ucyxcbiAgICAgICdzaG93LWNvbW1lbnRzLXBhbmVsJzogc2hvd0NvbW1lbnRzUGFuZWxcbiAgICB9XCJcbiAgPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIGFsdD1cIlwiXG4gICAgICBbc3JjXT1cInVybFwiXG4gICAgICBbbmdDbGFzc109XCIncm90JyArIHJvdGF0aW9uXCJcbiAgICAgIChlcnJvcik9XCJvbkxvYWRFcnJvcih1cmwpXCJcbiAgICAgIChsb2FkKT1cIm9uTG9hZChpbWcpXCJcbiAgICAvPlxuICAgIDxtdi1yZWRhY3Rpb25zXG4gICAgICAqbmdJZj1cInRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jOyBlbHNlIGFubm90YXRpb25UZW1wbGF0ZVwiXG4gICAgICBbem9vbV09XCJ6b29tXCJcbiAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgID48L212LXJlZGFjdGlvbnM+XG4gICAgPG5nLXRlbXBsYXRlICNhbm5vdGF0aW9uVGVtcGxhdGU+XG4gICAgICA8bXYtbWV0YWRhdGEtbGF5ZXJcbiAgICAgICAgKm5nSWY9XCJlbmFibGVBbm5vdGF0aW9ucyAmJiBhbm5vdGF0aW9uU2V0XCJcbiAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgIFtyb3RhdGVdPVwicm90YXRpb25cIlxuICAgICAgPlxuICAgICAgPC9tdi1tZXRhZGF0YS1sYXllcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8bXYtY29tbWVudC1zZXRcbiAgICBbY29udGVudFNjcm9sbFRvcF09XCJpbWFnZUNvbnRhaW5lci5zY3JvbGxUb3BcIlxuICAgICpuZ0lmPVwiXG4gICAgICBlbmFibGVBbm5vdGF0aW9ucyAmJlxuICAgICAgYW5ub3RhdGlvblNldCAmJlxuICAgICAgKHRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jKSAhPT0gdHJ1ZVxuICAgIFwiXG4gICAgW2Fubm90YXRpb25TZXRdPVwiYW5ub3RhdGlvblNldFwiXG4gICAgW3pvb21dPVwiem9vbVwiXG4gICAgW3JvdGF0ZV09XCJyb3RhdGlvblwiXG4gICAgW2hlaWdodF09XCJpbWFnZUhlaWdodFwiXG4gID5cbiAgPC9tdi1jb21tZW50LXNldD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { ResponseType } from '../viewer-exception.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../toolbar/toolbar-event.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "rpx-xui-translation";
|
|
7
|
+
export class MultimediaPlayerComponent {
|
|
8
|
+
constructor(toolbarEvents) {
|
|
9
|
+
this.toolbarEvents = toolbarEvents;
|
|
10
|
+
this.loadStatus = new EventEmitter();
|
|
11
|
+
this.playbackMsg = 'loading';
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.subscription = this.toolbarEvents.downloadSubject
|
|
15
|
+
.subscribe(() => this.downloadLink.nativeElement.click());
|
|
16
|
+
this.loadStatus.emit(ResponseType.SUCCESS);
|
|
17
|
+
}
|
|
18
|
+
ngOnChanges(changes) {
|
|
19
|
+
if (changes.url) {
|
|
20
|
+
this.reloadVideo();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this.subscription.unsubscribe();
|
|
25
|
+
}
|
|
26
|
+
reloadVideo() {
|
|
27
|
+
if (this.videoPlayer) {
|
|
28
|
+
this.playbackMsg = 'loading';
|
|
29
|
+
this.videoPlayer.nativeElement.load();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
onSuccess() {
|
|
33
|
+
this.playbackMsg = 'success';
|
|
34
|
+
}
|
|
35
|
+
onError() {
|
|
36
|
+
this.playbackMsg = 'error';
|
|
37
|
+
}
|
|
38
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultimediaPlayerComponent, deps: [{ token: i1.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MultimediaPlayerComponent, selector: "mv-multimedia-player", inputs: { url: "url", downloadFileName: "downloadFileName", multimediaOn: "multimediaOn" }, outputs: { loadStatus: "loadStatus" }, viewQueries: [{ propertyName: "downloadLink", first: true, predicate: ["downloadLink"], descendants: true }, { propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.RpxTranslatePipe, name: "rpxTranslate" }] }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultimediaPlayerComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'mv-multimedia-player', template: "<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n" }]
|
|
44
|
+
}], ctorParameters: () => [{ type: i1.ToolbarEventService }], propDecorators: { url: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], downloadFileName: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], multimediaOn: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], loadStatus: [{
|
|
51
|
+
type: Output
|
|
52
|
+
}], downloadLink: [{
|
|
53
|
+
type: ViewChild,
|
|
54
|
+
args: ['downloadLink', { static: false }]
|
|
55
|
+
}], videoPlayer: [{
|
|
56
|
+
type: ViewChild,
|
|
57
|
+
args: ['videoPlayer', { static: false }]
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltZWRpYS1wbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdmlld2Vycy9tdWx0aW1lZGlhLXBsYXllci9tdWx0aW1lZGlhLXBsYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL211bHRpbWVkaWEtcGxheWVyL211bHRpbWVkaWEtcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUdiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNekQsTUFBTSxPQUFPLHlCQUF5QjtJQWVwQyxZQUNrQixhQUFrQztRQUFsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFWMUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBS3hELGdCQUFXLEdBQUcsU0FBUyxDQUFDO0lBTXJCLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWU7YUFDbkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7a0lBaERVLHlCQUF5QjtzSEFBekIseUJBQXlCLCtaQ3BCdEMsd3dEQXFEQTs7NEZEakNhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxzQkFBc0I7d0ZBS3ZCLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVxQyxZQUFZO3NCQUF2RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ0MsV0FBVztzQkFBckQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZSB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tdWx0aW1lZGlhLXBsYXllcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aW1lZGlhLXBsYXllci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGltZWRpYVBsYXllckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBASW5wdXQoKSBkb3dubG9hZEZpbGVOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpbWVkaWFPbjogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgbG9hZFN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VUeXBlPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Rvd25sb2FkTGluaycsIHtzdGF0aWM6IGZhbHNlfSkgZG93bmxvYWRMaW5rOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd2aWRlb1BsYXllcicsIHtzdGF0aWM6IGZhbHNlfSkgdmlkZW9QbGF5ZXI6IEVsZW1lbnRSZWY7XG5cbiAgcGxheWJhY2tNc2cgPSAnbG9hZGluZyc7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbGJhckV2ZW50cy5kb3dubG9hZFN1YmplY3RcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kb3dubG9hZExpbmsubmF0aXZlRWxlbWVudC5jbGljaygpKTtcbiAgICB0aGlzLmxvYWRTdGF0dXMuZW1pdChSZXNwb25zZVR5cGUuU1VDQ0VTUyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnVybCkge1xuICAgICAgdGhpcy5yZWxvYWRWaWRlbygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWxvYWRWaWRlbygpIHtcbiAgICBpZiAodGhpcy52aWRlb1BsYXllcikge1xuICAgICAgdGhpcy5wbGF5YmFja01zZyA9ICdsb2FkaW5nJztcbiAgICAgIHRoaXMudmlkZW9QbGF5ZXIubmF0aXZlRWxlbWVudC5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgb25TdWNjZXNzKCkge1xuICAgIHRoaXMucGxheWJhY2tNc2cgPSAnc3VjY2Vzcyc7XG4gIH1cblxuICBvbkVycm9yKCkge1xuICAgIHRoaXMucGxheWJhY2tNc2cgPSAnZXJyb3InO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ub3RpZmljYXRpb24tYmFubmVyX19jb250ZW50XCI+XG4gICAgPHA+XG4gICAgICA8c3BhbiAqbmdJZj1cIm11bHRpbWVkaWFPbiAmJiBwbGF5YmFja01zZyA9PT0gJ2xvYWRpbmcnXCI+e3tcbiAgICAgICAgXCJMb2FkaW5nIG11bHRpbWVkaWEgY29udGVudCAuLi5cIiB8IHJweFRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aW1lZGlhT25cIlxuICAgICAgICA+e3sgXCJNdWx0aW1lZGlhIHBsYXliYWNrIGlzIG5vdCBlbmFibGVkLCBcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aW1lZGlhT24gJiYgcGxheWJhY2tNc2cgPT09ICdzdWNjZXNzJ1wiXG4gICAgICAgID57eyBcIlVzZSB0aGUgcGxheWVyIHRvIHBsYXkgdG8gdGhlIGZpbGUgb3JcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aW1lZGlhT24gJiYgcGxheWJhY2tNc2cgPT09ICdlcnJvcidcIlxuICAgICAgICA+e3sgXCJNaW1lIHR5cGUgbm90IHN1cHBvcnRlZC5cIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCIhbXVsdGltZWRpYU9uIHx8IHBsYXliYWNrTXNnICE9PSAnbG9hZGluZydcIlxuICAgICAgICAjZG93bmxvYWRMaW5rXG4gICAgICAgIFtocmVmXT1cInVybFwiXG4gICAgICAgIFtkb3dubG9hZF09XCJkb3dubG9hZEZpbGVOYW1lXCJcbiAgICAgICAgPnt7IFwiQ2xpY2sgaGVyZSB0byBkb3dubG9hZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9hXG4gICAgICA+XG4gICAgPC9wPlxuICAgIDx2aWRlb1xuICAgICAgI3ZpZGVvUGxheWVyXG4gICAgICAqbmdJZj1cIm11bHRpbWVkaWFPblwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICBwcmVsb2FkPVwiYXV0b1wiXG4gICAgICAoY2FucGxheSk9XCJvblN1Y2Nlc3MoKVwiXG4gICAgICBjb250cm9sc1xuICAgID5cbiAgICAgIDxzb3VyY2UgKGVycm9yKT1cIm9uRXJyb3IoKVwiIFtzcmNdPVwidXJsXCIgdHlwZT1cInZpZGVvL21wNFwiIC8+XG4gICAgICA8c291cmNlXG4gICAgICAgIChlcnJvcik9XCJvbkVycm9yKClcIlxuICAgICAgICBbc3JjXT1cInVybFwiXG4gICAgICAgIHR5cGU9XCJ2aWRlby9tcDQ7IGNvZGVjcz0nYXZjMSwgYXYwMSwgaHZjMSwgaGV2MSwgbXA0diwgbXA0YS40MC4yLCBvcHVzJ1wiXG4gICAgICAvPlxuICAgICAgPHNvdXJjZSAoZXJyb3IpPVwib25FcnJvcigpXCIgW3NyY109XCJ1cmxcIiB0eXBlPVwidmlkZW8vb2dnXCIgLz5cbiAgICAgIDxzb3VyY2VcbiAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgdHlwZT1cInZpZGVvL29nZzsgY29kZWNzPSd0aGVvcmEsIHZwOCwgdnA5LCBmbGFjLCBvcHVzLCB2b3JiaXMnXCJcbiAgICAgIC8+XG4gICAgICA8c291cmNlIChlcnJvcik9XCJvbkVycm9yKClcIiBbc3JjXT1cInVybFwiIHR5cGU9XCJ2aWRlby93ZWJtXCIgLz5cbiAgICAgIDxzb3VyY2VcbiAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgdHlwZT1cInZpZGVvL3dlYm07IGNvZGVjcz0ndnA4LCB2cDksIHZvcmJpcywgb3B1cydcIlxuICAgICAgLz5cbiAgICA8L3ZpZGVvPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import * as pdfjsLib from 'pdfjs-dist';
|
|
2
|
+
import 'pdfjs-dist/build/pdf.worker';
|
|
3
|
+
pdfjsLib.GlobalWorkerOptions.workerSrc = '/assets/build/pdf.worker.min.js';
|
|
4
|
+
/**
|
|
5
|
+
* Values of the state field returned by the find events
|
|
6
|
+
*/
|
|
7
|
+
var FindState;
|
|
8
|
+
(function (FindState) {
|
|
9
|
+
FindState[FindState["FOUND"] = 0] = "FOUND";
|
|
10
|
+
FindState[FindState["NOT_FOUND"] = 1] = "NOT_FOUND";
|
|
11
|
+
FindState[FindState["WRAPPED"] = 2] = "WRAPPED";
|
|
12
|
+
FindState[FindState["PENDING"] = 3] = "PENDING";
|
|
13
|
+
})(FindState || (FindState = {}));
|
|
14
|
+
export class PdfJsWrapper {
|
|
15
|
+
constructor(pdfViewer, downloadManager, toolbarEvents, documentLoadInit, documentLoadProgress, documentLoaded, outlineLoaded, documentLoadFailed, pageRendered, positionUpdated) {
|
|
16
|
+
this.pdfViewer = pdfViewer;
|
|
17
|
+
this.downloadManager = downloadManager;
|
|
18
|
+
this.toolbarEvents = toolbarEvents;
|
|
19
|
+
this.documentLoadInit = documentLoadInit;
|
|
20
|
+
this.documentLoadProgress = documentLoadProgress;
|
|
21
|
+
this.documentLoaded = documentLoaded;
|
|
22
|
+
this.outlineLoaded = outlineLoaded;
|
|
23
|
+
this.documentLoadFailed = documentLoadFailed;
|
|
24
|
+
this.pageRendered = pageRendered;
|
|
25
|
+
this.positionUpdated = positionUpdated;
|
|
26
|
+
this.pdfViewer.eventBus.on('updateviewarea', e => positionUpdated.next(e));
|
|
27
|
+
this.pdfViewer.eventBus.on('pagechanging', e => this.toolbarEvents.setCurrentPageInputValueSubject.next(e.pageNumber));
|
|
28
|
+
this.pdfViewer.eventBus.on('pagesinit', () => this.pdfViewer.currentScaleValue = '1');
|
|
29
|
+
this.pdfViewer.eventBus.on('pagerendered', e => { }); // not used left for future convenience
|
|
30
|
+
this.pdfViewer.eventBus.on('pagesloaded', (e) => this.emitDocumentInfo(e));
|
|
31
|
+
this.pdfViewer.eventBus.on('scalechanging', (e) => this.emitDocumentInfo(e));
|
|
32
|
+
this.pdfViewer.eventBus.on('rotationchanging', (e) => this.emitDocumentInfo(e));
|
|
33
|
+
this.pdfViewer.eventBus.on('updatefindcontrolstate', event => {
|
|
34
|
+
this.sendSearchDetails(event);
|
|
35
|
+
});
|
|
36
|
+
this.pdfViewer.eventBus.on('updatefindmatchescount', event => {
|
|
37
|
+
const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious };
|
|
38
|
+
this.toolbarEvents.searchResultsCountSubject.next(result);
|
|
39
|
+
});
|
|
40
|
+
this.zoomValue = 1;
|
|
41
|
+
}
|
|
42
|
+
sendSearchDetails(event) {
|
|
43
|
+
if (event.state !== FindState.PENDING) {
|
|
44
|
+
const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious };
|
|
45
|
+
this.toolbarEvents.searchResultsCountSubject.next(result);
|
|
46
|
+
if (event?.source?.selected?.pageIdx !== -1 && event.matchesCount.total > 0) {
|
|
47
|
+
this.toolbarEvents.redactionSerachSubject.next({
|
|
48
|
+
page: event?.source?.selected?.pageIdx,
|
|
49
|
+
matchedIndex: event?.source?.selected?.matchIdx,
|
|
50
|
+
matchesCount: event.matchesCount.total
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
emitDocumentInfo(e) {
|
|
56
|
+
const allPages = [...this.pdfViewer._pages].map(page => {
|
|
57
|
+
return {
|
|
58
|
+
div: page.div,
|
|
59
|
+
scale: page.scale,
|
|
60
|
+
rotation: page.rotation,
|
|
61
|
+
id: page.id,
|
|
62
|
+
viewportScale: page.viewport.scale
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
this.pageRendered.next(allPages);
|
|
66
|
+
}
|
|
67
|
+
async loadDocument(documentUrl) {
|
|
68
|
+
const loadingTask = this.createLoadingTask(documentUrl);
|
|
69
|
+
loadingTask.onProgress = ({ loaded, total }) => {
|
|
70
|
+
this.documentLoadProgress.next({ loaded, total });
|
|
71
|
+
};
|
|
72
|
+
this.documentLoadInit.next(documentUrl);
|
|
73
|
+
try {
|
|
74
|
+
const pdfDocument = await loadingTask.promise;
|
|
75
|
+
this.documentLoaded.next(pdfDocument);
|
|
76
|
+
this.toolbarEvents.pageCountSubject.next(pdfDocument.numPages);
|
|
77
|
+
this.pdfViewer.setDocument(pdfDocument);
|
|
78
|
+
this.pdfViewer.linkService.setDocument(pdfDocument, null);
|
|
79
|
+
const outlineNode = await pdfDocument.getOutline();
|
|
80
|
+
const outline = outlineNode ? outlineNode.map(x => {
|
|
81
|
+
return {
|
|
82
|
+
bold: x.bold,
|
|
83
|
+
color: x.color,
|
|
84
|
+
count: x.count,
|
|
85
|
+
dest: x.dest,
|
|
86
|
+
italic: x.italic,
|
|
87
|
+
items: x.items,
|
|
88
|
+
newWindow: x.newWindow,
|
|
89
|
+
title: x.title,
|
|
90
|
+
unsafeUrl: x.unsafeUrl,
|
|
91
|
+
url: x.url
|
|
92
|
+
};
|
|
93
|
+
}) : null;
|
|
94
|
+
if (outline) {
|
|
95
|
+
await this.setOutlinePageNumbers(pdfDocument, outline);
|
|
96
|
+
}
|
|
97
|
+
this.documentOutline = outline;
|
|
98
|
+
this.outlineLoaded.next(this.documentOutline);
|
|
99
|
+
const pdfMetaData = await pdfDocument.getMetadata();
|
|
100
|
+
this.setCurrentPDFTitle(pdfMetaData.info?.Title);
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
this.documentLoadFailed.next(e);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
createLoadingTask(documentUrl) {
|
|
107
|
+
return pdfjsLib.getDocument({
|
|
108
|
+
url: documentUrl,
|
|
109
|
+
cMapUrl: 'assets/minified/cmaps',
|
|
110
|
+
cMapPacked: true,
|
|
111
|
+
withCredentials: true,
|
|
112
|
+
isEvalSupported: false
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
async setOutlinePageNumbers(pdfDocument, outlineArray) {
|
|
116
|
+
outlineArray.forEach(async (outline) => {
|
|
117
|
+
await this.setNestedOutlinePageNumbers(pdfDocument, outline);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async setNestedOutlinePageNumbers(pdfDocument, outline) {
|
|
121
|
+
outline.pageNumber = await this.getOutlinePageNumber(pdfDocument, outline);
|
|
122
|
+
outline.items.forEach(async (outlineItem) => {
|
|
123
|
+
outlineItem.pageNumber = await this.getOutlinePageNumber(pdfDocument, outlineItem);
|
|
124
|
+
this.setNestedOutlinePageNumbers(pdfDocument, outlineItem);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
async getOutlinePageNumber(pdfDocument, outline) {
|
|
128
|
+
const dest = outline.dest;
|
|
129
|
+
const pageIndex = await pdfDocument.getPageIndex(dest[0]);
|
|
130
|
+
return Number(pageIndex) + 1;
|
|
131
|
+
}
|
|
132
|
+
downloadFile(url, filename) {
|
|
133
|
+
this.downloadManager.downloadUrl(url, filename);
|
|
134
|
+
}
|
|
135
|
+
setPageNumber(pageNumber) {
|
|
136
|
+
this.pdfViewer.currentPageNumber = pageNumber;
|
|
137
|
+
}
|
|
138
|
+
getPageNumber() {
|
|
139
|
+
return this.pdfViewer.currentPageNumber;
|
|
140
|
+
}
|
|
141
|
+
changePageNumber(numPages) {
|
|
142
|
+
this.pdfViewer.currentPageNumber += numPages;
|
|
143
|
+
}
|
|
144
|
+
search(operation) {
|
|
145
|
+
const command = operation.reset ? 'find' : 'findagain';
|
|
146
|
+
this.pdfViewer.findController.executeCommand(command, {
|
|
147
|
+
query: operation.searchTerm,
|
|
148
|
+
phraseSearch: true,
|
|
149
|
+
caseSensitive: operation.matchCase,
|
|
150
|
+
entireWord: operation.wholeWord,
|
|
151
|
+
highlightAll: operation.highlightAll,
|
|
152
|
+
findPrevious: operation.previous,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
clearSearch() {
|
|
156
|
+
this.pdfViewer.eventBus.dispatch('findbarclose');
|
|
157
|
+
}
|
|
158
|
+
navigateTo(destination) {
|
|
159
|
+
if (destination instanceof Object) {
|
|
160
|
+
if (!destination[1].name.includes('XYZ')) {
|
|
161
|
+
destination[1] = { name: 'XYZ' };
|
|
162
|
+
destination[2] = destination[2] || null;
|
|
163
|
+
destination[3] = destination[3] || null;
|
|
164
|
+
}
|
|
165
|
+
destination[4] = this.zoomValue;
|
|
166
|
+
}
|
|
167
|
+
this.pdfViewer.linkService.navigateTo(destination);
|
|
168
|
+
}
|
|
169
|
+
setZoom(zoomValue) {
|
|
170
|
+
this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue);
|
|
171
|
+
this.zoomValue = this.pdfViewer.currentScaleValue;
|
|
172
|
+
this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);
|
|
173
|
+
}
|
|
174
|
+
stepZoom(zoomValue) {
|
|
175
|
+
this.pdfViewer.currentScaleValue = +this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue);
|
|
176
|
+
this.zoomValue = this.pdfViewer.currentScaleValue;
|
|
177
|
+
this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);
|
|
178
|
+
}
|
|
179
|
+
getZoomValue(zoomValue) {
|
|
180
|
+
if (isNaN(zoomValue)) {
|
|
181
|
+
return this.zoomValue;
|
|
182
|
+
}
|
|
183
|
+
if (zoomValue > 5) {
|
|
184
|
+
return 5;
|
|
185
|
+
}
|
|
186
|
+
if (zoomValue < 0.1) {
|
|
187
|
+
return 0.1;
|
|
188
|
+
}
|
|
189
|
+
return +zoomValue.toFixed(2);
|
|
190
|
+
}
|
|
191
|
+
rotate(rotation) {
|
|
192
|
+
return this.pdfViewer.pagesRotation = (this.pdfViewer.pagesRotation + rotation) % 360;
|
|
193
|
+
}
|
|
194
|
+
resetRotation(rotation) {
|
|
195
|
+
return this.pdfViewer.pagesRotation = rotation;
|
|
196
|
+
}
|
|
197
|
+
getNormalisedPagesRotation() {
|
|
198
|
+
return this.pdfViewer.pagesRotation;
|
|
199
|
+
}
|
|
200
|
+
getCurrentPDFZoomValue() {
|
|
201
|
+
return this.pdfViewer.currentScaleValue;
|
|
202
|
+
}
|
|
203
|
+
setCurrentPDFTitle(title) {
|
|
204
|
+
this.documentTitle = title;
|
|
205
|
+
}
|
|
206
|
+
getCurrentPDFTitle() {
|
|
207
|
+
return this.documentTitle;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWpzLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLWpzL3BkZi1qcy13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxRQUFRLE1BQU0sWUFBWSxDQUFDO0FBRXZDLE9BQU8sNkJBQTZCLENBQUM7QUFLckMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxpQ0FBaUMsQ0FBQztBQUUzRTs7R0FFRztBQUNILElBQUssU0FLSjtBQUxELFdBQUssU0FBUztJQUNaLDJDQUFTLENBQUE7SUFDVCxtREFBYSxDQUFBO0lBQ2IsK0NBQVcsQ0FBQTtJQUNYLCtDQUFXLENBQUE7QUFDYixDQUFDLEVBTEksU0FBUyxLQUFULFNBQVMsUUFLYjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBTXZCLFlBQ21CLFNBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLGFBQWtDLEVBQ25DLGdCQUFpQyxFQUNqQyxvQkFBbUQsRUFDbkQsY0FBNEIsRUFDNUIsYUFBaUMsRUFDakMsa0JBQWtDLEVBQ2xDLFlBQWtDLEVBQ2xDLGVBQW1EO1FBVGxELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0I7UUFDbkQsbUJBQWMsR0FBZCxjQUFjLENBQWM7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBQ2pDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZ0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFvQztRQUVuRSxJQUFJLENBQUMsU0FBUyxDQUFD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QUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dGxpbmUgfSBmcm9tICcuLy4uL3NpZGUtYmFyL291dGxpbmUtaXRlbS9vdXRsaW5lLm1vZGVsJztcbmltcG9ydCB7IFJlZGFjdGlvblNlYXJjaCB9IGZyb20gJy4vLi4vLi4vLi4vdG9vbGJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLm1vZGVsJztcbmltcG9ydCAqIGFzIHBkZmpzTGliIGZyb20gJ3BkZmpzLWRpc3QnO1xuaW1wb3J0IHsgRG93bmxvYWRNYW5hZ2VyLCBQREZWaWV3ZXIgfSBmcm9tICdwZGZqcy1kaXN0L3dlYi9wZGZfdmlld2VyJztcbmltcG9ydCAncGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlYXJjaE9wZXJhdGlvbiwgU2VhcmNoUmVzdWx0c0NvdW50LCBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGRmUG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9kb2N1bWVudC5yZWR1Y2VyJztcblxucGRmanNMaWIuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmMgPSAnL2Fzc2V0cy9idWlsZC9wZGYud29ya2VyLm1pbi5qcyc7XG5cbi8qKlxuICogVmFsdWVzIG9mIHRoZSBzdGF0ZSBmaWVsZCByZXR1cm5lZCBieSB0aGUgZmluZCBldmVudHNcbiAqL1xuZW51bSBGaW5kU3RhdGUge1xuICBGT1VORCA9IDAsXG4gIE5PVF9GT1VORCA9IDEsXG4gIFdSQVBQRUQgPSAyLFxuICBQRU5ESU5HID0gMyxcbn1cblxuZXhwb3J0IGNsYXNzIFBkZkpzV3JhcHBlciB7XG5cbiAgcHJpdmF0ZSB6b29tVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBkb2N1bWVudFRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgZG9jdW1lbnRPdXRsaW5lOiBPdXRsaW5lW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZGZWaWV3ZXI6IFBERlZpZXdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvd25sb2FkTWFuYWdlcjogRG93bmxvYWRNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRMb2FkSW5pdDogU3ViamVjdDxzdHJpbmc+LFxuICAgIHB1YmxpYyByZWFkb25seSBkb2N1bWVudExvYWRQcm9ncmVzczogU3ViamVjdDxEb2N1bWVudExvYWRQcm9ncmVzcz4sXG4gICAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50TG9hZGVkOiBTdWJqZWN0PGFueT4sXG4gICAgcHVibGljIHJlYWRvbmx5IG91dGxpbmVMb2FkZWQ6IFN1YmplY3Q8T3V0bGluZVtdPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRMb2FkRmFpbGVkOiBTdWJqZWN0PEVycm9yPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFnZVJlbmRlcmVkOiBTdWJqZWN0PFBhZ2VFdmVudFtdPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9zaXRpb25VcGRhdGVkOiBTdWJqZWN0PHsgbG9jYXRpb246IFBkZlBvc2l0aW9uIH0+XG4gICkge1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCd1cGRhdGV2aWV3YXJlYScsIGUgPT4gcG9zaXRpb25VcGRhdGVkLm5leHQoZSkpO1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdwYWdlY2hhbmdpbmcnLCBlID0+IHRoaXMudG9vbGJhckV2ZW50cy5zZXRDdXJyZW50UGFnZUlucHV0VmFsdWVTdWJqZWN0Lm5leHQoZS5wYWdlTnVtYmVyKSk7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMub24oJ3BhZ2VzaW5pdCcsICgpID0+IHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlID0gJzEnKTtcblxuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdwYWdlcmVuZGVyZWQnLCBlID0+IHsgfSk7IC8vIG5vdCB1c2VkIGxlZnQgZm9yIGZ1dHVyZSBjb252ZW5pZW5jZVxuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdwYWdlc2xvYWRlZCcsIChlKSA9PiB0aGlzLmVtaXREb2N1bWVudEluZm8oZSkpO1xuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCdzY2FsZWNoYW5naW5nJywgKGUpID0+IHRoaXMuZW1pdERvY3VtZW50SW5mbyhlKSk7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMub24oJ3JvdGF0aW9uY2hhbmdpbmcnLCAoZSkgPT4gdGhpcy5lbWl0RG9jdW1lbnRJbmZvKGUpKTtcblxuICAgIHRoaXMucGRmVmlld2VyLmV2ZW50QnVzLm9uKCd1cGRhdGVmaW5kY29udHJvbHN0YXRlJywgZXZlbnQgPT4ge1xuICAgICAgdGhpcy5zZW5kU2VhcmNoRGV0YWlscyhldmVudCk7XG4gICAgfSk7XG4gICAgdGhpcy5wZGZWaWV3ZXIuZXZlbnRCdXMub24oJ3VwZGF0ZWZpbmRtYXRjaGVzY291bnQnLCBldmVudCA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSB7IC4uLmV2ZW50Lm1hdGNoZXNDb3VudCwgaXNQcmV2aW91czogZXZlbnQ/LnNvdXJjZT8uc3RhdGU/LmZpbmRQcmV2aW91cyB9IGFzIFNlYXJjaFJlc3VsdHNDb3VudFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaFJlc3VsdHNDb3VudFN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgIH0pO1xuICAgIHRoaXMuem9vbVZhbHVlID0gMTtcbiAgfVxuXG4gIHNlbmRTZWFyY2hEZXRhaWxzKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQuc3RhdGUgIT09IEZpbmRTdGF0ZS5QRU5ESU5HKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB7IC4uLmV2ZW50Lm1hdGNoZXNDb3VudCwgaXNQcmV2aW91czogZXZlbnQ/LnNvdXJjZT8uc3RhdGU/LmZpbmRQcmV2aW91cyB9IGFzIFNlYXJjaFJlc3VsdHNDb3VudFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaFJlc3VsdHNDb3VudFN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgaWYgKGV2ZW50Py5zb3VyY2U/LnNlbGVjdGVkPy5wYWdlSWR4ICE9PSAtMSAmJiBldmVudC5tYXRjaGVzQ291bnQudG90YWwgPiAwKSB7XG4gICAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3Rpb25TZXJhY2hTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIHBhZ2U6IGV2ZW50Py5zb3VyY2U/LnNlbGVjdGVkPy5wYWdlSWR4LFxuICAgICAgICAgIG1hdGNoZWRJbmRleDogZXZlbnQ/LnNvdXJjZT8uc2VsZWN0ZWQ/Lm1hdGNoSWR4LFxuICAgICAgICAgIG1hdGNoZXNDb3VudDogZXZlbnQubWF0Y2hlc0NvdW50LnRvdGFsXG4gICAgICAgIH0gYXMgUmVkYWN0aW9uU2VhcmNoXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RG9jdW1lbnRJbmZvKGUpIHtcbiAgICBjb25zdCBhbGxQYWdlczogUGFnZUV2ZW50W10gPSBbLi4udGhpcy5wZGZWaWV3ZXIuX3BhZ2VzXS5tYXAocGFnZSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHBhZ2UuZGl2LFxuICAgICAgICBzY2FsZTogcGFnZS5zY2FsZSxcbiAgICAgICAgcm90YXRpb246IHBhZ2Uucm90YXRpb24sXG4gICAgICAgIGlkOiBwYWdlLmlkLFxuICAgICAgICB2aWV3cG9ydFNjYWxlOiBwYWdlLnZpZXdwb3J0LnNjYWxlXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMucGFnZVJlbmRlcmVkLm5leHQoYWxsUGFnZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWREb2N1bWVudChkb2N1bWVudFVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9hZGluZ1Rhc2sgPSB0aGlzLmNyZWF0ZUxvYWRpbmdUYXNrKGRvY3VtZW50VXJsKTtcblxuICAgIGxvYWRpbmdUYXNrLm9uUHJvZ3Jlc3MgPSAoeyBsb2FkZWQsIHRvdGFsIH0pID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMb2FkUHJvZ3Jlc3MubmV4dCh7IGxvYWRlZCwgdG90YWwgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuZG9jdW1lbnRMb2FkSW5pdC5uZXh0KGRvY3VtZW50VXJsKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwZGZEb2N1bWVudCA9IGF3YWl0IGxvYWRpbmdUYXNrLnByb21pc2U7XG4gICAgICB0aGlzLmRvY3VtZW50TG9hZGVkLm5leHQocGRmRG9jdW1lbnQpO1xuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnBhZ2VDb3VudFN1YmplY3QubmV4dChwZGZEb2N1bWVudC5udW1QYWdlcyk7XG5cbiAgICAgIHRoaXMucGRmVmlld2VyLnNldERvY3VtZW50KHBkZkRvY3VtZW50KTtcbiAgICAgIHRoaXMucGRmVmlld2VyLmxpbmtTZXJ2aWNlLnNldERvY3VtZW50KHBkZkRvY3VtZW50LCBudWxsKTtcblxuICAgICAgY29uc3Qgb3V0bGluZU5vZGUgPSBhd2FpdCBwZGZEb2N1bWVudC5nZXRPdXRsaW5lKCk7XG4gICAgICBjb25zdCBvdXRsaW5lID0gb3V0bGluZU5vZGUgPyBvdXRsaW5lTm9kZS5tYXAoeCA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYm9sZDogeC5ib2xkLFxuICAgICAgICAgIGNvbG9yOiB4LmNvbG9yLFxuICAgICAgICAgIGNvdW50OiB4LmNvdW50LFxuICAgICAgICAgIGRlc3Q6IHguZGVzdCxcbiAgICAgICAgICBpdGFsaWM6IHguaXRhbGljLFxuICAgICAgICAgIGl0ZW1zOiB4Lml0ZW1zLFxuICAgICAgICAgIG5ld1dpbmRvdzogeC5uZXdXaW5kb3csXG4gICAgICAgICAgdGl0bGU6IHgudGl0bGUsXG4gICAgICAgICAgdW5zYWZlVXJsOiB4LnVuc2FmZVVybCxcbiAgICAgICAgICB1cmw6IHgudXJsXG4gICAgICAgIH0gYXMgT3V0bGluZVxuICAgICAgfSkgOiBudWxsO1xuXG5cblxuICAgICAgaWYgKG91dGxpbmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRPdXRsaW5lUGFnZU51bWJlcnMocGRmRG9jdW1lbnQsIG91dGxpbmUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRvY3VtZW50T3V0bGluZSA9IG91dGxpbmU7XG4gICAgICB0aGlzLm91dGxpbmVMb2FkZWQubmV4dCh0aGlzLmRvY3VtZW50T3V0bGluZSk7XG4gICAgICBjb25zdCBwZGZNZXRhRGF0YSA9IGF3YWl0IHBkZkRvY3VtZW50LmdldE1ldGFkYXRhKCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRQREZUaXRsZSgocGRmTWV0YURhdGEuaW5mbyBhcyBhbnkpPy5UaXRsZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5kb2N1bWVudExvYWRGYWlsZWQubmV4dChlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxvYWRpbmdUYXNrKGRvY3VtZW50VXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGRmanNMaWIuZ2V0RG9jdW1lbnQoe1xuICAgICAgdXJsOiBkb2N1bWVudFVybCxcbiAgICAgIGNNYXBVcmw6ICdhc3NldHMvbWluaWZpZWQvY21hcHMnLFxuICAgICAgY01hcFBhY2tlZDogdHJ1ZSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIGlzRXZhbFN1cHBvcnRlZDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0T3V0bGluZVBhZ2VOdW1iZXJzKHBkZkRvY3VtZW50LCBvdXRsaW5lQXJyYXk6IE91dGxpbmVbXSkge1xuICAgIG91dGxpbmVBcnJheS5mb3JFYWNoKGFzeW5jIChvdXRsaW5lOiBPdXRsaW5lKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnNldE5lc3RlZE91dGxpbmVQYWdlTnVtYmVycyhwZGZEb2N1bWVudCwgb3V0bGluZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldE5lc3RlZE91dGxpbmVQYWdlTnVtYmVycyhwZGZEb2N1bWVudCwgb3V0bGluZTogT3V0bGluZSkge1xuICAgIG91dGxpbmUucGFnZU51bWJlciA9IGF3YWl0IHRoaXMuZ2V0T3V0bGluZVBhZ2VOdW1iZXIocGRmRG9jdW1lbnQsIG91dGxpbmUpO1xuICAgIG91dGxpbmUuaXRlbXMuZm9yRWFjaChhc3luYyAob3V0bGluZUl0ZW06IE91dGxpbmUpID0+IHtcbiAgICAgIG91dGxpbmVJdGVtLnBhZ2VOdW1iZXIgPSBhd2FpdCB0aGlzLmdldE91dGxpbmVQYWdlTnVtYmVyKHBkZkRvY3VtZW50LCBvdXRsaW5lSXRlbSk7XG4gICAgICB0aGlzLnNldE5lc3RlZE91dGxpbmVQYWdlTnVtYmVycyhwZGZEb2N1bWVudCwgb3V0bGluZUl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRPdXRsaW5lUGFnZU51bWJlcihwZGZEb2N1bWVudCwgb3V0bGluZTogT3V0bGluZSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZGVzdCA9IG91dGxpbmUuZGVzdDtcbiAgICBjb25zdCBwYWdlSW5kZXggPSBhd2FpdCBwZGZEb2N1bWVudC5nZXRQYWdlSW5kZXgoZGVzdFswXSk7XG4gICAgcmV0dXJuIE51bWJlcihwYWdlSW5kZXgpICsgMTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkTWFuYWdlci5kb3dubG9hZFVybCh1cmwsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQYWdlTnVtYmVyKHBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRQYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcbiAgfVxuICBwdWJsaWMgZ2V0UGFnZU51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBkZlZpZXdlci5jdXJyZW50UGFnZU51bWJlcjtcbiAgfVxuICBwdWJsaWMgY2hhbmdlUGFnZU51bWJlcihudW1QYWdlczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgKz0gbnVtUGFnZXM7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKG9wZXJhdGlvbjogU2VhcmNoT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgY29tbWFuZCA9IG9wZXJhdGlvbi5yZXNldCA/ICdmaW5kJyA6ICdmaW5kYWdhaW4nO1xuXG4gICAgdGhpcy5wZGZWaWV3ZXIuZmluZENvbnRyb2xsZXIuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCwge1xuICAgICAgcXVlcnk6IG9wZXJhdGlvbi5zZWFyY2hUZXJtLFxuICAgICAgcGhyYXNlU2VhcmNoOiB0cnVlLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogb3BlcmF0aW9uLm1hdGNoQ2FzZSxcbiAgICAgIGVudGlyZVdvcmQ6IG9wZXJhdGlvbi53aG9sZVdvcmQsXG4gICAgICBoaWdobGlnaHRBbGw6IG9wZXJhdGlvbi5oaWdobGlnaHRBbGwsXG4gICAgICBmaW5kUHJldmlvdXM6IG9wZXJhdGlvbi5wcmV2aW91cyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBkZlZpZXdlci5ldmVudEJ1cy5kaXNwYXRjaCgnZmluZGJhcmNsb3NlJyk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUbyhkZXN0aW5hdGlvbjogb2JqZWN0IHwgbnVtYmVyKSB7XG4gICAgaWYgKGRlc3RpbmF0aW9uIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICBpZiAoIWRlc3RpbmF0aW9uWzFdLm5hbWUuaW5jbHVkZXMoJ1hZWicpKSB7XG4gICAgICAgIGRlc3RpbmF0aW9uWzFdID0geyBuYW1lOiAnWFlaJyB9O1xuICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGRlc3RpbmF0aW9uWzJdIHx8IG51bGw7XG4gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gZGVzdGluYXRpb25bM10gfHwgbnVsbDtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9uWzRdID0gdGhpcy56b29tVmFsdWU7XG4gICAgfVxuICAgIHRoaXMucGRmVmlld2VyLmxpbmtTZXJ2aWNlLm5hdmlnYXRlVG8oZGVzdGluYXRpb24pO1xuICB9XG5cbiAgcHVibGljIHNldFpvb20oem9vbVZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSA9IHRoaXMuZ2V0Wm9vbVZhbHVlKHpvb21WYWx1ZSk7XG4gICAgdGhpcy56b29tVmFsdWUgPSB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZTtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC5uZXh0KHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGVwWm9vbSh6b29tVmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlID0gK3RoaXMuZ2V0Wm9vbVZhbHVlKCgrdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUpICsgem9vbVZhbHVlKTtcbiAgICB0aGlzLnpvb21WYWx1ZSA9IHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlO1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy56b29tVmFsdWVTdWJqZWN0Lm5leHQodGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRab29tVmFsdWUoem9vbVZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChpc05hTih6b29tVmFsdWUpKSB7IHJldHVybiB0aGlzLnpvb21WYWx1ZTsgfVxuICAgIGlmICh6b29tVmFsdWUgPiA1KSB7IHJldHVybiA1OyB9XG4gICAgaWYgKHpvb21WYWx1ZSA8IDAuMSkgeyByZXR1cm4gMC4xOyB9XG5cbiAgICByZXR1cm4gK3pvb21WYWx1ZS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgcHVibGljIHJvdGF0ZShyb3RhdGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wZGZWaWV3ZXIucGFnZXNSb3RhdGlvbiA9ICh0aGlzLnBkZlZpZXdlci5wYWdlc1JvdGF0aW9uICsgcm90YXRpb24pICUgMzYwO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Um90YXRpb24ocm90YXRpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGRmVmlld2VyLnBhZ2VzUm90YXRpb24gPSByb3RhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb3JtYWxpc2VkUGFnZXNSb3RhdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBkZlZpZXdlci5wYWdlc1JvdGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRQREZab29tVmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VycmVudFBERlRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvY3VtZW50VGl0bGUgPSB0aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50UERGVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudFRpdGxlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRMb2FkUHJvZ3Jlc3Mge1xuICBsb2FkZWQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlRXZlbnQge1xuICBkaXY6IG9iamVjdDtcbiAgc2NhbGU6IG51bWJlcjtcbiAgcm90YXRpb246IG51bWJlcjtcbiAgaWQ6IHN0cmluZztcbiAgdmlld3BvcnRTY2FsZTogbnVtYmVyO1xufVxuIl19
|
|
@@ -30,11 +30,11 @@ export class PdfJsWrapperFactory {
|
|
|
30
30
|
pdfWrapper() {
|
|
31
31
|
return this.pdfJsWrapper;
|
|
32
32
|
}
|
|
33
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PdfJsWrapperFactory, deps: [{ token: i1.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PdfJsWrapperFactory, providedIn: 'root' }); }
|
|
33
35
|
}
|
|
34
|
-
|
|
35
|
-
/** @nocollapse */ PdfJsWrapperFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdfJsWrapperFactory, providedIn: 'root' });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdfJsWrapperFactory, decorators: [{
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PdfJsWrapperFactory, decorators: [{
|
|
37
37
|
type: Injectable,
|
|
38
38
|
args: [{ providedIn: 'root' }]
|
|
39
|
-
}], ctorParameters:
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
}], ctorParameters: () => [{ type: i1.ToolbarEventService }] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWpzLXdyYXBwZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3BkZi12aWV3ZXIvcGRmLWpzL3BkZi1qcy13cmFwcGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxXQUFXLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQW1DLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU0vQixNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQTZCLGFBQWtDO1FBQWxDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUM3RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFxQjtRQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDO1lBQzFELFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQzFDLFNBQVMsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsY0FBYyxFQUFFLGlCQUFpQjtZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsa0JBQWtCLEVBQUUsaUJBQWlCO1lBQ3JDLGFBQWEsRUFBRSxDQUFDO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQ2xDLFNBQVMsRUFDVCxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQ25DLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksT0FBTyxFQUFVLEVBQ3JCLElBQUksT0FBTyxFQUF3QixFQUNuQyxJQUFJLE9BQU8sRUFBTyxFQUNsQixJQUFJLE9BQU8sRUFBYSxFQUN4QixJQUFJLE9BQU8sRUFBRSxFQUNiLElBQUksT0FBTyxFQUFlLEVBQzFCLElBQUksT0FBTyxFQUE2QixDQUN6QyxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7a0lBOUNVLG1CQUFtQjtzSUFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwZGZqc1ZpZXdlciBmcm9tICdwZGZqcy1kaXN0L3dlYi9wZGZfdmlld2VyJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50TG9hZFByb2dyZXNzLCBQYWdlRXZlbnQsIFBkZkpzV3JhcHBlciB9IGZyb20gJy4vcGRmLWpzLXdyYXBwZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE91dGxpbmUgfSBmcm9tICcuLi9zaWRlLWJhci9vdXRsaW5lLWl0ZW0vb3V0bGluZS5tb2RlbCc7XG5pbXBvcnQgeyBQZGZQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2RvY3VtZW50LnJlZHVjZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBkZkpzV3JhcHBlckZhY3Rvcnkge1xuXG4gIHByaXZhdGUgbGlua1NlcnZpY2U6IHBkZmpzVmlld2VyLlBERkxpbmtTZXJ2aWNlO1xuICBwcml2YXRlIGV2ZW50QnVzOiBwZGZqc1ZpZXdlci5FdmVudEJ1cztcbiAgcHJpdmF0ZSBwZGZKc1dyYXBwZXI6IFBkZkpzV3JhcHBlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UpIHtcbiAgICB0aGlzLmxpbmtTZXJ2aWNlID0gbmV3IHBkZmpzVmlld2VyLlBERkxpbmtTZXJ2aWNlKCk7XG4gICAgdGhpcy5ldmVudEJ1cyA9IG5ldyBwZGZqc1ZpZXdlci5FdmVudEJ1cygpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZShjb250YWluZXI6IEVsZW1lbnRSZWYpOiBQZGZKc1dyYXBwZXIge1xuICAgIGNvbnN0IHBkZkZpbmRDb250cm9sbGVyID0gbmV3IHBkZmpzVmlld2VyLlBERkZpbmRDb250cm9sbGVyKHtcbiAgICAgIGxpbmtTZXJ2aWNlOiB0aGlzLmxpbmtTZXJ2aWNlLFxuICAgICAgZXZlbnRCdXM6IHRoaXMuZXZlbnRCdXNcbiAgICB9KTtcblxuICAgIGNvbnN0IHBkZlZpZXdlciA9IG5ldyBwZGZqc1ZpZXdlci5QREZWaWV3ZXIoe1xuICAgICAgY29udGFpbmVyOiBjb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIGxpbmtTZXJ2aWNlOiB0aGlzLmxpbmtTZXJ2aWNlLFxuICAgICAgZmluZENvbnRyb2xsZXI6IHBkZkZpbmRDb250cm9sbGVyLFxuICAgICAgZXZlbnRCdXM6IHRoaXMuZXZlbnRCdXMsXG4gICAgICBpbWFnZVJlc291cmNlc1BhdGg6ICcvYXNzZXRzL2ltYWdlcy8nLFxuICAgICAgdGV4dExheWVyTW9kZTogMlxuICAgIH0pO1xuXG4gICAgdGhpcy5saW5rU2VydmljZS5zZXRWaWV3ZXIocGRmVmlld2VyKTtcblxuICAgIHRoaXMucGRmSnNXcmFwcGVyID0gbmV3IFBkZkpzV3JhcHBlcihcbiAgICAgIHBkZlZpZXdlcixcbiAgICAgIG5ldyBwZGZqc1ZpZXdlci5Eb3dubG9hZE1hbmFnZXIoe30pLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLFxuICAgICAgbmV3IFN1YmplY3Q8c3RyaW5nPigpLFxuICAgICAgbmV3IFN1YmplY3Q8RG9jdW1lbnRMb2FkUHJvZ3Jlc3M+KCksXG4gICAgICBuZXcgU3ViamVjdDxhbnk+KCksXG4gICAgICBuZXcgU3ViamVjdDxPdXRsaW5lW10+KCksXG4gICAgICBuZXcgU3ViamVjdCgpLFxuICAgICAgbmV3IFN1YmplY3Q8UGFnZUV2ZW50W10+KCksXG4gICAgICBuZXcgU3ViamVjdDx7IGxvY2F0aW9uOiBQZGZQb3NpdGlvbiB9PigpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnBkZkpzV3JhcHBlcjtcbiAgfVxuXG4gIHBkZldyYXBwZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGRmSnNXcmFwcGVyO1xuICB9XG59XG4iXX0=
|