@hmcts/media-viewer 2.8.1 → 2.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hmcts-media-viewer.umd.js +7 -5
- package/bundles/hmcts-media-viewer.umd.js.map +1 -1
- package/bundles/hmcts-media-viewer.umd.min.js +1 -1
- package/bundles/hmcts-media-viewer.umd.min.js.map +1 -1
- package/esm2015/lib/media-viewer.component.js +8 -6
- package/esm5/lib/media-viewer.component.js +8 -6
- package/fesm2015/hmcts-media-viewer.js +7 -5
- package/fesm2015/hmcts-media-viewer.js.map +1 -1
- package/fesm5/hmcts-media-viewer.js +7 -5
- package/fesm5/hmcts-media-viewer.js.map +1 -1
- package/hmcts-media-viewer-v2.8.2.tgz +0 -0
- package/hmcts-media-viewer.metadata.json +1 -1
- package/lib/media-viewer.component.d.ts +1 -0
- package/package.json +1 -1
- package/hmcts-media-viewer-v2.8.1.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmcts-media-viewer.js","sources":["ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.ts","ng://@hmcts/media-viewer/lib/toolbar/icp-event.service.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar-event.service.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ts","ng://@hmcts/media-viewer/lib/print.service.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-exception.model.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar-button-visibility.service.ts","ng://@hmcts/media-viewer/lib/store/actions/document.actions.ts","ng://@hmcts/media-viewer/lib/store/actions/tag.actions.ts","ng://@hmcts/media-viewer/lib/store/actions/icp.actions.ts","ng://@hmcts/media-viewer/lib/store/reducers/document.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/annotation.actions.ts","ng://@hmcts/media-viewer/lib/store/store-utils.ts","ng://@hmcts/media-viewer/lib/store/reducers/annotations.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/tags.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/bookmark.actions.ts","ng://@hmcts/media-viewer/lib/store/bookmarks-store-utils.ts","ng://@hmcts/media-viewer/lib/store/reducers/bookmarks.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/redaction.actions.ts","ng://@hmcts/media-viewer/lib/store/reducers/redaction.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/icp.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/reducers.ts","ng://@hmcts/media-viewer/lib/store/selectors/document.selectors.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-event.service.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-viewer.component.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-util.service.ts","ng://@hmcts/media-viewer/lib/viewers/image-viewer/image-viewer.component.ts","ng://@hmcts/media-viewer/lib/viewers/unsupported-viewer/unsupported-viewer.component.ts","ng://@hmcts/media-viewer/lib/annotations/services/annotation-api/annotation-api.service.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/comment.service.ts","ng://@hmcts/media-viewer/lib/store/selectors/tag.selectors.ts","ng://@hmcts/media-viewer/lib/store/selectors/annotation.selectors.ts","ng://@hmcts/media-viewer/lib/media-viewer.component.ts","ng://@hmcts/media-viewer/lib/shared/util/services/number.helper.service.ts","ng://@hmcts/media-viewer/lib/toolbar/main-toolbar/main-toolbar.component.ts","ng://@hmcts/media-viewer/lib/toolbar/search-bar/search-bar.component.ts","ng://@hmcts/media-viewer/lib/store/selectors/redaction.selectors.ts","ng://@hmcts/media-viewer/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ts","ng://@hmcts/media-viewer/lib/store/selectors/icp.selectors.ts","ng://@hmcts/media-viewer/lib/toolbar/icp-toolbar/icp-toolbar.component.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar.module.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-view/annotation-view.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-set.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ts","ng://@hmcts/media-viewer/lib/annotations/services/tags/tags.services.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/comment.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-render.service.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ts","ng://@hmcts/media-viewer/lib/annotations/comments-summary/comments-summary.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ts","ng://@hmcts/media-viewer/lib/annotations/tags/tags.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/date/date.pipe.ts","ng://@hmcts/media-viewer/lib/annotations/services/bookmarks-api/bookmarks-api.service.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/filter/filter.pipe.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/unsnake/unsnake.pipe.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-date/gov-uk-date.component.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ts","ng://@hmcts/media-viewer/lib/shared/util/helpers/html-templates.helper.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-label/gov-uk-label.component.ts","ng://@hmcts/media-viewer/lib/shared/shared.module.ts","ng://@hmcts/media-viewer/lib/store/selectors/bookmark.selectors.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotations.module.ts","ng://@hmcts/media-viewer/lib/viewers/grab-n-drag.directive.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ts","ng://@hmcts/media-viewer/lib/redaction/components/redaction.component.ts","ng://@hmcts/media-viewer/lib/icp/icp-session-api.service.ts","ng://@hmcts/media-viewer/lib/icp/socket.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-update.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-presenter.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-follower.service.ts","ng://@hmcts/media-viewer/lib/icp/icp.service.ts","ng://@hmcts/media-viewer/lib/store/effects/annotation.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/bookmarks.effects.ts","ng://@hmcts/media-viewer/lib/redaction/services/redaction-api.service.ts","ng://@hmcts/media-viewer/lib/store/effects/redaction.effects.ts","ng://@hmcts/media-viewer/lib/viewers/convertible-content-viewer/document-conversion-api.service.ts","ng://@hmcts/media-viewer/lib/viewers/rotation-persist/rotation-api.service.ts","ng://@hmcts/media-viewer/lib/store/effects/document.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/icp.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/index.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ts","ng://@hmcts/media-viewer/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ts","ng://@hmcts/media-viewer/lib/icp/confirm-exit/confirm-action-dialog.component.ts","ng://@hmcts/media-viewer/lib/bookmark/components/bookmark-icons.component.ts","ng://@hmcts/media-viewer/lib/viewers/rotation-persist/rotation-persist.directive.ts","ng://@hmcts/media-viewer/lib/icp/participants-list/participants-list.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ts","ng://@hmcts/media-viewer/lib/viewers/multimedia-player/multimedia-player.component.ts","ng://@hmcts/media-viewer/lib/media-viewer.module.ts"],"sourcesContent":["import * as pdfjsLib from 'pdfjs-dist';\nimport { DownloadManager, PDFViewer } from 'pdfjs-dist/web/pdf_viewer';\nimport 'pdfjs-dist/build/pdf.worker';\nimport { Subject } from 'rxjs';\nimport { SearchOperation, ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Outline } from '../side-bar/outline-item/outline.model';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\npdfjsLib.GlobalWorkerOptions.workerSrc = '/assets/build/pdf.worker.min.js';\n\n/**\n * Values of the state field returned by the find events\n */\nenum FindState {\n FOUND = 0,\n NOT_FOUND = 1,\n WRAPPED = 2,\n PENDING = 3,\n}\n\nexport class PdfJsWrapper {\n\n private zoomValue: number;\n private documentTitle: string;\n private documentOutline: Outline;\n\n constructor(\n private readonly pdfViewer: PDFViewer,\n private readonly downloadManager: DownloadManager,\n private readonly toolbarEvents: ToolbarEventService,\n public readonly documentLoadInit: Subject<string>,\n public readonly documentLoadProgress: Subject<DocumentLoadProgress>,\n public readonly documentLoaded: Subject<any>,\n public readonly outlineLoaded: Subject<Outline>,\n public readonly documentLoadFailed: Subject<Error>,\n public readonly pageRendered: Subject<PageEvent[]>,\n public readonly positionUpdated: Subject<{ location: PdfPosition }>,\n ) {\n this.pdfViewer.eventBus.on('updateviewarea', e => positionUpdated.next(e));\n this.pdfViewer.eventBus.on('pagechanging', e => this.toolbarEvents.setCurrentPageInputValueSubject.next(e.pageNumber));\n this.pdfViewer.eventBus.on('pagesinit', () => this.pdfViewer.currentScaleValue = '1');\n\n this.pdfViewer.eventBus.on('pagerendered', e => {}); // not used left for future convenience\n this.pdfViewer.eventBus.on('pagesloaded', (e) => this.emitDocumentInfo(e));\n this.pdfViewer.eventBus.on('scalechanging', (e) => this.emitDocumentInfo(e));\n this.pdfViewer.eventBus.on('rotationchanging', (e) => this.emitDocumentInfo(e));\n\n this.pdfViewer.eventBus.on('updatefindcontrolstate', event => {\n if (event.state !== FindState.PENDING) {\n this.toolbarEvents.searchResultsCountSubject.next(event.matchesCount);\n }\n });\n this.pdfViewer.eventBus.on('updatefindmatchescount', event => {\n this.toolbarEvents.searchResultsCountSubject.next(event.matchesCount);\n });\n this.zoomValue = 1;\n }\n\n private emitDocumentInfo(e) {\n const allPages: PageEvent[] = [...this.pdfViewer._pages].map(page => {\n return {\n div: page.div,\n scale: page.scale,\n rotation: page.rotation,\n id: page.id,\n viewportScale: page.viewport.scale\n };\n });\n this.pageRendered.next(allPages);\n }\n\n public async loadDocument(documentUrl: string) {\n const loadingTask = pdfjsLib.getDocument({\n url: documentUrl,\n cMapUrl: 'assets/minified/cmaps',\n cMapPacked: true,\n withCredentials: true\n });\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.documentLoadProgress.next({ loaded, total });\n };\n\n this.documentLoadInit.next(documentUrl);\n\n try {\n const pdfDocument = await loadingTask.promise;\n this.documentLoaded.next(pdfDocument);\n this.toolbarEvents.pageCountSubject.next(pdfDocument.numPages);\n\n this.pdfViewer.setDocument(pdfDocument);\n this.pdfViewer.linkService.setDocument(pdfDocument, null);\n\n this.documentOutline = await pdfDocument.getOutline();\n this.outlineLoaded.next(this.documentOutline);\n const pdfMetaData = await pdfDocument.getMetadata();\n this.setCurrentPDFTitle(pdfMetaData.info.Title);\n } catch (e) {\n this.documentLoadFailed.next(e);\n }\n }\n\n public downloadFile(url: string, filename: string): void {\n this.downloadManager.downloadUrl(url, filename);\n }\n\n public setPageNumber(pageNumber: number): void {\n this.pdfViewer.currentPageNumber = pageNumber;\n }\n public getPageNumber(): number {\n return this.pdfViewer.currentPageNumber;\n }\n public changePageNumber(numPages: number): void {\n this.pdfViewer.currentPageNumber += numPages;\n }\n\n public search(operation: SearchOperation): void {\n const command = operation.reset ? 'find' : 'findagain';\n\n this.pdfViewer.findController.executeCommand(command, {\n query: operation.searchTerm,\n phraseSearch: true,\n caseSensitive: operation.matchCase,\n entireWord: operation.wholeWord,\n highlightAll: operation.highlightAll,\n findPrevious: operation.previous,\n });\n }\n\n public clearSearch(): void {\n this.pdfViewer.eventBus.dispatch('findbarclose');\n }\n\n public navigateTo(destination: object | number) {\n if (destination instanceof Object) {\n if (!destination[1].name.includes('XYZ')) {\n destination[1] = { name: 'XYZ' };\n destination[2] = destination[2] || null;\n destination[3] = destination[3] || null;\n }\n destination[4] = this.zoomValue;\n }\n this.pdfViewer.linkService.navigateTo(destination);\n }\n\n public setZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue);\n this.zoomValue = this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);\n }\n\n public stepZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = +this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue);\n this.zoomValue = this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);\n }\n\n private getZoomValue(zoomValue: number): number {\n if (isNaN(zoomValue)) { return this.zoomValue; }\n if (zoomValue > 5) { return 5; }\n if (zoomValue < 0.1) { return 0.1; }\n\n return +zoomValue.toFixed(2);\n }\n\n public rotate(rotation: number): number {\n return this.pdfViewer.pagesRotation = (this.pdfViewer.pagesRotation + rotation) % 360;\n }\n\n public resetRotation(rotation: number): number {\n return this.pdfViewer.pagesRotation = rotation;\n }\n\n public getNormalisedPagesRotation(): number {\n return this.pdfViewer.pagesRotation;\n }\n\n public getCurrentPDFZoomValue(): number {\n return this.pdfViewer.currentScaleValue;\n }\n\n public setCurrentPDFTitle(title: string) {\n this.documentTitle = title;\n }\n\n public getCurrentPDFTitle(): string {\n return this.documentTitle;\n }\n}\n\nexport interface DocumentLoadProgress {\n loaded: number;\n total: number;\n}\n\nexport interface PageEvent {\n div: object;\n scale: number;\n rotation: number;\n id: string;\n viewportScale: number;\n}\n","import { BehaviorSubject, Subject } from 'rxjs';\n\n export const enabled = new BehaviorSubject(false);\n export const sessionLaunch = new Subject();\n export const becomingPresenter = new Subject();\n export const stoppingPresenting = new Subject();\n export const leavingSession = new BehaviorSubject(false);\n export const sessionExitConfirmed = new Subject();\n export const participantsListVisible = new BehaviorSubject(false);\n\nexport const launchSession = () => {\n sessionLaunch.next();\n};\n\nexport const enable = () => {\n enabled.next(true);\n launchSession();\n};\n\nexport const becomePresenter = () => {\n becomingPresenter.next();\n};\n\nexport const stopPresenting = () => {\n stoppingPresenting.next();\n};\n\nexport const leaveSession = () => {\n leavingSession.next(true);\n};\n\nexport const confirmExit = () => {\n sessionExitConfirmed.next();\n participantsListVisible.next(false);\n enabled.next(false);\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport * as icpEvents from './icp-event.service';\nimport { participantsListVisible } from './icp-event.service';\n\n// Toolbar Custom-Event Types\nexport type HighlightMode = boolean;\nexport type DrawMode = boolean;\nexport interface SearchOperation {\n searchTerm: string;\n highlightAll: boolean;\n matchCase: boolean;\n wholeWord: boolean;\n previous: boolean;\n reset: boolean;\n}\nexport interface SearchResultsCount {\n current: number;\n total: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToolbarEventService {\n\n public readonly highlightModeSubject = new BehaviorSubject<HighlightMode>(false);\n public readonly drawModeSubject = new BehaviorSubject<DrawMode>(false);\n public readonly rotateSubject = new Subject<number>();\n public readonly searchSubject = new Subject<SearchOperation>();\n public readonly searchResultsCountSubject = new Subject<SearchResultsCount>();\n public readonly zoomSubject = new Subject<number>();\n public readonly stepZoomSubject = new Subject<number>();\n public readonly zoomValueSubject = new BehaviorSubject<number>(1);\n public readonly pageCountSubject = new Subject<number>();\n public readonly printSubject = new Subject();\n public readonly downloadSubject = new Subject();\n public readonly setCurrentPageSubject = new Subject<number>();\n public readonly setCurrentPageInputValueSubject = new Subject<number>();\n public readonly changePageByDeltaSubject = new Subject<number>();\n public readonly showCommentSummary = new BehaviorSubject<boolean>(false);\n public readonly grabNDrag = new BehaviorSubject<boolean>(false);\n public readonly saveRotationSubject = new Subject();\n\n public readonly redactionMode = new BehaviorSubject(false);\n public readonly redactionPreview = new Subject<boolean>();\n public readonly applyRedactToDocument = new Subject();\n public readonly clearAllRedactMarkers = new Subject();\n\n public readonly sidebarOpen = new BehaviorSubject(false);\n public readonly searchBarHidden = new BehaviorSubject(true);\n public readonly commentsPanelVisible = new BehaviorSubject(false);\n\n public readonly icp = icpEvents;\n\n\n /**\n * Reset the stateful behaviour subjects\n */\n public reset(): void {\n this.setCurrentPageSubject.next(1);\n this.zoomValueSubject.next(1);\n this.highlightModeSubject.next(false);\n this.drawModeSubject.next(false);\n this.showCommentSummary.next(false);\n }\n\n // Function to inform Observers that highlightMode has been enabled\n public toggleHighlightMode(): void {\n // Highlight and Draw states are mutually exclusive\n if (this.highlightModeSubject.getValue() === false) {\n this.drawModeSubject.next(false);\n this.highlightModeSubject.next(true);\n } else {\n this.highlightModeSubject.next(false);\n }\n }\n\n // Function to inform Observers that ToggleMode has been enabled\n public toggleDrawMode(): void {\n if (this.drawModeSubject.getValue() === false) {\n this.highlightModeSubject.next(false);\n this.drawModeSubject.next(true);\n } else {\n this.drawModeSubject.next(false);\n }\n }\n\n public rotate(angle: number): void {\n this.rotateSubject.next(angle);\n }\n\n public search(phrase: SearchOperation): void {\n this.searchSubject.next(phrase);\n }\n\n public getSearchResultsCount(): Observable<SearchResultsCount> {\n return this.searchResultsCountSubject.asObservable();\n }\n\n public zoom(value: number): void {\n this.zoomSubject.next(value);\n }\n\n public stepZoom(value: number): void {\n this.stepZoomSubject.next(value);\n }\n\n public getZoomValue(): Observable<number> {\n return this.zoomValueSubject.asObservable();\n }\n\n public getPageCount(): Observable<number> {\n return this.pageCountSubject.asObservable();\n }\n\n public print(): void {\n this.printSubject.next();\n }\n\n public download(): void {\n this.downloadSubject.next();\n }\n\n public setPage(value: number): void {\n this.setCurrentPageSubject.next(value);\n }\n\n public incrementPage(value: number): void {\n this.changePageByDeltaSubject.next(value);\n }\n\n public getCurrentPageNumber(): Observable<number> {\n return this.setCurrentPageInputValueSubject.asObservable();\n }\n\n public getShowCommentSummary(): Observable<boolean> {\n return this.showCommentSummary.asObservable();\n }\n\n public toggleCommentsSummary(value: boolean): void {\n this.showCommentSummary.next(value);\n }\n\n public saveRotation(): void {\n this.saveRotationSubject.next();\n }\n\n public toggleGrabNDrag(): void {\n this.grabNDrag.next(!this.grabNDrag.getValue());\n }\n\n toggleSideBar(toggle: boolean) {\n this.sidebarOpen.next(toggle);\n }\n\n public toggleRedactionMode(): void {\n this.redactionMode.next(!this.redactionMode.getValue());\n }\n\n public toggleRedactionPreview(viewMode: boolean): void {\n this.redactionPreview.next(viewMode);\n }\n\n public unmarkAll(): void {\n this.clearAllRedactMarkers.next();\n }\n\n public applyRedactionToDocument(): void {\n this.applyRedactToDocument.next();\n }\n\n public toggleCommentsPanel(isVisible: boolean) {\n if (isVisible) {\n this.toggleParticipantsList(!isVisible);\n }\n this.commentsPanelVisible.next(isVisible);\n }\n\n public toggleParticipantsList(isVisible: boolean) {\n if (isVisible) {\n this.toggleCommentsPanel(!isVisible);\n }\n this.icp.participantsListVisible.next(isVisible);\n }\n}\n","import * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer';\nimport { ElementRef, Injectable } from '@angular/core';\nimport {DocumentLoadProgress, PageEvent, PdfJsWrapper} from './pdf-js-wrapper';\nimport { Subject } from 'rxjs';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Outline } from '../side-bar/outline-item/outline.model';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\n@Injectable({providedIn: 'root'})\nexport class PdfJsWrapperFactory {\n\n private linkService: pdfjsViewer.PDFLinkService;\n private eventBus: pdfjsViewer.EventBus;\n private pdfJsWrapper: PdfJsWrapper;\n\n constructor(private readonly toolbarEvents: ToolbarEventService) {\n this.linkService = new pdfjsViewer.PDFLinkService();\n this.eventBus = new pdfjsViewer.EventBus();\n }\n\n public create(container: ElementRef): PdfJsWrapper {\n const pdfFindController = new pdfjsViewer.PDFFindController({\n linkService: this.linkService,\n eventBus: this.eventBus\n });\n\n const pdfViewer = new pdfjsViewer.PDFViewer({\n container: container.nativeElement,\n linkService: this.linkService,\n findController: pdfFindController,\n eventBus: this.eventBus,\n imageResourcesPath: '/assets/images/',\n textLayerMode: 2\n });\n\n this.linkService.setViewer(pdfViewer);\n\n this.pdfJsWrapper = new PdfJsWrapper(\n pdfViewer,\n new pdfjsViewer.DownloadManager({}),\n this.toolbarEvents,\n new Subject<string>(),\n new Subject<DocumentLoadProgress>(),\n new Subject<any>(),\n new Subject<Outline>(),\n new Subject(),\n new Subject<PageEvent[]>(),\n new Subject<{ location: PdfPosition }>()\n );\n\n return this.pdfJsWrapper;\n }\n\n pdfWrapper() {\n return this.pdfJsWrapper;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrintService {\n\n printDocumentNatively(url: string): void {\n const printWindow = window.open(url);\n printWindow.print();\n }\n\n printElementNatively(element: HTMLElement, width: number, height: number): void {\n const printWindow = window.open('', '', `left=0,top=0,width=${width},height=${height},toolbar=0,scrollbars=0,status=0`);\n\n printWindow.document.write(element.innerHTML);\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n printWindow.close();\n }\n}\n","export enum ResponseType {\n SUCCESS = 'SUCCESS',\n FAILURE = 'FAILURE',\n UNSUPPORTED = 'UNSUPPORTED'\n}\n\nexport interface ExceptionDetail {\n httpResponseCode?: string;\n message?: string;\n}\n\nexport class ViewerException {\n exceptionType?: string;\n detail?: ExceptionDetail;\n\n constructor(exceptionType?: string, detail?: ExceptionDetail) {\n this.exceptionType = exceptionType;\n this.detail = detail;\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class ToolbarButtonVisibilityService {\n\n public showPrint = false;\n public showDownload = false;\n public showNavigation = false;\n public showZoom = false;\n public showRotate = false;\n public showPresentationMode = false;\n public showRedact = false;\n public showOpenFile = false;\n public showBookmark = false;\n public showHighlightButton = false;\n public showDrawButton = false;\n public showSearchBar = false;\n public showSidebar = false;\n public showCommentSummary = false;\n public showGrabNDragButton = false;\n public showSaveRotationButton = false;\n\n /**\n * Reset the visibility of all buttons to false then set the value from the options\n */\n public setup(options: Partial<ToolbarButtonVisibilityService>): void {\n this.showPrint = false;\n this.showDownload = false;\n this.showNavigation = false;\n this.showZoom = false;\n this.showRotate = false;\n this.showPresentationMode = false;\n this.showRedact = false;\n this.showOpenFile = false;\n this.showBookmark = false;\n this.showHighlightButton = false;\n this.showDrawButton = false;\n this.showSearchBar = false;\n this.showSidebar = false;\n this.showCommentSummary = false;\n this.showGrabNDragButton = false;\n this.showSaveRotationButton = false;\n\n for (const key in options) {\n this[key] = options[key];\n }\n }\n}\n\n/**\n * Default toolbar state for the PDF viewer\n */\nexport const defaultPdfOptions = {\n showPrint: true,\n showDownload: true,\n showNavigation: true,\n showZoom: true,\n showRotate: true,\n showSearchBar: true,\n showSidebar: true,\n showGrabNDragButton: true,\n showCommentSummary: true,\n showPresentationMode: true,\n showRedact: true\n};\n\n/**\n * Default toolbar state for the image viewer\n */\nexport const defaultImageOptions = {\n showPrint: true,\n showDownload: true,\n showZoom: true,\n showRotate: true,\n showGrabNDragButton: true,\n showCommentSummary: true,\n showRedact: true\n};\n\n/**\n * Default toolbar state for multimedia\n */\nexport const defaultMultimediaOptions = {\n showDownload: true\n};\n\n/**\n * Default toolbar state for unsupported media\n */\nexport const defaultUnsupportedOptions = {\n showDownload: true,\n showPrint: true\n};\n","import { Action } from '@ngrx/store';\nimport { PageEvent } from '../../viewers/pdf-viewer/pdf-js/pdf-js-wrapper';\nimport { Rotation } from '../../viewers/rotation-persist/rotation.model';\nimport { PdfPosition } from '../reducers/document.reducer';\n\nexport const SET_DOCUMENT_ID = '[Document] Set Document Id';\nexport const POSITION_UPDATED = '[Document] Position Updated';\nexport const ADD_PAGES = '[Document] Add Pages';\nexport const CONVERT = '[Document] Convert';\nexport const CONVERT_SUCCESS = '[Document] Convert Success';\nexport const CONVERT_FAIL = '[Document] Convert Fail';\nexport const CLEAR_CONVERT_DOC_URL = '[Document] Clear Convert Doc Url';\n\nexport const LOAD_ROTATION = '[Document] Load Rotation';\nexport const LOAD_ROTATION_SUCCESS = '[Document] Load Rotation Success';\nexport const LOAD_ROTATION_FAIL = '[Document] Load Rotation Fail';\nexport const SAVE_ROTATION = '[Document] Save Rotation';\nexport const SAVE_ROTATION_SUCCESS = '[Document] Save Rotation Success';\nexport const SAVE_ROTATION_FAIL = '[Document] Save Rotation Fail';\n\nexport class SetDocumentId implements Action {\n readonly type = SET_DOCUMENT_ID;\n constructor(public payload: string) { }\n}\n\nexport class AddPages implements Action {\n readonly type = ADD_PAGES;\n constructor(public payload: PageEvent[]) { }\n}\n\nexport class PdfPositionUpdate implements Action {\n readonly type = POSITION_UPDATED;\n constructor(public payload: PdfPosition) {}\n}\n\nexport class Convert implements Action {\n readonly type = CONVERT;\n constructor(public payload: string ) {}\n}\n\nexport class ConvertSuccess implements Action {\n readonly type = CONVERT_SUCCESS;\n constructor(public payload: string ) {}\n}\n\nexport class ConvertFailure implements Action {\n readonly type = CONVERT_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class ClearConvertDocUrl implements Action {\n readonly type = CLEAR_CONVERT_DOC_URL;\n}\n\nexport class LoadRotation implements Action {\n readonly type = LOAD_ROTATION;\n constructor(public payload: string) {\n }\n}\n\nexport class LoadRotationSuccess implements Action {\n readonly type = LOAD_ROTATION_SUCCESS;\n constructor(public payload: { rotationAngle: number }) {\n }\n}\n\nexport class LoadRotationFailure implements Action {\n readonly type = LOAD_ROTATION_FAIL;\n constructor(public payload: Error) {\n }\n}\n\nexport class SaveRotation implements Action {\n readonly type = SAVE_ROTATION;\n constructor(public payload: Rotation) {\n }\n}\n\nexport class SaveRotationSuccess implements Action {\n readonly type = SAVE_ROTATION_SUCCESS;\n constructor(public payload: { rotationAngle: number }) {\n }\n}\n\nexport class SaveRotationFailure implements Action {\n readonly type = SAVE_ROTATION_FAIL;\n constructor(public payload: Error) {\n }\n}\n\nexport type DocumentActions =\n | AddPages | SetDocumentId | Convert\n | ConvertSuccess | ConvertFailure | ClearConvertDocUrl\n | PdfPositionUpdate | LoadRotation | LoadRotationSuccess\n | LoadRotationFailure | SaveRotation | SaveRotationSuccess\n | SaveRotationFailure;\n","import { Action } from '@ngrx/store';\nimport {TagsModel} from '../../annotations/models/tags.model';\nexport const UPDATE_TAGS = '[Tags] Update Tags';\nexport const ADD_FILTER_TAGS = '[Tags] Add Filter Tags';\nexport const CLEAR_FILTER_TAGS = '[Tags] Clear Filter Tags';\n\nexport class UpdateTags implements Action {\n readonly type = UPDATE_TAGS;\n constructor(public payload: {tags: TagsModel[]; annoId: string}) {}\n}\n\nexport class AddFilterTags implements Action {\n readonly type = ADD_FILTER_TAGS;\n constructor(public payload: {[id: string]: boolean}) {}\n}\n\nexport class ClearFilterTags implements Action {\n readonly type = CLEAR_FILTER_TAGS;\n}\n\n\nexport type TagsActions =\n | UpdateTags\n | AddFilterTags\n | ClearFilterTags;\n","import { Action } from '@ngrx/store';\nimport { IcpParticipant, IcpSession } from '../../icp/icp.interfaces';\n\nexport const SET_CASE_ID = '[Icp] Set Case Id';\nexport const LOAD_ICP_SESSION = '[Icp] Load Session';\nexport const LOAD_ICP_SESSION_FAIL = '[Icp] Load Session Failure';\nexport const JOIN_ICP_SOCKET_SESSION = '[Icp] Join Socket Session';\nexport const ICP_SOCKET_SESSION_JOINED = '[Icp] Socket Session Joined';\nexport const LEAVE_ICP_SOCKET_SESSION = '[Icp] Leave Socket Session';\nexport const ICP_PRESENTER_UPDATED = '[Icp] Presenter Updated';\nexport const ICP_PARTICIPANT_LIST_UPDATED = '[Icp] Participant List Updated';\n\nexport class SetCaseId implements Action {\n readonly type = SET_CASE_ID;\n constructor(public payload: string) {}\n}\n\nexport class LoadIcpSession implements Action {\n readonly type = LOAD_ICP_SESSION;\n constructor(public payload: string) {}\n}\n\nexport class LoadIcpSessionFailure implements Action {\n readonly type = LOAD_ICP_SESSION_FAIL;\n constructor(public payload: Error) {}\n}\n\nexport class JoinIcpSocketSession implements Action {\n readonly type = JOIN_ICP_SOCKET_SESSION;\n constructor(public payload: { username: string, session: IcpSession }) {}\n}\n\nexport class IcpSocketSessionJoined implements Action {\n readonly type = ICP_SOCKET_SESSION_JOINED;\n constructor(public payload: { session: IcpSession, participantInfo: { client: IcpParticipant, presenter: IcpParticipant } }) {}\n}\n\nexport class LeaveIcpSocketSession implements Action {\n readonly type = LEAVE_ICP_SOCKET_SESSION;\n constructor() {}\n}\n\nexport class IcpPresenterUpdated implements Action {\n readonly type = ICP_PRESENTER_UPDATED;\n constructor(public payload: IcpParticipant) {}\n}\n\nexport class IcpParticipantListUpdated implements Action {\n readonly type = ICP_PARTICIPANT_LIST_UPDATED;\n constructor(public payload: any) {}\n}\n\nexport type IcpActions =\n | SetCaseId\n | LoadIcpSession\n | LoadIcpSessionFailure\n | JoinIcpSocketSession\n | IcpSocketSessionJoined\n | LeaveIcpSocketSession\n | IcpPresenterUpdated\n | IcpParticipantListUpdated;\n","import * as fromActions from '../actions/document.actions';\n\nexport interface DocumentState {\n convertedDocument: {\n url: string;\n error: string;\n };\n documentId: string;\n pdfPosition: PdfPosition;\n pages: {[id: string]: DocumentPages};\n hasDifferentPageSize: boolean;\n rotation: number;\n rotationLoaded: boolean;\n loaded: boolean;\n loading: boolean;\n}\n\nexport interface DocumentPages {\n numberOfPages: number;\n styles: { left: number, height: number, width: number };\n scaleRotation: { scale: string; rotation: string };\n viewportScale: number;\n}\n\nexport interface PdfPosition {\n pageNumber: number;\n scale: number;\n top: number;\n left: number;\n rotation: number;\n}\n\nexport const initialDocumentState: DocumentState = {\n convertedDocument: undefined,\n documentId: undefined,\n pdfPosition: undefined,\n pages: {},\n hasDifferentPageSize: false,\n rotation: undefined,\n rotationLoaded: false,\n loading: false,\n loaded: false\n};\n\nexport function docReducer (state = initialDocumentState,\n action: fromActions.DocumentActions): DocumentState {\n\n switch (action.type) {\n\n case fromActions.CONVERT_SUCCESS: {\n const convertedDocument = {\n url: action.payload,\n error: undefined\n };\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.CONVERT_FAIL: {\n const convertedDocument = {\n url: undefined,\n error: action.payload\n };\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.CLEAR_CONVERT_DOC_URL: {\n const convertedDocument = undefined;\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.LOAD_ROTATION: {\n return {\n ...state,\n rotationLoaded: false\n };\n }\n\n case fromActions.LOAD_ROTATION_SUCCESS: {\n const metadata = action.payload;\n const rotation = metadata ? metadata.rotationAngle : 0;\n return {\n ...state,\n rotation,\n rotationLoaded: true\n };\n }\n\n case fromActions.LOAD_ROTATION_FAIL: {\n return {\n ...state,\n rotation: 0,\n rotationLoaded: true\n };\n }\n\n case fromActions.SAVE_ROTATION_SUCCESS: {\n const metadata = action.payload;\n const rotation = metadata.rotationAngle;\n return {\n ...state,\n rotation\n };\n }\n\n case fromActions.SET_DOCUMENT_ID : {\n return {\n ...state,\n documentId: action.payload\n };\n }\n\n case fromActions.ADD_PAGES: {\n const payload = action.payload;\n let pages = {};\n let pageHeight;\n let pageWidth;\n let hasDifferentPageSize = state.hasDifferentPageSize;\n payload.forEach(page => {\n if (!hasDifferentPageSize && pageHeight && pageWidth &&\n (pageHeight !== page.div['scrollHeight'] || pageWidth !== page.div['scrollWidth'])) {\n hasDifferentPageSize = true;\n } else {\n pageHeight = page.div['scrollHeight'];\n pageWidth = page.div['scrollWidth'];\n }\n const styles = {\n left: page.div['offsetLeft'],\n height: page.div['scrollHeight'],\n width: page.div['scrollWidth']\n };\n\n const scaleRotation = {\n scale: page.scale,\n rotation: page.rotation\n };\n\n const p = {\n styles,\n scaleRotation,\n viewportScale: page.viewportScale\n };\n\n pages = {\n ...pages,\n [page.id]: p\n };\n\n });\n return {\n ...state,\n pages,\n hasDifferentPageSize\n };\n }\n\n case fromActions.POSITION_UPDATED: {\n const pdfPosition = action.payload;\n return {\n ...state,\n pdfPosition\n };\n }\n }\n return state;\n}\nexport const getDocPages = (state: DocumentState) => state.pages;\nexport const getDocId = (state: DocumentState) => state.documentId;\nexport const getPdfPos = (state: DocumentState) => state.pdfPosition;\nexport const getHasDifferentPageSizes = (state: DocumentState) => state.hasDifferentPageSize;\nexport const getRotation = (state: DocumentState) => state.rotation;\nexport const rotationLoaded = (state: DocumentState) => state.rotationLoaded;\nexport const getConvertedDocument = (state: DocumentState) => state.convertedDocument;\n","import { Action } from '@ngrx/store';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { Filters } from '../models/filters.interface';\nimport { Comment } from '../../annotations/comment-set/comment/comment.model';\n\nexport const LOAD_ANNOTATION_SET = '[Annotations] Load Annotation Set';\nexport const LOAD_ANNOTATION_SET_SUCCESS = '[Annotations] Load Annotation Set Success';\nexport const LOAD_ANNOTATION_SET_FAIL = '[Annotations] Load Annotation Set Fail';\n\nexport const SAVE_ANNOTATION = '[Annotations] Save Annotation';\nexport const SAVE_ANNOTATION_SUCCESS = '[Annotations] Save Annotation Success';\nexport const SAVE_ANNOTATION_FAIL = '[Annotations] Save Annotation Fail';\nexport const ADD_OR_EDIT_COMMENT = '[Annotations] Add or Edit Comment';\n\nexport const DELETE_ANNOTATION = '[Annotations] Delete Annotation';\nexport const DELETE_ANNOTATION_SUCCESS = '[Annotations] Delete Annotation Success';\nexport const DELETE_ANNOTATION_FAIL = '[Annotations] Delete Annotation Fail';\n\nexport const SELECT_ANNOTATION = '[Annotations] Select Annotation';\nexport const SEARCH_COMMENT = '[Comments] Search Comments';\nexport const APPLY_COMMENT_SUMMARY_FILTER = '[Comments] Apply Comment Summary Filter';\nexport const CLEAR_COMMENT_SUMMARY_FILTER = '[Comments] Clear Comment Summary Filter';\n\nexport class LoadAnnotationSet implements Action {\n readonly type = LOAD_ANNOTATION_SET;\n constructor(public payload: string) { }\n}\n\nexport class LoadAnnotationSetSucess implements Action {\n readonly type = LOAD_ANNOTATION_SET_SUCCESS;\n constructor(public payload: { status: number, body: AnnotationSet }) { }\n}\n\nexport class LoadAnnotationSetFail implements Action {\n readonly type = LOAD_ANNOTATION_SET_FAIL;\n constructor(public payload: { status: number, body: any }) { }\n}\n\nexport class SaveAnnotation implements Action {\n readonly type = SAVE_ANNOTATION;\n constructor(public payload: Annotation) { }\n}\n\nexport class SaveAnnotationSuccess implements Action {\n readonly type = SAVE_ANNOTATION_SUCCESS;\n constructor(public payload: any) { }\n}\n\nexport class SaveAnnotationFail implements Action {\n readonly type = SAVE_ANNOTATION_FAIL;\n constructor(public payload: Error) { }\n}\n\nexport class AddOrEditComment implements Action {\n readonly type = ADD_OR_EDIT_COMMENT;\n constructor(public payload: Comment) { }\n}\n\nexport class DeleteAnnotation implements Action {\n readonly type = DELETE_ANNOTATION;\n constructor(public payload: string) { }\n}\n\nexport class DeleteAnnotationSuccess implements Action {\n readonly type = DELETE_ANNOTATION_SUCCESS;\n constructor(public payload: string) { }\n}\n\nexport class DeleteAnnotationFail implements Action {\n readonly type = DELETE_ANNOTATION_FAIL;\n constructor(public payload: Error) {}\n}\n\nexport class SelectedAnnotation implements Action {\n readonly type = SELECT_ANNOTATION;\n constructor(public payload: SelectionAnnotation) {}\n}\n\nexport class SearchComment implements Action {\n readonly type = SEARCH_COMMENT;\n constructor(public payload: string) {}\n}\n\nexport class ApplyCommentSymmaryFilter implements Action {\n readonly type = APPLY_COMMENT_SUMMARY_FILTER;\n constructor(public payload: Filters) {}\n}\n\nexport class ClearCommentSummaryFilters implements Action {\n readonly type = CLEAR_COMMENT_SUMMARY_FILTER;\n}\n\nexport type AnnotationsActions =\n | LoadAnnotationSet\n | LoadAnnotationSetSucess\n | LoadAnnotationSetFail\n | SaveAnnotation\n | SaveAnnotationSuccess\n | SaveAnnotationFail\n | AddOrEditComment\n | DeleteAnnotation\n | DeleteAnnotationSuccess\n | DeleteAnnotationFail\n | SelectedAnnotation\n | SearchComment\n | ApplyCommentSymmaryFilter\n | ClearCommentSummaryFilters;\n","import { Annotation } from '../annotations/annotation-set/annotation-view/annotation.model';\nimport moment from 'moment-timezone';\nimport { Redaction } from '../redaction/services/redaction.model';\nimport { Filters } from './models/filters.interface';\nimport { Comment } from '../annotations/comment-set/comment/comment.model';\n\n/*\n @dynamic\n marking class as dynamic to stop compiler throwing error for lambda in static function\n see https://github.com/angular/angular/issues/19698#issuecomment-338340211\n */\nexport class StoreUtils {\n\n static groupByKeyEntities(annotations, key): {[id: string]: any[]} {\n return annotations.reduce((h, obj) =>\n Object.assign(h, { [obj[key]]: ( h[obj[key]] || [] ).concat(obj) }), {});\n }\n\n static generateCommentsEntities(annotations): {[id: string]: Comment} {\n return annotations.reduce(\n (commentEntities: { [id: string]: Annotation }, annotation: Annotation) => {\n if (annotation.comments.length) {\n const comment = {\n ...annotation.comments[0] || '',\n tags: [...annotation.tags || []]\n };\n return {\n ...commentEntities,\n [annotation.id]: comment\n };\n }\n return {\n ...commentEntities\n };\n }, {});\n }\n\n static genTagNameEntities(annotations) {\n const filterAnnoWithoutCommentsTags = annotations.filter(a => (a.comments.length && a.tags.length));\n const allTags = filterAnnoWithoutCommentsTags.map(anno => this.groupByKeyEntities(anno.tags, 'name'));\n const groupedByName = allTags.reduce(\n (tagEntitiy: { [id: string]: Annotation }, tagItem) => {\n return {\n ...tagEntitiy,\n ...tagItem\n };\n }, {});\n\n return this.genNameEnt(annotations, groupedByName);\n }\n\n static genNameEnt(annos, groupedByName) {\n return Object.keys(groupedByName).reduce(\n (tagNameEnt, key) => {\n const readyAnno = annos.filter(anno => anno.tags.find(tag => tag.name === key))\n .map(anno => anno.id)\n .reduce((obj: {[id: string]: string}, anno: string) => ({ ...obj, [anno]: anno }), {});\n\n return {\n ...tagNameEnt,\n [key]: readyAnno\n };\n }, {});\n\n }\n\n static generateAnnotationEntities(anno): {[id: string]: Annotation} {\n return anno.reduce(\n (annoEntities: { [id: string]: Annotation }, annotation: Annotation) => {\n const annot = {\n ...annotation,\n positionTop: annotation.rectangles[0].y // todo remove this\n };\n return {\n ...annoEntities,\n [annotation.id]: annot\n };\n }, {});\n }\n\n static generateRedactionEntities(redactions: Redaction[]): { [id: string]: Redaction } {\n return redactions.reduce(\n (redactEntities: { [id: string]: Redaction }, redaction: Redaction) => {\n return {\n ...redactEntities,\n [redaction.redactionId]: redaction\n };\n }, {});\n }\n\n static resetCommentEntSelect(ent: { [id: string]: Comment }) {\n return Object.keys(ent).reduce((object, key) => {\n object[key] = {\n ...ent[key],\n editable: false,\n selected: false\n };\n return object;\n }, {});\n }\n\n static filterCommentsSummary(comments: Array<Comment>, filters: Filters) {\n if (Object.keys(filters).length) {\n const tagFilterApplied = Object.keys(filters.tagFilters)\n .filter(key => filters.tagFilters[key] === true).length;\n const dateFilterApplied = (filters.dateRangeFrom || filters.dateRangeTo);\n const filteredComments = comments.filter(comment => {\n let hasTagFilter = false;\n let hasDateFilter = false;\n // check tags\n if (filters.hasOwnProperty('tagFilters')) {\n Object.keys(filters.tagFilters).forEach(filter => {\n const label = filters.tagFilters[filter];\n if (label) {\n return comment.tags.forEach(tag => {\n if (tag.name === filter && !hasTagFilter) {\n hasTagFilter = true;\n }\n });\n }});\n }\n // check for dates\n if (dateFilterApplied) {\n const commentDate = moment(comment.lastModifiedDate);\n const dateFrom = filters.dateRangeFrom !== null ? moment(filters.dateRangeFrom) : undefined;\n const dateTo = filters.dateRangeTo !== null ? moment(filters.dateRangeTo) : undefined;\n\n if (dateTo && dateFrom) {\n if (commentDate > dateFrom && commentDate < dateTo) {\n hasDateFilter = true;\n }\n }\n if (dateTo && !dateFrom) {\n if (commentDate <= dateTo) {\n hasDateFilter = true;\n }\n }\n if (dateFrom && !dateTo) {\n if (commentDate > dateFrom) {\n hasDateFilter = true;\n }\n }\n }\n\n return (hasTagFilter || hasDateFilter);\n });\n return (tagFilterApplied || dateFilterApplied) ? filteredComments : comments;\n } else {\n return comments;\n }\n }\n}\n","import uuid from 'uuid/v4';\nimport * as fromAnnotations from '../actions/annotation.actions';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\nimport { Comment } from '../../annotations/comment-set/comment/comment.model';\nimport { StoreUtils } from '../store-utils';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { Filters } from '../models/filters.interface';\n\nexport interface AnnotationSetState {\n annotationSet: any;\n annotationEntities: {[id: string]: any};\n annotationPageEntities: {[id: string]: Annotation[]};\n commentEntities: {[id: string]: Comment};\n selectedAnnotation: SelectionAnnotation;\n commentSearchQueries: { commentSearch: string };\n commentSummaryFilters: {hasFilter: boolean; filters: Filters};\n loaded: boolean;\n loading: boolean;\n}\n\nexport const initialState: AnnotationSetState = {\n annotationSet: {},\n annotationEntities: {},\n commentEntities: {},\n annotationPageEntities: {},\n selectedAnnotation: null,\n commentSearchQueries: {commentSearch: ''},\n commentSummaryFilters: {hasFilter: false, filters: {}},\n loading: false,\n loaded: false,\n};\n\nexport function reducer (\n state = initialState,\n action: fromAnnotations.AnnotationsActions\n): AnnotationSetState {\n switch (action.type) {\n\n case fromAnnotations.LOAD_ANNOTATION_SET: {\n const annotationSet = {\n ...state.annotationSet,\n documentId: action.payload\n };\n return {\n ...initialState,\n annotationSet,\n loading: true\n };\n }\n case fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS:\n case fromAnnotations.LOAD_ANNOTATION_SET_FAIL: {\n const annotationSet = action.payload.status === 200 ? action.payload.body :\n {\n ...state.annotationSet,\n annotations: [],\n id: uuid()\n };\n const annotationEntities = StoreUtils.generateAnnotationEntities(annotationSet.annotations);\n const annotationPageEntities = StoreUtils.groupByKeyEntities(annotationSet.annotations, 'page');\n const commentEntities = StoreUtils.generateCommentsEntities(annotationSet.annotations);\n return {\n ...state,\n annotationSet,\n annotationEntities,\n annotationPageEntities,\n commentEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromAnnotations.SAVE_ANNOTATION_SUCCESS: {\n const anno = action.payload;\n const annEntities = {\n ...state.annotationEntities,\n [anno.id]: anno\n };\n const annotArray = Object.keys(annEntities).map(key => annEntities[key]);\n const annotationEntities = StoreUtils.generateAnnotationEntities(annotArray);\n const annotationPageEntities = StoreUtils.groupByKeyEntities(annotArray, 'page');\n const commentEntities = StoreUtils.generateCommentsEntities(annotArray);\n const selectedAnnotation = {\n ...state.selectedAnnotation,\n annotationId : anno.id,\n editable: false\n };\n return {\n ...state,\n annotationEntities,\n annotationPageEntities,\n commentEntities,\n selectedAnnotation,\n loading: false,\n loaded: true\n };\n }\n\n case fromAnnotations.DELETE_ANNOTATION_SUCCESS: {\n const id = action.payload;\n const page = state.annotationEntities[id].page;\n const annotationEntities = {\n ...state.annotationEntities\n };\n delete annotationEntities[id];\n const pageAnnotationsRemoved = [\n ...state.annotationPageEntities[page].filter(anno => anno.id !== id)\n ];\n const annotationPageEntities = {\n ...state.annotationPageEntities,\n [page]: pageAnnotationsRemoved\n };\n const commentEntities = {\n ...state.commentEntities\n };\n if (state.commentEntities[id]) {\n delete commentEntities[id];\n }\n return {\n ...state,\n annotationEntities,\n annotationPageEntities,\n commentEntities\n };\n }\n\n case fromAnnotations.ADD_OR_EDIT_COMMENT: {\n const comment = {\n [action.payload.annotationId]: action.payload\n };\n const comments = {\n ...state.commentEntities,\n ...comment\n };\n return {\n ...state,\n commentEntities: comments\n };\n }\n\n case fromAnnotations.SELECT_ANNOTATION: {\n const payload = action.payload;\n const commentEntity = {\n ...state.commentEntities[payload.annotationId],\n editable: payload.editable,\n selected: payload.selected\n };\n\n const resetCommentEntSelect = StoreUtils.resetCommentEntSelect({...state.commentEntities});\n\n const commentEntities = payload.annotationId && state.commentEntities[payload.annotationId] ? {\n ...resetCommentEntSelect,\n [payload.annotationId]: commentEntity\n } : {...resetCommentEntSelect};\n\n return {\n ...state,\n commentEntities,\n selectedAnnotation: action.payload\n };\n }\n\n case fromAnnotations.SEARCH_COMMENT: {\n const commentSearchQueries = {\n ...state.commentSearchQueries,\n commentSearch: action.payload\n };\n\n const commentEntities = StoreUtils.resetCommentEntSelect({...state.commentEntities});\n return {\n ...state,\n commentEntities,\n commentSearchQueries\n };\n }\n\n case fromAnnotations.APPLY_COMMENT_SUMMARY_FILTER: {\n const payload = action.payload;\n const hasTagFilter = () => {\n let isFiltered = false;\n if (payload.tagFilters) {\n Object.keys(payload.tagFilters).map(filter => {\n if (payload.tagFilters[filter] && !isFiltered) {\n isFiltered = true;\n }\n });\n }\n return isFiltered;\n };\n const hasFilter = (hasTagFilter() || !!payload.dateRangeFrom || !!payload.dateRangeTo);\n const commentSummaryFilters = {\n hasFilter,\n filters: payload\n };\n return {\n ...state,\n commentSummaryFilters: commentSummaryFilters\n };\n }\n\n case fromAnnotations.CLEAR_COMMENT_SUMMARY_FILTER: {\n\n return {\n ...state,\n commentSummaryFilters : {...initialState.commentSummaryFilters}\n };\n }\n }\n\n\n return state;\n}\n\nexport const getAnnoSet = (state: AnnotationSetState) => state.annotationSet;\nexport const getCommentEnts = (state: AnnotationSetState) => state.commentEntities;\nexport const getAnnoPageEnt = (state: AnnotationSetState) => state.annotationPageEntities;\nexport const getAnnoEnt = (state: AnnotationSetState) => state.annotationEntities;\nexport const getSelectedAnno = (state: AnnotationSetState) => state.selectedAnnotation;\nexport const commentSearchQ = (state: AnnotationSetState) => state.commentSearchQueries;\nexport const getSummaryFilters = (state: AnnotationSetState) => state.commentSummaryFilters;\n","import * as fromAnnotations from '../actions/annotation.actions';\nimport * as fromTags from '../actions/tag.actions';\nimport {StoreUtils} from '../store-utils';\nimport {Annotation} from '../../annotations/annotation-set/annotation-view/annotation.model';\n\nexport interface TagsState {\n tagNameEnt: {[id: string]: string[]};\n filteredComments: {[id: string]: string[]};\n filteredPageEntities: {[id: string]: Annotation[]};\n annotations: Annotation[];\n formFilterState: {[id: string]: boolean};\n filters: string[];\n}\n\nexport const initialTagState: TagsState = {\n tagNameEnt: {},\n annotations: [],\n filteredPageEntities: {},\n filteredComments: {},\n formFilterState: {},\n filters: []\n};\n\nexport function tagsReducer (\n state = initialTagState,\n action: fromAnnotations.AnnotationsActions | fromTags.TagsActions\n): TagsState {\n switch (action.type) {\n case fromAnnotations.LOAD_ANNOTATION_SET: {\n\n return {\n ...state,\n ...initialTagState\n };\n }\n case fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS: {\n const annotations = action.payload.body.annotations;\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n return {\n ...state,\n tagNameEnt,\n annotations\n };\n }\n\n case fromAnnotations.SAVE_ANNOTATION_SUCCESS: {\n const payload = action.payload;\n\n const anno = [...state.annotations].filter(a => a.id !== payload.id) || [];\n const annotations = [...anno, payload];\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n return {\n ...state,\n annotations,\n tagNameEnt\n };\n }\n\n case fromAnnotations.DELETE_ANNOTATION_SUCCESS: {\n const id = action.payload;\n const annotations = [...state.annotations].filter(a => a.id !== id);\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n const filteredPageEntities = StoreUtils.groupByKeyEntities(annotations, 'page');\n const filteredComments = {\n ...state.filteredComments\n };\n delete filteredComments[id];\n return {\n ...state,\n annotations,\n tagNameEnt,\n filteredComments,\n filteredPageEntities,\n filters: []\n };\n }\n\n\n case fromTags.ADD_FILTER_TAGS: {\n const formFilterState = action.payload;\n\n const filters = Object.keys(formFilterState).reduce((arr: string[], key: string) => {\n return formFilterState[key] ? [...arr, key] : arr;\n }, []);\n\n const filteredComments = filters.reduce((obj: {[id: string]: any}, f) => {\n return {\n ...obj,\n ...state.tagNameEnt[f]\n };\n }, {});\n\n const annotations = Object.keys(filteredComments).map(key => state.annotations.filter(a => a.id === key)[0]);\n const filteredPageEntities = StoreUtils.groupByKeyEntities(annotations, 'page');\n return {\n ...state,\n filters,\n filteredComments,\n filteredPageEntities,\n };\n }\n\n case fromTags.CLEAR_FILTER_TAGS: {\n return {\n ...state,\n filters: [],\n filteredComments: {},\n filteredPageEntities: {},\n };\n }\n\n }\n\n return state;\n}\n\nexport const getTagNameEnt = (state: TagsState) => state.tagNameEnt;\nexport const getFilters = (state: TagsState) => state.filters;\nexport const getFilteredComments = (state: TagsState) => state.filteredComments;\nexport const getFilteredPageEnt = (state: TagsState) => state.filteredPageEntities;\n","import { Action } from '@ngrx/store';\nimport { Bookmark } from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\nexport const LOAD_BOOKMARKS = '[Bookmarks] Load Bookmarks';\nexport const LOAD_BOOKMARKS_SUCCESS = '[Bookmarks] Load Bookmarks Success';\nexport const LOAD_BOOKMARKS_FAIL = '[Bookmarks] Load Bookmarks Failure';\nexport const CREATE_BOOKMARK = '[Bookmarks] Create Bookmark';\nexport const CREATE_BOOKMARK_SUCCESS = '[Bookmarks] Create Bookmark Success';\nexport const CREATE_BOOKMARK_FAIL = '[Bookmarks] Create Bookmark Failure';\nexport const DELETE_BOOKMARK = '[Bookmarks] Delete Bookmark';\nexport const DELETE_BOOKMARK_SUCCESS = '[Bookmarks] Delete Bookmark Success';\nexport const DELETE_BOOKMARK_FAIL = '[Bookmarks] Delete Bookmark Failure';\nexport const MOVE_BOOKMARK = '[Bookmarks] Move Bookmark';\nexport const MOVE_BOOKMARK_SUCCESS = '[Bookmarks] Move Bookmark Success';\nexport const MOVE_BOOKMARK_FAIL = '[Bookmarks] Move Bookmark Failure';\nexport const UPDATE_BOOKMARK = '[Bookmarks] Update Bookmark';\nexport const UPDATE_BOOKMARK_SUCCESS = '[Bookmarks] Update Bookmark Success';\nexport const UPDATE_BOOKMARK_FAIL = '[Bookmarks] Update Bookmark Failure';\n\nexport class LoadBookmarks implements Action {\n readonly type = LOAD_BOOKMARKS;\n constructor() {}\n}\n\nexport class LoadBookmarksSuccess implements Action {\n readonly type = LOAD_BOOKMARKS_SUCCESS;\n constructor(public payload: { body: Bookmark[], status: number}) { }\n}\n\nexport class LoadBookmarksFailure implements Action {\n readonly type = LOAD_BOOKMARKS_FAIL;\n constructor(public payload: { body: any, status: number }) { }\n}\n\nexport class CreateBookmark implements Action {\n readonly type = CREATE_BOOKMARK;\n constructor(public payload: Bookmark) { }\n}\n\nexport class CreateBookmarkSuccess implements Action {\n readonly type = CREATE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark) {}\n}\n\nexport class CreateBookmarkFailure implements Action {\n readonly type = CREATE_BOOKMARK_FAIL;\n constructor(public payload: Bookmark) {}\n}\n\nexport class DeleteBookmark implements Action {\n readonly type = DELETE_BOOKMARK;\n constructor(public payload: { deleted: string[], updated: Bookmark }) {}\n}\n\nexport class DeleteBookmarkSuccess implements Action {\n readonly type = DELETE_BOOKMARK_SUCCESS;\n constructor(public payload: string[]) {}\n}\n\nexport class DeleteBookmarkFailure implements Action {\n readonly type = DELETE_BOOKMARK_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class MoveBookmark implements Action {\n readonly type = MOVE_BOOKMARK;\n constructor(public payload: Bookmark[]) {}\n}\n\nexport class MoveBookmarkSuccess implements Action {\n readonly type = MOVE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark[]) { }\n}\n\nexport class MoveBookmarkFailure implements Action {\n readonly type = MOVE_BOOKMARK_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class UpdateBookmark implements Action {\n readonly type = UPDATE_BOOKMARK;\n constructor(public payload: Bookmark) {}\n}\n\nexport class UpdateBookmarkSuccess implements Action {\n readonly type = UPDATE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark) {}\n}\n\nexport class UpdateBookmarkFailure implements Action {\n readonly type = UPDATE_BOOKMARK_FAIL;\n constructor(public payload: Bookmark) {}\n}\n\n\nexport type BookmarksActions =\n | LoadBookmarks | LoadBookmarksSuccess | LoadBookmarksFailure\n | CreateBookmark | CreateBookmarkSuccess | CreateBookmarkFailure\n | DeleteBookmark | DeleteBookmarkSuccess | DeleteBookmarkFailure\n | UpdateBookmark | UpdateBookmarkSuccess | UpdateBookmarkFailure\n | MoveBookmark | MoveBookmarkSuccess | MoveBookmarkFailure;\n","import { Bookmark } from '../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\nexport const getBookmarkChildren = (bookmarks: Bookmark[]) => {\n if (bookmarks) {\n return bookmarks.reduce((childIds, bookmark) => {\n if (bookmark.children && bookmark.children.length > 0) {\n return [...childIds, bookmark.id, ...getBookmarkChildren(bookmark.children)];\n }\n return [...childIds, bookmark.id];\n }, []);\n } else {\n return [];\n }\n};\n\nexport const generateBookmarkEntities = (bookmarks: Bookmark[]): {[id: string]: Bookmark} => {\n return bookmarks.reduce(\n (bookmarkEntities, bookmark) =>\n Object.assign(bookmarkEntities, { [bookmark.id]: bookmark }),\n {});\n};\n\nconst indexEntities = (entities: { [id: string]: Bookmark }) => {\n const entityIds = Object.keys(entities);\n for (let index = 0; entityIds.length > 0; index++) {\n let keysToRemove = [];\n entityIds.forEach(key => {\n if (!entities[key].previous || !entityIds.includes(entities[key].previous.toString())) {\n entities[key].index = index;\n keysToRemove.push(key);\n }\n });\n keysToRemove.forEach(key => entityIds.splice(entityIds.indexOf(key), 1));\n keysToRemove = [];\n }\n};\n\nexport const generateBookmarkNodes = (entities: { [id: string]: Bookmark }) => {\n const bookmarkEntities = JSON.parse(JSON.stringify(entities));\n indexEntities(bookmarkEntities);\n return Object.keys(bookmarkEntities).reduce((nodes, bookmarkId) => {\n const bookmarkEntity = bookmarkEntities[bookmarkId];\n if (bookmarkEntity.parent) {\n const parentEntity = bookmarkEntities[bookmarkEntity.parent];\n if (!parentEntity.children) {\n parentEntity.children = [];\n }\n parentEntity.children[bookmarkEntity.index] = bookmarkEntity;\n } else {\n nodes[bookmarkEntity.index] = bookmarkEntity;\n }\n return nodes;\n }, []);\n};\n","import * as fromBookmarks from '../actions/bookmark.actions';\nimport { Bookmark } from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\nimport { StoreUtils } from '../store-utils';\nimport { generateBookmarkEntities } from '../bookmarks-store-utils';\n\nexport interface BookmarksState {\n bookmarks: Bookmark[];\n bookmarkEntities: { [id: string]: Bookmark };\n bookmarkPageEntities: {[id: string]: any};\n editableBookmark: string;\n loaded: boolean;\n loading: boolean;\n}\n\nexport const initialBookmarksState: BookmarksState = {\n bookmarks: [],\n bookmarkEntities: {},\n bookmarkPageEntities: {},\n editableBookmark: undefined,\n loaded: false,\n loading: false\n};\n\nexport function bookmarksReducer (state = initialBookmarksState,\n action: fromBookmarks.BookmarksActions): BookmarksState {\n\n switch (action.type) {\n\n case fromBookmarks.LOAD_BOOKMARKS: {\n return {\n ...state,\n loading: true\n };\n }\n\n case fromBookmarks.LOAD_BOOKMARKS_SUCCESS:\n case fromBookmarks.LOAD_BOOKMARKS_FAIL: {\n const bookmarks = action.payload.status === 200 ? action.payload.body : [];\n const bookmarkEntities = generateBookmarkEntities(bookmarks);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarks, 'pageNumber');\n\n return {\n ...state,\n bookmarks,\n bookmarkEntities,\n bookmarkPageEntities,\n loaded: true\n };\n }\n\n case fromBookmarks.CREATE_BOOKMARK_SUCCESS: {\n const bookmark: Bookmark = action.payload;\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n [bookmark.id]: bookmark,\n };\n const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');\n const editableBookmark = bookmark.id;\n return {\n ...state,\n bookmarkEntities,\n editableBookmark,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.MOVE_BOOKMARK_SUCCESS: {\n const movedBookmarks = generateBookmarkEntities(action.payload);\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n ...movedBookmarks\n };\n return {\n ...state,\n bookmarkEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.DELETE_BOOKMARK_SUCCESS: {\n const bookmarkIds: string[] = action.payload;\n const bookmarkEntities = { ...state.bookmarkEntities };\n const bookmarkPageEntities = { ...state.bookmarkPageEntities };\n const removeBookmarksByPage: {[pageNumber: number]: string[]} = {};\n bookmarkIds.forEach(bookmarkId => {\n if (removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] !== undefined &&\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].length > 0) {\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].push(bookmarkId);\n } else {\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] = [bookmarkId];\n }\n delete bookmarkEntities[bookmarkId];\n });\n\n Object.entries(removeBookmarksByPage).forEach(\n ([pageNumber, bmrkIds]) => {\n bookmarkPageEntities[pageNumber] = bookmarkPageEntities[pageNumber].filter(bookmarkId => bmrkIds.includes(bookmarkId));\n }\n );\n\n return {\n ...state,\n bookmarkEntities,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.UPDATE_BOOKMARK_SUCCESS: {\n const bookmark: Bookmark = action.payload;\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n [bookmark.id]: { ...bookmark }\n };\n const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');\n const editableBookmark = undefined;\n return {\n ...state,\n bookmarkEntities,\n editableBookmark,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n }\n return state;\n}\n\nexport const getBookmarks = (state: BookmarksState) => state.bookmarks;\nexport const getBookmarkEnts = (state: BookmarksState) => state.bookmarkEntities;\nexport const getBookmarkPageEnt = (state: BookmarksState) => state.bookmarkPageEntities;\nexport const getEditBookmark = (state: BookmarksState) => state.editableBookmark;\n","import { Action } from '@ngrx/store';\nimport { Redaction } from '../../redaction/services/redaction.model';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\n\nexport const LOAD_REDACTIONS = '[Redaction] Load Redaction';\nexport const LOAD_REDACTION_SUCCESS = '[Redaction] Load Redaction Success';\nexport const LOAD_REDACTION_FAIL = '[Redaction] Load Redaction Fail';\n\nexport const SAVE_REDACTION = '[Redaction] Save Redaction';\nexport const SAVE_REDACTION_SUCCESS = '[Redaction] Save Redaction Success';\nexport const SAVE_REDACTION_FAIL = '[Redaction] Save Redaction Fail';\n\nexport const DELETE_REDACTION = '[Redaction] Delete Redaction';\nexport const DELETE_REDACTION_SUCCESS = '[Redaction] Delete Redaction Success';\nexport const DELETE_REDACTION_FAIL = '[Redaction] Delete Redaction Fail';\n\nexport const SELECT_REDACTION = '[Redaction] Select Redaction';\n\nexport const REDACT = '[Redaction] Redact';\nexport const REDACT_SUCCESS = '[Redaction] Redact Success';\nexport const REDACT_FAIL = '[Redaction] Redact Fail';\nexport const RESET_REDACTED_DOCUMENT = '[Redaction] Reset Redacted Document';\n\nexport const UNMARK_ALL = '[Redaction] Unmark All';\nexport const UNMARK_ALL_SUCCESS = '[Redaction] Unmark All Success';\n\n\nexport class LoadRedactions implements Action {\n readonly type = LOAD_REDACTIONS;\n constructor(public payload: any) {}\n}\n\nexport class LoadRedactionSuccess implements Action {\n readonly type = LOAD_REDACTION_SUCCESS;\n constructor(public payload: Redaction[]) {}\n}\n\nexport class LoadRedactionFailure implements Action {\n readonly type = LOAD_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class SaveRedaction implements Action {\n readonly type = SAVE_REDACTION;\n constructor(public payload: Redaction) {}\n}\n\nexport class SaveRedactionSuccess implements Action {\n readonly type = SAVE_REDACTION_SUCCESS;\n constructor(public payload: Redaction) {}\n}\n\nexport class SaveRedactionFailure implements Action {\n readonly type = SAVE_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class DeleteRedaction implements Action {\n readonly type = DELETE_REDACTION;\n constructor(public payload: Annotation) {}\n}\n\nexport class DeleteRedactionSuccess implements Action {\n readonly type = DELETE_REDACTION_SUCCESS;\n constructor(public payload: any) {}\n}\n\nexport class DeleteRedactionFailure implements Action {\n readonly type = DELETE_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class SelectRedaction implements Action {\n readonly type = SELECT_REDACTION;\n constructor(public payload: any) {}\n}\n\nexport class Redact implements Action {\n readonly type = REDACT;\n constructor(public payload: { redactions: Redaction[], documentId: string }) {}\n}\n\nexport class RedactSuccess implements Action {\n readonly type = REDACT_SUCCESS;\n constructor(public payload: { blob: Blob, filename: string }) {}\n}\n\nexport class RedactFailure implements Action {\n readonly type = REDACT_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class ResetRedactedDocument implements Action {\n readonly type = RESET_REDACTED_DOCUMENT;\n}\n\n\nexport class UnmarkAll implements Action {\n readonly type = UNMARK_ALL;\n constructor(public payload: string) {}\n}\n\nexport class UnmarkAllSuccess implements Action {\n readonly type = UNMARK_ALL_SUCCESS;\n}\n\nexport type RedactionActions =\n | LoadRedactions | LoadRedactionSuccess | LoadRedactionFailure\n | SaveRedaction | SaveRedactionSuccess | SaveRedactionFailure\n | DeleteRedaction | DeleteRedactionSuccess | DeleteRedactionFailure\n | SelectRedaction\n | Redact | RedactSuccess | RedactFailure | ResetRedactedDocument\n | UnmarkAll | UnmarkAllSuccess;\n","import * as fromRedaction from '../actions/redaction.actions';\nimport * as fromAnnotations from '../actions/annotation.actions';\nimport {StoreUtils} from '../store-utils';\nimport {SelectionAnnotation} from '../../annotations/models/event-select.model';\nimport { Redaction } from '../../redaction/services/redaction.model'; // todo rename\n\n\nexport interface RedactionState {\n redactionEntities: { [id: string]: Redaction };\n redactionPageEntities: { [id: string]: any };\n selectedRedaction: SelectionAnnotation | {};\n redactedDocumentInfo: { blob: Blob, filename: string };\n documentId: string;\n}\n\nexport const initialRedactionState: RedactionState = {\n redactionEntities: {},\n redactionPageEntities: {},\n selectedRedaction: {},\n redactedDocumentInfo: undefined,\n documentId: undefined\n};\n\nexport function redactionReducer (\n state = initialRedactionState,\n action: fromRedaction.RedactionActions | fromAnnotations.AnnotationsActions\n): RedactionState {\n switch (action.type) {\n\n case fromRedaction.LOAD_REDACTIONS: {\n return {\n ...state,\n ...initialRedactionState\n };\n }\n\n case fromRedaction.LOAD_REDACTION_SUCCESS: {\n const payload = action.payload;\n if (payload) {\n const redactionEntities = StoreUtils.generateRedactionEntities(payload);\n const redactionPageEntities = StoreUtils.groupByKeyEntities(payload, 'page');\n return {\n ...state,\n redactionEntities,\n redactionPageEntities\n };\n }\n return {\n ...state\n };\n }\n\n case fromRedaction.SAVE_REDACTION_SUCCESS: {\n const { payload } = action;\n const redactionEntities = {\n ...state.redactionEntities,\n [payload.redactionId]: payload\n };\n const redactionArray = Object.keys(redactionEntities).map(key => redactionEntities[key]);\n const redactionPageEntities = StoreUtils.groupByKeyEntities(redactionArray, 'page');\n return {\n ...state,\n redactionEntities,\n redactionPageEntities\n };\n }\n\n case fromRedaction.SELECT_REDACTION:\n case fromAnnotations.SELECT_ANNOTATION: {\n return {\n ...state,\n selectedRedaction: action.payload\n };\n }\n\n case fromRedaction.DELETE_REDACTION_SUCCESS: {\n const page = action.payload.page;\n const id = action.payload.redactionId;\n const redactionEntities = {\n ...state.redactionEntities\n };\n delete redactionEntities[id];\n const pageRedactionRemoved = [\n ...state.redactionPageEntities[page].filter(redaction => redaction.redactionId !== id)\n ];\n const redactionPageEntities = {\n ...state.redactionPageEntities,\n [page]: pageRedactionRemoved\n };\n\n return {\n ...state,\n redactionPageEntities,\n redactionEntities,\n };\n }\n\n case fromRedaction.REDACT_SUCCESS: {\n const redactedDocumentInfo = action.payload;\n return {\n ...state,\n ...initialRedactionState,\n redactedDocumentInfo\n };\n }\n\n case fromRedaction.RESET_REDACTED_DOCUMENT: {\n return {\n ...state,\n redactedDocumentInfo: undefined\n };\n }\n\n case fromRedaction.UNMARK_ALL_SUCCESS: {\n return {\n ...state,\n ...initialRedactionState\n };\n }\n }\n\n return state;\n}\n\n\nexport const getRedactionEnt = (state: RedactionState) => state.redactionEntities;\nexport const getPageEnt = (state: RedactionState) => state.redactionPageEntities;\nexport const getSelectedRedaction = (state: RedactionState) => state.selectedRedaction;\nexport const getRedactedDocInfo = (state: RedactionState) => state.redactedDocumentInfo;\n","import * as fromIcpActions from '../actions/icp.actions';\nimport { IcpSession, IcpState } from '../../icp/icp.interfaces';\n\nexport const initialIcpSessionState: IcpState = {\n session: null,\n presenter: null,\n client: null,\n participants: []\n};\n\nexport function icpReducer (state = initialIcpSessionState,\n action: fromIcpActions.IcpActions): IcpState {\n\n switch (action.type) {\n\n case fromIcpActions.SET_CASE_ID: {\n const caseId = action.payload;\n const session = {...state.session, caseId};\n return {\n ...state,\n session\n };\n }\n\n case fromIcpActions.ICP_SOCKET_SESSION_JOINED: {\n const session: IcpSession = action.payload.session;\n const participantInfo = action.payload.participantInfo;\n return {\n ...state,\n session,\n client: participantInfo.client,\n presenter: participantInfo.presenter,\n };\n }\n\n case fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED: {\n const updatedParticipants: any = action.payload;\n const participants = Object.keys(updatedParticipants)\n .map(id => ({ id: id, username: updatedParticipants[id] }));\n return {\n ...state,\n participants\n };\n }\n\n case fromIcpActions.ICP_PRESENTER_UPDATED: {\n const presenter = action.payload;\n return {\n ...state, presenter\n };\n }\n\n case fromIcpActions.LEAVE_ICP_SOCKET_SESSION: {\n return {\n ...state,\n ...initialIcpSessionState\n };\n }\n }\n return state;\n}\n\nexport const getIcpSession = (state: IcpState) => state.session;\nexport const getPresenter = (state: IcpState) => state.presenter;\nexport const getClient = (state: IcpState) => state.client;\nexport const getParticipants = (state: IcpState) => state.participants;\n","import { ActionReducerMap, createFeatureSelector } from '@ngrx/store';\nimport * as fromDocument from './document.reducer';\nimport * as fromAnnotation from './annotations.reducer';\nimport * as fromTags from './tags.reducer';\nimport * as fromBookmarks from './bookmarks.reducer';\nimport * as fromRedaction from './redaction.reducer';\nimport * as fromIcp from './icp.reducer';\nimport { IcpState } from '../../icp/icp.interfaces';\n\nexport interface State {\n document: fromDocument.DocumentState;\n annotations: fromAnnotation.AnnotationSetState;\n tags: fromTags.TagsState;\n bookmarks: fromBookmarks.BookmarksState;\n redactions: fromRedaction.RedactionState;\n icp: IcpState;\n}\n\nexport const reducers: ActionReducerMap<State> = {\n document: fromDocument.docReducer,\n annotations: fromAnnotation.reducer,\n tags: fromTags.tagsReducer,\n bookmarks: fromBookmarks.bookmarksReducer,\n redactions: fromRedaction.redactionReducer,\n icp: fromIcp.icpReducer,\n};\n\nexport const getMVState = createFeatureSelector<State>('media-viewer');\n\nexport * from './document.reducer';\nexport * from './annotations.reducer';\nexport * from './tags.reducer';\nexport * from './bookmarks.reducer';\nexport * from './redaction.reducer';\nexport * from './icp.reducer';\n","import { createSelector } from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromDocument from '../reducers/document.reducer';\n\nexport const getDocumentState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.document\n);\n\nexport const getPages = createSelector(\n getDocumentState,\n fromDocument.getDocPages\n);\n\nexport const getPageList = createSelector(\n getPages,\n (pages) => Object.values(pages)\n);\n\nexport const getDocumentId = createSelector(\n getDocumentState,\n fromDocument.getDocId\n);\n\nexport const getPdfPosition = createSelector(\n getDocumentState,\n fromDocument.getPdfPos\n);\n\nexport const getPageDifference = createSelector(\n getDocumentState,\n fromDocument.getHasDifferentPageSizes\n);\n\nexport const getConvertedDocument = createSelector(\n getDocumentState,\n fromDocument.getConvertedDocument\n);\n\nexport const getRotation = createSelector(\n getDocumentState,\n fromDocument.getRotation\n);\n\nexport const rotationLoaded = createSelector(\n getDocumentState,\n fromDocument.rotationLoaded\n);\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Rectangle } from '../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\n\nexport interface Highlight {\n page: number;\n rectangles: Rectangle[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ViewerEventService {\n\n public readonly textHighlight = new Subject<Highlight>();\n public readonly boxHighlight = new Subject<Highlight>();\n public readonly ctxToolbarCleared = new Subject();\n public readonly navigationEvent = new Subject<any[]>();\n\n constructor() {}\n\n public textSelected(selectionData: Highlight): void {\n this.textHighlight.next(selectionData);\n }\n\n public boxSelected(selectionData: Highlight): void {\n this.boxHighlight.next(selectionData);\n }\n\n public clearCtxToolbar(): void {\n this.ctxToolbarCleared.next();\n }\n\n\n public goToDestination(destination: any[]) {\n this.navigationEvent.next(destination);\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { asyncScheduler, BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, tap, throttleTime } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\n\nimport { DocumentLoadProgress, PageEvent, PdfJsWrapper } from './pdf-js/pdf-js-wrapper';\nimport { PdfJsWrapperFactory } from './pdf-js/pdf-js-wrapper.provider';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { PrintService } from '../../print.service';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { CommentSetComponent } from '../../annotations/comment-set/comment-set.component';\nimport { Outline } from './side-bar/outline-item/outline.model';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { PdfPositionUpdate } from '../../store/actions/document.actions';\nimport * as fromTagActions from '../../store/actions/tag.actions';\nimport { SetCaseId } from '../../store/actions/icp.actions';\nimport * as fromDocumentsSelector from '../../store/selectors/document.selectors';\nimport { IcpState } from '../../icp/icp.interfaces';\nimport { ViewerEventService } from '../viewer-event.service';\n\n@Component({\n selector: 'mv-pdf-viewer',\n templateUrl: './pdf-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class PdfViewerComponent implements AfterContentInit, OnChanges, OnDestroy {\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() pdfViewerException = new EventEmitter<ViewerException>();\n @Output() documentTitle = new EventEmitter<string>();\n\n @Input() downloadUrl: string;\n @Input() url: string;\n @Input() downloadFileName: string;\n\n @Input() enableAnnotations: boolean;\n @Input() enableRedactions: boolean;\n @Input() enableICP: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n @Input() height: string;\n pageHeights = [];\n rotation = 0;\n zoom = 1;\n\n @Input() caseId: string;\n\n highlightMode: Observable<boolean>;\n drawMode: BehaviorSubject<boolean>;\n\n documentOutline: Outline;\n loadingDocument = false;\n loadingDocumentProgress: number;\n errorMessage: string;\n hasDifferentPageSize = false;\n\n @ViewChild('viewerContainer', {static: true}) viewerContainer: ElementRef<HTMLDivElement>;\n @ViewChild('pdfViewer', {static: false}) pdfViewer: ElementRef<HTMLDivElement>;\n\n private pdfWrapper: PdfJsWrapper;\n private $subscription: Subscription;\n private viewerException: ViewerException;\n showCommentsPanel: boolean;\n showIcpParticipantsList: boolean;\n enableGrabNDrag = false;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private icpStore: Store<IcpState>,\n private readonly pdfJsWrapperFactory: PdfJsWrapperFactory,\n private readonly printService: PrintService,\n public readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n ) {\n this.highlightMode = toolbarEvents.highlightModeSubject.pipe(tap(() => {\n this.store.dispatch(new fromTagActions.ClearFilterTags());\n }));\n this.drawMode = toolbarEvents.drawModeSubject;\n }\n\n async ngAfterContentInit(): Promise<void> {\n this.pdfWrapper.documentLoadProgress.subscribe(v => this.onDocumentLoadProgress(v));\n this.pdfWrapper.documentLoaded.subscribe(() => this.onDocumentLoaded());\n this.pdfWrapper.documentLoadFailed.subscribe((error) => this.onDocumentLoadFailed(error));\n this.pdfWrapper.outlineLoaded.subscribe(outline => this.documentOutline = outline);\n this.pdfWrapper.pageRendered.subscribe((event) => this.updatePages(event));\n this.$subscription = this.toolbarEvents.printSubject\n .subscribe(() => this.printService.printDocumentNatively(this.url));\n this.$subscription.add(this.toolbarEvents.downloadSubject.subscribe(() =>\n this.pdfWrapper.downloadFile(this.downloadUrl || this.url, this.downloadFileName)\n ));\n this.$subscription.add(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument(rotate)));\n this.$subscription.add(this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)));\n this.$subscription.add(this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)));\n this.$subscription.add(this.toolbarEvents.searchSubject.subscribe(search => this.pdfWrapper.search(search)));\n this.$subscription.add(\n this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.pdfWrapper.setPageNumber(pageNumber))\n );\n this.$subscription.add(\n this.toolbarEvents.changePageByDeltaSubject.subscribe(pageNumber => this.pdfWrapper.changePageNumber(pageNumber))\n );\n this.$subscription.add(this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag));\n this.$subscription.add(this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {\n this.showCommentsPanel = toggle;\n })\n );\n this.$subscription.add(this.viewerEvents.navigationEvent.subscribe(dest => this.goToDestination(dest)));\n this.$subscription.add(\n this.toolbarEvents.icp.participantsListVisible.subscribe(toggle => this.showIcpParticipantsList = toggle)\n );\n this.$subscription.add(this.pdfWrapper.positionUpdated.asObservable()\n .pipe(throttleTime(500, asyncScheduler, { leading: true, trailing: true }))\n .subscribe(event => this.store.dispatch(new PdfPositionUpdate(event.location)))\n );\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (!this.pdfWrapper) {\n this.pdfWrapper = this.pdfJsWrapperFactory.create(this.viewerContainer);\n }\n if (changes.url && this.pdfWrapper) {\n await this.loadDocument();\n if (this.enableRedactions) {\n this.toolbarEvents.redactionMode.pipe(filter(value => !!value))\n .subscribe(() => this.resetRotation());\n }\n }\n if (changes.caseId) {\n this.icpStore.dispatch(new SetCaseId(this.caseId));\n }\n }\n\n resetRotation() {\n if (this.hasDifferentPageSize) {\n this.pdfWrapper.resetRotation(0);\n this.rotation = 0;\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n private async loadDocument() {\n this.initDocumentProgress();\n await this.pdfWrapper.loadDocument(this.url);\n this.documentTitle.emit(this.pdfWrapper.getCurrentPDFTitle());\n this.setPageHeights();\n this.$subscription.add(this.store.pipe(select(fromDocumentsSelector.getPageDifference))\n .subscribe(hasDifferentPageSie => this.hasDifferentPageSize = hasDifferentPageSie));\n }\n\n private onDocumentLoadProgress(progress: DocumentLoadProgress) {\n if (progress.total) {\n this.loadingDocumentProgress = Math.min(100, Math.ceil(progress.loaded / progress.total * 100));\n }\n }\n\n private onDocumentLoaded() {\n this.loadingDocument = false;\n this.mediaLoadStatus.emit(ResponseType.SUCCESS);\n }\n\n private onDocumentLoadFailed(error: Error) {\n this.loadingDocument = false;\n this.viewerException = new ViewerException(error.name, { message: error.message });\n this.errorMessage = `Could not load the document \"${this.url}\"`;\n\n this.mediaLoadStatus.emit(ResponseType.FAILURE);\n this.pdfViewerException.emit(this.viewerException);\n }\n\n private updatePages(event: PageEvent[]) {\n if (this.enableAnnotations) {\n this.store.dispatch(new fromDocumentActions.AddPages(event));\n }\n }\n\n @Input()\n set searchBarHidden(hidden: boolean) {\n if (this.pdfWrapper && hidden) {\n this.pdfWrapper.clearSearch();\n }\n }\n\n toggleCommentsSummary() {\n this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());\n }\n\n private rotateDocument(rotation: number) {\n const pageNumber = this.pdfWrapper.getPageNumber();\n this.pdfWrapper.rotate(rotation);\n this.pdfWrapper.setPageNumber(pageNumber);\n this.rotation = (this.rotation + rotation) % 360;\n\n this.setPageHeights();\n }\n\n private initDocumentProgress() {\n this.loadingDocument = true;\n this.loadingDocumentProgress = null;\n this.errorMessage = null;\n }\n\n private setZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n this.pdfWrapper.setZoom(zoomFactor);\n this.zoom = this.calculateZoomValue(zoomFactor);\n this.setPageHeights();\n }\n }\n\n private stepZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n this.pdfWrapper.stepZoom(zoomFactor);\n this.zoom = this.calculateZoomValue(this.zoom, zoomFactor);\n this.setPageHeights();\n }\n }\n\n setPageHeights() {\n this.pageHeights = [];\n const pdfViewerChildren = this.pdfViewer.nativeElement.children;\n for (let i = 0; i < pdfViewerChildren.length; i++) {\n this.pageHeights.push(pdfViewerChildren[i].clientHeight);\n }\n }\n\n calculateZoomValue(zoomValue, increment = 0) {\n const newZoomValue = zoomValue + increment;\n if (newZoomValue > 5) {\n return 5;\n }\n if (newZoomValue < 0.1) {\n return 0.1;\n }\n return +newZoomValue.toFixed(2);\n }\n\n private goToDestination(destination: any[]) {\n this.pdfWrapper.navigateTo(destination);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerUtilService {\n constructor(\n private http: HttpClient) {\n }\n\n public validateFile(url: string) {\n return this.http.head(url);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrintService } from '../../print.service';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ViewerUtilService } from '../viewer-util.service';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromDocument from '../../store/actions/document.actions';\n\n@Component({\n selector: 'mv-image-viewer',\n templateUrl: './image-viewer.component.html'\n})\nexport class ImageViewerComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n\n @Input() enableAnnotations: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n @Input() height: string;\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() imageViewerException = new EventEmitter<ViewerException>();\n\n errorMessage: string;\n\n @ViewChild('img', {static: false}) img: ElementRef;\n rotation = 0;\n zoom = 1;\n\n private subscriptions: Subscription[] = [];\n private viewerException: ViewerException;\n private response: Subscription;\n\n showCommentsPanel: boolean;\n enableGrabNDrag = false;\n imageHeight: number;\n imageWidth: number;\n imageLeft: number;\n imageTop: number;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly printService: PrintService,\n private readonly viewerUtilService: ViewerUtilService,\n public readonly toolbarEvents: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService\n ) { }\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.rotateSubject.subscribe(rotation => this.rotateImage(rotation)),\n this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)),\n this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)),\n this.toolbarEvents.printSubject.subscribe(() => this.printService.printDocumentNatively(this.url)),\n this.toolbarEvents.downloadSubject.subscribe(() => this.download()),\n this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag),\n this.toolbarEvents.commentsPanelVisible.subscribe(toggle => this.showCommentsPanel = toggle)\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.filter(subscription => !subscription.closed)\n .forEach(subscription => subscription.unsubscribe());\n if (this.response) {\n this.response.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.url) {\n this.errorMessage = null;\n this.toolbarEvents.reset();\n }\n }\n\n private rotateImage(rotation: number) {\n this.rotation = (this.rotation + rotation) % 360;\n this.initAnnoPage(this.img.nativeElement);\n }\n\n private async setZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n await this.setZoomValue(this.calculateZoomValue(zoomFactor));\n this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;\n this.initAnnoPage(this.img.nativeElement);\n }\n }\n\n private async stepZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n await this.setZoomValue(this.calculateZoomValue(this.zoom, zoomFactor));\n this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;\n this.initAnnoPage(this.img.nativeElement);\n }\n }\n\n private download() {\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = this.url;\n a.download = this.downloadFileName;\n a.click();\n a.remove();\n }\n\n // the returned promise is a work-around\n setZoomValue(zoomValue) {\n return new Promise((resolve) => {\n this.zoom = zoomValue;\n this.toolbarEvents.zoomValueSubject.next(zoomValue);\n resolve(true);\n });\n }\n\n calculateZoomValue(zoomValue, increment = 0) {\n const newZoomValue = zoomValue + increment;\n if (newZoomValue > 5) { return 5; }\n if (newZoomValue < 0.1) { return 0.1; }\n return +newZoomValue.toFixed(2);\n }\n\n onLoadError(url) {\n this.response = this.viewerUtilService.validateFile(url)\n .subscribe(\n next => next,\n error => {\n this.viewerException = new ViewerException(error.name,\n {httpResponseCode: error.status, message: error.message});\n });\n\n this.errorMessage = `Could not load the image \"${this.url}\"`;\n this.mediaLoadStatus.emit(ResponseType.FAILURE);\n this.imageViewerException.emit(this.viewerException);\n }\n\n onLoad(img: any) {\n this.mediaLoadStatus.emit(ResponseType.SUCCESS);\n this.initAnnoPage(img);\n }\n\n initAnnoPage(img: any) {\n this.imageHeight = this.rotation % 180 !== 0 ? img.offsetWidth : img.offsetHeight;\n this.imageWidth = this.rotation % 180 !== 0 ? img.offsetHeight : img.offsetWidth;\n this.imageLeft = this.rotation % 180 !== 0 ? img.offsetTop : img.offsetLeft;\n this.imageTop = this.rotation % 180 !== 0 ? img.offsetLeft : img.offsetTop;\n const payload: any = [{\n div: {\n scrollHeight: this.imageHeight,\n scrollWidth: this.imageWidth,\n offsetLeft: this.imageLeft,\n },\n pageNumber: 1,\n scale: this.zoom,\n rotation: this.rotation,\n id: 1\n }];\n\n this.store.dispatch(new fromDocument.AddPages(payload));\n }\n\n toggleCommentsSummary() {\n this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, OnDestroy, Output, EventEmitter } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { Subscription } from 'rxjs';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ViewerUtilService } from '../viewer-util.service';\n\n@Component({\n selector: 'mv-unsupported-viewer',\n templateUrl: './unsupported-viewer.component.html'\n})\nexport class UnsupportedViewerComponent implements OnInit, OnDestroy {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n @Input() typeException: boolean;\n\n @Output() loadStatus = new EventEmitter<ResponseType>();\n @Output() unsupportedViewerException = new EventEmitter<ViewerException>();\n\n @ViewChild('downloadLink', {static: false}) downloadLink: ElementRef;\n\n private subscriptions: Subscription[] = [];\n private viewerException: ViewerException;\n\n constructor(\n public readonly toolbarEvents: ToolbarEventService,\n private readonly viewerUtilService: ViewerUtilService,\n ) {}\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.downloadSubject.subscribe(() => this.downloadLink.nativeElement.click()),\n this.viewerUtilService.validateFile(this.url).subscribe(\n next => next,\n error => {\n this.viewerException = new ViewerException(error.name,\n { httpResponseCode: error.status, message: error.message });\n }\n )\n );\n\n this.loadStatus.emit(ResponseType.UNSUPPORTED);\n\n if (!this.typeException) {\n this.unsupportedViewerException.emit(this.viewerException);\n }\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { AnnotationSet } from '../../annotation-set/annotation-set.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { Comment } from '../../comment-set/comment/comment.model';\n\n@Injectable()\nexport class AnnotationApiService {\n\n public annotationApiUrl = '/em-anno';\n\n private annotationSetBaseUrl = '/annotation-sets';\n private annotationBaseUrl = '/annotations';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getAnnotationSet(documentId: string): Observable<any> { // todo add model\n const fixedUrl = `${this.annotationSetsFullUrl}/filter?documentId=${documentId}`;\n return this.httpClient\n .get<AnnotationSet>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public postAnnotationSet(body: Partial<AnnotationSet>): Observable<AnnotationSet> {\n return this.httpClient\n .post<AnnotationSet>(this.annotationSetsFullUrl, body, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response.body),\n catchError(() => [])\n );\n }\n\n public getComments(annotationSet: Observable<AnnotationSet>): Observable<Comment[]> {\n return annotationSet\n .pipe(\n map(this.sortAnnotations),\n map(this.extractComments)\n );\n }\n\n /**\n * Sort the annotations in the response by page and then y position of their first rectangle\n */\n private sortAnnotations(r: AnnotationSet): Annotation[] {\n return r.annotations.sort((a, b) => a.page !== b.page ? a.page - b.page : a.rectangles[0].y - b.rectangles[0].y);\n }\n\n private extractComments(annotations: Annotation[]) {\n return [].concat(...annotations.map(a => a.comments));\n }\n\n public deleteAnnotation(annotationId: string): Observable<null> {\n const url = `${this.annotationFullsUrl}/${annotationId}`;\n\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public postAnnotation(annotation: Partial<Annotation>): Observable<Annotation> {\n return this.httpClient\n .post<Annotation>(this.annotationFullsUrl, annotation, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n get annotationSetsFullUrl() {\n return this.annotationApiUrl + this.annotationSetBaseUrl;\n }\n\n get annotationFullsUrl() {\n return this.annotationApiUrl + this.annotationBaseUrl;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { CommentSetComponent } from '../comment-set.component';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { CommentComponent } from './comment.component';\n\n// TODO: replace by NgRx\n@Injectable()\nexport class CommentService {\n\n public readonly unsavedChanges = new Subject<boolean>();\n commentSetComponent: CommentSetComponent;\n\n setCommentSet(commentSetComponent) {\n this.commentSetComponent = commentSetComponent;\n }\n\n onCommentChange(changes: boolean): void {\n this.unsavedChanges.next(changes);\n }\n\n getUnsavedChanges(): Observable<boolean> {\n return this.unsavedChanges.asObservable();\n }\n\n hasUnsavedComments(annotation: Annotation): boolean {\n if (annotation.comments.length > 0) {\n const comment = this.getComment(annotation);\n return comment.hasUnsavedChanges;\n }\n return false;\n }\n\n updateUnsavedCommentsStatus(annotation: Annotation, hasUnsavedChanges: boolean): void {\n const comment = this.getComment(annotation);\n comment.hasUnsavedChanges = hasUnsavedChanges;\n this.allCommentsSaved();\n }\n\n getComment(annotation: Annotation): CommentComponent {\n return this.commentSetComponent.commentComponents\n .find(c => c.comment.annotationId === annotation.comments[0].annotationId);\n }\n\n resetCommentSet(): void {\n this.commentSetComponent = null;\n }\n\n allCommentsSaved(): void {\n this.onCommentChange(this.commentSetComponent.commentComponents.some(comment => comment.hasUnsavedChanges === true));\n }\n}\n","import {createSelector} from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromTags from '../reducers/tags.reducer';\n\nexport const getTagsRootState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.tags\n);\n\nexport const getTagEntities = createSelector(\n getTagsRootState,\n fromTags.getTagNameEnt\n);\n\nexport const getTagFilters = createSelector(\n getTagsRootState,\n fromTags.getFilters\n);\n\nexport const getTagFiltered = createSelector(\n getTagsRootState,\n fromTags.getFilteredComments\n);\n\nexport const getFilteredPageEntities = createSelector(\n getTagsRootState,\n fromTags.getFilteredPageEnt\n);\n\nexport const getAllTagsArr = createSelector(\n getTagEntities,\n (tagEnt) => Object.keys(tagEnt).map(key => {\n return {\n key,\n length: Object.keys(tagEnt[key]).length\n };\n })\n);\n","import {createSelector} from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromAnnotations from '../reducers/annotations.reducer';\nimport * as fromTags from './tag.selectors';\nimport * as fromDocument from './document.selectors';\nimport {StoreUtils} from '../store-utils';\nimport moment from 'moment-timezone';\nexport const getAnnotationsSetState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.annotations\n);\n\nexport const getAnnotationEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoEnt\n);\n\nexport const getSet = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoSet\n);\n\nexport const getDocumentIdSetId = createSelector(\n getSet,\n (annoSet) => {\n return {\n documentId: annoSet.documentId,\n annotationSetId: annoSet.id\n };\n }\n);\n\nexport const getAnnotationSet = createSelector(\n getAnnotationEntities,\n getSet,\n (entities, set) => {\n return {\n ...set,\n annotations: Object.keys(entities).map(key => entities[key])\n };\n }\n);\n\nexport const getSelectedAnnotation = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getSelectedAnno\n);\n\nexport const getCommentEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getCommentEnts\n);\n\n\nexport const getPageEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoPageEnt\n);\n\nexport const getComponentSearchQueries = createSelector(\n getAnnotationsSetState,\n fromAnnotations.commentSearchQ\n);\n\nexport const getComponentSearchText = createSelector(\n getComponentSearchQueries,\n (queries) => queries.commentSearch\n);\n\nexport const getCommentSummaryFilters = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getSummaryFilters\n);\n\nexport const getAnnoPerPage = createSelector(\n fromDocument.getPages,\n getPageEntities,\n fromTags.getFilteredPageEntities,\n (pages, pageEnt, filteredPageEnt) => {\n const isFiltered: boolean = !!Object.keys(filteredPageEnt).length;\n const entities = isFiltered ? filteredPageEnt : pageEnt;\n if (pages) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n arr.push({\n anno: entities[key] ? entities[key] : [],\n styles: pages[key].styles\n });\n });\n return arr;\n }\n }\n);\n\nexport const getCommentsArray = createSelector(\n getCommentEntities,\n fromDocument.getPages,\n getAnnotationEntities,\n fromTags.getTagFiltered,\n (commentEnts, pages, annoEnts, filtered) => {\n if (commentEnts && annoEnts && pages[1]) {\n const isFiltered: boolean = !!Object.keys(filtered).length;\n const com = isFiltered ? filtered : commentEnts;\n return Object.keys(com).map(key => {\n const page = annoEnts[key].page;\n return {\n ...commentEnts[key],\n page,\n pages\n };\n });\n }\n }\n);\n\nexport const getCommentSummary = createSelector(\n getCommentsArray,\n getCommentSummaryFilters,\n (commentSummary = [], filters) => {\n const comments = StoreUtils.filterCommentsSummary(commentSummary, filters.filters);\n if (comments.length) {\n return comments.map((comment) => {\n return {\n page: comment.page,\n user: comment.createdByDetails.forename.concat(' ').concat(comment.createdByDetails.surname),\n date: moment(comment.lastModifiedDate).format('D MMMM YYYY'),\n tags: comment.tags,\n comment: comment.content\n };\n });\n }\n return [''];\n }\n);\n\n\nexport const getFilteredAnnotations = createSelector(\n getAnnotationEntities,\n fromTags.getTagFiltered,\n (annoEnt, filters) => {\n const isFiltered: boolean = !!Object.keys(filters).length;\n const anno = isFiltered ? filters : annoEnt;\n return Object.keys(anno).map(key => annoEnt[key])\n .filter(annotation => annotation.comments && annotation.comments.length > 0);\n }\n);\n","import {\n AfterContentInit, AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n defaultImageOptions, defaultMultimediaOptions,\n defaultPdfOptions,\n defaultUnsupportedOptions,\n ToolbarButtonVisibilityService\n} from './toolbar/toolbar-button-visibility.service';\nimport { AnnotationSet } from './annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from './toolbar/toolbar-event.service';\nimport { AnnotationApiService } from './annotations/services/annotation-api/annotation-api.service';\nimport { ResponseType, ViewerException } from './viewers/viewer-exception.model';\nimport { CommentService } from './annotations/comment-set/comment/comment.service';\nimport 'hammerjs';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from './store/reducers/reducers';\nimport * as fromAnnoSelectors from './store/selectors/annotation.selectors';\nimport * as fromDocumentsSelector from './store/selectors/document.selectors';\nimport * as fromAnnoActions from './store/actions/annotation.actions';\nimport * as fromRedactActions from './store/actions/redaction.actions';\nimport * as fromDocumentActions from './store/actions/document.actions';\n\nenum CoreContentTypes {\n PDF = 'pdf',\n IMAGE = 'image'\n}\n\nenum MultimediaContentTypes {\n MP4 = 'mp4',\n MP3 = 'mp3',\n}\n\nenum ConvertibleContentTypes {\n EXCEL = 'excel',\n WORD = 'word',\n POWERPOINT = 'powerpoint',\n TXT = 'txt',\n RTF = 'rtf'\n}\n\n@Component({\n selector: 'mv-media-viewer',\n templateUrl: './media-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class MediaViewerComponent implements OnChanges, OnDestroy, AfterContentInit, AfterViewChecked {\n\n @ViewChild('viewerRef', {static: false}) viewerRef: ElementRef;\n\n @Input() url;\n @Input() downloadFileName: string;\n @Input() contentType: string;\n\n @Input() showToolbar = true;\n @Input() toolbarButtonOverrides: any = {};\n\n @Input()\n public height: string;\n public viewerHeight: string;\n\n @Input() width = '100%';\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() viewerException = new EventEmitter<ViewerException>();\n @Output() toolbarEventsOutput = new EventEmitter<ToolbarEventService>();\n @Output() unsavedChanges = new EventEmitter<boolean>();\n\n @Input() enableAnnotations = false;\n @Input() annotationApiUrl;\n\n @Input() enableRedactions = false;\n @Input() enableICP = false;\n @Input() multimediaPlayerEnabled = false;\n\n\n @Input() caseId: string;\n\n multimediaContent = false;\n convertibleContent = false;\n unsupportedContent = false;\n\n documentTitle: string;\n showCommentSummary: boolean;\n annotationSet$: Observable<AnnotationSet | {}>;\n hasScrollBar: boolean;\n typeException = false;\n hasDifferentPageSize$: Observable<boolean>;\n\n private $subscriptions: Subscription;\n private prevOffset: number;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService,\n private readonly api: AnnotationApiService,\n private readonly commentService: CommentService,\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n if (this.annotationApiUrl) {\n api.annotationApiUrl = this.annotationApiUrl;\n }\n }\n\n ngAfterContentInit() {\n this.annotationSet$ = this.store.pipe(select(fromAnnoSelectors.getAnnotationSet));\n this.hasDifferentPageSize$ = this.store.pipe(select(fromDocumentsSelector.getPageDifference));\n this.setToolbarButtons();\n this.toolbarEventsOutput.emit(this.toolbarEvents);\n this.$subscriptions = this.commentService.getUnsavedChanges()\n .subscribe(changes => this.onCommentChange(changes));\n this.$subscriptions.add(this.toolbarEvents.getShowCommentSummary()\n .subscribe(changes => this.showCommentSummary = changes));\n }\n\n ngAfterViewChecked(): void {\n if (this.height && this.viewerHeight !== this.height) {\n this.viewerHeight = this.height;\n this.cdr.detectChanges();\n return;\n }\n\n if (!this.height) {\n const compOffsetTop = this.elRef.nativeElement.getBoundingClientRect().top;\n const viewerOffsetTop = this.viewerRef.nativeElement.offsetTop;\n const offset = compOffsetTop + viewerOffsetTop;\n\n if (this.prevOffset !== offset) {\n this.viewerHeight = `calc(100vh - ${offset}px)`;\n this.prevOffset = offset;\n this.cdr.detectChanges();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.annotationApiUrl) {\n this.api.annotationApiUrl = this.annotationApiUrl;\n }\n\n if (changes.url) {\n this.toolbarEvents.reset();\n this.commentService.resetCommentSet();\n const documentId = this.extractDMStoreDocId(this.url);\n this.store.dispatch(new fromDocumentActions.SetDocumentId(documentId));\n if (this.enableAnnotations && !(this.multimediaContent || this.unsupportedContent)) {\n this.store.dispatch(new fromAnnoActions.LoadAnnotationSet(documentId));\n }\n if (this.enableRedactions && !(this.multimediaContent || this.unsupportedContent)) {\n this.store.dispatch(new fromRedactActions.LoadRedactions(documentId));\n }\n if (this.contentType === 'image') {\n this.documentTitle = null;\n }\n }\n\n if (changes.contentType) {\n this.convertibleContent = this.needsConverting();\n this.multimediaContent = this.isMultimedia();\n this.unsupportedContent = !this.isSupported();\n }\n\n this.setToolbarButtons();\n this.detectOs();\n this.typeException = false;\n }\n\n ngOnDestroy() {\n this.$subscriptions.unsubscribe();\n }\n\n needsConverting(): boolean {\n return this.contentType !== null && Object.keys(ConvertibleContentTypes).includes(this.contentType.toUpperCase());\n }\n\n isMultimedia(): boolean {\n return this.contentType !== null && Object.keys(MultimediaContentTypes).includes(this.contentType.toUpperCase());\n }\n\n isSupported(): boolean {\n const supportedTypes = Object.assign({}, MultimediaContentTypes, ConvertibleContentTypes, CoreContentTypes);\n return this.contentType !== null && Object.keys(supportedTypes).includes(this.contentType.toUpperCase());\n }\n\n onMediaLoad(status: ResponseType) {\n this.mediaLoadStatus.emit(status);\n }\n\n setToolbarButtons() {\n if (this.contentType === CoreContentTypes.PDF || this.needsConverting()) {\n this.toolbarButtons.setup({\n ...defaultPdfOptions, showHighlightButton: this.enableAnnotations, showDrawButton: this.enableAnnotations,\n ...this.toolbarButtonOverrides\n });\n } else if (this.contentType === CoreContentTypes.IMAGE) {\n this.toolbarButtons.setup({\n ...defaultImageOptions, showDrawButton: this.enableAnnotations,\n ...this.toolbarButtonOverrides\n });\n } else if (this.isMultimedia()) {\n this.toolbarButtons.setup({\n ...defaultMultimediaOptions,\n ...this.toolbarButtonOverrides\n });\n } else {\n this.toolbarButtons.setup({\n ...defaultUnsupportedOptions,\n ...this.toolbarButtonOverrides\n });\n }\n }\n\n onLoadException(exception: ViewerException) {\n this.viewerException.emit(exception);\n if (!this.isSupported()) {\n this.typeException = false;\n } else {\n this.typeException = true;\n this.contentType = null;\n this.setToolbarButtons();\n }\n }\n\n onCommentChange(changes: boolean) {\n this.unsavedChanges.emit(changes);\n }\n\n onDocumentTitleChange(title: string) {\n this.documentTitle = title;\n }\n\n private extractDMStoreDocId(url: string): string {\n url = url.includes('/documents/') ? url.split('/documents/')[1] : url;\n return url.replace('/binary', '');\n }\n\n detectOs() {\n this.hasScrollBar = window.navigator.userAgent.indexOf('Win') !== -1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Number Helper Service\n * */\n@Injectable({\n providedIn: 'root'\n})\n\nexport class NumberHelperService {\n constructor() { }\n\n public isNumber(value: string | number): boolean {\n return (\n value !== null\n && value !== undefined\n && value !== ''\n && !isNaN(Number(value.toString()))\n );\n }\n }\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { NumberHelperService } from '../../../lib/shared/util/services/number.helper.service';\n\n@Component({\n selector: 'mv-main-toolbar',\n templateUrl: './main-toolbar.component.html'\n})\nexport class MainToolbarComponent implements OnInit, OnDestroy, AfterViewInit {\n\n @Input() enableAnnotations = false;\n @Input() enableRedactions = false;\n @Input() enableICP = false;\n @Input() contentType = null;\n\n @ViewChild('zoomSelect', {static: false}) public zoomSelect: ElementRef;\n @ViewChild('mvToolbarMain', {static: false}) public mvToolbarMain: ElementRef<HTMLElement>;\n @ViewChild('dropdownMenu', {static: false}) public mvMenuItems: ElementRef<HTMLElement>;\n\n private readonly subscriptions: Subscription[] = [];\n\n public icpEnabled = false;\n public redactionEnabled = false;\n public showCommentsPanel: boolean;\n\n public pageNumber = 1;\n public pageCount = 0;\n public isDropdownMenuOpen = false;\n public dropdownMenuPositions = [\n new ConnectionPositionPair(\n {\n originX: 'end',\n originY: 'bottom'\n },\n {\n overlayX: 'end',\n overlayY: 'top'\n },\n 0,\n 3)\n ];\n\n public zoomScales = [0.1, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2.5, 3, 5];\n\n allButtonsWidth = 0;\n widthRequiredForBtn: { [id: string]: number } = {};\n\n public constructor(\n public readonly toolbarEvents: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private readonly cdr: ChangeDetectorRef,\n private readonly numberHelper: NumberHelperService\n ) {\n }\n\n public ngOnInit() {\n this.subscriptions.push(\n this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.setCurrentPage(pageNumber)),\n this.toolbarEvents.setCurrentPageInputValueSubject.subscribe(pageNumber => this.pageNumber = pageNumber),\n this.toolbarEvents.getPageCount().subscribe(count => this.pageCount = count),\n this.toolbarEvents.icp.enabled.subscribe(enabled => {\n this.icpEnabled = enabled;\n if (this.icpEnabled) {\n this.toolbarEvents.toggleCommentsPanel(!enabled);\n this.toolbarEvents.sidebarOpen.next(false);\n }\n }),\n this.toolbarEvents.redactionMode.subscribe(enabled => {\n this.redactionEnabled = enabled;\n }),\n );\n }\n\n public ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n public ngAfterViewInit() {\n Array.from(this.mvToolbarMain.nativeElement.children).forEach(button => {\n this.allButtonsWidth += button.getBoundingClientRect().width;\n this.widthRequiredForBtn[button.id] = this.allButtonsWidth;\n });\n this.cdr.detectChanges();\n }\n\n @HostListener('window:resize', [])\n public onResize() {\n this.cdr.detectChanges();\n }\n\n public onClickHighlightToggle() {\n this.toolbarEvents.toggleHighlightMode();\n }\n public onClickDrawToggle() {\n this.toolbarEvents.toggleDrawMode();\n }\n\n public toggleSideBar() {\n this.toolbarEvents.sidebarOpen.next(!this.toolbarEvents.sidebarOpen.getValue());\n }\n\n public togglePresentBar() {\n this.toolbarEvents.searchBarHidden.next(true);\n this.toolbarEvents.icp.enable();\n }\n\n public increasePageNumber() {\n this.toolbarEvents.incrementPage(1);\n }\n\n public decreasePageNumber() {\n this.toolbarEvents.incrementPage(-1);\n }\n\n public onPageNumberInputChange(pageNumber: string) {\n if (Number(pageNumber) < 1) {\n pageNumber = '1';\n }\n if (Number(pageNumber) > this.pageCount) {\n pageNumber = this.pageCount.toString();\n }\n\n this.toolbarEvents.setPage(Number.parseInt(pageNumber, 10));\n }\n\n private setCurrentPage(pageNumber: number) {\n this.pageNumber = pageNumber;\n }\n\n public rotate(rotation: number) {\n this.toolbarEvents.rotate(rotation);\n }\n\n public printFile() {\n this.toolbarEvents.print();\n }\n\n public downloadFile() {\n this.toolbarEvents.download();\n }\n\n public zoom(zoomFactor: string) {\n this.toolbarEvents.zoom(+zoomFactor);\n }\n\n public stepZoom(zoomFactor: number) {\n this.toolbarEvents.stepZoom(zoomFactor);\n this.zoomSelect.nativeElement.selected = 'selected';\n }\n\n public toggleCommentsPanel() {\n this.toolbarEvents.toggleCommentsPanel(!this.toolbarEvents.commentsPanelVisible.getValue());\n }\n\n public toggleRedactBar() {\n this.toolbarEvents.toggleRedactionMode();\n }\n\n public toggleGrabNDrag() {\n this.toolbarEvents.toggleGrabNDrag();\n }\n\n public isPdf() {\n return this.contentType === 'pdf';\n }\n\n public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n\n public toggleMoreOptions() {\n this.isDropdownMenuOpen = !this.isDropdownMenuOpen;\n setTimeout(() => {\n if (this.mvMenuItems) {\n this.mvMenuItems.nativeElement.focus();\n }\n }, 100);\n }\n}\n","import { Component, ElementRef, HostListener, OnInit, ViewChild, OnDestroy } from '@angular/core';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { SearchResultsCount, ToolbarEventService } from '../toolbar-event.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'mv-search-bar',\n templateUrl: './search-bar.component.html'\n})\nexport class SearchBarComponent implements OnInit, OnDestroy {\n\n @ViewChild('findInput', {static: true}) findInput: ElementRef<HTMLInputElement>;\n\n highlightAll = true;\n matchCase = false;\n wholeWord = false;\n resultsText = '';\n searchText = '';\n resultCount = 0;\n\n private subscriptions: Subscription[] = [];\n\n public advancedSearchVisible = false;\n\n constructor(\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService\n ) { }\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results))\n );\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n public onWindowKeyDown(e: KeyboardEvent): void {\n if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {\n e.preventDefault();\n\n this.toolbarEvents.searchBarHidden.next(false);\n setTimeout(() => this.findInput.nativeElement.focus(), 200);\n }\n }\n\n public searchNext(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: false,\n reset: false\n });\n }\n\n public searchPrev(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: true,\n reset: false\n });\n }\n\n public search(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: false,\n reset: true\n });\n }\n\n private setSearchResultsCount(results: SearchResultsCount): void {\n this.resultCount = results.total;\n this.resultsText = this.resultCount > 0\n ? `Found ${results.current} of ${results.total}`\n : 'No results found';\n }\n\n public onEscapeKeyPress(e: KeyboardEvent): void {\n this.toolbarEvents.searchBarHidden.next(true);\n }\n\n public onEnterKeyPress(e: KeyboardEvent): void {\n this.search();\n }\n\n\n public toggleAdvancedSearch(): void {\n this.advancedSearchVisible = !this.advancedSearchVisible;\n }\n\n public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n}\n","import {createSelector} from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromRedactions from '../reducers/redaction.reducer';\nimport * as fromDocument from './document.selectors';\n\nexport const getRedactionState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.redactions\n);\n\nexport const getRedactionPages = createSelector(\n getRedactionState,\n fromRedactions.getPageEnt\n);\n\nexport const getSelected = createSelector(\n getRedactionState,\n fromRedactions.getSelectedRedaction\n);\n\nexport const getRedactedDocumentInfo = createSelector(\n getRedactionState,\n fromRedactions.getRedactedDocInfo\n);\n\nexport const getRedactionEnt = createSelector(\n getRedactionState,\n fromRedactions.getRedactionEnt\n);\n\nexport const getRedactionArray = createSelector(\n getRedactionEnt,\n fromDocument.getDocumentId,\n (ent, documentId) => {\n const redactions = Object.keys(ent).map(key => ent[key]);\n return { redactions, documentId };\n }\n);\n\nexport const getRedactionsPerPage = createSelector(\n fromDocument.getPages,\n getRedactionPages,\n (pages, pageEnt) => {\n if (pages && pageEnt) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n arr.push({\n anno: pageEnt[key] ? pageEnt[key] : [],\n styles: pages[key].styles\n });\n });\n\n return arr;\n }\n }\n);\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromRedactSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Subscription } from 'rxjs';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\n\n@Component({\n selector: 'mv-redaction-toolbar',\n templateUrl: './redaction-toolbar.component.html'\n})\nexport class RedactionToolbarComponent implements OnInit, OnDestroy {\n\n preview = false;\n hasRedactions = false;\n $subscription: Subscription;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n ngOnInit(): void {\n this.$subscription = this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {\n this.hasRedactions = !!redactions.redactions.length;\n });\n }\n\n toggleTextRedactionMode() {\n this.toolbarEventService.highlightModeSubject.next(true);\n }\n\n toggleDrawMode() {\n this.toolbarEventService.drawModeSubject.next(true);\n }\n\n togglePreview() {\n this.preview = !this.preview;\n this.toolbarEventService.toggleRedactionPreview(this.preview);\n }\n\n unmarkAll() {\n this.toolbarEventService.unmarkAll();\n }\n\n redact() {\n this.toolbarEventService.applyRedactionToDocument();\n }\n\n toggleRedactBar() {\n this.toolbarEventService.toggleRedactionMode();\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n}\n","import { createSelector } from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromIcp from '../reducers/icp.reducer';\n\nexport const getIcpState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.icp\n);\n\nexport const getIcpSession = createSelector(\n getIcpState,\n fromIcp.getIcpSession\n);\n\nexport const getCaseId = createSelector(\n getIcpSession,\n session => session === null ? null : session.caseId\n);\n\nexport const getPresenter = createSelector(\n getIcpState,\n fromIcp.getPresenter\n);\n\nexport const getPresenterName = createSelector(\n getPresenter,\n presenter => presenter === null ? null : presenter.username\n);\n\nexport const getClient = createSelector(\n getIcpState,\n fromIcp.getClient\n);\n\nexport const isPresenter = createSelector(\n getPresenter,\n getClient,\n (presenter, client) => presenter === null ? undefined : presenter.id === client.id // isPresenter is called when = false.\n);\n\nexport const getParticipants = createSelector(\n getIcpState,\n fromIcp.getParticipants\n);\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromIcpSelectors from '../../store/selectors/icp.selectors';\nimport { Subscription } from 'rxjs';\nimport { IcpState } from '../../icp/icp.interfaces';\n\n@Component({\n selector: 'mv-icp-toolbar',\n templateUrl: './icp-toolbar.component.html'\n})\nexport class IcpToolbarComponent implements OnInit, OnDestroy {\n\n presenterName: string;\n isPresenter: boolean;\n\n private $subscription: Subscription;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n private store: Store<IcpState>) {}\n\n ngOnInit() {\n this.$subscription = this.store.pipe(select(fromIcpSelectors.isPresenter))\n .subscribe(isPresenter => this.isPresenter = isPresenter);\n this.$subscription.add(this.store.pipe(select(fromIcpSelectors.getPresenterName))\n .subscribe(name => this.presenterName = name));\n }\n\n ngOnDestroy() {\n this.$subscription.unsubscribe();\n }\n\n present() {\n this.toolbarEventService.icp.becomePresenter();\n }\n\n stopPresenting() {\n this.toolbarEventService.icp.stopPresenting();\n }\n\n leaveIcpSession() {\n this.toolbarEventService.icp.leaveSession();\n }\n\n showParticipantsList() {\n this.toolbarEventService.toggleParticipantsList(!this.toolbarEventService.icp.participantsListVisible.getValue());\n }\n}\n"," import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MainToolbarComponent } from './main-toolbar/main-toolbar.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { FormsModule } from '@angular/forms';\nimport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nimport { ToolbarEventService } from './toolbar-event.service';\nimport { RedactionToolbarComponent } from './redaction-toolbar/redaction-toolbar.component';\nimport { IcpToolbarComponent } from './icp-toolbar/icp-toolbar.component';\nexport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nexport { ToolbarEventService } from './toolbar-event.service';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RouterModule } from '@angular/router';\n\n\n@NgModule({\n declarations: [\n SearchBarComponent,\n MainToolbarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent\n ],\n providers: [\n ToolbarButtonVisibilityService,\n ToolbarEventService\n ],\n exports: [\n MainToolbarComponent,\n SearchBarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n RouterModule\n ]\n})\nexport class ToolbarModule { }\n","import { Component, EventEmitter, Input, Output, ViewChild, ElementRef } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Annotation } from './annotation.model';\nimport { Rectangle } from './rectangle/rectangle.model';\nimport moment from 'moment-timezone';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromActions from '../../../store/actions/annotation.actions';\nimport {SelectionAnnotation} from '../../models/event-select.model';\nimport {ToolbarEventService} from '../../../toolbar/toolbar-event.service';\nimport { Comment } from '../../comment-set/comment/comment.model';\n\n@Component({\n selector: 'mv-annotation',\n templateUrl: './annotation-view.component.html'\n})\nexport class AnnotationViewComponent { // todo rename this to selection vew c\n\n @Input() set annotation(value) {\n this.anno = {...value};\n }\n anno: Annotation;\n selected: boolean;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() set selectedAnnoId(selectedId: { annotationId: string }) {\n if (selectedId) {\n const id = this.anno.id || this.anno.redactionId; // todo make it unique\n this.selected = selectedId.annotationId ? (selectedId.annotationId === id) : false;\n }\n }\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n @Output() update = new EventEmitter<Annotation>();\n @Output() delete = new EventEmitter<Annotation>();\n @Output() annotationClick = new EventEmitter<SelectionAnnotation>();\n\n @ViewChild('container', {static: false}) container: ElementRef;\n\n constructor(\n private readonly toolbarEvents: ToolbarEventService,\n private store: Store<fromStore.AnnotationSetState>\n ) {}\n\n public onSelect() {\n const annotationId = this.anno.id || this.anno.redactionId;\n this.annotationClick.emit({ annotationId, editable: false, selected: true });\n }\n\n public onRectangleUpdate(rectangle: Rectangle) {\n const annotation = {...this.anno};\n annotation.rectangles = annotation.rectangles.filter(r => r.id !== rectangle.id);\n annotation.rectangles.push(rectangle);\n this.update.emit(annotation);\n }\n\n public deleteHighlight() {\n this.delete.emit(this.anno);\n }\n\n public addOrEditComment() {\n if (this.anno.comments.length === 0) {\n const comment: Comment = {\n annotationId: this.anno.id,\n content: '',\n createdBy: this.anno.createdBy,\n createdByDetails: undefined,\n createdDate: moment.utc().tz('Europe/London').toISOString(),\n id: uuid(),\n lastModifiedBy: '',\n lastModifiedByDetails: undefined,\n lastModifiedDate: '',\n tags: [],\n page: null,\n pages: {},\n pageHeight: null,\n selected: false,\n editable: false\n };\n this.store.dispatch(new fromActions.AddOrEditComment(comment));\n\n }\n this.selected = true;\n this.annotationClick.emit({ annotationId: this.anno.id, editable: true, selected: true });\n this.toolbarEvents.toggleCommentsPanel(true);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Annotation } from './annotation-view/annotation.model';\nimport { Observable } from 'rxjs';\nimport { SelectionAnnotation } from '../models/event-select.model';\nimport { CommentService } from '../comment-set/comment/comment.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromActions from '../../store/actions/annotation.actions';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\n\n@Component({\n selector: 'mv-annotation-set',\n templateUrl: './annotation-set.component.html'\n})\nexport class AnnotationSetComponent implements OnInit {\n\n @Input() page: number;\n @Input() annotations: Annotation[] = [];\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n selectedAnnotation$: Observable<SelectionAnnotation>;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService\n ) {}\n\n ngOnInit(): void {\n this.selectedAnnotation$ = this.store.pipe(select(fromSelectors.getSelectedAnnotation));\n }\n\n public onAnnotationUpdate(annotation: Annotation) {\n this.store.dispatch(new fromActions.SaveAnnotation(annotation));\n }\n\n public onAnnotationDelete(annotation: Annotation) {\n if (annotation.comments.length > 0) {\n this.commentService.updateUnsavedCommentsStatus(annotation, false);\n }\n this.store.dispatch(new fromActions.DeleteAnnotation(annotation.id));\n }\n\n selectAnnotation(selectedAnnotation: SelectionAnnotation) {\n this.store.dispatch(new fromActions.SelectedAnnotation(selectedAnnotation));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\nimport moment from 'moment-timezone';\n\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromSelectors from '../../../../store/selectors/annotation.selectors';\nimport * as fromActions from '../../../../store/actions/annotation.actions';\nimport { Annotation } from '../../annotation-view/annotation.model';\n\n@Injectable()\nexport class HighlightCreateService {\n\n constructor(private toolBarEvents: ToolbarEventService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n saveAnnotation(rectangles: Rectangle[], page: number) {\n this.store.pipe(select(fromSelectors.getDocumentIdSetId), take(1)).subscribe(anoSetDocId => {\n const anno: Annotation = {\n id: uuid(),\n color: 'FFFF00',\n comments: [],\n page: page,\n rectangles: rectangles,\n type: 'highlight',\n ...anoSetDocId,\n createdBy: '',\n createdByDetails: undefined,\n createdDate: moment.utc().tz('Europe/London').toISOString(),\n lastModifiedBy: '',\n lastModifiedByDetails: undefined,\n lastModifiedDate: '',\n tags: [],\n };\n this.store.dispatch(new fromActions.SaveAnnotation(anno));\n });\n }\n\n applyRotation(pageHeight, pageWidth, offsetHeight, offsetWidth, offsetTop, offsetLeft, rotate, zoom ) {\n const { x, y, width, height } = {\n x: +(offsetLeft / zoom).toFixed(2),\n y: +(offsetTop / zoom).toFixed(2),\n width: +(offsetWidth / zoom).toFixed(2),\n height: +(offsetHeight / zoom).toFixed(2)\n };\n const rectangle = { x, y, width, height };\n switch (rotate) {\n case 90:\n rectangle.width = height;\n rectangle.height = width;\n rectangle.x = y;\n rectangle.y = +(pageWidth / zoom - x - width).toFixed(2);\n break;\n case 180:\n rectangle.x = +(pageWidth / zoom - x - width).toFixed(2);\n rectangle.y = +(pageHeight / zoom - y - height).toFixed(2);\n break;\n case 270:\n rectangle.width = height;\n rectangle.height = width;\n rectangle.x = +(pageHeight / zoom - y - height).toFixed(2);\n rectangle.y = x;\n break;\n }\n return rectangle as any;\n }\n\n resetHighlight() {\n window.getSelection().removeAllRanges();\n this.toolBarEvents.highlightModeSubject.next(false);\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Rectangle } from './rectangle.model';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HighlightCreateService } from '../../annotation-create/highlight-create/highlight-create.service';\n\n@Component({\n selector: 'mv-anno-rectangle',\n templateUrl: './rectangle.component.html'\n})\nexport class RectangleComponent implements OnChanges, AfterViewInit, OnDestroy {\n\n @Input() color: String;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() editable: boolean;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n @Output() select = new EventEmitter<Rectangle>();\n @Output() update = new EventEmitter<Rectangle>();\n\n @ViewChild('rectElement', {static: false}) viewRect: ElementRef;\n\n private subscriptions: Subscription[] = [];\n _selected: boolean;\n enableGrabNDrag = false;\n\n height: number;\n width: number;\n top: number;\n left: number;\n\n _annoRect: Rectangle;\n @Input()\n set annoRect(annoRect: Rectangle) {\n this._annoRect = { ...annoRect };\n this.height = +(annoRect.height * this.zoom).toFixed(2);\n this.width = +(annoRect.width * this.zoom).toFixed(2);\n this.left = +(annoRect.x * this.zoom).toFixed(2);\n this.top = +(annoRect.y * this.zoom).toFixed(2);\n }\n\n get annoRect() {\n return this._annoRect;\n }\n\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly highlightService: HighlightCreateService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.rotate) {\n this.adjustForRotation(this.rotate);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag)\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.filter(subscription => !subscription.closed)\n .forEach(subscription => subscription.unsubscribe());\n }\n\n @Input()\n set selected(selected: boolean) {\n this._selected = selected;\n if (this._selected && this.viewRect) {\n this.viewRect.nativeElement.focus();\n }\n }\n\n get selected() {\n return this._selected;\n }\n\n onClick() {\n this.select.emit(this.annoRect);\n }\n\n onUpdate(viewRect: any) {\n const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = viewRect;\n if (this.hasRectangleChanged(viewRect)) {\n let rectangle = this.highlightService\n .applyRotation(this.pageHeight, this.pageWidth, offsetHeight, offsetWidth, offsetTop, offsetLeft, this.rotate, this.zoom);\n rectangle = { ...this.annoRect, ...rectangle };\n this.update.emit({ ...rectangle });\n }\n }\n\n adjustForRotation(rotation: number) {\n const { top, left, height, width } = this;\n switch (rotation) {\n case 90:\n this.width = height;\n this.height = width;\n this.left = this.pageWidth - top - height;\n this.top = left;\n break;\n case 180:\n this.left = this.pageWidth - left - width;\n this.top = this.pageHeight - top - height;\n break;\n case 270:\n this.width = height;\n this.height = width;\n this.left = top;\n this.top = this.pageHeight - left - width;\n break;\n }\n }\n\n hasRectangleChanged(viewRect): boolean {\n return this.left !== viewRect.offsetLeft ||\n this.top !== viewRect.offsetTop ||\n this.width !== viewRect.offsetWidth ||\n this.height !== viewRect.offsetHeight;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TagsModel } from '../../models/tags.model';\n\n@Injectable()\nexport class TagsServices {\n\n public tagItems: {[id: string]: TagsModel[]};\n\n constructor(private http: HttpClient) {}\n\n public getAllTags(createdBy: string): Observable<TagsModel[]> {\n const url = `/em-anno/tags/${createdBy}`;\n return this.http.get<TagsModel[]>(url);\n }\n\n // @TODO: Move everything below this to NgRx store\n getNewTags(annoid: string): TagsModel[] {\n return this.tagItems ? this.tagItems[annoid] : [];\n }\n\n updateTagItems(items: Array<TagsModel>, annoId: string) {\n const snakeCased = items.map(item => {\n return {\n ...item,\n name: this.snakeCase(item.name)\n };\n });\n\n this.tagItems = {\n ...this.tagItems,\n [annoId]: snakeCased\n };\n }\n\n private snakeCase = string => {\n // transform string_to_snake_case\n return string.replace(/ +/g, ' ') // find space\n .split(/ |\\B(?=[A-Z])/) // split it into array\n .map(word => word.toLowerCase()) // transform to lover case\n .join('_'); // trun array into sting using _\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {Comment} from './comment.model';\nimport {User} from '../../models/user.model';\nimport {Rectangle} from '../../annotation-set/annotation-view/rectangle/rectangle.model';\nimport {SelectionAnnotation} from '../../models/event-select.model';\nimport {CommentService} from './comment.service';\nimport {TagsModel} from '../../models/tags.model';\nimport {TagsServices} from '../../services/tags/tags.services';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromSelector from '../../../store/selectors/annotation.selectors';\nimport { AnnotationSet } from '../../annotation-set/annotation-set.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\n\n@Component({\n selector: 'mv-anno-comment',\n templateUrl: './comment.component.html'\n})\nexport class CommentComponent implements OnInit, OnDestroy, AfterContentInit {\n\n CHAR_LIMIT = 5000;\n lastUpdate: string;\n originalComment: string;\n fullComment: string;\n author: User;\n createdBy: string;\n editor: User;\n _comment: Comment;\n _editable: boolean;\n _rectangle;\n totalPrevPagesHeight = 0;\n rectTop;\n rectLeft;\n pageHeight: number;\n hasUnsavedChanges = false;\n selected: boolean;\n searchString: string;\n public tagItems: TagsModel[];\n\n\n @Output() commentClick = new EventEmitter<SelectionAnnotation>();\n @Output() renderComments = new EventEmitter<Comment>();\n @Output() delete = new EventEmitter<Comment>();\n @Output() updated = new EventEmitter<{comment: Comment, tags: TagsModel[]}>();\n @Output() changes = new EventEmitter<boolean>();\n @Input() rotate = 0;\n @Input() zoom = 1;\n @Input() index: number;\n @Input() page: number;\n\n @ViewChild('form', {static: false}) form: ElementRef;\n @ViewChild('editableComment', {static: false}) editableComment: ElementRef<HTMLElement>;\n\n private subscriptions: Subscription;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService,\n private tagsServices: TagsServices\n ) {}\n\n\n ngOnInit(): void {\n this.subscriptions = this.store.select(fromSelector.getComponentSearchText)\n .pipe(distinctUntilChanged()).subscribe(searchString => this.searchString = searchString);\n this.reRenderComments();\n }\n\n ngAfterContentInit(): void {\n if (this.tagItems && this.tagItems.length) {\n this.tagsServices.updateTagItems(this.tagItems, this._comment.annotationId);\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @Input()\n set comment(comment: Comment) {\n this._comment = {...comment};\n this.page = this._comment.page;\n this.lastUpdate = comment.lastModifiedDate ? comment.lastModifiedDate : comment.createdDate;\n this.author = comment.createdByDetails;\n this.createdBy = comment.createdBy;\n this.editor = comment.lastModifiedByDetails;\n this.originalComment = comment.content;\n this.fullComment = this.originalComment;\n this.selected = this._comment.selected;\n this._editable = this._comment.editable;\n this.tagItems = this._comment.tags;\n const pageMarginBottom = 10;\n this.totalPrevPagesHeight = 0;\n for (let i = 0; i < this.page - 1; i++) {\n const height = this._comment.pages[i + 1] ? this._comment.pages[i + 1].styles.height : undefined;\n if (height) {\n this.totalPrevPagesHeight += height + pageMarginBottom;\n }\n }\n\n }\n\n get comment() {\n return this._comment;\n }\n\n @Input()\n set annotation(annotation: Annotation) {\n this._rectangle = annotation.rectangles\n .reduce((prev, current) => prev.y < current.y ? prev : current);\n const actualHeight = this._comment.pages[this.page].styles.height / this.zoom;\n switch (this.rotate) {\n case 90: this.rectTop = this._rectangle.x;\n break;\n case 180: this.rectTop = actualHeight - (this._rectangle.y + this._rectangle.height);\n break;\n case 270: this.rectTop = actualHeight - (this._rectangle.x + this._rectangle.width);\n break;\n default: this.rectTop = this._rectangle.y;\n }\n this.rectLeft = this._rectangle.x;\n }\n\n get editable(): boolean {\n return this._editable;\n }\n\n onCommentChange(updatedComment) {\n this.hasUnsavedChanges =\n this.originalComment.substring(0, this.CHAR_LIMIT) !== updatedComment.substring(0, this.CHAR_LIMIT);\n this.commentService.onCommentChange(this.hasUnsavedChanges);\n }\n\n deleteOrCancel() {\n if (!this.editable) {\n this.delete.emit(this._comment);\n } else {\n this.hasUnsavedChanges = false;\n this._editable = false;\n this.fullComment = this.originalComment;\n this.changes.emit(false);\n if (!this.author && !this.fullComment) {\n this.delete.emit(this._comment);\n }\n }\n }\n\n public editOrSave() {\n if (!this.editable) {\n this._editable = true;\n } else {\n this._comment.content = this.fullComment.substring(0, this.CHAR_LIMIT);\n const tags = this.tagsServices.getNewTags(this._comment.annotationId);\n const payload = {\n comment: this._comment,\n tags\n };\n this.updated.emit(payload);\n this.hasUnsavedChanges = false;\n this._editable = false;\n this.changes.emit(false);\n }\n }\n\n onCommentClick() {\n if (!this.selected) {\n this.selected = true;\n this._editable = false;\n this.commentClick.emit({ annotationId: this._comment.annotationId, editable: this._editable, selected: true });\n }\n }\n\n reRenderComments() {\n this.renderComments.emit(this._comment);\n }\n\n get commentTop(): number {\n return this.totalPrevPagesHeight + (this.rectTop * this.zoom);\n }\n\n\n get height() {\n return this.form.nativeElement.getBoundingClientRect().height / this.zoom;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { Rectangle } from '../annotation-view/rectangle/rectangle.model';\n\n@Component({\n selector: 'mv-ctx-toolbar',\n templateUrl: './ctx-toolbar.component.html'\n})\nexport class CtxToolbarComponent implements OnChanges {\n\n readonly defaultHeight;\n readonly defaultWidth;\n\n @Input() zoom;\n @Input() rotate;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n @Input() canHighlight: boolean;\n @Input() canBookmark: boolean;\n @Input() canComment: boolean;\n @Input() canDelete: boolean;\n\n @Output() createHighlightEvent = new EventEmitter();\n @Output() deleteHighlightEvent = new EventEmitter();\n @Output() addOrEditCommentEvent = new EventEmitter();\n @Output() createBookmarkEvent = new EventEmitter<Rectangle>();\n\n rectangle: Rectangle;\n _rectangles: Rectangle[];\n top: number;\n left: number;\n\n constructor() {\n this.defaultHeight = 70;\n this.defaultWidth = 300;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.setRectangle();\n this.top = this.popupTop();\n this.left = this.popupLeft();\n }\n\n @Input() set rectangles(rectangles: Rectangle[]) {\n if (rectangles) {\n this._rectangles = rectangles;\n this.setRectangle();\n }\n }\n\n get rectangles() {\n return this._rectangles;\n }\n\n createHighlight() {\n this.createHighlightEvent.emit();\n this.rectangle = undefined;\n }\n\n deleteHighlight() {\n this.deleteHighlightEvent.emit();\n }\n\n addOrEditComment() {\n this.addOrEditCommentEvent.emit();\n }\n\n createBookmark() {\n this.createBookmarkEvent.emit(this.rectangle);\n this.rectangle = undefined;\n }\n\n setRectangle() {\n const rectangle = this.rectangles\n .reduce((prev, current) => prev.y < current.y ? prev : current);\n this.rectangle = { ...rectangle };\n switch (this.rotate) {\n case 90:\n this.rectangle.width = rectangle.height;\n this.rectangle.height = rectangle.width;\n this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.y - rectangle.height;\n this.rectangle.y = rectangle.x;\n break;\n case 180:\n this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.x - rectangle.width;\n this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.y - rectangle.height;\n break;\n case 270:\n this.rectangle.width = rectangle.height;\n this.rectangle.height = rectangle.width;\n this.rectangle.x = rectangle.y;\n this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.x - rectangle.width;\n break;\n }\n }\n\n popupTop() {\n const popupTop = this.rectangle.y * this.zoom - this.defaultHeight;\n return popupTop <= 0 ? this.defaultHeight : popupTop;\n }\n\n popupLeft() {\n const popupLeft = (this.rectangle.x + (this.rectangle.width / 2)) * this.zoom - (this.defaultWidth / 2);\n if (popupLeft <= 0) {\n return 0;\n } else if (popupLeft >= this.pageWidth - this.defaultWidth) {\n return this.pageWidth - this.defaultWidth;\n } else {\n return popupLeft;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CommentComponent } from './comment/comment.component';\n\n@Injectable()\nexport class CommentSetRenderService {\n\n redrawComponents(commentComponents: CommentComponent[], pageHeights: any[], rotate: number, zoom: number) {\n let prevComment: CommentComponent;\n this.sortComponents(commentComponents, pageHeights, rotate, zoom).forEach((comment: CommentComponent) => {\n this.adjustIfOverlapping(comment, prevComment, zoom);\n prevComment = comment;\n });\n }\n\n sortComponents(commentComponents: CommentComponent[], pageHeights: any[], rotate: number, zoom: number) {\n return commentComponents.sort((a: CommentComponent, b: CommentComponent) => {\n a.rectTop = this.top(a._rectangle, pageHeights[a.page - 1], rotate, zoom);\n b.rectTop = this.top(b._rectangle, pageHeights[b.page - 1], rotate, zoom);\n return this.processSort(a, b);\n });\n }\n\n private adjustIfOverlapping(comment: CommentComponent, prevComment: CommentComponent, zoom: number): void {\n if (prevComment) {\n const endOfPrevComment = prevComment.commentTop + this.height(prevComment);\n if (comment.commentTop <= endOfPrevComment) {\n comment.rectTop = (endOfPrevComment - comment.totalPrevPagesHeight) / zoom;\n }\n }\n }\n\n private processSort(a: CommentComponent, b: CommentComponent): number {\n if (this.onSameLine(a, b)) {\n return a.rectLeft >= b.rectLeft ? 1 : -1;\n }\n return a.commentTop >= b.commentTop ? 1 : -1;\n }\n\n private onSameLine(a: CommentComponent, b: CommentComponent): boolean {\n return this.difference(a.commentTop, b.commentTop) === 0;\n }\n\n private top(rectangle: { x, y, height, width }, height: number, rotate: number, zoom: number) {\n const actualHeight = height / zoom;\n switch (rotate) {\n case 90: return rectangle.x;\n case 180: return actualHeight - (rectangle.y + rectangle.height);\n case 270: return actualHeight - (rectangle.x + rectangle.width);\n default: return rectangle.y;\n }\n }\n\n private height(element: any) {\n return element.form.nativeElement.getBoundingClientRect().height;\n }\n\n private difference(a: number, b: number): number { return Math.abs(a - b); }\n}\n","import {\n Component,\n ElementRef,\n Input, OnChanges,\n OnDestroy,\n OnInit,\n QueryList, SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\n\nimport { AnnotationSet } from '../annotation-set/annotation-set.model';\nimport { Annotation } from '../annotation-set/annotation-view/annotation.model';\nimport { Comment } from './comment/comment.model';\nimport { CommentComponent } from './comment/comment.component';\nimport { CommentService } from './comment/comment.service';\nimport { CommentSetRenderService } from './comment-set-render.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromActions from '../../store/actions/annotation.actions';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\nimport { TagsModel } from '../models/tags.model';\nimport { SelectionAnnotation } from '../models/event-select.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comment-set',\n templateUrl: './comment-set.component.html',\n })\nexport class CommentSetComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input() annotationSet: AnnotationSet;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() height: number;\n @Input() pageHeights = [];\n @Input() contentScrollTop: number;\n\n comments: Comment[];\n tags: TagsModel[];\n private subscriptions: Subscription[] = [];\n public comments$: Observable<Annotation[]>;\n public annoEntities$: Observable<{ [id: string]: Annotation }>;\n\n @ViewChild('container', {static: false}) container: ElementRef<HTMLDivElement>;\n @ViewChild('panel', {static: false}) panel: ElementRef<HTMLDivElement>;\n @ViewChildren('commentComponent') commentComponents: QueryList<CommentComponent>;\n\n showCommentsPanel: boolean;\n\n constructor(private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService,\n private readonly renderService: CommentSetRenderService,\n private readonly toolbarEvents: ToolbarEventService) {\n this.clearSelection();\n }\n\n ngOnInit() {\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentsArray));\n this.annoEntities$ = this.store.pipe(select(fromSelectors.getAnnotationEntities));\n this.subscriptions.push(\n this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {\n this.redrawComments();\n this.showCommentsPanel = toggle;\n })\n );\n this.subscriptions.push(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument()));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.annotationSet) {\n this.commentService.setCommentSet(this);\n }\n if (changes.contentScrollTop) {\n if (this.container) {\n this.container.nativeElement.scrollTo(0, this.contentScrollTop);\n }\n }\n }\n\n ngOnDestroy() {\n if (this.subscriptions.length > 0) {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n }\n\n public onSelect(annotationId: SelectionAnnotation) {\n this.store.dispatch(new fromActions.SelectedAnnotation(annotationId));\n }\n\n public onCommentDelete(comment: Comment) {\n const annotation = this.annotationSet.annotations.find(anno => anno.id === comment.annotationId);\n const comments = [];\n const annot = {\n ...annotation,\n comments\n };\n this.onAnnotationUpdate(annot);\n this.redrawComments();\n }\n\n redrawComments() {\n setTimeout(() => {\n const componentList: CommentComponent[] = this.commentComponents.map(comment => comment);\n this.renderService.redrawComponents(componentList, this.pageHeights, this.rotate, this.zoom);\n }, 0);\n }\n\n private rotateDocument() {\n if (this.panel) {\n this.panel.nativeElement.style.height = '0';\n }\n }\n\n public onCommentUpdate(payload: {comment: Comment, tags: TagsModel[]} ) {\n const annotation = this.annotationSet.annotations.find(anno => anno.id === payload.comment.annotationId);\n const comments = [payload.comment];\n const tags = payload.tags;\n const annot = {\n ...annotation,\n comments,\n tags\n };\n this.onAnnotationUpdate(annot);\n }\n\n public onAnnotationUpdate(annotation: Annotation) {\n this.store.dispatch(new fromActions.SaveAnnotation(annotation));\n }\n\n onContainerClick(e) {\n if (e.path && e.path[0] === this.panel.nativeElement) {\n this.clearSelection();\n }\n }\n\n clearSelection() {\n this.store.dispatch(new fromActions.SelectedAnnotation({ annotationId: '', editable: false, selected: false}));\n }\n\n allCommentsSaved() {\n this.commentService.allCommentsSaved();\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[mvTextAreaAutoExpand]'\n})\nexport class TextareaAutoExpandDirective implements AfterContentChecked {\n\n constructor(private el: ElementRef) {\n }\n\n ngAfterContentChecked(): void {\n this.adjustHeight();\n }\n\n @HostListener('input') onMouseDown() {\n this.adjustHeight();\n }\n\n adjustHeight(): void {\n const nativeElement = this.el.nativeElement;\n nativeElement.style.overflow = 'hidden';\n nativeElement.style.height = 'auto';\n nativeElement.style.height = nativeElement.scrollHeight - 5 + 'px';\n }\n\n}\n","import {Component, Input, ViewChild, ElementRef, OnInit, OnDestroy} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport {select, Store} from '@ngrx/store';\n\nimport { PrintService } from '../../print.service';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromAnnoActions from '../../store/actions/annotation.actions';\nimport * as fromTagSelectors from '../../store/selectors/tag.selectors';\n\n@Component({\n selector: 'mv-comments-summary',\n templateUrl: './comments-summary.component.html',\n})\nexport class CommentsSummaryComponent implements OnInit, OnDestroy {\n\n @Input() title: string;\n @Input() contentType: string;\n @ViewChild('outerContainer', {static: false}) container: ElementRef;\n @ViewChild('commentContainer', {static: false}) commentsTable: ElementRef;\n public comments$: Observable<any>;\n public filtersFg: FormGroup;\n private $subscriptions: Subscription;\n allTags$: Observable<{key: string; length: number}[]>;\n showFilters = false;\n hasFilter = false;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly printService: PrintService,\n private readonly toolbarEvents: ToolbarEventService,\n private fb: FormBuilder\n ) {}\n\n ngOnInit(): void {\n this.filtersFg = this.fb.group({\n dateRangeFrom: new FormGroup({\n day: new FormControl(''),\n month: new FormControl(''),\n year: new FormControl('')\n }),\n dateRangeTo: new FormGroup({\n day: new FormControl(''),\n month: new FormControl(''),\n year: new FormControl('')\n }),\n tagFilters: this.fb.group({}),\n });\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentSummary));\n this.buildCheckBoxForm();\n }\n\n ngAfterViewInit() {\n this.container.nativeElement.focus();\n }\n\n buildCheckBoxForm() {\n this.filtersFg.reset();\n const checkboxes = <FormGroup>this.filtersFg.get('tagFilters');\n const filters$ = this.store.pipe(select(fromSelectors.getCommentSummaryFilters));\n this.allTags$ = this.store.pipe(select(fromTagSelectors.getAllTagsArr));\n this.$subscriptions = combineLatest([this.allTags$, filters$]).subscribe(([tags, filters]) => {\n this.hasFilter = filters.hasFilter;\n tags.forEach((val) => {\n const checkBoxValue = (filters.filters.tagFilters &&\n filters.filters.tagFilters.hasOwnProperty(val.key)) ?\n filters.filters.tagFilters[val.key] : false;\n checkboxes.addControl(val.key, new FormControl(checkBoxValue));\n });\n this.filtersFg.updateValueAndValidity();\n });\n }\n\n onClearFilters() {\n this.store.dispatch(new fromAnnoActions.ClearCommentSummaryFilters());\n this.buildCheckBoxForm();\n }\n\n onFilter() {\n const { value } = this.filtersFg;\n const hasDateFrom = (value.dateRangeFrom.year && value.dateRangeFrom.month && value.dateRangeFrom.day);\n const hasDateTo = (value.dateRangeTo.year && value.dateRangeTo.month && value.dateRangeTo.day);\n const dateRangeFrom = hasDateFrom ?\n new Date(value.dateRangeFrom.year, value.dateRangeFrom.month - 1, value.dateRangeFrom.day).getTime() : null;\n const dateRangeTo = hasDateTo ?\n new Date(value.dateRangeTo.year, value.dateRangeTo.month - 1, value.dateRangeTo.day).getTime() : null;\n this.store.dispatch(new fromAnnoActions.ApplyCommentSymmaryFilter({...value, dateRangeFrom, dateRangeTo}));\n }\n\n onFiltersToggle() {\n this.showFilters = !this.showFilters;\n }\n\n public onClose(): void {\n this.toolbarEvents.toggleCommentsSummary(false);\n }\n\n public onPrint(): void {\n this.printService.printElementNatively(this.commentsTable.nativeElement, 1000, 900);\n }\n\n navigateToPage(pageNumber: number) {\n if (this.contentType === 'pdf') {\n this.toolbarEvents.setPage(pageNumber);\n }\n this.toolbarEvents.toggleCommentsSummary(false);\n this.toolbarEvents.toggleCommentsPanel(true);\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport uuid from 'uuid';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { HighlightCreateService } from '../highlight-create/highlight-create.service';\n\n@Component({\n selector: 'mv-box-highlight-create',\n templateUrl: './box-highlight-create.component.html',\n})\nexport class BoxHighlightCreateComponent implements OnInit, OnDestroy {\n\n @Input() page: number;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n @Input() rotate: number;\n @Input() zoom: number;\n @Input() container: { top: number, left: number };\n\n @Output() saveSelection = new EventEmitter<{ rectangles: Rectangle[], page: number }>();\n\n @ViewChild('boxHighlight', {static: false}) highlight: ElementRef;\n\n drawStartX = -1;\n drawStartY = -1;\n top: number;\n left: number;\n height: number;\n width: number;\n display: string;\n drawMode: boolean;\n defaultHeight: string;\n defaultWidth: string;\n position: string;\n backgroundColor = 'none';\n\n private subscriptions: Subscription[] = [];\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly highlightService: HighlightCreateService) {}\n\n ngOnInit(): void {\n this.subscriptions = [\n this.toolbarEvents.drawModeSubject.subscribe(drawMode => {\n this.defaultHeight = drawMode ? '100%' : '0px';\n this.defaultWidth = drawMode ? '100%' : '0px';\n })\n ];\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n initHighlight({ offsetX, offsetY }) {\n this.position = 'absolute';\n this.backgroundColor = 'yellow';\n this.drawStartX = offsetX;\n this.drawStartY = offsetY;\n\n this.display = 'block';\n this.height = 50;\n this.width = 50;\n\n this.top = this.drawStartY;\n this.left = this.drawStartX;\n\n switch (this.rotate) {\n case 90:\n this.top = this.drawStartY - this.height;\n break;\n case 180:\n this.top = this.drawStartY - this.height;\n this.left = this.drawStartX - this.width;\n break;\n case 270:\n this.left = this.drawStartX - this.width;\n break;\n }\n }\n\n updateHighlight({ offsetX, offsetY }) {\n if (this.drawStartX > 0 && this.drawStartY > 0) {\n this.height = Math.abs(offsetY - this.drawStartY);\n this.width = Math.abs(offsetX - this.drawStartX);\n this.top = Math.min(offsetY, this.drawStartY);\n this.left = Math.min(offsetX, this.drawStartX);\n }\n }\n\n createHighlight() {\n if (this.height / this.zoom > 5 || this.width / this.zoom > 5) {\n let rectangle = this.highlightService\n .applyRotation(this.pageHeight, this.pageWidth, this.height, this.width, this.top, this.left, this.rotate, this.zoom);\n rectangle = { id: uuid(), ...rectangle } as any;\n this.saveSelection.emit({ rectangles: [rectangle], page: this.page });\n this.resetHighlight();\n }\n }\n\n private resetHighlight() {\n this.drawStartX = -1;\n this.drawStartY = -1;\n this.display = 'none';\n this.width = 0;\n this.height = 0;\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromTagSelectors from '../../../store/selectors/tag.selectors';\nimport * as fromAnnoSelector from '../../../store/selectors/annotation.selectors';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comment-set-header',\n templateUrl: './comment-set-header.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentSetHeaderComponent implements OnInit, OnDestroy {\n\n @Input() public showCommentSummary: boolean;\n @Output() public readonly showCommentSummaryDialog = new EventEmitter();\n\n tabs: {isFiltered?: boolean; label: string}[] = [];\n tabSelected = '';\n isFiltered: boolean;\n navigationList: Annotation[];\n $subscriptions: Subscription;\n\n constructor(private store: Store<fromStore.State>,\n public toolbarEvents: ToolbarEventService) {}\n\n ngOnInit(): void {\n const tagFilter$ = this.store.pipe(select(fromTagSelectors.getTagFilters));\n const filteredAnnotation$ = this.store.pipe(select(fromAnnoSelector.getFilteredAnnotations));\n\n this.$subscriptions = combineLatest([tagFilter$, filteredAnnotation$]).subscribe(([formData, filteredAnno]) => {\n this.navigationList = filteredAnno;\n this.tabs = this.navigationList.length > 0 ?\n [{label: 'comments'}, {label: 'filter'}, {label: 'search'}] : [{label: 'comments'}];\n this.isFiltered = !formData.length;\n this.tabs = [...this.tabs].map((tab) => {\n return !this.isFiltered && tab.label === 'filter' ? {...tab, isFiltered: true} : {...tab, isFiltered: false};\n });\n });\n }\n\n public toggleCommentsSummary(): void {\n this.showCommentSummaryDialog.emit();\n }\n\n selectTab(tab: string) {\n this.tabSelected = tab !== this.tabSelected ? tab : undefined;\n }\n\n public toggleCommentsPanel() {\n this.toolbarEvents.toggleCommentsPanel(!this.toolbarEvents.commentsPanelVisible.getValue());\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Annotation } from '../../../annotation-set/annotation-view/annotation.model';\nimport { Store } from '@ngrx/store';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromActions from '../../../../store/actions/annotation.actions';\n\n@Component({\n selector: 'mv-comment-search',\n templateUrl: './comment-search.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentSearchComponent implements AfterViewInit, OnDestroy {\n\n @Input() public readonly annotations: Annotation[];\n\n @ViewChild('searchInput', {static: false}) searchInput: ElementRef<HTMLInputElement>;\n\n searchString: string;\n searchResults: Annotation[] = [];\n searchIndex = 0;\n\n constructor(private store: Store<fromStore.AnnotationSetState>) {}\n\n ngAfterViewInit(): void {\n if (this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n ngOnDestroy(): void {\n // TODO workaround for tab error\n setTimeout(() => {this.store.dispatch(new fromActions.SearchComment('')); }, 250);\n }\n\n searchComments(searchText: string): void {\n this.clearSearch();\n if (searchText.length > 2) {\n this.searchString = searchText;\n this.searchResults = this.annotations\n .filter(annotation => annotation.comments.length > 0)\n .filter(annotation =>\n annotation.comments[0].content.toLowerCase().includes(this.searchString.toLowerCase()));\n if (this.searchResults.length > 0) {\n this.store.dispatch(new fromActions.SearchComment(searchText));\n }\n }\n }\n\n clearSearch() {\n this.searchString = undefined;\n this.searchResults = [];\n this.searchIndex = 0;\n this.store.dispatch(new fromActions.SearchComment(''));\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[mvTextHighlight]'\n})\nexport class TextHighlightDirective implements AfterViewChecked {\n\n @Input() textToHighlight: string;\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n ngAfterViewChecked(): void {\n if (this.textToHighlight) {\n this.highlightInputText(this.textToHighlight);\n }\n }\n\n highlightInputText(textToHighlight: string) {\n this.resetHighlight();\n this.textToHighlight = textToHighlight;\n const searchPattern = new RegExp(textToHighlight, 'gi');\n const hostElement = this.element.nativeElement;\n if (hostElement.innerHTML.match(searchPattern)) {\n hostElement.innerHTML = hostElement.innerHTML\n .replace(searchPattern, this.highlightPattern('$&'));\n }\n this.textToHighlight = undefined;\n }\n\n resetHighlight() {\n const hostElement = this.element.nativeElement;\n const searchPattern = new RegExp(this.highlightPattern('(.*?)'), 'gi');\n while (hostElement.innerHTML.match(searchPattern)) {\n const matchGroups = searchPattern.exec(hostElement.innerHTML);\n if (matchGroups) {\n hostElement.innerHTML = hostElement.innerHTML.replace(matchGroups[0], matchGroups[1]);\n }\n }\n }\n\n private highlightPattern(dynamicText: string) {\n return '<span class=\"mvTextHighlight\">' + dynamicText + '</span>';\n }\n}\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TagsModel} from '../models/tags.model';\nimport {TagsServices} from '../services/tags/tags.services';\nimport {FormControl} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'mv-tags',\n templateUrl: './tags.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TagsComponent {\n @Input() tagItems: TagsModel[];\n @Input() userId: string;\n @Input() editable: boolean;\n @Input() annoId: string;\n\n public validators = [this.minLength, this.maxLength20];\n public errorMessages: {[id: string]: string} = {\n 'minLength': 'Minimum of 2 characters',\n 'maxLength20': 'Maximum of 20 characters'\n };\n\n constructor(private tagsServices: TagsServices) {}\n\n onUpdateTags(value) {\n this.tagsServices.updateTagItems(value, this.annoId);\n }\n\n public requestAutocompleteItems = (text: string): Observable<any[]> => {\n return this.tagsServices.getAllTags(this.userId);\n }\n\n private minLength(control: FormControl) {\n if (control.value.length < 2) {\n return {\n 'minLength': true\n };\n }\n return null;\n }\n\n private maxLength20(control: FormControl) {\n if (control.value.length >= 20) {\n return {\n 'maxLength20': true\n };\n }\n return null;\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Rectangle } from '../../annotation-set/annotation-view/rectangle/rectangle.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromActions from '../../../store/actions/annotation.actions';\nimport {ToolbarEventService} from '../../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comments-navigate',\n templateUrl: './comments-navigate.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentsNavigateComponent implements OnChanges {\n\n @Input() public annotationList: Annotation[];\n @Input() autoSelect = false;\n\n navigationList: any[] = [];\n index = 0;\n\n constructor(private store: Store<fromStore.AnnotationSetState>, public readonly toolbarEvents: ToolbarEventService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.annotationList) {\n this.initNavigationList();\n }\n }\n\n initNavigationList(): void {\n this.index = 0;\n this.navigationList = [...this.annotationList || []]\n .map(annotation => ({\n content: annotation.comments[0].content,\n annotationId: annotation.id,\n page: annotation.page,\n rectangle: this.upperRectangle(annotation.rectangles),\n }))\n .sort(this.sortComments);\n\n if (this.autoSelect) {\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[0].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[0].annotationId,\n editable: false,\n selected: true\n }));\n }\n }\n\n sortComments(mappedCommentA, mappedCommentB) {\n if (mappedCommentA.page !== mappedCommentB.page) {\n return mappedCommentA.page - mappedCommentB.page;\n } else {\n const rectA = mappedCommentA.rectangle;\n const rectB = mappedCommentB.rectangle;\n if (rectA.y !== rectB.y) {\n return rectA.y - rectB.y;\n } else {\n return rectA.x - rectB.x;\n }\n }\n }\n\n nextItem() {\n this.index += 1;\n if (this.index === this.annotationList.length) {\n this.index = 0;\n }\n\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[this.index].annotationId, editable: false, selected: true\n }));\n }\n\n\n prevItem() {\n this.index -= 1;\n if (this.index < 0) {\n this.index = this.navigationList.length - 1;\n }\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[this.index].annotationId,\n editable: false,\n selected: true\n }));\n }\n\n upperRectangle(rectangles: Rectangle[]) {\n [...rectangles].sort((rect1, rect2) => rect1.y - rect2.y);\n return { x: rectangles[0].x, y: rectangles[0].y };\n }\n}\n","import {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\n\nimport {select, Store} from '@ngrx/store';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromSelectors from '../../../../store/selectors/tag.selectors';\nimport * as fromActions from '../../../../store/actions/tag.actions';\nimport {Observable, Subscription} from 'rxjs';\nimport {FormGroup, FormBuilder, FormControl} from '@angular/forms';\nimport {auditTime, tap} from 'rxjs/operators';\n\n\n@Component({\n selector: 'mv-comment-filter',\n templateUrl: './comment-filter.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentFilterComponent implements OnInit, OnDestroy {\n tagGroup: FormGroup;\n $subscriptions: Subscription;\n filter$: Observable<string[]>;\n allTags$: Observable<any>;\n searchValue: string;\n isPreview = false;\n constructor(\n private store: Store<fromStore.State>,\n private fb: FormBuilder) {}\n\n ngOnInit(): void {\n this.tagGroup = this.fb.group({\n 'tagFilters': this.fb.group({}),\n });\n this.filter$ = this.store.pipe(select(fromSelectors.getTagFilters));\n this.$subscriptions = this.tagGroup.valueChanges.pipe(auditTime(5)).subscribe(value => {\n const tagFilters = value['tagFilters'];\n this.store.dispatch(new fromActions.AddFilterTags(tagFilters));\n });\n this.buildFrom();\n\n }\n\n buildFrom() {\n const checkboxes = <FormGroup>this.tagGroup.get('tagFilters');\n this.allTags$ = this.store.pipe(select(fromSelectors.getAllTagsArr)).pipe(tap(tags => {\n this.tagGroup.reset();\n tags.forEach((value) => {\n checkboxes.addControl(value.key, new FormControl(false));\n });\n }));\n }\n\n onClearFilters() {\n this.tagGroup.reset();\n this.store.dispatch(new fromActions.ClearFilterTags());\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n\n onRemoveFilter(tagName) {\n const checkboxes = <FormGroup>this.tagGroup.get('tagFilters');\n checkboxes.controls[tagName].setValue(false);\n }\n\n onToggleFilterView() {\n this.isPreview = !this.isPreview;\n }\n\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport moment from 'moment-timezone';\n/**\n * A moment timezone pipe to support parsing based on time zone abbreviations\n * covers all cases of offset variation due to daylight saving.\n *\n * Same API as DatePipe with additional timezone abbreviation support\n * Official date pipe dropped support for abbreviations names from Angular V5\n */\n@Pipe({\n name: 'momentDate'\n})\nexport class MomentDatePipe extends DatePipe implements PipeTransform {\n\n transform(\n value: string | Date,\n format: string = 'mediumDate',\n timezone: string = 'Europe/London'\n ): string {\n const timezoneOffset = moment(value).tz(timezone).format('Z');\n return super.transform(value, format, timezoneOffset);\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Bookmark } from '../../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\n@Injectable()\nexport class BookmarksApiService {\n\n private readonly ANNOTATIONS_API = '/em-anno';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getBookmarks(documentId: string): Observable<any> {\n return this.httpClient\n .get(`${this.ANNOTATIONS_API}/${documentId}/bookmarks`,\n { observe: 'response' , withCredentials: true });\n }\n\n public createBookmark(bookmark: Partial<Bookmark>): Observable<Bookmark> {\n return this.httpClient\n .post<Bookmark>(`${this.ANNOTATIONS_API}/bookmarks`,\n bookmark, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public updateBookmark(bookmark: Partial<Bookmark>): Observable<Bookmark> {\n return this.httpClient\n .put<Bookmark>(`${this.ANNOTATIONS_API}/bookmarks`,\n bookmark, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public updateMultipleBookmarks(bookmarks: Partial<Bookmark[]>): Observable<Bookmark[]> {\n return this.httpClient\n .put<Bookmark[]>(`${this.ANNOTATIONS_API}/bookmarks_multiple`,\n bookmarks, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteBookmark(bookmarkId: string): Observable<void> {\n return this.httpClient\n .delete<void>(`${this.ANNOTATIONS_API}/bookmarks/${bookmarkId}`,\n { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteMultipleBookmarks(payload: { deleted: string[], updated: Bookmark }): Observable<void> {\n return this.httpClient\n .request<void>('DELETE', `${this.ANNOTATIONS_API}/bookmarks_multiple`,\n { body: payload, observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filter'\n})\nexport class FilterPipe implements PipeTransform {\n\n transform(items: any[], searchText: string, fieldName: string): any[] {\n\n if (!items) {\n return [];\n }\n\n if (!searchText) {\n return items;\n }\n\n return items.filter(item => {\n if (item) {\n if (item[fieldName]) {\n return item[fieldName].toLowerCase().includes(searchText.toLowerCase());\n } else {\n return item.toLowerCase().includes(searchText.toLowerCase());\n }\n }\n return false;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'unsnake'\n})\nexport class UnsnakePipe implements PipeTransform {\n\n transform(items: string): string {\n return items.split('_').join(' ');\n }\n\n}\n","import {Component, Input} from '@angular/core';\n/*\n* Gov UK Date Component\n* Responsible for displaying 3 input fields:\n* day / month / year\n* displaying errorMessage messages\n* */\n@Component({\n selector: 'mv-gov-uk-date',\ntemplateUrl: './gov-uk-date.component.html'\n})\nexport class GovUkDateComponent {\n @Input() config: { id: string; legend: string };\n @Input() errorMessage: {isInvalid: boolean; messages: string[]};\n @Input() formGroup;\n}\n","import {Component, Directive, Input} from '@angular/core';\n/*\n* Gov UK Error Message\n* Responsible for displaying in-line error messages\n* @prop config - obj with properties\n* @prop errorMessage - all error bject with messages property that is arry of strings.\n* */\n@Component({\n selector: ' mv-gov-uk-error-message',\n template: `\n <span class=\"govuk-error-message\" [id]=\"config.id + '-error'\" *ngFor=\"let message of errorMessage?.messages\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{message}}\n </span>\n `\n})\nexport class GovUkErrorMessageComponent {\n constructor () { }\n @Input() config: { id: string };\n @Input() errorMessage;\n}\n","/**\n * Helper Class\n * Used for dynamic templates manipulation\n * */\n\nexport class HtmlTemplatesHelper {\n\n static setDescribedBy(errorMessage, config) {\n if (!errorMessage) {\n return config.hint ? `${config.id}-hint` : null;\n } else if (errorMessage && errorMessage.isInvalid) {\n return config.hint ? `${config.id}-hint ${config.id}-error` : `${config.id}-error`;\n } else {\n return config.hint ? `${config.id}-hint` : null;\n }\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {HtmlTemplatesHelper} from '../util/helpers/html-templates.helper';\n/*\n* Gov Uk Fieldset Component\n* Used to wrap group fieldset elements\n* it can conditionally display h1 tag\n* @param config\n* @param isHeading\n* @param errorMessage - used for aria tag\n* */\n@Component({\n selector: 'mv-gov-uk-fieldset',\n template: `\n <fieldset class=\"govuk-fieldset\" [attr.aria-describedby]=\"setDescribedBy()\">\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"!isHeading\">\n {{config.legend}}\n </legend>\n\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"isHeading\">\n <h1>{{config.legend}}</h1>\n </legend>\n\n <span [id]=\"config.id+'-hint'\" class=\"govuk-hint\" *ngIf=\"config.hint\">\n {{config.hint}}\n </span>\n <ng-content></ng-content>\n </fieldset>\n `\n})\nexport class GovUkFieldsetComponent {\n @Input() config: {legend: string; classes: string, id: string, hint: string, key: string};\n @Input() isHeading: boolean;\n @Input() errorMessage: string[];\n\n setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","import {Component, Input} from '@angular/core';\n\n/*\n* Gov UK Label component\n* Responsible for displaying label tag\n* @prop isPageHading - boolean to display h1\n* @prop config - obj with properties\n* */\n@Component({\n selector: 'mv-gov-label',\n template: `<h1 *ngIf=\"config.isPageHeading else noHeading\">\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n </h1>\n <ng-template #noHeading>\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n </ng-template>\n `\n})\nexport class GovUkLabelComponent {\n constructor () { }\n @Input() config: { label: string, name: string; id: string, isPageHeading, classes: string };\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {GovUkDateComponent} from './gov-uk-date/gov-uk-date.component';\nimport {GovUkErrorMessageComponent} from './gov-uk-error-message/gov-uk-error-message.component';\nimport {GovUkFieldsetComponent} from './gov-uk-fieldset/gov-uk-fieldset.component';\nimport {GovUkLabelComponent} from './gov-uk-label/gov-uk-label.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n RouterModule\n ],\n declarations: [\n GovUkDateComponent,\n GovUkErrorMessageComponent,\n GovUkFieldsetComponent,\n GovUkLabelComponent\n\n ],\n exports: [\n GovUkDateComponent,\n GovUkErrorMessageComponent,\n GovUkFieldsetComponent,\n GovUkLabelComponent\n ]\n})\nexport class SharedModule {}\n","import {createSelector} from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromBookmarks from '../reducers/bookmarks.reducer';\nimport { generateBookmarkNodes } from '../bookmarks-store-utils';\nimport * as fromDocument from './document.selectors';\n\nexport const getBookmarkState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.bookmarks\n);\n\nexport const getBookmarkPages = createSelector(\n getBookmarkState,\n fromBookmarks.getBookmarkPageEnt\n);\n\nexport const getBookmarkEntities = createSelector(\n getBookmarkState,\n fromBookmarks.getBookmarkEnts\n);\n\nexport const getBookmarkNodes = createSelector(\n getBookmarkEntities,\n (entities) => generateBookmarkNodes(entities)\n);\n\nexport const getEditableBookmark = createSelector(\n getBookmarkState,\n fromBookmarks.getEditBookmark\n);\n\nexport const getBookmarkInfo = createSelector(\n getBookmarkNodes,\n fromDocument.getDocumentId,\n fromDocument.getPdfPosition,\n fromDocument.getPages,\n (bookmarkNodes, docId, pdfPosition, pages) => {\n return {\n pageNumber: pdfPosition.pageNumber - 1,\n xCoordinate: pdfPosition.left,\n yCoordinate: pages[pdfPosition.pageNumber].styles.height - (pdfPosition.top * pages[pdfPosition.pageNumber].viewportScale),\n previous: bookmarkNodes.length > 0 ? bookmarkNodes[bookmarkNodes.length - 1].id : undefined,\n documentId: docId\n };\n }\n);\n\nexport const getBookmarksPerPage = createSelector(\n fromDocument.getPages,\n getBookmarkPages,\n (pages, pageEnt) => {\n if (pages && pageEnt) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n const pageIdx = Number(key) - 1; // -1 as the thisPages array is 0 indexed\n const thisPage = pageEnt[pageIdx];\n arr.push({\n bookmark: thisPage ? thisPage : [],\n styles: pages[key].styles\n });\n });\n return arr;\n }\n }\n);\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\n\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromDocument from '../../../store/selectors/document.selectors';\nimport * as fromSelectors from '../../../store/selectors/annotation.selectors';\nimport { HighlightCreateService } from '../annotation-create/highlight-create/highlight-create.service';\nimport { Rectangle } from '../annotation-view/rectangle/rectangle.model';\nimport { CreateBookmark } from '../../../store/actions/bookmark.actions';\nimport * as fromBookmarks from '../../../store/selectors/bookmark.selectors';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Highlight, ViewerEventService } from '../../../viewers/viewer-event.service';\n\n@Component({\n selector: 'mv-metadata-layer',\n templateUrl: './metadata-layer.component.html'\n})\nexport class MetadataLayerComponent implements OnInit, OnDestroy {\n\n @Input() zoom: number;\n @Input() rotate: number;\n\n pages: any[] = []; // todo add type\n annoPages$: Observable<any>; // todo add type\n\n drawMode = false;\n highlightPage: number;\n rectangles: Rectangle[];\n\n private $subscriptions: Subscription;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly highlightService: HighlightCreateService,\n private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService) {}\n\n ngOnInit(): void {\n this.$subscriptions = this.store.pipe(select(fromDocument.getPages))\n .subscribe(pages => this.pages = Object.values(pages));\n this.annoPages$ = this.store.pipe(select(fromSelectors.getPageEntities));\n\n this.$subscriptions\n .add(this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode))\n .add(this.viewerEvents.textHighlight.subscribe(highlight => this.showContextToolbar(highlight)))\n .add(this.viewerEvents.ctxToolbarCleared.subscribe(() => this.clearContextToolbar()));\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n\n showContextToolbar(highlight: Highlight) {\n this.highlightPage = highlight.page;\n this.rectangles = highlight.rectangles;\n if (this.rectangles) {\n this.toolbarEvents.highlightModeSubject.next(false);\n }\n }\n\n clearContextToolbar() {\n this.rectangles = undefined;\n }\n\n createHighlight() {\n this.highlightService.saveAnnotation(this.rectangles, this.highlightPage);\n this.highlightService.resetHighlight();\n this.rectangles = undefined;\n }\n\n createBookmark(rectangle: Rectangle) {\n this.store.pipe(select(fromBookmarks.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n const selection = window.getSelection().toString();\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo,\n name: selection.length > 0 ? selection.substr(0, 30) : 'new bookmark',\n id: uuid(),\n pageNumber: this.highlightPage - 1,\n xCoordinate: rectangle.x,\n yCoordinate: rectangle.y\n } as any));\n this.toolbarEvents.toggleSideBar(true);\n this.highlightService.resetHighlight();\n this.rectangles = undefined;\n\n });\n }\n\n saveAnnotation({ rectangles, page }: { rectangles: Rectangle[], page: any}) {\n this.highlightService.saveAnnotation(rectangles, page);\n this.toolbarEvents.drawModeSubject.next(false);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { RouterModule } from '@angular/router';\n\nimport { MutableDivModule } from 'mutable-div';\nimport { TagInputModule } from 'ngx-chips';\nimport {NgxDatatableModule} from '@swimlane/ngx-datatable';\n\nimport { AnnotationApiService } from './services/annotation-api/annotation-api.service';\nimport { AnnotationViewComponent } from './annotation-set/annotation-view/annotation-view.component';\nimport { AnnotationSetComponent } from './annotation-set/annotation-set.component';\nimport { RectangleComponent } from './annotation-set/annotation-view/rectangle/rectangle.component';\nimport { CommentComponent } from './comment-set/comment/comment.component';\nimport { CtxToolbarComponent } from './annotation-set/ctx-toolbar/ctx-toolbar.component';\nimport { CommentSetComponent } from './comment-set/comment-set.component';\nimport { TextareaAutoExpandDirective } from './comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive';\nimport { CommentsSummaryComponent } from './comments-summary/comments-summary.component';\nimport { CommentSetRenderService } from './comment-set/comment-set-render.service';\nimport { BoxHighlightCreateComponent } from './annotation-set/annotation-create/box-highlight-create/box-highlight-create.component';\nimport { HighlightCreateService } from './annotation-set/annotation-create/highlight-create/highlight-create.service';\nimport { CommentSetHeaderComponent } from './comment-set/comment-set-header/comment-set-header.component';\nimport { CommentSearchComponent } from './comment-set/comment-set-header/comment-search/comment-search.component';\nimport { TextHighlightDirective } from './comment-set/comment/text-highlight/text-highlight.directive';\nimport { TagsComponent } from './tags/tags.component';\nimport { TagsServices } from './services/tags/tags.services';\nimport { CommentsNavigateComponent } from './comment-set/comment-navigate/comments-navigate.component';\nimport {CommentFilterComponent} from './comment-set/comment-set-header/comment-filter/comment-filter.component';\nimport {MomentDatePipe} from './pipes/date/date.pipe';\nimport { BookmarksApiService } from './services/bookmarks-api/bookmarks-api.service';\nimport {FilterPipe} from './pipes/filter/filter.pipe';\nimport {UnsnakePipe} from './pipes/unsnake/unsnake.pipe';\nimport {SharedModule} from '../shared/shared.module';\nimport { MetadataLayerComponent } from './annotation-set/metadata-layer/metadata-layer.component';\n\n@NgModule({\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n HttpClientModule,\n MutableDivModule,\n TagInputModule,\n RouterModule,\n ReactiveFormsModule,\n NgxDatatableModule,\n SharedModule\n ],\n declarations: [\n MetadataLayerComponent,\n AnnotationViewComponent,\n BoxHighlightCreateComponent,\n AnnotationSetComponent,\n RectangleComponent,\n CommentComponent,\n CommentSetHeaderComponent,\n CommentSearchComponent,\n TextHighlightDirective,\n CtxToolbarComponent,\n CommentSetComponent,\n CommentsNavigateComponent,\n TextareaAutoExpandDirective,\n CommentsSummaryComponent,\n TagsComponent,\n MomentDatePipe,\n CommentFilterComponent,\n FilterPipe,\n UnsnakePipe\n ],\n entryComponents: [\n AnnotationViewComponent,\n AnnotationSetComponent,\n CommentSetComponent\n ],\n providers: [\n AnnotationApiService,\n BookmarksApiService,\n CommentSetRenderService,\n HighlightCreateService,\n TagsServices\n ],\n exports: [\n AnnotationViewComponent,\n BoxHighlightCreateComponent,\n AnnotationSetComponent,\n CommentSetComponent,\n CommentSetHeaderComponent,\n CommentSearchComponent,\n CommentsSummaryComponent,\n TagsComponent,\n CommentFilterComponent,\n MomentDatePipe,\n FilterPipe,\n UnsnakePipe,\n MetadataLayerComponent\n ]\n})\nexport class AnnotationsModule { }\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[mvGrabNDrag]'\n})\nexport class GrabNDragDirective {\n\n originalPosition: { left: number; top: number };\n private pointerDown = false;\n\n @Input() dragEnabled = false;\n @Input() dragX: Element;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('pointerdown', ['$event'])\n onPointerDown(event: PointerEvent) {\n if (this.dragEnabled) {\n event.preventDefault();\n this.pointerDown = true;\n this.originalPosition = {\n left: event.clientX + this.el.nativeElement.scrollLeft,\n top: event.clientY + this.el.nativeElement.scrollTop,\n };\n }\n }\n\n @HostListener('window:pointermove', ['$event'])\n onPointerMove(event: PointerEvent) {\n if (this.pointerDown && this.dragEnabled) {\n event.preventDefault();\n const scrollDiff = {\n left: this.originalPosition.left - (event.clientX + this.el.nativeElement.scrollLeft),\n top: this.originalPosition.top - (event.clientY + this.el.nativeElement.scrollTop)\n };\n if (this.dragEnabled) {\n this.dragX.scrollLeft += scrollDiff.left;\n this.el.nativeElement.scrollTop += scrollDiff.top;\n }\n }\n }\n\n @HostListener('window:pointerup') onWindowPointerUp() {\n this.pointerDown = false;\n }\n}\n","import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { Outline } from './outline-item/outline.model';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport * as bookmarksSelectors from '../../../store/selectors/bookmark.selectors';\nimport { BookmarkNode } from '../../../store/models/bookmarks.interface';\nimport { CreateBookmark, LoadBookmarks } from '../../../store/actions/bookmark.actions';\nimport { take } from 'rxjs/operators';\nimport uuid from 'uuid';\nimport { ViewerEventService } from '../../viewer-event.service';\nimport { BookmarksState } from '../../../store/reducers/bookmarks.reducer';\n\n@Component({\n selector: 'mv-side-bar',\n templateUrl: './side-bar.component.html'\n})\nexport class SideBarComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() annotationsEnabled: boolean;\n @Input() outline: Outline;\n @Input() url: string;\n @Input() zoom: number;\n @Input() rotate: number;\n\n selectedView = 'outline';\n bookmarkNodes$: Observable<BookmarkNode[]>;\n\n $subscription: Subscription;\n\n constructor(private viewerEvents: ViewerEventService,\n private store: Store<BookmarksState>\n ) {}\n\n ngOnInit(): void {\n this.bookmarkNodes$ = this.store.pipe(select(bookmarksSelectors.getBookmarkNodes));\n this.$subscription = this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editable => this.selectedView = editable ? 'bookmarks' : this.selectedView);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.url && this.url) {\n this.store.dispatch(new LoadBookmarks());\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n goToDestination(destination: any[]) {\n this.viewerEvents.goToDestination(destination);\n }\n\n toggleSidebarView(sidebarView: string) {\n this.selectedView = sidebarView;\n }\n\n onAddBookmarkClick() {\n this.toggleSidebarView('bookmarks');\n this.store.pipe(select(bookmarksSelectors.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo, name: 'new bookmark', id: uuid()\n } as any));\n });\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Outline } from './outline.model';\n\n@Component({\n selector: 'mv-outline-item',\n templateUrl: './outline-item.component.html'\n})\nexport class OutlineItemComponent implements OnInit {\n\n @Input() outline: Outline;\n @Output() navigationEvent = new EventEmitter();\n\n showOutlineItems: boolean;\n\n ngOnInit() {\n this.showOutlineItems = true;\n }\n\n goToDestination(destination: any) {\n if (destination) {\n this.navigationEvent.emit(destination);\n }\n }\n\n toggleOutline() {\n this.showOutlineItems = !this.showOutlineItems;\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\nimport {filter, take} from 'rxjs/operators';\n\nimport { Rectangle } from '../../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromRedaSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromDocument from '../../store/selectors/document.selectors';\nimport * as fromActions from '../../store/actions/redaction.actions';\nimport * as fromRedactionActions from '../../store/actions/redaction.actions';\nimport * as fromRedaActions from '../../store/actions/redaction.actions';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar.module';\nimport { ViewerEventService } from '../../viewers/viewer-event.service';\nimport { Redaction } from '../services/redaction.model';\n\n@Component({\n selector: 'mv-redactions',\n templateUrl: './redaction.component.html'\n})\nexport class RedactionComponent implements OnInit, OnDestroy {\n\n @Input() zoom: number;\n @Input() rotate: number;\n\n redactionsPerPage$: Observable<any>; // todo add type\n selectedRedaction$: Observable<SelectionAnnotation | {}>;\n rectangles: Rectangle[];\n drawMode: boolean;\n documentId: string;\n\n private $subscription: Subscription;\n\n constructor(private store: Store<fromStore.State>,\n private readonly viewerEvents: ViewerEventService,\n private toolbarEvents: ToolbarEventService) {}\n\n ngOnInit(): void {\n this.redactionsPerPage$ = this.store.pipe(select(fromSelectors.getRedactionsPerPage));\n this.selectedRedaction$ = this.store.pipe(select(fromSelectors.getSelected));\n this.$subscription = this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode);\n this.$subscription.add(this.store.pipe(select(fromSelectors.getRedactedDocumentInfo), filter(value => !!value))\n .subscribe(redactedDocInfo => this.downloadDocument(redactedDocInfo)));\n this.$subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.$subscription.add(this.viewerEvents.textHighlight.subscribe(highlight => this.markTextRedaction(highlight)));\n this.toolbarEvents.applyRedactToDocument.subscribe(() => {\n this.store.pipe(select(fromRedaSelectors.getRedactionArray), take(1)).subscribe(redactions => {\n this.store.dispatch(new fromRedaActions.Redact(redactions));\n });\n });\n this.toolbarEvents.clearAllRedactMarkers.subscribe(() => {\n this.store.dispatch(new fromRedaActions.UnmarkAll(this.documentId));\n });\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n markTextRedaction(highlight) {\n const redactionHighlight = highlight.rectangles;\n if (redactionHighlight && redactionHighlight.length) {\n this.saveRedaction(highlight.page, [...redactionHighlight]);\n }\n this.toolbarEvents.highlightModeSubject.next(false);\n }\n\n markBoxRedaction({ rectangles, page }) {\n this.saveRedaction(page, rectangles);\n this.toolbarEvents.drawModeSubject.next(false);\n }\n\n saveRedaction(page: number, rectangles: Rectangle[]) {\n const redaction = { page, rectangles, redactionId: uuid(), documentId: this.documentId };\n this.store.dispatch(new fromRedactionActions.SaveRedaction(redaction));\n }\n\n onMarkerDelete(event) {\n this.store.dispatch(new fromActions.DeleteRedaction(event));\n }\n\n selectRedaction(event) {\n this.store.dispatch(new fromActions.SelectRedaction(event));\n }\n\n onMarkerUpdate(redaction: Redaction) {\n this.store.dispatch(new fromActions.SaveRedaction(redaction));\n }\n\n downloadDocument({ blob, filename }) {\n if (navigator && navigator.msSaveBlob) {\n navigator.msSaveBlob(blob, filename);\n } else {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = url;\n a.download = filename;\n a.click();\n a.remove();\n URL.revokeObjectURL(url);\n }\n this.store.dispatch(new fromRedactionActions.ResetRedactedDocument());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { IcpSession } from './icp.interfaces';\n\n@Injectable()\nexport class IcpSessionApiService {\n\n public ICP_SESSION_API = '/icp/sessions';\n\n constructor(private readonly httpClient: HttpClient) {}\n\n public loadSession(caseId: string): Observable<any> {\n return this.httpClient\n .get<{username: string, session: IcpSession}>(`${this.ICP_SESSION_API}/${caseId}`,\n { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport socketio from 'socket.io-client/dist/socket.io.js';\n\n@Injectable()\nexport class SocketService implements OnDestroy {\n\n private socket: any;\n subscription: Subscription;\n\n connected$ = new BehaviorSubject<boolean>(false);\n\n constructor() {}\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n connect() {\n this.socket = this.getSocketClient();\n this.socket.on('connect', () => this.connected$.next(true));\n this.socket.on('disconnect', () => this.connected$.next(false));\n }\n\n join(session) {\n this.subscription = this.connected$.subscribe(connected => {\n if (connected) {\n this.socket.emit('join', session);\n }\n });\n }\n\n leave(session) {\n this.socket.emit('leave', session);\n this.subscription.unsubscribe();\n }\n\n emit(event: string, data: any) {\n this.socket.emit(event, data);\n }\n\n listen(event: string): Observable<any> {\n return new Observable( observer => {\n this.socket.on(event, data => {\n observer.next(data);\n });\n return () => this.socket.off(event);\n });\n }\n\n getSocketClient() {\n return socketio('/', {\n path: '/icp/socket.io', agent: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SocketService } from './socket.service';\nimport { IcpParticipant, IcpScreenUpdate, IcpSession } from './icp.interfaces';\n\n@Injectable()\nexport class IcpUpdateService {\n\n SESSION_JOINED = '[Icp] Client Joined Session';\n CLIENT_DISCONNECTED = '[Icp] Client Disconnected From Session';\n NEW_PARTICIPANT_JOINED = '[Icp] New Participant Joined Session';\n REMOVE_PARTICIPANT = '[Icp] Remove Participant from List';\n PARTICIPANTS_UPDATED = '[Icp] Participants List Updated';\n UPDATE_PRESENTER = '[Icp] New Presenter Starts Presenting';\n PRESENTER_UPDATED = '[Icp] Presenter Updated';\n UPDATE_SCREEN = '[Icp] Update Screen';\n SCREEN_UPDATED = '[Icp] Screen Updated';\n\n session: IcpSession;\n\n constructor(private socket: SocketService) {}\n\n joinSession(username: string, session: IcpSession) {\n this.session = session;\n this.socket.connect();\n this.socket.join({...this.session, username});\n return this.socket.listen(this.SESSION_JOINED);\n }\n\n leaveSession() {\n this.socket.leave(this.session);\n }\n\n newParticipantJoined() {\n return this.socket.listen(this.NEW_PARTICIPANT_JOINED);\n }\n\n clientDisconnected() {\n return this.socket.listen(this.CLIENT_DISCONNECTED);\n }\n\n removeParticipant(participantId) {\n this.socket.emit(this.REMOVE_PARTICIPANT, {\n participantId: participantId, caseId: this.session.caseId\n });\n }\n\n participantListUpdated() {\n return this.socket.listen(this.PARTICIPANTS_UPDATED);\n }\n\n updatePresenter(presenter: IcpParticipant) {\n this.socket.emit(this.UPDATE_PRESENTER, {\n ...this.session, presenterId: presenter.id, presenterName: presenter.username\n });\n }\n\n presenterUpdated() {\n return this.socket.listen(this.PRESENTER_UPDATED);\n }\n\n updateScreen(screen: IcpScreenUpdate) {\n const update = { body: screen, sessionId: this.session.sessionId };\n this.socket.emit(this.UPDATE_SCREEN, update);\n }\n\n screenUpdated() {\n return this.socket.listen(this.SCREEN_UPDATED);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\nimport { Subscription } from 'rxjs';\nimport { IcpUpdateService } from './icp-update.service';\nimport { IcpState, IcpScreenUpdate, IcpSession, IcpParticipant } from './icp.interfaces';\nimport * as fromIcpSelectors from '../store/selectors/icp.selectors';\nimport { PdfPosition } from '../store/reducers/document.reducer';\n\n@Injectable()\nexport class IcpPresenterService {\n\n session: IcpSession;\n presenter: IcpParticipant;\n pdfPosition: PdfPosition;\n\n $subscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly socketService: IcpUpdateService,\n private store: Store<IcpState>) {}\n\n update(isPresenter: boolean) {\n if (isPresenter) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n subscribe() {\n if (!this.$subscription) {\n this.$subscription = this.store.pipe(select(fromDocSelectors.getPdfPosition)).subscribe(pdfPosition => {\n this.pdfPosition = pdfPosition;\n this.onPositionUpdate(pdfPosition);\n });\n this.$subscription.add(this.store.pipe(select(fromIcpSelectors.getPresenter)).subscribe(presenter => {\n this.presenter = presenter;\n }));\n this.$subscription.add(this.socketService.newParticipantJoined().subscribe(() => this.onNewParticipantJoined()));\n }\n }\n\n unsubscribe() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n this.$subscription = undefined;\n }\n }\n\n onPositionUpdate(pdfPosition: PdfPosition) {\n const screen: IcpScreenUpdate = { pdfPosition, document: undefined };\n this.socketService.updateScreen(screen);\n }\n\n onNewParticipantJoined() {\n this.onPositionUpdate(this.pdfPosition);\n this.socketService.updatePresenter(this.presenter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { IcpUpdateService } from './icp-update.service';\nimport { ViewerEventService } from '../viewers/viewer-event.service';\nimport { take } from 'rxjs/operators';\nimport { IcpState, IcpSession } from './icp.interfaces';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\n\n@Injectable()\nexport class IcpFollowerService {\n\n session: IcpSession;\n\n $subscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n private readonly socketService: IcpUpdateService,\n private store: Store<IcpState>) {}\n\n\n update(isFollower: boolean) {\n if (isFollower) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n subscribe() {\n if (!this.$subscription) {\n this.$subscription = this.socketService.screenUpdated()\n .subscribe(screen => this.followScreenUpdate(screen));\n }\n }\n\n unsubscribe() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n this.$subscription = undefined;\n }\n }\n\n followScreenUpdate({ pdfPosition }) {\n if (pdfPosition) {\n this.viewerEvents.goToDestination([\n pdfPosition.pageNumber - 1,\n { 'name': 'XYZ' },\n pdfPosition.left,\n pdfPosition.top\n ]);\n }\n this.store.pipe(select(fromDocSelectors.getPdfPosition), take(1))\n .subscribe(position => {\n const rotationDelta = (pdfPosition.rotation - position.rotation) % 360;\n if (rotationDelta !== 0) {\n this.toolbarEvents.rotate(rotationDelta);\n }\n });\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IcpParticipant, IcpState } from './icp.interfaces';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { ViewerEventService } from '../viewers/viewer-event.service';\nimport { IcpUpdateService } from './icp-update.service';\nimport { IcpPresenterService } from './icp-presenter.service';\nimport { IcpFollowerService } from './icp-follower.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromIcpActions from '../store/actions/icp.actions';\nimport * as fromIcpSelectors from '../store/selectors/icp.selectors';\nimport { filter, take } from 'rxjs/operators';\n\n@Injectable()\nexport class IcpService implements OnDestroy {\n\n caseId: string;\n client: IcpParticipant;\n presenter: IcpParticipant;\n isPresenter: boolean;\n\n subscription: Subscription;\n sessionSubscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n private readonly socketService: IcpUpdateService,\n private readonly presenterSubscriptions: IcpPresenterService,\n private readonly followerSubscriptions: IcpFollowerService,\n private store: Store<IcpState>) {\n this.subscription = this.store.pipe(select(fromIcpSelectors.getCaseId), filter(value => !!value)).subscribe(caseId => {\n this.caseId = caseId;\n });\n this.subscription.add(this.toolbarEvents.icp.sessionLaunch.subscribe(() => {\n if (this.caseId) { this.launchSession(); }\n }));\n }\n\n ngOnDestroy() {\n this.unsubscribeSession();\n this.subscription.unsubscribe();\n }\n\n launchSession() {\n this.store.dispatch(new fromIcpActions.LoadIcpSession(this.caseId));\n this.subscription.add(this.store.pipe(select(fromIcpSelectors.getIcpSession),\n filter(value => !!value && Object.keys(value).length > 1 ),\n take(1)).subscribe(() => { this.setUpSessionSubscriptions(); }));\n }\n\n setUpSessionSubscriptions() {\n this.sessionSubscription = this.toolbarEvents.icp.becomingPresenter.subscribe(() => this.becomePresenter());\n this.sessionSubscription.add(this.toolbarEvents.icp.stoppingPresenting.subscribe(() => this.stopPresenting()));\n this.sessionSubscription.add(this.toolbarEvents.icp.sessionExitConfirmed.subscribe(() => this.leavePresentation()));\n this.sessionSubscription.add(\n this.store.pipe(select(fromIcpSelectors.getPresenter)).subscribe(presenter => this.presenter = presenter )\n );\n this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.getClient)).subscribe(client => this.client = client));\n this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.isPresenter)).subscribe(isPresenter => {\n this.isPresenter = isPresenter;\n this.presenterSubscriptions.update(isPresenter);\n this.followerSubscriptions.update(!isPresenter);\n }));\n this.sessionSubscription.add(this.socketService.clientDisconnected().subscribe(cli => this.clientDisconnected(cli)));\n this.sessionSubscription.add(this.socketService.presenterUpdated().subscribe(pres => {\n this.store.dispatch(new fromIcpActions.IcpPresenterUpdated(pres));\n }));\n this.sessionSubscription.add(this.socketService.participantListUpdated().subscribe(participants => {\n this.store.dispatch(new fromIcpActions.IcpParticipantListUpdated(participants));\n }));\n }\n\n unsubscribeSession() {\n this.presenterSubscriptions.update(false);\n this.followerSubscriptions.update(false);\n this.sessionSubscription.unsubscribe();\n }\n\n leavePresentation() {\n if (this.isPresenter) {\n this.stopPresenting();\n }\n this.removeParticipant(this.client.id);\n this.socketService.leaveSession();\n this.store.dispatch(new fromIcpActions.LeaveIcpSocketSession());\n this.unsubscribeSession();\n }\n\n stopPresenting() {\n const presenter: IcpParticipant = {username: '', id: ''};\n this.socketService.updatePresenter(presenter);\n }\n\n becomePresenter() {\n this.socketService.updatePresenter(this.client);\n }\n\n clientDisconnected(client) {\n if (client === this.presenter.id) {\n this.stopPresenting();\n }\n this.removeParticipant(client);\n }\n\n removeParticipant(participantId) {\n this.socketService.removeParticipant(participantId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport {catchError, exhaustMap, map, switchMap} from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport {AnnotationApiService} from '../../annotations/services/annotation-api/annotation-api.service';\nimport * as annotationsActions from '../actions/annotation.actions';\n\n@Injectable()\nexport class AnnotationEffects {\n constructor(\n private actions$: Actions,\n private annotationApiService: AnnotationApiService,\n ) { }\n\n @Effect()\n loadAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.LOAD_ANNOTATION_SET),\n map((action: annotationsActions.LoadAnnotationSet) => action.payload),\n switchMap((documentId) => {\n return this.annotationApiService.getAnnotationSet(documentId).pipe(\n map(res => {\n return new annotationsActions.LoadAnnotationSetSucess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }));\n\n @Effect()\n postAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION),\n map((action: annotationsActions.SaveAnnotation) => action.payload),\n exhaustMap((annotation) => {\n return this.annotationApiService.postAnnotation(annotation).pipe(\n map(annotations => {\n return new annotationsActions.SaveAnnotationSuccess(annotations);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }));\n\n @Effect()\n deleteAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.DELETE_ANNOTATION),\n map((action: annotationsActions.DeleteAnnotation) => action.payload),\n exhaustMap((annotation) => {\n return this.annotationApiService.deleteAnnotation(annotation).pipe(\n map(result => {\n return new annotationsActions.DeleteAnnotationSuccess(annotation);\n }),\n catchError(error => {\n return of(new annotationsActions.DeleteAnnotationFail(error));\n }));\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { BookmarksApiService } from '../../annotations/services/bookmarks-api/bookmarks-api.service';\nimport * as bookmarksActions from '../actions/bookmark.actions';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocument from '../selectors/document.selectors';\nimport * as fromBookmarks from '../reducers/bookmarks.reducer';\nimport * as fromStore from '../reducers/reducers';\n\n@Injectable()\nexport class BookmarksEffects {\n\n constructor(private actions$: Actions,\n private store: Store<fromStore.AnnotationSetState|fromBookmarks.BookmarksState>,\n private bookmarksApiService: BookmarksApiService) {}\n\n @Effect()\n loadBookmarks$ = this.actions$.pipe(\n ofType(bookmarksActions.LOAD_BOOKMARKS),\n withLatestFrom(this.store.pipe(select(fromDocument.getDocumentId))),\n map(([, documentId]) => documentId),\n exhaustMap((documentId) =>\n this.bookmarksApiService.getBookmarks(documentId)\n .pipe(\n map(res => new bookmarksActions.LoadBookmarksSuccess(res)),\n catchError(err => of(new bookmarksActions.LoadBookmarksFailure(err)))\n )\n ));\n\n @Effect()\n createBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.CREATE_BOOKMARK),\n map((action: bookmarksActions.CreateBookmark) => action.payload),\n exhaustMap((bookmark) =>\n this.bookmarksApiService.createBookmark(bookmark)\n .pipe(\n map(bmrk => new bookmarksActions.CreateBookmarkSuccess(bmrk)),\n catchError(error => of(new bookmarksActions.CreateBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n moveBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.MOVE_BOOKMARK),\n map((action: bookmarksActions.MoveBookmark) => action.payload),\n exhaustMap((bookmarks) =>\n this.bookmarksApiService.updateMultipleBookmarks(bookmarks)\n .pipe(\n map(bmrks => new bookmarksActions.MoveBookmarkSuccess(bmrks)),\n catchError(error => of(new bookmarksActions.MoveBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n deleteBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.DELETE_BOOKMARK),\n map((action: bookmarksActions.DeleteBookmark) => action.payload),\n exhaustMap(({ deleted, updated }) =>\n this.bookmarksApiService.deleteMultipleBookmarks({ deleted, updated })\n .pipe(\n switchMap(() => {\n if (updated) {\n return [\n new bookmarksActions.DeleteBookmarkSuccess(deleted),\n new bookmarksActions.UpdateBookmarkSuccess(updated)\n ];\n } else {\n return [new bookmarksActions.DeleteBookmarkSuccess(deleted)];\n }\n }),\n catchError(error => of(new bookmarksActions.DeleteBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n updateBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.UPDATE_BOOKMARK),\n map((action: bookmarksActions.UpdateBookmark) => action.payload),\n switchMap((bookmark) =>\n this.bookmarksApiService.updateBookmark(bookmark)\n .pipe(\n map(bmrk => new bookmarksActions.UpdateBookmarkSuccess(bmrk)),\n catchError(error => of(new bookmarksActions.UpdateBookmarkFailure(error)))\n )\n ));\n}\n","import {Observable} from 'rxjs';\nimport {HttpClient, HttpResponse} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {catchError, map} from 'rxjs/operators';\nimport { Redaction } from './redaction.model';\n\n@Injectable()\nexport class RedactionApiService {\n\n private markupsApiUrl = '/api/markups';\n private redactApiUrl = '/api/redaction';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getRedactions(documentId: string): Observable<HttpResponse<Redaction[]>> {\n const fixedUrl = `${this.markupsApiUrl}/${documentId}`;\n return this.httpClient\n .get<Redaction[]>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public saveRedaction(body): Observable<Redaction> {\n return this.httpClient\n .post<Redaction>(this.markupsApiUrl, body, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response.body),\n catchError(() => [])\n );\n }\n\n public deleteRedaction(payload): Observable<null> {\n const url = `${this.markupsApiUrl}/${payload.documentId}/${payload.redactionId}`;\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteAllMarkers(documentId): Observable<null> {\n const url = `${this.markupsApiUrl}/${documentId}`;\n\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public redact(payload): Observable<HttpResponse<Blob>> {\n return this.httpClient\n .post<Blob>(this.redactApiUrl, payload, { observe: 'response' , withCredentials: true, responseType: 'blob' as 'json' })\n .pipe(\n map(response => response),\n catchError(() => [])\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { RedactionApiService } from '../../redaction/services/redaction-api.service';\nimport * as redactionActions from '../actions/redaction.actions';\nimport { HttpResponse } from '@angular/common/http';\n\n@Injectable()\nexport class RedactionEffects {\n constructor(\n private actions$: Actions,\n private redactionApiService: RedactionApiService,\n ) { }\n\n @Effect()\n loadRedactions$ = this.actions$.pipe(\n ofType(redactionActions.LOAD_REDACTIONS),\n map((action: redactionActions.LoadRedactions) => action.payload),\n switchMap((documentId) => {\n return this.redactionApiService.getRedactions(documentId).pipe(\n map(resp => {\n return new redactionActions.LoadRedactionSuccess(resp.body);\n }),\n catchError(error => {\n return of(new redactionActions.LoadRedactionFailure(error));\n }));\n }));\n\n @Effect()\n saveRedaction$ = this.actions$.pipe(\n ofType(redactionActions.SAVE_REDACTION),\n map((action: redactionActions.SaveRedaction) => action.payload),\n exhaustMap((redaction) => {\n return this.redactionApiService.saveRedaction(redaction).pipe(\n map(resp => {\n return new redactionActions.SaveRedactionSuccess(resp);\n }),\n catchError(error => {\n return of(new redactionActions.SaveRedactionFailure(error));\n }));\n }));\n\n @Effect()\n deleteRedaction$ = this.actions$.pipe(\n ofType(redactionActions.DELETE_REDACTION),\n map((action: redactionActions.DeleteRedaction) => action.payload),\n exhaustMap((redactionPayload) => {\n return this.redactionApiService.deleteRedaction(redactionPayload).pipe(\n map(() => {\n return new redactionActions.DeleteRedactionSuccess(redactionPayload);\n }),\n catchError(error => {\n return of(new redactionActions.DeleteRedactionFailure(error));\n }));\n }));\n\n @Effect()\n redact$ = this.actions$.pipe(\n ofType(redactionActions.REDACT),\n map((action: redactionActions.Redact) => action.payload),\n exhaustMap((redactionPayload) => {\n return this.redactionApiService.redact(redactionPayload).pipe(\n map((result: HttpResponse<Blob>) => {\n const header = result.headers.get('content-disposition').split('filename=');\n const filename = header.length > 1 ? header[1].replace(/\"/g, '')\n : `redacted-document-${redactionPayload.documentId}`;\n return new redactionActions.RedactSuccess({ blob: result.body, filename });\n }),\n catchError(error => {\n return of(new redactionActions.RedactFailure(error));\n }));\n }));\n\n @Effect()\n unmarkAll$ = this.actions$.pipe(\n ofType(redactionActions.UNMARK_ALL),\n map((action: redactionActions.UnmarkAll) => action.payload),\n exhaustMap((documentId) => {\n return this.redactionApiService.deleteAllMarkers(documentId).pipe(\n map(result => {\n return new redactionActions.UnmarkAllSuccess();\n }),\n catchError(error => {\n return of(new redactionActions.DeleteRedactionFailure(error));\n }));\n }));\n}\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable()\nexport class DocumentConversionApiService {\n\n private documentConversionUrl = '/doc-assembly/convert';\n\n constructor(private readonly httpClient: HttpClient) {}\n\n public convert(documentId): Observable<HttpResponse<Blob>> {\n return this.httpClient\n .post<Blob>(`${this.documentConversionUrl}/${documentId}`, {},\n { observe: 'response' , withCredentials: true, responseType: 'blob' as 'json' })\n .pipe(\n map(response => response),\n catchError(error => of(error))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { Rotation } from './rotation.model';\n\n@Injectable()\nexport class RotationApiService {\n\n public rotationApiUrl = '/em-anno/metadata';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getRotation(documentId: string): Observable<HttpResponse<Rotation>> {\n const fixedUrl = `${this.rotationApiUrl}/${documentId}`;\n return this.httpClient\n .get<Rotation>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public saveRotation(payload: Rotation): Observable<HttpResponse<Rotation>> {\n const fixedUrl = `${this.rotationApiUrl}/`;\n return this.httpClient\n .post<any>(fixedUrl, payload, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response),\n catchError(() => [])\n );\n }\n\n}\n","import { Actions, Effect, ofType } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { HttpResponse } from '@angular/common/http';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { DocumentConversionApiService } from '../../viewers/convertible-content-viewer/document-conversion-api.service';\nimport { RotationApiService } from '../../viewers/rotation-persist/rotation-api.service';\nimport { of } from 'rxjs';\nimport * as documentActions from '../actions/document.actions';\n\n@Injectable()\nexport class DocumentEffects {\n constructor(\n private actions$: Actions,\n private documentConversionService: DocumentConversionApiService,\n private rotationApiService: RotationApiService,\n ) { }\n\n @Effect()\n convert$ = this.actions$.pipe(\n ofType(documentActions.CONVERT),\n map((action: documentActions.Convert) => action.payload),\n exhaustMap((documentId) => {\n return this.documentConversionService.convert(documentId).pipe(\n map((result: HttpResponse<Blob>) => {\n const url = URL.createObjectURL(result.body);\n return new documentActions.ConvertSuccess(url);\n }),\n catchError(error => {\n return of(new documentActions.ConvertFailure(error));\n }));\n }));\n\n @Effect()\n loadRotation$ = this.actions$.pipe(\n ofType(documentActions.LOAD_ROTATION),\n map((action: documentActions.LoadRotation) => action.payload),\n switchMap((documentId) => {\n return this.rotationApiService.getRotation(documentId).pipe(\n map(resp => {\n return new documentActions.LoadRotationSuccess(resp.body);\n }),\n catchError(error => {\n return of(new documentActions.LoadRotationFailure(error));\n }));\n }));\n\n @Effect()\n saveRotation$ = this.actions$.pipe(\n ofType(documentActions.SAVE_ROTATION),\n map((action: documentActions.SaveRotation) => action.payload),\n switchMap((payload) => {\n return this.rotationApiService.saveRotation(payload).pipe(\n map(resp => {\n return new documentActions.SaveRotationSuccess(resp.body);\n }),\n catchError(error => {\n return of(new documentActions.SaveRotationFailure(error));\n }));\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { IcpSessionApiService } from '../../icp/icp-session-api.service';\nimport { IcpUpdateService } from '../../icp/icp-update.service';\nimport * as icpActions from '../actions/icp.actions' ;\nimport { IcpSession } from '../../icp/icp.interfaces';\n\n@Injectable()\nexport class IcpEffects {\n\n constructor(private actions$: Actions,\n private icpApiService: IcpSessionApiService,\n private icpUpdateService: IcpUpdateService) {}\n\n @Effect()\n loadIcpSession$ = this.actions$.pipe(\n ofType(icpActions.LOAD_ICP_SESSION),\n map((action: icpActions.LoadIcpSession) => action.payload),\n exhaustMap((caseId: string) =>\n this.icpApiService.loadSession(caseId)\n .pipe(\n map(res => new icpActions.JoinIcpSocketSession(res)),\n catchError(error => of(new icpActions.LoadIcpSessionFailure(error)))\n )\n ));\n\n\n @Effect()\n joinIcpSocketSession$ = this.actions$.pipe(\n ofType(icpActions.JOIN_ICP_SOCKET_SESSION),\n map((action: icpActions.JoinIcpSocketSession) => action.payload),\n switchMap((res: {username: string, session: IcpSession}) =>\n this.icpUpdateService.joinSession(res.username, res.session)\n .pipe(map(participants => new icpActions.IcpSocketSessionJoined({session: res.session, participantInfo: participants})))\n ));\n}\n","import { AnnotationEffects } from './annotation.effects';\nimport { BookmarksEffects } from './bookmarks.effects';\nimport { RedactionEffects } from './redaction.effects';\nimport { DocumentEffects } from './document.effects';\nimport { IcpEffects } from './icp.effects';\n\nexport const effects: any[] = [AnnotationEffects, BookmarksEffects, RedactionEffects, DocumentEffects, IcpEffects];\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { TreeNode } from 'angular-tree-component';\n\nimport { DeleteBookmark, MoveBookmark, UpdateBookmark } from '../../../../store/actions/bookmark.actions';\nimport { Bookmark, BookmarkNode } from '../../../../store/models/bookmarks.interface';\nimport * as bookmarksSelectors from '../../../../store/selectors/bookmark.selectors';\nimport { AnnotationSetState} from '../../../../store/reducers/annotations.reducer';\nimport { DocumentPages } from '../../../../store/reducers/document.reducer';\nimport * as fromDocument from '../../../../store/selectors/document.selectors';\nimport * as fromBookmarks from '../../../../store/reducers/bookmarks.reducer';\nimport { getBookmarkChildren } from '../../../../store/bookmarks-store-utils';\n\n@Component({\n selector: 'mv-bookmarks',\n templateUrl: './bookmarks.component.html'\n})\nexport class BookmarksComponent implements OnInit, OnDestroy {\n\n @Input() bookmarkNodes: BookmarkNode[];\n @Input() zoom: number;\n @Input() rotate: number;\n @Output() goToDestination = new EventEmitter<any[]>();\n\n pageLookup: {[pageId: number]: DocumentPages } = {};\n editableBookmark: string;\n BOOKMARK_CHAR_LIMIT = 30;\n\n options = {\n allowDrag: true,\n allowDrop: true\n };\n\n $subscription: Subscription;\n\n constructor(private store: Store<fromBookmarks.BookmarksState|AnnotationSetState>) {}\n\n ngOnInit(): void {\n this.$subscription = this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editableId => this.editableBookmark = editableId);\n this.$subscription.add(this.store.select(fromDocument.getPages)\n .subscribe(pages => {\n\n Object.keys(pages).map(key => {\n this.pageLookup[key] = pages[key];\n });\n\n }));\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n editBookmark(id) {\n this.editableBookmark = id;\n }\n\n onBookmarkMove({ node, from, to }: any) {\n let movedBookmarks = [{\n ...node,\n previous: to.index > 0 ? to.parent.children[to.index - 1].id : undefined,\n parent: to.parent.documentId ? to.parent.id : undefined\n }];\n let fromNext = this.getSibling(from, from.index);\n fromNext = fromNext && fromNext.id === node.previous ? this.getSibling(from, from.index + 1) : fromNext;\n if (fromNext) {\n movedBookmarks = [...movedBookmarks, { ...fromNext, previous: node.previous }];\n }\n const toNext = this.getSibling(to, to.index + 1);\n if (toNext) {\n movedBookmarks = [ ...movedBookmarks, { ...toNext, previous: node.id }];\n }\n this.store.dispatch(new MoveBookmark(movedBookmarks));\n }\n\n deleteBookmark(node: TreeNode) {\n let next: Bookmark;\n const siblings = node.parent.children;\n if (siblings.length > node.index + 1) {\n next = siblings[node.index + 1].data;\n next.previous = node.data.previous;\n }\n this.store.dispatch(new DeleteBookmark({\n deleted: [node.data.id, ...getBookmarkChildren(node.data.children)], updated: next\n }));\n }\n\n updateBookmark(bookmark: Bookmark, name) {\n const editedBookmark = {\n ... bookmark,\n name\n };\n this.store.dispatch(new UpdateBookmark(editedBookmark));\n this.editableBookmark = undefined;\n }\n\n goToBookmark(bookmark: Bookmark) {\n const thisPage = this.pageLookup[bookmark.pageNumber + 1];\n const defaultHeight = thisPage.styles.height;\n const defaultScaleY = this.scaledY(bookmark.yCoordinate, defaultHeight, thisPage);\n\n let top = 0, left = 0;\n switch (this.rotate) {\n case 90:\n left = - defaultScaleY;\n break;\n case 180:\n top = this.scaledY(bookmark.yCoordinate, (defaultHeight - (24 * this.zoom)), thisPage);\n break;\n case 270:\n left = defaultScaleY;\n break;\n default:\n top = defaultScaleY;\n }\n\n this.goToDestination.emit([\n bookmark.pageNumber,\n { 'name': 'XYZ' },\n left,\n top\n ]);\n }\n\n private getSibling(node, index) {\n return node.parent.children.length > index ? node.parent.children[index] : undefined;\n }\n\n private scaledY(yCoordinate: number, height: number, page: DocumentPages): number {\n const viewportScale = page.viewportScale / this.zoom;\n return ((height / this.zoom) - yCoordinate) / viewportScale;\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/document.reducer';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { Subscription } from 'rxjs';\nimport * as fromSelectors from '../../store/selectors/document.selectors';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'mv-conversion-viewer',\n templateUrl: './convertible-content-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ConvertibleContentViewerComponent implements OnInit, OnDestroy {\n\n @Input() originalUrl;\n @Input() downloadFileName: string;\n\n @Input() height;\n\n @Input() enableAnnotations: boolean;\n @Input() enableRedactions: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() viewerException = new EventEmitter<ViewerException>();\n @Output() documentTitle = new EventEmitter<string>();\n\n private $subscription: Subscription;\n convertedUrl: string;\n\n constructor(private store: Store<fromStore.DocumentState>) {\n }\n\n ngOnInit(): void {\n this.store.dispatch(new fromDocumentActions.Convert(this.extractDMStoreDocId(this.originalUrl)));\n this.$subscription = this.store.pipe(select(fromSelectors.getConvertedDocument), filter(value => !!value))\n .subscribe((docInfo) => {\n if (docInfo.url) {\n this.convertedUrl = docInfo.url;\n this.store.dispatch(new fromDocumentActions.ClearConvertDocUrl());\n } else {\n this.onLoadException(new ViewerException(docInfo.error));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n onMediaLoad(status: ResponseType) {\n this.mediaLoadStatus.emit(status);\n }\n\n onLoadException(exception: ViewerException) {\n this.viewerException.emit(exception);\n }\n\n onDocumentTitleChange(title: string) {\n this.documentTitle.emit(title);\n }\n\n // todo move this to common place for media viewer and pdf\n private extractDMStoreDocId(url: string): string {\n\n if (url.includes('/documents/')) {\n url = url.split('/documents/')[1];\n } else if (url.includes('/documentsv2/')) {\n url = url.split('/documentsv2/')[1];\n }\n return url.replace('/binary', '');\n }\n}\n","import { Component } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar.module';\n\n@Component({\n selector: 'mv-confirm-action',\n templateUrl: './confirm-action-dialog.component.html',\n})\nexport class ConfirmActionDialogComponent {\n\n constructor(private toolbarEvents: ToolbarEventService) {}\n\n onCancel() {\n this.toolbarEvents.icp.leavingSession.next(false);\n }\n\n onConfirm() {\n this.toolbarEvents.icp.confirmExit();\n this.toolbarEvents.icp.leavingSession.next(false);\n }\n}\n","import {Bookmark, BookmarksPerPage} from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\nimport {Component, Input, OnInit} from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromSelectors from '../../store/selectors/bookmark.selectors';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'mv-bookmark-icons',\n templateUrl: './bookmark-icons.component.html'\n})\nexport class BookmarkIconsComponent implements OnInit {\n\n @Input() zoom: number;\n @Input() rotate: number;\n bookmarksPerPage$: Observable<BookmarksPerPage[]>;\n bookmarks: Bookmark[];\n documentId: string;\n\n constructor(private store: Store<fromStore.State>) {}\n\n ngOnInit(): void {\n this.bookmarksPerPage$ = this.store.pipe(select(fromSelectors.getBookmarksPerPage));\n }\n\n}\n","import { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocuments from '../../store/selectors/document.selectors';\nimport { filter, take } from 'rxjs/operators';\nimport { Rotation } from './rotation.model';\nimport { ResponseType } from '../viewer-exception.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { Subscription } from 'rxjs';\n\n\n@Directive({\n selector: '[mvRotationPersist]'\n})\nexport class RotationPersistDirective implements OnInit, OnDestroy {\n\n documentId: string;\n rotation = 0;\n savedRotation = 0;\n\n $subscriptions: Subscription;\n\n constructor(private el: ElementRef,\n private store: Store<fromStore.DocumentState>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private toolbarEvents: ToolbarEventService) {\n }\n\n ngOnInit() {\n this.$subscriptions = this.toolbarEvents.rotateSubject.subscribe(rotation => this.onRotate(rotation));\n this.$subscriptions\n .add(this.toolbarEvents.saveRotationSubject.subscribe(() => this.saveRotation()))\n .add(this.store.pipe(select(fromDocuments.getRotation))\n .subscribe(rotation => this.savedRotation = rotation))\n .add(this.store.pipe(select(fromDocuments.getDocumentId))\n .subscribe(documentId => this.documentId = documentId));\n }\n\n ngOnDestroy() {\n this.$subscriptions.unsubscribe();\n }\n\n @HostListener('mediaLoadStatus', ['$event'])\n onMediaLoad(status: ResponseType) {\n this.rotation = 0;\n this.store.dispatch(new fromDocumentActions.LoadRotation(this.documentId));\n this.store.pipe(select(fromDocuments.rotationLoaded),\n filter(value => !!value),\n take(1))\n .subscribe(() => {\n if (this.savedRotation) {\n this.toolbarEvents.rotateSubject.next(this.savedRotation);\n }\n });\n }\n\n private onRotate(rotation: number) {\n this.rotation = (this.rotation + rotation) % 360;\n this.toolbarButtons.showSaveRotationButton = this.savedRotation !== this.rotation;\n }\n\n private saveRotation() {\n const payload: Rotation = {\n documentId: this.documentId,\n rotationAngle: this.rotation\n };\n this.store.dispatch(new fromDocumentActions.SaveRotation(payload));\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { IcpParticipant, IcpState } from '../icp.interfaces';\nimport { select, Store } from '@ngrx/store';\nimport * as fromSelectors from '../../store/selectors/icp.selectors';\n\n@Component({\n selector: 'mv-participants-list',\n templateUrl: './participants-list.component.html'\n})\nexport class ParticipantsListComponent implements OnInit, OnDestroy {\n\n subscription: Subscription;\n participants$: Observable<IcpParticipant[]>;\n presenter$: Observable<IcpParticipant>;\n isPresenter$: Observable<boolean>;\n\n showParticipantsList = false;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private store: Store<IcpState>) {}\n\n ngOnInit() {\n this.participants$ = this.store.pipe(select(fromSelectors.getParticipants));\n this.presenter$ = this.store.pipe(select(fromSelectors.getPresenter));\n this.isPresenter$ = this.store.pipe(select(fromSelectors.isPresenter));\n\n this.subscription = this.toolbarEvents.icp.participantsListVisible.subscribe(isVisible => this.showParticipantsList = isVisible);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","import { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport uuid from 'uuid';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromDocument from '../../../../store/selectors/document.selectors';\nimport { ViewerEventService } from '../../../../viewers/viewer-event.service';\nimport * as fromAnnotationActions from '../../../../store/actions/annotation.actions';\nimport { HighlightCreateService } from './highlight-create.service';\n\n@Directive({\n selector: '[mvCreateTextHighlight]'\n})\nexport class HighlightCreateDirective implements OnInit, OnDestroy {\n\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n\n $subscription: Subscription;\n\n constructor(private element: ElementRef<HTMLElement>,\n private toolbarEvents: ToolbarEventService,\n private viewerEvents: ViewerEventService,\n private highlightService: HighlightCreateService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n ngOnInit() {\n this.$subscription = this.store.select(fromDocument.getPages).subscribe(pages => {\n if (pages[1]) {\n this.allPages = pages;\n }\n });\n }\n\n ngOnDestroy() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n }\n }\n\n @HostListener('mouseup', ['$event'])\n onMouseUp(mouseEvent: MouseEvent) {\n const pageElement = (<HTMLElement>(mouseEvent.target as HTMLElement).offsetParent).offsetParent;\n const page = parseInt(pageElement.getAttribute('data-page-number'), 10);\n if (this.toolbarEvents.highlightModeSubject.getValue()) {\n const rectangles = this.getRectangles(mouseEvent, page);\n this.viewerEvents.textSelected({ page, rectangles });\n }\n }\n\n @HostListener('mousedown', ['$event'])\n onPdfViewerClick(event: MouseEvent) {\n this.store.dispatch(new fromAnnotationActions.SelectedAnnotation({\n annotationId: '', selected: false, editable: false\n }));\n this.viewerEvents.clearCtxToolbar();\n }\n\n private getRectangles(event: MouseEvent, page) {\n this.pageHeight = this.allPages[page].styles.height;\n this.pageWidth = this.allPages[page].styles.width;\n this.zoom = parseFloat(this.allPages[page].scaleRotation.scale);\n this.rotate = parseInt(this.allPages[page].scaleRotation.rotation, 10);\n const selection = window.getSelection();\n if (selection) {\n const localElement = <HTMLElement>event.target;\n\n this.removeEnhancedTextModeStyling(localElement);\n\n if (selection.rangeCount && !selection.isCollapsed) {\n const range = selection.getRangeAt(0).cloneRange();\n const clientRects = range.getClientRects();\n\n if (clientRects) {\n const parentRect = localElement.parentElement.getBoundingClientRect();\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n selectionRectangles.push(selectionRectangle);\n }\n return selectionRectangles;\n }\n }\n }\n }\n\n private createTextRectangle(rect: any, parentRect: any): Rectangle {\n const height = rect.bottom - rect.top;\n const width = rect.right - rect.left;\n const top = rect.top - parentRect.top;\n const left = rect.left - parentRect.left;\n\n let rectangle = this.highlightService.applyRotation(this.pageHeight, this.pageWidth, height, width, top, left, this.rotate, this.zoom);\n rectangle = { id: uuid(), ...rectangle };\n\n return rectangle as Rectangle;\n }\n\n private removeEnhancedTextModeStyling(element: HTMLElement) {\n if (element.parentElement.children) {\n for (let i = 0; i < element.parentElement.children.length; i++) {\n const child = <HTMLElement>element.parentElement.children[i];\n\n child.style.padding = '0';\n // regex will be targeting the translate style in string\n // e.g. scaleX(0.969918) translateX(-110.684px) translateY(-105.274px) will become scaleX(0.969918)\n const translateCSSRegex = /translate[XYZ]\\(-?\\d*(\\.\\d+)?(px)?\\)/g;\n child.style.transform = child.style.transform.replace(translateCSSRegex, '').trim();\n }\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n OnDestroy,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { Subscription } from 'rxjs';\nimport { ResponseType } from '../viewer-exception.model';\n\n@Component({\n selector: 'mv-multimedia-player',\n templateUrl: './multimedia-player.component.html'\n})\nexport class MultimediaPlayerComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n @Input() multimediaOn: boolean;\n\n @Output() loadStatus = new EventEmitter<ResponseType>();\n\n @ViewChild('downloadLink', {static: false}) downloadLink: ElementRef;\n @ViewChild('videoPlayer', {static: false}) videoPlayer: ElementRef;\n\n playbackMsg = 'loading';\n\n private subscription: Subscription;\n\n constructor(\n public readonly toolbarEvents: ToolbarEventService,\n ) {}\n\n public ngOnInit(): void {\n this.subscription = this.toolbarEvents.downloadSubject\n .subscribe(() => this.downloadLink.nativeElement.click());\n this.loadStatus.emit(ResponseType.SUCCESS);\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.url) {\n this.reloadVideo();\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n reloadVideo() {\n if (this.videoPlayer) {\n this.playbackMsg = 'loading';\n this.videoPlayer.nativeElement.load();\n }\n }\n\n onSuccess() {\n this.playbackMsg = 'success';\n }\n\n onError() {\n this.playbackMsg = 'error';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PdfViewerComponent } from './viewers/pdf-viewer/pdf-viewer.component';\nimport { ImageViewerComponent } from './viewers/image-viewer/image-viewer.component';\nimport { UnsupportedViewerComponent } from './viewers/unsupported-viewer/unsupported-viewer.component';\nimport { MediaViewerComponent } from './media-viewer.component';\nimport { ToolbarModule } from './toolbar/toolbar.module';\nimport { PdfJsWrapperFactory } from './viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider';\nimport { AnnotationsModule } from './annotations/annotations.module';\nimport { CommentService } from './annotations/comment-set/comment/comment.service';\nimport { GrabNDragDirective } from './viewers/grab-n-drag.directive';\nimport { SideBarComponent } from './viewers/pdf-viewer/side-bar/side-bar.component';\nimport { OutlineItemComponent } from './viewers/pdf-viewer/side-bar/outline-item/outline-item.component';\nimport { TagInputModule } from 'ngx-chips';\nimport { RouterModule } from '@angular/router';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule} from '@ngrx/store';\nimport { RedactionComponent } from './redaction/components/redaction.component';\nimport { IcpSessionApiService } from './icp/icp-session-api.service';\nimport { IcpUpdateService } from './icp/icp-update.service';\nimport { IcpService } from './icp/icp.service';\nimport { SocketService } from './icp/socket.service';\nimport { reducers} from './store/reducers/reducers';\nimport { effects } from './store/effects/index';\nimport { BookmarksComponent } from './viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component';\nimport { RedactionApiService } from './redaction/services/redaction-api.service';\nimport { MutableDivModule } from 'mutable-div';\nimport { ConvertibleContentViewerComponent } from './viewers/convertible-content-viewer/convertible-content-viewer.component';\nimport { DocumentConversionApiService } from './viewers/convertible-content-viewer/document-conversion-api.service';\nimport { IcpPresenterService } from './icp/icp-presenter.service';\nimport { IcpFollowerService } from './icp/icp-follower.service';\nimport { ConfirmActionDialogComponent } from './icp/confirm-exit/confirm-action-dialog.component';\nimport { TreeModule } from 'angular-tree-component';\nimport { BookmarkIconsComponent } from './bookmark/components/bookmark-icons.component';\nimport { RotationApiService } from './viewers/rotation-persist/rotation-api.service';\nimport { RotationPersistDirective } from './viewers/rotation-persist/rotation-persist.directive';\nimport { ParticipantsListComponent } from './icp/participants-list/participants-list.component';\nimport { HighlightCreateDirective } from './annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive';\nimport {MultimediaPlayerComponent} from './viewers/multimedia-player/multimedia-player.component';\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n ToolbarModule,\n AnnotationsModule,\n TagInputModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n StoreModule.forFeature('media-viewer', reducers),\n EffectsModule.forFeature(effects),\n TreeModule.forRoot(),\n MutableDivModule\n ],\n declarations: [\n PdfViewerComponent,\n SideBarComponent,\n BookmarksComponent,\n OutlineItemComponent,\n ImageViewerComponent,\n UnsupportedViewerComponent,\n MultimediaPlayerComponent,\n MediaViewerComponent,\n ConvertibleContentViewerComponent,\n GrabNDragDirective,\n RotationPersistDirective,\n HighlightCreateDirective,\n ConfirmActionDialogComponent,\n RedactionComponent, // todo made put this into module\n BookmarkIconsComponent,\n ParticipantsListComponent\n ],\n entryComponents: [\n PdfViewerComponent,\n ImageViewerComponent,\n UnsupportedViewerComponent\n ],\n providers: [\n PdfJsWrapperFactory,\n CommentService,\n RedactionApiService,\n IcpSessionApiService,\n IcpUpdateService,\n SocketService,\n IcpService,\n IcpPresenterService,\n IcpFollowerService,\n RedactionApiService,\n DocumentConversionApiService,\n RotationApiService,\n ],\n exports: [\n MediaViewerComponent\n ]\n})\nexport class MediaViewerModule { }\n"],"names":["pdfjsLib.GlobalWorkerOptions","pdfjsLib.getDocument","pdfjsViewer.PDFLinkService","pdfjsViewer.EventBus","pdfjsViewer.PDFFindController","pdfjsViewer.PDFViewer","pdfjsViewer.DownloadManager","fromActions.CONVERT_SUCCESS","fromActions.CONVERT_FAIL","fromActions.CLEAR_CONVERT_DOC_URL","fromActions.LOAD_ROTATION","fromActions.LOAD_ROTATION_SUCCESS","fromActions.LOAD_ROTATION_FAIL","fromActions.SAVE_ROTATION_SUCCESS","fromActions.SET_DOCUMENT_ID","fromActions.ADD_PAGES","fromActions.POSITION_UPDATED","fromAnnotations.LOAD_ANNOTATION_SET","fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS","fromAnnotations.LOAD_ANNOTATION_SET_FAIL","fromAnnotations.SAVE_ANNOTATION_SUCCESS","fromAnnotations.DELETE_ANNOTATION_SUCCESS","fromAnnotations.ADD_OR_EDIT_COMMENT","fromAnnotations.SELECT_ANNOTATION","fromAnnotations.SEARCH_COMMENT","fromAnnotations.APPLY_COMMENT_SUMMARY_FILTER","fromAnnotations.CLEAR_COMMENT_SUMMARY_FILTER","fromTags.ADD_FILTER_TAGS","fromTags.CLEAR_FILTER_TAGS","fromBookmarks.LOAD_BOOKMARKS","fromBookmarks.LOAD_BOOKMARKS_SUCCESS","fromBookmarks.LOAD_BOOKMARKS_FAIL","fromBookmarks.CREATE_BOOKMARK_SUCCESS","fromBookmarks.MOVE_BOOKMARK_SUCCESS","fromBookmarks.DELETE_BOOKMARK_SUCCESS","fromBookmarks.UPDATE_BOOKMARK_SUCCESS","fromRedaction.LOAD_REDACTIONS","fromRedaction.LOAD_REDACTION_SUCCESS","fromRedaction.SAVE_REDACTION_SUCCESS","fromRedaction.SELECT_REDACTION","fromRedaction.DELETE_REDACTION_SUCCESS","fromRedaction.REDACT_SUCCESS","fromRedaction.RESET_REDACTED_DOCUMENT","fromRedaction.UNMARK_ALL_SUCCESS","fromIcpActions.SET_CASE_ID","fromIcpActions.ICP_SOCKET_SESSION_JOINED","fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED","fromIcpActions.ICP_PRESENTER_UPDATED","fromIcpActions.LEAVE_ICP_SOCKET_SESSION","fromDocument.docReducer","fromAnnotation.reducer","fromTags.tagsReducer","fromBookmarks.bookmarksReducer","fromRedaction.redactionReducer","fromIcp.icpReducer","fromFeature.getMVState","fromDocument.getDocPages","fromDocument.getDocId","fromDocument.getPdfPos","fromDocument.getHasDifferentPageSizes","getConvertedDocument","fromDocument.getConvertedDocument","getRotation","fromDocument.getRotation","rotationLoaded","fromDocument.rotationLoaded","fromTagActions.ClearFilterTags","fromDocumentsSelector.getPageDifference","fromDocumentActions.AddPages","fromDocument.AddPages","fromTags.getTagNameEnt","fromTags.getFilters","fromTags.getFilteredComments","fromTags.getFilteredPageEnt","fromAnnotations.getAnnoEnt","fromAnnotations.getAnnoSet","fromAnnotations.getSelectedAnno","fromAnnotations.getCommentEnts","fromAnnotations.getAnnoPageEnt","fromAnnotations.commentSearchQ","fromAnnotations.getSummaryFilters","fromDocument.getPages","fromTags.getFilteredPageEntities","fromTags.getTagFiltered","fromAnnoSelectors.getAnnotationSet","fromDocumentActions.SetDocumentId","fromAnnoActions.LoadAnnotationSet","fromRedactActions.LoadRedactions","fromRedactions.getPageEnt","fromRedactions.getSelectedRedaction","fromRedactions.getRedactedDocInfo","getRedactionEnt","fromRedactions.getRedactionEnt","fromDocument.getDocumentId","fromRedactSelectors.getRedactionArray","getIcpSession","fromIcp.getIcpSession","getPresenter","fromIcp.getPresenter","getClient","fromIcp.getClient","getParticipants","fromIcp.getParticipants","fromIcpSelectors.isPresenter","fromIcpSelectors.getPresenterName","uuid","fromActions.AddOrEditComment","fromSelectors.getSelectedAnnotation","fromActions.SaveAnnotation","fromActions.DeleteAnnotation","fromActions.SelectedAnnotation","fromSelectors.getDocumentIdSetId","fromSelector.getComponentSearchText","fromSelectors.getCommentsArray","fromSelectors.getAnnotationEntities","fromSelectors.getCommentSummary","fromSelectors.getCommentSummaryFilters","fromTagSelectors.getAllTagsArr","fromAnnoActions.ClearCommentSummaryFilters","fromAnnoActions.ApplyCommentSymmaryFilter","fromTagSelectors.getTagFilters","fromAnnoSelector.getFilteredAnnotations","fromActions.SearchComment","fromSelectors.getTagFilters","fromActions.AddFilterTags","fromSelectors.getAllTagsArr","fromActions.ClearFilterTags","fromBookmarks.getBookmarkPageEnt","fromBookmarks.getBookmarkEnts","fromBookmarks.getEditBookmark","fromDocument.getPdfPosition","fromSelectors.getPageEntities","fromBookmarks.getBookmarkInfo","bookmarksSelectors.getBookmarkNodes","bookmarksSelectors.getEditableBookmark","bookmarksSelectors.getBookmarkInfo","fromSelectors.getRedactionsPerPage","fromSelectors.getSelected","fromSelectors.getRedactedDocumentInfo","fromRedaSelectors.getRedactionArray","fromRedaActions.Redact","fromRedaActions.UnmarkAll","fromRedactionActions.SaveRedaction","fromActions.DeleteRedaction","fromActions.SelectRedaction","fromActions.SaveRedaction","fromRedactionActions.ResetRedactedDocument","fromDocSelectors.getPdfPosition","fromIcpSelectors.getPresenter","fromIcpSelectors.getCaseId","fromIcpActions.LoadIcpSession","fromIcpSelectors.getIcpSession","fromIcpSelectors.getClient","fromIcpActions.IcpPresenterUpdated","fromIcpActions.IcpParticipantListUpdated","fromIcpActions.LeaveIcpSocketSession","annotationsActions.LOAD_ANNOTATION_SET","annotationsActions.LoadAnnotationSetSucess","annotationsActions.LoadAnnotationSetFail","annotationsActions.SAVE_ANNOTATION","annotationsActions.SaveAnnotationSuccess","annotationsActions.DELETE_ANNOTATION","annotationsActions.DeleteAnnotationSuccess","annotationsActions.DeleteAnnotationFail","bookmarksActions.LOAD_BOOKMARKS","bookmarksActions.LoadBookmarksSuccess","bookmarksActions.LoadBookmarksFailure","bookmarksActions.CREATE_BOOKMARK","bookmarksActions.CreateBookmarkSuccess","bookmarksActions.CreateBookmarkFailure","bookmarksActions.MOVE_BOOKMARK","bookmarksActions.MoveBookmarkSuccess","bookmarksActions.MoveBookmarkFailure","bookmarksActions.DELETE_BOOKMARK","bookmarksActions.DeleteBookmarkSuccess","bookmarksActions.UpdateBookmarkSuccess","bookmarksActions.DeleteBookmarkFailure","bookmarksActions.UPDATE_BOOKMARK","bookmarksActions.UpdateBookmarkFailure","redactionActions.LOAD_REDACTIONS","redactionActions.LoadRedactionSuccess","redactionActions.LoadRedactionFailure","redactionActions.SAVE_REDACTION","redactionActions.SaveRedactionSuccess","redactionActions.SaveRedactionFailure","redactionActions.DELETE_REDACTION","redactionActions.DeleteRedactionSuccess","redactionActions.DeleteRedactionFailure","redactionActions.REDACT","redactionActions.RedactSuccess","redactionActions.RedactFailure","redactionActions.UNMARK_ALL","redactionActions.UnmarkAllSuccess","documentActions.CONVERT","documentActions.ConvertSuccess","documentActions.ConvertFailure","documentActions.LOAD_ROTATION","documentActions.LoadRotationSuccess","documentActions.LoadRotationFailure","documentActions.SAVE_ROTATION","documentActions.SaveRotationSuccess","documentActions.SaveRotationFailure","icpActions.LOAD_ICP_SESSION","icpActions.JoinIcpSocketSession","icpActions.LoadIcpSessionFailure","icpActions.JOIN_ICP_SOCKET_SESSION","icpActions.IcpSocketSessionJoined","fromDocumentActions.Convert","fromSelectors.getConvertedDocument","fromDocumentActions.ClearConvertDocUrl","fromSelectors.getBookmarksPerPage","fromDocuments.getRotation","fromDocuments.getDocumentId","fromDocumentActions.LoadRotation","fromDocuments.rotationLoaded","fromDocumentActions.SaveRotation","fromSelectors.getParticipants","fromSelectors.getPresenter","fromSelectors.isPresenter","fromAnnotationActions.SelectedAnnotation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hmcts-media-viewer.js","sources":["ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.ts","ng://@hmcts/media-viewer/lib/toolbar/icp-event.service.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar-event.service.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ts","ng://@hmcts/media-viewer/lib/print.service.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-exception.model.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar-button-visibility.service.ts","ng://@hmcts/media-viewer/lib/store/actions/document.actions.ts","ng://@hmcts/media-viewer/lib/store/actions/tag.actions.ts","ng://@hmcts/media-viewer/lib/store/actions/icp.actions.ts","ng://@hmcts/media-viewer/lib/store/reducers/document.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/annotation.actions.ts","ng://@hmcts/media-viewer/lib/store/store-utils.ts","ng://@hmcts/media-viewer/lib/store/reducers/annotations.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/tags.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/bookmark.actions.ts","ng://@hmcts/media-viewer/lib/store/bookmarks-store-utils.ts","ng://@hmcts/media-viewer/lib/store/reducers/bookmarks.reducer.ts","ng://@hmcts/media-viewer/lib/store/actions/redaction.actions.ts","ng://@hmcts/media-viewer/lib/store/reducers/redaction.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/icp.reducer.ts","ng://@hmcts/media-viewer/lib/store/reducers/reducers.ts","ng://@hmcts/media-viewer/lib/store/selectors/document.selectors.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-event.service.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/pdf-viewer.component.ts","ng://@hmcts/media-viewer/lib/viewers/viewer-util.service.ts","ng://@hmcts/media-viewer/lib/viewers/image-viewer/image-viewer.component.ts","ng://@hmcts/media-viewer/lib/viewers/unsupported-viewer/unsupported-viewer.component.ts","ng://@hmcts/media-viewer/lib/annotations/services/annotation-api/annotation-api.service.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/comment.service.ts","ng://@hmcts/media-viewer/lib/store/selectors/tag.selectors.ts","ng://@hmcts/media-viewer/lib/store/selectors/annotation.selectors.ts","ng://@hmcts/media-viewer/lib/media-viewer.component.ts","ng://@hmcts/media-viewer/lib/shared/util/services/number.helper.service.ts","ng://@hmcts/media-viewer/lib/toolbar/main-toolbar/main-toolbar.component.ts","ng://@hmcts/media-viewer/lib/toolbar/search-bar/search-bar.component.ts","ng://@hmcts/media-viewer/lib/store/selectors/redaction.selectors.ts","ng://@hmcts/media-viewer/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ts","ng://@hmcts/media-viewer/lib/store/selectors/icp.selectors.ts","ng://@hmcts/media-viewer/lib/toolbar/icp-toolbar/icp-toolbar.component.ts","ng://@hmcts/media-viewer/lib/toolbar/toolbar.module.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-view/annotation-view.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-set.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ts","ng://@hmcts/media-viewer/lib/annotations/services/tags/tags.services.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/comment.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-render.service.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ts","ng://@hmcts/media-viewer/lib/annotations/comments-summary/comments-summary.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ts","ng://@hmcts/media-viewer/lib/annotations/tags/tags.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ts","ng://@hmcts/media-viewer/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/date/date.pipe.ts","ng://@hmcts/media-viewer/lib/annotations/services/bookmarks-api/bookmarks-api.service.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/filter/filter.pipe.ts","ng://@hmcts/media-viewer/lib/annotations/pipes/unsnake/unsnake.pipe.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-date/gov-uk-date.component.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ts","ng://@hmcts/media-viewer/lib/shared/util/helpers/html-templates.helper.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ts","ng://@hmcts/media-viewer/lib/shared/gov-uk-label/gov-uk-label.component.ts","ng://@hmcts/media-viewer/lib/shared/shared.module.ts","ng://@hmcts/media-viewer/lib/store/selectors/bookmark.selectors.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotations.module.ts","ng://@hmcts/media-viewer/lib/viewers/grab-n-drag.directive.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ts","ng://@hmcts/media-viewer/lib/redaction/components/redaction.component.ts","ng://@hmcts/media-viewer/lib/icp/icp-session-api.service.ts","ng://@hmcts/media-viewer/lib/icp/socket.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-update.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-presenter.service.ts","ng://@hmcts/media-viewer/lib/icp/icp-follower.service.ts","ng://@hmcts/media-viewer/lib/icp/icp.service.ts","ng://@hmcts/media-viewer/lib/store/effects/annotation.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/bookmarks.effects.ts","ng://@hmcts/media-viewer/lib/redaction/services/redaction-api.service.ts","ng://@hmcts/media-viewer/lib/store/effects/redaction.effects.ts","ng://@hmcts/media-viewer/lib/viewers/convertible-content-viewer/document-conversion-api.service.ts","ng://@hmcts/media-viewer/lib/viewers/rotation-persist/rotation-api.service.ts","ng://@hmcts/media-viewer/lib/store/effects/document.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/icp.effects.ts","ng://@hmcts/media-viewer/lib/store/effects/index.ts","ng://@hmcts/media-viewer/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ts","ng://@hmcts/media-viewer/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ts","ng://@hmcts/media-viewer/lib/icp/confirm-exit/confirm-action-dialog.component.ts","ng://@hmcts/media-viewer/lib/bookmark/components/bookmark-icons.component.ts","ng://@hmcts/media-viewer/lib/viewers/rotation-persist/rotation-persist.directive.ts","ng://@hmcts/media-viewer/lib/icp/participants-list/participants-list.component.ts","ng://@hmcts/media-viewer/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ts","ng://@hmcts/media-viewer/lib/viewers/multimedia-player/multimedia-player.component.ts","ng://@hmcts/media-viewer/lib/media-viewer.module.ts"],"sourcesContent":["import * as pdfjsLib from 'pdfjs-dist';\nimport { DownloadManager, PDFViewer } from 'pdfjs-dist/web/pdf_viewer';\nimport 'pdfjs-dist/build/pdf.worker';\nimport { Subject } from 'rxjs';\nimport { SearchOperation, ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Outline } from '../side-bar/outline-item/outline.model';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\npdfjsLib.GlobalWorkerOptions.workerSrc = '/assets/build/pdf.worker.min.js';\n\n/**\n * Values of the state field returned by the find events\n */\nenum FindState {\n FOUND = 0,\n NOT_FOUND = 1,\n WRAPPED = 2,\n PENDING = 3,\n}\n\nexport class PdfJsWrapper {\n\n private zoomValue: number;\n private documentTitle: string;\n private documentOutline: Outline;\n\n constructor(\n private readonly pdfViewer: PDFViewer,\n private readonly downloadManager: DownloadManager,\n private readonly toolbarEvents: ToolbarEventService,\n public readonly documentLoadInit: Subject<string>,\n public readonly documentLoadProgress: Subject<DocumentLoadProgress>,\n public readonly documentLoaded: Subject<any>,\n public readonly outlineLoaded: Subject<Outline>,\n public readonly documentLoadFailed: Subject<Error>,\n public readonly pageRendered: Subject<PageEvent[]>,\n public readonly positionUpdated: Subject<{ location: PdfPosition }>,\n ) {\n this.pdfViewer.eventBus.on('updateviewarea', e => positionUpdated.next(e));\n this.pdfViewer.eventBus.on('pagechanging', e => this.toolbarEvents.setCurrentPageInputValueSubject.next(e.pageNumber));\n this.pdfViewer.eventBus.on('pagesinit', () => this.pdfViewer.currentScaleValue = '1');\n\n this.pdfViewer.eventBus.on('pagerendered', e => {}); // not used left for future convenience\n this.pdfViewer.eventBus.on('pagesloaded', (e) => this.emitDocumentInfo(e));\n this.pdfViewer.eventBus.on('scalechanging', (e) => this.emitDocumentInfo(e));\n this.pdfViewer.eventBus.on('rotationchanging', (e) => this.emitDocumentInfo(e));\n\n this.pdfViewer.eventBus.on('updatefindcontrolstate', event => {\n if (event.state !== FindState.PENDING) {\n this.toolbarEvents.searchResultsCountSubject.next(event.matchesCount);\n }\n });\n this.pdfViewer.eventBus.on('updatefindmatchescount', event => {\n this.toolbarEvents.searchResultsCountSubject.next(event.matchesCount);\n });\n this.zoomValue = 1;\n }\n\n private emitDocumentInfo(e) {\n const allPages: PageEvent[] = [...this.pdfViewer._pages].map(page => {\n return {\n div: page.div,\n scale: page.scale,\n rotation: page.rotation,\n id: page.id,\n viewportScale: page.viewport.scale\n };\n });\n this.pageRendered.next(allPages);\n }\n\n public async loadDocument(documentUrl: string) {\n const loadingTask = pdfjsLib.getDocument({\n url: documentUrl,\n cMapUrl: 'assets/minified/cmaps',\n cMapPacked: true,\n withCredentials: true\n });\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.documentLoadProgress.next({ loaded, total });\n };\n\n this.documentLoadInit.next(documentUrl);\n\n try {\n const pdfDocument = await loadingTask.promise;\n this.documentLoaded.next(pdfDocument);\n this.toolbarEvents.pageCountSubject.next(pdfDocument.numPages);\n\n this.pdfViewer.setDocument(pdfDocument);\n this.pdfViewer.linkService.setDocument(pdfDocument, null);\n\n this.documentOutline = await pdfDocument.getOutline();\n this.outlineLoaded.next(this.documentOutline);\n const pdfMetaData = await pdfDocument.getMetadata();\n this.setCurrentPDFTitle(pdfMetaData.info.Title);\n } catch (e) {\n this.documentLoadFailed.next(e);\n }\n }\n\n public downloadFile(url: string, filename: string): void {\n this.downloadManager.downloadUrl(url, filename);\n }\n\n public setPageNumber(pageNumber: number): void {\n this.pdfViewer.currentPageNumber = pageNumber;\n }\n public getPageNumber(): number {\n return this.pdfViewer.currentPageNumber;\n }\n public changePageNumber(numPages: number): void {\n this.pdfViewer.currentPageNumber += numPages;\n }\n\n public search(operation: SearchOperation): void {\n const command = operation.reset ? 'find' : 'findagain';\n\n this.pdfViewer.findController.executeCommand(command, {\n query: operation.searchTerm,\n phraseSearch: true,\n caseSensitive: operation.matchCase,\n entireWord: operation.wholeWord,\n highlightAll: operation.highlightAll,\n findPrevious: operation.previous,\n });\n }\n\n public clearSearch(): void {\n this.pdfViewer.eventBus.dispatch('findbarclose');\n }\n\n public navigateTo(destination: object | number) {\n if (destination instanceof Object) {\n if (!destination[1].name.includes('XYZ')) {\n destination[1] = { name: 'XYZ' };\n destination[2] = destination[2] || null;\n destination[3] = destination[3] || null;\n }\n destination[4] = this.zoomValue;\n }\n this.pdfViewer.linkService.navigateTo(destination);\n }\n\n public setZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue);\n this.zoomValue = this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);\n }\n\n public stepZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = +this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue);\n this.zoomValue = this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.pdfViewer.currentScaleValue);\n }\n\n private getZoomValue(zoomValue: number): number {\n if (isNaN(zoomValue)) { return this.zoomValue; }\n if (zoomValue > 5) { return 5; }\n if (zoomValue < 0.1) { return 0.1; }\n\n return +zoomValue.toFixed(2);\n }\n\n public rotate(rotation: number): number {\n return this.pdfViewer.pagesRotation = (this.pdfViewer.pagesRotation + rotation) % 360;\n }\n\n public resetRotation(rotation: number): number {\n return this.pdfViewer.pagesRotation = rotation;\n }\n\n public getNormalisedPagesRotation(): number {\n return this.pdfViewer.pagesRotation;\n }\n\n public getCurrentPDFZoomValue(): number {\n return this.pdfViewer.currentScaleValue;\n }\n\n public setCurrentPDFTitle(title: string) {\n this.documentTitle = title;\n }\n\n public getCurrentPDFTitle(): string {\n return this.documentTitle;\n }\n}\n\nexport interface DocumentLoadProgress {\n loaded: number;\n total: number;\n}\n\nexport interface PageEvent {\n div: object;\n scale: number;\n rotation: number;\n id: string;\n viewportScale: number;\n}\n","import { BehaviorSubject, Subject } from 'rxjs';\n\n export const enabled = new BehaviorSubject(false);\n export const sessionLaunch = new Subject();\n export const becomingPresenter = new Subject();\n export const stoppingPresenting = new Subject();\n export const leavingSession = new BehaviorSubject(false);\n export const sessionExitConfirmed = new Subject();\n export const participantsListVisible = new BehaviorSubject(false);\n\nexport const launchSession = () => {\n sessionLaunch.next();\n};\n\nexport const enable = () => {\n enabled.next(true);\n launchSession();\n};\n\nexport const becomePresenter = () => {\n becomingPresenter.next();\n};\n\nexport const stopPresenting = () => {\n stoppingPresenting.next();\n};\n\nexport const leaveSession = () => {\n leavingSession.next(true);\n};\n\nexport const confirmExit = () => {\n sessionExitConfirmed.next();\n participantsListVisible.next(false);\n enabled.next(false);\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport * as icpEvents from './icp-event.service';\nimport { participantsListVisible } from './icp-event.service';\n\n// Toolbar Custom-Event Types\nexport type HighlightMode = boolean;\nexport type DrawMode = boolean;\nexport interface SearchOperation {\n searchTerm: string;\n highlightAll: boolean;\n matchCase: boolean;\n wholeWord: boolean;\n previous: boolean;\n reset: boolean;\n}\nexport interface SearchResultsCount {\n current: number;\n total: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToolbarEventService {\n\n public readonly highlightModeSubject = new BehaviorSubject<HighlightMode>(false);\n public readonly drawModeSubject = new BehaviorSubject<DrawMode>(false);\n public readonly rotateSubject = new Subject<number>();\n public readonly searchSubject = new Subject<SearchOperation>();\n public readonly searchResultsCountSubject = new Subject<SearchResultsCount>();\n public readonly zoomSubject = new Subject<number>();\n public readonly stepZoomSubject = new Subject<number>();\n public readonly zoomValueSubject = new BehaviorSubject<number>(1);\n public readonly pageCountSubject = new Subject<number>();\n public readonly printSubject = new Subject();\n public readonly downloadSubject = new Subject();\n public readonly setCurrentPageSubject = new Subject<number>();\n public readonly setCurrentPageInputValueSubject = new Subject<number>();\n public readonly changePageByDeltaSubject = new Subject<number>();\n public readonly showCommentSummary = new BehaviorSubject<boolean>(false);\n public readonly grabNDrag = new BehaviorSubject<boolean>(false);\n public readonly saveRotationSubject = new Subject();\n\n public readonly redactionMode = new BehaviorSubject(false);\n public readonly redactionPreview = new Subject<boolean>();\n public readonly applyRedactToDocument = new Subject();\n public readonly clearAllRedactMarkers = new Subject();\n\n public readonly sidebarOpen = new BehaviorSubject(false);\n public readonly searchBarHidden = new BehaviorSubject(true);\n public readonly commentsPanelVisible = new BehaviorSubject(false);\n\n public readonly icp = icpEvents;\n\n\n /**\n * Reset the stateful behaviour subjects\n */\n public reset(): void {\n this.setCurrentPageSubject.next(1);\n this.zoomValueSubject.next(1);\n this.highlightModeSubject.next(false);\n this.drawModeSubject.next(false);\n this.showCommentSummary.next(false);\n }\n\n // Function to inform Observers that highlightMode has been enabled\n public toggleHighlightMode(): void {\n // Highlight and Draw states are mutually exclusive\n if (this.highlightModeSubject.getValue() === false) {\n this.drawModeSubject.next(false);\n this.highlightModeSubject.next(true);\n } else {\n this.highlightModeSubject.next(false);\n }\n }\n\n // Function to inform Observers that ToggleMode has been enabled\n public toggleDrawMode(): void {\n if (this.drawModeSubject.getValue() === false) {\n this.highlightModeSubject.next(false);\n this.drawModeSubject.next(true);\n } else {\n this.drawModeSubject.next(false);\n }\n }\n\n public rotate(angle: number): void {\n this.rotateSubject.next(angle);\n }\n\n public search(phrase: SearchOperation): void {\n this.searchSubject.next(phrase);\n }\n\n public getSearchResultsCount(): Observable<SearchResultsCount> {\n return this.searchResultsCountSubject.asObservable();\n }\n\n public zoom(value: number): void {\n this.zoomSubject.next(value);\n }\n\n public stepZoom(value: number): void {\n this.stepZoomSubject.next(value);\n }\n\n public getZoomValue(): Observable<number> {\n return this.zoomValueSubject.asObservable();\n }\n\n public getPageCount(): Observable<number> {\n return this.pageCountSubject.asObservable();\n }\n\n public print(): void {\n this.printSubject.next();\n }\n\n public download(): void {\n this.downloadSubject.next();\n }\n\n public setPage(value: number): void {\n this.setCurrentPageSubject.next(value);\n }\n\n public incrementPage(value: number): void {\n this.changePageByDeltaSubject.next(value);\n }\n\n public getCurrentPageNumber(): Observable<number> {\n return this.setCurrentPageInputValueSubject.asObservable();\n }\n\n public getShowCommentSummary(): Observable<boolean> {\n return this.showCommentSummary.asObservable();\n }\n\n public toggleCommentsSummary(value: boolean): void {\n this.showCommentSummary.next(value);\n }\n\n public saveRotation(): void {\n this.saveRotationSubject.next();\n }\n\n public toggleGrabNDrag(): void {\n this.grabNDrag.next(!this.grabNDrag.getValue());\n }\n\n toggleSideBar(toggle: boolean) {\n this.sidebarOpen.next(toggle);\n }\n\n public toggleRedactionMode(): void {\n this.redactionMode.next(!this.redactionMode.getValue());\n }\n\n public toggleRedactionPreview(viewMode: boolean): void {\n this.redactionPreview.next(viewMode);\n }\n\n public unmarkAll(): void {\n this.clearAllRedactMarkers.next();\n }\n\n public applyRedactionToDocument(): void {\n this.applyRedactToDocument.next();\n }\n\n public toggleCommentsPanel(isVisible: boolean) {\n if (isVisible) {\n this.toggleParticipantsList(!isVisible);\n }\n this.commentsPanelVisible.next(isVisible);\n }\n\n public toggleParticipantsList(isVisible: boolean) {\n if (isVisible) {\n this.toggleCommentsPanel(!isVisible);\n }\n this.icp.participantsListVisible.next(isVisible);\n }\n}\n","import * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer';\nimport { ElementRef, Injectable } from '@angular/core';\nimport {DocumentLoadProgress, PageEvent, PdfJsWrapper} from './pdf-js-wrapper';\nimport { Subject } from 'rxjs';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Outline } from '../side-bar/outline-item/outline.model';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\n@Injectable({providedIn: 'root'})\nexport class PdfJsWrapperFactory {\n\n private linkService: pdfjsViewer.PDFLinkService;\n private eventBus: pdfjsViewer.EventBus;\n private pdfJsWrapper: PdfJsWrapper;\n\n constructor(private readonly toolbarEvents: ToolbarEventService) {\n this.linkService = new pdfjsViewer.PDFLinkService();\n this.eventBus = new pdfjsViewer.EventBus();\n }\n\n public create(container: ElementRef): PdfJsWrapper {\n const pdfFindController = new pdfjsViewer.PDFFindController({\n linkService: this.linkService,\n eventBus: this.eventBus\n });\n\n const pdfViewer = new pdfjsViewer.PDFViewer({\n container: container.nativeElement,\n linkService: this.linkService,\n findController: pdfFindController,\n eventBus: this.eventBus,\n imageResourcesPath: '/assets/images/',\n textLayerMode: 2\n });\n\n this.linkService.setViewer(pdfViewer);\n\n this.pdfJsWrapper = new PdfJsWrapper(\n pdfViewer,\n new pdfjsViewer.DownloadManager({}),\n this.toolbarEvents,\n new Subject<string>(),\n new Subject<DocumentLoadProgress>(),\n new Subject<any>(),\n new Subject<Outline>(),\n new Subject(),\n new Subject<PageEvent[]>(),\n new Subject<{ location: PdfPosition }>()\n );\n\n return this.pdfJsWrapper;\n }\n\n pdfWrapper() {\n return this.pdfJsWrapper;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrintService {\n\n printDocumentNatively(url: string): void {\n const printWindow = window.open(url);\n printWindow.print();\n }\n\n printElementNatively(element: HTMLElement, width: number, height: number): void {\n const printWindow = window.open('', '', `left=0,top=0,width=${width},height=${height},toolbar=0,scrollbars=0,status=0`);\n\n printWindow.document.write(element.innerHTML);\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n printWindow.close();\n }\n}\n","export enum ResponseType {\n SUCCESS = 'SUCCESS',\n FAILURE = 'FAILURE',\n UNSUPPORTED = 'UNSUPPORTED'\n}\n\nexport interface ExceptionDetail {\n httpResponseCode?: string;\n message?: string;\n}\n\nexport class ViewerException {\n exceptionType?: string;\n detail?: ExceptionDetail;\n\n constructor(exceptionType?: string, detail?: ExceptionDetail) {\n this.exceptionType = exceptionType;\n this.detail = detail;\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable({providedIn: 'root'})\nexport class ToolbarButtonVisibilityService {\n\n public showPrint = false;\n public showDownload = false;\n public showNavigation = false;\n public showZoom = false;\n public showRotate = false;\n public showPresentationMode = false;\n public showRedact = false;\n public showOpenFile = false;\n public showBookmark = false;\n public showHighlightButton = false;\n public showDrawButton = false;\n public showSearchBar = false;\n public showSidebar = false;\n public showCommentSummary = false;\n public showGrabNDragButton = false;\n public showSaveRotationButton = false;\n\n /**\n * Reset the visibility of all buttons to false then set the value from the options\n */\n public setup(options: Partial<ToolbarButtonVisibilityService>): void {\n this.showPrint = false;\n this.showDownload = false;\n this.showNavigation = false;\n this.showZoom = false;\n this.showRotate = false;\n this.showPresentationMode = false;\n this.showRedact = false;\n this.showOpenFile = false;\n this.showBookmark = false;\n this.showHighlightButton = false;\n this.showDrawButton = false;\n this.showSearchBar = false;\n this.showSidebar = false;\n this.showCommentSummary = false;\n this.showGrabNDragButton = false;\n this.showSaveRotationButton = false;\n\n for (const key in options) {\n this[key] = options[key];\n }\n }\n}\n\n/**\n * Default toolbar state for the PDF viewer\n */\nexport const defaultPdfOptions = {\n showPrint: true,\n showDownload: true,\n showNavigation: true,\n showZoom: true,\n showRotate: true,\n showSearchBar: true,\n showSidebar: true,\n showGrabNDragButton: true,\n showCommentSummary: true,\n showPresentationMode: true,\n showRedact: true\n};\n\n/**\n * Default toolbar state for the image viewer\n */\nexport const defaultImageOptions = {\n showPrint: true,\n showDownload: true,\n showZoom: true,\n showRotate: true,\n showGrabNDragButton: true,\n showCommentSummary: true,\n showRedact: true\n};\n\n/**\n * Default toolbar state for multimedia\n */\nexport const defaultMultimediaOptions = {\n showDownload: true\n};\n\n/**\n * Default toolbar state for unsupported media\n */\nexport const defaultUnsupportedOptions = {\n showDownload: true,\n showPrint: true\n};\n","import { Action } from '@ngrx/store';\nimport { PageEvent } from '../../viewers/pdf-viewer/pdf-js/pdf-js-wrapper';\nimport { Rotation } from '../../viewers/rotation-persist/rotation.model';\nimport { PdfPosition } from '../reducers/document.reducer';\n\nexport const SET_DOCUMENT_ID = '[Document] Set Document Id';\nexport const POSITION_UPDATED = '[Document] Position Updated';\nexport const ADD_PAGES = '[Document] Add Pages';\nexport const CONVERT = '[Document] Convert';\nexport const CONVERT_SUCCESS = '[Document] Convert Success';\nexport const CONVERT_FAIL = '[Document] Convert Fail';\nexport const CLEAR_CONVERT_DOC_URL = '[Document] Clear Convert Doc Url';\n\nexport const LOAD_ROTATION = '[Document] Load Rotation';\nexport const LOAD_ROTATION_SUCCESS = '[Document] Load Rotation Success';\nexport const LOAD_ROTATION_FAIL = '[Document] Load Rotation Fail';\nexport const SAVE_ROTATION = '[Document] Save Rotation';\nexport const SAVE_ROTATION_SUCCESS = '[Document] Save Rotation Success';\nexport const SAVE_ROTATION_FAIL = '[Document] Save Rotation Fail';\n\nexport class SetDocumentId implements Action {\n readonly type = SET_DOCUMENT_ID;\n constructor(public payload: string) { }\n}\n\nexport class AddPages implements Action {\n readonly type = ADD_PAGES;\n constructor(public payload: PageEvent[]) { }\n}\n\nexport class PdfPositionUpdate implements Action {\n readonly type = POSITION_UPDATED;\n constructor(public payload: PdfPosition) {}\n}\n\nexport class Convert implements Action {\n readonly type = CONVERT;\n constructor(public payload: string ) {}\n}\n\nexport class ConvertSuccess implements Action {\n readonly type = CONVERT_SUCCESS;\n constructor(public payload: string ) {}\n}\n\nexport class ConvertFailure implements Action {\n readonly type = CONVERT_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class ClearConvertDocUrl implements Action {\n readonly type = CLEAR_CONVERT_DOC_URL;\n}\n\nexport class LoadRotation implements Action {\n readonly type = LOAD_ROTATION;\n constructor(public payload: string) {\n }\n}\n\nexport class LoadRotationSuccess implements Action {\n readonly type = LOAD_ROTATION_SUCCESS;\n constructor(public payload: { rotationAngle: number }) {\n }\n}\n\nexport class LoadRotationFailure implements Action {\n readonly type = LOAD_ROTATION_FAIL;\n constructor(public payload: Error) {\n }\n}\n\nexport class SaveRotation implements Action {\n readonly type = SAVE_ROTATION;\n constructor(public payload: Rotation) {\n }\n}\n\nexport class SaveRotationSuccess implements Action {\n readonly type = SAVE_ROTATION_SUCCESS;\n constructor(public payload: { rotationAngle: number }) {\n }\n}\n\nexport class SaveRotationFailure implements Action {\n readonly type = SAVE_ROTATION_FAIL;\n constructor(public payload: Error) {\n }\n}\n\nexport type DocumentActions =\n | AddPages | SetDocumentId | Convert\n | ConvertSuccess | ConvertFailure | ClearConvertDocUrl\n | PdfPositionUpdate | LoadRotation | LoadRotationSuccess\n | LoadRotationFailure | SaveRotation | SaveRotationSuccess\n | SaveRotationFailure;\n","import { Action } from '@ngrx/store';\nimport {TagsModel} from '../../annotations/models/tags.model';\nexport const UPDATE_TAGS = '[Tags] Update Tags';\nexport const ADD_FILTER_TAGS = '[Tags] Add Filter Tags';\nexport const CLEAR_FILTER_TAGS = '[Tags] Clear Filter Tags';\n\nexport class UpdateTags implements Action {\n readonly type = UPDATE_TAGS;\n constructor(public payload: {tags: TagsModel[]; annoId: string}) {}\n}\n\nexport class AddFilterTags implements Action {\n readonly type = ADD_FILTER_TAGS;\n constructor(public payload: {[id: string]: boolean}) {}\n}\n\nexport class ClearFilterTags implements Action {\n readonly type = CLEAR_FILTER_TAGS;\n}\n\n\nexport type TagsActions =\n | UpdateTags\n | AddFilterTags\n | ClearFilterTags;\n","import { Action } from '@ngrx/store';\nimport { IcpParticipant, IcpSession } from '../../icp/icp.interfaces';\n\nexport const SET_CASE_ID = '[Icp] Set Case Id';\nexport const LOAD_ICP_SESSION = '[Icp] Load Session';\nexport const LOAD_ICP_SESSION_FAIL = '[Icp] Load Session Failure';\nexport const JOIN_ICP_SOCKET_SESSION = '[Icp] Join Socket Session';\nexport const ICP_SOCKET_SESSION_JOINED = '[Icp] Socket Session Joined';\nexport const LEAVE_ICP_SOCKET_SESSION = '[Icp] Leave Socket Session';\nexport const ICP_PRESENTER_UPDATED = '[Icp] Presenter Updated';\nexport const ICP_PARTICIPANT_LIST_UPDATED = '[Icp] Participant List Updated';\n\nexport class SetCaseId implements Action {\n readonly type = SET_CASE_ID;\n constructor(public payload: string) {}\n}\n\nexport class LoadIcpSession implements Action {\n readonly type = LOAD_ICP_SESSION;\n constructor(public payload: string) {}\n}\n\nexport class LoadIcpSessionFailure implements Action {\n readonly type = LOAD_ICP_SESSION_FAIL;\n constructor(public payload: Error) {}\n}\n\nexport class JoinIcpSocketSession implements Action {\n readonly type = JOIN_ICP_SOCKET_SESSION;\n constructor(public payload: { username: string, session: IcpSession }) {}\n}\n\nexport class IcpSocketSessionJoined implements Action {\n readonly type = ICP_SOCKET_SESSION_JOINED;\n constructor(public payload: { session: IcpSession, participantInfo: { client: IcpParticipant, presenter: IcpParticipant } }) {}\n}\n\nexport class LeaveIcpSocketSession implements Action {\n readonly type = LEAVE_ICP_SOCKET_SESSION;\n constructor() {}\n}\n\nexport class IcpPresenterUpdated implements Action {\n readonly type = ICP_PRESENTER_UPDATED;\n constructor(public payload: IcpParticipant) {}\n}\n\nexport class IcpParticipantListUpdated implements Action {\n readonly type = ICP_PARTICIPANT_LIST_UPDATED;\n constructor(public payload: any) {}\n}\n\nexport type IcpActions =\n | SetCaseId\n | LoadIcpSession\n | LoadIcpSessionFailure\n | JoinIcpSocketSession\n | IcpSocketSessionJoined\n | LeaveIcpSocketSession\n | IcpPresenterUpdated\n | IcpParticipantListUpdated;\n","import * as fromActions from '../actions/document.actions';\n\nexport interface DocumentState {\n convertedDocument: {\n url: string;\n error: string;\n };\n documentId: string;\n pdfPosition: PdfPosition;\n pages: {[id: string]: DocumentPages};\n hasDifferentPageSize: boolean;\n rotation: number;\n rotationLoaded: boolean;\n loaded: boolean;\n loading: boolean;\n}\n\nexport interface DocumentPages {\n numberOfPages: number;\n styles: { left: number, height: number, width: number };\n scaleRotation: { scale: string; rotation: string };\n viewportScale: number;\n}\n\nexport interface PdfPosition {\n pageNumber: number;\n scale: number;\n top: number;\n left: number;\n rotation: number;\n}\n\nexport const initialDocumentState: DocumentState = {\n convertedDocument: undefined,\n documentId: undefined,\n pdfPosition: undefined,\n pages: {},\n hasDifferentPageSize: false,\n rotation: undefined,\n rotationLoaded: false,\n loading: false,\n loaded: false\n};\n\nexport function docReducer (state = initialDocumentState,\n action: fromActions.DocumentActions): DocumentState {\n\n switch (action.type) {\n\n case fromActions.CONVERT_SUCCESS: {\n const convertedDocument = {\n url: action.payload,\n error: undefined\n };\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.CONVERT_FAIL: {\n const convertedDocument = {\n url: undefined,\n error: action.payload\n };\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.CLEAR_CONVERT_DOC_URL: {\n const convertedDocument = undefined;\n return {\n ...state,\n convertedDocument\n };\n }\n\n case fromActions.LOAD_ROTATION: {\n return {\n ...state,\n rotationLoaded: false\n };\n }\n\n case fromActions.LOAD_ROTATION_SUCCESS: {\n const metadata = action.payload;\n const rotation = metadata ? metadata.rotationAngle : 0;\n return {\n ...state,\n rotation,\n rotationLoaded: true\n };\n }\n\n case fromActions.LOAD_ROTATION_FAIL: {\n return {\n ...state,\n rotation: 0,\n rotationLoaded: true\n };\n }\n\n case fromActions.SAVE_ROTATION_SUCCESS: {\n const metadata = action.payload;\n const rotation = metadata.rotationAngle;\n return {\n ...state,\n rotation\n };\n }\n\n case fromActions.SET_DOCUMENT_ID : {\n return {\n ...state,\n documentId: action.payload\n };\n }\n\n case fromActions.ADD_PAGES: {\n const payload = action.payload;\n let pages = {};\n let pageHeight;\n let pageWidth;\n let hasDifferentPageSize = state.hasDifferentPageSize;\n payload.forEach(page => {\n if (!hasDifferentPageSize && pageHeight && pageWidth &&\n (pageHeight !== page.div['scrollHeight'] || pageWidth !== page.div['scrollWidth'])) {\n hasDifferentPageSize = true;\n } else {\n pageHeight = page.div['scrollHeight'];\n pageWidth = page.div['scrollWidth'];\n }\n const styles = {\n left: page.div['offsetLeft'],\n height: page.div['scrollHeight'],\n width: page.div['scrollWidth']\n };\n\n const scaleRotation = {\n scale: page.scale,\n rotation: page.rotation\n };\n\n const p = {\n styles,\n scaleRotation,\n viewportScale: page.viewportScale\n };\n\n pages = {\n ...pages,\n [page.id]: p\n };\n\n });\n return {\n ...state,\n pages,\n hasDifferentPageSize\n };\n }\n\n case fromActions.POSITION_UPDATED: {\n const pdfPosition = action.payload;\n return {\n ...state,\n pdfPosition\n };\n }\n }\n return state;\n}\nexport const getDocPages = (state: DocumentState) => state.pages;\nexport const getDocId = (state: DocumentState) => state.documentId;\nexport const getPdfPos = (state: DocumentState) => state.pdfPosition;\nexport const getHasDifferentPageSizes = (state: DocumentState) => state.hasDifferentPageSize;\nexport const getRotation = (state: DocumentState) => state.rotation;\nexport const rotationLoaded = (state: DocumentState) => state.rotationLoaded;\nexport const getConvertedDocument = (state: DocumentState) => state.convertedDocument;\n","import { Action } from '@ngrx/store';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { Filters } from '../models/filters.interface';\nimport { Comment } from '../../annotations/comment-set/comment/comment.model';\n\nexport const LOAD_ANNOTATION_SET = '[Annotations] Load Annotation Set';\nexport const LOAD_ANNOTATION_SET_SUCCESS = '[Annotations] Load Annotation Set Success';\nexport const LOAD_ANNOTATION_SET_FAIL = '[Annotations] Load Annotation Set Fail';\n\nexport const SAVE_ANNOTATION = '[Annotations] Save Annotation';\nexport const SAVE_ANNOTATION_SUCCESS = '[Annotations] Save Annotation Success';\nexport const SAVE_ANNOTATION_FAIL = '[Annotations] Save Annotation Fail';\nexport const ADD_OR_EDIT_COMMENT = '[Annotations] Add or Edit Comment';\n\nexport const DELETE_ANNOTATION = '[Annotations] Delete Annotation';\nexport const DELETE_ANNOTATION_SUCCESS = '[Annotations] Delete Annotation Success';\nexport const DELETE_ANNOTATION_FAIL = '[Annotations] Delete Annotation Fail';\n\nexport const SELECT_ANNOTATION = '[Annotations] Select Annotation';\nexport const SEARCH_COMMENT = '[Comments] Search Comments';\nexport const APPLY_COMMENT_SUMMARY_FILTER = '[Comments] Apply Comment Summary Filter';\nexport const CLEAR_COMMENT_SUMMARY_FILTER = '[Comments] Clear Comment Summary Filter';\n\nexport class LoadAnnotationSet implements Action {\n readonly type = LOAD_ANNOTATION_SET;\n constructor(public payload: string) { }\n}\n\nexport class LoadAnnotationSetSucess implements Action {\n readonly type = LOAD_ANNOTATION_SET_SUCCESS;\n constructor(public payload: { status: number, body: AnnotationSet }) { }\n}\n\nexport class LoadAnnotationSetFail implements Action {\n readonly type = LOAD_ANNOTATION_SET_FAIL;\n constructor(public payload: { status: number, body: any }) { }\n}\n\nexport class SaveAnnotation implements Action {\n readonly type = SAVE_ANNOTATION;\n constructor(public payload: Annotation) { }\n}\n\nexport class SaveAnnotationSuccess implements Action {\n readonly type = SAVE_ANNOTATION_SUCCESS;\n constructor(public payload: any) { }\n}\n\nexport class SaveAnnotationFail implements Action {\n readonly type = SAVE_ANNOTATION_FAIL;\n constructor(public payload: Error) { }\n}\n\nexport class AddOrEditComment implements Action {\n readonly type = ADD_OR_EDIT_COMMENT;\n constructor(public payload: Comment) { }\n}\n\nexport class DeleteAnnotation implements Action {\n readonly type = DELETE_ANNOTATION;\n constructor(public payload: string) { }\n}\n\nexport class DeleteAnnotationSuccess implements Action {\n readonly type = DELETE_ANNOTATION_SUCCESS;\n constructor(public payload: string) { }\n}\n\nexport class DeleteAnnotationFail implements Action {\n readonly type = DELETE_ANNOTATION_FAIL;\n constructor(public payload: Error) {}\n}\n\nexport class SelectedAnnotation implements Action {\n readonly type = SELECT_ANNOTATION;\n constructor(public payload: SelectionAnnotation) {}\n}\n\nexport class SearchComment implements Action {\n readonly type = SEARCH_COMMENT;\n constructor(public payload: string) {}\n}\n\nexport class ApplyCommentSymmaryFilter implements Action {\n readonly type = APPLY_COMMENT_SUMMARY_FILTER;\n constructor(public payload: Filters) {}\n}\n\nexport class ClearCommentSummaryFilters implements Action {\n readonly type = CLEAR_COMMENT_SUMMARY_FILTER;\n}\n\nexport type AnnotationsActions =\n | LoadAnnotationSet\n | LoadAnnotationSetSucess\n | LoadAnnotationSetFail\n | SaveAnnotation\n | SaveAnnotationSuccess\n | SaveAnnotationFail\n | AddOrEditComment\n | DeleteAnnotation\n | DeleteAnnotationSuccess\n | DeleteAnnotationFail\n | SelectedAnnotation\n | SearchComment\n | ApplyCommentSymmaryFilter\n | ClearCommentSummaryFilters;\n","import { Annotation } from '../annotations/annotation-set/annotation-view/annotation.model';\nimport moment from 'moment-timezone';\nimport { Redaction } from '../redaction/services/redaction.model';\nimport { Filters } from './models/filters.interface';\nimport { Comment } from '../annotations/comment-set/comment/comment.model';\n\n/*\n @dynamic\n marking class as dynamic to stop compiler throwing error for lambda in static function\n see https://github.com/angular/angular/issues/19698#issuecomment-338340211\n */\nexport class StoreUtils {\n\n static groupByKeyEntities(annotations, key): {[id: string]: any[]} {\n return annotations.reduce((h, obj) =>\n Object.assign(h, { [obj[key]]: ( h[obj[key]] || [] ).concat(obj) }), {});\n }\n\n static generateCommentsEntities(annotations): {[id: string]: Comment} {\n return annotations.reduce(\n (commentEntities: { [id: string]: Annotation }, annotation: Annotation) => {\n if (annotation.comments.length) {\n const comment = {\n ...annotation.comments[0] || '',\n tags: [...annotation.tags || []]\n };\n return {\n ...commentEntities,\n [annotation.id]: comment\n };\n }\n return {\n ...commentEntities\n };\n }, {});\n }\n\n static genTagNameEntities(annotations) {\n const filterAnnoWithoutCommentsTags = annotations.filter(a => (a.comments.length && a.tags.length));\n const allTags = filterAnnoWithoutCommentsTags.map(anno => this.groupByKeyEntities(anno.tags, 'name'));\n const groupedByName = allTags.reduce(\n (tagEntitiy: { [id: string]: Annotation }, tagItem) => {\n return {\n ...tagEntitiy,\n ...tagItem\n };\n }, {});\n\n return this.genNameEnt(annotations, groupedByName);\n }\n\n static genNameEnt(annos, groupedByName) {\n return Object.keys(groupedByName).reduce(\n (tagNameEnt, key) => {\n const readyAnno = annos.filter(anno => anno.tags.find(tag => tag.name === key))\n .map(anno => anno.id)\n .reduce((obj: {[id: string]: string}, anno: string) => ({ ...obj, [anno]: anno }), {});\n\n return {\n ...tagNameEnt,\n [key]: readyAnno\n };\n }, {});\n\n }\n\n static generateAnnotationEntities(anno): {[id: string]: Annotation} {\n return anno.reduce(\n (annoEntities: { [id: string]: Annotation }, annotation: Annotation) => {\n const annot = {\n ...annotation,\n positionTop: annotation.rectangles[0].y // todo remove this\n };\n return {\n ...annoEntities,\n [annotation.id]: annot\n };\n }, {});\n }\n\n static generateRedactionEntities(redactions: Redaction[]): { [id: string]: Redaction } {\n return redactions.reduce(\n (redactEntities: { [id: string]: Redaction }, redaction: Redaction) => {\n return {\n ...redactEntities,\n [redaction.redactionId]: redaction\n };\n }, {});\n }\n\n static resetCommentEntSelect(ent: { [id: string]: Comment }) {\n return Object.keys(ent).reduce((object, key) => {\n object[key] = {\n ...ent[key],\n editable: false,\n selected: false\n };\n return object;\n }, {});\n }\n\n static filterCommentsSummary(comments: Array<Comment>, filters: Filters) {\n if (Object.keys(filters).length) {\n const tagFilterApplied = Object.keys(filters.tagFilters)\n .filter(key => filters.tagFilters[key] === true).length;\n const dateFilterApplied = (filters.dateRangeFrom || filters.dateRangeTo);\n const filteredComments = comments.filter(comment => {\n let hasTagFilter = false;\n let hasDateFilter = false;\n // check tags\n if (filters.hasOwnProperty('tagFilters')) {\n Object.keys(filters.tagFilters).forEach(filter => {\n const label = filters.tagFilters[filter];\n if (label) {\n return comment.tags.forEach(tag => {\n if (tag.name === filter && !hasTagFilter) {\n hasTagFilter = true;\n }\n });\n }});\n }\n // check for dates\n if (dateFilterApplied) {\n const commentDate = moment(comment.lastModifiedDate);\n const dateFrom = filters.dateRangeFrom !== null ? moment(filters.dateRangeFrom) : undefined;\n const dateTo = filters.dateRangeTo !== null ? moment(filters.dateRangeTo) : undefined;\n\n if (dateTo && dateFrom) {\n if (commentDate > dateFrom && commentDate < dateTo) {\n hasDateFilter = true;\n }\n }\n if (dateTo && !dateFrom) {\n if (commentDate <= dateTo) {\n hasDateFilter = true;\n }\n }\n if (dateFrom && !dateTo) {\n if (commentDate > dateFrom) {\n hasDateFilter = true;\n }\n }\n }\n\n return (hasTagFilter || hasDateFilter);\n });\n return (tagFilterApplied || dateFilterApplied) ? filteredComments : comments;\n } else {\n return comments;\n }\n }\n}\n","import uuid from 'uuid/v4';\nimport * as fromAnnotations from '../actions/annotation.actions';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\nimport { Comment } from '../../annotations/comment-set/comment/comment.model';\nimport { StoreUtils } from '../store-utils';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { Filters } from '../models/filters.interface';\n\nexport interface AnnotationSetState {\n annotationSet: any;\n annotationEntities: {[id: string]: any};\n annotationPageEntities: {[id: string]: Annotation[]};\n commentEntities: {[id: string]: Comment};\n selectedAnnotation: SelectionAnnotation;\n commentSearchQueries: { commentSearch: string };\n commentSummaryFilters: {hasFilter: boolean; filters: Filters};\n loaded: boolean;\n loading: boolean;\n}\n\nexport const initialState: AnnotationSetState = {\n annotationSet: {},\n annotationEntities: {},\n commentEntities: {},\n annotationPageEntities: {},\n selectedAnnotation: null,\n commentSearchQueries: {commentSearch: ''},\n commentSummaryFilters: {hasFilter: false, filters: {}},\n loading: false,\n loaded: false,\n};\n\nexport function reducer (\n state = initialState,\n action: fromAnnotations.AnnotationsActions\n): AnnotationSetState {\n switch (action.type) {\n\n case fromAnnotations.LOAD_ANNOTATION_SET: {\n const annotationSet = {\n ...state.annotationSet,\n documentId: action.payload\n };\n return {\n ...initialState,\n annotationSet,\n loading: true\n };\n }\n case fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS:\n case fromAnnotations.LOAD_ANNOTATION_SET_FAIL: {\n const annotationSet = action.payload.status === 200 ? action.payload.body :\n {\n ...state.annotationSet,\n annotations: [],\n id: uuid()\n };\n const annotationEntities = StoreUtils.generateAnnotationEntities(annotationSet.annotations);\n const annotationPageEntities = StoreUtils.groupByKeyEntities(annotationSet.annotations, 'page');\n const commentEntities = StoreUtils.generateCommentsEntities(annotationSet.annotations);\n return {\n ...state,\n annotationSet,\n annotationEntities,\n annotationPageEntities,\n commentEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromAnnotations.SAVE_ANNOTATION_SUCCESS: {\n const anno = action.payload;\n const annEntities = {\n ...state.annotationEntities,\n [anno.id]: anno\n };\n const annotArray = Object.keys(annEntities).map(key => annEntities[key]);\n const annotationEntities = StoreUtils.generateAnnotationEntities(annotArray);\n const annotationPageEntities = StoreUtils.groupByKeyEntities(annotArray, 'page');\n const commentEntities = StoreUtils.generateCommentsEntities(annotArray);\n const selectedAnnotation = {\n ...state.selectedAnnotation,\n annotationId : anno.id,\n editable: false\n };\n return {\n ...state,\n annotationEntities,\n annotationPageEntities,\n commentEntities,\n selectedAnnotation,\n loading: false,\n loaded: true\n };\n }\n\n case fromAnnotations.DELETE_ANNOTATION_SUCCESS: {\n const id = action.payload;\n const page = state.annotationEntities[id].page;\n const annotationEntities = {\n ...state.annotationEntities\n };\n delete annotationEntities[id];\n const pageAnnotationsRemoved = [\n ...state.annotationPageEntities[page].filter(anno => anno.id !== id)\n ];\n const annotationPageEntities = {\n ...state.annotationPageEntities,\n [page]: pageAnnotationsRemoved\n };\n const commentEntities = {\n ...state.commentEntities\n };\n if (state.commentEntities[id]) {\n delete commentEntities[id];\n }\n return {\n ...state,\n annotationEntities,\n annotationPageEntities,\n commentEntities\n };\n }\n\n case fromAnnotations.ADD_OR_EDIT_COMMENT: {\n const comment = {\n [action.payload.annotationId]: action.payload\n };\n const comments = {\n ...state.commentEntities,\n ...comment\n };\n return {\n ...state,\n commentEntities: comments\n };\n }\n\n case fromAnnotations.SELECT_ANNOTATION: {\n const payload = action.payload;\n const commentEntity = {\n ...state.commentEntities[payload.annotationId],\n editable: payload.editable,\n selected: payload.selected\n };\n\n const resetCommentEntSelect = StoreUtils.resetCommentEntSelect({...state.commentEntities});\n\n const commentEntities = payload.annotationId && state.commentEntities[payload.annotationId] ? {\n ...resetCommentEntSelect,\n [payload.annotationId]: commentEntity\n } : {...resetCommentEntSelect};\n\n return {\n ...state,\n commentEntities,\n selectedAnnotation: action.payload\n };\n }\n\n case fromAnnotations.SEARCH_COMMENT: {\n const commentSearchQueries = {\n ...state.commentSearchQueries,\n commentSearch: action.payload\n };\n\n const commentEntities = StoreUtils.resetCommentEntSelect({...state.commentEntities});\n return {\n ...state,\n commentEntities,\n commentSearchQueries\n };\n }\n\n case fromAnnotations.APPLY_COMMENT_SUMMARY_FILTER: {\n const payload = action.payload;\n const hasTagFilter = () => {\n let isFiltered = false;\n if (payload.tagFilters) {\n Object.keys(payload.tagFilters).map(filter => {\n if (payload.tagFilters[filter] && !isFiltered) {\n isFiltered = true;\n }\n });\n }\n return isFiltered;\n };\n const hasFilter = (hasTagFilter() || !!payload.dateRangeFrom || !!payload.dateRangeTo);\n const commentSummaryFilters = {\n hasFilter,\n filters: payload\n };\n return {\n ...state,\n commentSummaryFilters: commentSummaryFilters\n };\n }\n\n case fromAnnotations.CLEAR_COMMENT_SUMMARY_FILTER: {\n\n return {\n ...state,\n commentSummaryFilters : {...initialState.commentSummaryFilters}\n };\n }\n }\n\n\n return state;\n}\n\nexport const getAnnoSet = (state: AnnotationSetState) => state.annotationSet;\nexport const getCommentEnts = (state: AnnotationSetState) => state.commentEntities;\nexport const getAnnoPageEnt = (state: AnnotationSetState) => state.annotationPageEntities;\nexport const getAnnoEnt = (state: AnnotationSetState) => state.annotationEntities;\nexport const getSelectedAnno = (state: AnnotationSetState) => state.selectedAnnotation;\nexport const commentSearchQ = (state: AnnotationSetState) => state.commentSearchQueries;\nexport const getSummaryFilters = (state: AnnotationSetState) => state.commentSummaryFilters;\n","import * as fromAnnotations from '../actions/annotation.actions';\nimport * as fromTags from '../actions/tag.actions';\nimport {StoreUtils} from '../store-utils';\nimport {Annotation} from '../../annotations/annotation-set/annotation-view/annotation.model';\n\nexport interface TagsState {\n tagNameEnt: {[id: string]: string[]};\n filteredComments: {[id: string]: string[]};\n filteredPageEntities: {[id: string]: Annotation[]};\n annotations: Annotation[];\n formFilterState: {[id: string]: boolean};\n filters: string[];\n}\n\nexport const initialTagState: TagsState = {\n tagNameEnt: {},\n annotations: [],\n filteredPageEntities: {},\n filteredComments: {},\n formFilterState: {},\n filters: []\n};\n\nexport function tagsReducer (\n state = initialTagState,\n action: fromAnnotations.AnnotationsActions | fromTags.TagsActions\n): TagsState {\n switch (action.type) {\n case fromAnnotations.LOAD_ANNOTATION_SET: {\n\n return {\n ...state,\n ...initialTagState\n };\n }\n case fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS: {\n const annotations = action.payload.body.annotations;\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n return {\n ...state,\n tagNameEnt,\n annotations\n };\n }\n\n case fromAnnotations.SAVE_ANNOTATION_SUCCESS: {\n const payload = action.payload;\n\n const anno = [...state.annotations].filter(a => a.id !== payload.id) || [];\n const annotations = [...anno, payload];\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n return {\n ...state,\n annotations,\n tagNameEnt\n };\n }\n\n case fromAnnotations.DELETE_ANNOTATION_SUCCESS: {\n const id = action.payload;\n const annotations = [...state.annotations].filter(a => a.id !== id);\n const tagNameEnt = StoreUtils.genTagNameEntities(annotations);\n const filteredPageEntities = StoreUtils.groupByKeyEntities(annotations, 'page');\n const filteredComments = {\n ...state.filteredComments\n };\n delete filteredComments[id];\n return {\n ...state,\n annotations,\n tagNameEnt,\n filteredComments,\n filteredPageEntities,\n filters: []\n };\n }\n\n\n case fromTags.ADD_FILTER_TAGS: {\n const formFilterState = action.payload;\n\n const filters = Object.keys(formFilterState).reduce((arr: string[], key: string) => {\n return formFilterState[key] ? [...arr, key] : arr;\n }, []);\n\n const filteredComments = filters.reduce((obj: {[id: string]: any}, f) => {\n return {\n ...obj,\n ...state.tagNameEnt[f]\n };\n }, {});\n\n const annotations = Object.keys(filteredComments).map(key => state.annotations.filter(a => a.id === key)[0]);\n const filteredPageEntities = StoreUtils.groupByKeyEntities(annotations, 'page');\n return {\n ...state,\n filters,\n filteredComments,\n filteredPageEntities,\n };\n }\n\n case fromTags.CLEAR_FILTER_TAGS: {\n return {\n ...state,\n filters: [],\n filteredComments: {},\n filteredPageEntities: {},\n };\n }\n\n }\n\n return state;\n}\n\nexport const getTagNameEnt = (state: TagsState) => state.tagNameEnt;\nexport const getFilters = (state: TagsState) => state.filters;\nexport const getFilteredComments = (state: TagsState) => state.filteredComments;\nexport const getFilteredPageEnt = (state: TagsState) => state.filteredPageEntities;\n","import { Action } from '@ngrx/store';\nimport { Bookmark } from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\nexport const LOAD_BOOKMARKS = '[Bookmarks] Load Bookmarks';\nexport const LOAD_BOOKMARKS_SUCCESS = '[Bookmarks] Load Bookmarks Success';\nexport const LOAD_BOOKMARKS_FAIL = '[Bookmarks] Load Bookmarks Failure';\nexport const CREATE_BOOKMARK = '[Bookmarks] Create Bookmark';\nexport const CREATE_BOOKMARK_SUCCESS = '[Bookmarks] Create Bookmark Success';\nexport const CREATE_BOOKMARK_FAIL = '[Bookmarks] Create Bookmark Failure';\nexport const DELETE_BOOKMARK = '[Bookmarks] Delete Bookmark';\nexport const DELETE_BOOKMARK_SUCCESS = '[Bookmarks] Delete Bookmark Success';\nexport const DELETE_BOOKMARK_FAIL = '[Bookmarks] Delete Bookmark Failure';\nexport const MOVE_BOOKMARK = '[Bookmarks] Move Bookmark';\nexport const MOVE_BOOKMARK_SUCCESS = '[Bookmarks] Move Bookmark Success';\nexport const MOVE_BOOKMARK_FAIL = '[Bookmarks] Move Bookmark Failure';\nexport const UPDATE_BOOKMARK = '[Bookmarks] Update Bookmark';\nexport const UPDATE_BOOKMARK_SUCCESS = '[Bookmarks] Update Bookmark Success';\nexport const UPDATE_BOOKMARK_FAIL = '[Bookmarks] Update Bookmark Failure';\n\nexport class LoadBookmarks implements Action {\n readonly type = LOAD_BOOKMARKS;\n constructor() {}\n}\n\nexport class LoadBookmarksSuccess implements Action {\n readonly type = LOAD_BOOKMARKS_SUCCESS;\n constructor(public payload: { body: Bookmark[], status: number}) { }\n}\n\nexport class LoadBookmarksFailure implements Action {\n readonly type = LOAD_BOOKMARKS_FAIL;\n constructor(public payload: { body: any, status: number }) { }\n}\n\nexport class CreateBookmark implements Action {\n readonly type = CREATE_BOOKMARK;\n constructor(public payload: Bookmark) { }\n}\n\nexport class CreateBookmarkSuccess implements Action {\n readonly type = CREATE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark) {}\n}\n\nexport class CreateBookmarkFailure implements Action {\n readonly type = CREATE_BOOKMARK_FAIL;\n constructor(public payload: Bookmark) {}\n}\n\nexport class DeleteBookmark implements Action {\n readonly type = DELETE_BOOKMARK;\n constructor(public payload: { deleted: string[], updated: Bookmark }) {}\n}\n\nexport class DeleteBookmarkSuccess implements Action {\n readonly type = DELETE_BOOKMARK_SUCCESS;\n constructor(public payload: string[]) {}\n}\n\nexport class DeleteBookmarkFailure implements Action {\n readonly type = DELETE_BOOKMARK_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class MoveBookmark implements Action {\n readonly type = MOVE_BOOKMARK;\n constructor(public payload: Bookmark[]) {}\n}\n\nexport class MoveBookmarkSuccess implements Action {\n readonly type = MOVE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark[]) { }\n}\n\nexport class MoveBookmarkFailure implements Action {\n readonly type = MOVE_BOOKMARK_FAIL;\n constructor(public payload: string) {}\n}\n\nexport class UpdateBookmark implements Action {\n readonly type = UPDATE_BOOKMARK;\n constructor(public payload: Bookmark) {}\n}\n\nexport class UpdateBookmarkSuccess implements Action {\n readonly type = UPDATE_BOOKMARK_SUCCESS;\n constructor(public payload: Bookmark) {}\n}\n\nexport class UpdateBookmarkFailure implements Action {\n readonly type = UPDATE_BOOKMARK_FAIL;\n constructor(public payload: Bookmark) {}\n}\n\n\nexport type BookmarksActions =\n | LoadBookmarks | LoadBookmarksSuccess | LoadBookmarksFailure\n | CreateBookmark | CreateBookmarkSuccess | CreateBookmarkFailure\n | DeleteBookmark | DeleteBookmarkSuccess | DeleteBookmarkFailure\n | UpdateBookmark | UpdateBookmarkSuccess | UpdateBookmarkFailure\n | MoveBookmark | MoveBookmarkSuccess | MoveBookmarkFailure;\n","import { Bookmark } from '../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\nexport const getBookmarkChildren = (bookmarks: Bookmark[]) => {\n if (bookmarks) {\n return bookmarks.reduce((childIds, bookmark) => {\n if (bookmark.children && bookmark.children.length > 0) {\n return [...childIds, bookmark.id, ...getBookmarkChildren(bookmark.children)];\n }\n return [...childIds, bookmark.id];\n }, []);\n } else {\n return [];\n }\n};\n\nexport const generateBookmarkEntities = (bookmarks: Bookmark[]): {[id: string]: Bookmark} => {\n return bookmarks.reduce(\n (bookmarkEntities, bookmark) =>\n Object.assign(bookmarkEntities, { [bookmark.id]: bookmark }),\n {});\n};\n\nconst indexEntities = (entities: { [id: string]: Bookmark }) => {\n const entityIds = Object.keys(entities);\n for (let index = 0; entityIds.length > 0; index++) {\n let keysToRemove = [];\n entityIds.forEach(key => {\n if (!entities[key].previous || !entityIds.includes(entities[key].previous.toString())) {\n entities[key].index = index;\n keysToRemove.push(key);\n }\n });\n keysToRemove.forEach(key => entityIds.splice(entityIds.indexOf(key), 1));\n keysToRemove = [];\n }\n};\n\nexport const generateBookmarkNodes = (entities: { [id: string]: Bookmark }) => {\n const bookmarkEntities = JSON.parse(JSON.stringify(entities));\n indexEntities(bookmarkEntities);\n return Object.keys(bookmarkEntities).reduce((nodes, bookmarkId) => {\n const bookmarkEntity = bookmarkEntities[bookmarkId];\n if (bookmarkEntity.parent) {\n const parentEntity = bookmarkEntities[bookmarkEntity.parent];\n if (!parentEntity.children) {\n parentEntity.children = [];\n }\n parentEntity.children[bookmarkEntity.index] = bookmarkEntity;\n } else {\n nodes[bookmarkEntity.index] = bookmarkEntity;\n }\n return nodes;\n }, []);\n};\n","import * as fromBookmarks from '../actions/bookmark.actions';\nimport { Bookmark } from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\nimport { StoreUtils } from '../store-utils';\nimport { generateBookmarkEntities } from '../bookmarks-store-utils';\n\nexport interface BookmarksState {\n bookmarks: Bookmark[];\n bookmarkEntities: { [id: string]: Bookmark };\n bookmarkPageEntities: {[id: string]: any};\n editableBookmark: string;\n loaded: boolean;\n loading: boolean;\n}\n\nexport const initialBookmarksState: BookmarksState = {\n bookmarks: [],\n bookmarkEntities: {},\n bookmarkPageEntities: {},\n editableBookmark: undefined,\n loaded: false,\n loading: false\n};\n\nexport function bookmarksReducer (state = initialBookmarksState,\n action: fromBookmarks.BookmarksActions): BookmarksState {\n\n switch (action.type) {\n\n case fromBookmarks.LOAD_BOOKMARKS: {\n return {\n ...state,\n loading: true\n };\n }\n\n case fromBookmarks.LOAD_BOOKMARKS_SUCCESS:\n case fromBookmarks.LOAD_BOOKMARKS_FAIL: {\n const bookmarks = action.payload.status === 200 ? action.payload.body : [];\n const bookmarkEntities = generateBookmarkEntities(bookmarks);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarks, 'pageNumber');\n\n return {\n ...state,\n bookmarks,\n bookmarkEntities,\n bookmarkPageEntities,\n loaded: true\n };\n }\n\n case fromBookmarks.CREATE_BOOKMARK_SUCCESS: {\n const bookmark: Bookmark = action.payload;\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n [bookmark.id]: bookmark,\n };\n const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');\n const editableBookmark = bookmark.id;\n return {\n ...state,\n bookmarkEntities,\n editableBookmark,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.MOVE_BOOKMARK_SUCCESS: {\n const movedBookmarks = generateBookmarkEntities(action.payload);\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n ...movedBookmarks\n };\n return {\n ...state,\n bookmarkEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.DELETE_BOOKMARK_SUCCESS: {\n const bookmarkIds: string[] = action.payload;\n const bookmarkEntities = { ...state.bookmarkEntities };\n const bookmarkPageEntities = { ...state.bookmarkPageEntities };\n const removeBookmarksByPage: {[pageNumber: number]: string[]} = {};\n bookmarkIds.forEach(bookmarkId => {\n if (removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] !== undefined &&\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].length > 0) {\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].push(bookmarkId);\n } else {\n removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] = [bookmarkId];\n }\n delete bookmarkEntities[bookmarkId];\n });\n\n Object.entries(removeBookmarksByPage).forEach(\n ([pageNumber, bmrkIds]) => {\n bookmarkPageEntities[pageNumber] = bookmarkPageEntities[pageNumber].filter(bookmarkId => bmrkIds.includes(bookmarkId));\n }\n );\n\n return {\n ...state,\n bookmarkEntities,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n\n case fromBookmarks.UPDATE_BOOKMARK_SUCCESS: {\n const bookmark: Bookmark = action.payload;\n const bookmarkEntities = {\n ...state.bookmarkEntities,\n [bookmark.id]: { ...bookmark }\n };\n const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);\n const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');\n const editableBookmark = undefined;\n return {\n ...state,\n bookmarkEntities,\n editableBookmark,\n bookmarkPageEntities,\n loading: false,\n loaded: true\n };\n }\n }\n return state;\n}\n\nexport const getBookmarks = (state: BookmarksState) => state.bookmarks;\nexport const getBookmarkEnts = (state: BookmarksState) => state.bookmarkEntities;\nexport const getBookmarkPageEnt = (state: BookmarksState) => state.bookmarkPageEntities;\nexport const getEditBookmark = (state: BookmarksState) => state.editableBookmark;\n","import { Action } from '@ngrx/store';\nimport { Redaction } from '../../redaction/services/redaction.model';\nimport { Annotation } from '../../annotations/annotation-set/annotation-view/annotation.model';\n\nexport const LOAD_REDACTIONS = '[Redaction] Load Redaction';\nexport const LOAD_REDACTION_SUCCESS = '[Redaction] Load Redaction Success';\nexport const LOAD_REDACTION_FAIL = '[Redaction] Load Redaction Fail';\n\nexport const SAVE_REDACTION = '[Redaction] Save Redaction';\nexport const SAVE_REDACTION_SUCCESS = '[Redaction] Save Redaction Success';\nexport const SAVE_REDACTION_FAIL = '[Redaction] Save Redaction Fail';\n\nexport const DELETE_REDACTION = '[Redaction] Delete Redaction';\nexport const DELETE_REDACTION_SUCCESS = '[Redaction] Delete Redaction Success';\nexport const DELETE_REDACTION_FAIL = '[Redaction] Delete Redaction Fail';\n\nexport const SELECT_REDACTION = '[Redaction] Select Redaction';\n\nexport const REDACT = '[Redaction] Redact';\nexport const REDACT_SUCCESS = '[Redaction] Redact Success';\nexport const REDACT_FAIL = '[Redaction] Redact Fail';\nexport const RESET_REDACTED_DOCUMENT = '[Redaction] Reset Redacted Document';\n\nexport const UNMARK_ALL = '[Redaction] Unmark All';\nexport const UNMARK_ALL_SUCCESS = '[Redaction] Unmark All Success';\n\n\nexport class LoadRedactions implements Action {\n readonly type = LOAD_REDACTIONS;\n constructor(public payload: any) {}\n}\n\nexport class LoadRedactionSuccess implements Action {\n readonly type = LOAD_REDACTION_SUCCESS;\n constructor(public payload: Redaction[]) {}\n}\n\nexport class LoadRedactionFailure implements Action {\n readonly type = LOAD_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class SaveRedaction implements Action {\n readonly type = SAVE_REDACTION;\n constructor(public payload: Redaction) {}\n}\n\nexport class SaveRedactionSuccess implements Action {\n readonly type = SAVE_REDACTION_SUCCESS;\n constructor(public payload: Redaction) {}\n}\n\nexport class SaveRedactionFailure implements Action {\n readonly type = SAVE_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class DeleteRedaction implements Action {\n readonly type = DELETE_REDACTION;\n constructor(public payload: Annotation) {}\n}\n\nexport class DeleteRedactionSuccess implements Action {\n readonly type = DELETE_REDACTION_SUCCESS;\n constructor(public payload: any) {}\n}\n\nexport class DeleteRedactionFailure implements Action {\n readonly type = DELETE_REDACTION_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class SelectRedaction implements Action {\n readonly type = SELECT_REDACTION;\n constructor(public payload: any) {}\n}\n\nexport class Redact implements Action {\n readonly type = REDACT;\n constructor(public payload: { redactions: Redaction[], documentId: string }) {}\n}\n\nexport class RedactSuccess implements Action {\n readonly type = REDACT_SUCCESS;\n constructor(public payload: { blob: Blob, filename: string }) {}\n}\n\nexport class RedactFailure implements Action {\n readonly type = REDACT_FAIL;\n constructor(public payload: any) {}\n}\n\nexport class ResetRedactedDocument implements Action {\n readonly type = RESET_REDACTED_DOCUMENT;\n}\n\n\nexport class UnmarkAll implements Action {\n readonly type = UNMARK_ALL;\n constructor(public payload: string) {}\n}\n\nexport class UnmarkAllSuccess implements Action {\n readonly type = UNMARK_ALL_SUCCESS;\n}\n\nexport type RedactionActions =\n | LoadRedactions | LoadRedactionSuccess | LoadRedactionFailure\n | SaveRedaction | SaveRedactionSuccess | SaveRedactionFailure\n | DeleteRedaction | DeleteRedactionSuccess | DeleteRedactionFailure\n | SelectRedaction\n | Redact | RedactSuccess | RedactFailure | ResetRedactedDocument\n | UnmarkAll | UnmarkAllSuccess;\n","import * as fromRedaction from '../actions/redaction.actions';\nimport * as fromAnnotations from '../actions/annotation.actions';\nimport {StoreUtils} from '../store-utils';\nimport {SelectionAnnotation} from '../../annotations/models/event-select.model';\nimport { Redaction } from '../../redaction/services/redaction.model'; // todo rename\n\n\nexport interface RedactionState {\n redactionEntities: { [id: string]: Redaction };\n redactionPageEntities: { [id: string]: any };\n selectedRedaction: SelectionAnnotation | {};\n redactedDocumentInfo: { blob: Blob, filename: string };\n documentId: string;\n}\n\nexport const initialRedactionState: RedactionState = {\n redactionEntities: {},\n redactionPageEntities: {},\n selectedRedaction: {},\n redactedDocumentInfo: undefined,\n documentId: undefined\n};\n\nexport function redactionReducer (\n state = initialRedactionState,\n action: fromRedaction.RedactionActions | fromAnnotations.AnnotationsActions\n): RedactionState {\n switch (action.type) {\n\n case fromRedaction.LOAD_REDACTIONS: {\n return {\n ...state,\n ...initialRedactionState\n };\n }\n\n case fromRedaction.LOAD_REDACTION_SUCCESS: {\n const payload = action.payload;\n if (payload) {\n const redactionEntities = StoreUtils.generateRedactionEntities(payload);\n const redactionPageEntities = StoreUtils.groupByKeyEntities(payload, 'page');\n return {\n ...state,\n redactionEntities,\n redactionPageEntities\n };\n }\n return {\n ...state\n };\n }\n\n case fromRedaction.SAVE_REDACTION_SUCCESS: {\n const { payload } = action;\n const redactionEntities = {\n ...state.redactionEntities,\n [payload.redactionId]: payload\n };\n const redactionArray = Object.keys(redactionEntities).map(key => redactionEntities[key]);\n const redactionPageEntities = StoreUtils.groupByKeyEntities(redactionArray, 'page');\n return {\n ...state,\n redactionEntities,\n redactionPageEntities\n };\n }\n\n case fromRedaction.SELECT_REDACTION:\n case fromAnnotations.SELECT_ANNOTATION: {\n return {\n ...state,\n selectedRedaction: action.payload\n };\n }\n\n case fromRedaction.DELETE_REDACTION_SUCCESS: {\n const page = action.payload.page;\n const id = action.payload.redactionId;\n const redactionEntities = {\n ...state.redactionEntities\n };\n delete redactionEntities[id];\n const pageRedactionRemoved = [\n ...state.redactionPageEntities[page].filter(redaction => redaction.redactionId !== id)\n ];\n const redactionPageEntities = {\n ...state.redactionPageEntities,\n [page]: pageRedactionRemoved\n };\n\n return {\n ...state,\n redactionPageEntities,\n redactionEntities,\n };\n }\n\n case fromRedaction.REDACT_SUCCESS: {\n const redactedDocumentInfo = action.payload;\n return {\n ...state,\n ...initialRedactionState,\n redactedDocumentInfo\n };\n }\n\n case fromRedaction.RESET_REDACTED_DOCUMENT: {\n return {\n ...state,\n redactedDocumentInfo: undefined\n };\n }\n\n case fromRedaction.UNMARK_ALL_SUCCESS: {\n return {\n ...state,\n ...initialRedactionState\n };\n }\n }\n\n return state;\n}\n\n\nexport const getRedactionEnt = (state: RedactionState) => state.redactionEntities;\nexport const getPageEnt = (state: RedactionState) => state.redactionPageEntities;\nexport const getSelectedRedaction = (state: RedactionState) => state.selectedRedaction;\nexport const getRedactedDocInfo = (state: RedactionState) => state.redactedDocumentInfo;\n","import * as fromIcpActions from '../actions/icp.actions';\nimport { IcpSession, IcpState } from '../../icp/icp.interfaces';\n\nexport const initialIcpSessionState: IcpState = {\n session: null,\n presenter: null,\n client: null,\n participants: []\n};\n\nexport function icpReducer (state = initialIcpSessionState,\n action: fromIcpActions.IcpActions): IcpState {\n\n switch (action.type) {\n\n case fromIcpActions.SET_CASE_ID: {\n const caseId = action.payload;\n const session = {...state.session, caseId};\n return {\n ...state,\n session\n };\n }\n\n case fromIcpActions.ICP_SOCKET_SESSION_JOINED: {\n const session: IcpSession = action.payload.session;\n const participantInfo = action.payload.participantInfo;\n return {\n ...state,\n session,\n client: participantInfo.client,\n presenter: participantInfo.presenter,\n };\n }\n\n case fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED: {\n const updatedParticipants: any = action.payload;\n const participants = Object.keys(updatedParticipants)\n .map(id => ({ id: id, username: updatedParticipants[id] }));\n return {\n ...state,\n participants\n };\n }\n\n case fromIcpActions.ICP_PRESENTER_UPDATED: {\n const presenter = action.payload;\n return {\n ...state, presenter\n };\n }\n\n case fromIcpActions.LEAVE_ICP_SOCKET_SESSION: {\n return {\n ...state,\n ...initialIcpSessionState\n };\n }\n }\n return state;\n}\n\nexport const getIcpSession = (state: IcpState) => state.session;\nexport const getPresenter = (state: IcpState) => state.presenter;\nexport const getClient = (state: IcpState) => state.client;\nexport const getParticipants = (state: IcpState) => state.participants;\n","import { ActionReducerMap, createFeatureSelector } from '@ngrx/store';\nimport * as fromDocument from './document.reducer';\nimport * as fromAnnotation from './annotations.reducer';\nimport * as fromTags from './tags.reducer';\nimport * as fromBookmarks from './bookmarks.reducer';\nimport * as fromRedaction from './redaction.reducer';\nimport * as fromIcp from './icp.reducer';\nimport { IcpState } from '../../icp/icp.interfaces';\n\nexport interface State {\n document: fromDocument.DocumentState;\n annotations: fromAnnotation.AnnotationSetState;\n tags: fromTags.TagsState;\n bookmarks: fromBookmarks.BookmarksState;\n redactions: fromRedaction.RedactionState;\n icp: IcpState;\n}\n\nexport const reducers: ActionReducerMap<State> = {\n document: fromDocument.docReducer,\n annotations: fromAnnotation.reducer,\n tags: fromTags.tagsReducer,\n bookmarks: fromBookmarks.bookmarksReducer,\n redactions: fromRedaction.redactionReducer,\n icp: fromIcp.icpReducer,\n};\n\nexport const getMVState = createFeatureSelector<State>('media-viewer');\n\nexport * from './document.reducer';\nexport * from './annotations.reducer';\nexport * from './tags.reducer';\nexport * from './bookmarks.reducer';\nexport * from './redaction.reducer';\nexport * from './icp.reducer';\n","import { createSelector } from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromDocument from '../reducers/document.reducer';\n\nexport const getDocumentState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.document\n);\n\nexport const getPages = createSelector(\n getDocumentState,\n fromDocument.getDocPages\n);\n\nexport const getPageList = createSelector(\n getPages,\n (pages) => Object.values(pages)\n);\n\nexport const getDocumentId = createSelector(\n getDocumentState,\n fromDocument.getDocId\n);\n\nexport const getPdfPosition = createSelector(\n getDocumentState,\n fromDocument.getPdfPos\n);\n\nexport const getPageDifference = createSelector(\n getDocumentState,\n fromDocument.getHasDifferentPageSizes\n);\n\nexport const getConvertedDocument = createSelector(\n getDocumentState,\n fromDocument.getConvertedDocument\n);\n\nexport const getRotation = createSelector(\n getDocumentState,\n fromDocument.getRotation\n);\n\nexport const rotationLoaded = createSelector(\n getDocumentState,\n fromDocument.rotationLoaded\n);\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Rectangle } from '../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\n\nexport interface Highlight {\n page: number;\n rectangles: Rectangle[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ViewerEventService {\n\n public readonly textHighlight = new Subject<Highlight>();\n public readonly boxHighlight = new Subject<Highlight>();\n public readonly ctxToolbarCleared = new Subject();\n public readonly navigationEvent = new Subject<any[]>();\n\n constructor() {}\n\n public textSelected(selectionData: Highlight): void {\n this.textHighlight.next(selectionData);\n }\n\n public boxSelected(selectionData: Highlight): void {\n this.boxHighlight.next(selectionData);\n }\n\n public clearCtxToolbar(): void {\n this.ctxToolbarCleared.next();\n }\n\n\n public goToDestination(destination: any[]) {\n this.navigationEvent.next(destination);\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { asyncScheduler, BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, tap, throttleTime } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\n\nimport { DocumentLoadProgress, PageEvent, PdfJsWrapper } from './pdf-js/pdf-js-wrapper';\nimport { PdfJsWrapperFactory } from './pdf-js/pdf-js-wrapper.provider';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { PrintService } from '../../print.service';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { CommentSetComponent } from '../../annotations/comment-set/comment-set.component';\nimport { Outline } from './side-bar/outline-item/outline.model';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { PdfPositionUpdate } from '../../store/actions/document.actions';\nimport * as fromTagActions from '../../store/actions/tag.actions';\nimport { SetCaseId } from '../../store/actions/icp.actions';\nimport * as fromDocumentsSelector from '../../store/selectors/document.selectors';\nimport { IcpState } from '../../icp/icp.interfaces';\nimport { ViewerEventService } from '../viewer-event.service';\n\n@Component({\n selector: 'mv-pdf-viewer',\n templateUrl: './pdf-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class PdfViewerComponent implements AfterContentInit, OnChanges, OnDestroy {\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() pdfViewerException = new EventEmitter<ViewerException>();\n @Output() documentTitle = new EventEmitter<string>();\n\n @Input() downloadUrl: string;\n @Input() url: string;\n @Input() downloadFileName: string;\n\n @Input() enableAnnotations: boolean;\n @Input() enableRedactions: boolean;\n @Input() enableICP: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n @Input() height: string;\n pageHeights = [];\n rotation = 0;\n zoom = 1;\n\n @Input() caseId: string;\n\n highlightMode: Observable<boolean>;\n drawMode: BehaviorSubject<boolean>;\n\n documentOutline: Outline;\n loadingDocument = false;\n loadingDocumentProgress: number;\n errorMessage: string;\n hasDifferentPageSize = false;\n\n @ViewChild('viewerContainer', {static: true}) viewerContainer: ElementRef<HTMLDivElement>;\n @ViewChild('pdfViewer', {static: false}) pdfViewer: ElementRef<HTMLDivElement>;\n\n private pdfWrapper: PdfJsWrapper;\n private $subscription: Subscription;\n private viewerException: ViewerException;\n showCommentsPanel: boolean;\n showIcpParticipantsList: boolean;\n enableGrabNDrag = false;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private icpStore: Store<IcpState>,\n private readonly pdfJsWrapperFactory: PdfJsWrapperFactory,\n private readonly printService: PrintService,\n public readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n ) {\n this.highlightMode = toolbarEvents.highlightModeSubject.pipe(tap(() => {\n this.store.dispatch(new fromTagActions.ClearFilterTags());\n }));\n this.drawMode = toolbarEvents.drawModeSubject;\n }\n\n async ngAfterContentInit(): Promise<void> {\n this.pdfWrapper.documentLoadProgress.subscribe(v => this.onDocumentLoadProgress(v));\n this.pdfWrapper.documentLoaded.subscribe(() => this.onDocumentLoaded());\n this.pdfWrapper.documentLoadFailed.subscribe((error) => this.onDocumentLoadFailed(error));\n this.pdfWrapper.outlineLoaded.subscribe(outline => this.documentOutline = outline);\n this.pdfWrapper.pageRendered.subscribe((event) => this.updatePages(event));\n this.$subscription = this.toolbarEvents.printSubject\n .subscribe(() => this.printService.printDocumentNatively(this.url));\n this.$subscription.add(this.toolbarEvents.downloadSubject.subscribe(() =>\n this.pdfWrapper.downloadFile(this.downloadUrl || this.url, this.downloadFileName)\n ));\n this.$subscription.add(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument(rotate)));\n this.$subscription.add(this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)));\n this.$subscription.add(this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)));\n this.$subscription.add(this.toolbarEvents.searchSubject.subscribe(search => this.pdfWrapper.search(search)));\n this.$subscription.add(\n this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.pdfWrapper.setPageNumber(pageNumber))\n );\n this.$subscription.add(\n this.toolbarEvents.changePageByDeltaSubject.subscribe(pageNumber => this.pdfWrapper.changePageNumber(pageNumber))\n );\n this.$subscription.add(this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag));\n this.$subscription.add(this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {\n this.showCommentsPanel = toggle;\n })\n );\n this.$subscription.add(this.viewerEvents.navigationEvent.subscribe(dest => this.goToDestination(dest)));\n this.$subscription.add(\n this.toolbarEvents.icp.participantsListVisible.subscribe(toggle => this.showIcpParticipantsList = toggle)\n );\n this.$subscription.add(this.pdfWrapper.positionUpdated.asObservable()\n .pipe(throttleTime(500, asyncScheduler, { leading: true, trailing: true }))\n .subscribe(event => this.store.dispatch(new PdfPositionUpdate(event.location)))\n );\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (!this.pdfWrapper) {\n this.pdfWrapper = this.pdfJsWrapperFactory.create(this.viewerContainer);\n }\n if (changes.url && this.pdfWrapper) {\n await this.loadDocument();\n if (this.enableRedactions) {\n this.toolbarEvents.redactionMode.pipe(filter(value => !!value))\n .subscribe(() => this.resetRotation());\n }\n }\n if (changes.caseId) {\n this.icpStore.dispatch(new SetCaseId(this.caseId));\n }\n }\n\n resetRotation() {\n if (this.hasDifferentPageSize) {\n this.pdfWrapper.resetRotation(0);\n this.rotation = 0;\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n private async loadDocument() {\n this.initDocumentProgress();\n await this.pdfWrapper.loadDocument(this.url);\n this.documentTitle.emit(this.pdfWrapper.getCurrentPDFTitle());\n this.setPageHeights();\n this.$subscription.add(this.store.pipe(select(fromDocumentsSelector.getPageDifference))\n .subscribe(hasDifferentPageSie => this.hasDifferentPageSize = hasDifferentPageSie));\n }\n\n private onDocumentLoadProgress(progress: DocumentLoadProgress) {\n if (progress.total) {\n this.loadingDocumentProgress = Math.min(100, Math.ceil(progress.loaded / progress.total * 100));\n }\n }\n\n private onDocumentLoaded() {\n this.loadingDocument = false;\n this.mediaLoadStatus.emit(ResponseType.SUCCESS);\n }\n\n private onDocumentLoadFailed(error: Error) {\n this.loadingDocument = false;\n this.viewerException = new ViewerException(error.name, { message: error.message });\n this.errorMessage = `Could not load the document \"${this.url}\"`;\n\n this.mediaLoadStatus.emit(ResponseType.FAILURE);\n this.pdfViewerException.emit(this.viewerException);\n }\n\n private updatePages(event: PageEvent[]) {\n if (this.enableAnnotations) {\n this.store.dispatch(new fromDocumentActions.AddPages(event));\n }\n }\n\n @Input()\n set searchBarHidden(hidden: boolean) {\n if (this.pdfWrapper && hidden) {\n this.pdfWrapper.clearSearch();\n }\n }\n\n toggleCommentsSummary() {\n this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());\n }\n\n private rotateDocument(rotation: number) {\n const pageNumber = this.pdfWrapper.getPageNumber();\n this.pdfWrapper.rotate(rotation);\n this.pdfWrapper.setPageNumber(pageNumber);\n this.rotation = (this.rotation + rotation) % 360;\n\n this.setPageHeights();\n }\n\n private initDocumentProgress() {\n this.loadingDocument = true;\n this.loadingDocumentProgress = null;\n this.errorMessage = null;\n }\n\n private setZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n this.pdfWrapper.setZoom(zoomFactor);\n this.zoom = this.calculateZoomValue(zoomFactor);\n this.setPageHeights();\n }\n }\n\n private stepZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n this.pdfWrapper.stepZoom(zoomFactor);\n this.zoom = this.calculateZoomValue(this.zoom, zoomFactor);\n this.setPageHeights();\n }\n }\n\n setPageHeights() {\n this.pageHeights = [];\n const pdfViewerChildren = this.pdfViewer.nativeElement.children;\n for (let i = 0; i < pdfViewerChildren.length; i++) {\n this.pageHeights.push(pdfViewerChildren[i].clientHeight);\n }\n }\n\n calculateZoomValue(zoomValue, increment = 0) {\n const newZoomValue = zoomValue + increment;\n if (newZoomValue > 5) {\n return 5;\n }\n if (newZoomValue < 0.1) {\n return 0.1;\n }\n return +newZoomValue.toFixed(2);\n }\n\n private goToDestination(destination: any[]) {\n this.pdfWrapper.navigateTo(destination);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerUtilService {\n constructor(\n private http: HttpClient) {\n }\n\n public validateFile(url: string) {\n return this.http.head(url);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrintService } from '../../print.service';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ViewerUtilService } from '../viewer-util.service';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromDocument from '../../store/actions/document.actions';\n\n@Component({\n selector: 'mv-image-viewer',\n templateUrl: './image-viewer.component.html'\n})\nexport class ImageViewerComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n\n @Input() enableAnnotations: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n @Input() height: string;\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() imageViewerException = new EventEmitter<ViewerException>();\n\n errorMessage: string;\n\n @ViewChild('img', {static: false}) img: ElementRef;\n rotation = 0;\n zoom = 1;\n\n private subscriptions: Subscription[] = [];\n private viewerException: ViewerException;\n private response: Subscription;\n\n showCommentsPanel: boolean;\n enableGrabNDrag = false;\n imageHeight: number;\n imageWidth: number;\n imageLeft: number;\n imageTop: number;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly printService: PrintService,\n private readonly viewerUtilService: ViewerUtilService,\n public readonly toolbarEvents: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService\n ) { }\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.rotateSubject.subscribe(rotation => this.rotateImage(rotation)),\n this.toolbarEvents.zoomSubject.subscribe(zoom => this.setZoom(zoom)),\n this.toolbarEvents.stepZoomSubject.subscribe(zoom => this.stepZoom(zoom)),\n this.toolbarEvents.printSubject.subscribe(() => this.printService.printDocumentNatively(this.url)),\n this.toolbarEvents.downloadSubject.subscribe(() => this.download()),\n this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag),\n this.toolbarEvents.commentsPanelVisible.subscribe(toggle => this.showCommentsPanel = toggle)\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.filter(subscription => !subscription.closed)\n .forEach(subscription => subscription.unsubscribe());\n if (this.response) {\n this.response.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.url) {\n this.errorMessage = null;\n this.toolbarEvents.reset();\n }\n }\n\n private rotateImage(rotation: number) {\n this.rotation = (this.rotation + rotation) % 360;\n this.initAnnoPage(this.img.nativeElement);\n }\n\n private async setZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n await this.setZoomValue(this.calculateZoomValue(zoomFactor));\n this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;\n this.initAnnoPage(this.img.nativeElement);\n }\n }\n\n private async stepZoom(zoomFactor: number) {\n if (!isNaN(zoomFactor)) {\n await this.setZoomValue(this.calculateZoomValue(this.zoom, zoomFactor));\n this.img.nativeElement.width = this.img.nativeElement.naturalWidth * this.zoom;\n this.initAnnoPage(this.img.nativeElement);\n }\n }\n\n private download() {\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = this.url;\n a.download = this.downloadFileName;\n a.click();\n a.remove();\n }\n\n // the returned promise is a work-around\n setZoomValue(zoomValue) {\n return new Promise((resolve) => {\n this.zoom = zoomValue;\n this.toolbarEvents.zoomValueSubject.next(zoomValue);\n resolve(true);\n });\n }\n\n calculateZoomValue(zoomValue, increment = 0) {\n const newZoomValue = zoomValue + increment;\n if (newZoomValue > 5) { return 5; }\n if (newZoomValue < 0.1) { return 0.1; }\n return +newZoomValue.toFixed(2);\n }\n\n onLoadError(url) {\n this.response = this.viewerUtilService.validateFile(url)\n .subscribe(\n next => next,\n error => {\n this.viewerException = new ViewerException(error.name,\n {httpResponseCode: error.status, message: error.message});\n });\n\n this.errorMessage = `Could not load the image \"${this.url}\"`;\n this.mediaLoadStatus.emit(ResponseType.FAILURE);\n this.imageViewerException.emit(this.viewerException);\n }\n\n onLoad(img: any) {\n this.mediaLoadStatus.emit(ResponseType.SUCCESS);\n this.initAnnoPage(img);\n }\n\n initAnnoPage(img: any) {\n this.imageHeight = this.rotation % 180 !== 0 ? img.offsetWidth : img.offsetHeight;\n this.imageWidth = this.rotation % 180 !== 0 ? img.offsetHeight : img.offsetWidth;\n this.imageLeft = this.rotation % 180 !== 0 ? img.offsetTop : img.offsetLeft;\n this.imageTop = this.rotation % 180 !== 0 ? img.offsetLeft : img.offsetTop;\n const payload: any = [{\n div: {\n scrollHeight: this.imageHeight,\n scrollWidth: this.imageWidth,\n offsetLeft: this.imageLeft,\n },\n pageNumber: 1,\n scale: this.zoom,\n rotation: this.rotation,\n id: 1\n }];\n\n this.store.dispatch(new fromDocument.AddPages(payload));\n }\n\n toggleCommentsSummary() {\n this.toolbarEvents.toggleCommentsSummary(!this.toolbarEvents.showCommentSummary.getValue());\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, OnDestroy, Output, EventEmitter } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { Subscription } from 'rxjs';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { ViewerUtilService } from '../viewer-util.service';\n\n@Component({\n selector: 'mv-unsupported-viewer',\n templateUrl: './unsupported-viewer.component.html'\n})\nexport class UnsupportedViewerComponent implements OnInit, OnDestroy {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n @Input() typeException: boolean;\n\n @Output() loadStatus = new EventEmitter<ResponseType>();\n @Output() unsupportedViewerException = new EventEmitter<ViewerException>();\n\n @ViewChild('downloadLink', {static: false}) downloadLink: ElementRef;\n\n private subscriptions: Subscription[] = [];\n private viewerException: ViewerException;\n\n constructor(\n public readonly toolbarEvents: ToolbarEventService,\n private readonly viewerUtilService: ViewerUtilService,\n ) {}\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.downloadSubject.subscribe(() => this.downloadLink.nativeElement.click()),\n this.viewerUtilService.validateFile(this.url).subscribe(\n next => next,\n error => {\n this.viewerException = new ViewerException(error.name,\n { httpResponseCode: error.status, message: error.message });\n }\n )\n );\n\n this.loadStatus.emit(ResponseType.UNSUPPORTED);\n\n if (!this.typeException) {\n this.unsupportedViewerException.emit(this.viewerException);\n }\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { AnnotationSet } from '../../annotation-set/annotation-set.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { Comment } from '../../comment-set/comment/comment.model';\n\n@Injectable()\nexport class AnnotationApiService {\n\n public annotationApiUrl = '/em-anno';\n\n private annotationSetBaseUrl = '/annotation-sets';\n private annotationBaseUrl = '/annotations';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getAnnotationSet(documentId: string): Observable<any> { // todo add model\n const fixedUrl = `${this.annotationSetsFullUrl}/filter?documentId=${documentId}`;\n return this.httpClient\n .get<AnnotationSet>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public postAnnotationSet(body: Partial<AnnotationSet>): Observable<AnnotationSet> {\n return this.httpClient\n .post<AnnotationSet>(this.annotationSetsFullUrl, body, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response.body),\n catchError(() => [])\n );\n }\n\n public getComments(annotationSet: Observable<AnnotationSet>): Observable<Comment[]> {\n return annotationSet\n .pipe(\n map(this.sortAnnotations),\n map(this.extractComments)\n );\n }\n\n /**\n * Sort the annotations in the response by page and then y position of their first rectangle\n */\n private sortAnnotations(r: AnnotationSet): Annotation[] {\n return r.annotations.sort((a, b) => a.page !== b.page ? a.page - b.page : a.rectangles[0].y - b.rectangles[0].y);\n }\n\n private extractComments(annotations: Annotation[]) {\n return [].concat(...annotations.map(a => a.comments));\n }\n\n public deleteAnnotation(annotationId: string): Observable<null> {\n const url = `${this.annotationFullsUrl}/${annotationId}`;\n\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public postAnnotation(annotation: Partial<Annotation>): Observable<Annotation> {\n return this.httpClient\n .post<Annotation>(this.annotationFullsUrl, annotation, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n get annotationSetsFullUrl() {\n return this.annotationApiUrl + this.annotationSetBaseUrl;\n }\n\n get annotationFullsUrl() {\n return this.annotationApiUrl + this.annotationBaseUrl;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { CommentSetComponent } from '../comment-set.component';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { CommentComponent } from './comment.component';\n\n// TODO: replace by NgRx\n@Injectable()\nexport class CommentService {\n\n public readonly unsavedChanges = new Subject<boolean>();\n commentSetComponent: CommentSetComponent;\n\n setCommentSet(commentSetComponent) {\n this.commentSetComponent = commentSetComponent;\n }\n\n onCommentChange(changes: boolean): void {\n this.unsavedChanges.next(changes);\n }\n\n getUnsavedChanges(): Observable<boolean> {\n return this.unsavedChanges.asObservable();\n }\n\n hasUnsavedComments(annotation: Annotation): boolean {\n if (annotation.comments.length > 0) {\n const comment = this.getComment(annotation);\n return comment.hasUnsavedChanges;\n }\n return false;\n }\n\n updateUnsavedCommentsStatus(annotation: Annotation, hasUnsavedChanges: boolean): void {\n const comment = this.getComment(annotation);\n comment.hasUnsavedChanges = hasUnsavedChanges;\n this.allCommentsSaved();\n }\n\n getComment(annotation: Annotation): CommentComponent {\n return this.commentSetComponent.commentComponents\n .find(c => c.comment.annotationId === annotation.comments[0].annotationId);\n }\n\n resetCommentSet(): void {\n this.commentSetComponent = null;\n }\n\n allCommentsSaved(): void {\n this.onCommentChange(this.commentSetComponent.commentComponents.some(comment => comment.hasUnsavedChanges === true));\n }\n}\n","import {createSelector} from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromTags from '../reducers/tags.reducer';\n\nexport const getTagsRootState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.tags\n);\n\nexport const getTagEntities = createSelector(\n getTagsRootState,\n fromTags.getTagNameEnt\n);\n\nexport const getTagFilters = createSelector(\n getTagsRootState,\n fromTags.getFilters\n);\n\nexport const getTagFiltered = createSelector(\n getTagsRootState,\n fromTags.getFilteredComments\n);\n\nexport const getFilteredPageEntities = createSelector(\n getTagsRootState,\n fromTags.getFilteredPageEnt\n);\n\nexport const getAllTagsArr = createSelector(\n getTagEntities,\n (tagEnt) => Object.keys(tagEnt).map(key => {\n return {\n key,\n length: Object.keys(tagEnt[key]).length\n };\n })\n);\n","import {createSelector} from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromAnnotations from '../reducers/annotations.reducer';\nimport * as fromTags from './tag.selectors';\nimport * as fromDocument from './document.selectors';\nimport {StoreUtils} from '../store-utils';\nimport moment from 'moment-timezone';\nexport const getAnnotationsSetState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.annotations\n);\n\nexport const getAnnotationEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoEnt\n);\n\nexport const getSet = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoSet\n);\n\nexport const getDocumentIdSetId = createSelector(\n getSet,\n (annoSet) => {\n return {\n documentId: annoSet.documentId,\n annotationSetId: annoSet.id\n };\n }\n);\n\nexport const getAnnotationSet = createSelector(\n getAnnotationEntities,\n getSet,\n (entities, set) => {\n return {\n ...set,\n annotations: Object.keys(entities).map(key => entities[key])\n };\n }\n);\n\nexport const getSelectedAnnotation = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getSelectedAnno\n);\n\nexport const getCommentEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getCommentEnts\n);\n\n\nexport const getPageEntities = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getAnnoPageEnt\n);\n\nexport const getComponentSearchQueries = createSelector(\n getAnnotationsSetState,\n fromAnnotations.commentSearchQ\n);\n\nexport const getComponentSearchText = createSelector(\n getComponentSearchQueries,\n (queries) => queries.commentSearch\n);\n\nexport const getCommentSummaryFilters = createSelector(\n getAnnotationsSetState,\n fromAnnotations.getSummaryFilters\n);\n\nexport const getAnnoPerPage = createSelector(\n fromDocument.getPages,\n getPageEntities,\n fromTags.getFilteredPageEntities,\n (pages, pageEnt, filteredPageEnt) => {\n const isFiltered: boolean = !!Object.keys(filteredPageEnt).length;\n const entities = isFiltered ? filteredPageEnt : pageEnt;\n if (pages) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n arr.push({\n anno: entities[key] ? entities[key] : [],\n styles: pages[key].styles\n });\n });\n return arr;\n }\n }\n);\n\nexport const getCommentsArray = createSelector(\n getCommentEntities,\n fromDocument.getPages,\n getAnnotationEntities,\n fromTags.getTagFiltered,\n (commentEnts, pages, annoEnts, filtered) => {\n if (commentEnts && annoEnts && pages[1]) {\n const isFiltered: boolean = !!Object.keys(filtered).length;\n const com = isFiltered ? filtered : commentEnts;\n return Object.keys(com).map(key => {\n const page = annoEnts[key].page;\n return {\n ...commentEnts[key],\n page,\n pages\n };\n });\n }\n }\n);\n\nexport const getCommentSummary = createSelector(\n getCommentsArray,\n getCommentSummaryFilters,\n (commentSummary = [], filters) => {\n const comments = StoreUtils.filterCommentsSummary(commentSummary, filters.filters);\n if (comments.length) {\n return comments.map((comment) => {\n return {\n page: comment.page,\n user: comment.createdByDetails.forename.concat(' ').concat(comment.createdByDetails.surname),\n date: moment(comment.lastModifiedDate).format('D MMMM YYYY'),\n tags: comment.tags,\n comment: comment.content\n };\n });\n }\n return [''];\n }\n);\n\n\nexport const getFilteredAnnotations = createSelector(\n getAnnotationEntities,\n fromTags.getTagFiltered,\n (annoEnt, filters) => {\n const isFiltered: boolean = !!Object.keys(filters).length;\n const anno = isFiltered ? filters : annoEnt;\n return Object.keys(anno).map(key => annoEnt[key])\n .filter(annotation => annotation.comments && annotation.comments.length > 0);\n }\n);\n","import {\n AfterContentInit, AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n defaultImageOptions, defaultMultimediaOptions,\n defaultPdfOptions,\n defaultUnsupportedOptions,\n ToolbarButtonVisibilityService\n} from './toolbar/toolbar-button-visibility.service';\nimport { AnnotationSet } from './annotations/annotation-set/annotation-set.model';\nimport { ToolbarEventService } from './toolbar/toolbar-event.service';\nimport { AnnotationApiService } from './annotations/services/annotation-api/annotation-api.service';\nimport { ResponseType, ViewerException } from './viewers/viewer-exception.model';\nimport { CommentService } from './annotations/comment-set/comment/comment.service';\nimport 'hammerjs';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from './store/reducers/reducers';\nimport * as fromAnnoSelectors from './store/selectors/annotation.selectors';\nimport * as fromDocumentsSelector from './store/selectors/document.selectors';\nimport * as fromAnnoActions from './store/actions/annotation.actions';\nimport * as fromRedactActions from './store/actions/redaction.actions';\nimport * as fromDocumentActions from './store/actions/document.actions';\n\nenum CoreContentTypes {\n PDF = 'pdf',\n IMAGE = 'image'\n}\n\nenum MultimediaContentTypes {\n MP4 = 'mp4',\n MP3 = 'mp3',\n}\n\nenum ConvertibleContentTypes {\n EXCEL = 'excel',\n WORD = 'word',\n POWERPOINT = 'powerpoint',\n TXT = 'txt',\n RTF = 'rtf'\n}\n\n@Component({\n selector: 'mv-media-viewer',\n templateUrl: './media-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class MediaViewerComponent implements OnChanges, OnDestroy, AfterContentInit, AfterViewChecked {\n\n @ViewChild('viewerRef', {static: false}) viewerRef: ElementRef;\n\n @Input() url;\n @Input() downloadFileName: string;\n @Input() contentType: string;\n\n @Input() showToolbar = true;\n @Input() toolbarButtonOverrides: any = {};\n\n @Input()\n public height: string;\n public viewerHeight: string;\n\n @Input() width = '100%';\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() viewerException = new EventEmitter<ViewerException>();\n @Output() toolbarEventsOutput = new EventEmitter<ToolbarEventService>();\n @Output() unsavedChanges = new EventEmitter<boolean>();\n\n @Input() enableAnnotations = false;\n @Input() annotationApiUrl;\n\n @Input() enableRedactions = false;\n @Input() enableICP = false;\n @Input() multimediaPlayerEnabled = false;\n\n\n @Input() caseId: string;\n\n multimediaContent = false;\n convertibleContent = false;\n unsupportedContent = false;\n\n documentTitle: string;\n showCommentSummary: boolean;\n annotationSet$: Observable<AnnotationSet | {}>;\n hasScrollBar: boolean;\n typeException = false;\n hasDifferentPageSize$: Observable<boolean>;\n documentId: string;\n\n private $subscriptions: Subscription;\n private prevOffset: number;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService,\n private readonly api: AnnotationApiService,\n private readonly commentService: CommentService,\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n if (this.annotationApiUrl) {\n api.annotationApiUrl = this.annotationApiUrl;\n }\n }\n\n ngAfterContentInit() {\n this.annotationSet$ = this.store.pipe(select(fromAnnoSelectors.getAnnotationSet));\n this.hasDifferentPageSize$ = this.store.pipe(select(fromDocumentsSelector.getPageDifference));\n this.setToolbarButtons();\n this.toolbarEventsOutput.emit(this.toolbarEvents);\n this.$subscriptions = this.commentService.getUnsavedChanges()\n .subscribe(changes => this.onCommentChange(changes));\n this.$subscriptions.add(this.toolbarEvents.getShowCommentSummary()\n .subscribe(changes => this.showCommentSummary = changes));\n }\n\n ngAfterViewChecked(): void {\n if (this.height && this.viewerHeight !== this.height) {\n this.viewerHeight = this.height;\n this.cdr.detectChanges();\n return;\n }\n\n if (!this.height) {\n const compOffsetTop = this.elRef.nativeElement.getBoundingClientRect().top;\n const viewerOffsetTop = this.viewerRef.nativeElement.offsetTop;\n const offset = compOffsetTop + viewerOffsetTop;\n\n if (this.prevOffset !== offset) {\n this.viewerHeight = `calc(100vh - ${offset}px)`;\n this.prevOffset = offset;\n this.cdr.detectChanges();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.annotationApiUrl) {\n this.api.annotationApiUrl = this.annotationApiUrl;\n }\n\n if (changes.url) {\n this.toolbarEvents.reset();\n this.commentService.resetCommentSet();\n this.documentId = this.extractDMStoreDocId(this.url);\n this.store.dispatch(new fromDocumentActions.SetDocumentId(this.documentId));\n if (this.enableAnnotations && !(this.multimediaContent || this.unsupportedContent)) {\n this.store.dispatch(new fromAnnoActions.LoadAnnotationSet(this.documentId));\n }\n if (this.enableRedactions && !(this.multimediaContent || this.unsupportedContent)) {\n this.store.dispatch(new fromRedactActions.LoadRedactions(this.documentId));\n }\n if (this.contentType === 'image') {\n this.documentTitle = null;\n }\n }\n\n if (changes.contentType) {\n this.convertibleContent = this.needsConverting();\n this.multimediaContent = this.isMultimedia();\n this.unsupportedContent = !this.isSupported();\n }\n\n this.setToolbarButtons();\n this.detectOs();\n this.typeException = false;\n }\n\n ngOnDestroy() {\n this.$subscriptions.unsubscribe();\n }\n\n needsConverting(): boolean {\n return this.contentType !== null && Object.keys(ConvertibleContentTypes).includes(this.contentType.toUpperCase());\n }\n\n isMultimedia(): boolean {\n return this.contentType !== null && Object.keys(MultimediaContentTypes).includes(this.contentType.toUpperCase());\n }\n\n isSupported(): boolean {\n const supportedTypes = Object.assign({}, MultimediaContentTypes, ConvertibleContentTypes, CoreContentTypes);\n return this.contentType !== null && Object.keys(supportedTypes).includes(this.contentType.toUpperCase());\n }\n\n onMediaLoad(status: ResponseType) {\n this.mediaLoadStatus.emit(status);\n }\n\n setToolbarButtons() {\n if (this.contentType === CoreContentTypes.PDF || this.needsConverting()) {\n this.toolbarButtons.setup({\n ...defaultPdfOptions, showHighlightButton: this.enableAnnotations, showDrawButton: this.enableAnnotations,\n ...this.toolbarButtonOverrides\n });\n } else if (this.contentType === CoreContentTypes.IMAGE) {\n this.toolbarButtons.setup({\n ...defaultImageOptions, showDrawButton: this.enableAnnotations,\n ...this.toolbarButtonOverrides\n });\n } else if (this.isMultimedia()) {\n this.toolbarButtons.setup({\n ...defaultMultimediaOptions,\n ...this.toolbarButtonOverrides\n });\n } else {\n this.toolbarButtons.setup({\n ...defaultUnsupportedOptions,\n ...this.toolbarButtonOverrides\n });\n }\n }\n\n onLoadException(exception: ViewerException) {\n this.viewerException.emit(exception);\n if (!this.isSupported()) {\n this.typeException = false;\n } else {\n this.typeException = true;\n this.contentType = null;\n this.setToolbarButtons();\n }\n }\n\n onCommentChange(changes: boolean) {\n this.unsavedChanges.emit(changes);\n }\n\n onDocumentTitleChange(title: string) {\n this.documentTitle = title;\n }\n\n private extractDMStoreDocId(url: string): string {\n url = url.includes('/documents/') ? url.split('/documents/')[1] : url;\n url = url.includes('/documentsv2/') ? url.split('/documentsv2/')[1] : url;\n return url.replace('/binary', '');\n }\n\n detectOs() {\n this.hasScrollBar = window.navigator.userAgent.indexOf('Win') !== -1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Number Helper Service\n * */\n@Injectable({\n providedIn: 'root'\n})\n\nexport class NumberHelperService {\n constructor() { }\n\n public isNumber(value: string | number): boolean {\n return (\n value !== null\n && value !== undefined\n && value !== ''\n && !isNaN(Number(value.toString()))\n );\n }\n }\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { NumberHelperService } from '../../../lib/shared/util/services/number.helper.service';\n\n@Component({\n selector: 'mv-main-toolbar',\n templateUrl: './main-toolbar.component.html'\n})\nexport class MainToolbarComponent implements OnInit, OnDestroy, AfterViewInit {\n\n @Input() enableAnnotations = false;\n @Input() enableRedactions = false;\n @Input() enableICP = false;\n @Input() contentType = null;\n\n @ViewChild('zoomSelect', {static: false}) public zoomSelect: ElementRef;\n @ViewChild('mvToolbarMain', {static: false}) public mvToolbarMain: ElementRef<HTMLElement>;\n @ViewChild('dropdownMenu', {static: false}) public mvMenuItems: ElementRef<HTMLElement>;\n\n private readonly subscriptions: Subscription[] = [];\n\n public icpEnabled = false;\n public redactionEnabled = false;\n public showCommentsPanel: boolean;\n\n public pageNumber = 1;\n public pageCount = 0;\n public isDropdownMenuOpen = false;\n public dropdownMenuPositions = [\n new ConnectionPositionPair(\n {\n originX: 'end',\n originY: 'bottom'\n },\n {\n overlayX: 'end',\n overlayY: 'top'\n },\n 0,\n 3)\n ];\n\n public zoomScales = [0.1, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2.5, 3, 5];\n\n allButtonsWidth = 0;\n widthRequiredForBtn: { [id: string]: number } = {};\n\n public constructor(\n public readonly toolbarEvents: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private readonly cdr: ChangeDetectorRef,\n private readonly numberHelper: NumberHelperService\n ) {\n }\n\n public ngOnInit() {\n this.subscriptions.push(\n this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.setCurrentPage(pageNumber)),\n this.toolbarEvents.setCurrentPageInputValueSubject.subscribe(pageNumber => this.pageNumber = pageNumber),\n this.toolbarEvents.getPageCount().subscribe(count => this.pageCount = count),\n this.toolbarEvents.icp.enabled.subscribe(enabled => {\n this.icpEnabled = enabled;\n if (this.icpEnabled) {\n this.toolbarEvents.toggleCommentsPanel(!enabled);\n this.toolbarEvents.sidebarOpen.next(false);\n }\n }),\n this.toolbarEvents.redactionMode.subscribe(enabled => {\n this.redactionEnabled = enabled;\n }),\n );\n }\n\n public ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n public ngAfterViewInit() {\n Array.from(this.mvToolbarMain.nativeElement.children).forEach(button => {\n this.allButtonsWidth += button.getBoundingClientRect().width;\n this.widthRequiredForBtn[button.id] = this.allButtonsWidth;\n });\n this.cdr.detectChanges();\n }\n\n @HostListener('window:resize', [])\n public onResize() {\n this.cdr.detectChanges();\n }\n\n public onClickHighlightToggle() {\n this.toolbarEvents.toggleHighlightMode();\n }\n public onClickDrawToggle() {\n this.toolbarEvents.toggleDrawMode();\n }\n\n public toggleSideBar() {\n this.toolbarEvents.sidebarOpen.next(!this.toolbarEvents.sidebarOpen.getValue());\n }\n\n public togglePresentBar() {\n this.toolbarEvents.searchBarHidden.next(true);\n this.toolbarEvents.icp.enable();\n }\n\n public increasePageNumber() {\n this.toolbarEvents.incrementPage(1);\n }\n\n public decreasePageNumber() {\n this.toolbarEvents.incrementPage(-1);\n }\n\n public onPageNumberInputChange(pageNumber: string) {\n if (Number(pageNumber) < 1) {\n pageNumber = '1';\n }\n if (Number(pageNumber) > this.pageCount) {\n pageNumber = this.pageCount.toString();\n }\n\n this.toolbarEvents.setPage(Number.parseInt(pageNumber, 10));\n }\n\n private setCurrentPage(pageNumber: number) {\n this.pageNumber = pageNumber;\n }\n\n public rotate(rotation: number) {\n this.toolbarEvents.rotate(rotation);\n }\n\n public printFile() {\n this.toolbarEvents.print();\n }\n\n public downloadFile() {\n this.toolbarEvents.download();\n }\n\n public zoom(zoomFactor: string) {\n this.toolbarEvents.zoom(+zoomFactor);\n }\n\n public stepZoom(zoomFactor: number) {\n this.toolbarEvents.stepZoom(zoomFactor);\n this.zoomSelect.nativeElement.selected = 'selected';\n }\n\n public toggleCommentsPanel() {\n this.toolbarEvents.toggleCommentsPanel(!this.toolbarEvents.commentsPanelVisible.getValue());\n }\n\n public toggleRedactBar() {\n this.toolbarEvents.toggleRedactionMode();\n }\n\n public toggleGrabNDrag() {\n this.toolbarEvents.toggleGrabNDrag();\n }\n\n public isPdf() {\n return this.contentType === 'pdf';\n }\n\n public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n\n public toggleMoreOptions() {\n this.isDropdownMenuOpen = !this.isDropdownMenuOpen;\n setTimeout(() => {\n if (this.mvMenuItems) {\n this.mvMenuItems.nativeElement.focus();\n }\n }, 100);\n }\n}\n","import { Component, ElementRef, HostListener, OnInit, ViewChild, OnDestroy } from '@angular/core';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { SearchResultsCount, ToolbarEventService } from '../toolbar-event.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'mv-search-bar',\n templateUrl: './search-bar.component.html'\n})\nexport class SearchBarComponent implements OnInit, OnDestroy {\n\n @ViewChild('findInput', {static: true}) findInput: ElementRef<HTMLInputElement>;\n\n highlightAll = true;\n matchCase = false;\n wholeWord = false;\n resultsText = '';\n searchText = '';\n resultCount = 0;\n\n private subscriptions: Subscription[] = [];\n\n public advancedSearchVisible = false;\n\n constructor(\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService\n ) { }\n\n public ngOnInit(): void {\n this.subscriptions.push(\n this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results))\n );\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n public onWindowKeyDown(e: KeyboardEvent): void {\n if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {\n e.preventDefault();\n\n this.toolbarEvents.searchBarHidden.next(false);\n setTimeout(() => this.findInput.nativeElement.focus(), 200);\n }\n }\n\n public searchNext(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: false,\n reset: false\n });\n }\n\n public searchPrev(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: true,\n reset: false\n });\n }\n\n public search(): void {\n this.toolbarEvents.search({\n searchTerm: this.searchText,\n highlightAll: this.highlightAll,\n matchCase: this.matchCase,\n wholeWord: this.wholeWord,\n previous: false,\n reset: true\n });\n }\n\n private setSearchResultsCount(results: SearchResultsCount): void {\n this.resultCount = results.total;\n this.resultsText = this.resultCount > 0\n ? `Found ${results.current} of ${results.total}`\n : 'No results found';\n }\n\n public onEscapeKeyPress(e: KeyboardEvent): void {\n this.toolbarEvents.searchBarHidden.next(true);\n }\n\n public onEnterKeyPress(e: KeyboardEvent): void {\n this.search();\n }\n\n\n public toggleAdvancedSearch(): void {\n this.advancedSearchVisible = !this.advancedSearchVisible;\n }\n\n public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n}\n","import {createSelector} from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromRedactions from '../reducers/redaction.reducer';\nimport * as fromDocument from './document.selectors';\n\nexport const getRedactionState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.redactions\n);\n\nexport const getRedactionPages = createSelector(\n getRedactionState,\n fromRedactions.getPageEnt\n);\n\nexport const getSelected = createSelector(\n getRedactionState,\n fromRedactions.getSelectedRedaction\n);\n\nexport const getRedactedDocumentInfo = createSelector(\n getRedactionState,\n fromRedactions.getRedactedDocInfo\n);\n\nexport const getRedactionEnt = createSelector(\n getRedactionState,\n fromRedactions.getRedactionEnt\n);\n\nexport const getRedactionArray = createSelector(\n getRedactionEnt,\n fromDocument.getDocumentId,\n (ent, documentId) => {\n const redactions = Object.keys(ent).map(key => ent[key]);\n return { redactions, documentId };\n }\n);\n\nexport const getRedactionsPerPage = createSelector(\n fromDocument.getPages,\n getRedactionPages,\n (pages, pageEnt) => {\n if (pages && pageEnt) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n arr.push({\n anno: pageEnt[key] ? pageEnt[key] : [],\n styles: pages[key].styles\n });\n });\n\n return arr;\n }\n }\n);\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromRedactSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Subscription } from 'rxjs';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\n\n@Component({\n selector: 'mv-redaction-toolbar',\n templateUrl: './redaction-toolbar.component.html'\n})\nexport class RedactionToolbarComponent implements OnInit, OnDestroy {\n\n preview = false;\n hasRedactions = false;\n $subscription: Subscription;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n ngOnInit(): void {\n this.$subscription = this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {\n this.hasRedactions = !!redactions.redactions.length;\n });\n }\n\n toggleTextRedactionMode() {\n this.toolbarEventService.highlightModeSubject.next(true);\n }\n\n toggleDrawMode() {\n this.toolbarEventService.drawModeSubject.next(true);\n }\n\n togglePreview() {\n this.preview = !this.preview;\n this.toolbarEventService.toggleRedactionPreview(this.preview);\n }\n\n unmarkAll() {\n this.toolbarEventService.unmarkAll();\n }\n\n redact() {\n this.toolbarEventService.applyRedactionToDocument();\n }\n\n toggleRedactBar() {\n this.toolbarEventService.toggleRedactionMode();\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n}\n","import { createSelector } from '@ngrx/store';\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromIcp from '../reducers/icp.reducer';\n\nexport const getIcpState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.icp\n);\n\nexport const getIcpSession = createSelector(\n getIcpState,\n fromIcp.getIcpSession\n);\n\nexport const getCaseId = createSelector(\n getIcpSession,\n session => session === null ? null : session.caseId\n);\n\nexport const getPresenter = createSelector(\n getIcpState,\n fromIcp.getPresenter\n);\n\nexport const getPresenterName = createSelector(\n getPresenter,\n presenter => presenter === null ? null : presenter.username\n);\n\nexport const getClient = createSelector(\n getIcpState,\n fromIcp.getClient\n);\n\nexport const isPresenter = createSelector(\n getPresenter,\n getClient,\n (presenter, client) => presenter === null ? undefined : presenter.id === client.id // isPresenter is called when = false.\n);\n\nexport const getParticipants = createSelector(\n getIcpState,\n fromIcp.getParticipants\n);\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromIcpSelectors from '../../store/selectors/icp.selectors';\nimport { Subscription } from 'rxjs';\nimport { IcpState } from '../../icp/icp.interfaces';\n\n@Component({\n selector: 'mv-icp-toolbar',\n templateUrl: './icp-toolbar.component.html'\n})\nexport class IcpToolbarComponent implements OnInit, OnDestroy {\n\n presenterName: string;\n isPresenter: boolean;\n\n private $subscription: Subscription;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n private store: Store<IcpState>) {}\n\n ngOnInit() {\n this.$subscription = this.store.pipe(select(fromIcpSelectors.isPresenter))\n .subscribe(isPresenter => this.isPresenter = isPresenter);\n this.$subscription.add(this.store.pipe(select(fromIcpSelectors.getPresenterName))\n .subscribe(name => this.presenterName = name));\n }\n\n ngOnDestroy() {\n this.$subscription.unsubscribe();\n }\n\n present() {\n this.toolbarEventService.icp.becomePresenter();\n }\n\n stopPresenting() {\n this.toolbarEventService.icp.stopPresenting();\n }\n\n leaveIcpSession() {\n this.toolbarEventService.icp.leaveSession();\n }\n\n showParticipantsList() {\n this.toolbarEventService.toggleParticipantsList(!this.toolbarEventService.icp.participantsListVisible.getValue());\n }\n}\n"," import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MainToolbarComponent } from './main-toolbar/main-toolbar.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { FormsModule } from '@angular/forms';\nimport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nimport { ToolbarEventService } from './toolbar-event.service';\nimport { RedactionToolbarComponent } from './redaction-toolbar/redaction-toolbar.component';\nimport { IcpToolbarComponent } from './icp-toolbar/icp-toolbar.component';\nexport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nexport { ToolbarEventService } from './toolbar-event.service';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RouterModule } from '@angular/router';\n\n\n@NgModule({\n declarations: [\n SearchBarComponent,\n MainToolbarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent\n ],\n providers: [\n ToolbarButtonVisibilityService,\n ToolbarEventService\n ],\n exports: [\n MainToolbarComponent,\n SearchBarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n RouterModule\n ]\n})\nexport class ToolbarModule { }\n","import { Component, EventEmitter, Input, Output, ViewChild, ElementRef } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Annotation } from './annotation.model';\nimport { Rectangle } from './rectangle/rectangle.model';\nimport moment from 'moment-timezone';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromActions from '../../../store/actions/annotation.actions';\nimport {SelectionAnnotation} from '../../models/event-select.model';\nimport {ToolbarEventService} from '../../../toolbar/toolbar-event.service';\nimport { Comment } from '../../comment-set/comment/comment.model';\n\n@Component({\n selector: 'mv-annotation',\n templateUrl: './annotation-view.component.html'\n})\nexport class AnnotationViewComponent { // todo rename this to selection vew c\n\n @Input() set annotation(value) {\n this.anno = {...value};\n }\n anno: Annotation;\n selected: boolean;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() set selectedAnnoId(selectedId: { annotationId: string }) {\n if (selectedId) {\n const id = this.anno.id || this.anno.redactionId; // todo make it unique\n this.selected = selectedId.annotationId ? (selectedId.annotationId === id) : false;\n }\n }\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n @Output() update = new EventEmitter<Annotation>();\n @Output() delete = new EventEmitter<Annotation>();\n @Output() annotationClick = new EventEmitter<SelectionAnnotation>();\n\n @ViewChild('container', {static: false}) container: ElementRef;\n\n constructor(\n private readonly toolbarEvents: ToolbarEventService,\n private store: Store<fromStore.AnnotationSetState>\n ) {}\n\n public onSelect() {\n const annotationId = this.anno.id || this.anno.redactionId;\n this.annotationClick.emit({ annotationId, editable: false, selected: true });\n }\n\n public onRectangleUpdate(rectangle: Rectangle) {\n const annotation = {...this.anno};\n annotation.rectangles = annotation.rectangles.filter(r => r.id !== rectangle.id);\n annotation.rectangles.push(rectangle);\n this.update.emit(annotation);\n }\n\n public deleteHighlight() {\n this.delete.emit(this.anno);\n }\n\n public addOrEditComment() {\n if (this.anno.comments.length === 0) {\n const comment: Comment = {\n annotationId: this.anno.id,\n content: '',\n createdBy: this.anno.createdBy,\n createdByDetails: undefined,\n createdDate: moment.utc().tz('Europe/London').toISOString(),\n id: uuid(),\n lastModifiedBy: '',\n lastModifiedByDetails: undefined,\n lastModifiedDate: '',\n tags: [],\n page: null,\n pages: {},\n pageHeight: null,\n selected: false,\n editable: false\n };\n this.store.dispatch(new fromActions.AddOrEditComment(comment));\n\n }\n this.selected = true;\n this.annotationClick.emit({ annotationId: this.anno.id, editable: true, selected: true });\n this.toolbarEvents.toggleCommentsPanel(true);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Annotation } from './annotation-view/annotation.model';\nimport { Observable } from 'rxjs';\nimport { SelectionAnnotation } from '../models/event-select.model';\nimport { CommentService } from '../comment-set/comment/comment.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromActions from '../../store/actions/annotation.actions';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\n\n@Component({\n selector: 'mv-annotation-set',\n templateUrl: './annotation-set.component.html'\n})\nexport class AnnotationSetComponent implements OnInit {\n\n @Input() page: number;\n @Input() annotations: Annotation[] = [];\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n selectedAnnotation$: Observable<SelectionAnnotation>;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService\n ) {}\n\n ngOnInit(): void {\n this.selectedAnnotation$ = this.store.pipe(select(fromSelectors.getSelectedAnnotation));\n }\n\n public onAnnotationUpdate(annotation: Annotation) {\n this.store.dispatch(new fromActions.SaveAnnotation(annotation));\n }\n\n public onAnnotationDelete(annotation: Annotation) {\n if (annotation.comments.length > 0) {\n this.commentService.updateUnsavedCommentsStatus(annotation, false);\n }\n this.store.dispatch(new fromActions.DeleteAnnotation(annotation.id));\n }\n\n selectAnnotation(selectedAnnotation: SelectionAnnotation) {\n this.store.dispatch(new fromActions.SelectedAnnotation(selectedAnnotation));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\nimport moment from 'moment-timezone';\n\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromSelectors from '../../../../store/selectors/annotation.selectors';\nimport * as fromActions from '../../../../store/actions/annotation.actions';\nimport { Annotation } from '../../annotation-view/annotation.model';\n\n@Injectable()\nexport class HighlightCreateService {\n\n constructor(private toolBarEvents: ToolbarEventService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n saveAnnotation(rectangles: Rectangle[], page: number) {\n this.store.pipe(select(fromSelectors.getDocumentIdSetId), take(1)).subscribe(anoSetDocId => {\n const anno: Annotation = {\n id: uuid(),\n color: 'FFFF00',\n comments: [],\n page: page,\n rectangles: rectangles,\n type: 'highlight',\n ...anoSetDocId,\n createdBy: '',\n createdByDetails: undefined,\n createdDate: moment.utc().tz('Europe/London').toISOString(),\n lastModifiedBy: '',\n lastModifiedByDetails: undefined,\n lastModifiedDate: '',\n tags: [],\n };\n this.store.dispatch(new fromActions.SaveAnnotation(anno));\n });\n }\n\n applyRotation(pageHeight, pageWidth, offsetHeight, offsetWidth, offsetTop, offsetLeft, rotate, zoom ) {\n const { x, y, width, height } = {\n x: +(offsetLeft / zoom).toFixed(2),\n y: +(offsetTop / zoom).toFixed(2),\n width: +(offsetWidth / zoom).toFixed(2),\n height: +(offsetHeight / zoom).toFixed(2)\n };\n const rectangle = { x, y, width, height };\n switch (rotate) {\n case 90:\n rectangle.width = height;\n rectangle.height = width;\n rectangle.x = y;\n rectangle.y = +(pageWidth / zoom - x - width).toFixed(2);\n break;\n case 180:\n rectangle.x = +(pageWidth / zoom - x - width).toFixed(2);\n rectangle.y = +(pageHeight / zoom - y - height).toFixed(2);\n break;\n case 270:\n rectangle.width = height;\n rectangle.height = width;\n rectangle.x = +(pageHeight / zoom - y - height).toFixed(2);\n rectangle.y = x;\n break;\n }\n return rectangle as any;\n }\n\n resetHighlight() {\n window.getSelection().removeAllRanges();\n this.toolBarEvents.highlightModeSubject.next(false);\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Rectangle } from './rectangle.model';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HighlightCreateService } from '../../annotation-create/highlight-create/highlight-create.service';\n\n@Component({\n selector: 'mv-anno-rectangle',\n templateUrl: './rectangle.component.html'\n})\nexport class RectangleComponent implements OnChanges, AfterViewInit, OnDestroy {\n\n @Input() color: String;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() editable: boolean;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n @Output() select = new EventEmitter<Rectangle>();\n @Output() update = new EventEmitter<Rectangle>();\n\n @ViewChild('rectElement', {static: false}) viewRect: ElementRef;\n\n private subscriptions: Subscription[] = [];\n _selected: boolean;\n enableGrabNDrag = false;\n\n height: number;\n width: number;\n top: number;\n left: number;\n\n _annoRect: Rectangle;\n @Input()\n set annoRect(annoRect: Rectangle) {\n this._annoRect = { ...annoRect };\n this.height = +(annoRect.height * this.zoom).toFixed(2);\n this.width = +(annoRect.width * this.zoom).toFixed(2);\n this.left = +(annoRect.x * this.zoom).toFixed(2);\n this.top = +(annoRect.y * this.zoom).toFixed(2);\n }\n\n get annoRect() {\n return this._annoRect;\n }\n\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly highlightService: HighlightCreateService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.rotate) {\n this.adjustForRotation(this.rotate);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag)\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.filter(subscription => !subscription.closed)\n .forEach(subscription => subscription.unsubscribe());\n }\n\n @Input()\n set selected(selected: boolean) {\n this._selected = selected;\n if (this._selected && this.viewRect) {\n this.viewRect.nativeElement.focus();\n }\n }\n\n get selected() {\n return this._selected;\n }\n\n onClick() {\n this.select.emit(this.annoRect);\n }\n\n onUpdate(viewRect: any) {\n const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = viewRect;\n if (this.hasRectangleChanged(viewRect)) {\n let rectangle = this.highlightService\n .applyRotation(this.pageHeight, this.pageWidth, offsetHeight, offsetWidth, offsetTop, offsetLeft, this.rotate, this.zoom);\n rectangle = { ...this.annoRect, ...rectangle };\n this.update.emit({ ...rectangle });\n }\n }\n\n adjustForRotation(rotation: number) {\n const { top, left, height, width } = this;\n switch (rotation) {\n case 90:\n this.width = height;\n this.height = width;\n this.left = this.pageWidth - top - height;\n this.top = left;\n break;\n case 180:\n this.left = this.pageWidth - left - width;\n this.top = this.pageHeight - top - height;\n break;\n case 270:\n this.width = height;\n this.height = width;\n this.left = top;\n this.top = this.pageHeight - left - width;\n break;\n }\n }\n\n hasRectangleChanged(viewRect): boolean {\n return this.left !== viewRect.offsetLeft ||\n this.top !== viewRect.offsetTop ||\n this.width !== viewRect.offsetWidth ||\n this.height !== viewRect.offsetHeight;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TagsModel } from '../../models/tags.model';\n\n@Injectable()\nexport class TagsServices {\n\n public tagItems: {[id: string]: TagsModel[]};\n\n constructor(private http: HttpClient) {}\n\n public getAllTags(createdBy: string): Observable<TagsModel[]> {\n const url = `/em-anno/tags/${createdBy}`;\n return this.http.get<TagsModel[]>(url);\n }\n\n // @TODO: Move everything below this to NgRx store\n getNewTags(annoid: string): TagsModel[] {\n return this.tagItems ? this.tagItems[annoid] : [];\n }\n\n updateTagItems(items: Array<TagsModel>, annoId: string) {\n const snakeCased = items.map(item => {\n return {\n ...item,\n name: this.snakeCase(item.name)\n };\n });\n\n this.tagItems = {\n ...this.tagItems,\n [annoId]: snakeCased\n };\n }\n\n private snakeCase = string => {\n // transform string_to_snake_case\n return string.replace(/ +/g, ' ') // find space\n .split(/ |\\B(?=[A-Z])/) // split it into array\n .map(word => word.toLowerCase()) // transform to lover case\n .join('_'); // trun array into sting using _\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {Comment} from './comment.model';\nimport {User} from '../../models/user.model';\nimport {Rectangle} from '../../annotation-set/annotation-view/rectangle/rectangle.model';\nimport {SelectionAnnotation} from '../../models/event-select.model';\nimport {CommentService} from './comment.service';\nimport {TagsModel} from '../../models/tags.model';\nimport {TagsServices} from '../../services/tags/tags.services';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromSelector from '../../../store/selectors/annotation.selectors';\nimport { AnnotationSet } from '../../annotation-set/annotation-set.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\n\n@Component({\n selector: 'mv-anno-comment',\n templateUrl: './comment.component.html'\n})\nexport class CommentComponent implements OnInit, OnDestroy, AfterContentInit {\n\n CHAR_LIMIT = 5000;\n lastUpdate: string;\n originalComment: string;\n fullComment: string;\n author: User;\n createdBy: string;\n editor: User;\n _comment: Comment;\n _editable: boolean;\n _rectangle;\n totalPrevPagesHeight = 0;\n rectTop;\n rectLeft;\n pageHeight: number;\n hasUnsavedChanges = false;\n selected: boolean;\n searchString: string;\n public tagItems: TagsModel[];\n\n\n @Output() commentClick = new EventEmitter<SelectionAnnotation>();\n @Output() renderComments = new EventEmitter<Comment>();\n @Output() delete = new EventEmitter<Comment>();\n @Output() updated = new EventEmitter<{comment: Comment, tags: TagsModel[]}>();\n @Output() changes = new EventEmitter<boolean>();\n @Input() rotate = 0;\n @Input() zoom = 1;\n @Input() index: number;\n @Input() page: number;\n\n @ViewChild('form', {static: false}) form: ElementRef;\n @ViewChild('editableComment', {static: false}) editableComment: ElementRef<HTMLElement>;\n\n private subscriptions: Subscription;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService,\n private tagsServices: TagsServices\n ) {}\n\n\n ngOnInit(): void {\n this.subscriptions = this.store.select(fromSelector.getComponentSearchText)\n .pipe(distinctUntilChanged()).subscribe(searchString => this.searchString = searchString);\n this.reRenderComments();\n }\n\n ngAfterContentInit(): void {\n if (this.tagItems && this.tagItems.length) {\n this.tagsServices.updateTagItems(this.tagItems, this._comment.annotationId);\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @Input()\n set comment(comment: Comment) {\n this._comment = {...comment};\n this.page = this._comment.page;\n this.lastUpdate = comment.lastModifiedDate ? comment.lastModifiedDate : comment.createdDate;\n this.author = comment.createdByDetails;\n this.createdBy = comment.createdBy;\n this.editor = comment.lastModifiedByDetails;\n this.originalComment = comment.content;\n this.fullComment = this.originalComment;\n this.selected = this._comment.selected;\n this._editable = this._comment.editable;\n this.tagItems = this._comment.tags;\n const pageMarginBottom = 10;\n this.totalPrevPagesHeight = 0;\n for (let i = 0; i < this.page - 1; i++) {\n const height = this._comment.pages[i + 1] ? this._comment.pages[i + 1].styles.height : undefined;\n if (height) {\n this.totalPrevPagesHeight += height + pageMarginBottom;\n }\n }\n\n }\n\n get comment() {\n return this._comment;\n }\n\n @Input()\n set annotation(annotation: Annotation) {\n this._rectangle = annotation.rectangles\n .reduce((prev, current) => prev.y < current.y ? prev : current);\n const actualHeight = this._comment.pages[this.page].styles.height / this.zoom;\n switch (this.rotate) {\n case 90: this.rectTop = this._rectangle.x;\n break;\n case 180: this.rectTop = actualHeight - (this._rectangle.y + this._rectangle.height);\n break;\n case 270: this.rectTop = actualHeight - (this._rectangle.x + this._rectangle.width);\n break;\n default: this.rectTop = this._rectangle.y;\n }\n this.rectLeft = this._rectangle.x;\n }\n\n get editable(): boolean {\n return this._editable;\n }\n\n onCommentChange(updatedComment) {\n this.hasUnsavedChanges =\n this.originalComment.substring(0, this.CHAR_LIMIT) !== updatedComment.substring(0, this.CHAR_LIMIT);\n this.commentService.onCommentChange(this.hasUnsavedChanges);\n }\n\n deleteOrCancel() {\n if (!this.editable) {\n this.delete.emit(this._comment);\n } else {\n this.hasUnsavedChanges = false;\n this._editable = false;\n this.fullComment = this.originalComment;\n this.changes.emit(false);\n if (!this.author && !this.fullComment) {\n this.delete.emit(this._comment);\n }\n }\n }\n\n public editOrSave() {\n if (!this.editable) {\n this._editable = true;\n } else {\n this._comment.content = this.fullComment.substring(0, this.CHAR_LIMIT);\n const tags = this.tagsServices.getNewTags(this._comment.annotationId);\n const payload = {\n comment: this._comment,\n tags\n };\n this.updated.emit(payload);\n this.hasUnsavedChanges = false;\n this._editable = false;\n this.changes.emit(false);\n }\n }\n\n onCommentClick() {\n if (!this.selected) {\n this.selected = true;\n this._editable = false;\n this.commentClick.emit({ annotationId: this._comment.annotationId, editable: this._editable, selected: true });\n }\n }\n\n reRenderComments() {\n this.renderComments.emit(this._comment);\n }\n\n get commentTop(): number {\n return this.totalPrevPagesHeight + (this.rectTop * this.zoom);\n }\n\n\n get height() {\n return this.form.nativeElement.getBoundingClientRect().height / this.zoom;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { Rectangle } from '../annotation-view/rectangle/rectangle.model';\n\n@Component({\n selector: 'mv-ctx-toolbar',\n templateUrl: './ctx-toolbar.component.html'\n})\nexport class CtxToolbarComponent implements OnChanges {\n\n readonly defaultHeight;\n readonly defaultWidth;\n\n @Input() zoom;\n @Input() rotate;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n\n @Input() canHighlight: boolean;\n @Input() canBookmark: boolean;\n @Input() canComment: boolean;\n @Input() canDelete: boolean;\n\n @Output() createHighlightEvent = new EventEmitter();\n @Output() deleteHighlightEvent = new EventEmitter();\n @Output() addOrEditCommentEvent = new EventEmitter();\n @Output() createBookmarkEvent = new EventEmitter<Rectangle>();\n\n rectangle: Rectangle;\n _rectangles: Rectangle[];\n top: number;\n left: number;\n\n constructor() {\n this.defaultHeight = 70;\n this.defaultWidth = 300;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.setRectangle();\n this.top = this.popupTop();\n this.left = this.popupLeft();\n }\n\n @Input() set rectangles(rectangles: Rectangle[]) {\n if (rectangles) {\n this._rectangles = rectangles;\n this.setRectangle();\n }\n }\n\n get rectangles() {\n return this._rectangles;\n }\n\n createHighlight() {\n this.createHighlightEvent.emit();\n this.rectangle = undefined;\n }\n\n deleteHighlight() {\n this.deleteHighlightEvent.emit();\n }\n\n addOrEditComment() {\n this.addOrEditCommentEvent.emit();\n }\n\n createBookmark() {\n this.createBookmarkEvent.emit(this.rectangle);\n this.rectangle = undefined;\n }\n\n setRectangle() {\n const rectangle = this.rectangles\n .reduce((prev, current) => prev.y < current.y ? prev : current);\n this.rectangle = { ...rectangle };\n switch (this.rotate) {\n case 90:\n this.rectangle.width = rectangle.height;\n this.rectangle.height = rectangle.width;\n this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.y - rectangle.height;\n this.rectangle.y = rectangle.x;\n break;\n case 180:\n this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.x - rectangle.width;\n this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.y - rectangle.height;\n break;\n case 270:\n this.rectangle.width = rectangle.height;\n this.rectangle.height = rectangle.width;\n this.rectangle.x = rectangle.y;\n this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.x - rectangle.width;\n break;\n }\n }\n\n popupTop() {\n const popupTop = this.rectangle.y * this.zoom - this.defaultHeight;\n return popupTop <= 0 ? this.defaultHeight : popupTop;\n }\n\n popupLeft() {\n const popupLeft = (this.rectangle.x + (this.rectangle.width / 2)) * this.zoom - (this.defaultWidth / 2);\n if (popupLeft <= 0) {\n return 0;\n } else if (popupLeft >= this.pageWidth - this.defaultWidth) {\n return this.pageWidth - this.defaultWidth;\n } else {\n return popupLeft;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CommentComponent } from './comment/comment.component';\n\n@Injectable()\nexport class CommentSetRenderService {\n\n redrawComponents(commentComponents: CommentComponent[], pageHeights: any[], rotate: number, zoom: number) {\n let prevComment: CommentComponent;\n this.sortComponents(commentComponents, pageHeights, rotate, zoom).forEach((comment: CommentComponent) => {\n this.adjustIfOverlapping(comment, prevComment, zoom);\n prevComment = comment;\n });\n }\n\n sortComponents(commentComponents: CommentComponent[], pageHeights: any[], rotate: number, zoom: number) {\n return commentComponents.sort((a: CommentComponent, b: CommentComponent) => {\n a.rectTop = this.top(a._rectangle, pageHeights[a.page - 1], rotate, zoom);\n b.rectTop = this.top(b._rectangle, pageHeights[b.page - 1], rotate, zoom);\n return this.processSort(a, b);\n });\n }\n\n private adjustIfOverlapping(comment: CommentComponent, prevComment: CommentComponent, zoom: number): void {\n if (prevComment) {\n const endOfPrevComment = prevComment.commentTop + this.height(prevComment);\n if (comment.commentTop <= endOfPrevComment) {\n comment.rectTop = (endOfPrevComment - comment.totalPrevPagesHeight) / zoom;\n }\n }\n }\n\n private processSort(a: CommentComponent, b: CommentComponent): number {\n if (this.onSameLine(a, b)) {\n return a.rectLeft >= b.rectLeft ? 1 : -1;\n }\n return a.commentTop >= b.commentTop ? 1 : -1;\n }\n\n private onSameLine(a: CommentComponent, b: CommentComponent): boolean {\n return this.difference(a.commentTop, b.commentTop) === 0;\n }\n\n private top(rectangle: { x, y, height, width }, height: number, rotate: number, zoom: number) {\n const actualHeight = height / zoom;\n switch (rotate) {\n case 90: return rectangle.x;\n case 180: return actualHeight - (rectangle.y + rectangle.height);\n case 270: return actualHeight - (rectangle.x + rectangle.width);\n default: return rectangle.y;\n }\n }\n\n private height(element: any) {\n return element.form.nativeElement.getBoundingClientRect().height;\n }\n\n private difference(a: number, b: number): number { return Math.abs(a - b); }\n}\n","import {\n Component,\n ElementRef,\n Input, OnChanges,\n OnDestroy,\n OnInit,\n QueryList, SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\n\nimport { AnnotationSet } from '../annotation-set/annotation-set.model';\nimport { Annotation } from '../annotation-set/annotation-view/annotation.model';\nimport { Comment } from './comment/comment.model';\nimport { CommentComponent } from './comment/comment.component';\nimport { CommentService } from './comment/comment.service';\nimport { CommentSetRenderService } from './comment-set-render.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromActions from '../../store/actions/annotation.actions';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\nimport { TagsModel } from '../models/tags.model';\nimport { SelectionAnnotation } from '../models/event-select.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comment-set',\n templateUrl: './comment-set.component.html',\n })\nexport class CommentSetComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input() annotationSet: AnnotationSet;\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() height: number;\n @Input() pageHeights = [];\n @Input() contentScrollTop: number;\n\n comments: Comment[];\n tags: TagsModel[];\n private subscriptions: Subscription[] = [];\n public comments$: Observable<Annotation[]>;\n public annoEntities$: Observable<{ [id: string]: Annotation }>;\n\n @ViewChild('container', {static: false}) container: ElementRef<HTMLDivElement>;\n @ViewChild('panel', {static: false}) panel: ElementRef<HTMLDivElement>;\n @ViewChildren('commentComponent') commentComponents: QueryList<CommentComponent>;\n\n showCommentsPanel: boolean;\n\n constructor(private store: Store<fromStore.AnnotationSetState>,\n private readonly commentService: CommentService,\n private readonly renderService: CommentSetRenderService,\n private readonly toolbarEvents: ToolbarEventService) {\n this.clearSelection();\n }\n\n ngOnInit() {\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentsArray));\n this.annoEntities$ = this.store.pipe(select(fromSelectors.getAnnotationEntities));\n this.subscriptions.push(\n this.toolbarEvents.commentsPanelVisible.subscribe(toggle => {\n this.redrawComments();\n this.showCommentsPanel = toggle;\n })\n );\n this.subscriptions.push(this.toolbarEvents.rotateSubject.subscribe(rotate => this.rotateDocument()));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.annotationSet) {\n this.commentService.setCommentSet(this);\n }\n if (changes.contentScrollTop) {\n if (this.container) {\n this.container.nativeElement.scrollTo(0, this.contentScrollTop);\n }\n }\n }\n\n ngOnDestroy() {\n if (this.subscriptions.length > 0) {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n }\n\n public onSelect(annotationId: SelectionAnnotation) {\n this.store.dispatch(new fromActions.SelectedAnnotation(annotationId));\n }\n\n public onCommentDelete(comment: Comment) {\n const annotation = this.annotationSet.annotations.find(anno => anno.id === comment.annotationId);\n const comments = [];\n const annot = {\n ...annotation,\n comments\n };\n this.onAnnotationUpdate(annot);\n this.redrawComments();\n }\n\n redrawComments() {\n setTimeout(() => {\n const componentList: CommentComponent[] = this.commentComponents.map(comment => comment);\n this.renderService.redrawComponents(componentList, this.pageHeights, this.rotate, this.zoom);\n }, 0);\n }\n\n private rotateDocument() {\n if (this.panel) {\n this.panel.nativeElement.style.height = '0';\n }\n }\n\n public onCommentUpdate(payload: {comment: Comment, tags: TagsModel[]} ) {\n const annotation = this.annotationSet.annotations.find(anno => anno.id === payload.comment.annotationId);\n const comments = [payload.comment];\n const tags = payload.tags;\n const annot = {\n ...annotation,\n comments,\n tags\n };\n this.onAnnotationUpdate(annot);\n }\n\n public onAnnotationUpdate(annotation: Annotation) {\n this.store.dispatch(new fromActions.SaveAnnotation(annotation));\n }\n\n onContainerClick(e) {\n if (e.path && e.path[0] === this.panel.nativeElement) {\n this.clearSelection();\n }\n }\n\n clearSelection() {\n this.store.dispatch(new fromActions.SelectedAnnotation({ annotationId: '', editable: false, selected: false}));\n }\n\n allCommentsSaved() {\n this.commentService.allCommentsSaved();\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[mvTextAreaAutoExpand]'\n})\nexport class TextareaAutoExpandDirective implements AfterContentChecked {\n\n constructor(private el: ElementRef) {\n }\n\n ngAfterContentChecked(): void {\n this.adjustHeight();\n }\n\n @HostListener('input') onMouseDown() {\n this.adjustHeight();\n }\n\n adjustHeight(): void {\n const nativeElement = this.el.nativeElement;\n nativeElement.style.overflow = 'hidden';\n nativeElement.style.height = 'auto';\n nativeElement.style.height = nativeElement.scrollHeight - 5 + 'px';\n }\n\n}\n","import {Component, Input, ViewChild, ElementRef, OnInit, OnDestroy} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport {select, Store} from '@ngrx/store';\n\nimport { PrintService } from '../../print.service';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport * as fromSelectors from '../../store/selectors/annotation.selectors';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromAnnoActions from '../../store/actions/annotation.actions';\nimport * as fromTagSelectors from '../../store/selectors/tag.selectors';\n\n@Component({\n selector: 'mv-comments-summary',\n templateUrl: './comments-summary.component.html',\n})\nexport class CommentsSummaryComponent implements OnInit, OnDestroy {\n\n @Input() title: string;\n @Input() contentType: string;\n @ViewChild('outerContainer', {static: false}) container: ElementRef;\n @ViewChild('commentContainer', {static: false}) commentsTable: ElementRef;\n public comments$: Observable<any>;\n public filtersFg: FormGroup;\n private $subscriptions: Subscription;\n allTags$: Observable<{key: string; length: number}[]>;\n showFilters = false;\n hasFilter = false;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly printService: PrintService,\n private readonly toolbarEvents: ToolbarEventService,\n private fb: FormBuilder\n ) {}\n\n ngOnInit(): void {\n this.filtersFg = this.fb.group({\n dateRangeFrom: new FormGroup({\n day: new FormControl(''),\n month: new FormControl(''),\n year: new FormControl('')\n }),\n dateRangeTo: new FormGroup({\n day: new FormControl(''),\n month: new FormControl(''),\n year: new FormControl('')\n }),\n tagFilters: this.fb.group({}),\n });\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentSummary));\n this.buildCheckBoxForm();\n }\n\n ngAfterViewInit() {\n this.container.nativeElement.focus();\n }\n\n buildCheckBoxForm() {\n this.filtersFg.reset();\n const checkboxes = <FormGroup>this.filtersFg.get('tagFilters');\n const filters$ = this.store.pipe(select(fromSelectors.getCommentSummaryFilters));\n this.allTags$ = this.store.pipe(select(fromTagSelectors.getAllTagsArr));\n this.$subscriptions = combineLatest([this.allTags$, filters$]).subscribe(([tags, filters]) => {\n this.hasFilter = filters.hasFilter;\n tags.forEach((val) => {\n const checkBoxValue = (filters.filters.tagFilters &&\n filters.filters.tagFilters.hasOwnProperty(val.key)) ?\n filters.filters.tagFilters[val.key] : false;\n checkboxes.addControl(val.key, new FormControl(checkBoxValue));\n });\n this.filtersFg.updateValueAndValidity();\n });\n }\n\n onClearFilters() {\n this.store.dispatch(new fromAnnoActions.ClearCommentSummaryFilters());\n this.buildCheckBoxForm();\n }\n\n onFilter() {\n const { value } = this.filtersFg;\n const hasDateFrom = (value.dateRangeFrom.year && value.dateRangeFrom.month && value.dateRangeFrom.day);\n const hasDateTo = (value.dateRangeTo.year && value.dateRangeTo.month && value.dateRangeTo.day);\n const dateRangeFrom = hasDateFrom ?\n new Date(value.dateRangeFrom.year, value.dateRangeFrom.month - 1, value.dateRangeFrom.day).getTime() : null;\n const dateRangeTo = hasDateTo ?\n new Date(value.dateRangeTo.year, value.dateRangeTo.month - 1, value.dateRangeTo.day).getTime() : null;\n this.store.dispatch(new fromAnnoActions.ApplyCommentSymmaryFilter({...value, dateRangeFrom, dateRangeTo}));\n }\n\n onFiltersToggle() {\n this.showFilters = !this.showFilters;\n }\n\n public onClose(): void {\n this.toolbarEvents.toggleCommentsSummary(false);\n }\n\n public onPrint(): void {\n this.printService.printElementNatively(this.commentsTable.nativeElement, 1000, 900);\n }\n\n navigateToPage(pageNumber: number) {\n if (this.contentType === 'pdf') {\n this.toolbarEvents.setPage(pageNumber);\n }\n this.toolbarEvents.toggleCommentsSummary(false);\n this.toolbarEvents.toggleCommentsPanel(true);\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport uuid from 'uuid';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { HighlightCreateService } from '../highlight-create/highlight-create.service';\n\n@Component({\n selector: 'mv-box-highlight-create',\n templateUrl: './box-highlight-create.component.html',\n})\nexport class BoxHighlightCreateComponent implements OnInit, OnDestroy {\n\n @Input() page: number;\n @Input() pageHeight: number;\n @Input() pageWidth: number;\n @Input() rotate: number;\n @Input() zoom: number;\n @Input() container: { top: number, left: number };\n\n @Output() saveSelection = new EventEmitter<{ rectangles: Rectangle[], page: number }>();\n\n @ViewChild('boxHighlight', {static: false}) highlight: ElementRef;\n\n drawStartX = -1;\n drawStartY = -1;\n top: number;\n left: number;\n height: number;\n width: number;\n display: string;\n drawMode: boolean;\n defaultHeight: string;\n defaultWidth: string;\n position: string;\n backgroundColor = 'none';\n\n private subscriptions: Subscription[] = [];\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly highlightService: HighlightCreateService) {}\n\n ngOnInit(): void {\n this.subscriptions = [\n this.toolbarEvents.drawModeSubject.subscribe(drawMode => {\n this.defaultHeight = drawMode ? '100%' : '0px';\n this.defaultWidth = drawMode ? '100%' : '0px';\n })\n ];\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n initHighlight({ offsetX, offsetY }) {\n this.position = 'absolute';\n this.backgroundColor = 'yellow';\n this.drawStartX = offsetX;\n this.drawStartY = offsetY;\n\n this.display = 'block';\n this.height = 50;\n this.width = 50;\n\n this.top = this.drawStartY;\n this.left = this.drawStartX;\n\n switch (this.rotate) {\n case 90:\n this.top = this.drawStartY - this.height;\n break;\n case 180:\n this.top = this.drawStartY - this.height;\n this.left = this.drawStartX - this.width;\n break;\n case 270:\n this.left = this.drawStartX - this.width;\n break;\n }\n }\n\n updateHighlight({ offsetX, offsetY }) {\n if (this.drawStartX > 0 && this.drawStartY > 0) {\n this.height = Math.abs(offsetY - this.drawStartY);\n this.width = Math.abs(offsetX - this.drawStartX);\n this.top = Math.min(offsetY, this.drawStartY);\n this.left = Math.min(offsetX, this.drawStartX);\n }\n }\n\n createHighlight() {\n if (this.height / this.zoom > 5 || this.width / this.zoom > 5) {\n let rectangle = this.highlightService\n .applyRotation(this.pageHeight, this.pageWidth, this.height, this.width, this.top, this.left, this.rotate, this.zoom);\n rectangle = { id: uuid(), ...rectangle } as any;\n this.saveSelection.emit({ rectangles: [rectangle], page: this.page });\n this.resetHighlight();\n }\n }\n\n private resetHighlight() {\n this.drawStartX = -1;\n this.drawStartY = -1;\n this.display = 'none';\n this.width = 0;\n this.height = 0;\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromTagSelectors from '../../../store/selectors/tag.selectors';\nimport * as fromAnnoSelector from '../../../store/selectors/annotation.selectors';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comment-set-header',\n templateUrl: './comment-set-header.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentSetHeaderComponent implements OnInit, OnDestroy {\n\n @Input() public showCommentSummary: boolean;\n @Output() public readonly showCommentSummaryDialog = new EventEmitter();\n\n tabs: {isFiltered?: boolean; label: string}[] = [];\n tabSelected = '';\n isFiltered: boolean;\n navigationList: Annotation[];\n $subscriptions: Subscription;\n\n constructor(private store: Store<fromStore.State>,\n public toolbarEvents: ToolbarEventService) {}\n\n ngOnInit(): void {\n const tagFilter$ = this.store.pipe(select(fromTagSelectors.getTagFilters));\n const filteredAnnotation$ = this.store.pipe(select(fromAnnoSelector.getFilteredAnnotations));\n\n this.$subscriptions = combineLatest([tagFilter$, filteredAnnotation$]).subscribe(([formData, filteredAnno]) => {\n this.navigationList = filteredAnno;\n this.tabs = this.navigationList.length > 0 ?\n [{label: 'comments'}, {label: 'filter'}, {label: 'search'}] : [{label: 'comments'}];\n this.isFiltered = !formData.length;\n this.tabs = [...this.tabs].map((tab) => {\n return !this.isFiltered && tab.label === 'filter' ? {...tab, isFiltered: true} : {...tab, isFiltered: false};\n });\n });\n }\n\n public toggleCommentsSummary(): void {\n this.showCommentSummaryDialog.emit();\n }\n\n selectTab(tab: string) {\n this.tabSelected = tab !== this.tabSelected ? tab : undefined;\n }\n\n public toggleCommentsPanel() {\n this.toolbarEvents.toggleCommentsPanel(!this.toolbarEvents.commentsPanelVisible.getValue());\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Annotation } from '../../../annotation-set/annotation-view/annotation.model';\nimport { Store } from '@ngrx/store';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromActions from '../../../../store/actions/annotation.actions';\n\n@Component({\n selector: 'mv-comment-search',\n templateUrl: './comment-search.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentSearchComponent implements AfterViewInit, OnDestroy {\n\n @Input() public readonly annotations: Annotation[];\n\n @ViewChild('searchInput', {static: false}) searchInput: ElementRef<HTMLInputElement>;\n\n searchString: string;\n searchResults: Annotation[] = [];\n searchIndex = 0;\n\n constructor(private store: Store<fromStore.AnnotationSetState>) {}\n\n ngAfterViewInit(): void {\n if (this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n ngOnDestroy(): void {\n // TODO workaround for tab error\n setTimeout(() => {this.store.dispatch(new fromActions.SearchComment('')); }, 250);\n }\n\n searchComments(searchText: string): void {\n this.clearSearch();\n if (searchText.length > 2) {\n this.searchString = searchText;\n this.searchResults = this.annotations\n .filter(annotation => annotation.comments.length > 0)\n .filter(annotation =>\n annotation.comments[0].content.toLowerCase().includes(this.searchString.toLowerCase()));\n if (this.searchResults.length > 0) {\n this.store.dispatch(new fromActions.SearchComment(searchText));\n }\n }\n }\n\n clearSearch() {\n this.searchString = undefined;\n this.searchResults = [];\n this.searchIndex = 0;\n this.store.dispatch(new fromActions.SearchComment(''));\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[mvTextHighlight]'\n})\nexport class TextHighlightDirective implements AfterViewChecked {\n\n @Input() textToHighlight: string;\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n ngAfterViewChecked(): void {\n if (this.textToHighlight) {\n this.highlightInputText(this.textToHighlight);\n }\n }\n\n highlightInputText(textToHighlight: string) {\n this.resetHighlight();\n this.textToHighlight = textToHighlight;\n const searchPattern = new RegExp(textToHighlight, 'gi');\n const hostElement = this.element.nativeElement;\n if (hostElement.innerHTML.match(searchPattern)) {\n hostElement.innerHTML = hostElement.innerHTML\n .replace(searchPattern, this.highlightPattern('$&'));\n }\n this.textToHighlight = undefined;\n }\n\n resetHighlight() {\n const hostElement = this.element.nativeElement;\n const searchPattern = new RegExp(this.highlightPattern('(.*?)'), 'gi');\n while (hostElement.innerHTML.match(searchPattern)) {\n const matchGroups = searchPattern.exec(hostElement.innerHTML);\n if (matchGroups) {\n hostElement.innerHTML = hostElement.innerHTML.replace(matchGroups[0], matchGroups[1]);\n }\n }\n }\n\n private highlightPattern(dynamicText: string) {\n return '<span class=\"mvTextHighlight\">' + dynamicText + '</span>';\n }\n}\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TagsModel} from '../models/tags.model';\nimport {TagsServices} from '../services/tags/tags.services';\nimport {FormControl} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'mv-tags',\n templateUrl: './tags.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TagsComponent {\n @Input() tagItems: TagsModel[];\n @Input() userId: string;\n @Input() editable: boolean;\n @Input() annoId: string;\n\n public validators = [this.minLength, this.maxLength20];\n public errorMessages: {[id: string]: string} = {\n 'minLength': 'Minimum of 2 characters',\n 'maxLength20': 'Maximum of 20 characters'\n };\n\n constructor(private tagsServices: TagsServices) {}\n\n onUpdateTags(value) {\n this.tagsServices.updateTagItems(value, this.annoId);\n }\n\n public requestAutocompleteItems = (text: string): Observable<any[]> => {\n return this.tagsServices.getAllTags(this.userId);\n }\n\n private minLength(control: FormControl) {\n if (control.value.length < 2) {\n return {\n 'minLength': true\n };\n }\n return null;\n }\n\n private maxLength20(control: FormControl) {\n if (control.value.length >= 20) {\n return {\n 'maxLength20': true\n };\n }\n return null;\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Rectangle } from '../../annotation-set/annotation-view/rectangle/rectangle.model';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport {Store} from '@ngrx/store';\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromActions from '../../../store/actions/annotation.actions';\nimport {ToolbarEventService} from '../../../toolbar/toolbar-event.service';\n\n@Component({\n selector: 'mv-comments-navigate',\n templateUrl: './comments-navigate.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentsNavigateComponent implements OnChanges {\n\n @Input() public annotationList: Annotation[];\n @Input() autoSelect = false;\n\n navigationList: any[] = [];\n index = 0;\n\n constructor(private store: Store<fromStore.AnnotationSetState>, public readonly toolbarEvents: ToolbarEventService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.annotationList) {\n this.initNavigationList();\n }\n }\n\n initNavigationList(): void {\n this.index = 0;\n this.navigationList = [...this.annotationList || []]\n .map(annotation => ({\n content: annotation.comments[0].content,\n annotationId: annotation.id,\n page: annotation.page,\n rectangle: this.upperRectangle(annotation.rectangles),\n }))\n .sort(this.sortComments);\n\n if (this.autoSelect) {\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[0].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[0].annotationId,\n editable: false,\n selected: true\n }));\n }\n }\n\n sortComments(mappedCommentA, mappedCommentB) {\n if (mappedCommentA.page !== mappedCommentB.page) {\n return mappedCommentA.page - mappedCommentB.page;\n } else {\n const rectA = mappedCommentA.rectangle;\n const rectB = mappedCommentB.rectangle;\n if (rectA.y !== rectB.y) {\n return rectA.y - rectB.y;\n } else {\n return rectA.x - rectB.x;\n }\n }\n }\n\n nextItem() {\n this.index += 1;\n if (this.index === this.annotationList.length) {\n this.index = 0;\n }\n\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[this.index].annotationId, editable: false, selected: true\n }));\n }\n\n\n prevItem() {\n this.index -= 1;\n if (this.index < 0) {\n this.index = this.navigationList.length - 1;\n }\n this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));\n this.store.dispatch(new fromActions.SelectedAnnotation({\n annotationId: this.navigationList[this.index].annotationId,\n editable: false,\n selected: true\n }));\n }\n\n upperRectangle(rectangles: Rectangle[]) {\n [...rectangles].sort((rect1, rect2) => rect1.y - rect2.y);\n return { x: rectangles[0].x, y: rectangles[0].y };\n }\n}\n","import {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\n\nimport {select, Store} from '@ngrx/store';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromSelectors from '../../../../store/selectors/tag.selectors';\nimport * as fromActions from '../../../../store/actions/tag.actions';\nimport {Observable, Subscription} from 'rxjs';\nimport {FormGroup, FormBuilder, FormControl} from '@angular/forms';\nimport {auditTime, tap} from 'rxjs/operators';\n\n\n@Component({\n selector: 'mv-comment-filter',\n templateUrl: './comment-filter.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class CommentFilterComponent implements OnInit, OnDestroy {\n tagGroup: FormGroup;\n $subscriptions: Subscription;\n filter$: Observable<string[]>;\n allTags$: Observable<any>;\n searchValue: string;\n isPreview = false;\n constructor(\n private store: Store<fromStore.State>,\n private fb: FormBuilder) {}\n\n ngOnInit(): void {\n this.tagGroup = this.fb.group({\n 'tagFilters': this.fb.group({}),\n });\n this.filter$ = this.store.pipe(select(fromSelectors.getTagFilters));\n this.$subscriptions = this.tagGroup.valueChanges.pipe(auditTime(5)).subscribe(value => {\n const tagFilters = value['tagFilters'];\n this.store.dispatch(new fromActions.AddFilterTags(tagFilters));\n });\n this.buildFrom();\n\n }\n\n buildFrom() {\n const checkboxes = <FormGroup>this.tagGroup.get('tagFilters');\n this.allTags$ = this.store.pipe(select(fromSelectors.getAllTagsArr)).pipe(tap(tags => {\n this.tagGroup.reset();\n tags.forEach((value) => {\n checkboxes.addControl(value.key, new FormControl(false));\n });\n }));\n }\n\n onClearFilters() {\n this.tagGroup.reset();\n this.store.dispatch(new fromActions.ClearFilterTags());\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n\n onRemoveFilter(tagName) {\n const checkboxes = <FormGroup>this.tagGroup.get('tagFilters');\n checkboxes.controls[tagName].setValue(false);\n }\n\n onToggleFilterView() {\n this.isPreview = !this.isPreview;\n }\n\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport moment from 'moment-timezone';\n/**\n * A moment timezone pipe to support parsing based on time zone abbreviations\n * covers all cases of offset variation due to daylight saving.\n *\n * Same API as DatePipe with additional timezone abbreviation support\n * Official date pipe dropped support for abbreviations names from Angular V5\n */\n@Pipe({\n name: 'momentDate'\n})\nexport class MomentDatePipe extends DatePipe implements PipeTransform {\n\n transform(\n value: string | Date,\n format: string = 'mediumDate',\n timezone: string = 'Europe/London'\n ): string {\n const timezoneOffset = moment(value).tz(timezone).format('Z');\n return super.transform(value, format, timezoneOffset);\n }\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Bookmark } from '../../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\n\n@Injectable()\nexport class BookmarksApiService {\n\n private readonly ANNOTATIONS_API = '/em-anno';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getBookmarks(documentId: string): Observable<any> {\n return this.httpClient\n .get(`${this.ANNOTATIONS_API}/${documentId}/bookmarks`,\n { observe: 'response' , withCredentials: true });\n }\n\n public createBookmark(bookmark: Partial<Bookmark>): Observable<Bookmark> {\n return this.httpClient\n .post<Bookmark>(`${this.ANNOTATIONS_API}/bookmarks`,\n bookmark, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public updateBookmark(bookmark: Partial<Bookmark>): Observable<Bookmark> {\n return this.httpClient\n .put<Bookmark>(`${this.ANNOTATIONS_API}/bookmarks`,\n bookmark, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public updateMultipleBookmarks(bookmarks: Partial<Bookmark[]>): Observable<Bookmark[]> {\n return this.httpClient\n .put<Bookmark[]>(`${this.ANNOTATIONS_API}/bookmarks_multiple`,\n bookmarks, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteBookmark(bookmarkId: string): Observable<void> {\n return this.httpClient\n .delete<void>(`${this.ANNOTATIONS_API}/bookmarks/${bookmarkId}`,\n { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteMultipleBookmarks(payload: { deleted: string[], updated: Bookmark }): Observable<void> {\n return this.httpClient\n .request<void>('DELETE', `${this.ANNOTATIONS_API}/bookmarks_multiple`,\n { body: payload, observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filter'\n})\nexport class FilterPipe implements PipeTransform {\n\n transform(items: any[], searchText: string, fieldName: string): any[] {\n\n if (!items) {\n return [];\n }\n\n if (!searchText) {\n return items;\n }\n\n return items.filter(item => {\n if (item) {\n if (item[fieldName]) {\n return item[fieldName].toLowerCase().includes(searchText.toLowerCase());\n } else {\n return item.toLowerCase().includes(searchText.toLowerCase());\n }\n }\n return false;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'unsnake'\n})\nexport class UnsnakePipe implements PipeTransform {\n\n transform(items: string): string {\n return items.split('_').join(' ');\n }\n\n}\n","import {Component, Input} from '@angular/core';\n/*\n* Gov UK Date Component\n* Responsible for displaying 3 input fields:\n* day / month / year\n* displaying errorMessage messages\n* */\n@Component({\n selector: 'mv-gov-uk-date',\ntemplateUrl: './gov-uk-date.component.html'\n})\nexport class GovUkDateComponent {\n @Input() config: { id: string; legend: string };\n @Input() errorMessage: {isInvalid: boolean; messages: string[]};\n @Input() formGroup;\n}\n","import {Component, Directive, Input} from '@angular/core';\n/*\n* Gov UK Error Message\n* Responsible for displaying in-line error messages\n* @prop config - obj with properties\n* @prop errorMessage - all error bject with messages property that is arry of strings.\n* */\n@Component({\n selector: ' mv-gov-uk-error-message',\n template: `\n <span class=\"govuk-error-message\" [id]=\"config.id + '-error'\" *ngFor=\"let message of errorMessage?.messages\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{message}}\n </span>\n `\n})\nexport class GovUkErrorMessageComponent {\n constructor () { }\n @Input() config: { id: string };\n @Input() errorMessage;\n}\n","/**\n * Helper Class\n * Used for dynamic templates manipulation\n * */\n\nexport class HtmlTemplatesHelper {\n\n static setDescribedBy(errorMessage, config) {\n if (!errorMessage) {\n return config.hint ? `${config.id}-hint` : null;\n } else if (errorMessage && errorMessage.isInvalid) {\n return config.hint ? `${config.id}-hint ${config.id}-error` : `${config.id}-error`;\n } else {\n return config.hint ? `${config.id}-hint` : null;\n }\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {HtmlTemplatesHelper} from '../util/helpers/html-templates.helper';\n/*\n* Gov Uk Fieldset Component\n* Used to wrap group fieldset elements\n* it can conditionally display h1 tag\n* @param config\n* @param isHeading\n* @param errorMessage - used for aria tag\n* */\n@Component({\n selector: 'mv-gov-uk-fieldset',\n template: `\n <fieldset class=\"govuk-fieldset\" [attr.aria-describedby]=\"setDescribedBy()\">\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"!isHeading\">\n {{config.legend}}\n </legend>\n\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"isHeading\">\n <h1>{{config.legend}}</h1>\n </legend>\n\n <span [id]=\"config.id+'-hint'\" class=\"govuk-hint\" *ngIf=\"config.hint\">\n {{config.hint}}\n </span>\n <ng-content></ng-content>\n </fieldset>\n `\n})\nexport class GovUkFieldsetComponent {\n @Input() config: {legend: string; classes: string, id: string, hint: string, key: string};\n @Input() isHeading: boolean;\n @Input() errorMessage: string[];\n\n setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","import {Component, Input} from '@angular/core';\n\n/*\n* Gov UK Label component\n* Responsible for displaying label tag\n* @prop isPageHading - boolean to display h1\n* @prop config - obj with properties\n* */\n@Component({\n selector: 'mv-gov-label',\n template: `<h1 *ngIf=\"config.isPageHeading else noHeading\">\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n </h1>\n <ng-template #noHeading>\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n </ng-template>\n `\n})\nexport class GovUkLabelComponent {\n constructor () { }\n @Input() config: { label: string, name: string; id: string, isPageHeading, classes: string };\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {GovUkDateComponent} from './gov-uk-date/gov-uk-date.component';\nimport {GovUkErrorMessageComponent} from './gov-uk-error-message/gov-uk-error-message.component';\nimport {GovUkFieldsetComponent} from './gov-uk-fieldset/gov-uk-fieldset.component';\nimport {GovUkLabelComponent} from './gov-uk-label/gov-uk-label.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n RouterModule\n ],\n declarations: [\n GovUkDateComponent,\n GovUkErrorMessageComponent,\n GovUkFieldsetComponent,\n GovUkLabelComponent\n\n ],\n exports: [\n GovUkDateComponent,\n GovUkErrorMessageComponent,\n GovUkFieldsetComponent,\n GovUkLabelComponent\n ]\n})\nexport class SharedModule {}\n","import {createSelector} from '@ngrx/store';\n\nimport * as fromFeature from '../reducers/reducers';\nimport * as fromBookmarks from '../reducers/bookmarks.reducer';\nimport { generateBookmarkNodes } from '../bookmarks-store-utils';\nimport * as fromDocument from './document.selectors';\n\nexport const getBookmarkState = createSelector(\n fromFeature.getMVState,\n (state: fromFeature.State) => state.bookmarks\n);\n\nexport const getBookmarkPages = createSelector(\n getBookmarkState,\n fromBookmarks.getBookmarkPageEnt\n);\n\nexport const getBookmarkEntities = createSelector(\n getBookmarkState,\n fromBookmarks.getBookmarkEnts\n);\n\nexport const getBookmarkNodes = createSelector(\n getBookmarkEntities,\n (entities) => generateBookmarkNodes(entities)\n);\n\nexport const getEditableBookmark = createSelector(\n getBookmarkState,\n fromBookmarks.getEditBookmark\n);\n\nexport const getBookmarkInfo = createSelector(\n getBookmarkNodes,\n fromDocument.getDocumentId,\n fromDocument.getPdfPosition,\n fromDocument.getPages,\n (bookmarkNodes, docId, pdfPosition, pages) => {\n return {\n pageNumber: pdfPosition.pageNumber - 1,\n xCoordinate: pdfPosition.left,\n yCoordinate: pages[pdfPosition.pageNumber].styles.height - (pdfPosition.top * pages[pdfPosition.pageNumber].viewportScale),\n previous: bookmarkNodes.length > 0 ? bookmarkNodes[bookmarkNodes.length - 1].id : undefined,\n documentId: docId\n };\n }\n);\n\nexport const getBookmarksPerPage = createSelector(\n fromDocument.getPages,\n getBookmarkPages,\n (pages, pageEnt) => {\n if (pages && pageEnt) {\n const arr = [];\n Object.keys(pages).forEach(key => {\n const pageIdx = Number(key) - 1; // -1 as the thisPages array is 0 indexed\n const thisPage = pageEnt[pageIdx];\n arr.push({\n bookmark: thisPage ? thisPage : [],\n styles: pages[key].styles\n });\n });\n return arr;\n }\n }\n);\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\n\nimport * as fromStore from '../../../store/reducers/reducers';\nimport * as fromDocument from '../../../store/selectors/document.selectors';\nimport * as fromSelectors from '../../../store/selectors/annotation.selectors';\nimport { HighlightCreateService } from '../annotation-create/highlight-create/highlight-create.service';\nimport { Rectangle } from '../annotation-view/rectangle/rectangle.model';\nimport { CreateBookmark } from '../../../store/actions/bookmark.actions';\nimport * as fromBookmarks from '../../../store/selectors/bookmark.selectors';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { Highlight, ViewerEventService } from '../../../viewers/viewer-event.service';\n\n@Component({\n selector: 'mv-metadata-layer',\n templateUrl: './metadata-layer.component.html'\n})\nexport class MetadataLayerComponent implements OnInit, OnDestroy {\n\n @Input() zoom: number;\n @Input() rotate: number;\n\n pages: any[] = []; // todo add type\n annoPages$: Observable<any>; // todo add type\n\n drawMode = false;\n highlightPage: number;\n rectangles: Rectangle[];\n\n private $subscriptions: Subscription;\n\n constructor(\n private store: Store<fromStore.AnnotationSetState>,\n private readonly highlightService: HighlightCreateService,\n private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService) {}\n\n ngOnInit(): void {\n this.$subscriptions = this.store.pipe(select(fromDocument.getPages))\n .subscribe(pages => this.pages = Object.values(pages));\n this.annoPages$ = this.store.pipe(select(fromSelectors.getPageEntities));\n\n this.$subscriptions\n .add(this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode))\n .add(this.viewerEvents.textHighlight.subscribe(highlight => this.showContextToolbar(highlight)))\n .add(this.viewerEvents.ctxToolbarCleared.subscribe(() => this.clearContextToolbar()));\n }\n\n ngOnDestroy(): void {\n this.$subscriptions.unsubscribe();\n }\n\n showContextToolbar(highlight: Highlight) {\n this.highlightPage = highlight.page;\n this.rectangles = highlight.rectangles;\n if (this.rectangles) {\n this.toolbarEvents.highlightModeSubject.next(false);\n }\n }\n\n clearContextToolbar() {\n this.rectangles = undefined;\n }\n\n createHighlight() {\n this.highlightService.saveAnnotation(this.rectangles, this.highlightPage);\n this.highlightService.resetHighlight();\n this.rectangles = undefined;\n }\n\n createBookmark(rectangle: Rectangle) {\n this.store.pipe(select(fromBookmarks.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n const selection = window.getSelection().toString();\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo,\n name: selection.length > 0 ? selection.substr(0, 30) : 'new bookmark',\n id: uuid(),\n pageNumber: this.highlightPage - 1,\n xCoordinate: rectangle.x,\n yCoordinate: rectangle.y\n } as any));\n this.toolbarEvents.toggleSideBar(true);\n this.highlightService.resetHighlight();\n this.rectangles = undefined;\n\n });\n }\n\n saveAnnotation({ rectangles, page }: { rectangles: Rectangle[], page: any}) {\n this.highlightService.saveAnnotation(rectangles, page);\n this.toolbarEvents.drawModeSubject.next(false);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { RouterModule } from '@angular/router';\n\nimport { MutableDivModule } from 'mutable-div';\nimport { TagInputModule } from 'ngx-chips';\nimport {NgxDatatableModule} from '@swimlane/ngx-datatable';\n\nimport { AnnotationApiService } from './services/annotation-api/annotation-api.service';\nimport { AnnotationViewComponent } from './annotation-set/annotation-view/annotation-view.component';\nimport { AnnotationSetComponent } from './annotation-set/annotation-set.component';\nimport { RectangleComponent } from './annotation-set/annotation-view/rectangle/rectangle.component';\nimport { CommentComponent } from './comment-set/comment/comment.component';\nimport { CtxToolbarComponent } from './annotation-set/ctx-toolbar/ctx-toolbar.component';\nimport { CommentSetComponent } from './comment-set/comment-set.component';\nimport { TextareaAutoExpandDirective } from './comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive';\nimport { CommentsSummaryComponent } from './comments-summary/comments-summary.component';\nimport { CommentSetRenderService } from './comment-set/comment-set-render.service';\nimport { BoxHighlightCreateComponent } from './annotation-set/annotation-create/box-highlight-create/box-highlight-create.component';\nimport { HighlightCreateService } from './annotation-set/annotation-create/highlight-create/highlight-create.service';\nimport { CommentSetHeaderComponent } from './comment-set/comment-set-header/comment-set-header.component';\nimport { CommentSearchComponent } from './comment-set/comment-set-header/comment-search/comment-search.component';\nimport { TextHighlightDirective } from './comment-set/comment/text-highlight/text-highlight.directive';\nimport { TagsComponent } from './tags/tags.component';\nimport { TagsServices } from './services/tags/tags.services';\nimport { CommentsNavigateComponent } from './comment-set/comment-navigate/comments-navigate.component';\nimport {CommentFilterComponent} from './comment-set/comment-set-header/comment-filter/comment-filter.component';\nimport {MomentDatePipe} from './pipes/date/date.pipe';\nimport { BookmarksApiService } from './services/bookmarks-api/bookmarks-api.service';\nimport {FilterPipe} from './pipes/filter/filter.pipe';\nimport {UnsnakePipe} from './pipes/unsnake/unsnake.pipe';\nimport {SharedModule} from '../shared/shared.module';\nimport { MetadataLayerComponent } from './annotation-set/metadata-layer/metadata-layer.component';\n\n@NgModule({\n imports: [\n A11yModule,\n CommonModule,\n FormsModule,\n HttpClientModule,\n MutableDivModule,\n TagInputModule,\n RouterModule,\n ReactiveFormsModule,\n NgxDatatableModule,\n SharedModule\n ],\n declarations: [\n MetadataLayerComponent,\n AnnotationViewComponent,\n BoxHighlightCreateComponent,\n AnnotationSetComponent,\n RectangleComponent,\n CommentComponent,\n CommentSetHeaderComponent,\n CommentSearchComponent,\n TextHighlightDirective,\n CtxToolbarComponent,\n CommentSetComponent,\n CommentsNavigateComponent,\n TextareaAutoExpandDirective,\n CommentsSummaryComponent,\n TagsComponent,\n MomentDatePipe,\n CommentFilterComponent,\n FilterPipe,\n UnsnakePipe\n ],\n entryComponents: [\n AnnotationViewComponent,\n AnnotationSetComponent,\n CommentSetComponent\n ],\n providers: [\n AnnotationApiService,\n BookmarksApiService,\n CommentSetRenderService,\n HighlightCreateService,\n TagsServices\n ],\n exports: [\n AnnotationViewComponent,\n BoxHighlightCreateComponent,\n AnnotationSetComponent,\n CommentSetComponent,\n CommentSetHeaderComponent,\n CommentSearchComponent,\n CommentsSummaryComponent,\n TagsComponent,\n CommentFilterComponent,\n MomentDatePipe,\n FilterPipe,\n UnsnakePipe,\n MetadataLayerComponent\n ]\n})\nexport class AnnotationsModule { }\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[mvGrabNDrag]'\n})\nexport class GrabNDragDirective {\n\n originalPosition: { left: number; top: number };\n private pointerDown = false;\n\n @Input() dragEnabled = false;\n @Input() dragX: Element;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('pointerdown', ['$event'])\n onPointerDown(event: PointerEvent) {\n if (this.dragEnabled) {\n event.preventDefault();\n this.pointerDown = true;\n this.originalPosition = {\n left: event.clientX + this.el.nativeElement.scrollLeft,\n top: event.clientY + this.el.nativeElement.scrollTop,\n };\n }\n }\n\n @HostListener('window:pointermove', ['$event'])\n onPointerMove(event: PointerEvent) {\n if (this.pointerDown && this.dragEnabled) {\n event.preventDefault();\n const scrollDiff = {\n left: this.originalPosition.left - (event.clientX + this.el.nativeElement.scrollLeft),\n top: this.originalPosition.top - (event.clientY + this.el.nativeElement.scrollTop)\n };\n if (this.dragEnabled) {\n this.dragX.scrollLeft += scrollDiff.left;\n this.el.nativeElement.scrollTop += scrollDiff.top;\n }\n }\n }\n\n @HostListener('window:pointerup') onWindowPointerUp() {\n this.pointerDown = false;\n }\n}\n","import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { Outline } from './outline-item/outline.model';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport * as bookmarksSelectors from '../../../store/selectors/bookmark.selectors';\nimport { BookmarkNode } from '../../../store/models/bookmarks.interface';\nimport { CreateBookmark, LoadBookmarks } from '../../../store/actions/bookmark.actions';\nimport { take } from 'rxjs/operators';\nimport uuid from 'uuid';\nimport { ViewerEventService } from '../../viewer-event.service';\nimport { BookmarksState } from '../../../store/reducers/bookmarks.reducer';\n\n@Component({\n selector: 'mv-side-bar',\n templateUrl: './side-bar.component.html'\n})\nexport class SideBarComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() annotationsEnabled: boolean;\n @Input() outline: Outline;\n @Input() url: string;\n @Input() zoom: number;\n @Input() rotate: number;\n\n selectedView = 'outline';\n bookmarkNodes$: Observable<BookmarkNode[]>;\n\n $subscription: Subscription;\n\n constructor(private viewerEvents: ViewerEventService,\n private store: Store<BookmarksState>\n ) {}\n\n ngOnInit(): void {\n this.bookmarkNodes$ = this.store.pipe(select(bookmarksSelectors.getBookmarkNodes));\n this.$subscription = this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editable => this.selectedView = editable ? 'bookmarks' : this.selectedView);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.url && this.url) {\n this.store.dispatch(new LoadBookmarks());\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n goToDestination(destination: any[]) {\n this.viewerEvents.goToDestination(destination);\n }\n\n toggleSidebarView(sidebarView: string) {\n this.selectedView = sidebarView;\n }\n\n onAddBookmarkClick() {\n this.toggleSidebarView('bookmarks');\n this.store.pipe(select(bookmarksSelectors.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo, name: 'new bookmark', id: uuid()\n } as any));\n });\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Outline } from './outline.model';\n\n@Component({\n selector: 'mv-outline-item',\n templateUrl: './outline-item.component.html'\n})\nexport class OutlineItemComponent implements OnInit {\n\n @Input() outline: Outline;\n @Output() navigationEvent = new EventEmitter();\n\n showOutlineItems: boolean;\n\n ngOnInit() {\n this.showOutlineItems = true;\n }\n\n goToDestination(destination: any) {\n if (destination) {\n this.navigationEvent.emit(destination);\n }\n }\n\n toggleOutline() {\n this.showOutlineItems = !this.showOutlineItems;\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport uuid from 'uuid';\nimport {filter, take} from 'rxjs/operators';\n\nimport { Rectangle } from '../../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromRedaSelectors from '../../store/selectors/redaction.selectors';\nimport * as fromDocument from '../../store/selectors/document.selectors';\nimport * as fromActions from '../../store/actions/redaction.actions';\nimport * as fromRedactionActions from '../../store/actions/redaction.actions';\nimport * as fromRedaActions from '../../store/actions/redaction.actions';\nimport { SelectionAnnotation } from '../../annotations/models/event-select.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar.module';\nimport { ViewerEventService } from '../../viewers/viewer-event.service';\nimport { Redaction } from '../services/redaction.model';\n\n@Component({\n selector: 'mv-redactions',\n templateUrl: './redaction.component.html'\n})\nexport class RedactionComponent implements OnInit, OnDestroy {\n\n @Input() zoom: number;\n @Input() rotate: number;\n\n redactionsPerPage$: Observable<any>; // todo add type\n selectedRedaction$: Observable<SelectionAnnotation | {}>;\n rectangles: Rectangle[];\n drawMode: boolean;\n documentId: string;\n\n private $subscription: Subscription;\n\n constructor(private store: Store<fromStore.State>,\n private readonly viewerEvents: ViewerEventService,\n private toolbarEvents: ToolbarEventService) {}\n\n ngOnInit(): void {\n this.redactionsPerPage$ = this.store.pipe(select(fromSelectors.getRedactionsPerPage));\n this.selectedRedaction$ = this.store.pipe(select(fromSelectors.getSelected));\n this.$subscription = this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode);\n this.$subscription.add(this.store.pipe(select(fromSelectors.getRedactedDocumentInfo), filter(value => !!value))\n .subscribe(redactedDocInfo => this.downloadDocument(redactedDocInfo)));\n this.$subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.$subscription.add(this.viewerEvents.textHighlight.subscribe(highlight => this.markTextRedaction(highlight)));\n this.toolbarEvents.applyRedactToDocument.subscribe(() => {\n this.store.pipe(select(fromRedaSelectors.getRedactionArray), take(1)).subscribe(redactions => {\n this.store.dispatch(new fromRedaActions.Redact(redactions));\n });\n });\n this.toolbarEvents.clearAllRedactMarkers.subscribe(() => {\n this.store.dispatch(new fromRedaActions.UnmarkAll(this.documentId));\n });\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n markTextRedaction(highlight) {\n const redactionHighlight = highlight.rectangles;\n if (redactionHighlight && redactionHighlight.length) {\n this.saveRedaction(highlight.page, [...redactionHighlight]);\n }\n this.toolbarEvents.highlightModeSubject.next(false);\n }\n\n markBoxRedaction({ rectangles, page }) {\n this.saveRedaction(page, rectangles);\n this.toolbarEvents.drawModeSubject.next(false);\n }\n\n saveRedaction(page: number, rectangles: Rectangle[]) {\n const redaction = { page, rectangles, redactionId: uuid(), documentId: this.documentId };\n this.store.dispatch(new fromRedactionActions.SaveRedaction(redaction));\n }\n\n onMarkerDelete(event) {\n this.store.dispatch(new fromActions.DeleteRedaction(event));\n }\n\n selectRedaction(event) {\n this.store.dispatch(new fromActions.SelectRedaction(event));\n }\n\n onMarkerUpdate(redaction: Redaction) {\n this.store.dispatch(new fromActions.SaveRedaction(redaction));\n }\n\n downloadDocument({ blob, filename }) {\n if (navigator && navigator.msSaveBlob) {\n navigator.msSaveBlob(blob, filename);\n } else {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = url;\n a.download = filename;\n a.click();\n a.remove();\n URL.revokeObjectURL(url);\n }\n this.store.dispatch(new fromRedactionActions.ResetRedactedDocument());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { IcpSession } from './icp.interfaces';\n\n@Injectable()\nexport class IcpSessionApiService {\n\n public ICP_SESSION_API = '/icp/sessions';\n\n constructor(private readonly httpClient: HttpClient) {}\n\n public loadSession(caseId: string): Observable<any> {\n return this.httpClient\n .get<{username: string, session: IcpSession}>(`${this.ICP_SESSION_API}/${caseId}`,\n { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport socketio from 'socket.io-client/dist/socket.io.js';\n\n@Injectable()\nexport class SocketService implements OnDestroy {\n\n private socket: any;\n subscription: Subscription;\n\n connected$ = new BehaviorSubject<boolean>(false);\n\n constructor() {}\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n connect() {\n this.socket = this.getSocketClient();\n this.socket.on('connect', () => this.connected$.next(true));\n this.socket.on('disconnect', () => this.connected$.next(false));\n }\n\n join(session) {\n this.subscription = this.connected$.subscribe(connected => {\n if (connected) {\n this.socket.emit('join', session);\n }\n });\n }\n\n leave(session) {\n this.socket.emit('leave', session);\n this.subscription.unsubscribe();\n }\n\n emit(event: string, data: any) {\n this.socket.emit(event, data);\n }\n\n listen(event: string): Observable<any> {\n return new Observable( observer => {\n this.socket.on(event, data => {\n observer.next(data);\n });\n return () => this.socket.off(event);\n });\n }\n\n getSocketClient() {\n return socketio('/', {\n path: '/icp/socket.io', agent: true\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SocketService } from './socket.service';\nimport { IcpParticipant, IcpScreenUpdate, IcpSession } from './icp.interfaces';\n\n@Injectable()\nexport class IcpUpdateService {\n\n SESSION_JOINED = '[Icp] Client Joined Session';\n CLIENT_DISCONNECTED = '[Icp] Client Disconnected From Session';\n NEW_PARTICIPANT_JOINED = '[Icp] New Participant Joined Session';\n REMOVE_PARTICIPANT = '[Icp] Remove Participant from List';\n PARTICIPANTS_UPDATED = '[Icp] Participants List Updated';\n UPDATE_PRESENTER = '[Icp] New Presenter Starts Presenting';\n PRESENTER_UPDATED = '[Icp] Presenter Updated';\n UPDATE_SCREEN = '[Icp] Update Screen';\n SCREEN_UPDATED = '[Icp] Screen Updated';\n\n session: IcpSession;\n\n constructor(private socket: SocketService) {}\n\n joinSession(username: string, session: IcpSession) {\n this.session = session;\n this.socket.connect();\n this.socket.join({...this.session, username});\n return this.socket.listen(this.SESSION_JOINED);\n }\n\n leaveSession() {\n this.socket.leave(this.session);\n }\n\n newParticipantJoined() {\n return this.socket.listen(this.NEW_PARTICIPANT_JOINED);\n }\n\n clientDisconnected() {\n return this.socket.listen(this.CLIENT_DISCONNECTED);\n }\n\n removeParticipant(participantId) {\n this.socket.emit(this.REMOVE_PARTICIPANT, {\n participantId: participantId, caseId: this.session.caseId\n });\n }\n\n participantListUpdated() {\n return this.socket.listen(this.PARTICIPANTS_UPDATED);\n }\n\n updatePresenter(presenter: IcpParticipant) {\n this.socket.emit(this.UPDATE_PRESENTER, {\n ...this.session, presenterId: presenter.id, presenterName: presenter.username\n });\n }\n\n presenterUpdated() {\n return this.socket.listen(this.PRESENTER_UPDATED);\n }\n\n updateScreen(screen: IcpScreenUpdate) {\n const update = { body: screen, sessionId: this.session.sessionId };\n this.socket.emit(this.UPDATE_SCREEN, update);\n }\n\n screenUpdated() {\n return this.socket.listen(this.SCREEN_UPDATED);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\nimport { Subscription } from 'rxjs';\nimport { IcpUpdateService } from './icp-update.service';\nimport { IcpState, IcpScreenUpdate, IcpSession, IcpParticipant } from './icp.interfaces';\nimport * as fromIcpSelectors from '../store/selectors/icp.selectors';\nimport { PdfPosition } from '../store/reducers/document.reducer';\n\n@Injectable()\nexport class IcpPresenterService {\n\n session: IcpSession;\n presenter: IcpParticipant;\n pdfPosition: PdfPosition;\n\n $subscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly socketService: IcpUpdateService,\n private store: Store<IcpState>) {}\n\n update(isPresenter: boolean) {\n if (isPresenter) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n subscribe() {\n if (!this.$subscription) {\n this.$subscription = this.store.pipe(select(fromDocSelectors.getPdfPosition)).subscribe(pdfPosition => {\n this.pdfPosition = pdfPosition;\n this.onPositionUpdate(pdfPosition);\n });\n this.$subscription.add(this.store.pipe(select(fromIcpSelectors.getPresenter)).subscribe(presenter => {\n this.presenter = presenter;\n }));\n this.$subscription.add(this.socketService.newParticipantJoined().subscribe(() => this.onNewParticipantJoined()));\n }\n }\n\n unsubscribe() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n this.$subscription = undefined;\n }\n }\n\n onPositionUpdate(pdfPosition: PdfPosition) {\n const screen: IcpScreenUpdate = { pdfPosition, document: undefined };\n this.socketService.updateScreen(screen);\n }\n\n onNewParticipantJoined() {\n this.onPositionUpdate(this.pdfPosition);\n this.socketService.updatePresenter(this.presenter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { IcpUpdateService } from './icp-update.service';\nimport { ViewerEventService } from '../viewers/viewer-event.service';\nimport { take } from 'rxjs/operators';\nimport { IcpState, IcpSession } from './icp.interfaces';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\n\n@Injectable()\nexport class IcpFollowerService {\n\n session: IcpSession;\n\n $subscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n private readonly socketService: IcpUpdateService,\n private store: Store<IcpState>) {}\n\n\n update(isFollower: boolean) {\n if (isFollower) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n subscribe() {\n if (!this.$subscription) {\n this.$subscription = this.socketService.screenUpdated()\n .subscribe(screen => this.followScreenUpdate(screen));\n }\n }\n\n unsubscribe() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n this.$subscription = undefined;\n }\n }\n\n followScreenUpdate({ pdfPosition }) {\n if (pdfPosition) {\n this.viewerEvents.goToDestination([\n pdfPosition.pageNumber - 1,\n { 'name': 'XYZ' },\n pdfPosition.left,\n pdfPosition.top\n ]);\n }\n this.store.pipe(select(fromDocSelectors.getPdfPosition), take(1))\n .subscribe(position => {\n const rotationDelta = (pdfPosition.rotation - position.rotation) % 360;\n if (rotationDelta !== 0) {\n this.toolbarEvents.rotate(rotationDelta);\n }\n });\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IcpParticipant, IcpState } from './icp.interfaces';\nimport { Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../toolbar/toolbar-event.service';\nimport { ViewerEventService } from '../viewers/viewer-event.service';\nimport { IcpUpdateService } from './icp-update.service';\nimport { IcpPresenterService } from './icp-presenter.service';\nimport { IcpFollowerService } from './icp-follower.service';\nimport { select, Store } from '@ngrx/store';\nimport * as fromIcpActions from '../store/actions/icp.actions';\nimport * as fromIcpSelectors from '../store/selectors/icp.selectors';\nimport { filter, take } from 'rxjs/operators';\n\n@Injectable()\nexport class IcpService implements OnDestroy {\n\n caseId: string;\n client: IcpParticipant;\n presenter: IcpParticipant;\n isPresenter: boolean;\n\n subscription: Subscription;\n sessionSubscription: Subscription;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private readonly viewerEvents: ViewerEventService,\n private readonly socketService: IcpUpdateService,\n private readonly presenterSubscriptions: IcpPresenterService,\n private readonly followerSubscriptions: IcpFollowerService,\n private store: Store<IcpState>) {\n this.subscription = this.store.pipe(select(fromIcpSelectors.getCaseId), filter(value => !!value)).subscribe(caseId => {\n this.caseId = caseId;\n });\n this.subscription.add(this.toolbarEvents.icp.sessionLaunch.subscribe(() => {\n if (this.caseId) { this.launchSession(); }\n }));\n }\n\n ngOnDestroy() {\n this.unsubscribeSession();\n this.subscription.unsubscribe();\n }\n\n launchSession() {\n this.store.dispatch(new fromIcpActions.LoadIcpSession(this.caseId));\n this.subscription.add(this.store.pipe(select(fromIcpSelectors.getIcpSession),\n filter(value => !!value && Object.keys(value).length > 1 ),\n take(1)).subscribe(() => { this.setUpSessionSubscriptions(); }));\n }\n\n setUpSessionSubscriptions() {\n this.sessionSubscription = this.toolbarEvents.icp.becomingPresenter.subscribe(() => this.becomePresenter());\n this.sessionSubscription.add(this.toolbarEvents.icp.stoppingPresenting.subscribe(() => this.stopPresenting()));\n this.sessionSubscription.add(this.toolbarEvents.icp.sessionExitConfirmed.subscribe(() => this.leavePresentation()));\n this.sessionSubscription.add(\n this.store.pipe(select(fromIcpSelectors.getPresenter)).subscribe(presenter => this.presenter = presenter )\n );\n this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.getClient)).subscribe(client => this.client = client));\n this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.isPresenter)).subscribe(isPresenter => {\n this.isPresenter = isPresenter;\n this.presenterSubscriptions.update(isPresenter);\n this.followerSubscriptions.update(!isPresenter);\n }));\n this.sessionSubscription.add(this.socketService.clientDisconnected().subscribe(cli => this.clientDisconnected(cli)));\n this.sessionSubscription.add(this.socketService.presenterUpdated().subscribe(pres => {\n this.store.dispatch(new fromIcpActions.IcpPresenterUpdated(pres));\n }));\n this.sessionSubscription.add(this.socketService.participantListUpdated().subscribe(participants => {\n this.store.dispatch(new fromIcpActions.IcpParticipantListUpdated(participants));\n }));\n }\n\n unsubscribeSession() {\n this.presenterSubscriptions.update(false);\n this.followerSubscriptions.update(false);\n this.sessionSubscription.unsubscribe();\n }\n\n leavePresentation() {\n if (this.isPresenter) {\n this.stopPresenting();\n }\n this.removeParticipant(this.client.id);\n this.socketService.leaveSession();\n this.store.dispatch(new fromIcpActions.LeaveIcpSocketSession());\n this.unsubscribeSession();\n }\n\n stopPresenting() {\n const presenter: IcpParticipant = {username: '', id: ''};\n this.socketService.updatePresenter(presenter);\n }\n\n becomePresenter() {\n this.socketService.updatePresenter(this.client);\n }\n\n clientDisconnected(client) {\n if (client === this.presenter.id) {\n this.stopPresenting();\n }\n this.removeParticipant(client);\n }\n\n removeParticipant(participantId) {\n this.socketService.removeParticipant(participantId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport {catchError, exhaustMap, map, switchMap} from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport {AnnotationApiService} from '../../annotations/services/annotation-api/annotation-api.service';\nimport * as annotationsActions from '../actions/annotation.actions';\n\n@Injectable()\nexport class AnnotationEffects {\n constructor(\n private actions$: Actions,\n private annotationApiService: AnnotationApiService,\n ) { }\n\n @Effect()\n loadAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.LOAD_ANNOTATION_SET),\n map((action: annotationsActions.LoadAnnotationSet) => action.payload),\n switchMap((documentId) => {\n return this.annotationApiService.getAnnotationSet(documentId).pipe(\n map(res => {\n return new annotationsActions.LoadAnnotationSetSucess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }));\n\n @Effect()\n postAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION),\n map((action: annotationsActions.SaveAnnotation) => action.payload),\n exhaustMap((annotation) => {\n return this.annotationApiService.postAnnotation(annotation).pipe(\n map(annotations => {\n return new annotationsActions.SaveAnnotationSuccess(annotations);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }));\n\n @Effect()\n deleteAnnotation$ = this.actions$.pipe(\n ofType(annotationsActions.DELETE_ANNOTATION),\n map((action: annotationsActions.DeleteAnnotation) => action.payload),\n exhaustMap((annotation) => {\n return this.annotationApiService.deleteAnnotation(annotation).pipe(\n map(result => {\n return new annotationsActions.DeleteAnnotationSuccess(annotation);\n }),\n catchError(error => {\n return of(new annotationsActions.DeleteAnnotationFail(error));\n }));\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { BookmarksApiService } from '../../annotations/services/bookmarks-api/bookmarks-api.service';\nimport * as bookmarksActions from '../actions/bookmark.actions';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocument from '../selectors/document.selectors';\nimport * as fromBookmarks from '../reducers/bookmarks.reducer';\nimport * as fromStore from '../reducers/reducers';\n\n@Injectable()\nexport class BookmarksEffects {\n\n constructor(private actions$: Actions,\n private store: Store<fromStore.AnnotationSetState|fromBookmarks.BookmarksState>,\n private bookmarksApiService: BookmarksApiService) {}\n\n @Effect()\n loadBookmarks$ = this.actions$.pipe(\n ofType(bookmarksActions.LOAD_BOOKMARKS),\n withLatestFrom(this.store.pipe(select(fromDocument.getDocumentId))),\n map(([, documentId]) => documentId),\n exhaustMap((documentId) =>\n this.bookmarksApiService.getBookmarks(documentId)\n .pipe(\n map(res => new bookmarksActions.LoadBookmarksSuccess(res)),\n catchError(err => of(new bookmarksActions.LoadBookmarksFailure(err)))\n )\n ));\n\n @Effect()\n createBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.CREATE_BOOKMARK),\n map((action: bookmarksActions.CreateBookmark) => action.payload),\n exhaustMap((bookmark) =>\n this.bookmarksApiService.createBookmark(bookmark)\n .pipe(\n map(bmrk => new bookmarksActions.CreateBookmarkSuccess(bmrk)),\n catchError(error => of(new bookmarksActions.CreateBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n moveBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.MOVE_BOOKMARK),\n map((action: bookmarksActions.MoveBookmark) => action.payload),\n exhaustMap((bookmarks) =>\n this.bookmarksApiService.updateMultipleBookmarks(bookmarks)\n .pipe(\n map(bmrks => new bookmarksActions.MoveBookmarkSuccess(bmrks)),\n catchError(error => of(new bookmarksActions.MoveBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n deleteBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.DELETE_BOOKMARK),\n map((action: bookmarksActions.DeleteBookmark) => action.payload),\n exhaustMap(({ deleted, updated }) =>\n this.bookmarksApiService.deleteMultipleBookmarks({ deleted, updated })\n .pipe(\n switchMap(() => {\n if (updated) {\n return [\n new bookmarksActions.DeleteBookmarkSuccess(deleted),\n new bookmarksActions.UpdateBookmarkSuccess(updated)\n ];\n } else {\n return [new bookmarksActions.DeleteBookmarkSuccess(deleted)];\n }\n }),\n catchError(error => of(new bookmarksActions.DeleteBookmarkFailure(error)))\n )\n ));\n\n @Effect()\n updateBookmark$ = this.actions$.pipe(\n ofType(bookmarksActions.UPDATE_BOOKMARK),\n map((action: bookmarksActions.UpdateBookmark) => action.payload),\n switchMap((bookmark) =>\n this.bookmarksApiService.updateBookmark(bookmark)\n .pipe(\n map(bmrk => new bookmarksActions.UpdateBookmarkSuccess(bmrk)),\n catchError(error => of(new bookmarksActions.UpdateBookmarkFailure(error)))\n )\n ));\n}\n","import {Observable} from 'rxjs';\nimport {HttpClient, HttpResponse} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {catchError, map} from 'rxjs/operators';\nimport { Redaction } from './redaction.model';\n\n@Injectable()\nexport class RedactionApiService {\n\n private markupsApiUrl = '/api/markups';\n private redactApiUrl = '/api/redaction';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getRedactions(documentId: string): Observable<HttpResponse<Redaction[]>> {\n const fixedUrl = `${this.markupsApiUrl}/${documentId}`;\n return this.httpClient\n .get<Redaction[]>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public saveRedaction(body): Observable<Redaction> {\n return this.httpClient\n .post<Redaction>(this.markupsApiUrl, body, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response.body),\n catchError(() => [])\n );\n }\n\n public deleteRedaction(payload): Observable<null> {\n const url = `${this.markupsApiUrl}/${payload.documentId}/${payload.redactionId}`;\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public deleteAllMarkers(documentId): Observable<null> {\n const url = `${this.markupsApiUrl}/${documentId}`;\n\n return this.httpClient\n .delete<null>(url, { observe: 'response' , withCredentials: true })\n .pipe(map(response => response.body));\n }\n\n public redact(payload): Observable<HttpResponse<Blob>> {\n return this.httpClient\n .post<Blob>(this.redactApiUrl, payload, { observe: 'response' , withCredentials: true, responseType: 'blob' as 'json' })\n .pipe(\n map(response => response),\n catchError(() => [])\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { RedactionApiService } from '../../redaction/services/redaction-api.service';\nimport * as redactionActions from '../actions/redaction.actions';\nimport { HttpResponse } from '@angular/common/http';\n\n@Injectable()\nexport class RedactionEffects {\n constructor(\n private actions$: Actions,\n private redactionApiService: RedactionApiService,\n ) { }\n\n @Effect()\n loadRedactions$ = this.actions$.pipe(\n ofType(redactionActions.LOAD_REDACTIONS),\n map((action: redactionActions.LoadRedactions) => action.payload),\n switchMap((documentId) => {\n return this.redactionApiService.getRedactions(documentId).pipe(\n map(resp => {\n return new redactionActions.LoadRedactionSuccess(resp.body);\n }),\n catchError(error => {\n return of(new redactionActions.LoadRedactionFailure(error));\n }));\n }));\n\n @Effect()\n saveRedaction$ = this.actions$.pipe(\n ofType(redactionActions.SAVE_REDACTION),\n map((action: redactionActions.SaveRedaction) => action.payload),\n exhaustMap((redaction) => {\n return this.redactionApiService.saveRedaction(redaction).pipe(\n map(resp => {\n return new redactionActions.SaveRedactionSuccess(resp);\n }),\n catchError(error => {\n return of(new redactionActions.SaveRedactionFailure(error));\n }));\n }));\n\n @Effect()\n deleteRedaction$ = this.actions$.pipe(\n ofType(redactionActions.DELETE_REDACTION),\n map((action: redactionActions.DeleteRedaction) => action.payload),\n exhaustMap((redactionPayload) => {\n return this.redactionApiService.deleteRedaction(redactionPayload).pipe(\n map(() => {\n return new redactionActions.DeleteRedactionSuccess(redactionPayload);\n }),\n catchError(error => {\n return of(new redactionActions.DeleteRedactionFailure(error));\n }));\n }));\n\n @Effect()\n redact$ = this.actions$.pipe(\n ofType(redactionActions.REDACT),\n map((action: redactionActions.Redact) => action.payload),\n exhaustMap((redactionPayload) => {\n return this.redactionApiService.redact(redactionPayload).pipe(\n map((result: HttpResponse<Blob>) => {\n const header = result.headers.get('content-disposition').split('filename=');\n const filename = header.length > 1 ? header[1].replace(/\"/g, '')\n : `redacted-document-${redactionPayload.documentId}`;\n return new redactionActions.RedactSuccess({ blob: result.body, filename });\n }),\n catchError(error => {\n return of(new redactionActions.RedactFailure(error));\n }));\n }));\n\n @Effect()\n unmarkAll$ = this.actions$.pipe(\n ofType(redactionActions.UNMARK_ALL),\n map((action: redactionActions.UnmarkAll) => action.payload),\n exhaustMap((documentId) => {\n return this.redactionApiService.deleteAllMarkers(documentId).pipe(\n map(result => {\n return new redactionActions.UnmarkAllSuccess();\n }),\n catchError(error => {\n return of(new redactionActions.DeleteRedactionFailure(error));\n }));\n }));\n}\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable()\nexport class DocumentConversionApiService {\n\n private documentConversionUrl = '/doc-assembly/convert';\n\n constructor(private readonly httpClient: HttpClient) {}\n\n public convert(documentId): Observable<HttpResponse<Blob>> {\n return this.httpClient\n .post<Blob>(`${this.documentConversionUrl}/${documentId}`, {},\n { observe: 'response' , withCredentials: true, responseType: 'blob' as 'json' })\n .pipe(\n map(response => response),\n catchError(error => of(error))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { Rotation } from './rotation.model';\n\n@Injectable()\nexport class RotationApiService {\n\n public rotationApiUrl = '/em-anno/metadata';\n\n constructor(\n private readonly httpClient: HttpClient\n ) {}\n\n public getRotation(documentId: string): Observable<HttpResponse<Rotation>> {\n const fixedUrl = `${this.rotationApiUrl}/${documentId}`;\n return this.httpClient\n .get<Rotation>(fixedUrl, { observe: 'response' , withCredentials: true });\n }\n\n public saveRotation(payload: Rotation): Observable<HttpResponse<Rotation>> {\n const fixedUrl = `${this.rotationApiUrl}/`;\n return this.httpClient\n .post<any>(fixedUrl, payload, { observe: 'response' , withCredentials: true })\n .pipe(\n map(response => response),\n catchError(() => [])\n );\n }\n\n}\n","import { Actions, Effect, ofType } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\nimport { HttpResponse } from '@angular/common/http';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { DocumentConversionApiService } from '../../viewers/convertible-content-viewer/document-conversion-api.service';\nimport { RotationApiService } from '../../viewers/rotation-persist/rotation-api.service';\nimport { of } from 'rxjs';\nimport * as documentActions from '../actions/document.actions';\n\n@Injectable()\nexport class DocumentEffects {\n constructor(\n private actions$: Actions,\n private documentConversionService: DocumentConversionApiService,\n private rotationApiService: RotationApiService,\n ) { }\n\n @Effect()\n convert$ = this.actions$.pipe(\n ofType(documentActions.CONVERT),\n map((action: documentActions.Convert) => action.payload),\n exhaustMap((documentId) => {\n return this.documentConversionService.convert(documentId).pipe(\n map((result: HttpResponse<Blob>) => {\n const url = URL.createObjectURL(result.body);\n return new documentActions.ConvertSuccess(url);\n }),\n catchError(error => {\n return of(new documentActions.ConvertFailure(error));\n }));\n }));\n\n @Effect()\n loadRotation$ = this.actions$.pipe(\n ofType(documentActions.LOAD_ROTATION),\n map((action: documentActions.LoadRotation) => action.payload),\n switchMap((documentId) => {\n return this.rotationApiService.getRotation(documentId).pipe(\n map(resp => {\n return new documentActions.LoadRotationSuccess(resp.body);\n }),\n catchError(error => {\n return of(new documentActions.LoadRotationFailure(error));\n }));\n }));\n\n @Effect()\n saveRotation$ = this.actions$.pipe(\n ofType(documentActions.SAVE_ROTATION),\n map((action: documentActions.SaveRotation) => action.payload),\n switchMap((payload) => {\n return this.rotationApiService.saveRotation(payload).pipe(\n map(resp => {\n return new documentActions.SaveRotationSuccess(resp.body);\n }),\n catchError(error => {\n return of(new documentActions.SaveRotationFailure(error));\n }));\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { IcpSessionApiService } from '../../icp/icp-session-api.service';\nimport { IcpUpdateService } from '../../icp/icp-update.service';\nimport * as icpActions from '../actions/icp.actions' ;\nimport { IcpSession } from '../../icp/icp.interfaces';\n\n@Injectable()\nexport class IcpEffects {\n\n constructor(private actions$: Actions,\n private icpApiService: IcpSessionApiService,\n private icpUpdateService: IcpUpdateService) {}\n\n @Effect()\n loadIcpSession$ = this.actions$.pipe(\n ofType(icpActions.LOAD_ICP_SESSION),\n map((action: icpActions.LoadIcpSession) => action.payload),\n exhaustMap((caseId: string) =>\n this.icpApiService.loadSession(caseId)\n .pipe(\n map(res => new icpActions.JoinIcpSocketSession(res)),\n catchError(error => of(new icpActions.LoadIcpSessionFailure(error)))\n )\n ));\n\n\n @Effect()\n joinIcpSocketSession$ = this.actions$.pipe(\n ofType(icpActions.JOIN_ICP_SOCKET_SESSION),\n map((action: icpActions.JoinIcpSocketSession) => action.payload),\n switchMap((res: {username: string, session: IcpSession}) =>\n this.icpUpdateService.joinSession(res.username, res.session)\n .pipe(map(participants => new icpActions.IcpSocketSessionJoined({session: res.session, participantInfo: participants})))\n ));\n}\n","import { AnnotationEffects } from './annotation.effects';\nimport { BookmarksEffects } from './bookmarks.effects';\nimport { RedactionEffects } from './redaction.effects';\nimport { DocumentEffects } from './document.effects';\nimport { IcpEffects } from './icp.effects';\n\nexport const effects: any[] = [AnnotationEffects, BookmarksEffects, RedactionEffects, DocumentEffects, IcpEffects];\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { TreeNode } from 'angular-tree-component';\n\nimport { DeleteBookmark, MoveBookmark, UpdateBookmark } from '../../../../store/actions/bookmark.actions';\nimport { Bookmark, BookmarkNode } from '../../../../store/models/bookmarks.interface';\nimport * as bookmarksSelectors from '../../../../store/selectors/bookmark.selectors';\nimport { AnnotationSetState} from '../../../../store/reducers/annotations.reducer';\nimport { DocumentPages } from '../../../../store/reducers/document.reducer';\nimport * as fromDocument from '../../../../store/selectors/document.selectors';\nimport * as fromBookmarks from '../../../../store/reducers/bookmarks.reducer';\nimport { getBookmarkChildren } from '../../../../store/bookmarks-store-utils';\n\n@Component({\n selector: 'mv-bookmarks',\n templateUrl: './bookmarks.component.html'\n})\nexport class BookmarksComponent implements OnInit, OnDestroy {\n\n @Input() bookmarkNodes: BookmarkNode[];\n @Input() zoom: number;\n @Input() rotate: number;\n @Output() goToDestination = new EventEmitter<any[]>();\n\n pageLookup: {[pageId: number]: DocumentPages } = {};\n editableBookmark: string;\n BOOKMARK_CHAR_LIMIT = 30;\n\n options = {\n allowDrag: true,\n allowDrop: true\n };\n\n $subscription: Subscription;\n\n constructor(private store: Store<fromBookmarks.BookmarksState|AnnotationSetState>) {}\n\n ngOnInit(): void {\n this.$subscription = this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editableId => this.editableBookmark = editableId);\n this.$subscription.add(this.store.select(fromDocument.getPages)\n .subscribe(pages => {\n\n Object.keys(pages).map(key => {\n this.pageLookup[key] = pages[key];\n });\n\n }));\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n editBookmark(id) {\n this.editableBookmark = id;\n }\n\n onBookmarkMove({ node, from, to }: any) {\n let movedBookmarks = [{\n ...node,\n previous: to.index > 0 ? to.parent.children[to.index - 1].id : undefined,\n parent: to.parent.documentId ? to.parent.id : undefined\n }];\n let fromNext = this.getSibling(from, from.index);\n fromNext = fromNext && fromNext.id === node.previous ? this.getSibling(from, from.index + 1) : fromNext;\n if (fromNext) {\n movedBookmarks = [...movedBookmarks, { ...fromNext, previous: node.previous }];\n }\n const toNext = this.getSibling(to, to.index + 1);\n if (toNext) {\n movedBookmarks = [ ...movedBookmarks, { ...toNext, previous: node.id }];\n }\n this.store.dispatch(new MoveBookmark(movedBookmarks));\n }\n\n deleteBookmark(node: TreeNode) {\n let next: Bookmark;\n const siblings = node.parent.children;\n if (siblings.length > node.index + 1) {\n next = siblings[node.index + 1].data;\n next.previous = node.data.previous;\n }\n this.store.dispatch(new DeleteBookmark({\n deleted: [node.data.id, ...getBookmarkChildren(node.data.children)], updated: next\n }));\n }\n\n updateBookmark(bookmark: Bookmark, name) {\n const editedBookmark = {\n ... bookmark,\n name\n };\n this.store.dispatch(new UpdateBookmark(editedBookmark));\n this.editableBookmark = undefined;\n }\n\n goToBookmark(bookmark: Bookmark) {\n const thisPage = this.pageLookup[bookmark.pageNumber + 1];\n const defaultHeight = thisPage.styles.height;\n const defaultScaleY = this.scaledY(bookmark.yCoordinate, defaultHeight, thisPage);\n\n let top = 0, left = 0;\n switch (this.rotate) {\n case 90:\n left = - defaultScaleY;\n break;\n case 180:\n top = this.scaledY(bookmark.yCoordinate, (defaultHeight - (24 * this.zoom)), thisPage);\n break;\n case 270:\n left = defaultScaleY;\n break;\n default:\n top = defaultScaleY;\n }\n\n this.goToDestination.emit([\n bookmark.pageNumber,\n { 'name': 'XYZ' },\n left,\n top\n ]);\n }\n\n private getSibling(node, index) {\n return node.parent.children.length > index ? node.parent.children[index] : undefined;\n }\n\n private scaledY(yCoordinate: number, height: number, page: DocumentPages): number {\n const viewportScale = page.viewportScale / this.zoom;\n return ((height / this.zoom) - yCoordinate) / viewportScale;\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { ResponseType, ViewerException } from '../viewer-exception.model';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/document.reducer';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { Subscription } from 'rxjs';\nimport * as fromSelectors from '../../store/selectors/document.selectors';\nimport { AnnotationSet } from '../../annotations/annotation-set/annotation-set.model';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'mv-conversion-viewer',\n templateUrl: './convertible-content-viewer.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ConvertibleContentViewerComponent implements OnInit, OnDestroy {\n\n @Input() originalUrl;\n @Input() downloadFileName: string;\n\n @Input() height;\n\n @Input() enableAnnotations: boolean;\n @Input() enableRedactions: boolean;\n @Input() annotationSet: AnnotationSet | null;\n\n\n @Output() mediaLoadStatus = new EventEmitter<ResponseType>();\n @Output() viewerException = new EventEmitter<ViewerException>();\n @Output() documentTitle = new EventEmitter<string>();\n\n private $subscription: Subscription;\n convertedUrl: string;\n\n constructor(private store: Store<fromStore.DocumentState>) {\n }\n\n ngOnInit(): void {\n this.store.dispatch(new fromDocumentActions.Convert(this.extractDMStoreDocId(this.originalUrl)));\n this.$subscription = this.store.pipe(select(fromSelectors.getConvertedDocument), filter(value => !!value))\n .subscribe((docInfo) => {\n if (docInfo.url) {\n this.convertedUrl = docInfo.url;\n this.store.dispatch(new fromDocumentActions.ClearConvertDocUrl());\n } else {\n this.onLoadException(new ViewerException(docInfo.error));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n onMediaLoad(status: ResponseType) {\n this.mediaLoadStatus.emit(status);\n }\n\n onLoadException(exception: ViewerException) {\n this.viewerException.emit(exception);\n }\n\n onDocumentTitleChange(title: string) {\n this.documentTitle.emit(title);\n }\n\n // todo move this to common place for media viewer and pdf\n private extractDMStoreDocId(url: string): string {\n\n if (url.includes('/documents/')) {\n url = url.split('/documents/')[1];\n } else if (url.includes('/documentsv2/')) {\n url = url.split('/documentsv2/')[1];\n }\n return url.replace('/binary', '');\n }\n}\n","import { Component } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar.module';\n\n@Component({\n selector: 'mv-confirm-action',\n templateUrl: './confirm-action-dialog.component.html',\n})\nexport class ConfirmActionDialogComponent {\n\n constructor(private toolbarEvents: ToolbarEventService) {}\n\n onCancel() {\n this.toolbarEvents.icp.leavingSession.next(false);\n }\n\n onConfirm() {\n this.toolbarEvents.icp.confirmExit();\n this.toolbarEvents.icp.leavingSession.next(false);\n }\n}\n","import {Bookmark, BookmarksPerPage} from '../../viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces';\nimport {Component, Input, OnInit} from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport * as fromSelectors from '../../store/selectors/bookmark.selectors';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'mv-bookmark-icons',\n templateUrl: './bookmark-icons.component.html'\n})\nexport class BookmarkIconsComponent implements OnInit {\n\n @Input() zoom: number;\n @Input() rotate: number;\n bookmarksPerPage$: Observable<BookmarksPerPage[]>;\n bookmarks: Bookmark[];\n documentId: string;\n\n constructor(private store: Store<fromStore.State>) {}\n\n ngOnInit(): void {\n this.bookmarksPerPage$ = this.store.pipe(select(fromSelectors.getBookmarksPerPage));\n }\n\n}\n","import { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport * as fromDocumentActions from '../../store/actions/document.actions';\nimport { select, Store } from '@ngrx/store';\nimport * as fromDocuments from '../../store/selectors/document.selectors';\nimport { filter, take } from 'rxjs/operators';\nimport { Rotation } from './rotation.model';\nimport { ResponseType } from '../viewer-exception.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { ToolbarButtonVisibilityService } from '../../toolbar/toolbar-button-visibility.service';\nimport { Subscription } from 'rxjs';\n\n\n@Directive({\n selector: '[mvRotationPersist]'\n})\nexport class RotationPersistDirective implements OnInit, OnDestroy {\n\n documentId: string;\n rotation = 0;\n savedRotation = 0;\n\n $subscriptions: Subscription;\n\n constructor(private el: ElementRef,\n private store: Store<fromStore.DocumentState>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private toolbarEvents: ToolbarEventService) {\n }\n\n ngOnInit() {\n this.$subscriptions = this.toolbarEvents.rotateSubject.subscribe(rotation => this.onRotate(rotation));\n this.$subscriptions\n .add(this.toolbarEvents.saveRotationSubject.subscribe(() => this.saveRotation()))\n .add(this.store.pipe(select(fromDocuments.getRotation))\n .subscribe(rotation => this.savedRotation = rotation))\n .add(this.store.pipe(select(fromDocuments.getDocumentId))\n .subscribe(documentId => this.documentId = documentId));\n }\n\n ngOnDestroy() {\n this.$subscriptions.unsubscribe();\n }\n\n @HostListener('mediaLoadStatus', ['$event'])\n onMediaLoad(status: ResponseType) {\n this.rotation = 0;\n this.store.dispatch(new fromDocumentActions.LoadRotation(this.documentId));\n this.store.pipe(select(fromDocuments.rotationLoaded),\n filter(value => !!value),\n take(1))\n .subscribe(() => {\n if (this.savedRotation) {\n this.toolbarEvents.rotateSubject.next(this.savedRotation);\n }\n });\n }\n\n private onRotate(rotation: number) {\n this.rotation = (this.rotation + rotation) % 360;\n this.toolbarButtons.showSaveRotationButton = this.savedRotation !== this.rotation;\n }\n\n private saveRotation() {\n const payload: Rotation = {\n documentId: this.documentId,\n rotationAngle: this.rotation\n };\n this.store.dispatch(new fromDocumentActions.SaveRotation(payload));\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { IcpParticipant, IcpState } from '../icp.interfaces';\nimport { select, Store } from '@ngrx/store';\nimport * as fromSelectors from '../../store/selectors/icp.selectors';\n\n@Component({\n selector: 'mv-participants-list',\n templateUrl: './participants-list.component.html'\n})\nexport class ParticipantsListComponent implements OnInit, OnDestroy {\n\n subscription: Subscription;\n participants$: Observable<IcpParticipant[]>;\n presenter$: Observable<IcpParticipant>;\n isPresenter$: Observable<boolean>;\n\n showParticipantsList = false;\n\n constructor(private readonly toolbarEvents: ToolbarEventService,\n private store: Store<IcpState>) {}\n\n ngOnInit() {\n this.participants$ = this.store.pipe(select(fromSelectors.getParticipants));\n this.presenter$ = this.store.pipe(select(fromSelectors.getPresenter));\n this.isPresenter$ = this.store.pipe(select(fromSelectors.isPresenter));\n\n this.subscription = this.toolbarEvents.icp.participantsListVisible.subscribe(isVisible => this.showParticipantsList = isVisible);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","import { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport uuid from 'uuid';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar.module';\nimport * as fromStore from '../../../../store/reducers/reducers';\nimport * as fromDocument from '../../../../store/selectors/document.selectors';\nimport { ViewerEventService } from '../../../../viewers/viewer-event.service';\nimport * as fromAnnotationActions from '../../../../store/actions/annotation.actions';\nimport { HighlightCreateService } from './highlight-create.service';\n\n@Directive({\n selector: '[mvCreateTextHighlight]'\n})\nexport class HighlightCreateDirective implements OnInit, OnDestroy {\n\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n\n $subscription: Subscription;\n\n constructor(private element: ElementRef<HTMLElement>,\n private toolbarEvents: ToolbarEventService,\n private viewerEvents: ViewerEventService,\n private highlightService: HighlightCreateService,\n private store: Store<fromStore.AnnotationSetState>) {}\n\n ngOnInit() {\n this.$subscription = this.store.select(fromDocument.getPages).subscribe(pages => {\n if (pages[1]) {\n this.allPages = pages;\n }\n });\n }\n\n ngOnDestroy() {\n if (this.$subscription) {\n this.$subscription.unsubscribe();\n }\n }\n\n @HostListener('mouseup', ['$event'])\n onMouseUp(mouseEvent: MouseEvent) {\n const pageElement = (<HTMLElement>(mouseEvent.target as HTMLElement).offsetParent).offsetParent;\n const page = parseInt(pageElement.getAttribute('data-page-number'), 10);\n if (this.toolbarEvents.highlightModeSubject.getValue()) {\n const rectangles = this.getRectangles(mouseEvent, page);\n this.viewerEvents.textSelected({ page, rectangles });\n }\n }\n\n @HostListener('mousedown', ['$event'])\n onPdfViewerClick(event: MouseEvent) {\n this.store.dispatch(new fromAnnotationActions.SelectedAnnotation({\n annotationId: '', selected: false, editable: false\n }));\n this.viewerEvents.clearCtxToolbar();\n }\n\n private getRectangles(event: MouseEvent, page) {\n this.pageHeight = this.allPages[page].styles.height;\n this.pageWidth = this.allPages[page].styles.width;\n this.zoom = parseFloat(this.allPages[page].scaleRotation.scale);\n this.rotate = parseInt(this.allPages[page].scaleRotation.rotation, 10);\n const selection = window.getSelection();\n if (selection) {\n const localElement = <HTMLElement>event.target;\n\n this.removeEnhancedTextModeStyling(localElement);\n\n if (selection.rangeCount && !selection.isCollapsed) {\n const range = selection.getRangeAt(0).cloneRange();\n const clientRects = range.getClientRects();\n\n if (clientRects) {\n const parentRect = localElement.parentElement.getBoundingClientRect();\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n selectionRectangles.push(selectionRectangle);\n }\n return selectionRectangles;\n }\n }\n }\n }\n\n private createTextRectangle(rect: any, parentRect: any): Rectangle {\n const height = rect.bottom - rect.top;\n const width = rect.right - rect.left;\n const top = rect.top - parentRect.top;\n const left = rect.left - parentRect.left;\n\n let rectangle = this.highlightService.applyRotation(this.pageHeight, this.pageWidth, height, width, top, left, this.rotate, this.zoom);\n rectangle = { id: uuid(), ...rectangle };\n\n return rectangle as Rectangle;\n }\n\n private removeEnhancedTextModeStyling(element: HTMLElement) {\n if (element.parentElement.children) {\n for (let i = 0; i < element.parentElement.children.length; i++) {\n const child = <HTMLElement>element.parentElement.children[i];\n\n child.style.padding = '0';\n // regex will be targeting the translate style in string\n // e.g. scaleX(0.969918) translateX(-110.684px) translateY(-105.274px) will become scaleX(0.969918)\n const translateCSSRegex = /translate[XYZ]\\(-?\\d*(\\.\\d+)?(px)?\\)/g;\n child.style.transform = child.style.transform.replace(translateCSSRegex, '').trim();\n }\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n OnDestroy,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { Subscription } from 'rxjs';\nimport { ResponseType } from '../viewer-exception.model';\n\n@Component({\n selector: 'mv-multimedia-player',\n templateUrl: './multimedia-player.component.html'\n})\nexport class MultimediaPlayerComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() url: string;\n @Input() downloadFileName: string;\n @Input() multimediaOn: boolean;\n\n @Output() loadStatus = new EventEmitter<ResponseType>();\n\n @ViewChild('downloadLink', {static: false}) downloadLink: ElementRef;\n @ViewChild('videoPlayer', {static: false}) videoPlayer: ElementRef;\n\n playbackMsg = 'loading';\n\n private subscription: Subscription;\n\n constructor(\n public readonly toolbarEvents: ToolbarEventService,\n ) {}\n\n public ngOnInit(): void {\n this.subscription = this.toolbarEvents.downloadSubject\n .subscribe(() => this.downloadLink.nativeElement.click());\n this.loadStatus.emit(ResponseType.SUCCESS);\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.url) {\n this.reloadVideo();\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n reloadVideo() {\n if (this.videoPlayer) {\n this.playbackMsg = 'loading';\n this.videoPlayer.nativeElement.load();\n }\n }\n\n onSuccess() {\n this.playbackMsg = 'success';\n }\n\n onError() {\n this.playbackMsg = 'error';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PdfViewerComponent } from './viewers/pdf-viewer/pdf-viewer.component';\nimport { ImageViewerComponent } from './viewers/image-viewer/image-viewer.component';\nimport { UnsupportedViewerComponent } from './viewers/unsupported-viewer/unsupported-viewer.component';\nimport { MediaViewerComponent } from './media-viewer.component';\nimport { ToolbarModule } from './toolbar/toolbar.module';\nimport { PdfJsWrapperFactory } from './viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider';\nimport { AnnotationsModule } from './annotations/annotations.module';\nimport { CommentService } from './annotations/comment-set/comment/comment.service';\nimport { GrabNDragDirective } from './viewers/grab-n-drag.directive';\nimport { SideBarComponent } from './viewers/pdf-viewer/side-bar/side-bar.component';\nimport { OutlineItemComponent } from './viewers/pdf-viewer/side-bar/outline-item/outline-item.component';\nimport { TagInputModule } from 'ngx-chips';\nimport { RouterModule } from '@angular/router';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule} from '@ngrx/store';\nimport { RedactionComponent } from './redaction/components/redaction.component';\nimport { IcpSessionApiService } from './icp/icp-session-api.service';\nimport { IcpUpdateService } from './icp/icp-update.service';\nimport { IcpService } from './icp/icp.service';\nimport { SocketService } from './icp/socket.service';\nimport { reducers} from './store/reducers/reducers';\nimport { effects } from './store/effects/index';\nimport { BookmarksComponent } from './viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component';\nimport { RedactionApiService } from './redaction/services/redaction-api.service';\nimport { MutableDivModule } from 'mutable-div';\nimport { ConvertibleContentViewerComponent } from './viewers/convertible-content-viewer/convertible-content-viewer.component';\nimport { DocumentConversionApiService } from './viewers/convertible-content-viewer/document-conversion-api.service';\nimport { IcpPresenterService } from './icp/icp-presenter.service';\nimport { IcpFollowerService } from './icp/icp-follower.service';\nimport { ConfirmActionDialogComponent } from './icp/confirm-exit/confirm-action-dialog.component';\nimport { TreeModule } from 'angular-tree-component';\nimport { BookmarkIconsComponent } from './bookmark/components/bookmark-icons.component';\nimport { RotationApiService } from './viewers/rotation-persist/rotation-api.service';\nimport { RotationPersistDirective } from './viewers/rotation-persist/rotation-persist.directive';\nimport { ParticipantsListComponent } from './icp/participants-list/participants-list.component';\nimport { HighlightCreateDirective } from './annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive';\nimport {MultimediaPlayerComponent} from './viewers/multimedia-player/multimedia-player.component';\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n ToolbarModule,\n AnnotationsModule,\n TagInputModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n StoreModule.forFeature('media-viewer', reducers),\n EffectsModule.forFeature(effects),\n TreeModule.forRoot(),\n MutableDivModule\n ],\n declarations: [\n PdfViewerComponent,\n SideBarComponent,\n BookmarksComponent,\n OutlineItemComponent,\n ImageViewerComponent,\n UnsupportedViewerComponent,\n MultimediaPlayerComponent,\n MediaViewerComponent,\n ConvertibleContentViewerComponent,\n GrabNDragDirective,\n RotationPersistDirective,\n HighlightCreateDirective,\n ConfirmActionDialogComponent,\n RedactionComponent, // todo made put this into module\n BookmarkIconsComponent,\n ParticipantsListComponent\n ],\n entryComponents: [\n PdfViewerComponent,\n ImageViewerComponent,\n UnsupportedViewerComponent\n ],\n providers: [\n PdfJsWrapperFactory,\n CommentService,\n RedactionApiService,\n IcpSessionApiService,\n IcpUpdateService,\n SocketService,\n IcpService,\n IcpPresenterService,\n IcpFollowerService,\n RedactionApiService,\n DocumentConversionApiService,\n RotationApiService,\n ],\n exports: [\n MediaViewerComponent\n ]\n})\nexport class MediaViewerModule { }\n"],"names":["pdfjsLib.GlobalWorkerOptions","pdfjsLib.getDocument","pdfjsViewer.PDFLinkService","pdfjsViewer.EventBus","pdfjsViewer.PDFFindController","pdfjsViewer.PDFViewer","pdfjsViewer.DownloadManager","fromActions.CONVERT_SUCCESS","fromActions.CONVERT_FAIL","fromActions.CLEAR_CONVERT_DOC_URL","fromActions.LOAD_ROTATION","fromActions.LOAD_ROTATION_SUCCESS","fromActions.LOAD_ROTATION_FAIL","fromActions.SAVE_ROTATION_SUCCESS","fromActions.SET_DOCUMENT_ID","fromActions.ADD_PAGES","fromActions.POSITION_UPDATED","fromAnnotations.LOAD_ANNOTATION_SET","fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS","fromAnnotations.LOAD_ANNOTATION_SET_FAIL","fromAnnotations.SAVE_ANNOTATION_SUCCESS","fromAnnotations.DELETE_ANNOTATION_SUCCESS","fromAnnotations.ADD_OR_EDIT_COMMENT","fromAnnotations.SELECT_ANNOTATION","fromAnnotations.SEARCH_COMMENT","fromAnnotations.APPLY_COMMENT_SUMMARY_FILTER","fromAnnotations.CLEAR_COMMENT_SUMMARY_FILTER","fromTags.ADD_FILTER_TAGS","fromTags.CLEAR_FILTER_TAGS","fromBookmarks.LOAD_BOOKMARKS","fromBookmarks.LOAD_BOOKMARKS_SUCCESS","fromBookmarks.LOAD_BOOKMARKS_FAIL","fromBookmarks.CREATE_BOOKMARK_SUCCESS","fromBookmarks.MOVE_BOOKMARK_SUCCESS","fromBookmarks.DELETE_BOOKMARK_SUCCESS","fromBookmarks.UPDATE_BOOKMARK_SUCCESS","fromRedaction.LOAD_REDACTIONS","fromRedaction.LOAD_REDACTION_SUCCESS","fromRedaction.SAVE_REDACTION_SUCCESS","fromRedaction.SELECT_REDACTION","fromRedaction.DELETE_REDACTION_SUCCESS","fromRedaction.REDACT_SUCCESS","fromRedaction.RESET_REDACTED_DOCUMENT","fromRedaction.UNMARK_ALL_SUCCESS","fromIcpActions.SET_CASE_ID","fromIcpActions.ICP_SOCKET_SESSION_JOINED","fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED","fromIcpActions.ICP_PRESENTER_UPDATED","fromIcpActions.LEAVE_ICP_SOCKET_SESSION","fromDocument.docReducer","fromAnnotation.reducer","fromTags.tagsReducer","fromBookmarks.bookmarksReducer","fromRedaction.redactionReducer","fromIcp.icpReducer","fromFeature.getMVState","fromDocument.getDocPages","fromDocument.getDocId","fromDocument.getPdfPos","fromDocument.getHasDifferentPageSizes","getConvertedDocument","fromDocument.getConvertedDocument","getRotation","fromDocument.getRotation","rotationLoaded","fromDocument.rotationLoaded","fromTagActions.ClearFilterTags","fromDocumentsSelector.getPageDifference","fromDocumentActions.AddPages","fromDocument.AddPages","fromTags.getTagNameEnt","fromTags.getFilters","fromTags.getFilteredComments","fromTags.getFilteredPageEnt","fromAnnotations.getAnnoEnt","fromAnnotations.getAnnoSet","fromAnnotations.getSelectedAnno","fromAnnotations.getCommentEnts","fromAnnotations.getAnnoPageEnt","fromAnnotations.commentSearchQ","fromAnnotations.getSummaryFilters","fromDocument.getPages","fromTags.getFilteredPageEntities","fromTags.getTagFiltered","fromAnnoSelectors.getAnnotationSet","fromDocumentActions.SetDocumentId","fromAnnoActions.LoadAnnotationSet","fromRedactActions.LoadRedactions","fromRedactions.getPageEnt","fromRedactions.getSelectedRedaction","fromRedactions.getRedactedDocInfo","getRedactionEnt","fromRedactions.getRedactionEnt","fromDocument.getDocumentId","fromRedactSelectors.getRedactionArray","getIcpSession","fromIcp.getIcpSession","getPresenter","fromIcp.getPresenter","getClient","fromIcp.getClient","getParticipants","fromIcp.getParticipants","fromIcpSelectors.isPresenter","fromIcpSelectors.getPresenterName","uuid","fromActions.AddOrEditComment","fromSelectors.getSelectedAnnotation","fromActions.SaveAnnotation","fromActions.DeleteAnnotation","fromActions.SelectedAnnotation","fromSelectors.getDocumentIdSetId","fromSelector.getComponentSearchText","fromSelectors.getCommentsArray","fromSelectors.getAnnotationEntities","fromSelectors.getCommentSummary","fromSelectors.getCommentSummaryFilters","fromTagSelectors.getAllTagsArr","fromAnnoActions.ClearCommentSummaryFilters","fromAnnoActions.ApplyCommentSymmaryFilter","fromTagSelectors.getTagFilters","fromAnnoSelector.getFilteredAnnotations","fromActions.SearchComment","fromSelectors.getTagFilters","fromActions.AddFilterTags","fromSelectors.getAllTagsArr","fromActions.ClearFilterTags","fromBookmarks.getBookmarkPageEnt","fromBookmarks.getBookmarkEnts","fromBookmarks.getEditBookmark","fromDocument.getPdfPosition","fromSelectors.getPageEntities","fromBookmarks.getBookmarkInfo","bookmarksSelectors.getBookmarkNodes","bookmarksSelectors.getEditableBookmark","bookmarksSelectors.getBookmarkInfo","fromSelectors.getRedactionsPerPage","fromSelectors.getSelected","fromSelectors.getRedactedDocumentInfo","fromRedaSelectors.getRedactionArray","fromRedaActions.Redact","fromRedaActions.UnmarkAll","fromRedactionActions.SaveRedaction","fromActions.DeleteRedaction","fromActions.SelectRedaction","fromActions.SaveRedaction","fromRedactionActions.ResetRedactedDocument","fromDocSelectors.getPdfPosition","fromIcpSelectors.getPresenter","fromIcpSelectors.getCaseId","fromIcpActions.LoadIcpSession","fromIcpSelectors.getIcpSession","fromIcpSelectors.getClient","fromIcpActions.IcpPresenterUpdated","fromIcpActions.IcpParticipantListUpdated","fromIcpActions.LeaveIcpSocketSession","annotationsActions.LOAD_ANNOTATION_SET","annotationsActions.LoadAnnotationSetSucess","annotationsActions.LoadAnnotationSetFail","annotationsActions.SAVE_ANNOTATION","annotationsActions.SaveAnnotationSuccess","annotationsActions.DELETE_ANNOTATION","annotationsActions.DeleteAnnotationSuccess","annotationsActions.DeleteAnnotationFail","bookmarksActions.LOAD_BOOKMARKS","bookmarksActions.LoadBookmarksSuccess","bookmarksActions.LoadBookmarksFailure","bookmarksActions.CREATE_BOOKMARK","bookmarksActions.CreateBookmarkSuccess","bookmarksActions.CreateBookmarkFailure","bookmarksActions.MOVE_BOOKMARK","bookmarksActions.MoveBookmarkSuccess","bookmarksActions.MoveBookmarkFailure","bookmarksActions.DELETE_BOOKMARK","bookmarksActions.DeleteBookmarkSuccess","bookmarksActions.UpdateBookmarkSuccess","bookmarksActions.DeleteBookmarkFailure","bookmarksActions.UPDATE_BOOKMARK","bookmarksActions.UpdateBookmarkFailure","redactionActions.LOAD_REDACTIONS","redactionActions.LoadRedactionSuccess","redactionActions.LoadRedactionFailure","redactionActions.SAVE_REDACTION","redactionActions.SaveRedactionSuccess","redactionActions.SaveRedactionFailure","redactionActions.DELETE_REDACTION","redactionActions.DeleteRedactionSuccess","redactionActions.DeleteRedactionFailure","redactionActions.REDACT","redactionActions.RedactSuccess","redactionActions.RedactFailure","redactionActions.UNMARK_ALL","redactionActions.UnmarkAllSuccess","documentActions.CONVERT","documentActions.ConvertSuccess","documentActions.ConvertFailure","documentActions.LOAD_ROTATION","documentActions.LoadRotationSuccess","documentActions.LoadRotationFailure","documentActions.SAVE_ROTATION","documentActions.SaveRotationSuccess","documentActions.SaveRotationFailure","icpActions.LOAD_ICP_SESSION","icpActions.JoinIcpSocketSession","icpActions.LoadIcpSessionFailure","icpActions.JOIN_ICP_SOCKET_SESSION","icpActions.IcpSocketSessionJoined","fromDocumentActions.Convert","fromSelectors.getConvertedDocument","fromDocumentActions.ClearConvertDocUrl","fromSelectors.getBookmarksPerPage","fromDocuments.getRotation","fromDocuments.getDocumentId","fromDocumentActions.LoadRotation","fromDocuments.rotationLoaded","fromDocumentActions.SaveRotation","fromSelectors.getParticipants","fromSelectors.getPresenter","fromSelectors.isPresenter","fromAnnotationActions.SelectedAnnotation"],"mappings":"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"}
|