UNPKG

@hmcts/annotation-ui-lib

Version:

PDF Viewer and ability to highlight text with and comment tracking

208 lines 17.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ComponentFactoryResolver, Injectable } from '@angular/core'; import { UrlFixerService } from '../data/url-fixer.service'; import { AnnotationStoreService } from '../data/annotation-store.service'; import { ImageViewerComponent } from './image-viewer/image-viewer.component'; import { UnsupportedViewerComponent } from './unsupported-viewer/unsupported-viewer.component'; import { AnnotationPdfViewerComponent } from './annotation-pdf-viewer/annotation-pdf-viewer.component'; import { EmLoggerService } from '../logging/em-logger.service'; var ViewerFactoryService = /** @class */ (function () { function ViewerFactoryService(componentFactoryResolver, annotationStoreService, urlFixer, log) { this.componentFactoryResolver = componentFactoryResolver; this.annotationStoreService = annotationStoreService; this.urlFixer = urlFixer; this.log = log; this.log.setClass('ViewerFactoryService'); } /** * @private * @param {?} mimeType * @return {?} */ ViewerFactoryService.determineComponent = /** * @private * @param {?} mimeType * @return {?} */ function (mimeType) { if (ViewerFactoryService.isImage(mimeType)) { return ImageViewerComponent; } return UnsupportedViewerComponent; }; /** * @private * @param {?} mimeType * @return {?} */ ViewerFactoryService.isImage = /** * @private * @param {?} mimeType * @return {?} */ function (mimeType) { return mimeType.startsWith('image/') || mimeType === 'image'; }; /** * @private * @param {?} mimeType * @return {?} */ ViewerFactoryService.isPdf = /** * @private * @param {?} mimeType * @return {?} */ function (mimeType) { return mimeType === 'application/pdf' || mimeType === 'pdf'; }; /** * @param {?} documentMetaData * @return {?} */ ViewerFactoryService.prototype.getDocumentId = /** * @param {?} documentMetaData * @return {?} */ function (documentMetaData) { /** @type {?} */ var docArray = documentMetaData._links.self.href.split('/'); return docArray[docArray.length - 1]; }; /** * @param {?} viewContainerRef * @param {?} contentType * @param {?} url * @param {?} baseUrl * @param {?} originalUrl * @param {?} annotate * @param {?} annotationSet * @param {?} rotate * @return {?} */ ViewerFactoryService.prototype.buildComponent = /** * @param {?} viewContainerRef * @param {?} contentType * @param {?} url * @param {?} baseUrl * @param {?} originalUrl * @param {?} annotate * @param {?} annotationSet * @param {?} rotate * @return {?} */ function (viewContainerRef, contentType, url, baseUrl, originalUrl, annotate, annotationSet, rotate) { if (ViewerFactoryService.isPdf(contentType) && annotate) { this.log.info('Selected pdf viewer with annotations enabled'); return this.buildAnnotateUi(url, viewContainerRef, baseUrl, annotate, annotationSet, rotate); } else if (ViewerFactoryService.isPdf(contentType) && !annotate) { this.log.info('Selected pdf viewer with annotations disabled'); return this.buildAnnotateUi(url, viewContainerRef, baseUrl, annotate, null, rotate); } else if (ViewerFactoryService.isImage(contentType)) { this.log.info('Selected image viewer'); return this.createComponent(ImageViewerComponent, viewContainerRef, originalUrl, url, rotate); } else { this.log.info('Unsupported type for viewer'); return this.createComponent(UnsupportedViewerComponent, viewContainerRef, originalUrl, url); } }; /** * @param {?} url * @param {?} viewContainerRef * @param {?} baseUrl * @param {?} annotate * @param {?} annotationSet * @param {?} rotate * @return {?} */ ViewerFactoryService.prototype.buildAnnotateUi = /** * @param {?} url * @param {?} viewContainerRef * @param {?} baseUrl * @param {?} annotate * @param {?} annotationSet * @param {?} rotate * @return {?} */ function (url, viewContainerRef, baseUrl, annotate, annotationSet, rotate) { viewContainerRef.clear(); /** @type {?} */ var componentFactory = this.componentFactoryResolver.resolveComponentFactory(AnnotationPdfViewerComponent); /** @type {?} */ var componentRef = viewContainerRef.createComponent(componentFactory); componentRef.instance.annotate = annotate; componentRef.instance.annotationSet = annotationSet; componentRef.instance.outputDmDocumentId = null; // '4fbdde23-e9a7-4843-b6c0-24d5bf2140ab'; componentRef.instance.baseUrl = baseUrl; componentRef.instance.url = url; componentRef.instance.rotate = rotate; return componentRef.instance; }; /** * @param {?} component * @param {?} viewContainerRef * @param {?} originalUrl * @param {?} url * @param {?=} rotate * @return {?} */ ViewerFactoryService.prototype.createComponent = /** * @param {?} component * @param {?} viewContainerRef * @param {?} originalUrl * @param {?} url * @param {?=} rotate * @return {?} */ function (component, viewContainerRef, originalUrl, url, rotate) { /** @type {?} */ var componentFactory = this.componentFactoryResolver.resolveComponentFactory(component); viewContainerRef.clear(); /** @type {?} */ var componentRef = viewContainerRef.createComponent(componentFactory); componentRef.instance.originalUrl = originalUrl; componentRef.instance.url = url; componentRef.instance.rotate = rotate; return componentRef.instance; }; ViewerFactoryService.decorators = [ { type: Injectable } ]; ViewerFactoryService.ctorParameters = function () { return [ { type: ComponentFactoryResolver }, { type: AnnotationStoreService }, { type: UrlFixerService }, { type: EmLoggerService } ]; }; return ViewerFactoryService; }()); export { ViewerFactoryService }; if (false) { /** * @type {?} * @private */ ViewerFactoryService.prototype.componentFactoryResolver; /** * @type {?} * @private */ ViewerFactoryService.prototype.annotationStoreService; /** * @type {?} * @private */ ViewerFactoryService.prototype.urlFixer; /** * @type {?} * @private */ ViewerFactoryService.prototype.log; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLWZhY3Rvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9hbm5vdGF0aW9uLXVpLWxpYi8iLCJzb3VyY2VzIjpbImxpYi92aWV3ZXJzL3ZpZXdlci1mYWN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyx3QkFBd0IsRUFBZ0IsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFL0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9EO0lBR0ksOEJBQW9CLHdCQUFrRCxFQUNsRCxzQkFBOEMsRUFDOUMsUUFBeUIsRUFDekIsR0FBb0I7UUFIcEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLFFBQUcsR0FBSCxHQUFHLENBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7Ozs7O0lBRWMsdUNBQWtCOzs7OztJQUFqQyxVQUFrQyxRQUFnQjtRQUM5QyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLDBC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Y3RvcnlSZXNvbHZlciwgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVybEZpeGVyU2VydmljZSB9IGZyb20gJy4uL2RhdGEvdXJsLWZpeGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ub3RhdGlvblN0b3JlU2VydmljZSB9IGZyb20gJy4uL2RhdGEvYW5ub3RhdGlvbi1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEltYWdlVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS12aWV3ZXIvaW1hZ2Utdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vdW5zdXBwb3J0ZWQtdmlld2VyL3Vuc3VwcG9ydGVkLXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUFubm90YXRpb25TZXQgfSBmcm9tICcuLi9kYXRhL2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IEFubm90YXRpb25QZGZWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2Fubm90YXRpb24tcGRmLXZpZXdlci9hbm5vdGF0aW9uLXBkZi12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVtTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvZW0tbG9nZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld2VyRmFjdG9yeVNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGFubm90YXRpb25TdG9yZVNlcnZpY2U6IEFubm90YXRpb25TdG9yZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSB1cmxGaXhlcjogVXJsRml4ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgbG9nOiBFbUxvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sb2cuc2V0Q2xhc3MoJ1ZpZXdlckZhY3RvcnlTZXJ2aWNlJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZGV0ZXJtaW5lQ29tcG9uZW50KG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKFZpZXdlckZhY3RvcnlTZXJ2aWNlLmlzSW1hZ2UobWltZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VWaWV3ZXJDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFVuc3VwcG9ydGVkVmlld2VyQ29tcG9uZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzSW1hZ2UobWltZVR5cGU6IFN0cmluZykge1xuICAgICAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgbWltZVR5cGUgPT09ICdpbWFnZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNQZGYobWltZVR5cGU6IFN0cmluZykge1xuICAgICAgICByZXR1cm4gbWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYnIHx8IG1pbWVUeXBlID09PSAncGRmJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRJZChkb2N1bWVudE1ldGFEYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZG9jQXJyYXkgPSBkb2N1bWVudE1ldGFEYXRhLl9saW5rcy5zZWxmLmhyZWYuc3BsaXQoJy8nKTtcbiAgICAgICAgcmV0dXJuIGRvY0FycmF5W2RvY0FycmF5Lmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIGJ1aWxkQ29tcG9uZW50KHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIGNvbnRlbnRUeXBlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICB1cmw6IHN0cmluZywgYmFzZVVybDogc3RyaW5nLCBvcmlnaW5hbFVybDogc3RyaW5nLCBhbm5vdGF0ZTogYm9vbGVhbiwgYW5ub3RhdGlvblNldDogYW55LCByb3RhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKFZpZXdlckZhY3RvcnlTZXJ2aWNlLmlzUGRmKGNvbnRlbnRUeXBlKSAmJiBhbm5vdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2cuaW5mbygnU2VsZWN0ZWQgcGRmIHZpZXdlciB3aXRoIGFubm90YXRpb25zIGVuYWJsZWQnKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQW5ub3RhdGVVaSh1cmwsIHZpZXdDb250YWluZXJSZWYsIGJhc2VVcmwsIGFubm90YXRlLCBhbm5vdGF0aW9uU2V0LCByb3RhdGUpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoVmlld2VyRmFjdG9yeVNlcnZpY2UuaXNQZGYoY29udGVudFR5cGUpICYmICFhbm5vdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2cuaW5mbygnU2VsZWN0ZWQgcGRmIHZpZXdlciB3aXRoIGFubm90YXRpb25zIGRpc2FibGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFubm90YXRlVWkodXJsLCB2aWV3Q29udGFpbmVyUmVmLCBiYXNlVXJsLCBhbm5vdGF0ZSwgbnVsbCwgcm90YXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChWaWV3ZXJGYWN0b3J5U2VydmljZS5pc0ltYWdlKGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5sb2cuaW5mbygnU2VsZWN0ZWQgaW1hZ2Ugdmlld2VyJyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21wb25lbnQoSW1hZ2VWaWV3ZXJDb21wb25lbnQsIHZpZXdDb250YWluZXJSZWYsIG9yaWdpbmFsVXJsLCB1cmwsIHJvdGF0ZSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9nLmluZm8oJ1Vuc3VwcG9ydGVkIHR5cGUgZm9yIHZpZXdlcicpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tcG9uZW50KFVuc3VwcG9ydGVkVmlld2VyQ29tcG9uZW50LCB2aWV3Q29udGFpbmVyUmVmLCBvcmlnaW5hbFVybCwgdXJsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkQW5ub3RhdGVVaSh1cmw6IGFueSwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBhbm5vdGF0ZTogYm9vbGVhbiwgYW5ub3RhdGlvblNldDogSUFubm90YXRpb25TZXQsIHJvdGF0ZTogYm9vbGVhbik6IENvbXBvbmVudFJlZjxhbnk+WydpbnN0YW5jZSddIHtcblxuICAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEFubm90YXRpb25QZGZWaWV3ZXJDb21wb25lbnQpO1xuXG4gICAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYW5ub3RhdGUgPSBhbm5vdGF0ZTtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5hbm5vdGF0aW9uU2V0ID0gYW5ub3RhdGlvblNldDtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vdXRwdXREbURvY3VtZW50SWQgPSBudWxsOyAvLyAnNGZiZGRlMjMtZTlhNy00ODQzLWI2YzAtMjRkNWJmMjE0MGFiJztcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5iYXNlVXJsID0gYmFzZVVybDtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS51cmwgPSB1cmw7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uucm90YXRlID0gcm90YXRlO1xuXG4gICAgICByZXR1cm4gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQ6IGFueSwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgb3JpZ2luYWxVcmw6IHN0cmluZywgdXJsOiBzdHJpbmcsIHJvdGF0ZT86IGJvb2xlYW4pIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uub3JpZ2luYWxVcmwgPSBvcmlnaW5hbFVybDtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS51cmwgPSB1cmw7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uucm90YXRlID0gcm90YXRlO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbn1cbiJdfQ==