@hmcts/annotation-ui-lib
Version:
PDF Viewer and ability to highlight text with and comment tracking
208 lines • 17.4 kB
JavaScript
/**
* @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==