@hmcts/media-viewer 4.1.6 → 4.1.7
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/LICENCE +9 -0
- package/esm2022/lib/icp/icp-update.service.mjs +9 -5
- package/esm2022/lib/icp/socket.service.mjs +12 -7
- package/fesm2022/hmcts-media-viewer.mjs +19 -10
- package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
- package/lib/icp/icp-update.service.d.ts +1 -0
- package/lib/icp/icp-update.service.d.ts.map +1 -1
- package/lib/icp/socket.service.d.ts +1 -1
- package/lib/icp/socket.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/LICENSE +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmcts-media-viewer.mjs","sources":["../../../projects/media-viewer/src/lib/viewers/viewer-exception.model.ts","../../../projects/media-viewer/src/lib/store/actions/document.actions.ts","../../../projects/media-viewer/src/lib/store/actions/tag.actions.ts","../../../projects/media-viewer/src/lib/store/actions/icp.actions.ts","../../../projects/media-viewer/src/lib/store/reducers/document.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/annotation.actions.ts","../../../projects/media-viewer/src/lib/store/store-utils.ts","../../../projects/media-viewer/src/lib/store/reducers/annotations.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/tags.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/bookmark.actions.ts","../../../projects/media-viewer/src/lib/store/bookmarks-store-utils.ts","../../../projects/media-viewer/src/lib/store/reducers/bookmarks.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/redaction.actions.ts","../../../projects/media-viewer/src/lib/store/reducers/redaction.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/icp.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/reducers.ts","../../../projects/media-viewer/src/lib/store/selectors/document.selectors.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.ts","../../../projects/media-viewer/src/lib/toolbar/icp-event.service.ts","../../../projects/media-viewer/src/lib/toolbar/toolbar-event.service.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ts","../../../projects/media-viewer/src/lib/print.service.ts","../../../projects/media-viewer/src/lib/viewers/viewer-event.service.ts","../../../projects/media-viewer/src/lib/store/selectors/icp.selectors.ts","../../../projects/media-viewer/src/lib/icp/icp.events.ts","../../../projects/media-viewer/src/lib/icp/socket.service.ts","../../../projects/media-viewer/src/lib/icp/icp-update.service.ts","../../../projects/media-viewer/src/lib/icp/icp-presenter.service.ts","../../../projects/media-viewer/src/lib/icp/icp-follower.service.ts","../../../projects/media-viewer/src/lib/icp/icp.service.ts","../../../projects/media-viewer/src/lib/toolbar/toolbar-button-visibility.service.ts","../../../projects/media-viewer/src/lib/shared/util/helpers/html-templates.helper.ts","../../../projects/media-viewer/src/lib/store/selectors/tag.selectors.ts","../../../projects/media-viewer/src/lib/store/selectors/annotation.selectors.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-search-bar/redaction-search-bar.component.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-search-bar/redaction-search-bar.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.service.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-render.service.ts","../../../projects/media-viewer/src/lib/annotations/services/tags/tags.services.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ts","../../../projects/media-viewer/src/lib/annotations/tags/tags.component.ts","../../../projects/media-viewer/src/lib/annotations/tags/tags.component.html","../../../projects/media-viewer/src/lib/annotations/pipes/date/date.pipe.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-navigate/comments-navigate.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.html","../../../projects/media-viewer/src/lib/annotations/pipes/filter/filter.pipe.ts","../../../projects/media-viewer/src/lib/annotations/pipes/unsnake/unsnake.pipe.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-set-header.component.html","../../../projects/media-viewer/src/lib/store/selectors/bookmark.selectors.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/annotation-view.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/annotation-view.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-set.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-set.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html","../../../projects/media-viewer/src/lib/viewers/grab-n-drag.directive.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ts","../../../projects/media-viewer/src/lib/store/selectors/redaction.selectors.ts","../../../projects/media-viewer/src/lib/redaction/components/redaction.component.ts","../../../projects/media-viewer/src/lib/redaction/components/redaction.component.html","../../../projects/media-viewer/src/lib/bookmark/components/bookmark-icons.component.ts","../../../projects/media-viewer/src/lib/bookmark/components/bookmark-icons.component.html","../../../projects/media-viewer/src/lib/icp/participants-list/participants-list.component.ts","../../../projects/media-viewer/src/lib/icp/participants-list/participants-list.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/viewer-util.service.ts","../../../projects/media-viewer/src/lib/viewers/image-viewer/image-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/image-viewer/image-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/unsupported-viewer/unsupported-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/unsupported-viewer/unsupported-viewer.component.html","../../../projects/media-viewer/src/lib/annotations/services/annotation-api/annotation-api.service.ts","../../../projects/media-viewer/src/lib/shared/util/services/number.helper.service.ts","../../../projects/media-viewer/src/lib/toolbar/search-bar/search-bar.component.ts","../../../projects/media-viewer/src/lib/toolbar/search-bar/search-bar.component.html","../../../projects/media-viewer/src/lib/toolbar/main-toolbar/main-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/main-toolbar/main-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-toolbar/redaction-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/icp-toolbar/icp-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/icp-toolbar/icp-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/highlight-toolbar/highlight-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/highlight-toolbar/highlight-toolbar.component.html","../../../projects/media-viewer/src/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-label/gov-uk-label.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-date/gov-uk-date.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-date/gov-uk-date.component.html","../../../projects/media-viewer/src/lib/annotations/comments-summary/comments-summary.component.ts","../../../projects/media-viewer/src/lib/annotations/comments-summary/comments-summary.component.html","../../../projects/media-viewer/src/lib/viewers/multimedia-player/multimedia-player.component.ts","../../../projects/media-viewer/src/lib/viewers/multimedia-player/multimedia-player.component.html","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/rotation-persist/rotation-persist.directive.ts","../../../projects/media-viewer/src/lib/icp/confirm-exit/confirm-action-dialog.component.ts","../../../projects/media-viewer/src/lib/icp/confirm-exit/confirm-action-dialog.component.html","../../../projects/media-viewer/src/lib/media-viewer.component.ts","../../../projects/media-viewer/src/lib/media-viewer.component.html","../../../projects/media-viewer/src/lib/toolbar/toolbar.module.ts","../../../projects/media-viewer/src/lib/annotations/services/bookmarks-api/bookmarks-api.service.ts","../../../projects/media-viewer/src/lib/shared/shared.module.ts","../../../projects/media-viewer/src/lib/annotations/annotations.module.ts","../../../projects/media-viewer/src/lib/store/effects/annotation.effects.ts","../../../projects/media-viewer/src/lib/store/effects/bookmarks.effects.ts","../../../projects/media-viewer/src/lib/redaction/services/redaction-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/redaction.effects.ts","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/document-conversion-api.service.ts","../../../projects/media-viewer/src/lib/viewers/rotation-persist/rotation-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/document.effects.ts","../../../projects/media-viewer/src/lib/icp/icp-session-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/icp.effects.ts","../../../projects/media-viewer/src/lib/store/effects/index.ts","../../../projects/media-viewer/src/lib/media-viewer.module.ts","../../../projects/media-viewer/src/public_api.ts","../../../projects/media-viewer/src/hmcts-media-viewer.ts"],"sourcesContent":["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 { 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: { caseId: string, documentId: 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 const pageNumberInput = document.getElementById('pageNumber') as HTMLInputElement;\n const pageIndex = pageNumberInput?.value ? parseInt(pageNumberInput.value, 10) - 1 : 0;\n const loadedPage = payload[pageIndex]?.div['attributes']?.style?.value ?? '';\n payload.forEach(page => {\n const sizingValue = page.div?.['attributes']?.style?.value ?? '';\n const widthMatch = sizingValue.match(/width:\\s*round\\(down,\\s*var\\(--scale-factor\\)\\s*\\*\\s*([\\d.]+)([a-z%]+)?,.*var\\(--scale-round-x, ([\\d.]+)([a-z%]+)?\\)\\)/);\n const heightMatch = sizingValue.match(/height:\\s*round\\(down,\\s*var\\(--scale-factor\\)\\s*\\*\\s*([\\d.]+)([a-z%]+)?,.*var\\(--scale-round-y, ([\\d.]+)([a-z%]+)?\\)\\)/);\n const scaleRoundXMatch = loadedPage.match(/--scale-round-x:\\s*([\\d.]+)([a-z%]+)?/);\n const scaleRoundYMatch = loadedPage.match(/--scale-round-y:\\s*([\\d.]+)([a-z%]+)?/);\n // You can now use widthUnit, heightUnit, scaleRoundXUnit, scaleRoundYUnit as needed\n const scaleFactor = page.viewportScale ?? 1;\n const scaleRoundX = scaleRoundXMatch ? parseFloat(scaleRoundXMatch[1]) : 1;\n const scaleRoundY = scaleRoundYMatch ? parseFloat(scaleRoundYMatch[1]) : 1;\n const baseWidth = widthMatch ? parseFloat(widthMatch[1]) : undefined;\n const baseHeight = heightMatch ? parseFloat(heightMatch[1]) : undefined;\n function roundDown(value: number, step: number): number {\n return Math.floor(value / step) * step;\n }\n const computedWidth = baseWidth !== undefined\n ? roundDown(scaleFactor * baseWidth, scaleRoundX)\n : page.div['clientWidth'];\n const computedHeight = baseHeight !== undefined\n ? roundDown(scaleFactor * baseHeight, scaleRoundY)\n : page.div['clientHeight'];\n\n if (!hasDifferentPageSize && pageHeight && pageWidth &&\n (pageHeight !== computedHeight || pageWidth !== computedWidth)) {\n hasDifferentPageSize = true;\n } else {\n pageHeight = computedHeight;\n pageWidth = computedWidth;\n }\n const styles = {\n left: page.div['offsetLeft'],\n height: computedHeight,\n width: computedWidth\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_SET = '[Annotations] Save Annotation Set';\nexport const SAVE_ANNOTATION_SET_SUCCESS = '[Annotations] Save Annotation Set Success';\nexport const SAVE_ANNOTATION_SET_FAIL = '[Annotations] Save 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 SaveAnnotationSet implements Action {\n readonly type = SAVE_ANNOTATION_SET;\n constructor(public payload: AnnotationSet) { }\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 SaveAnnotationSetSuccess implements Action {\n readonly type = SAVE_ANNOTATION_SET_SUCCESS;\n constructor(public payload: 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 SaveAnnotationSetFail implements Action {\n readonly type = SAVE_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 | SaveAnnotationSetSuccess\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 { v4 as uuid } from 'uuid';\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_SET_SUCCESS: {\n const anno = action.payload.annotations;\n const annEntities = {\n ...state.annotationEntities,\n ...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 ...anno,\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\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';\nexport const UPDATE_BOOKMARK_SCROLL_TOP = '[Bookmarks] Update Bookmark Scroll Top'\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\nexport class UpdateBookmarkScrollTop implements Action {\n readonly type = UPDATE_BOOKMARK_SCROLL_TOP;\n constructor(public payload: number) { }\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 | UpdateBookmarkScrollTop;\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 scrollTop?: number;\n}\n\nexport const initialBookmarksState: BookmarksState = {\n bookmarks: [],\n bookmarkEntities: {},\n bookmarkPageEntities: {},\n editableBookmark: undefined,\n loaded: false,\n loading: false,\n scrollTop: null,\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]\n = bookmarkPageEntities[pageNumber].filter(bookmark => !bmrkIds.includes(bookmark.id));\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 case fromBookmarks.UPDATE_BOOKMARK_SCROLL_TOP: {\n const scrollTop: number = action.payload;\n return {\n ...state,\n scrollTop: scrollTop\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;\nexport const getScrollTop = (state: BookmarksState) => state.scrollTop;","import { Action } from '@ngrx/store';\nimport { BulkRedaction, 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 SAVE_BULK_REDACTION = '[Redaction] Save bulk Redaction';\nexport const SAVE_BULK_REDACTION_SUCCESS = '[Redaction] Save bulk Redaction Success';\nexport const SAVE_BULK_REDACTION_FAIL = '[Redaction] Save bulk 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 SaveBulkRedactionFailure implements Action {\n readonly type = SAVE_BULK_REDACTION_FAIL;\n constructor(public payload: any) { }\n}\n\nexport class SaveBulkRedaction implements Action {\n readonly type = SAVE_BULK_REDACTION;\n constructor(public payload: BulkRedaction) { }\n}\n\nexport class SaveBulkRedactionSuccess implements Action {\n readonly type = SAVE_BULK_REDACTION_SUCCESS;\n constructor(public payload: BulkRedaction) { }\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 | SaveBulkRedactionSuccess;\n","import { map } from 'rxjs/operators';\nimport * 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 case fromRedaction.SAVE_BULK_REDACTION_SUCCESS: {\n const payloadResult = Object.assign({}, ...action.payload.searchRedactions.map((x) => ({ [x.redactionId]: x })));\n const redactionEntities = {\n ...state.redactionEntities,\n ...payloadResult\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 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 { Outline } from './../side-bar/outline-item/outline.model';\nimport { RedactionSearch } from './../../../toolbar/redaction-search-bar/redaction-search.model';\nimport * as pdfjs from 'pdfjs-dist';\nimport { DownloadManager, PDFLinkService, PDFViewer } from 'pdfjs-dist/web/pdf_viewer.mjs';\nimport 'pdfjs-dist/build/pdf.worker';\nimport 'pdfjs-dist/build/pdf.mjs';\nimport { Subject } from 'rxjs';\nimport { SearchOperation, SearchResultsCount, ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\npdfjs.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 public redactionPages: { start: number, end: number }[];\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('pagechanging', e => this.drawMissingPages(e));\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 this.sendSearchDetails(event);\n });\n this.pdfViewer.eventBus.on('updatefindmatchescount', event => {\n const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious } as SearchResultsCount\n this.toolbarEvents.searchResultsCountSubject.next(result);\n });\n this.zoomValue = 1;\n this.redactionPages = []\n // Subscribe to redactionMode changes and run a function when it changes\n this.toolbarEvents.redactionMode.subscribe((redactionModeValue) => {\n this.onRedactionModeChanged(redactionModeValue);\n });\n }\n\n sendSearchDetails(event: any) {\n if (event.state !== FindState.PENDING) {\n const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious } as SearchResultsCount\n this.toolbarEvents.searchResultsCountSubject.next(result);\n if (event?.source?.selected?.pageIdx !== -1 && event.matchesCount.total > 0) {\n this.toolbarEvents.redactionSerachSubject.next({\n page: event?.source?.selected?.pageIdx,\n matchedIndex: event?.source?.selected?.matchIdx,\n matchesCount: event.matchesCount.total\n } as RedactionSearch\n );\n }\n }\n }\n\n // in the event a user fast scrolls or navigates to a specific page, \n // we need to render the missing pages so redaction box is in right place\n drawMissingPages(e) {\n const redactionMode = this.toolbarEvents.redactionMode.getValue();\n const { pageNumber, previous: previousPageNumber } = e;\n if (!previousPageNumber || pageNumber < previousPageNumber || Math.abs(pageNumber - previousPageNumber) <= 1) {\n return;\n }\n const start = previousPageNumber + 1;\n const end = pageNumber;\n // if the redaction mode is on render the pages now\n if (redactionMode) {\n for (let i = start; i < end; i++) {\n const page = this.pdfViewer._pages[i - 1];\n if (page && !page.renderingState) {\n page.draw();\n }\n }\n } else {\n // keep track of pages as if a user skips to a page we need to render all the missing pages\n console.log('Adding redaction pages to queue:', start, end);\n this.redactionPages.push({ start, end });\n }\n }\n\n public onRedactionModeChanged(redactionMode: boolean) {\n if (redactionMode && this.redactionPages.length) {\n this.redactionPages.forEach(({ start, end }) => {\n console.log('Drawing redaction pages from queue:', start, end);\n for (let i = start; i < end; i++) {\n const page = this.pdfViewer._pages[i - 1];\n if (page && !page.renderingState) {\n page.draw();\n }\n }\n });\n this.redactionPages = [];\n }\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 = this.createLoadingTask(documentUrl);\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 if (this.pdfViewer.linkService instanceof PDFLinkService) {\n const linkservice: PDFLinkService = this.pdfViewer.linkService;\n linkservice.setDocument(pdfDocument, null);\n }\n\n const outlineNode = await pdfDocument.getOutline();\n const outline = outlineNode ? outlineNode.map(x => {\n return {\n bold: x.bold,\n color: x.color,\n count: x.count,\n dest: x.dest,\n italic: x.italic,\n items: x.items,\n newWindow: x.newWindow,\n title: x.title,\n unsafeUrl: x.unsafeUrl,\n url: x.url\n } as Outline\n }) : null;\n\n\n\n if (outline) {\n await this.setOutlinePageNumbers(pdfDocument, outline);\n }\n\n this.documentOutline = outline;\n this.outlineLoaded.next(this.documentOutline);\n const pdfMetaData = await pdfDocument.getMetadata();\n this.setCurrentPDFTitle((pdfMetaData.info as any)?.Title);\n } catch (e) {\n this.documentLoadFailed.next(e);\n }\n }\n\n private createLoadingTask(documentUrl: string) {\n return pdfjs.getDocument({\n url: documentUrl,\n cMapUrl: 'assets/minified/cmaps',\n cMapPacked: true,\n withCredentials: true,\n isEvalSupported: false\n });\n }\n\n private async setOutlinePageNumbers(pdfDocument, outlineArray: Outline[]) {\n outlineArray.forEach(async (outline: Outline) => {\n await this.setNestedOutlinePageNumbers(pdfDocument, outline);\n });\n }\n\n private async setNestedOutlinePageNumbers(pdfDocument, outline: Outline) {\n outline.pageNumber = await this.getOutlinePageNumber(pdfDocument, outline);\n outline.items.forEach(async (outlineItem: Outline) => {\n outlineItem.pageNumber = await this.getOutlinePageNumber(pdfDocument, outlineItem);\n this.setNestedOutlinePageNumbers(pdfDocument, outlineItem);\n });\n }\n\n private async getOutlinePageNumber(pdfDocument, outline: Outline): Promise<number> {\n const dest = outline.dest;\n const pageIndex = await pdfDocument.getPageIndex(dest[0]);\n return Number(pageIndex) + 1;\n }\n\n public downloadFile(url: string, filename: string): void {\n this.downloadManager.download(null, 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 ? '' : 'again';\n const data = {\n source: this.pdfViewer,\n type: 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 this.pdfViewer.eventBus.dispatch('find', data);\n }\n\n public clearSearch(): void {\n this.pdfViewer.eventBus.dispatch('findbarclose', {});\n }\n\n public navigateTo(destination: string | any[]) {\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.nativeNavigate(destination);\n }\n\n public nativeNavigate(destination: string | any[]) {\n this.pdfViewer.linkService.goToDestination(destination);\n }\n\n public setZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue).toString();\n this.zoomValue = +this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.zoomValue);\n }\n\n public stepZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue).toString();\n this.zoomValue = +this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.zoomValue);\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 { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IcpEventService {\n\n enabled = new BehaviorSubject(false);\n sessionLaunch = new Subject<void>();\n becomingPresenter = new Subject<void>();\n stoppingPresenting = new Subject<void>();\n leavingSession = new BehaviorSubject(false);\n sessionExitConfirmed = new Subject<void>();\n participantsListVisible = new BehaviorSubject(false);\n\n constructor() { }\n\n launchSession = () => {\n this.sessionLaunch.next();\n };\n\n enable = () => {\n this.enabled.next(true);\n this.launchSession();\n };\n\n becomePresenter = () => {\n this.becomingPresenter.next();\n };\n\n stopPresenting = () => {\n this.stoppingPresenting.next();\n };\n\n leaveSession = () => {\n this.leavingSession.next(true);\n };\n\n confirmExit = () => {\n this.sessionExitConfirmed.next();\n this.participantsListVisible.next(false);\n this.enabled.next(false);\n };\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n// import * as icpEvents from './icp-event.service';\n// import { participantsListVisible } from './icp-event.service';\nimport { RedactionSearch } from './redaction-search-bar/redaction-search.model';\nimport { IcpEventService } 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 isPrevious: boolean;\n}\n\nexport enum SearchType {\n Redact = 'Redact',\n Highlight = 'Highlight',\n}\n\nexport interface SearchMode {\n modeType: SearchType;\n isOpen: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToolbarEventService {\n\n constructor(private icpEventService: IcpEventService) {}\n\n public readonly highlightModeSubject = new BehaviorSubject<HighlightMode>(false);\n public readonly highlightToolbarSubject = 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<void>();\n public readonly downloadSubject = new Subject<void>();\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<void>();\n\n public readonly redactionMode = new BehaviorSubject(false);\n public readonly redactionPreview = new Subject<boolean>();\n public readonly applyRedactToDocument = new Subject<void>();\n\n public readonly clearAllRedactMarkers = new Subject<void>();\n public readonly redactWholePage = new Subject<void>();\n public readonly redactionSerachSubject = new Subject<RedactionSearch>();\n public readonly redactAllInProgressSubject = new BehaviorSubject(false);\n public readonly openRedactionSearch = new BehaviorSubject<SearchMode | null>(null);\n\n public readonly sidebarOpen = new BehaviorSubject(false);\n public readonly sidebarOutlineView = new BehaviorSubject(true);\n\n public readonly searchBarHidden = new BehaviorSubject(true);\n public readonly commentsPanelVisible = new BehaviorSubject(false);\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.highlightToolbarSubject.next(false);\n this.drawModeSubject.next(false);\n this.showCommentSummary.next(false);\n this.grabNDrag.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.grabNDrag.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.grabNDrag.next(false);\n this.drawModeSubject.next(true);\n } else {\n this.drawModeSubject.next(false);\n }\n }\n\n public toggleHighlightToolbar(): void {\n this.highlightToolbarSubject.next(!this.highlightToolbarSubject.getValue());\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 toggleSideBarView(toggle: boolean) {\n this.sidebarOutlineView.next(toggle);\n }\n\n public toggleRedactionMode(): void {\n if (this.redactionMode.getValue() === false) {\n this.drawModeSubject.next(false);\n this.grabNDrag.next(false);\n this.redactionMode.next(true);\n } else {\n this.redactionMode.next(false);\n }\n this.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: false });\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 redactPage(): void {\n this.redactWholePage.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.icpEventService.participantsListVisible.next(isVisible);\n }\n}\n","import 'pdfjs-dist/build/pdf.mjs';\nimport * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer.mjs';\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 });\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\n const printWindow = window.open(url);\n printWindow.focus();\n\n setTimeout((printer) => {\n printer.print();\n }, 3000, printWindow);\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 const documentHead = document.head;\n printWindow.document.body.appendChild(documentHead.cloneNode(true));\n printWindow.document.body.appendChild(element.cloneNode(true));\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n setTimeout((printer) => {\n printer.close();\n }, 1000, printWindow);\n }\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<void>();\n public readonly navigationEvent = new Subject<any[]>();\n public readonly navigationEventICP = 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 public goToDestinationICP(destination: any[]) {\n this.navigationEventICP.next(destination);\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","export enum IcpEvents {\n SESSION_JOINED = 'IcpClientJoinedSession',\n CLIENT_DISCONNECTED = 'IcpClientDisconnectedFromSession',\n NEW_PARTICIPANT_JOINED = 'IcpNewParticipantJoinedSession',\n REMOVE_PARTICIPANT = 'IcpRemoveParticipantFromList',\n PARTICIPANTS_UPDATED = 'IcpParticipantsListUpdated',\n UPDATE_PRESENTER = 'IcpNewPresenterStartsPresenting',\n PRESENTER_UPDATED = 'IcpPresenterUpdated',\n UPDATE_SCREEN = 'IcpUpdateScreen',\n SCREEN_UPDATED = 'IcpScreenUpdated',\n SESSION_JOIN = 'IcpClientJoinSession',\n SESSION_LEAVE = 'IcpClientLeaveSession',\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { IcpEvents } from './icp.events';\nimport { IcpParticipant, IcpSession } from './icp.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class SocketService implements OnDestroy {\n\n private socket: WebSocket;\n subscription: Subscription;\n connected$ = new BehaviorSubject<boolean>(false);\n sessionJoined$ = new Subject<void>();\n presenterUpdated$ = new Subject<void>();\n clientDisconnected$ = new Subject<void>();\n participantUpdated$ = new Subject<void>();\n newParticipantJoined$ = new Subject<void>();\n screenUpdated$ = new Subject<void>();\n\n constructor() { }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n connect(url: string, session: IcpSession) {\n const socketUrl = new URL(url);\n socketUrl.searchParams.append('sessionId', `${session.sessionId}`);\n socketUrl.searchParams.append('caseId', `${session.caseId}`);\n socketUrl.searchParams.append('documentId', `${session.documentId}`);\n return this.getSocketClient(socketUrl.toString()).subscribe((socket: WebSocket) => {\n\n socket.onopen = (event: Event) => {\n this.connected$.next(true);\n };\n\n socket.onmessage = (event: MessageEvent) => {\n console.log('onmessage');\n const eventData = JSON.parse(event.data);\n if (eventData.data && eventData.data.eventName) {\n this.messageEventHandller(eventData.data.eventName, eventData.data.data);\n }\n };\n\n socket.onerror = (event: Event) => {\n console.log('onerror');\n };\n\n socket.onclose = (event: CloseEvent) => {\n console.log('onclose');\n };\n });\n }\n\n connected(): Observable<boolean> {\n return this.connected$.asObservable();\n }\n\n join(session) {\n this.emit(IcpEvents.SESSION_JOIN, session);\n }\n\n leave(session) {\n this.emit(IcpEvents.SESSION_LEAVE, session);\n this.subscription.unsubscribe();\n }\n\n emit(event: string, data: any) {\n this.socket.send(JSON.stringify({\n type: 'event',\n event,\n data\n }));\n }\n\n listen(event: IcpEvents): Observable<any> {\n switch (event) {\n case IcpEvents.SESSION_JOINED: {\n return this.sessionJoined$.asObservable();\n }\n case IcpEvents.PRESENTER_UPDATED: {\n return this.presenterUpdated$.asObservable();\n }\n case IcpEvents.CLIENT_DISCONNECTED: {\n return this.clientDisconnected$.asObservable();\n }\n case IcpEvents.PARTICIPANTS_UPDATED: {\n return this.participantUpdated$.asObservable();\n }\n case IcpEvents.NEW_PARTICIPANT_JOINED: {\n return this.newParticipantJoined$.asObservable();\n }\n case IcpEvents.SCREEN_UPDATED: {\n return this.screenUpdated$.asObservable();\n }\n default: {\n break;\n }\n }\n }\n\n messageEventHandller(eventName: string, data: any) {\n switch (eventName) {\n case IcpEvents.SESSION_JOINED: {\n this.sessionJoined$.next(data);\n break;\n }\n case IcpEvents.PRESENTER_UPDATED: {\n this.presenterUpdated$.next(data);\n break;\n }\n case IcpEvents.CLIENT_DISCONNECTED: {\n this.clientDisconnected$.next();\n break;\n }\n case IcpEvents.PARTICIPANTS_UPDATED: {\n this.participantUpdated$.next(data);\n break;\n }\n case IcpEvents.NEW_PARTICIPANT_JOINED: {\n this.newParticipantJoined$.next();\n break;\n }\n case IcpEvents.SCREEN_UPDATED: {\n this.screenUpdated$.next(data);\n break;\n }\n }\n }\n\n getSocketClient(url: string): Observable<WebSocket> {\n this.socket = new WebSocket(url, 'json.webpubsub.azure.v1');\n return of(this.socket);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SocketService } from './socket.service';\nimport { IcpParticipant, IcpScreenUpdate, IcpSession } from './icp.interfaces';\nimport { IcpEvents } from './icp.events';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpUpdateService {\n\n session: IcpSession;\n\n constructor(private socket: SocketService) { }\n\n joinSession(username: string, session: IcpSession, token: string) {\n this.session = session;\n console.log('Joining Session');\n console.log(this.session)\n console.log('Joining session');\n this.socket.connect(`${session.connectionUrl}?access_token=${token}`, session);\n this.socket.connected().subscribe(isConnected => {\n if (isConnected) {\n this.socket.join({ ...this.session, username });\n }\n });\n return this.socket.listen(IcpEvents.SESSION_JOINED);\n }\n\n leaveSession() {\n this.socket.leave(this.session);\n }\n\n newParticipantJoined() {\n return this.socket.listen(IcpEvents.NEW_PARTICIPANT_JOINED);\n }\n\n clientDisconnected() {\n return this.socket.listen(IcpEvents.CLIENT_DISCONNECTED);\n }\n\n removeParticipant(participantId) {\n this.socket.emit(IcpEvents.REMOVE_PARTICIPANT, {\n participantId: participantId,\n caseId: this.session.caseId,\n documentId: this.session.documentId\n });\n }\n\n participantListUpdated() {\n return this.socket.listen(IcpEvents.PARTICIPANTS_UPDATED);\n }\n\n updatePresenter(presenter: IcpParticipant) {\n this.socket.emit(IcpEvents.UPDATE_PRESENTER, {\n ...this.session,\n presenterId: presenter.id,\n presenterName: presenter.username\n });\n }\n\n presenterUpdated() {\n return this.socket.listen(IcpEvents.PRESENTER_UPDATED);\n }\n\n updateScreen(screen: IcpScreenUpdate) {\n const update = {\n body: screen,\n caseId: this.session.caseId,\n documentId: this.session.documentId\n };\n this.socket.emit(IcpEvents.UPDATE_SCREEN, update);\n }\n\n screenUpdated() {\n return this.socket.listen(IcpEvents.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 { distinctUntilChanged, Subscription, take } 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({ providedIn: 'root' })\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 { distinctUntilChanged, take } from 'rxjs/operators';\nimport { IcpState, IcpSession } from './icp.interfaces';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpFollowerService {\n\n session: IcpSession;\n private previousRotation: number|null = null;\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.goToDestinationICP([\n pdfPosition.pageNumber - 1,\n { 'name': 'XYZ' },\n pdfPosition.left,\n pdfPosition.top\n ]);\n }\n this.store.pipe(\n select(fromDocSelectors.getPdfPosition), \n take(1), \n distinctUntilChanged(undefined, a => a.rotation))\n .subscribe(position => {\n if (this.previousRotation === pdfPosition.rotation) {\n return;\n }\n const rotationDelta = (pdfPosition.rotation - position.rotation) % 360;\n if (rotationDelta && 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 * as fromDocument from '../store/selectors/document.selectors';\nimport { filter, take } from 'rxjs/operators';\nimport { IcpEventService } from '../toolbar/icp-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpService implements OnDestroy {\n\n caseId: string;\n client: IcpParticipant;\n presenter: IcpParticipant;\n isPresenter: boolean;\n documentId: string;\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 private readonly icpEventService: IcpEventService) {\n this.subscription = this.store.pipe(select(fromIcpSelectors.getCaseId), filter(value => !!value)).subscribe(caseId => {\n this.caseId = caseId;\n });\n this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.subscription.add(this.icpEventService.sessionLaunch.subscribe(() => {\n\n if (this.caseId && this.documentId) { 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({ caseId: this.caseId, documentId: this.documentId }));\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.icpEventService.becomingPresenter.subscribe(() => this.becomePresenter());\n this.sessionSubscription.add(this.icpEventService.stoppingPresenting.subscribe(() => this.stopPresenting()));\n this.sessionSubscription.add(this.icpEventService.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 { 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","/**\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 static getAdjustedBoundingRect(element: HTMLElement, log: boolean = true): DOMRect {\n const viewportX = window.visualViewport.offsetLeft\n const viewportY = window.visualViewport.offsetTop;\n const viewportScale = window.visualViewport.scale;\n const viewportPageX = window.visualViewport.pageLeft;\n const viewportPageY = window.visualViewport.pageTop;\n if (log && viewportX || viewportY || (viewportScale != 1) || viewportPageX || viewportPageY) {\n console.log(`Element: ${element.id} Viewport X: ${viewportX}, Y: ${viewportY}, Scale: ${viewportScale}, PageX: ${viewportPageX}, PageY: ${viewportPageY}`);\n }\n return element.getBoundingClientRect();\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 const savedComments = comments.filter((comment) => {\n return comment.createdByDetails !== undefined;\n }\n );\n return savedComments.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 { ToolbarEventService } from './../../../../toolbar/toolbar-event.service';\nimport { Injectable } from '@angular/core';\nimport { take} from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport { v4 as uuid } from 'uuid';\nimport moment from 'moment-timezone';\n\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\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';\nimport { RedactRectangle } from '../../../../toolbar/redaction-search-bar/redaction-search.model';\nimport { AnnotationSet } from '../../annotation-set.model';\n\n@Injectable({ providedIn: 'root' })\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 saveAnnotationSet(searchRectangles: RedactRectangle[]) {\n this.store.pipe(select(fromSelectors.getDocumentIdSetId), take(1)).subscribe(anoSetDocId => {\n const annoSet = searchRectangles.map(x => {\n return {\n id: uuid(),\n color: 'FFFF00',\n comments: [],\n page: x.page,\n rectangles: x.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 } as Annotation;\n });\n this.store.dispatch(new fromActions.SaveAnnotationSet({\n id: anoSetDocId.annotationSetId, annotations: annoSet, documentId: anoSetDocId.documentId } as AnnotationSet));\n });\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 { BulkRedaction, Redaction } from './../../redaction/services/redaction.model';\nimport { SearchMode, SearchResultsCount, SearchType } from './../toolbar-event.service';\nimport { RedactionSearch, RedactRectangle } from './redaction-search.model';\nimport { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { Store, select } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Rectangle } from '../../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\nimport * as fromDocument from '../../store/selectors/document.selectors';\nimport * as fromRedactionActions from '../../store/actions/redaction.actions';\nimport { v4 as uuid } from 'uuid';\nimport { HighlightCreateService } from '../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.service';\nimport { some } from 'lodash';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\n\n@Component({\n selector: 'mv-redaction-search-bar',\n templateUrl: './redaction-search-bar.component.html',\n styleUrls: ['./redaction-search-bar.component.scss']\n})\nexport class RedactionSearchBarComponent 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 redactElements: RedactRectangle[] = [];\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n redactAll: boolean;\n openSearchModal: boolean;\n redactAllInProgress: boolean;\n redactAllText?: string;\n searchType: SearchType;\n inProgressText: string;\n titleText: string;\n\n\n private subscription: Subscription;\n private documentId: string;\n public advancedSearchVisible = false;\n\n\n constructor(\n private store: Store<fromStore.State>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService,\n public readonly highlightService: HighlightCreateService,\n ) { }\n\n public ngOnInit(): void {\n this.subscription = this.toolbarEvents.redactionSerachSubject.subscribe((results: RedactionSearch) => this.redactAllSearched(results));\n this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.subscription.add(this.store.pipe(select(fromDocument.getPages)).subscribe((pages) => {\n if (pages[1]) {\n this.allPages = pages;\n }\n }));\n this.subscription.add(\n this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results))\n );\n this.subscription.add(this.toolbarEvents.openRedactionSearch.subscribe((searchMode: SearchMode) => {\n if (searchMode) {\n this.openSearchModal = searchMode.isOpen;\n this.searchType = searchMode.modeType;\n this.modeText();\n }\n }));\n this.subscription.add(this.toolbarEvents.redactAllInProgressSubject\n .subscribe(inProgress => this.redactAllInProgress = inProgress));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\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 this.toolbarEvents.searchBarHidden.next(false);\n setTimeout(() => this.findInput.nativeElement.focus(), 200);\n }\n }\n\n search(reset: boolean = true): void {\n this.redactAll = !reset;\n if (this.redactAll) {\n this.toolbarEvents.redactAllInProgressSubject.next(true);\n }\n if (reset) {\n this.redactElements = [];\n }\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\n });\n }\n\n modeText(): void {\n if (this.searchType === SearchType.Highlight) {\n this.inProgressText = 'Highlighting';\n this.titleText = 'Highlight';\n } else if (this.searchType === SearchType.Redact) {\n this.inProgressText = 'Redacting';\n this.titleText = 'Redact';\n }\n }\n\n private saveRedaction(redactRectangle: RedactRectangle[]) {\n const redaction = redactRectangle.map(ele => {\n return { page: ele.page, rectangles: ele.rectangles, redactionId: uuid(), documentId: this.documentId } as Redaction;\n });\n this.store.dispatch(new fromRedactionActions.SaveBulkRedaction({ searchRedactions: redaction } as BulkRedaction));\n }\n\n private existInRedactElements(pageNumber: number, matechedIndex: number, rectangles: Rectangle[]): boolean {\n if (this.redactElements && this.redactElements.length > 0) {\n const pagesFound = this.redactElements.find(re => re.page === pageNumber && re.matchedIndex === matechedIndex);\n const pageRectangles = pagesFound?.rectangles;\n if (!pageRectangles || pageRectangles.length <= 0) {\n return false;\n }\n let matchesRectangles = 0;\n for (let rectIndx = 0; rectIndx < pageRectangles.length; rectIndx++) {\n const rectangle = pageRectangles[rectIndx];\n const foundRectangle = rectangles.find(re => re.width === rectangle.width &&\n re.height === rectangle.height && re.x === rectangle.x && re.y === rectangle.y);\n if (foundRectangle) {\n matchesRectangles++;\n }\n }\n return pageRectangles.length === matchesRectangles;\n }\n return false;\n }\n\n onCloseSearchModal() {\n this.toolbarEvents.openRedactionSearch.next({ isOpen: false, modeType: this.searchType });\n }\n\n\n private setSearchResultsCount(results: SearchResultsCount): void {\n this.resultCount = results.total;\n this.resultsText = this.resultCount > 0\n ? `${results.total} results founds`\n : 'No results found';\n }\n\n private redactAllSearched(results: RedactionSearch): void {\n const $this = this;\n const intervalId = setInterval(() => {\n const highlightElement = document.getElementsByClassName('highlight selected');\n if (highlightElement && highlightElement.length > 0) {\n clearInterval(intervalId);\n $this.redactAllSearchedTick(results);\n }\n }, 100);\n }\n\n\n private redactAllSearchedTick(results: RedactionSearch): void {\n const highlightElement = document.getElementsByClassName('highlight selected');\n if (highlightElement && highlightElement.length > 0) {\n this.resultCount = results.matchesCount;\n const pageNumber = results.page + 1;\n const rectangles = this.getRectangles(pageNumber);\n if (rectangles && this.redactElements.length <= this.resultCount\n && !this.existInRedactElements(pageNumber, results.matchedIndex, rectangles)) {\n this.redactElements.push({ page: pageNumber, matchedIndex: results?.matchedIndex, rectangles } as RedactRectangle);\n this.CreateRedactAllText();\n }\n if (this.redactAll && this.resultCount && this.resultCount > 0\n && rectangles && this.redactElements.length < this.resultCount) {\n this.search(false);\n }\n\n if (this.redactAll && this.resultCount && this.redactElements.length === this.resultCount) {\n this.redactAll = false;\n this.redactAllText = null;\n if (this.searchType === SearchType.Redact) {\n this.saveRedaction(this.redactElements);\n } else if (this.searchType === SearchType.Highlight) {\n this.highlightService.saveAnnotationSet(this.redactElements);\n this.cleanUpPostSave();\n }\n }\n }\n }\n\n private cleanUpPostSave() {\n this.toolbarEvents.redactAllInProgressSubject.next(false);\n this.searchText = '';\n this.search();\n }\n\n private CreateRedactAllText() {\n this.redactAllText = `${this.redactElements.length} of ${this.resultCount}`;\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 public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n\n private getRectangles(page: number): Rectangle[] {\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 selectedHighLightedElements = document.getElementsByClassName('highlight selected');\n if (selectedHighLightedElements && selectedHighLightedElements.length > 0) {\n const docRange = document.createRange();\n if (some(selectedHighLightedElements, element => element.className === 'highlight begin selected' || element.className === 'highlight end selected')) {\n docRange.setStart(selectedHighLightedElements[0], 0);\n const endNode = selectedHighLightedElements[selectedHighLightedElements.length - 1];\n docRange.setEnd(endNode, endNode.childNodes.length);\n }\n else {\n docRange.selectNodeContents(selectedHighLightedElements[0] as HTMLElement);\n }\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(docRange);\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 = HtmlTemplatesHelper.getAdjustedBoundingRect(selectedHighLightedElements[0]?.parentElement?.parentElement);\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n const findSelecttionRectangle = selectionRectangles.find(\n (rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x\n );\n if (!findSelecttionRectangle) {\n selectionRectangles.push(selectionRectangle);\n }\n }\n\n return selectionRectangles;\n }\n }\n }\n }\n\n private createTextRectangle(rect: DOMRect, 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(\n this.pageHeight,\n this.pageWidth,\n height,\n width,\n top,\n left,\n this.rotate,\n this.zoom\n );\n rectangle = { id: uuid(), ...rectangle };\n\n return rectangle as Rectangle;\n }\n}\n","<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport type { CommentSetComponent } from '../comment-set.component';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport type { CommentComponent } from './comment.component';\n\n// TODO: replace by NgRx\n@Injectable()\nexport class CommentService {\n\n public readonly unsavedChanges = new Subject<boolean>();\n public readonly marginToCommentEmitter = new BehaviorSubject<boolean>(false);\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 createMarginToCommentEvent(margin: boolean) {\n this.marginToCommentEmitter.next(margin);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CommentComponent } from './comment/comment.component';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\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 HtmlTemplatesHelper.getAdjustedBoundingRect(element.form.nativeElement)?.height | 0;\n }\n\n private difference(a: number, b: number): number { return Math.abs(a - b); }\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 { 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 { 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, ViewEncapsulation} from '@angular/core';\nimport {TagsModel} from '../models/tags.model';\nimport {TagsServices} from '../services/tags/tags.services';\nimport {UntypedFormControl} 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: UntypedFormControl) {\n if (control.value.length < 2) {\n return {\n 'minLength': true\n };\n }\n return null;\n }\n\n private maxLength20(control: UntypedFormControl) {\n if (control.value.length >= 20) {\n return {\n 'maxLength20': true\n };\n }\n return null;\n }\n}\n","<div class=\"tags\">\n <tag-input\n *ngIf=\"editable\" class=\"tags__edit\"\n [maxItems]=\"10\"\n [ngModel]=\"tagItems\"\n (ngModelChange)=\"tagItems = $event; onUpdateTags($event)\"\n [ngModelOptions]=\"{standalone:true}\"\n [placeholder]=\"'Add tag'\"\n [displayBy]=\"'label'\"\n [identifyBy]=\"'name'\"\n [onTextChangeDebounce]=\"250\"\n [secondaryPlaceholder]=\"'Search or add tags'\"\n [validators]=\"validators\"\n [errorMessages]=\"errorMessages\"\n [onlyFromAutocomplete]=\"false\">\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [displayBy]=\"'label'\"\n [identifyBy]=\"'name'\"\n [zIndex]=\"10000\"\n [minimumTextLength]=\"2\">\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.label }}\n </ng-template>\n </tag-input-dropdown>\n </tag-input>\n\n <div class=\"tags__renderer\" *ngIf=\"!editable && (tagItems && tagItems.length)\">\n <span *ngFor=\"let tag of tagItems\" class=\"tags__item hmcts-badge\">\n {{tag.label}}\n </span>\n </div>\n</div>\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 ): any {\n const timezoneOffset = moment(value).tz(timezone).format('Z');\n return super.transform(value, format, timezoneOffset);\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 { Observable, 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';\nimport { HtmlTemplatesHelper } from '../../../shared/util/helpers/html-templates.helper';\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 marginToComment$: Observable<boolean> ;\n\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 this.marginToComment$ = this.commentService.marginToCommentEmitter.asObservable();\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 HtmlTemplatesHelper.getAdjustedBoundingRect(this.form.nativeElement).height / this.zoom;\n }\n}\n","<div\n #form\n (click)=\"onCommentClick()\"\n class=\"aui-comment\"\n [ngClass]=\"{ stylestoggle: (marginToComment$ | async) }\"\n [style.top.px]=\"commentTop\"\n [style.zIndex]=\"selected ? 100 : 0\"\n>\n <div id=\"detailsWrapper {{ index }}\" class=\"aui-comment__header\">\n <span *ngIf=\"author && !editor\" class=\"aui-comment__author\">\n {{ author.forename }} {{ author.surname }}\n </span>\n <span *ngIf=\"editor\" class=\"aui-comment__author\">\n {{ editor.forename }} {{ editor.surname }}\n </span>\n <time [hidden]=\"!selected && !this.editable\" class=\"aui-comment__meta\">\n {{ lastUpdate | momentDate : \"d MMMM y h:mm a\" }}\n </time>\n </div>\n <mv-tags\n [tagItems]=\"tagItems\"\n [userId]=\"createdBy\"\n [editable]=\"editable\"\n [annoId]=\"_comment.annotationId\"\n >\n </mv-tags>\n <textarea\n *ngIf=\"selected && editable\"\n #editableComment\n mvTextAreaAutoExpand\n type=\"text\"\n required\n name=\"content\"\n [maxlength]=\"CHAR_LIMIT\"\n class=\"aui-comment__content form-control mimic-focus edit-mode expanded\"\n [ngModel]=\"fullComment\"\n (ngModelChange)=\"fullComment = $event; reRenderComments(); onCommentChange($event)\"\n aria-label=\"comment\"\n >\n </textarea>\n <p\n *ngIf=\"!editable\"\n mvTextHighlight\n class=\"commentText\"\n [textToHighlight]=\"searchString\"\n >\n {{ fullComment }}\n </p>\n <div\n *ngIf=\"\n selected ||\n this.editable ||\n (!fullComment.length && tagItems && !tagItems.length)\n \"\n class=\"aui-comment__footer commentBtns\"\n >\n <button\n class=\"govuk-button\"\n type=\"button\"\n role=\"button\"\n (click)=\"editOrSave()\"\n >\n {{ !editable ? (\"Edit\" | rpxTranslate) : (\"Save\" | rpxTranslate) }}\n </button>\n <button\n type=\"button\"\n role=\"button\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"deleteOrCancel()\"\n >\n {{ !editable ? (\"Delete\" | rpxTranslate) : (\"Cancel\" | rpxTranslate) }}\n </button>\n </div>\n <span class=\"aui-comment__private\">{{ \"private\" | rpxTranslate }}</span>\n</div>\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","<div #container [ngClass]=\"{'comments': showCommentsPanel}\">\n <div #panel [ngClass]=\"{ 'comments-panel comment-container': true, 'expanded': showCommentsPanel }\"\n [style.height.px]=\"height\"\n (click)=\"onContainerClick($event)\">\n <ng-container *ngFor=\"let comment of (comments$ | async); let i = index;\">\n <mv-anno-comment\n [ngStyle]=\"showCommentsPanel ? {} : {'display':'none'}\"\n #commentComponent\n (commentClick)=\"onSelect($event)\"\n (delete)=\"onCommentDelete($event)\"\n (updated)=\"onCommentUpdate($event)\"\n (changes)=\"allCommentsSaved()\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [index]=\"i\"\n [page]=\"comment.page\"\n [comment]=\"comment\"\n [annotation]=\"(annoEntities$ | async)[comment.annotationId]\"\n (renderComments)=\"redrawComments()\">\n </mv-anno-comment>\n </ng-container>\n </div>\n</div>\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","<p class=\"comment-search\">\n <span class=\"comment-search__item\">\n Showing {{ index + 1 }} of {{ navigationList.length }}\n </span>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Previous comment\"\n (click)=\"prevItem()\">Prev</a>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Next comment'\"\n (click)=\"nextItem()\">Next</a>\n</p>\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","<input\n #searchInput\n type=\"text\"\n class=\"govuk-input comment-search__item\"\n id=\"search-comments-input\"\n name=\"searchString\"\n aria-label=\"search comments input\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchString = $event\"\n/>\n<button\n type=\"button\"\n [class.govuk-button--disabled]=\"searchInput?.value.length <= 2\"\n class=\"govuk-button comment-search__item\"\n (click)=\"searchComments(searchInput.value.trim())\"\n>\n {{ \"Search\" | rpxTranslate }}\n</button>\n<ng-container *ngIf=\"searchResults.length > 0\">\n <mv-comments-navigate [annotationList]=\"searchResults\"></mv-comments-navigate>\n</ng-container>\n<ng-container *ngIf=\"searchString && searchResults?.length === 0\">\n <p class=\"comment-search__item\">\n {{ \"No matches have been found\" | rpxTranslate }}\n </p>\n</ng-container>\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, 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 {UntypedFormGroup, UntypedFormBuilder, UntypedFormControl} 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: UntypedFormGroup;\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: UntypedFormBuilder) {}\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 = <UntypedFormGroup>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 UntypedFormControl(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 = <UntypedFormGroup>this.tagGroup.get('tagFilters');\n checkboxes.controls[tagName].setValue(false);\n }\n\n onToggleFilterView() {\n this.isPreview = !this.isPreview;\n }\n\n\n}\n","<div class=\"comment-filter\">\n <div class=\"hmcts-filter__content\">\n <div class=\"hmcts-filter__toggle-filters\">\n <p\n class=\"hmcts-filter__toggle-filters-link\"\n [ngClass]=\"{ 'govuk-accordion__section--expanded': isPreview }\"\n (click)=\"onToggleFilterView()\"\n >\n <strong>{{ \"Filter options\" | rpxTranslate }}</strong\n ><span class=\"govuk-accordion__icon\"></span>\n </p>\n </div>\n\n <ng-container *ngIf=\"filter$ | async as filters\">\n <div class=\"hmcts-filter__selected-heading\" *ngIf=\"filters.length\">\n <div class=\"hmcts-filter__heading-action\">\n <p>\n <a\n (click)=\"onClearFilters()\"\n class=\"govuk-link govuk-link--no-visited-state\"\n [routerLink]=\"[]\"\n >{{ \"Clear filters\" | rpxTranslate }}</a\n >\n </p>\n </div>\n </div>\n\n <h4\n class=\"govuk-heading-s govuk-!-margin-bottom-0\"\n *ngIf=\"filters.length\"\n >\n {{ \"Tag filters\" | rpxTranslate }}\n </h4>\n\n <ul class=\"hmcts-filter-tags\" *ngIf=\"filters.length\">\n <li *ngFor=\"let tagName of filters\">\n <a\n class=\"hmcts-filter__tag\"\n [routerLink]=\"[]\"\n (click)=\"onRemoveFilter(tagName)\"\n >\n <span class=\"govuk-visually-hidden\">{{\n \"Remove this filter\" | rpxTranslate\n }}</span\n >{{ tagName | unsnake }}</a\n >\n </li>\n </ul>\n </ng-container>\n\n <div class=\"hmcts-filter__options\" [ngClass]=\"{ isVisible: isPreview }\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-label--s\" for=\"keywords\">\n {{ \"Search Tags\" | rpxTranslate }}\n </label>\n <input\n class=\"govuk-input\"\n id=\"keywords\"\n name=\"keywords\"\n type=\"text\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"searchValue = $event\"\n />\n </div>\n\n <div class=\"govuk-form-group\">\n <div [formGroup]=\"tagGroup\">\n <fieldset class=\"govuk-fieldset\" formGroupName=\"tagFilters\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n Tags\n </legend>\n <div class=\"govuk-checkboxes--scroll\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"\n let item of allTags$ | async | filter : searchValue : 'key'\n \"\n >\n <input\n [formControlName]=\"item.key\"\n [id]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n [attr.aria-describedby]=\"item.key\"\n type=\"checkbox\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n [for]=\"item.key\"\n >\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n </div>\n</div>\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';\nimport { CommentService } from '../comment/comment.service';\nimport { IcpEventService } from '../../../toolbar/icp-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 @Input() public isHidden: boolean;\n @Output() public readonly showCommentSummaryDialog = new EventEmitter();\n\n marginToComment: boolean;\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 private commentService: CommentService,\n public toolbarEvents: ToolbarEventService,\n public readonly icpEventService: IcpEventService) {}\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 if (this.tabSelected) {\n this.marginToComment = true;\n this.commentService.createMarginToCommentEvent(this.marginToComment);\n } else {\n this.marginToComment = false;\n this.commentService.createMarginToCommentEvent(this.marginToComment);\n }\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","<div class=\"govuk-tabs commentSummaryHeader\" [ngClass]=\"{'icp-mode': icpEventService.enabled | async}\" data-module=\"govuk-tabs\">\n <ul class=\"govuk-tabs__list\">\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"govuk-tabs__list-item govuk-tabs__list-item\"\n [ngClass]=\"{'govuk-tabs__list-item--selected': tabSelected === tab.label}\">\n <a id=\"commentSubPane{{ i }}\" (click)=\"selectTab(tab.label)\" [routerLink]=\"[]\" [ngClass]=\"{'govuk-tabs__list-item--filtered': tab.isFiltered}\"\n class=\"govuk-tabs__tab\" [hidden]=\"isHidden\">\n {{ tab.label | titlecase }}\n </a>\n </li>\n <li>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button commentSummaryHeader-button--close\"\n title=\"Close Comments\" (click)=\"toggleCommentsPanel()\" [hidden]=\"isHidden\">\n </button>\n </li>\n </ul>\n <div class=\"govuk-tabs__panel\" [hidden]=\"!tabSelected\">\n <ng-container *ngIf=\"tabSelected === 'comments'\">\n <div style=\"width: 100%\">\n <div class=\"hmcts-banner\" *ngIf=\"navigationList?.length === 0\">\n <svg alt=\"\" class=\"hmcts-banner__icon\" fill=\"currentColor\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\nC13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">information</span>\n Select text to add a comment or highlight.\n </div>\n </div>\n <button type=\"button\" class=\"govuk-button\"\n id=\"commentSummary\" tabindex=\"0\"\n data-l10n-id=\"commentSummary\"\n title=\"Open collate summary\"\n (click)=\"toggleCommentsSummary()\">Collate comments</button>\n </div>\n <ng-container *ngIf=\"navigationList?.length > 0\">\n <mv-comments-navigate\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </ng-container>\n <p class=\"aui-comment__private-text\">\n <span class=\"aui-comment__private\">private</span>\n All comments can only be seen by you\n </p>\n </ng-container>\n <div [hidden]=\"tabSelected !== 'filter'\">\n <div class=\"govuk-tabs__panel--container\">\n <mv-comment-filter></mv-comment-filter>\n <mv-comments-navigate\n *ngIf=\"navigationList?.length > 0\"\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </div>\n </div>\n\n <div [hidden]=\"tabSelected !== 'search'\">\n <mv-comment-search [annotations]=\"navigationList\"></mv-comment-search>\n </div>\n </div>\n</div>\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 getScrollTop = createSelector(\n getBookmarkState,\n fromBookmarks.getScrollTop\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)\n - (pdfPosition.top * (pages[pdfPosition.pageNumber].viewportScale)))\n / parseFloat(pages[pdfPosition.pageNumber].scaleRotation.scale),\n previous: bookmarkNodes.length > 0 ? bookmarkNodes.sort((a, b) => a.index - b.index)[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, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Subscription } from 'rxjs';\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { HighlightCreateService } from '../highlight-create/highlight-create.service';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HtmlTemplatesHelper } from '../../../../shared/util/helpers/html-templates.helper';\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 wholePage: boolean;\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 this.toolbarEvents.redactWholePage.subscribe(() => {\n this.wholePage = true;\n })\n ];\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n initHighlight(event: MouseEvent) {\n if (this.wholePage) {\n this.highlightPage();\n return;\n }\n\n const rect = HtmlTemplatesHelper.getAdjustedBoundingRect((event.target as HTMLElement)),\n offsetX = event.clientX - rect.left,\n offsetY = event.clientY - rect.top;\n console.log(`initHighlight: rect=${JSON.stringify(rect)}, clientX=${event.clientX}, clientY=${event.clientY}, offsetX=${offsetX}, offsetY=${offsetY}`);\n\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 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(event: MouseEvent) {\n const rect = HtmlTemplatesHelper.getAdjustedBoundingRect(event.target as HTMLElement, false),\n offsetX = event.clientX - rect.left,\n offsetY = event.clientY - rect.top;\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 console.log(`createHighlight: rectangle=${JSON.stringify(rectangle)}`);\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 this.backgroundColor = 'none';\n this.position = 'initial';\n this.wholePage = false;\n }\n\n private highlightPage() {\n this.height = this.pageHeight;\n this.width = this.pageWidth;\n this.top = 0;\n this.left = 0;\n this.createHighlight();\n }\n}\n","<div [style.height]=\"defaultHeight\"\n [style.width]=\"defaultWidth\"\n (mousedown)=\"initHighlight($event)\"\n (mousemove)=\"updateHighlight($event)\"\n (mouseup)=\"createHighlight()\">\n <div #boxHighlight\n class=\"box-highlight\"\n [style.display]=\"display\"\n [style.position]=\"position\"\n [style.background-color]=\"backgroundColor\"\n [style.height]=\"height ? height + 'px' : '100%'\"\n [style.width]=\"width ? width + 'px' : '100%'\"\n [style.top]=\"top + 'px'\"\n [style.left]=\"left + 'px'\">\n </div>\n</div>\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() selectEvent = new EventEmitter<Rectangle>();\n @Output() updateEvent = 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.selectEvent.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.updateEvent.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 Math.round(this.left) !== viewRect.offsetLeft ||\n Math.round(this.top) !== viewRect.offsetTop ||\n Math.round(this.width) !== viewRect.offsetWidth ||\n Math.round(this.height) !== viewRect.offsetHeight;\n }\n}\n","<div *ngIf=\"editable; else nonEditable\">\n <div #rectElement\n class=\"rectangle\"\n draggable\n resizable\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected, 'grabNDrag': enableGrabNDrag }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height + 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n [rotate]=\"0\"\n [selected]=\"selected\"\n (click)=\"onClick()\"\n (stopped)=\"onUpdate(rectElement)\">\n </div>\n</div>\n<ng-template #nonEditable>\n <div #rectElement\n class=\"rectangle\"\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height+ 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n (click)=\"onClick()\">\n </div>\n</ng-template>\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 setTimeout(() => {\n // This hack to wait until the element is rendered seems to be unreliable,\n if (!location.hash) {\n document.getElementById('viewerContainer')?.scrollBy(0, 1);\n }\n }, 20);\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","<div class=\"toolbar\" *ngIf=\"rectangle\"\n [style.top.px]=\"top\"\n [style.left.px]=\"left\">\n <button *ngIf=\"canHighlight\"\n type=\"button\" title=\"Highlight\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton aui__toolbar-button-highlight\"\n (mousedown)=\"createHighlight()\">\n <span>Highlight</span>\n </button>\n <button *ngIf=\"canDelete\"\n type=\"button\" title=\"Delete\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton\"\n (mousedown)=\"deleteHighlight()\">\n <span>Remove</span>\n </button>\n <button *ngIf=\"canComment\"\n type=\"button\" title=\"Comment\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-comment\"\n (mousedown)=\"addOrEditComment()\">\n <span>Comment</span></button>\n <button *ngIf=\"canBookmark\"\n type=\"button\" title=\"Bookmark\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-bookmark\"\n id=\"bookmarkButton\"\n (mousedown)=\"createBookmark()\">\n <span>Bookmark</span></button>\n <div class=\"arrow-down\">\n <div class=\"inner-triangle\"></div>\n </div>\n</div>\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","<div #container [tabindex]=\"anno.id\">\n <mv-ctx-toolbar *ngIf=\"selected\"\n [canDelete]=\"true\" [canComment]=\"true\"\n [rectangles]=\"anno.rectangles\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (deleteHighlightEvent)=\"deleteHighlight()\"\n (addOrEditCommentEvent)=\"addOrEditComment()\">\n </mv-ctx-toolbar>\n <ng-container *ngFor=\"let rectangle of anno.rectangles\">\n <mv-anno-rectangle\n (selectEvent)=\"onSelect()\"\n (updateEvent)=\"onRectangleUpdate($event)\"\n [selected]=\"selected\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n [editable]=\"anno.rectangles.length <= 1\"\n [annoRect]=\"rectangle\"\n [color]=\"anno.color\">\n </mv-anno-rectangle>\n </ng-container>\n</div>\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","<ng-container *ngFor=\"let annotation of annotations\">\n <mv-annotation [annotation]=\"annotation\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedAnnotation$ | async\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (update)=\"onAnnotationUpdate($event)\"\n (delete)=\"onAnnotationDelete($event)\"\n (annotationClick)=\"selectAnnotation($event)\">\n </mv-annotation>\n</ng-container>\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 { v4 as 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.add(this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode));\n this.$subscriptions.add(this.viewerEvents.textHighlight.subscribe(highlight => this.showContextToolbar(highlight)));\n this.$subscriptions.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.toolbarEvents.toggleSideBarView(false);\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","<div class=\"pageContainer\">\n <div *ngFor=\"let page of pages; index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': page.styles.width,\n 'height.px': page.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"saveAnnotation($event)\">\n </mv-box-highlight-create>\n <mv-ctx-toolbar *ngIf=\"rectangles && highlightPage === (i + 1)\"\n [rectangles]=\"rectangles\"\n [canBookmark]=\"true\" [canHighlight]=\"true\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n (createBookmarkEvent)=\"createBookmark($event)\"\n (createHighlightEvent)=\"createHighlight()\">\n </mv-ctx-toolbar>\n <div class=\"pageContainer__page-item\">\n <mv-annotation-set *ngIf=\"(annoPages$ | async) as annoPages\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [page]=\"i\" [annotations]=\"annoPages[i + 1]\"></mv-annotation-set>\n </div>\n </div>\n</div>\n","import { Bookmark } from './../../../../store/models/bookmarks.interface';\nimport { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription, from } from 'rxjs';\n\nimport { CreateBookmark, DeleteBookmark, MoveBookmark, UpdateBookmark, UpdateBookmarkScrollTop } from '../../../../store/actions/bookmark.actions';\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';\nimport { take } from 'rxjs/operators';\nimport { v4 as uuid } from 'uuid';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl, NestedTreeControl } from '@angular/cdk/tree';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'mv-bookmarks',\n templateUrl: './bookmarks.component.html'\n})\n\nexport class BookmarksComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input()\n set bookmarkNodes(value: Bookmark[]) {\n this.rebuildTreeForData(value);\n if (this._bookmarkNodes && this.sortMode !== this.customSort) {\n this.sortBookmarks();\n }\n };\n\n get bookmarkNodes() {\n return this._bookmarkNodes;\n };\n\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() parentScrollTop: number;\n @Output() goToDestination = new EventEmitter<any[]>();\n @Output() treeHasChanged = new EventEmitter<boolean>()\n\n private _bookmarkNodes: Bookmark[] = [];\n datasource: ArrayDataSource<Bookmark>;\n treeControl: FlatTreeControl<Bookmark>;\n hoveredNode: Bookmark;\n hoverHtmlElement: HTMLElement;\n // expansion model tracks expansion state\n expansionModel = new SelectionModel<Bookmark>(true);\n isDraggingOn = false;\n isUserdragging = false;\n expandTimeout: any;\n expandDelay = 1000;\n dragNodeInsertToParent: boolean;\n\n pageLookup: { [pageId: number]: DocumentPages } = {};\n editableBookmark: string;\n BOOKMARK_CHAR_LIMIT = 30;\n\n dragNode: any;\n dragNodeExpandOverWaitTimeMs = 300;\n dragNodeExpandOverNode: any;\n dragNodeExpandOverTime: number;\n dragNodeExpandOverArea: number;\n\n\n options = {\n allowDrag: true,\n allowDrop: true\n };\n\n $subscription: Subscription;\n\n private sortMode: string;\n\n private readonly _customSort = 'CUSTOM';\n private readonly _positionSort = 'POSITION';\n\n constructor(private store: Store<fromBookmarks.BookmarksState | AnnotationSetState>) { }\n\n ngOnInit(): void {\n this.sortMode = this.customSort;\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 ngOnChanges(changes: SimpleChanges): void {\n if (changes?.bookmarkNodes) {\n setTimeout(() => {\n this.store.dispatch(new UpdateBookmarkScrollTop(this.parentScrollTop));\n }, 200);\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n editBookmark(id) {\n this.editableBookmark = id;\n }\n\n onAddBookmarkClick() {\n this.store.pipe(select(bookmarksSelectors.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo, name: '', id: uuid()\n } as any));\n });\n }\n\n deleteBookmark2(node: Bookmark) {\n this.customSortBookmarks();\n let next: Bookmark;\n\n const changedData = JSON.parse(JSON.stringify(this.bookmarkNodes));\n const siblings = this.findNodeSiblings(changedData, node.id);\n if (siblings && siblings.length > node.index + 1) {\n next = siblings[node.index + 1];\n next.previous = node.previous;\n }\n const toDelete = [node.id, ...getBookmarkChildren(node.children)];\n this.store.dispatch(new DeleteBookmark({\n deleted: toDelete, updated: next\n }));\n }\n\n updateBookmark(bookmark: Bookmark, name) {\n const editedBookmark = {\n ...bookmark,\n name\n };\n if (name) {\n this.store.dispatch(new UpdateBookmark(editedBookmark));\n this.editableBookmark = undefined;\n }\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 get customSort() {\n return this._customSort;\n }\n\n get positionSort() {\n return this._positionSort;\n }\n\n sort(mode: string) {\n this.sortMode = mode;\n this.sortBookmarks();\n }\n\n private sortBookmarks() {\n switch (this.sortMode) {\n case this.customSort: {\n this.customSortBookmarks();\n break;\n }\n case this.positionSort: {\n this.positionSortBookmarks();\n break;\n }\n default: {\n this.customSortBookmarks();\n break;\n }\n }\n }\n\n private positionSortBookmarks() {\n this.bookmarkNodes.sort((a, b) => a.pageNumber === b.pageNumber ? a.yCoordinate - b.yCoordinate : a.pageNumber - b.pageNumber);\n this.isDraggingOn = false;\n this.rebuildTreeForData(this.bookmarkNodes);\n }\n\n private customSortBookmarks() {\n if (this.bookmarkNodes.length > 1) {\n this.bookmarkNodes.sort((a, b) => a.index - b.index);\n }\n this.isDraggingOn = true;\n this.rebuildTreeForData(this.bookmarkNodes);\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 hasChild = (_: number, node: Bookmark) => {\n return node.children && node.children.length > 0;\n }\n\n getNode(bookmarks, parentId) {\n if (typeof bookmarks !== 'undefined') {\n for (let i = 0; i < bookmarks.length; i++) {\n if (bookmarks[i].id === parentId) {\n return [bookmarks[i]];\n }\n const a = this.getNode(bookmarks[i].children, parentId);\n if (a !== null) {\n return a;\n }\n }\n }\n return null;\n }\n\n drop(event: CdkDragDrop<Bookmark>) {\n\n if (!event.isPointerOverContainer || (event.previousIndex === event.currentIndex)) return;\n\n const hasMovedUpTheTree = event.previousIndex > event.currentIndex;\n const bookmarkNodesString = JSON.stringify(this._bookmarkNodes);\n const changedData = JSON.parse(bookmarkNodesString);\n const visibleNodes = this.visibleNodes(this._bookmarkNodes);\n const toNode = visibleNodes[event.currentIndex] as Bookmark;\n const toNodeSiblings = this.findNodeSiblings(changedData, toNode.id);\n\n const toNodeParent = toNodeSiblings[0].parent;\n const toIndex = toNodeSiblings.findIndex(s => s.id === toNode.id);\n\n const fromNode = event.item.data as Bookmark;\n const fromNodeSiblings = this.findNodeSiblings(changedData, fromNode.id);\n const fromIndex = fromNodeSiblings.findIndex(n => n.id === fromNode.id);\n\n if (this.isToNodeChildOfFromNode(fromNode?.children, toNode)) return;\n\n if (this.dragNodeInsertToParent) {\n\n const indexOfParent = toNodeSiblings.findIndex(element => element.id === toNode.id);\n const parentNode = toNodeSiblings[indexOfParent];\n const firstChild = parentNode?.children && parentNode?.children.length > 0 ? parentNode.children[0] : null;\n let movedBookmarksWithParent = [{ ...fromNode, parent: parentNode.id, previous: null }];\n\n if (firstChild) {\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...firstChild, previous: fromNode.id }];\n }\n\n let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);\n const nextFromindexforParent = fromIndex + 1;\n fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindexforParent + 1) : fromNodeSibling;\n\n if (fromNodeSibling && fromNodeSibling.id !== parentNode.id) {\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...fromNodeSibling, previous: fromNode.previous }];\n }\n\n let previousSiblingForParentIndex = toIndex - 1;\n let parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);\n\n if (parentNodeSibling && parentNodeSibling.id == fromNode.id) {\n previousSiblingForParentIndex = previousSiblingForParentIndex - 1;\n if (previousSiblingForParentIndex >= 0) {\n parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);\n }\n else {\n parentNodeSibling = null;\n }\n }\n\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...parentNode, previous: parentNodeSibling?.id }];\n\n const hasParentDups = (movedBookmarksWithParent as Bookmark[]).map(x => x.id).some(function (value, index, array) { // .some will break as soon as duplicate found (no need to itterate over all array)\n return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value\n })\n if (hasParentDups || movedBookmarksWithParent && movedBookmarksWithParent.length <= 1) return;\n\n this.store.dispatch(new MoveBookmark(movedBookmarksWithParent));\n return;\n }\n\n if (!toNodeSiblings) return;\n\n const fromNodePrevious = hasMovedUpTheTree ? toNode.previous : toNode.id;\n let movedBookmarks = [{\n ...fromNode,\n previous: toNode.index > 0 ? fromNodePrevious : undefined,\n parent: toNodeParent\n }];\n\n let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);\n const nextFromindex = fromIndex + 1;\n fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindex + 1) : fromNodeSibling;\n\n if (fromNodeSibling) {\n movedBookmarks = [...movedBookmarks, { ...fromNodeSibling, previous: fromNode.previous }];\n }\n\n\n let toNodeSiblingIndex = hasMovedUpTheTree ? toIndex : toIndex + 1;\n let toNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, toNodeSiblingIndex);\n\n if (toNodeSibling) {\n movedBookmarks = [...movedBookmarks, { ...toNodeSibling, previous: fromNode.id }];\n }\n\n const hasDups = (movedBookmarks as Bookmark[]).map(x => x.id).some(function (value, index, array) {\n return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value\n })\n if (hasDups || movedBookmarks && movedBookmarks.length <= 1) return;\n\n this.store.dispatch(new MoveBookmark(movedBookmarks));\n }\n\n private getSiblingFromAllSibliings(sibling: Bookmark[], index) {\n return sibling.length > index ? sibling[index] : undefined;\n }\n\n dragStart() {\n this.dragNodeInsertToParent = false;\n this.hoveredNode = null;\n this.isUserdragging = true;\n }\n\n dragEnd() {\n this.isUserdragging = false;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n }\n\n dragHover(event: any, node: Bookmark) {\n if (this.isUserdragging) {\n const newEvent: any = event;\n const percentageX = newEvent.offsetX / newEvent.target.clientWidth;\n if (percentageX > .55) {\n this.hoveredNode = node;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.hoverHtmlElement = event.currentTarget;\n this.hoverHtmlElement.style.borderRight = '5px solid #007bff';\n this.dragNodeInsertToParent = true;\n } else {\n this.hoveredNode = null;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.dragNodeInsertToParent = false;\n }\n }\n }\n\n dragHoverEnd(event: any, node: Bookmark) {\n if (this.isUserdragging) {\n if (!node || this.hoveredNode?.id !== node.id) {\n this.dragNodeInsertToParent = false;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.hoveredNode = null;\n }\n }\n }\n\n onNodeExpand(node: Bookmark) {\n const isExpanded = this.treeControl.isExpanded(node);\n return isExpanded ? \"toggle-children-wrapper-expanded\" : \"toggle-children-wrapper-collapsed\";\n }\n\n visibleNodes(bookmarks: Bookmark[]): Bookmark[] {\n const result = [];\n\n function addExpandedChildren(node: Bookmark, expanded: Bookmark[]) {\n result.push(node);\n if (expanded.some(bookmark => bookmark && bookmark.id === node.id) && node.children) {\n node.children.map((child) => addExpandedChildren(child, expanded));\n }\n }\n bookmarks.forEach((node) => {\n addExpandedChildren(node, this.treeControl.expansionModel.selected);\n });\n return result;\n }\n\n findNodeSiblings(arr: Array<any>, id: string): Array<any> {\n let result, subResult;\n arr.forEach((item, i) => {\n if (item.id === id) {\n result = arr;\n } else if (item?.children) {\n subResult = this.findNodeSiblings(item.children, id);\n if (subResult) result = subResult;\n }\n });\n return result;\n }\n\n rebuildTreeForData(data: any) {\n this._bookmarkNodes = data ?? [];\n this.datasource = new ArrayDataSource(this._bookmarkNodes);\n this.treeControl = new NestedTreeControl<Bookmark>(node => node.children);\n this.treeControl.dataNodes = this._bookmarkNodes;\n this.expansionModel.selected.forEach((bookmark) => {\n const node = this.treeControl.dataNodes.find((n) => n.id === bookmark.id);\n this.treeControl.expand(node);\n });\n this.treeHasChanged.emit(true);\n }\n\n isToNodeChildOfFromNode(fromNodeChildren: Bookmark[], toNode: Bookmark) {\n\n if (!fromNodeChildren) {\n return false;\n }\n\n const result = this.getNode(fromNodeChildren, toNode.id);\n return result ? true : false;\n }\n}\n","<a *ngIf=\"bookmarkNodes?.length === 0\" class=\"highlightedOutlineItem\"\n >No bookmarks created yet</a\n>\n<cdk-tree\n cdkDropList\n [cdkDropListDisabled]=\"!isDraggingOn\"\n class=\"bookmarks-tree\"\n *ngIf=\"datasource\"\n [dataSource]=\"datasource\"\n [treeControl]=\"treeControl\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <!-- This is the tree node template for leaf nodes -->\n <cdk-nested-tree-node class=\"node-wrapper\" *cdkTreeNodeDef=\"let node\">\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark\">\n <div\n class=\"node-content-wrapper nested-tree-node nest-tree-node-padding\"\n cdkDrag\n cdkDragBoundary=\".bookmarks-tree\"\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n class=\"node-wrapper\"\n *cdkTreeNodeDef=\"let node; when: hasChild\"\n >\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark2\">\n <div\n class=\"node-content-wrapper nested-tree-node\"\n cdkDrag\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <span\n cdkTreeNodeToggle\n class=\"toggle-children-wrapper\"\n [ngClass]=\"onNodeExpand(node)\"\n ><span class=\"toggle-children\"></span\n ></span>\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark2>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n <div class=\"nested-tree-node-children\" *ngIf=\"treeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n</cdk-tree>\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 @Input() currentPageNumber: number;\n @Input() isCurrentSection: boolean;\n @Input() endPage: number;\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 isViewedItem(current: Outline, next: Outline): boolean {\n if (current.pageNumber === this.currentPageNumber) {\n return true;\n }\n return next === undefined ? current.pageNumber <= this.currentPageNumber && this.endPage > this.currentPageNumber :\n current.pageNumber <= this.currentPageNumber && (next.pageNumber > this.currentPageNumber);\n }\n\n findEndPage(next: Outline): number {\n return next === undefined ? this.endPage : next.pageNumber;\n }\n\n showHighlightOutlineCss() {\n return this.isCurrentSection ? 'highlightedOutlineItem' : 'outlineItem';\n }\n}\n","<div class=\"outlineItem\">\n <div *ngIf=\"outline.items.length > 0\"\n [ngClass]=\"{ 'outlineItemToggler': true, 'outlineItemsHidden': !showOutlineItems }\"\n (click)=\"toggleOutline()\"\n (keyup.enter)=\"toggleOutline()\" tabindex=\"0\"></div>\n <a (click)=\"goToDestination(outline?.dest)\"\n (keyup.enter)=\"goToDestination(outline?.dest)\"\n [style.font-weight]=\"outline.bold ? 'bold' : ''\"\n [style.font-style]=\"outline.italic ? 'italic' : ''\"\n [ngClass]=\"showHighlightOutlineCss()\"\n tabindex=\"0\">\n <div style=\"text-align:left;\" [ngClass]=\"showHighlightOutlineCss()\">\n {{ outline.title }}\n <span style=\"float:right;\">\n {{ outline.pageNumber }}\n </span>\n </div>\n </a>\n \n <div *ngIf=\"outline.items.length > 0\" class=\"outlineItems\">\n <div *ngFor=\"let outlineItem of outline.items; index as i\">\n <mv-outline-item\n [outline]=\"outlineItem\" \n [currentPageNumber]= \"currentPageNumber\" \n [isCurrentSection]= \"isViewedItem(outlineItem, outline.items[i+1])\"\n [endPage]=\"findEndPage(outline.items[i+1])\"\n (navigationEvent)=\"goToDestination($event)\">\n </mv-outline-item>\n </div>\n </div>\n</div>\n\n","import { AfterViewInit, Component, ElementRef, HostListener, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } 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 { v4 as uuid } from 'uuid';\nimport { ViewerEventService } from '../../viewer-event.service';\nimport { BookmarksState } from '../../../store/reducers/bookmarks.reducer';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { BookmarksComponent } from './bookmarks/bookmarks.component';\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 @Input() currentPageNumber: number;\n\n @ViewChild(BookmarksComponent)\n bookmarks: BookmarksComponent;\n treeChanged: boolean = false;\n selectedView = 'outline';\n bookmarkNodes$: Observable<BookmarkNode[]>;\n scrollTop: any;\n sidebarOpen: any;\n\n private subscriptions: Subscription[] = [];\n @ViewChild('sidebar') sidebarDiv;\n\n constructor(private viewerEvents: ViewerEventService,\n private store: Store<BookmarksState>,\n private readonly toolbarEvents: ToolbarEventService,\n ) { }\n\n ngOnInit(): void {\n this.bookmarkNodes$ = this.store.pipe(select(bookmarksSelectors.getBookmarkNodes));\n this.subscriptions.push(this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editable => this.selectedView = editable ? 'bookmarks' : this.selectedView));\n this.subscriptions.push(\n this.toolbarEvents.sidebarOutlineView.subscribe(toggle => {\n this.selectedView = toggle ? 'outline' : 'bookmarks';\n }),\n this.toolbarEvents.sidebarOpen.subscribe(toggle => {\n this.sidebarOpen = toggle;\n })\n );\n this.subscriptions.push(this.store.pipe(select(bookmarksSelectors.getScrollTop)).subscribe(scrollTopValue => {\n if (this.sidebarDiv?.nativeElement) {\n this.sidebarDiv.nativeElement.scrollTop = scrollTopValue\n }\n }));\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 if (this.subscriptions.length > 0) {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n }\n\n public onScroll(event: any): void {\n if (!this.treeChanged) {\n this.scrollTop = event.srcElement.scrollTop;\n }\n this.treeChanged = false;\n }\n\n goToDestination(destination: any[]) {\n this.viewerEvents.goToDestination(destination);\n }\n\n hasTreeChanged(value: boolean) {\n this.treeChanged = value;\n }\n\n toggleSidebarView(sidebarView: string) {\n this.selectedView = sidebarView;\n }\n\n isViewedItem(current: Outline, next: Outline): boolean {\n if (current.pageNumber === this.currentPageNumber) {\n return true;\n }\n return next === undefined ? current.pageNumber <= this.currentPageNumber :\n current.pageNumber <= this.currentPageNumber && (next.pageNumber > this.currentPageNumber);\n }\n\n findEndPage(next: Outline): number {\n return next === undefined ? Number.MAX_SAFE_INTEGER : next.pageNumber;\n }\n}\n","<div id=\"toolbarSidebar\">\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n class=\"splitToolbarButton toggled\"\n >\n <button\n id=\"sortBookmarkPosition\"\n class=\"splitToolbarButton left bookmark__sort__position\"\n (click)=\"bookmarks.sort(bookmarks.positionSort)\"\n title=\"Order by place in document\"\n aria-pressed=\"true\"\n ></button>\n <button\n id=\"sortBookmarkCustom\"\n class=\"splitToolbarButton left bookmark__sort__custom\"\n (click)=\"bookmarks.sort(bookmarks.customSort)\"\n title=\"Order manually\"\n aria-pressed=\"true\"\n ></button>\n </div>\n <div class=\"splitToolbarButtonSeparator\"></div>\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n class=\"splitToolbarButton right\"\n >\n <button\n id=\"addBookmark\"\n class=\"toolbarButton addBookmark\"\n (click)=\"bookmarks.onAddBookmarkClick()\"\n title=\"Add bookmark\"\n tabindex=\"3\"\n data-l10n-id=\"addBookmark\"\n >\n <span data-l10n-id=\"addBookmark_label\">{{\n \"Add bookmark\" | rpxTranslate\n }}</span>\n </button>\n </div>\n</div>\n<div #sidebar id=\"sidebarContent\" cdkScrollable (scroll)=\"onScroll($event)\" [hidden]=\"!sidebarOpen\">\n <div id=\"outlineView\" class=\"outlineWithDeepNesting\">\n <div class=\"outlineItem\" *ngIf=\"selectedView === 'outline'\">\n <mv-outline-item\n *ngFor=\"let outlineItem of outline; index as i\"\n [outline]=\"outlineItem\"\n [currentPageNumber]=\"currentPageNumber\"\n [isCurrentSection]=\"isViewedItem(outlineItem, outline[i + 1])\"\n [endPage]=\"findEndPage(outline[i + 1])\"\n (navigationEvent)=\"goToDestination($event)\"\n ></mv-outline-item>\n </div>\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n id=\"bookmarkContainer\"\n >\n <mv-bookmarks\n [bookmarkNodes]=\"bookmarkNodes$ | async\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [parentScrollTop]=\"scrollTop\"\n (goToDestination)=\"goToDestination($event)\"\n (treeHasChanged)=\"hasTreeChanged($event)\"\n ></mv-bookmarks>\n </div>\n </div>\n</div>\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 { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\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';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HtmlTemplatesHelper } from '../../../../shared/util/helpers/html-templates.helper';\n\n@Directive({\n selector: '[mvCreateTextHighlight]'\n})\nexport class HighlightCreateDirective implements OnInit, OnDestroy {\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n\n $subscription: Subscription;\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private toolbarEvents: ToolbarEventService,\n private viewerEvents: ViewerEventService,\n private highlightService: HighlightCreateService,\n private store: Store<fromStore.AnnotationSetState>\n ) { }\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 let page: number;\n let currentElement = mouseEvent.target as HTMLElement;\n while (currentElement.offsetParent) {\n currentElement = currentElement.offsetParent as HTMLElement;\n if (currentElement.getAttribute) {\n page = parseInt(currentElement.getAttribute('data-page-number'), 10);\n if (page) {\n break;\n }\n }\n }\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(\n new fromAnnotationActions.SelectedAnnotation({\n annotationId: '',\n selected: false,\n editable: false,\n })\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\n const parentRect = HtmlTemplatesHelper\n .getAdjustedBoundingRect(localElement.closest(\".textLayer\"));\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n const findSelecttionRectangle = selectionRectangles.find(\n (rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x\n );\n if (!findSelecttionRectangle) {\n selectionRectangles.push(selectionRectangle);\n }\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 let rectangle = this.highlightService.applyRotation(\n this.pageHeight,\n this.pageWidth,\n height,\n width,\n top,\n left,\n this.rotate,\n this.zoom\n );\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 {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, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport { v4 as 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 { ViewerEventService } from '../../viewers/viewer-event.service';\nimport { Redaction } from '../services/redaction.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\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 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 this.store.dispatch(new fromRedactionActions.ResetRedactedDocument());\n }\n}\n","<div class=\"pageContainer\">\n <div *ngFor=\"let redaction of (redactionsPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': redaction.styles.width,\n 'height.px': redaction.styles.height\n }\"\n [attr.redaction-page-num]=\"i+1\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"markBoxRedaction($event)\">\n </mv-box-highlight-create>\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let anno of redaction.anno\">\n <!-- TODO rename this to selection -->\n <mv-annotation [annotation]=\"anno\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedRedaction$ | async\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n (update)=\"onMarkerUpdate($event)\"\n (delete)=\"onMarkerDelete($event)\"\n (annotationClick)=\"selectRedaction($event)\">\n </mv-annotation>\n </ng-container>\n </div>\n </div>\n</div>\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","<div class=\"pageContainer\">\n <div *ngFor=\"let bookmarks of (bookmarksPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': bookmarks.styles.width,\n 'height.px': bookmarks.styles.height\n }\">\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let bMrk of bookmarks.bookmark\">\n <div class=\"bookmark__here\"\n [style.width]=\"16 * zoom + 'px'\"\n [style.height]=\"24 * zoom + 'px'\"\n [style.top]=\"bMrk.yCoordinate * zoom + 'px'\"\n [title]=\"bMrk.name\">\n </div>\n </ng-container>\n </div>\n </div>\n</div>\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';\nimport { IcpEventService } from '../../toolbar/icp-event.service';\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 private readonly icpEventService: IcpEventService) {}\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.icpEventService.participantsListVisible.subscribe(isVisible => this.showParticipantsList = isVisible);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","<div class=\"comments-panel comment-container icp-mode\" [ngClass]=\"{'expanded': showParticipantsList }\">\n\n <div class=\"participant__card no-shadow\">\n <p class=\"participant__name\">All Participants</p>\n </div>\n\n <div *ngIf=\"(presenter$ | async)?.username !== ''\" class=\"participant__card\">\n <div class=\"participant__header\"> Presenting </div>\n <p class=\"participant__name\">{{(presenter$ | async)?.username}}</p>\n </div>\n\n <div *ngIf=\"(participants$ | async).length > 1\" class=\"participant__card\">\n <div class=\"participant__header\">Following</div>\n <ng-container *ngFor=\"let participant of (participants$ | async)\">\n <p *ngIf=\"participant.id !== (presenter$ | async)?.id\" class=\"participant__name\">{{participant.username}}</p>\n </ng-container>\n </div>\n</div>\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 { debounceTime, 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';\nimport { IcpService } from '../../icp/icp.service';\nimport { IcpEventService } from '../../toolbar/icp-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 @Input() enableRedactSearch: 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 private icpService: IcpService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private readonly icpEventService: IcpEventService\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(this.viewerEvents.navigationEventICP.subscribe(destination => this.goToDestinationICP(destination)));\n this.$subscription.add(\n this.icpEventService.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 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 const currentRotation = this.rotation;\n this.rotateDocument(360 - this.rotation);\n this.pdfWrapper.navigateTo(destination);\n setTimeout(() => {\n this.rotateDocument(currentRotation);\n }, 10);\n }\n\n private goToDestinationICP(destination: any[]) {\n this.pdfWrapper.nativeNavigate(destination);\n }\n\n getCurrentPageNumber(): number {\n return this.pdfWrapper.getPageNumber();\n }\n}\n","<mv-side-bar\n *ngIf=\"toolbarEvents.sidebarOpen\"\n id=\"sidebarContainer\"\n [url]=\"url\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [outline]=\"documentOutline\"\n [annotationsEnabled]=\"enableAnnotations\"\n [currentPageNumber]=\"getCurrentPageNumber()\"\n>\n</mv-side-bar>\n<mv-comment-set-header\n *ngIf=\"enableAnnotations\"\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<mv-participants-list></mv-participants-list>\n<div\n class=\"pdfContainer\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ pdfContainer: true, hidden: errorMessage }\"\n>\n <mv-redaction-search-bar></mv-redaction-search-bar>\n <div\n #viewerContainer\n mvGrabNDrag\n [dragX]=\"viewerContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n id=\"viewerContainer\"\n class=\"viewer-container\"\n [class.annotations]=\"enableAnnotations\"\n [class.show-comments-panel]=\"\n (showCommentsPanel || showIcpParticipantsList) &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [class.grabNDrag]=\"enableGrabNDrag\"\n >\n <div\n #pdfViewer\n class=\"pdfViewer\"\n mvCreateTextHighlight\n [ngClass]=\"{\n hidden: false,\n highlightMode: highlightMode | async,\n drawMode: drawMode | async\n }\"\n ></div>\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n <mv-bookmark-icons [zoom]=\"zoom\" [rotate]=\"rotation\"> </mv-bookmark-icons>\n </ng-template>\n </div>\n <mv-comment-set\n [contentScrollTop]=\"viewerContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"pdfViewer.offsetHeight\"\n [pageHeights]=\"pageHeights\"\n >\n </mv-comment-set>\n <div class=\"loadingMessage\" *ngIf=\"loadingDocument\">\n <h3 class=\"govuk-heading-m\">\n {{ \"Loading...\" | rpxTranslate}}{{\n loadingDocumentProgress ? loadingDocumentProgress + \"%\" : \"\"\n }}\n </h3>\n </div>\n</div>\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 HostListener,\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';\nimport * as fromAnnotationActions from '../../store/actions/annotation.actions';\nimport { ViewerEventService } from '../viewer-event.service';\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 private viewerEvents: ViewerEventService\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 @HostListener('mousedown', ['$event'])\n onImageViewerClick(event: MouseEvent) {\n const classNme = (event.target as Element).className;\n if (classNme.startsWith('pageContainer')) {\n this.store.dispatch(\n new fromAnnotationActions.SelectedAnnotation({\n annotationId: '',\n selected: false,\n editable: false,\n })\n );\n this.viewerEvents.clearCtxToolbar();\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","<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n","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","<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"typeException, else unsupported\">The document could not be displayed, or the file type is unsupported.</span>\n Please <a #downloadLink [href]=\"url\" [download]=\"downloadFileName\">click here to download</a>.\n </p>\n <ng-template #unsupported>\n <span>This file type is not supported by this viewer.</span>\n </ng-template>\n </div>\n</div>\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';\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 { Component, ElementRef, HostListener, OnInit, ViewChild, OnDestroy, AfterViewInit } 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, AfterViewInit {\n\n @ViewChild('findInput', { static: true }) findInput: ElementRef<HTMLInputElement>;\n @ViewChild('findNext', { static: false }) findNext: ElementRef<HTMLAnchorElement>;\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 ngAfterViewInit(): void {\n this.findInput.nativeElement.focus();\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 if (this.resultCount && this.resultCount > 0 && !results.isPrevious) {\n setTimeout(() => {\n this.findNext.nativeElement.focus();\n }, 1000);\n }\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","<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Search document\"\n #findInput\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Search document\"\n placeholder=\"Search document for…\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n","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';\nimport { IcpEventService } from '../icp-event.service';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\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 public redactAllInProgress: boolean;\n\n public pageNumber = 1;\n public pageCount = 0;\n public isDropdownMenuOpen = false;\n public isBookmarksOpen = false;\n public isIndexOpen = false;\n public isRedactOpen = false;\n public isCommentsOpen = 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 private readonly icpEventService: IcpEventService\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.icpEventService.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 this.toolbarEvents.redactAllInProgressSubject.subscribe(disable => {\n this.redactAllInProgress = disable;\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: HTMLElement) => {\n this.allButtonsWidth += HtmlTemplatesHelper.getAdjustedBoundingRect(button).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 @HostListener('document:keydown.control.p', ['$event'])\n @HostListener('document:keydown.meta.p', ['$event'])\n public onControlPrint(event: KeyboardEvent) {\n event.preventDefault();\n this.printFile();\n }\n\n public onClickHighlightToggle() {\n this.toolbarEvents.toggleHighlightToolbar();\n }\n public onClickDrawToggle() {\n this.toolbarEvents.toggleDrawMode();\n }\n\n public toggleIndexSideBar() {\n const sidebarOpen = this.toolbarEvents.sidebarOpen.getValue();\n const sidebarView = this.toolbarEvents.sidebarOutlineView.getValue();\n if (!(sidebarOpen && !sidebarView)) {\n this.toolbarEvents.toggleSideBar(!sidebarOpen);\n }\n this.toolbarEvents.toggleSideBarView(true);\n this.isIndexOpen = !this.isIndexOpen;\n }\n\n public onToolBarOffSetChange(buttonId: string) {\n if (this.mvToolbarMain && this.mvToolbarMain.nativeElement.offsetWidth < this.widthRequiredForBtn[buttonId]) {\n return \"button-hidden-on-toolbar\";\n\n }\n return \"button-hidden-on-dropdown\";\n }\n\n public toggleBookmarksSideBar() {\n const sidebarOpen = this.toolbarEvents.sidebarOpen.getValue();\n const sidebarView = this.toolbarEvents.sidebarOutlineView.getValue();\n if (!(sidebarOpen && sidebarView)) {\n this.toolbarEvents.toggleSideBar(!sidebarOpen);\n }\n this.toolbarEvents.toggleSideBarView(false);\n this.isBookmarksOpen = !this.isBookmarksOpen;\n }\n\n public togglePresentBar() {\n this.toolbarEvents.searchBarHidden.next(true);\n this.icpEventService.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 this.isCommentsOpen = !this.isCommentsOpen;\n }\n\n public toggleRedactBar() {\n this.toolbarEvents.toggleRedactionMode();\n this.isRedactOpen = !this.isRedactOpen;\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","<div class=\"toolbar\">\n <div id=\"toolbarContainer\">\n <div class=\"mv-toolbar__container\">\n <div #mvToolbar class=\"mv-toolbar\" [class.notSupported]=\"!contentType\">\n <!-- The mvToolbarMain div contains all toolbar buttons except the \"More options\" button. This allows for calculation of the available space to display buttons -->\n <div id=\"mvToolbarMain\" class=\"mv-toolbar-main\" #mvToolbarMain>\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n <!-- The mvToolbarMoreOptions div contains the \"More options\" toolbar button (and the overlay template for the dropdown menu).\n The space occupied by the button (if visible) is excluded from the toolbar space available calculation -->\n <div id=\"mvToolbarMoreOptions\" class=\"mv-toolbar-more-options\">\n <button\n id=\"mvMoreOptionsBtn\"\n class=\"mv-button mv-toolbar__menu-button--more-options\"\n [class.mv-toolbar__menu-button--more-options__hidden]=\"\n mvToolbar.offsetWidth >= allButtonsWidth\n \"\n [attr.aria-expanded]=\"isDropdownMenuOpen\"\n (click)=\"toggleMoreOptions()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"redactAllInProgress\"\n >\n <span>{{ \"More options\" | rpxTranslate }}</span>\n </button>\n <!-- This template displays the overlay content for the dropdown menu and is connected to the \"More options\" button -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownMenuOpen\"\n [cdkConnectedOverlayPositions]=\"dropdownMenuPositions\"\n >\n <div class=\"dropdown-menu\" #dropdownMenu tabindex=\"0\">\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div id=\"mvMenuItems\" #mvMenuItems>\n <ng-template #menuItems>\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvIndexBtn\"\n title=\"Index\"\n data-l10n-id=\"index\"\n #mvIndexBtn\n class=\"mv-button mv-toolbar__menu-button--index\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvIndexBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvIndexBtn']\n \"\n [attr.aria-expanded]=\"isIndexOpen\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleIndexSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Index\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvBookmarksBtn\"\n title=\"Bookmarks\"\n data-l10n-id=\"bookmarks\"\n #mvBookmarksBtn\n [ngClass]=\"{\n 'mv-button mv-toolbar__menu-button--bookmarks': true,\n 'button-hidden-on-toolbar':\n mvToolbarMain.offsetWidth <\n widthRequiredForBtn['mvBookmarksBtn'],\n 'button-hidden-on-dropdown':\n mvToolbarMain.offsetWidth >=\n widthRequiredForBtn['mvBookmarksBtn']\n }\"\n [attr.aria-expanded]=\"isBookmarksOpen\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleBookmarksSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Bookmarks\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDrawButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvDrawBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvDrawBtn']\n \"\n [class.toggled]=\"toolbarEvents.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"onClickDrawToggle(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"draw_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvHighlightBtn\"\n #mvHighlightBtn\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight\"\n aria-label=\"Highlight\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.toggled]=\"toolbarEvents.highlightToolbarSubject | async\"\n aria-pressed=\"false\"\n (click)=\"onClickHighlightToggle(); isDropdownMenuOpen = false\"\n data-l10n-id=\"toggleHighlightButton\"\n >\n <span data-l10n-id=\"highlight_label\">{{\n \"Highlight\" | rpxTranslate\n }}</span>\n </button>\n\n <ng-container *ngIf=\"toolbarButtons.showNavigation\">\n <div\n id=\"mvPageBtn\"\n #mvPageBtn\n class=\"mv-toolbar__menu-button--page\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvPageBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvPageBtn']\n \"\n >\n <span>{{ \"Page\" | rpxTranslate }}</span>\n\n <button\n id=\"mvUpBtn\"\n [disabled]=\"pageNumber === 1 || redactAllInProgress\"\n title=\"Previous Page\"\n class=\"mv-toolbar__menu-button--up button-image\"\n data-l10n-id=\"previous\"\n (click)=\"decreasePageNumber()\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvDownBtn\"\n [disabled]=\"pageNumber === pageCount || redactAllInProgress\"\n title=\"Next Page\"\n class=\"mv-toolbar__menu-button--down button-image\"\n data-l10n-id=\"next\"\n (click)=\"increasePageNumber()\"\n >\n <span></span>\n </button>\n\n <input\n type=\"number\"\n id=\"pageNumber\"\n class=\"hmcts-toolbar-input govuk-input--width-2\"\n title=\"Page Number\"\n value=\"1\"\n size=\"4\"\n min=\"1\"\n [value]=\"pageNumber\"\n aria-label=\"page number\"\n tabindex=\"0\"\n data-l10n-id=\"page\"\n (change)=\"onPageNumberInputChange(pageNumberInput.value)\"\n [disabled]=\"redactAllInProgress\"\n #pageNumberInput\n />\n <span id=\"numPages\" class=\"toolbarLabel\">/ {{ pageCount }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"toolbarButtons.showZoom\">\n <div\n id=\"mvZoomBtn\"\n #mvZoomBtn\n class=\"mv-toolbar__menu-button--zoom\"\n aria-pressed=\"false\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvZoomBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvZoomBtn']\n \"\n >\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 0.1 ||\n redactAllInProgress\n \"\n id=\"mvMinusBtn\"\n class=\"mv-toolbar__menu-button--zoom-out button-image\"\n title=\"Zoom Out\"\n data-l10n-id=\"zoom_out\"\n (click)=\"stepZoom(-0.1)\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom Out\" | rpxTranslate\n }}</span>\n </button>\n <select\n id=\"scaleSelect\"\n class=\"hmcts-toolbar-select\"\n title=\"Zoom\"\n tabindex=\"0\"\n data-l10n-id=\"zoom\"\n (change)=\"zoom($event.target.value)\"\n aria-label=\"zoom\"\n [disabled]=\"redactAllInProgress\"\n >\n <option\n #zoomSelect\n id=\"customScaleOption\"\n title=\"\"\n [value]=\"toolbarEvents.zoomValueSubject.value\"\n >\n {{\n toolbarEvents.zoomValueSubject.value * 100\n | number : \"1.0-0\"\n }}%\n </option>\n <option\n *ngFor=\"let zoomScale of zoomScales\"\n title=\"\"\n [value]=\"zoomScale\"\n [attr.data-l10n-id]=\"'page_scale_percent_' + zoomScale * 100\"\n >\n {{ zoomScale * 100 }}%\n </option>\n </select>\n\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 5 ||\n redactAllInProgress\n \"\n id=\"mvPlusBtn\"\n class=\"mv-toolbar__menu-button--zoom-in button-image\"\n (click)=\"stepZoom(0.1)\"\n title=\"Zoom In\"\n data-l10n-id=\"zoom_in\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom In\" | rpxTranslate\n }}</span>\n </button>\n </div>\n </ng-container>\n\n <div\n *ngIf=\"toolbarButtons.showRotate\"\n id=\"mvRotateBtn\"\n #mvRotateBtn\n class=\"mv-toolbar__menu-button--rotate\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvRotateBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvRotateBtn']\n \"\n >\n <button\n id=\"mvRotateLeftBtn\"\n class=\"mv-toolbar__menu-button--rotate_left button-image\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n (click)=\"rotate(270)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvRotateRightBtn\"\n class=\"mv-toolbar__menu-button--rotate_right button-image\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n (click)=\"rotate(90)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <span>{{ \"Rotate\" | rpxTranslate }}</span>\n </div>\n\n <button\n *ngIf=\"toolbarButtons.showSearchBar\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvSearchBtn\"\n #mvSearchBtn\n title=\"Search\"\n data-l10n-id=\"searchbar\"\n class=\"mv-button mv-toolbar__menu-button--search\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvSearchBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvSearchBtn']\n \"\n aria-pressed=\"false\"\n (click)=\"toggleSearchBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Search\" | rpxTranslate }}</span>\n </button>\n <mv-search-bar\n *ngIf=\"!toolbarEvents.searchBarHidden.getValue()\"\n ></mv-search-bar>\n\n <button\n *ngIf=\"enableICP && toolbarButtons.showPresentationMode && isPdf()\"\n [disabled]=\"icpEnabled || !contentType || redactionEnabled\"\n id=\"mvPresentBtn\"\n #mvPresentBtn\n class=\"mv-button mv-toolbar__menu-button--present\"\n title=\"In-Court Presentation Mode\"\n data-l10n-id=\"icpMode_label\"\n [ngClass]=\"onToolBarOffSetChange('mvPresentBtn')\"\n aria-pressed=\"false\"\n (click)=\"togglePresentBar(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"icpMode_label\">{{\n \"Present\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"enableRedactions && toolbarButtons.showRedact\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvRedactBtn\"\n #mvRedactBtn\n title=\"Redact\"\n data-l10n-id=\"redact\"\n class=\"mv-button mv-toolbar__menu-button--redact\"\n [ngClass]=\"onToolBarOffSetChange('mvRedactBtn')\"\n [attr.aria-expanded]=\"isRedactOpen\"\n (click)=\"toggleRedactBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Redact\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showGrabNDragButton\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvGrabBtn\"\n #mvGrabBtn\n class=\"mv-button mv-toolbar__menu-button--grab\"\n title=\"Grab and drag\"\n [ngClass]=\"onToolBarOffSetChange('mvGrabBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleGrabNDrag(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Grab and drag\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDownload\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDownloadBtn\"\n #mvDownloadBtn\n class=\"mv-button mv-toolbar__menu-button--download\"\n title=\"Download\"\n data-l10n-id=\"download\"\n [ngClass]=\"onToolBarOffSetChange('mvDownloadBtn')\"\n aria-pressed=\"false\"\n (click)=\"downloadFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Download\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showPrint\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvPrintBtn\"\n #mvPrintBtn\n title=\"Print\"\n data-l10n-id=\"print\"\n class=\"mv-button mv-toolbar__menu-button--print\"\n [ngClass]=\"onToolBarOffSetChange('mvPrintBtn')\"\n aria-pressed=\"false\"\n (click)=\"printFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Print\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"enableAnnotations && toolbarButtons.showCommentSummary\"\n [disabled]=\"redactionEnabled\"\n id=\"mvCommentsBtn\"\n #mvCommentsBtn\n class=\"mv-button mv-toolbar__menu-button--comments\"\n title=\"Comments\"\n data-l10n-id=\"comments\"\n [ngClass]=\"onToolBarOffSetChange('mvCommentsBtn')\"\n [attr.aria-expanded]=\"isCommentsOpen\"\n (click)=\"toggleCommentsPanel(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Comments\" | rpxTranslate }}</span>\n </button>\n </ng-template>\n </div>\n </div>\n\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\"></div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { SearchType, 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\n@Component({\n selector: 'mv-redaction-toolbar',\n templateUrl: './redaction-toolbar.component.html'\n})\nexport class RedactionToolbarComponent implements OnInit, OnDestroy {\n\n @Input() showRedactSearch: boolean;\n\n preview = false;\n hasRedactions = false;\n\n private subscriptions: Subscription[] = [];\n redactionAllInProgress: boolean;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private store: Store<fromStore.AnnotationSetState>) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {\n this.hasRedactions = !!redactions.redactions.length;\n }));\n this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {\n this.redactionAllInProgress = inprogress;\n }));\n }\n\n onRedactAllSearch() {\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: true });\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 redactPage() {\n this.toolbarEventService.drawModeSubject.next(true);\n this.toolbarEventService.redactPage();\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n}\n","<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n","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';\nimport { IcpEventService } from '../icp-event.service';\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 public readonly icpEventService:IcpEventService) {}\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.icpEventService.becomePresenter();\n }\n\n stopPresenting() {\n this.icpEventService.stopPresenting();\n }\n\n leaveIcpSession() {\n this.icpEventService.leaveSession();\n }\n\n showParticipantsList() {\n this.toolbarEventService.toggleParticipantsList(!this.icpEventService.participantsListVisible.getValue());\n }\n}\n","<div id=\"icp-toolbar\" class=\"icpMode\">\n <div id=\"toolbar-title\">\n <label class=\"govuk-label\" data-l10n-id=\"digitalEvidence_label\">Digital evidence presentation</label>\n </div>\n\n <div id=\"presentation-mode\">\n <div class=\"item-label\">\n <label class=\"govuk-label\" data-l10n-id=\"icpInfo_label\">You are in presentation mode</label>\n </div>\n <div class=\"item-button\">\n <button class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" tabindex=\"0\"\n title=\"Leave presentation\" (click)=\"leaveIcpSession()\">\n <span data-l10n-id=\"icp-leave-presentation_label\">Leave presentation</span>\n </button>\n </div>\n </div>\n\n <div id=\"presenter-info\">\n <div class=\"item-label\">\n <label class=\"govuk-label\" *ngIf=\"!presenterName\" data-l10n-id=\"noPresenter_label\">Waiting for presenter</label>\n <label class=\"govuk-label\" *ngIf=\"presenterName && isPresenter\" data-l10n-id=\"isPresenter_label\">You are\n presenting</label>\n <label class=\"govuk-label\" *ngIf=\"presenterName && !isPresenter\"\n data-l10n-id=\"otherPresenter_label\">{{ presenterName | titlecase }}\n is presenting</label>\n </div>\n <div class=\"item-button\">\n <button *ngIf=\"!presenterName\" class=\"govuk-button\" id=\"icp-present\" tabindex=\"0\" title=\"Present\"\n (click)=\"present()\">\n <span data-l10n-id=\"icp-present_label\">Start presenting</span>\n </button>\n <button *ngIf=\"isPresenter\" class=\"govuk-button govuk-button--warning\" id=\"icp-stop-presenting\" tabindex=\"0\"\n title=\"Stop presenting\" (click)=\"stopPresenting()\">\n <span data-l10n-id=\"icp-stop-presenting_label\">Stop Presenting</span>\n </button>\n </div>\n </div>\n\n <div id=\"participant-list\">\n <button class=\"govuk-button govuk-button--secondary\" id=\"icp-participants-list\" tabindex=\"0\"\n title=\"Participants list\" (click)=\"showParticipantsList()\">\n <span\n data-l10n-id=\"icp-stop-presenting_label\">{{(icpEventService.participantsListVisible | async) ? 'Hide': 'Show'}}\n participants</span>\n </button>\n </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { SearchMode, SearchType, ToolbarEventService } from '../toolbar-event.service';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Store, select } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport * as fromRedactSelectors from '../../store/selectors/redaction.selectors';\n\n@Component({\n selector: 'mv-highlight-toolbar',\n templateUrl: './highlight-toolbar.component.html',\n styleUrls: ['./highlight-toolbar.component.scss']\n})\nexport class HighlightToolbarComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n redactionAllInProgress: boolean;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {\n this.redactionAllInProgress = inprogress;\n }));\n }\n\n onAllSearch() {\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Highlight, isOpen: true } as SearchMode);\n }\n\n onHighlight() {\n this.toolbarEventService.toggleHighlightMode();\n }\n\n onClickDrawToggle() {\n this.toolbarEventService.toggleDrawMode();\n }\n\n onClose() {\n this.toolbarEventService.highlightToolbarSubject.next(false);\n this.toolbarEventService.highlightModeSubject.next(false);\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Highlight, isOpen: false } as SearchMode);\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n}\n","<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\"\n >Highlight options</label\n >\n\n <button\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.toggled]=\"toolbarEventService.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"mvDrawBtn\"\n (click)=\"onClickDrawToggle()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"draw_label\">Draw a box</span>\n </button>\n\n <button\n id=\"highlightTextBtn\"\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight text\"\n data-l10n-id=\"highlightTextBtn\"\n (click)=\"onHighlight()\"\n [class.toggled]=\"toolbarEventService.highlightModeSubject | async\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"highlightTextBtn_label\">Highlight text</span>\n </button>\n\n <button\n id=\"mvHighlightFromSearchBtn\"\n title=\"From search\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\"\n >From search</span\n >\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"Close Redaction\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onClose()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">Close Highlight</span>\n </button>\n</div>\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","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 {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","<div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'govuk-form-group--error': errorMessage?.isInvalid }\"\n [formGroup]=\"formGroup\"\n>\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: config.legend,\n classes: 'govuk-label--m',\n id: config.id,\n hint: ' For example, 12 11 2007'\n }\"\n [isHeading]=\"false\"\n [errorMessage]=\"errorMessage\"\n >\n <mv-gov-uk-error-message\n [config]=\"{ id: 'passport' }\"\n *ngIf=\"errorMessage.isInvalid\"\n [errorMessage]=\"errorMessage\"\n >\n </mv-gov-uk-error-message>\n\n <div class=\"govuk-date-input\" [id]=\"config.id + '-date'\">\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Day',\n name: config.id,\n id: config.id + '-day',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-day'\"\n [name]=\"config.id + '-day'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'day'\"\n />\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Month',\n name: config.id + '-month',\n id: config.id + '-month',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-month'\"\n [name]=\"config.id + '-month'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'month'\"\n />\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Year',\n name: config.id + '-year',\n id: config.id + '-year',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-4\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-year'\"\n [name]=\"config.id + '-year'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'year'\"\n />\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n</div>\n","import { Component, Input, ViewChild, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, UntypedFormControl, Validators } 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: true }) 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 fromFilterValid: boolean = true;\n toFilterValid: boolean = true;\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('', [Validators.required]),\n month: new FormControl('', [Validators.required]),\n year: new FormControl('', [Validators.required])\n }),\n dateRangeTo: new FormGroup({\n day: new FormControl('', [Validators.required]),\n month: new FormControl('', [Validators.required]),\n year: new FormControl('', [Validators.required])\n }),\n tagFilters: this.fb.group({}),\n });\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentSummary));\n this.buildCheckBoxForm();\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\n\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\n this.fromFilterValid = hasDateFrom ? true : false;\n this.toFilterValid = hasDateTo ? true : false;\n\n if (this.filtersFg.valid) {\n this.store.dispatch(new fromAnnoActions.ApplyCommentSymmaryFilter({ ...value, dateRangeFrom, dateRangeTo }));\n }\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","<div id=\"modal-background\" class=\"modal\" (click)=\"onClose()\">\n <div\n #outerContainer\n id=\"modal\"\n class=\"modal-content govuk-width-container clearfix\"\n (click)=\"$event.stopPropagation()\"\n cdkTrapFocus\n tabindex=\"0\"\n >\n <div id=\"comment-container\" class=\"comment-container\" #commentContainer>\n <h2 class=\"govuk-heading-m\">{{ title }}</h2>\n <ng-container *ngIf=\"comments$ | async as comments\">\n <ng-container *ngIf=\"comments.length\">\n <button\n type=\"submit\"\n class=\"govuk-button govuk-!-margin-right-1\"\n (click)=\"onFiltersToggle()\"\n >\n {{\n !showFilters\n ? (\"Show Filters\" | rpxTranslate)\n : (\"Hide Filters\" | rpxTranslate)\n }}\n </button>\n <button\n type=\"submit\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"onClearFilters()\"\n *ngIf=\"hasFilter\"\n >\n {{ \"Clear Filters\" | rpxTranslate }}\n </button>\n <ng-container *ngIf=\"showFilters\">\n <form [formGroup]=\"filtersFg\" (ngSubmit)=\"onFilter()\">\n <div class=\"dates\">\n <div class=\"dates__from\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeFrom', legend: 'From' }\"\n [formGroup]=\"filtersFg.controls['dateRangeFrom']\"\n [errorMessage]=\"{\n isInvalid: !fromFilterValid,\n messages: ['From date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__to\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeTo', legend: 'To' }\"\n [formGroup]=\"filtersFg.controls['dateRangeTo']\"\n [errorMessage]=\"{\n isInvalid: !toFilterValid,\n messages: ['To date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__tags\">\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: 'Tags',\n classes: 'govuk-label--m',\n id: 'filters'\n }\"\n [isHeading]=\"false\"\n >\n <div\n class=\"govuk-checkboxes--scroll\"\n [formGroup]=\"filtersFg.controls['tagFilters']\"\n >\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"let item of allTags$ | async\"\n >\n <input\n [formControlName]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n type=\"checkbox\"\n />\n <label class=\"govuk-label govuk-checkboxes__label\">\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n </div>\n <div class=\"dates__cta\">\n <button type=\"submit\" class=\"govuk-button\">\n {{ \"Filter comments\" | rpxTranslate }}\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n <ng-container *ngIf=\"comments[0]\">\n <ngx-datatable\n [rows]=\"comments\"\n rowHeight=\"auto\"\n headerHeight=\"auto\"\n [columnMode]=\"'flex'\"\n [sorts]=\"[{ prop: 'date', dir: 'desc' }]\"\n >\n <ngx-datatable-column\n name=\"{{ 'User' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Page' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <a\n [routerLink]=\"[]\"\n class=\"comment-summary_pages\"\n (click)=\"navigateToPage(value)\"\n >{{ value }}</a\n >\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Date' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Comment' | rpxTranslate }}\"\n [flexGrow]=\"3\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Tags' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <span class=\"hmcts-badge\" *ngFor=\"let tag of value\">{{\n tag.label\n }}</span>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!comments[0]\">\n <h3 class=\"govuk-heading-s\">\n {{\n \"No comments available. Select text to add a highlight or comment.\"\n | rpxTranslate\n }}\n </h3>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"button-container\">\n <button (click)=\"onPrint()\" class=\"govuk-button govuk-button--secondary\">\n {{ \"Print\" | rpxTranslate }}\n </button>\n <button id=\"modal-close-button\" (click)=\"onClose()\" class=\"govuk-button\">\n {{ \"Close\" | rpxTranslate }}\n </button>\n </div>\n </div>\n</div>\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","<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, 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, OnChanges {\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.$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 ngOnChanges(changes: SimpleChanges) {\n if (changes.originalUrl?.currentValue && changes.originalUrl.currentValue !== changes.originalUrl.previousValue) {\n this.store.dispatch(new fromDocumentActions.Convert(this.extractDMStoreDocId(this.originalUrl)));\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","<mv-pdf-viewer *ngIf=\"convertedUrl\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (pdfViewerException)=\"onLoadException($event)\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n [url]=\"convertedUrl\"\n [downloadUrl]=\"originalUrl\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [annotationSet]=\"enableAnnotations ? annotationSet : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"height\">\n</mv-pdf-viewer>\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 { distinctUntilChanged, 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.pipe(distinctUntilChanged()).subscribe(rotation => this.onRotate(rotation));\n\n this.$subscriptions.add(this.toolbarEvents.saveRotationSubject.subscribe(() => this.saveRotation()));\n this.$subscriptions.add(this.store.pipe(select(fromDocuments.getRotation)).subscribe(rotation => this.savedRotation = rotation));\n this.$subscriptions.add(this.store.pipe(select(fromDocuments.getDocumentId)).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 } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { IcpEventService } from '../../toolbar/icp-event.service';\n\n@Component({\n selector: 'mv-confirm-action',\n templateUrl: './confirm-action-dialog.component.html',\n})\nexport class ConfirmActionDialogComponent {\n\n constructor(private icpEventService: IcpEventService) {}\n\n onCancel() {\n this.icpEventService.leavingSession.next(false);\n }\n\n onConfirm() {\n this.icpEventService.confirmExit();\n this.icpEventService.leavingSession.next(false);\n }\n}\n","<div id=\"modal-background\" class=\"modal\" (click)=\"onCancel()\">\n <div id=\"modal\" class=\"modal-content govuk-width-container clearfix\" (click)=\"$event.stopPropagation()\">\n <h2 class=\"govuk-heading-s\">Are you sure you want to leave the presentation?</h2>\n <div class=\"button-container\">\n <button id=\"modal-close-button\" (click)=\"onConfirm()\" class=\"govuk-button\">Confirm</button>\n <button (click)=\"onCancel()\" class=\"govuk-button govuk-button--secondary\">Cancel</button>\n </div>\n </div>\n</div>\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 { 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';\nimport { IcpEventService } from './toolbar/icp-event.service';\nimport { HtmlTemplatesHelper } from './shared/util/helpers/html-templates.helper';\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 @Input() enableRedactSearch = 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 public icpEventService: IcpEventService\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 = HtmlTemplatesHelper.getAdjustedBoundingRect(this.elRef.nativeElement).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.contentType) {\n this.convertibleContent = this.needsConverting();\n this.multimediaContent = this.isMultimedia();\n this.unsupportedContent = !this.isSupported();\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) && this.documentId) {\n this.store.dispatch(new fromRedactActions.LoadRedactions(this.documentId));\n }\n if (this.contentType === 'image') {\n this.documentTitle = null;\n }\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: false,\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 // If secure mode is enabled (which adds \"documentsv2\" to the documentId), get rid of it\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","<div\n id=\"outerContainer\"\n [ngClass]=\"{\n 'has-redact-bar': toolbarEvents.redactionMode | async,\n 'icp-mode': icpEventService.enabled | async,\n 'is-redaction-preview': toolbarEvents.redactionPreview | async,\n sidebarOpen: toolbarEvents.sidebarOpen | async,\n 'has-scroll-bar': hasScrollBar,\n 'has-different-page-size': hasDifferentPageSize$ | async\n }\"\n [ngStyle]=\"{ width: width }\"\n>\n <mv-comments-summary\n *ngIf=\"showCommentSummary\"\n [title]=\"documentTitle || 'Comment Summary'\"\n [contentType]=\"contentType\"\n >\n </mv-comments-summary>\n\n <mv-confirm-action\n *ngIf=\"icpEventService.leavingSession | async\"\n ></mv-confirm-action>\n\n <div id=\"mainContainer\">\n <mv-main-toolbar\n *ngIf=\"showToolbar\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableICP]=\"enableICP\"\n [enableRedactions]=\"enableRedactions\"\n [contentType]=\"contentType\"\n >\n </mv-main-toolbar>\n <mv-redaction-toolbar\n [showRedactSearch]=\"enableRedactSearch\"\n *ngIf=\"toolbarEvents.redactionMode | async\"\n ></mv-redaction-toolbar>\n <mv-highlight-toolbar\n *ngIf=\"toolbarEvents.highlightToolbarSubject | async\"\n ></mv-highlight-toolbar>\n <mv-icp-toolbar *ngIf=\"icpEventService.enabled | async\"></mv-icp-toolbar>\n\n <div #viewerRef>\n <mv-conversion-viewer\n *ngIf=\"convertibleContent\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (viewerException)=\"onLoadException($event)\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [originalUrl]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist\n >\n </mv-conversion-viewer>\n <mv-pdf-viewer\n *ngIf=\"contentType === 'pdf'\"\n #pdfViewer\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (pdfViewerException)=\"onLoadException($event)\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [enableICP]=\"enableICP\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n [caseId]=\"caseId\"\n mvRotationPersist\n >\n </mv-pdf-viewer>\n <mv-image-viewer\n *ngIf=\"contentType === 'image'\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (imageViewerException)=\"onLoadException($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist\n >\n </mv-image-viewer>\n <mv-multimedia-player\n *ngIf=\"multimediaContent\"\n [multimediaOn]=\"multimediaPlayerEnabled\"\n [url]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n >\n </mv-multimedia-player>\n <mv-unsupported-viewer\n *ngIf=\"unsupportedContent\"\n [url]=\"url\"\n [typeException]=\"typeException\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n (unsupportedViewerException)=\"onLoadException($event)\"\n >\n </mv-unsupported-viewer>\n </div>\n </div>\n</div>\n","import { RedactionSearchBarComponent } from './redaction-search-bar/redaction-search-bar.component';\nimport { 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 { RedactionToolbarComponent } from './redaction-toolbar/redaction-toolbar.component';\nimport { IcpToolbarComponent } from './icp-toolbar/icp-toolbar.component';\nexport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RouterModule } from '@angular/router';\nimport { HighlightToolbarComponent } from './highlight-toolbar/highlight-toolbar.component';\nimport { RpxTranslationModule } from 'rpx-xui-translation';\n\n\n@NgModule({\n declarations: [\n SearchBarComponent,\n MainToolbarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent,\n RedactionSearchBarComponent,\n HighlightToolbarComponent\n ],\n providers: [\n ToolbarButtonVisibilityService\n ],\n exports: [\n MainToolbarComponent,\n SearchBarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent,\n RedactionSearchBarComponent,\n HighlightToolbarComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n RouterModule,\n RpxTranslationModule.forChild(),\n ]\n})\nexport class ToolbarModule { }\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 { 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 { 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';\nimport { CommentService } from './comment-set/comment/comment.service';\nimport { RpxTranslationModule } from 'rpx-xui-translation';\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 RpxTranslationModule.forChild()\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 providers: [\n AnnotationApiService,\n BookmarksApiService,\n CommentSetRenderService,\n HighlightCreateService,\n CommentService,\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 { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, concatMap, 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 loadAnnotation$ = createEffect(() =>\n 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 if (res.status === 204) {\n return new annotationsActions.LoadAnnotationSetFail(res);\n }\n return new annotationsActions.LoadAnnotationSetSucess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }))\n );\n\n postAnnotation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION),\n concatMap((action: annotationsActions.SaveAnnotation) => {\n return this.annotationApiService.postAnnotation(action.payload).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\n deleteAnnotation$ = createEffect(() =>\n 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\n saveAnnotationSet$ = createEffect(() =>\n this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION_SET),\n map((action: annotationsActions.SaveAnnotationSet) => action.payload),\n switchMap((annotationSet) => {\n return this.annotationApiService.postAnnotationSet(annotationSet).pipe(\n map(res => {\n return new annotationsActions.SaveAnnotationSetSuccess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.SaveAnnotationSetFail(error));\n }));\n }))\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, 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 loadBookmarks$ = createEffect(() =>\n 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\n createBookmark$ = createEffect(() =>\n 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\n moveBookmark$ = createEffect(() =>\n 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\n deleteBookmark$ = createEffect(() =>\n 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\n updateBookmark$ = createEffect(() =>\n 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}\n","import { Observable } from 'rxjs';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\nimport { BulkRedaction, Redaction } from './redaction.model';\n\n@Injectable()\nexport class RedactionApiService {\n\n private markupsApiUrl = '/api/markups';\n private redactApiUrl = '/api/redaction';\n private markupsSearchApiUrl = '/api/markups/search';\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 saveBulkRedaction(body): Observable<BulkRedaction> {\n return this.httpClient\n .post<BulkRedaction>(this.markupsSearchApiUrl, 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, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap, tap } 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';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\n\n@Injectable()\nexport class RedactionEffects {\n constructor(\n private actions$: Actions,\n private redactionApiService: RedactionApiService,\n private toolbarEvents: ToolbarEventService\n ) { }\n\n loadRedactions$ = createEffect(() =>\n 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\n saveRedaction$ = createEffect(() =>\n 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\n saveBulkRedaction$ = createEffect(() =>\n this.actions$.pipe(\n ofType(redactionActions.SAVE_BULK_REDACTION),\n map((action: redactionActions.SaveRedaction) => action.payload),\n exhaustMap((redaction) => {\n return this.redactionApiService.saveBulkRedaction(redaction).pipe(\n tap(() => this.toolbarEvents.redactAllInProgressSubject.next(false))).pipe(map(resp => {\n return new redactionActions.SaveBulkRedactionSuccess(resp);\n }),\n catchError(error => {\n return of(new redactionActions.SaveBulkRedactionFailure(error));\n }));\n }))\n );\n\n deleteRedaction$ = createEffect(() =>\n 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\n redact$ = createEffect(() =>\n 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\n unmarkAll$ = createEffect(() =>\n 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\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, createEffect, 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 convert$ = createEffect(() =>\n 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\n loadRotation$ = createEffect(() =>\n 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\n saveRotation$ = createEffect(() =>\n 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}\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({ providedIn: 'root' })\nexport class IcpSessionApiService {\n\n public ICP_SESSION_API = '/icp/sessions';\n\n constructor(private readonly httpClient: HttpClient) { }\n\n public loadSession(payload: { caseId: string, documentId: string }): Observable<any> {\n return this.httpClient\n .get<{ username: string, session: IcpSession }>(`${this.ICP_SESSION_API}/${payload.caseId}/${payload.documentId}`,\n { observe: 'response', withCredentials: true })\n .pipe(map(response => {\n const token = response.headers.get('X-Access-Token');\n return { \n ...response.body, \n token\n };\n }));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, 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 loadIcpSession$ = createEffect(() =>\n this.actions$.pipe(\n ofType(icpActions.LOAD_ICP_SESSION),\n map((action: icpActions.LoadIcpSession) => action.payload),\n exhaustMap((payload: { caseId: string, documentId: string }) =>\n this.icpApiService.loadSession(payload)\n .pipe(\n map(res => new icpActions.JoinIcpSocketSession(res)),\n catchError(error => of(new icpActions.LoadIcpSessionFailure(error)))\n )\n ))\n );\n\n\n joinIcpSocketSession$ = createEffect(() =>\n this.actions$.pipe(\n ofType(icpActions.JOIN_ICP_SOCKET_SESSION),\n map((action: icpActions.JoinIcpSocketSession) => action.payload),\n switchMap((res: { username: string, session: IcpSession, token: string }) =>\n this.icpUpdateService.joinSession(res.username, res.session, res.token)\n .pipe(map(participants => new icpActions.IcpSocketSessionJoined({ session: res.session, participantInfo: participants })))\n ))\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 { RpxTranslationModule } from 'rpx-xui-translation';\nimport { 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 { 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';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\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 MutableDivModule,\n CdkTreeModule,\n DragDropModule,\n RpxTranslationModule.forChild()\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,\n BookmarkIconsComponent,\n ParticipantsListComponent\n ],\n providers: [\n PdfJsWrapperFactory,\n CommentService,\n RedactionApiService,\n DocumentConversionApiService,\n RotationApiService,\n ],\n exports: [\n MediaViewerComponent\n ]\n})\nexport class MediaViewerModule { }\n","/*\n * Public API Surface of media-viewer\n */\n\nexport * from './lib/media-viewer.module';\nexport * from './lib/toolbar/toolbar.module';\nexport * from './lib/annotations/services/annotation-api/annotation-api.service';\nexport * from './lib/annotations/annotations.module';\nexport * from './lib/viewers/viewer-exception.model';\nexport * from './lib/store/reducers/annotations.reducer';\nexport * from './lib/store/selectors/annotation.selectors';\nexport * from './lib/store/actions/annotation.actions';\nexport * from './lib/store/effects/annotation.effects';\nexport * from './lib/media-viewer.component';\nexport * from './lib/toolbar/highlight-toolbar/highlight-toolbar.component';\nexport * from './lib/toolbar/main-toolbar/main-toolbar.component';\nexport * from './lib/toolbar/search-bar/search-bar.component';\nexport * from './lib/toolbar/redaction-toolbar/redaction-toolbar.component';\nexport * from './lib/toolbar/redaction-search-bar/redaction-search-bar.component';\nexport * from './lib/toolbar/icp-toolbar/icp-toolbar.component';\nexport * from './lib/annotations/annotation-set/annotation-view/annotation-view.component';\nexport * from './lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component';\nexport * from './lib/annotations/annotation-set/annotation-set.component';\nexport * from './lib/annotations/comment-set/comment-set.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-set-header.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component';\nexport * from './lib/annotations/comments-summary/comments-summary.component';\nexport * from './lib/annotations/tags/tags.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component';\nexport * from './lib/annotations/annotation-set/metadata-layer/metadata-layer.component';\nexport * from './lib/annotations/pipes/filter/filter.pipe';\nexport * from './lib/annotations/pipes/unsnake/unsnake.pipe';\nexport * from './lib/annotations/pipes/date/date.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["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","getRotation","rotationLoaded","getConvertedDocument","fromAnnotations.LOAD_ANNOTATION_SET","fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS","fromAnnotations.LOAD_ANNOTATION_SET_FAIL","uuid","fromAnnotations.SAVE_ANNOTATION_SET_SUCCESS","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","fromBookmarks.UPDATE_BOOKMARK_SCROLL_TOP","getScrollTop","fromRedaction.LOAD_REDACTIONS","fromRedaction.LOAD_REDACTION_SUCCESS","fromRedaction.SAVE_REDACTION_SUCCESS","fromRedaction.SAVE_BULK_REDACTION_SUCCESS","fromRedaction.SELECT_REDACTION","fromRedaction.DELETE_REDACTION_SUCCESS","fromRedaction.REDACT_SUCCESS","fromRedaction.RESET_REDACTED_DOCUMENT","fromRedaction.UNMARK_ALL_SUCCESS","getRedactionEnt","fromIcpActions.SET_CASE_ID","fromIcpActions.ICP_SOCKET_SESSION_JOINED","fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED","fromIcpActions.ICP_PRESENTER_UPDATED","fromIcpActions.LEAVE_ICP_SOCKET_SESSION","getIcpSession","getPresenter","getClient","getParticipants","fromDocument.docReducer","fromAnnotation.reducer","fromTags.tagsReducer","fromBookmarks.bookmarksReducer","fromRedaction.redactionReducer","fromIcp.icpReducer","fromFeature.getMVState","fromDocument.getDocPages","fromDocument.getDocId","fromDocument.getPdfPos","fromDocument.getHasDifferentPageSizes","fromDocument.getConvertedDocument","fromDocument.getRotation","fromDocument.rotationLoaded","i1.IcpEventService","i1.ToolbarEventService","fromIcp.getIcpSession","fromIcp.getPresenter","fromIcp.getClient","fromIcp.getParticipants","i1.SocketService","fromDocSelectors.getPdfPosition","fromIcpSelectors.getPresenter","i2.IcpUpdateService","i3","i2.ViewerEventService","i3.IcpUpdateService","i4","fromIcpSelectors.getCaseId","fromDocument.getDocumentId","fromIcpActions.LoadIcpSession","fromIcpSelectors.getIcpSession","fromIcpSelectors.getClient","fromIcpSelectors.isPresenter","fromIcpActions.IcpPresenterUpdated","fromIcpActions.IcpParticipantListUpdated","fromIcpActions.LeaveIcpSocketSession","i4.IcpPresenterService","i5.IcpFollowerService","i6","i7.IcpEventService","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","fromSelectors.getDocumentIdSetId","fromActions.SaveAnnotation","fromActions.SaveAnnotationSet","i2","fromRedactionActions.SaveBulkRedaction","i2.ToolbarButtonVisibilityService","i3.ToolbarEventService","i4.HighlightCreateService","i7","i1","i1.TagsServices","fromSelector.getComponentSearchText","i2.CommentService","i3.TagsServices","i5","i6.TextHighlightDirective","i7.TextareaAutoExpandDirective","i8.TagsComponent","i9","i10.MomentDatePipe","fromSelectors.getCommentsArray","fromSelectors.getAnnotationEntities","fromActions.SelectedAnnotation","i3.CommentSetRenderService","i4.ToolbarEventService","i6.CommentComponent","i2.ToolbarEventService","fromActions.SearchComment","i4.CommentsNavigateComponent","fromSelectors.getTagFilters","fromActions.AddFilterTags","fromSelectors.getAllTagsArr","fromActions.ClearFilterTags","i6.FilterPipe","i7.UnsnakePipe","fromTagSelectors.getTagFilters","fromAnnoSelector.getFilteredAnnotations","i4.IcpEventService","i7.CommentSearchComponent","i8.CommentsNavigateComponent","i9.CommentFilterComponent","fromBookmarks.getBookmarkPageEnt","fromBookmarks.getBookmarkEnts","fromBookmarks.getEditBookmark","fromBookmarks.getScrollTop","fromDocument.getPdfPosition","i2.HighlightCreateService","fromActions.AddOrEditComment","i4.RectangleComponent","i5.CtxToolbarComponent","fromSelectors.getSelectedAnnotation","fromActions.DeleteAnnotation","i4.AnnotationViewComponent","fromSelectors.getPageEntities","fromBookmarks.getBookmarkInfo","i4.ViewerEventService","i6.BoxHighlightCreateComponent","i7.AnnotationSetComponent","i8.CtxToolbarComponent","bookmarksSelectors.getEditableBookmark","bookmarksSelectors.getBookmarkInfo","bookmarksSelectors.getBookmarkNodes","bookmarksSelectors.getScrollTop","i1.ViewerEventService","i6.BookmarksComponent","i7.OutlineItemComponent","i8","fromAnnotationActions.SelectedAnnotation","i3.HighlightCreateService","fromRedactions.getPageEnt","fromRedactions.getSelectedRedaction","fromRedactions.getRedactedDocInfo","fromRedactions.getRedactionEnt","fromSelectors.getRedactionsPerPage","fromSelectors.getSelected","fromSelectors.getRedactedDocumentInfo","fromRedaSelectors.getRedactionArray","fromRedaActions.Redact","fromRedaActions.UnmarkAll","fromRedactionActions.SaveRedaction","fromActions.DeleteRedaction","fromActions.SelectRedaction","fromActions.SaveRedaction","fromRedactionActions.ResetRedactedDocument","i5.AnnotationViewComponent","fromSelectors.getBookmarksPerPage","fromSelectors.getParticipants","fromSelectors.getPresenter","fromSelectors.isPresenter","i3.IcpEventService","fromTagActions.ClearFilterTags","fromDocumentsSelector.getPageDifference","fromDocumentActions.AddPages","i2.PdfJsWrapperFactory","i3.PrintService","i5.ViewerEventService","i6.IcpService","i7.ToolbarButtonVisibilityService","i8.IcpEventService","i10.RedactionSearchBarComponent","i11.CommentSetComponent","i12.CommentSetHeaderComponent","i13.MetadataLayerComponent","i14.SideBarComponent","i15.GrabNDragDirective","i16.HighlightCreateDirective","i17.RedactionComponent","i18.BookmarkIconsComponent","i19.ParticipantsListComponent","i20","fromDocument.AddPages","i2.PrintService","i3.ViewerUtilService","i5.ToolbarButtonVisibilityService","i6.ViewerEventService","i8.CommentSetComponent","i9.CommentSetHeaderComponent","i10.MetadataLayerComponent","i11.GrabNDragDirective","i12.RedactionComponent","i2.ViewerUtilService","i1.ToolbarButtonVisibilityService","i3.NumberHelperService","i8.SearchBarComponent","fromRedactSelectors.getRedactionArray","fromIcpSelectors.getPresenterName","i3.GovUkErrorMessageComponent","i4.GovUkFieldsetComponent","i5.GovUkLabelComponent","fromSelectors.getCommentSummary","fromSelectors.getCommentSummaryFilters","fromTagSelectors.getAllTagsArr","fromAnnoActions.ClearCommentSummaryFilters","fromAnnoActions.ApplyCommentSymmaryFilter","i9.GovUkDateComponent","i10.GovUkFieldsetComponent","i11","i12.UnsnakePipe","fromSelectors.getConvertedDocument","fromDocumentActions.ClearConvertDocUrl","fromDocumentActions.Convert","i3.PdfViewerComponent","fromDocuments.getRotation","fromDocuments.getDocumentId","fromDocumentActions.LoadRotation","fromDocuments.rotationLoaded","fromDocumentActions.SaveRotation","fromAnnoSelectors.getAnnotationSet","fromDocumentActions.SetDocumentId","fromAnnoActions.LoadAnnotationSet","fromRedactActions.LoadRedactions","i4.AnnotationApiService","i5.CommentService","i6.IcpEventService","i8.MainToolbarComponent","i9.RedactionToolbarComponent","i10.IcpToolbarComponent","i11.HighlightToolbarComponent","i12.CommentsSummaryComponent","i13.PdfViewerComponent","i14.ImageViewerComponent","i15.UnsupportedViewerComponent","i16.MultimediaPlayerComponent","i17.ConvertibleContentViewerComponent","i18.RotationPersistDirective","i19.ConfirmActionDialogComponent","annotationsActions.LOAD_ANNOTATION_SET","annotationsActions.LoadAnnotationSetFail","annotationsActions.LoadAnnotationSetSucess","annotationsActions.SAVE_ANNOTATION","annotationsActions.SaveAnnotationSuccess","annotationsActions.DELETE_ANNOTATION","annotationsActions.DeleteAnnotationSuccess","annotationsActions.DeleteAnnotationFail","annotationsActions.SAVE_ANNOTATION_SET","annotationsActions.SaveAnnotationSetSuccess","annotationsActions.SaveAnnotationSetFail","i2.AnnotationApiService","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","i3.BookmarksApiService","redactionActions.LOAD_REDACTIONS","redactionActions.LoadRedactionSuccess","redactionActions.LoadRedactionFailure","redactionActions.SAVE_REDACTION","redactionActions.SaveRedactionSuccess","redactionActions.SaveRedactionFailure","redactionActions.SAVE_BULK_REDACTION","redactionActions.SaveBulkRedactionSuccess","redactionActions.SaveBulkRedactionFailure","redactionActions.DELETE_REDACTION","redactionActions.DeleteRedactionSuccess","redactionActions.DeleteRedactionFailure","redactionActions.REDACT","redactionActions.RedactSuccess","redactionActions.RedactFailure","redactionActions.UNMARK_ALL","redactionActions.UnmarkAllSuccess","i2.RedactionApiService","documentActions.CONVERT","documentActions.ConvertSuccess","documentActions.ConvertFailure","documentActions.LOAD_ROTATION","documentActions.LoadRotationSuccess","documentActions.LoadRotationFailure","documentActions.SAVE_ROTATION","documentActions.SaveRotationSuccess","documentActions.SaveRotationFailure","i2.DocumentConversionApiService","i3.RotationApiService","icpActions.LOAD_ICP_SESSION","icpActions.JoinIcpSocketSession","icpActions.LoadIcpSessionFailure","icpActions.JOIN_ICP_SOCKET_SESSION","icpActions.IcpSocketSessionJoined","i2.IcpSessionApiService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hmcts-media-viewer.mjs","sources":["../../../projects/media-viewer/src/lib/viewers/viewer-exception.model.ts","../../../projects/media-viewer/src/lib/store/actions/document.actions.ts","../../../projects/media-viewer/src/lib/store/actions/tag.actions.ts","../../../projects/media-viewer/src/lib/store/actions/icp.actions.ts","../../../projects/media-viewer/src/lib/store/reducers/document.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/annotation.actions.ts","../../../projects/media-viewer/src/lib/store/store-utils.ts","../../../projects/media-viewer/src/lib/store/reducers/annotations.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/tags.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/bookmark.actions.ts","../../../projects/media-viewer/src/lib/store/bookmarks-store-utils.ts","../../../projects/media-viewer/src/lib/store/reducers/bookmarks.reducer.ts","../../../projects/media-viewer/src/lib/store/actions/redaction.actions.ts","../../../projects/media-viewer/src/lib/store/reducers/redaction.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/icp.reducer.ts","../../../projects/media-viewer/src/lib/store/reducers/reducers.ts","../../../projects/media-viewer/src/lib/store/selectors/document.selectors.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.ts","../../../projects/media-viewer/src/lib/toolbar/icp-event.service.ts","../../../projects/media-viewer/src/lib/toolbar/toolbar-event.service.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ts","../../../projects/media-viewer/src/lib/print.service.ts","../../../projects/media-viewer/src/lib/viewers/viewer-event.service.ts","../../../projects/media-viewer/src/lib/store/selectors/icp.selectors.ts","../../../projects/media-viewer/src/lib/icp/icp.events.ts","../../../projects/media-viewer/src/lib/icp/socket.service.ts","../../../projects/media-viewer/src/lib/icp/icp-update.service.ts","../../../projects/media-viewer/src/lib/icp/icp-presenter.service.ts","../../../projects/media-viewer/src/lib/icp/icp-follower.service.ts","../../../projects/media-viewer/src/lib/icp/icp.service.ts","../../../projects/media-viewer/src/lib/toolbar/toolbar-button-visibility.service.ts","../../../projects/media-viewer/src/lib/shared/util/helpers/html-templates.helper.ts","../../../projects/media-viewer/src/lib/store/selectors/tag.selectors.ts","../../../projects/media-viewer/src/lib/store/selectors/annotation.selectors.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-search-bar/redaction-search-bar.component.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-search-bar/redaction-search-bar.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.service.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-render.service.ts","../../../projects/media-viewer/src/lib/annotations/services/tags/tags.services.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ts","../../../projects/media-viewer/src/lib/annotations/tags/tags.component.ts","../../../projects/media-viewer/src/lib/annotations/tags/tags.component.html","../../../projects/media-viewer/src/lib/annotations/pipes/date/date.pipe.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment/comment.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-navigate/comments-navigate.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.html","../../../projects/media-viewer/src/lib/annotations/pipes/filter/filter.pipe.ts","../../../projects/media-viewer/src/lib/annotations/pipes/unsnake/unsnake.pipe.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.html","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ts","../../../projects/media-viewer/src/lib/annotations/comment-set/comment-set-header/comment-set-header.component.html","../../../projects/media-viewer/src/lib/store/selectors/bookmark.selectors.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/annotation-view.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-view/annotation-view.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-set.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-set.component.html","../../../projects/media-viewer/src/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/side-bar/side-bar.component.html","../../../projects/media-viewer/src/lib/viewers/grab-n-drag.directive.ts","../../../projects/media-viewer/src/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ts","../../../projects/media-viewer/src/lib/store/selectors/redaction.selectors.ts","../../../projects/media-viewer/src/lib/redaction/components/redaction.component.ts","../../../projects/media-viewer/src/lib/redaction/components/redaction.component.html","../../../projects/media-viewer/src/lib/bookmark/components/bookmark-icons.component.ts","../../../projects/media-viewer/src/lib/bookmark/components/bookmark-icons.component.html","../../../projects/media-viewer/src/lib/icp/participants-list/participants-list.component.ts","../../../projects/media-viewer/src/lib/icp/participants-list/participants-list.component.html","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/pdf-viewer/pdf-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/viewer-util.service.ts","../../../projects/media-viewer/src/lib/viewers/image-viewer/image-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/image-viewer/image-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/unsupported-viewer/unsupported-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/unsupported-viewer/unsupported-viewer.component.html","../../../projects/media-viewer/src/lib/annotations/services/annotation-api/annotation-api.service.ts","../../../projects/media-viewer/src/lib/shared/util/services/number.helper.service.ts","../../../projects/media-viewer/src/lib/toolbar/search-bar/search-bar.component.ts","../../../projects/media-viewer/src/lib/toolbar/search-bar/search-bar.component.html","../../../projects/media-viewer/src/lib/toolbar/main-toolbar/main-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/main-toolbar/main-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/redaction-toolbar/redaction-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/icp-toolbar/icp-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/icp-toolbar/icp-toolbar.component.html","../../../projects/media-viewer/src/lib/toolbar/highlight-toolbar/highlight-toolbar.component.ts","../../../projects/media-viewer/src/lib/toolbar/highlight-toolbar/highlight-toolbar.component.html","../../../projects/media-viewer/src/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-label/gov-uk-label.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-date/gov-uk-date.component.ts","../../../projects/media-viewer/src/lib/shared/gov-uk-date/gov-uk-date.component.html","../../../projects/media-viewer/src/lib/annotations/comments-summary/comments-summary.component.ts","../../../projects/media-viewer/src/lib/annotations/comments-summary/comments-summary.component.html","../../../projects/media-viewer/src/lib/viewers/multimedia-player/multimedia-player.component.ts","../../../projects/media-viewer/src/lib/viewers/multimedia-player/multimedia-player.component.html","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ts","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.html","../../../projects/media-viewer/src/lib/viewers/rotation-persist/rotation-persist.directive.ts","../../../projects/media-viewer/src/lib/icp/confirm-exit/confirm-action-dialog.component.ts","../../../projects/media-viewer/src/lib/icp/confirm-exit/confirm-action-dialog.component.html","../../../projects/media-viewer/src/lib/media-viewer.component.ts","../../../projects/media-viewer/src/lib/media-viewer.component.html","../../../projects/media-viewer/src/lib/toolbar/toolbar.module.ts","../../../projects/media-viewer/src/lib/annotations/services/bookmarks-api/bookmarks-api.service.ts","../../../projects/media-viewer/src/lib/shared/shared.module.ts","../../../projects/media-viewer/src/lib/annotations/annotations.module.ts","../../../projects/media-viewer/src/lib/store/effects/annotation.effects.ts","../../../projects/media-viewer/src/lib/store/effects/bookmarks.effects.ts","../../../projects/media-viewer/src/lib/redaction/services/redaction-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/redaction.effects.ts","../../../projects/media-viewer/src/lib/viewers/convertible-content-viewer/document-conversion-api.service.ts","../../../projects/media-viewer/src/lib/viewers/rotation-persist/rotation-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/document.effects.ts","../../../projects/media-viewer/src/lib/icp/icp-session-api.service.ts","../../../projects/media-viewer/src/lib/store/effects/icp.effects.ts","../../../projects/media-viewer/src/lib/store/effects/index.ts","../../../projects/media-viewer/src/lib/media-viewer.module.ts","../../../projects/media-viewer/src/public_api.ts","../../../projects/media-viewer/src/hmcts-media-viewer.ts"],"sourcesContent":["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 { 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: { caseId: string, documentId: 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 const pageNumberInput = document.getElementById('pageNumber') as HTMLInputElement;\n const pageIndex = pageNumberInput?.value ? parseInt(pageNumberInput.value, 10) - 1 : 0;\n const loadedPage = payload[pageIndex]?.div['attributes']?.style?.value ?? '';\n payload.forEach(page => {\n const sizingValue = page.div?.['attributes']?.style?.value ?? '';\n const widthMatch = sizingValue.match(/width:\\s*round\\(down,\\s*var\\(--scale-factor\\)\\s*\\*\\s*([\\d.]+)([a-z%]+)?,.*var\\(--scale-round-x, ([\\d.]+)([a-z%]+)?\\)\\)/);\n const heightMatch = sizingValue.match(/height:\\s*round\\(down,\\s*var\\(--scale-factor\\)\\s*\\*\\s*([\\d.]+)([a-z%]+)?,.*var\\(--scale-round-y, ([\\d.]+)([a-z%]+)?\\)\\)/);\n const scaleRoundXMatch = loadedPage.match(/--scale-round-x:\\s*([\\d.]+)([a-z%]+)?/);\n const scaleRoundYMatch = loadedPage.match(/--scale-round-y:\\s*([\\d.]+)([a-z%]+)?/);\n // You can now use widthUnit, heightUnit, scaleRoundXUnit, scaleRoundYUnit as needed\n const scaleFactor = page.viewportScale ?? 1;\n const scaleRoundX = scaleRoundXMatch ? parseFloat(scaleRoundXMatch[1]) : 1;\n const scaleRoundY = scaleRoundYMatch ? parseFloat(scaleRoundYMatch[1]) : 1;\n const baseWidth = widthMatch ? parseFloat(widthMatch[1]) : undefined;\n const baseHeight = heightMatch ? parseFloat(heightMatch[1]) : undefined;\n function roundDown(value: number, step: number): number {\n return Math.floor(value / step) * step;\n }\n const computedWidth = baseWidth !== undefined\n ? roundDown(scaleFactor * baseWidth, scaleRoundX)\n : page.div['clientWidth'];\n const computedHeight = baseHeight !== undefined\n ? roundDown(scaleFactor * baseHeight, scaleRoundY)\n : page.div['clientHeight'];\n\n if (!hasDifferentPageSize && pageHeight && pageWidth &&\n (pageHeight !== computedHeight || pageWidth !== computedWidth)) {\n hasDifferentPageSize = true;\n } else {\n pageHeight = computedHeight;\n pageWidth = computedWidth;\n }\n const styles = {\n left: page.div['offsetLeft'],\n height: computedHeight,\n width: computedWidth\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_SET = '[Annotations] Save Annotation Set';\nexport const SAVE_ANNOTATION_SET_SUCCESS = '[Annotations] Save Annotation Set Success';\nexport const SAVE_ANNOTATION_SET_FAIL = '[Annotations] Save 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 SaveAnnotationSet implements Action {\n readonly type = SAVE_ANNOTATION_SET;\n constructor(public payload: AnnotationSet) { }\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 SaveAnnotationSetSuccess implements Action {\n readonly type = SAVE_ANNOTATION_SET_SUCCESS;\n constructor(public payload: 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 SaveAnnotationSetFail implements Action {\n readonly type = SAVE_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 | SaveAnnotationSetSuccess\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 { v4 as uuid } from 'uuid';\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_SET_SUCCESS: {\n const anno = action.payload.annotations;\n const annEntities = {\n ...state.annotationEntities,\n ...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 ...anno,\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\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';\nexport const UPDATE_BOOKMARK_SCROLL_TOP = '[Bookmarks] Update Bookmark Scroll Top'\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\nexport class UpdateBookmarkScrollTop implements Action {\n readonly type = UPDATE_BOOKMARK_SCROLL_TOP;\n constructor(public payload: number) { }\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 | UpdateBookmarkScrollTop;\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 scrollTop?: number;\n}\n\nexport const initialBookmarksState: BookmarksState = {\n bookmarks: [],\n bookmarkEntities: {},\n bookmarkPageEntities: {},\n editableBookmark: undefined,\n loaded: false,\n loading: false,\n scrollTop: null,\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]\n = bookmarkPageEntities[pageNumber].filter(bookmark => !bmrkIds.includes(bookmark.id));\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 case fromBookmarks.UPDATE_BOOKMARK_SCROLL_TOP: {\n const scrollTop: number = action.payload;\n return {\n ...state,\n scrollTop: scrollTop\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;\nexport const getScrollTop = (state: BookmarksState) => state.scrollTop;","import { Action } from '@ngrx/store';\nimport { BulkRedaction, 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 SAVE_BULK_REDACTION = '[Redaction] Save bulk Redaction';\nexport const SAVE_BULK_REDACTION_SUCCESS = '[Redaction] Save bulk Redaction Success';\nexport const SAVE_BULK_REDACTION_FAIL = '[Redaction] Save bulk 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 SaveBulkRedactionFailure implements Action {\n readonly type = SAVE_BULK_REDACTION_FAIL;\n constructor(public payload: any) { }\n}\n\nexport class SaveBulkRedaction implements Action {\n readonly type = SAVE_BULK_REDACTION;\n constructor(public payload: BulkRedaction) { }\n}\n\nexport class SaveBulkRedactionSuccess implements Action {\n readonly type = SAVE_BULK_REDACTION_SUCCESS;\n constructor(public payload: BulkRedaction) { }\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 | SaveBulkRedactionSuccess;\n","import { map } from 'rxjs/operators';\nimport * 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 case fromRedaction.SAVE_BULK_REDACTION_SUCCESS: {\n const payloadResult = Object.assign({}, ...action.payload.searchRedactions.map((x) => ({ [x.redactionId]: x })));\n const redactionEntities = {\n ...state.redactionEntities,\n ...payloadResult\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 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 { Outline } from './../side-bar/outline-item/outline.model';\nimport { RedactionSearch } from './../../../toolbar/redaction-search-bar/redaction-search.model';\nimport * as pdfjs from 'pdfjs-dist';\nimport { DownloadManager, PDFLinkService, PDFViewer } from 'pdfjs-dist/web/pdf_viewer.mjs';\nimport 'pdfjs-dist/build/pdf.worker';\nimport 'pdfjs-dist/build/pdf.mjs';\nimport { Subject } from 'rxjs';\nimport { SearchOperation, SearchResultsCount, ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { PdfPosition } from '../../../store/reducers/document.reducer';\n\npdfjs.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 public redactionPages: { start: number, end: number }[];\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('pagechanging', e => this.drawMissingPages(e));\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 this.sendSearchDetails(event);\n });\n this.pdfViewer.eventBus.on('updatefindmatchescount', event => {\n const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious } as SearchResultsCount\n this.toolbarEvents.searchResultsCountSubject.next(result);\n });\n this.zoomValue = 1;\n this.redactionPages = []\n // Subscribe to redactionMode changes and run a function when it changes\n this.toolbarEvents.redactionMode.subscribe((redactionModeValue) => {\n this.onRedactionModeChanged(redactionModeValue);\n });\n }\n\n sendSearchDetails(event: any) {\n if (event.state !== FindState.PENDING) {\n const result = { ...event.matchesCount, isPrevious: event?.source?.state?.findPrevious } as SearchResultsCount\n this.toolbarEvents.searchResultsCountSubject.next(result);\n if (event?.source?.selected?.pageIdx !== -1 && event.matchesCount.total > 0) {\n this.toolbarEvents.redactionSerachSubject.next({\n page: event?.source?.selected?.pageIdx,\n matchedIndex: event?.source?.selected?.matchIdx,\n matchesCount: event.matchesCount.total\n } as RedactionSearch\n );\n }\n }\n }\n\n // in the event a user fast scrolls or navigates to a specific page, \n // we need to render the missing pages so redaction box is in right place\n drawMissingPages(e) {\n const redactionMode = this.toolbarEvents.redactionMode.getValue();\n const { pageNumber, previous: previousPageNumber } = e;\n if (!previousPageNumber || pageNumber < previousPageNumber || Math.abs(pageNumber - previousPageNumber) <= 1) {\n return;\n }\n const start = previousPageNumber + 1;\n const end = pageNumber;\n // if the redaction mode is on render the pages now\n if (redactionMode) {\n for (let i = start; i < end; i++) {\n const page = this.pdfViewer._pages[i - 1];\n if (page && !page.renderingState) {\n page.draw();\n }\n }\n } else {\n // keep track of pages as if a user skips to a page we need to render all the missing pages\n console.log('Adding redaction pages to queue:', start, end);\n this.redactionPages.push({ start, end });\n }\n }\n\n public onRedactionModeChanged(redactionMode: boolean) {\n if (redactionMode && this.redactionPages.length) {\n this.redactionPages.forEach(({ start, end }) => {\n console.log('Drawing redaction pages from queue:', start, end);\n for (let i = start; i < end; i++) {\n const page = this.pdfViewer._pages[i - 1];\n if (page && !page.renderingState) {\n page.draw();\n }\n }\n });\n this.redactionPages = [];\n }\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 = this.createLoadingTask(documentUrl);\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 if (this.pdfViewer.linkService instanceof PDFLinkService) {\n const linkservice: PDFLinkService = this.pdfViewer.linkService;\n linkservice.setDocument(pdfDocument, null);\n }\n\n const outlineNode = await pdfDocument.getOutline();\n const outline = outlineNode ? outlineNode.map(x => {\n return {\n bold: x.bold,\n color: x.color,\n count: x.count,\n dest: x.dest,\n italic: x.italic,\n items: x.items,\n newWindow: x.newWindow,\n title: x.title,\n unsafeUrl: x.unsafeUrl,\n url: x.url\n } as Outline\n }) : null;\n\n\n\n if (outline) {\n await this.setOutlinePageNumbers(pdfDocument, outline);\n }\n\n this.documentOutline = outline;\n this.outlineLoaded.next(this.documentOutline);\n const pdfMetaData = await pdfDocument.getMetadata();\n this.setCurrentPDFTitle((pdfMetaData.info as any)?.Title);\n } catch (e) {\n this.documentLoadFailed.next(e);\n }\n }\n\n private createLoadingTask(documentUrl: string) {\n return pdfjs.getDocument({\n url: documentUrl,\n cMapUrl: 'assets/minified/cmaps',\n cMapPacked: true,\n withCredentials: true,\n isEvalSupported: false\n });\n }\n\n private async setOutlinePageNumbers(pdfDocument, outlineArray: Outline[]) {\n outlineArray.forEach(async (outline: Outline) => {\n await this.setNestedOutlinePageNumbers(pdfDocument, outline);\n });\n }\n\n private async setNestedOutlinePageNumbers(pdfDocument, outline: Outline) {\n outline.pageNumber = await this.getOutlinePageNumber(pdfDocument, outline);\n outline.items.forEach(async (outlineItem: Outline) => {\n outlineItem.pageNumber = await this.getOutlinePageNumber(pdfDocument, outlineItem);\n this.setNestedOutlinePageNumbers(pdfDocument, outlineItem);\n });\n }\n\n private async getOutlinePageNumber(pdfDocument, outline: Outline): Promise<number> {\n const dest = outline.dest;\n const pageIndex = await pdfDocument.getPageIndex(dest[0]);\n return Number(pageIndex) + 1;\n }\n\n public downloadFile(url: string, filename: string): void {\n this.downloadManager.download(null, 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 ? '' : 'again';\n const data = {\n source: this.pdfViewer,\n type: 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 this.pdfViewer.eventBus.dispatch('find', data);\n }\n\n public clearSearch(): void {\n this.pdfViewer.eventBus.dispatch('findbarclose', {});\n }\n\n public navigateTo(destination: string | any[]) {\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.nativeNavigate(destination);\n }\n\n public nativeNavigate(destination: string | any[]) {\n this.pdfViewer.linkService.goToDestination(destination);\n }\n\n public setZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue(zoomValue).toString();\n this.zoomValue = +this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.zoomValue);\n }\n\n public stepZoom(zoomValue: number): void {\n this.pdfViewer.currentScaleValue = this.getZoomValue((+this.pdfViewer.currentScaleValue) + zoomValue).toString();\n this.zoomValue = +this.pdfViewer.currentScaleValue;\n this.toolbarEvents.zoomValueSubject.next(this.zoomValue);\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 { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IcpEventService {\n\n enabled = new BehaviorSubject(false);\n sessionLaunch = new Subject<void>();\n becomingPresenter = new Subject<void>();\n stoppingPresenting = new Subject<void>();\n leavingSession = new BehaviorSubject(false);\n sessionExitConfirmed = new Subject<void>();\n participantsListVisible = new BehaviorSubject(false);\n\n constructor() { }\n\n launchSession = () => {\n this.sessionLaunch.next();\n };\n\n enable = () => {\n this.enabled.next(true);\n this.launchSession();\n };\n\n becomePresenter = () => {\n this.becomingPresenter.next();\n };\n\n stopPresenting = () => {\n this.stoppingPresenting.next();\n };\n\n leaveSession = () => {\n this.leavingSession.next(true);\n };\n\n confirmExit = () => {\n this.sessionExitConfirmed.next();\n this.participantsListVisible.next(false);\n this.enabled.next(false);\n };\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n// import * as icpEvents from './icp-event.service';\n// import { participantsListVisible } from './icp-event.service';\nimport { RedactionSearch } from './redaction-search-bar/redaction-search.model';\nimport { IcpEventService } 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 isPrevious: boolean;\n}\n\nexport enum SearchType {\n Redact = 'Redact',\n Highlight = 'Highlight',\n}\n\nexport interface SearchMode {\n modeType: SearchType;\n isOpen: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToolbarEventService {\n\n constructor(private icpEventService: IcpEventService) {}\n\n public readonly highlightModeSubject = new BehaviorSubject<HighlightMode>(false);\n public readonly highlightToolbarSubject = 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<void>();\n public readonly downloadSubject = new Subject<void>();\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<void>();\n\n public readonly redactionMode = new BehaviorSubject(false);\n public readonly redactionPreview = new Subject<boolean>();\n public readonly applyRedactToDocument = new Subject<void>();\n\n public readonly clearAllRedactMarkers = new Subject<void>();\n public readonly redactWholePage = new Subject<void>();\n public readonly redactionSerachSubject = new Subject<RedactionSearch>();\n public readonly redactAllInProgressSubject = new BehaviorSubject(false);\n public readonly openRedactionSearch = new BehaviorSubject<SearchMode | null>(null);\n\n public readonly sidebarOpen = new BehaviorSubject(false);\n public readonly sidebarOutlineView = new BehaviorSubject(true);\n\n public readonly searchBarHidden = new BehaviorSubject(true);\n public readonly commentsPanelVisible = new BehaviorSubject(false);\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.highlightToolbarSubject.next(false);\n this.drawModeSubject.next(false);\n this.showCommentSummary.next(false);\n this.grabNDrag.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.grabNDrag.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.grabNDrag.next(false);\n this.drawModeSubject.next(true);\n } else {\n this.drawModeSubject.next(false);\n }\n }\n\n public toggleHighlightToolbar(): void {\n this.highlightToolbarSubject.next(!this.highlightToolbarSubject.getValue());\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 toggleSideBarView(toggle: boolean) {\n this.sidebarOutlineView.next(toggle);\n }\n\n public toggleRedactionMode(): void {\n if (this.redactionMode.getValue() === false) {\n this.drawModeSubject.next(false);\n this.grabNDrag.next(false);\n this.redactionMode.next(true);\n } else {\n this.redactionMode.next(false);\n }\n this.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: false });\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 redactPage(): void {\n this.redactWholePage.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.icpEventService.participantsListVisible.next(isVisible);\n }\n}\n","import 'pdfjs-dist/build/pdf.mjs';\nimport * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer.mjs';\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 });\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\n const printWindow = window.open(url);\n printWindow.focus();\n\n setTimeout((printer) => {\n printer.print();\n }, 3000, printWindow);\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 const documentHead = document.head;\n printWindow.document.body.appendChild(documentHead.cloneNode(true));\n printWindow.document.body.appendChild(element.cloneNode(true));\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n setTimeout((printer) => {\n printer.close();\n }, 1000, printWindow);\n }\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<void>();\n public readonly navigationEvent = new Subject<any[]>();\n public readonly navigationEventICP = 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 public goToDestinationICP(destination: any[]) {\n this.navigationEventICP.next(destination);\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","export enum IcpEvents {\n SESSION_JOINED = 'IcpClientJoinedSession',\n CLIENT_DISCONNECTED = 'IcpClientDisconnectedFromSession',\n NEW_PARTICIPANT_JOINED = 'IcpNewParticipantJoinedSession',\n REMOVE_PARTICIPANT = 'IcpRemoveParticipantFromList',\n PARTICIPANTS_UPDATED = 'IcpParticipantsListUpdated',\n UPDATE_PRESENTER = 'IcpNewPresenterStartsPresenting',\n PRESENTER_UPDATED = 'IcpPresenterUpdated',\n UPDATE_SCREEN = 'IcpUpdateScreen',\n SCREEN_UPDATED = 'IcpScreenUpdated',\n SESSION_JOIN = 'IcpClientJoinSession',\n SESSION_LEAVE = 'IcpClientLeaveSession',\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { IcpEvents } from './icp.events';\nimport { IcpParticipant, IcpSession } from './icp.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class SocketService implements OnDestroy {\n\n private socket: WebSocket;\n subscription: Subscription;\n connected$ = new BehaviorSubject<boolean>(false);\n sessionJoined$ = new Subject<void>();\n presenterUpdated$ = new Subject<void>();\n clientDisconnected$ = new Subject<void>();\n participantUpdated$ = new Subject<void>();\n newParticipantJoined$ = new Subject<void>();\n screenUpdated$ = new Subject<void>();\n\n constructor() { }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n connect(url: string, session: IcpSession) {\n const socketUrl = new URL(url);\n socketUrl.searchParams.append('sessionId', `${session.sessionId}`);\n socketUrl.searchParams.append('caseId', `${session.caseId}`);\n socketUrl.searchParams.append('documentId', `${session.documentId}`);\n this.subscription = this.getSocketClient(socketUrl.toString()).subscribe((socket: WebSocket) => {\n\n socket.onopen = (event: Event) => {\n this.connected$.next(true);\n };\n\n socket.onmessage = (event: MessageEvent) => {\n console.log('onmessage');\n const eventData = JSON.parse(event.data);\n if (eventData.data && eventData.data.eventName) {\n this.messageEventHandller(eventData.data.eventName, eventData.data.data);\n }\n };\n\n socket.onerror = (event: Event) => {\n console.log('onerror');\n };\n\n socket.onclose = (event: CloseEvent) => {\n console.log('onclose');\n };\n });\n }\n\n connected(): Observable<boolean> {\n return this.connected$.asObservable();\n }\n\n join(session) {\n this.emit(IcpEvents.SESSION_JOIN, session);\n }\n\n leave(session) {\n this.emit(IcpEvents.SESSION_LEAVE, session);\n this.subscription.unsubscribe();\n }\n\n emit(event: string, data: any) {\n if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n this.socket.send(JSON.stringify({\n type: 'event',\n event,\n data\n }));\n } else {\n console.warn('WebSocket is not open. Ready state is:', this.socket ? this.socket.readyState : 'no socket');\n }\n }\n\n listen(event: IcpEvents): Observable<any> {\n switch (event) {\n case IcpEvents.SESSION_JOINED: {\n return this.sessionJoined$.asObservable();\n }\n case IcpEvents.PRESENTER_UPDATED: {\n return this.presenterUpdated$.asObservable();\n }\n case IcpEvents.CLIENT_DISCONNECTED: {\n return this.clientDisconnected$.asObservable();\n }\n case IcpEvents.PARTICIPANTS_UPDATED: {\n return this.participantUpdated$.asObservable();\n }\n case IcpEvents.NEW_PARTICIPANT_JOINED: {\n return this.newParticipantJoined$.asObservable();\n }\n case IcpEvents.SCREEN_UPDATED: {\n return this.screenUpdated$.asObservable();\n }\n default: {\n break;\n }\n }\n }\n\n messageEventHandller(eventName: string, data: any) {\n switch (eventName) {\n case IcpEvents.SESSION_JOINED: {\n this.sessionJoined$.next(data);\n break;\n }\n case IcpEvents.PRESENTER_UPDATED: {\n this.presenterUpdated$.next(data);\n break;\n }\n case IcpEvents.CLIENT_DISCONNECTED: {\n this.clientDisconnected$.next();\n break;\n }\n case IcpEvents.PARTICIPANTS_UPDATED: {\n this.participantUpdated$.next(data);\n break;\n }\n case IcpEvents.NEW_PARTICIPANT_JOINED: {\n this.newParticipantJoined$.next();\n break;\n }\n case IcpEvents.SCREEN_UPDATED: {\n this.screenUpdated$.next(data);\n break;\n }\n }\n }\n\n getSocketClient(url: string): Observable<WebSocket> {\n this.socket = new WebSocket(url, 'json.webpubsub.azure.v1');\n return of(this.socket);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SocketService } from './socket.service';\nimport { IcpParticipant, IcpScreenUpdate, IcpSession } from './icp.interfaces';\nimport { IcpEvents } from './icp.events';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpUpdateService {\n\n session: IcpSession;\n\n constructor(private socket: SocketService) { }\n\n private joinSessionSubscription: any;\n\n joinSession(username: string, session: IcpSession, token: string) {\n this.session = session;\n this.socket.connect(`${session.connectionUrl}?access_token=${token}`, session);\n if (this.joinSessionSubscription) {\n this.joinSessionSubscription.unsubscribe();\n }\n this.joinSessionSubscription = this.socket.connected().subscribe(isConnected => {\n if (isConnected) {\n this.socket.join({ ...this.session, username });\n }\n });\n return this.socket.listen(IcpEvents.SESSION_JOINED);\n }\n\n leaveSession() {\n if (this.joinSessionSubscription) {\n this.joinSessionSubscription.unsubscribe();\n this.joinSessionSubscription = null;\n }\n this.socket.leave(this.session);\n }\n\n newParticipantJoined() {\n return this.socket.listen(IcpEvents.NEW_PARTICIPANT_JOINED);\n }\n\n clientDisconnected() {\n return this.socket.listen(IcpEvents.CLIENT_DISCONNECTED);\n }\n\n removeParticipant(participantId) {\n this.socket.emit(IcpEvents.REMOVE_PARTICIPANT, {\n participantId: participantId,\n caseId: this.session.caseId,\n documentId: this.session.documentId\n });\n }\n\n participantListUpdated() {\n return this.socket.listen(IcpEvents.PARTICIPANTS_UPDATED);\n }\n\n updatePresenter(presenter: IcpParticipant) {\n this.socket.emit(IcpEvents.UPDATE_PRESENTER, {\n ...this.session,\n presenterId: presenter.id,\n presenterName: presenter.username\n });\n }\n\n presenterUpdated() {\n return this.socket.listen(IcpEvents.PRESENTER_UPDATED);\n }\n\n updateScreen(screen: IcpScreenUpdate) {\n const update = {\n body: screen,\n caseId: this.session.caseId,\n documentId: this.session.documentId\n };\n this.socket.emit(IcpEvents.UPDATE_SCREEN, update);\n }\n\n screenUpdated() {\n return this.socket.listen(IcpEvents.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 { distinctUntilChanged, Subscription, take } 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({ providedIn: 'root' })\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 { distinctUntilChanged, take } from 'rxjs/operators';\nimport { IcpState, IcpSession } from './icp.interfaces';\nimport * as fromDocSelectors from '../store/selectors/document.selectors';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpFollowerService {\n\n session: IcpSession;\n private previousRotation: number|null = null;\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.goToDestinationICP([\n pdfPosition.pageNumber - 1,\n { 'name': 'XYZ' },\n pdfPosition.left,\n pdfPosition.top\n ]);\n }\n this.store.pipe(\n select(fromDocSelectors.getPdfPosition), \n take(1), \n distinctUntilChanged(undefined, a => a.rotation))\n .subscribe(position => {\n if (this.previousRotation === pdfPosition.rotation) {\n return;\n }\n const rotationDelta = (pdfPosition.rotation - position.rotation) % 360;\n if (rotationDelta && 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 * as fromDocument from '../store/selectors/document.selectors';\nimport { filter, take } from 'rxjs/operators';\nimport { IcpEventService } from '../toolbar/icp-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class IcpService implements OnDestroy {\n\n caseId: string;\n client: IcpParticipant;\n presenter: IcpParticipant;\n isPresenter: boolean;\n documentId: string;\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 private readonly icpEventService: IcpEventService) {\n this.subscription = this.store.pipe(select(fromIcpSelectors.getCaseId), filter(value => !!value)).subscribe(caseId => {\n this.caseId = caseId;\n });\n this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.subscription.add(this.icpEventService.sessionLaunch.subscribe(() => {\n\n if (this.caseId && this.documentId) { 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({ caseId: this.caseId, documentId: this.documentId }));\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.icpEventService.becomingPresenter.subscribe(() => this.becomePresenter());\n this.sessionSubscription.add(this.icpEventService.stoppingPresenting.subscribe(() => this.stopPresenting()));\n this.sessionSubscription.add(this.icpEventService.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 { 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","/**\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 static getAdjustedBoundingRect(element: HTMLElement, log: boolean = true): DOMRect {\n const viewportX = window.visualViewport.offsetLeft\n const viewportY = window.visualViewport.offsetTop;\n const viewportScale = window.visualViewport.scale;\n const viewportPageX = window.visualViewport.pageLeft;\n const viewportPageY = window.visualViewport.pageTop;\n if (log && viewportX || viewportY || (viewportScale != 1) || viewportPageX || viewportPageY) {\n console.log(`Element: ${element.id} Viewport X: ${viewportX}, Y: ${viewportY}, Scale: ${viewportScale}, PageX: ${viewportPageX}, PageY: ${viewportPageY}`);\n }\n return element.getBoundingClientRect();\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 const savedComments = comments.filter((comment) => {\n return comment.createdByDetails !== undefined;\n }\n );\n return savedComments.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 { ToolbarEventService } from './../../../../toolbar/toolbar-event.service';\nimport { Injectable } from '@angular/core';\nimport { take} from 'rxjs/operators';\nimport { select, Store } from '@ngrx/store';\nimport { v4 as uuid } from 'uuid';\nimport moment from 'moment-timezone';\n\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\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';\nimport { RedactRectangle } from '../../../../toolbar/redaction-search-bar/redaction-search.model';\nimport { AnnotationSet } from '../../annotation-set.model';\n\n@Injectable({ providedIn: 'root' })\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 saveAnnotationSet(searchRectangles: RedactRectangle[]) {\n this.store.pipe(select(fromSelectors.getDocumentIdSetId), take(1)).subscribe(anoSetDocId => {\n const annoSet = searchRectangles.map(x => {\n return {\n id: uuid(),\n color: 'FFFF00',\n comments: [],\n page: x.page,\n rectangles: x.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 } as Annotation;\n });\n this.store.dispatch(new fromActions.SaveAnnotationSet({\n id: anoSetDocId.annotationSetId, annotations: annoSet, documentId: anoSetDocId.documentId } as AnnotationSet));\n });\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 { BulkRedaction, Redaction } from './../../redaction/services/redaction.model';\nimport { SearchMode, SearchResultsCount, SearchType } from './../toolbar-event.service';\nimport { RedactionSearch, RedactRectangle } from './redaction-search.model';\nimport { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport { ToolbarEventService } from '../toolbar-event.service';\nimport { Store, select } from '@ngrx/store';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Rectangle } from '../../annotations/annotation-set/annotation-view/rectangle/rectangle.model';\nimport * as fromDocument from '../../store/selectors/document.selectors';\nimport * as fromRedactionActions from '../../store/actions/redaction.actions';\nimport { v4 as uuid } from 'uuid';\nimport { HighlightCreateService } from '../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.service';\nimport { some } from 'lodash';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\n\n@Component({\n selector: 'mv-redaction-search-bar',\n templateUrl: './redaction-search-bar.component.html',\n styleUrls: ['./redaction-search-bar.component.scss']\n})\nexport class RedactionSearchBarComponent 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 redactElements: RedactRectangle[] = [];\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n redactAll: boolean;\n openSearchModal: boolean;\n redactAllInProgress: boolean;\n redactAllText?: string;\n searchType: SearchType;\n inProgressText: string;\n titleText: string;\n\n\n private subscription: Subscription;\n private documentId: string;\n public advancedSearchVisible = false;\n\n\n constructor(\n private store: Store<fromStore.State>,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n public readonly toolbarEvents: ToolbarEventService,\n public readonly highlightService: HighlightCreateService,\n ) { }\n\n public ngOnInit(): void {\n this.subscription = this.toolbarEvents.redactionSerachSubject.subscribe((results: RedactionSearch) => this.redactAllSearched(results));\n this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));\n this.subscription.add(this.store.pipe(select(fromDocument.getPages)).subscribe((pages) => {\n if (pages[1]) {\n this.allPages = pages;\n }\n }));\n this.subscription.add(\n this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results))\n );\n this.subscription.add(this.toolbarEvents.openRedactionSearch.subscribe((searchMode: SearchMode) => {\n if (searchMode) {\n this.openSearchModal = searchMode.isOpen;\n this.searchType = searchMode.modeType;\n this.modeText();\n }\n }));\n this.subscription.add(this.toolbarEvents.redactAllInProgressSubject\n .subscribe(inProgress => this.redactAllInProgress = inProgress));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\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 this.toolbarEvents.searchBarHidden.next(false);\n setTimeout(() => this.findInput.nativeElement.focus(), 200);\n }\n }\n\n search(reset: boolean = true): void {\n this.redactAll = !reset;\n if (this.redactAll) {\n this.toolbarEvents.redactAllInProgressSubject.next(true);\n }\n if (reset) {\n this.redactElements = [];\n }\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\n });\n }\n\n modeText(): void {\n if (this.searchType === SearchType.Highlight) {\n this.inProgressText = 'Highlighting';\n this.titleText = 'Highlight';\n } else if (this.searchType === SearchType.Redact) {\n this.inProgressText = 'Redacting';\n this.titleText = 'Redact';\n }\n }\n\n private saveRedaction(redactRectangle: RedactRectangle[]) {\n const redaction = redactRectangle.map(ele => {\n return { page: ele.page, rectangles: ele.rectangles, redactionId: uuid(), documentId: this.documentId } as Redaction;\n });\n this.store.dispatch(new fromRedactionActions.SaveBulkRedaction({ searchRedactions: redaction } as BulkRedaction));\n }\n\n private existInRedactElements(pageNumber: number, matechedIndex: number, rectangles: Rectangle[]): boolean {\n if (this.redactElements && this.redactElements.length > 0) {\n const pagesFound = this.redactElements.find(re => re.page === pageNumber && re.matchedIndex === matechedIndex);\n const pageRectangles = pagesFound?.rectangles;\n if (!pageRectangles || pageRectangles.length <= 0) {\n return false;\n }\n let matchesRectangles = 0;\n for (let rectIndx = 0; rectIndx < pageRectangles.length; rectIndx++) {\n const rectangle = pageRectangles[rectIndx];\n const foundRectangle = rectangles.find(re => re.width === rectangle.width &&\n re.height === rectangle.height && re.x === rectangle.x && re.y === rectangle.y);\n if (foundRectangle) {\n matchesRectangles++;\n }\n }\n return pageRectangles.length === matchesRectangles;\n }\n return false;\n }\n\n onCloseSearchModal() {\n this.toolbarEvents.openRedactionSearch.next({ isOpen: false, modeType: this.searchType });\n }\n\n\n private setSearchResultsCount(results: SearchResultsCount): void {\n this.resultCount = results.total;\n this.resultsText = this.resultCount > 0\n ? `${results.total} results founds`\n : 'No results found';\n }\n\n private redactAllSearched(results: RedactionSearch): void {\n const $this = this;\n const intervalId = setInterval(() => {\n const highlightElement = document.getElementsByClassName('highlight selected');\n if (highlightElement && highlightElement.length > 0) {\n clearInterval(intervalId);\n $this.redactAllSearchedTick(results);\n }\n }, 100);\n }\n\n\n private redactAllSearchedTick(results: RedactionSearch): void {\n const highlightElement = document.getElementsByClassName('highlight selected');\n if (highlightElement && highlightElement.length > 0) {\n this.resultCount = results.matchesCount;\n const pageNumber = results.page + 1;\n const rectangles = this.getRectangles(pageNumber);\n if (rectangles && this.redactElements.length <= this.resultCount\n && !this.existInRedactElements(pageNumber, results.matchedIndex, rectangles)) {\n this.redactElements.push({ page: pageNumber, matchedIndex: results?.matchedIndex, rectangles } as RedactRectangle);\n this.CreateRedactAllText();\n }\n if (this.redactAll && this.resultCount && this.resultCount > 0\n && rectangles && this.redactElements.length < this.resultCount) {\n this.search(false);\n }\n\n if (this.redactAll && this.resultCount && this.redactElements.length === this.resultCount) {\n this.redactAll = false;\n this.redactAllText = null;\n if (this.searchType === SearchType.Redact) {\n this.saveRedaction(this.redactElements);\n } else if (this.searchType === SearchType.Highlight) {\n this.highlightService.saveAnnotationSet(this.redactElements);\n this.cleanUpPostSave();\n }\n }\n }\n }\n\n private cleanUpPostSave() {\n this.toolbarEvents.redactAllInProgressSubject.next(false);\n this.searchText = '';\n this.search();\n }\n\n private CreateRedactAllText() {\n this.redactAllText = `${this.redactElements.length} of ${this.resultCount}`;\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 public toggleSearchBar() {\n this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());\n }\n\n private getRectangles(page: number): Rectangle[] {\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 selectedHighLightedElements = document.getElementsByClassName('highlight selected');\n if (selectedHighLightedElements && selectedHighLightedElements.length > 0) {\n const docRange = document.createRange();\n if (some(selectedHighLightedElements, element => element.className === 'highlight begin selected' || element.className === 'highlight end selected')) {\n docRange.setStart(selectedHighLightedElements[0], 0);\n const endNode = selectedHighLightedElements[selectedHighLightedElements.length - 1];\n docRange.setEnd(endNode, endNode.childNodes.length);\n }\n else {\n docRange.selectNodeContents(selectedHighLightedElements[0] as HTMLElement);\n }\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(docRange);\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 = HtmlTemplatesHelper.getAdjustedBoundingRect(selectedHighLightedElements[0]?.parentElement?.parentElement);\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n const findSelecttionRectangle = selectionRectangles.find(\n (rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x\n );\n if (!findSelecttionRectangle) {\n selectionRectangles.push(selectionRectangle);\n }\n }\n\n return selectionRectangles;\n }\n }\n }\n }\n\n private createTextRectangle(rect: DOMRect, 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(\n this.pageHeight,\n this.pageWidth,\n height,\n width,\n top,\n left,\n this.rotate,\n this.zoom\n );\n rectangle = { id: uuid(), ...rectangle };\n\n return rectangle as Rectangle;\n }\n}\n","<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport type { CommentSetComponent } from '../comment-set.component';\nimport { Annotation } from '../../annotation-set/annotation-view/annotation.model';\nimport type { CommentComponent } from './comment.component';\n\n// TODO: replace by NgRx\n@Injectable()\nexport class CommentService {\n\n public readonly unsavedChanges = new Subject<boolean>();\n public readonly marginToCommentEmitter = new BehaviorSubject<boolean>(false);\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 createMarginToCommentEvent(margin: boolean) {\n this.marginToCommentEmitter.next(margin);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CommentComponent } from './comment/comment.component';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\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 HtmlTemplatesHelper.getAdjustedBoundingRect(element.form.nativeElement)?.height | 0;\n }\n\n private difference(a: number, b: number): number { return Math.abs(a - b); }\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 { 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 { 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, ViewEncapsulation} from '@angular/core';\nimport {TagsModel} from '../models/tags.model';\nimport {TagsServices} from '../services/tags/tags.services';\nimport {UntypedFormControl} 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: UntypedFormControl) {\n if (control.value.length < 2) {\n return {\n 'minLength': true\n };\n }\n return null;\n }\n\n private maxLength20(control: UntypedFormControl) {\n if (control.value.length >= 20) {\n return {\n 'maxLength20': true\n };\n }\n return null;\n }\n}\n","<div class=\"tags\">\n <tag-input\n *ngIf=\"editable\" class=\"tags__edit\"\n [maxItems]=\"10\"\n [ngModel]=\"tagItems\"\n (ngModelChange)=\"tagItems = $event; onUpdateTags($event)\"\n [ngModelOptions]=\"{standalone:true}\"\n [placeholder]=\"'Add tag'\"\n [displayBy]=\"'label'\"\n [identifyBy]=\"'name'\"\n [onTextChangeDebounce]=\"250\"\n [secondaryPlaceholder]=\"'Search or add tags'\"\n [validators]=\"validators\"\n [errorMessages]=\"errorMessages\"\n [onlyFromAutocomplete]=\"false\">\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [displayBy]=\"'label'\"\n [identifyBy]=\"'name'\"\n [zIndex]=\"10000\"\n [minimumTextLength]=\"2\">\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.label }}\n </ng-template>\n </tag-input-dropdown>\n </tag-input>\n\n <div class=\"tags__renderer\" *ngIf=\"!editable && (tagItems && tagItems.length)\">\n <span *ngFor=\"let tag of tagItems\" class=\"tags__item hmcts-badge\">\n {{tag.label}}\n </span>\n </div>\n</div>\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 ): any {\n const timezoneOffset = moment(value).tz(timezone).format('Z');\n return super.transform(value, format, timezoneOffset);\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 { Observable, 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';\nimport { HtmlTemplatesHelper } from '../../../shared/util/helpers/html-templates.helper';\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 marginToComment$: Observable<boolean> ;\n\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 this.marginToComment$ = this.commentService.marginToCommentEmitter.asObservable();\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 HtmlTemplatesHelper.getAdjustedBoundingRect(this.form.nativeElement).height / this.zoom;\n }\n}\n","<div\n #form\n (click)=\"onCommentClick()\"\n class=\"aui-comment\"\n [ngClass]=\"{ stylestoggle: (marginToComment$ | async) }\"\n [style.top.px]=\"commentTop\"\n [style.zIndex]=\"selected ? 100 : 0\"\n>\n <div id=\"detailsWrapper {{ index }}\" class=\"aui-comment__header\">\n <span *ngIf=\"author && !editor\" class=\"aui-comment__author\">\n {{ author.forename }} {{ author.surname }}\n </span>\n <span *ngIf=\"editor\" class=\"aui-comment__author\">\n {{ editor.forename }} {{ editor.surname }}\n </span>\n <time [hidden]=\"!selected && !this.editable\" class=\"aui-comment__meta\">\n {{ lastUpdate | momentDate : \"d MMMM y h:mm a\" }}\n </time>\n </div>\n <mv-tags\n [tagItems]=\"tagItems\"\n [userId]=\"createdBy\"\n [editable]=\"editable\"\n [annoId]=\"_comment.annotationId\"\n >\n </mv-tags>\n <textarea\n *ngIf=\"selected && editable\"\n #editableComment\n mvTextAreaAutoExpand\n type=\"text\"\n required\n name=\"content\"\n [maxlength]=\"CHAR_LIMIT\"\n class=\"aui-comment__content form-control mimic-focus edit-mode expanded\"\n [ngModel]=\"fullComment\"\n (ngModelChange)=\"fullComment = $event; reRenderComments(); onCommentChange($event)\"\n aria-label=\"comment\"\n >\n </textarea>\n <p\n *ngIf=\"!editable\"\n mvTextHighlight\n class=\"commentText\"\n [textToHighlight]=\"searchString\"\n >\n {{ fullComment }}\n </p>\n <div\n *ngIf=\"\n selected ||\n this.editable ||\n (!fullComment.length && tagItems && !tagItems.length)\n \"\n class=\"aui-comment__footer commentBtns\"\n >\n <button\n class=\"govuk-button\"\n type=\"button\"\n role=\"button\"\n (click)=\"editOrSave()\"\n >\n {{ !editable ? (\"Edit\" | rpxTranslate) : (\"Save\" | rpxTranslate) }}\n </button>\n <button\n type=\"button\"\n role=\"button\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"deleteOrCancel()\"\n >\n {{ !editable ? (\"Delete\" | rpxTranslate) : (\"Cancel\" | rpxTranslate) }}\n </button>\n </div>\n <span class=\"aui-comment__private\">{{ \"private\" | rpxTranslate }}</span>\n</div>\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","<div #container [ngClass]=\"{'comments': showCommentsPanel}\">\n <div #panel [ngClass]=\"{ 'comments-panel comment-container': true, 'expanded': showCommentsPanel }\"\n [style.height.px]=\"height\"\n (click)=\"onContainerClick($event)\">\n <ng-container *ngFor=\"let comment of (comments$ | async); let i = index;\">\n <mv-anno-comment\n [ngStyle]=\"showCommentsPanel ? {} : {'display':'none'}\"\n #commentComponent\n (commentClick)=\"onSelect($event)\"\n (delete)=\"onCommentDelete($event)\"\n (updated)=\"onCommentUpdate($event)\"\n (changes)=\"allCommentsSaved()\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [index]=\"i\"\n [page]=\"comment.page\"\n [comment]=\"comment\"\n [annotation]=\"(annoEntities$ | async)[comment.annotationId]\"\n (renderComments)=\"redrawComments()\">\n </mv-anno-comment>\n </ng-container>\n </div>\n</div>\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","<p class=\"comment-search\">\n <span class=\"comment-search__item\">\n Showing {{ index + 1 }} of {{ navigationList.length }}\n </span>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Previous comment\"\n (click)=\"prevItem()\">Prev</a>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Next comment'\"\n (click)=\"nextItem()\">Next</a>\n</p>\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","<input\n #searchInput\n type=\"text\"\n class=\"govuk-input comment-search__item\"\n id=\"search-comments-input\"\n name=\"searchString\"\n aria-label=\"search comments input\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchString = $event\"\n/>\n<button\n type=\"button\"\n [class.govuk-button--disabled]=\"searchInput?.value.length <= 2\"\n class=\"govuk-button comment-search__item\"\n (click)=\"searchComments(searchInput.value.trim())\"\n>\n {{ \"Search\" | rpxTranslate }}\n</button>\n<ng-container *ngIf=\"searchResults.length > 0\">\n <mv-comments-navigate [annotationList]=\"searchResults\"></mv-comments-navigate>\n</ng-container>\n<ng-container *ngIf=\"searchString && searchResults?.length === 0\">\n <p class=\"comment-search__item\">\n {{ \"No matches have been found\" | rpxTranslate }}\n </p>\n</ng-container>\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, 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 {UntypedFormGroup, UntypedFormBuilder, UntypedFormControl} 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: UntypedFormGroup;\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: UntypedFormBuilder) {}\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 = <UntypedFormGroup>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 UntypedFormControl(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 = <UntypedFormGroup>this.tagGroup.get('tagFilters');\n checkboxes.controls[tagName].setValue(false);\n }\n\n onToggleFilterView() {\n this.isPreview = !this.isPreview;\n }\n\n\n}\n","<div class=\"comment-filter\">\n <div class=\"hmcts-filter__content\">\n <div class=\"hmcts-filter__toggle-filters\">\n <p\n class=\"hmcts-filter__toggle-filters-link\"\n [ngClass]=\"{ 'govuk-accordion__section--expanded': isPreview }\"\n (click)=\"onToggleFilterView()\"\n >\n <strong>{{ \"Filter options\" | rpxTranslate }}</strong\n ><span class=\"govuk-accordion__icon\"></span>\n </p>\n </div>\n\n <ng-container *ngIf=\"filter$ | async as filters\">\n <div class=\"hmcts-filter__selected-heading\" *ngIf=\"filters.length\">\n <div class=\"hmcts-filter__heading-action\">\n <p>\n <a\n (click)=\"onClearFilters()\"\n class=\"govuk-link govuk-link--no-visited-state\"\n [routerLink]=\"[]\"\n >{{ \"Clear filters\" | rpxTranslate }}</a\n >\n </p>\n </div>\n </div>\n\n <h4\n class=\"govuk-heading-s govuk-!-margin-bottom-0\"\n *ngIf=\"filters.length\"\n >\n {{ \"Tag filters\" | rpxTranslate }}\n </h4>\n\n <ul class=\"hmcts-filter-tags\" *ngIf=\"filters.length\">\n <li *ngFor=\"let tagName of filters\">\n <a\n class=\"hmcts-filter__tag\"\n [routerLink]=\"[]\"\n (click)=\"onRemoveFilter(tagName)\"\n >\n <span class=\"govuk-visually-hidden\">{{\n \"Remove this filter\" | rpxTranslate\n }}</span\n >{{ tagName | unsnake }}</a\n >\n </li>\n </ul>\n </ng-container>\n\n <div class=\"hmcts-filter__options\" [ngClass]=\"{ isVisible: isPreview }\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-label--s\" for=\"keywords\">\n {{ \"Search Tags\" | rpxTranslate }}\n </label>\n <input\n class=\"govuk-input\"\n id=\"keywords\"\n name=\"keywords\"\n type=\"text\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"searchValue = $event\"\n />\n </div>\n\n <div class=\"govuk-form-group\">\n <div [formGroup]=\"tagGroup\">\n <fieldset class=\"govuk-fieldset\" formGroupName=\"tagFilters\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n Tags\n </legend>\n <div class=\"govuk-checkboxes--scroll\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"\n let item of allTags$ | async | filter : searchValue : 'key'\n \"\n >\n <input\n [formControlName]=\"item.key\"\n [id]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n [attr.aria-describedby]=\"item.key\"\n type=\"checkbox\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n [for]=\"item.key\"\n >\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n </div>\n</div>\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';\nimport { CommentService } from '../comment/comment.service';\nimport { IcpEventService } from '../../../toolbar/icp-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 @Input() public isHidden: boolean;\n @Output() public readonly showCommentSummaryDialog = new EventEmitter();\n\n marginToComment: boolean;\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 private commentService: CommentService,\n public toolbarEvents: ToolbarEventService,\n public readonly icpEventService: IcpEventService) {}\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 if (this.tabSelected) {\n this.marginToComment = true;\n this.commentService.createMarginToCommentEvent(this.marginToComment);\n } else {\n this.marginToComment = false;\n this.commentService.createMarginToCommentEvent(this.marginToComment);\n }\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","<div class=\"govuk-tabs commentSummaryHeader\" [ngClass]=\"{'icp-mode': icpEventService.enabled | async}\" data-module=\"govuk-tabs\">\n <ul class=\"govuk-tabs__list\">\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"govuk-tabs__list-item govuk-tabs__list-item\"\n [ngClass]=\"{'govuk-tabs__list-item--selected': tabSelected === tab.label}\">\n <a id=\"commentSubPane{{ i }}\" (click)=\"selectTab(tab.label)\" [routerLink]=\"[]\" [ngClass]=\"{'govuk-tabs__list-item--filtered': tab.isFiltered}\"\n class=\"govuk-tabs__tab\" [hidden]=\"isHidden\">\n {{ tab.label | titlecase }}\n </a>\n </li>\n <li>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button commentSummaryHeader-button--close\"\n title=\"Close Comments\" (click)=\"toggleCommentsPanel()\" [hidden]=\"isHidden\">\n </button>\n </li>\n </ul>\n <div class=\"govuk-tabs__panel\" [hidden]=\"!tabSelected\">\n <ng-container *ngIf=\"tabSelected === 'comments'\">\n <div style=\"width: 100%\">\n <div class=\"hmcts-banner\" *ngIf=\"navigationList?.length === 0\">\n <svg alt=\"\" class=\"hmcts-banner__icon\" fill=\"currentColor\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\nC13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">information</span>\n Select text to add a comment or highlight.\n </div>\n </div>\n <button type=\"button\" class=\"govuk-button\"\n id=\"commentSummary\" tabindex=\"0\"\n data-l10n-id=\"commentSummary\"\n title=\"Open collate summary\"\n (click)=\"toggleCommentsSummary()\">Collate comments</button>\n </div>\n <ng-container *ngIf=\"navigationList?.length > 0\">\n <mv-comments-navigate\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </ng-container>\n <p class=\"aui-comment__private-text\">\n <span class=\"aui-comment__private\">private</span>\n All comments can only be seen by you\n </p>\n </ng-container>\n <div [hidden]=\"tabSelected !== 'filter'\">\n <div class=\"govuk-tabs__panel--container\">\n <mv-comment-filter></mv-comment-filter>\n <mv-comments-navigate\n *ngIf=\"navigationList?.length > 0\"\n [annotationList]=\"navigationList\">\n </mv-comments-navigate>\n </div>\n </div>\n\n <div [hidden]=\"tabSelected !== 'search'\">\n <mv-comment-search [annotations]=\"navigationList\"></mv-comment-search>\n </div>\n </div>\n</div>\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 getScrollTop = createSelector(\n getBookmarkState,\n fromBookmarks.getScrollTop\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)\n - (pdfPosition.top * (pages[pdfPosition.pageNumber].viewportScale)))\n / parseFloat(pages[pdfPosition.pageNumber].scaleRotation.scale),\n previous: bookmarkNodes.length > 0 ? bookmarkNodes.sort((a, b) => a.index - b.index)[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, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Subscription } from 'rxjs';\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\nimport { HighlightCreateService } from '../highlight-create/highlight-create.service';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HtmlTemplatesHelper } from '../../../../shared/util/helpers/html-templates.helper';\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 wholePage: boolean;\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 this.toolbarEvents.redactWholePage.subscribe(() => {\n this.wholePage = true;\n })\n ];\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n initHighlight(event: MouseEvent) {\n if (this.wholePage) {\n this.highlightPage();\n return;\n }\n\n const rect = HtmlTemplatesHelper.getAdjustedBoundingRect((event.target as HTMLElement)),\n offsetX = event.clientX - rect.left,\n offsetY = event.clientY - rect.top;\n console.log(`initHighlight: rect=${JSON.stringify(rect)}, clientX=${event.clientX}, clientY=${event.clientY}, offsetX=${offsetX}, offsetY=${offsetY}`);\n\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 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(event: MouseEvent) {\n const rect = HtmlTemplatesHelper.getAdjustedBoundingRect(event.target as HTMLElement, false),\n offsetX = event.clientX - rect.left,\n offsetY = event.clientY - rect.top;\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 console.log(`createHighlight: rectangle=${JSON.stringify(rectangle)}`);\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 this.backgroundColor = 'none';\n this.position = 'initial';\n this.wholePage = false;\n }\n\n private highlightPage() {\n this.height = this.pageHeight;\n this.width = this.pageWidth;\n this.top = 0;\n this.left = 0;\n this.createHighlight();\n }\n}\n","<div [style.height]=\"defaultHeight\"\n [style.width]=\"defaultWidth\"\n (mousedown)=\"initHighlight($event)\"\n (mousemove)=\"updateHighlight($event)\"\n (mouseup)=\"createHighlight()\">\n <div #boxHighlight\n class=\"box-highlight\"\n [style.display]=\"display\"\n [style.position]=\"position\"\n [style.background-color]=\"backgroundColor\"\n [style.height]=\"height ? height + 'px' : '100%'\"\n [style.width]=\"width ? width + 'px' : '100%'\"\n [style.top]=\"top + 'px'\"\n [style.left]=\"left + 'px'\">\n </div>\n</div>\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() selectEvent = new EventEmitter<Rectangle>();\n @Output() updateEvent = 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.selectEvent.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.updateEvent.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 Math.round(this.left) !== viewRect.offsetLeft ||\n Math.round(this.top) !== viewRect.offsetTop ||\n Math.round(this.width) !== viewRect.offsetWidth ||\n Math.round(this.height) !== viewRect.offsetHeight;\n }\n}\n","<div *ngIf=\"editable; else nonEditable\">\n <div #rectElement\n class=\"rectangle\"\n draggable\n resizable\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected, 'grabNDrag': enableGrabNDrag }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height + 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n [rotate]=\"0\"\n [selected]=\"selected\"\n (click)=\"onClick()\"\n (stopped)=\"onUpdate(rectElement)\">\n </div>\n</div>\n<ng-template #nonEditable>\n <div #rectElement\n class=\"rectangle\"\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height+ 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n (click)=\"onClick()\">\n </div>\n</ng-template>\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 setTimeout(() => {\n // This hack to wait until the element is rendered seems to be unreliable,\n if (!location.hash) {\n document.getElementById('viewerContainer')?.scrollBy(0, 1);\n }\n }, 20);\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","<div class=\"toolbar\" *ngIf=\"rectangle\"\n [style.top.px]=\"top\"\n [style.left.px]=\"left\">\n <button *ngIf=\"canHighlight\"\n type=\"button\" title=\"Highlight\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton aui__toolbar-button-highlight\"\n (mousedown)=\"createHighlight()\">\n <span>Highlight</span>\n </button>\n <button *ngIf=\"canDelete\"\n type=\"button\" title=\"Delete\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton\"\n (mousedown)=\"deleteHighlight()\">\n <span>Remove</span>\n </button>\n <button *ngIf=\"canComment\"\n type=\"button\" title=\"Comment\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-comment\"\n (mousedown)=\"addOrEditComment()\">\n <span>Comment</span></button>\n <button *ngIf=\"canBookmark\"\n type=\"button\" title=\"Bookmark\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-bookmark\"\n id=\"bookmarkButton\"\n (mousedown)=\"createBookmark()\">\n <span>Bookmark</span></button>\n <div class=\"arrow-down\">\n <div class=\"inner-triangle\"></div>\n </div>\n</div>\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","<div #container [tabindex]=\"anno.id\">\n <mv-ctx-toolbar *ngIf=\"selected\"\n [canDelete]=\"true\" [canComment]=\"true\"\n [rectangles]=\"anno.rectangles\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (deleteHighlightEvent)=\"deleteHighlight()\"\n (addOrEditCommentEvent)=\"addOrEditComment()\">\n </mv-ctx-toolbar>\n <ng-container *ngFor=\"let rectangle of anno.rectangles\">\n <mv-anno-rectangle\n (selectEvent)=\"onSelect()\"\n (updateEvent)=\"onRectangleUpdate($event)\"\n [selected]=\"selected\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n [editable]=\"anno.rectangles.length <= 1\"\n [annoRect]=\"rectangle\"\n [color]=\"anno.color\">\n </mv-anno-rectangle>\n </ng-container>\n</div>\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","<ng-container *ngFor=\"let annotation of annotations\">\n <mv-annotation [annotation]=\"annotation\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedAnnotation$ | async\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (update)=\"onAnnotationUpdate($event)\"\n (delete)=\"onAnnotationDelete($event)\"\n (annotationClick)=\"selectAnnotation($event)\">\n </mv-annotation>\n</ng-container>\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 { v4 as 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.add(this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode));\n this.$subscriptions.add(this.viewerEvents.textHighlight.subscribe(highlight => this.showContextToolbar(highlight)));\n this.$subscriptions.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.toolbarEvents.toggleSideBarView(false);\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","<div class=\"pageContainer\">\n <div *ngFor=\"let page of pages; index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': page.styles.width,\n 'height.px': page.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"saveAnnotation($event)\">\n </mv-box-highlight-create>\n <mv-ctx-toolbar *ngIf=\"rectangles && highlightPage === (i + 1)\"\n [rectangles]=\"rectangles\"\n [canBookmark]=\"true\" [canHighlight]=\"true\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n (createBookmarkEvent)=\"createBookmark($event)\"\n (createHighlightEvent)=\"createHighlight()\">\n </mv-ctx-toolbar>\n <div class=\"pageContainer__page-item\">\n <mv-annotation-set *ngIf=\"(annoPages$ | async) as annoPages\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [page]=\"i\" [annotations]=\"annoPages[i + 1]\"></mv-annotation-set>\n </div>\n </div>\n</div>\n","import { Bookmark } from './../../../../store/models/bookmarks.interface';\nimport { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Subscription, from } from 'rxjs';\n\nimport { CreateBookmark, DeleteBookmark, MoveBookmark, UpdateBookmark, UpdateBookmarkScrollTop } from '../../../../store/actions/bookmark.actions';\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';\nimport { take } from 'rxjs/operators';\nimport { v4 as uuid } from 'uuid';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl, NestedTreeControl } from '@angular/cdk/tree';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'mv-bookmarks',\n templateUrl: './bookmarks.component.html'\n})\n\nexport class BookmarksComponent implements OnInit, OnDestroy, OnChanges {\n\n @Input()\n set bookmarkNodes(value: Bookmark[]) {\n this.rebuildTreeForData(value);\n if (this._bookmarkNodes && this.sortMode !== this.customSort) {\n this.sortBookmarks();\n }\n };\n\n get bookmarkNodes() {\n return this._bookmarkNodes;\n };\n\n @Input() zoom: number;\n @Input() rotate: number;\n @Input() parentScrollTop: number;\n @Output() goToDestination = new EventEmitter<any[]>();\n @Output() treeHasChanged = new EventEmitter<boolean>()\n\n private _bookmarkNodes: Bookmark[] = [];\n datasource: ArrayDataSource<Bookmark>;\n treeControl: FlatTreeControl<Bookmark>;\n hoveredNode: Bookmark;\n hoverHtmlElement: HTMLElement;\n // expansion model tracks expansion state\n expansionModel = new SelectionModel<Bookmark>(true);\n isDraggingOn = false;\n isUserdragging = false;\n expandTimeout: any;\n expandDelay = 1000;\n dragNodeInsertToParent: boolean;\n\n pageLookup: { [pageId: number]: DocumentPages } = {};\n editableBookmark: string;\n BOOKMARK_CHAR_LIMIT = 30;\n\n dragNode: any;\n dragNodeExpandOverWaitTimeMs = 300;\n dragNodeExpandOverNode: any;\n dragNodeExpandOverTime: number;\n dragNodeExpandOverArea: number;\n\n\n options = {\n allowDrag: true,\n allowDrop: true\n };\n\n $subscription: Subscription;\n\n private sortMode: string;\n\n private readonly _customSort = 'CUSTOM';\n private readonly _positionSort = 'POSITION';\n\n constructor(private store: Store<fromBookmarks.BookmarksState | AnnotationSetState>) { }\n\n ngOnInit(): void {\n this.sortMode = this.customSort;\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 ngOnChanges(changes: SimpleChanges): void {\n if (changes?.bookmarkNodes) {\n setTimeout(() => {\n this.store.dispatch(new UpdateBookmarkScrollTop(this.parentScrollTop));\n }, 200);\n }\n }\n\n ngOnDestroy(): void {\n this.$subscription.unsubscribe();\n }\n\n editBookmark(id) {\n this.editableBookmark = id;\n }\n\n onAddBookmarkClick() {\n this.store.pipe(select(bookmarksSelectors.getBookmarkInfo), take(1))\n .subscribe((bookmarkInfo) => {\n this.store.dispatch(new CreateBookmark({\n ...bookmarkInfo, name: '', id: uuid()\n } as any));\n });\n }\n\n deleteBookmark2(node: Bookmark) {\n this.customSortBookmarks();\n let next: Bookmark;\n\n const changedData = JSON.parse(JSON.stringify(this.bookmarkNodes));\n const siblings = this.findNodeSiblings(changedData, node.id);\n if (siblings && siblings.length > node.index + 1) {\n next = siblings[node.index + 1];\n next.previous = node.previous;\n }\n const toDelete = [node.id, ...getBookmarkChildren(node.children)];\n this.store.dispatch(new DeleteBookmark({\n deleted: toDelete, updated: next\n }));\n }\n\n updateBookmark(bookmark: Bookmark, name) {\n const editedBookmark = {\n ...bookmark,\n name\n };\n if (name) {\n this.store.dispatch(new UpdateBookmark(editedBookmark));\n this.editableBookmark = undefined;\n }\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 get customSort() {\n return this._customSort;\n }\n\n get positionSort() {\n return this._positionSort;\n }\n\n sort(mode: string) {\n this.sortMode = mode;\n this.sortBookmarks();\n }\n\n private sortBookmarks() {\n switch (this.sortMode) {\n case this.customSort: {\n this.customSortBookmarks();\n break;\n }\n case this.positionSort: {\n this.positionSortBookmarks();\n break;\n }\n default: {\n this.customSortBookmarks();\n break;\n }\n }\n }\n\n private positionSortBookmarks() {\n this.bookmarkNodes.sort((a, b) => a.pageNumber === b.pageNumber ? a.yCoordinate - b.yCoordinate : a.pageNumber - b.pageNumber);\n this.isDraggingOn = false;\n this.rebuildTreeForData(this.bookmarkNodes);\n }\n\n private customSortBookmarks() {\n if (this.bookmarkNodes.length > 1) {\n this.bookmarkNodes.sort((a, b) => a.index - b.index);\n }\n this.isDraggingOn = true;\n this.rebuildTreeForData(this.bookmarkNodes);\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 hasChild = (_: number, node: Bookmark) => {\n return node.children && node.children.length > 0;\n }\n\n getNode(bookmarks, parentId) {\n if (typeof bookmarks !== 'undefined') {\n for (let i = 0; i < bookmarks.length; i++) {\n if (bookmarks[i].id === parentId) {\n return [bookmarks[i]];\n }\n const a = this.getNode(bookmarks[i].children, parentId);\n if (a !== null) {\n return a;\n }\n }\n }\n return null;\n }\n\n drop(event: CdkDragDrop<Bookmark>) {\n\n if (!event.isPointerOverContainer || (event.previousIndex === event.currentIndex)) return;\n\n const hasMovedUpTheTree = event.previousIndex > event.currentIndex;\n const bookmarkNodesString = JSON.stringify(this._bookmarkNodes);\n const changedData = JSON.parse(bookmarkNodesString);\n const visibleNodes = this.visibleNodes(this._bookmarkNodes);\n const toNode = visibleNodes[event.currentIndex] as Bookmark;\n const toNodeSiblings = this.findNodeSiblings(changedData, toNode.id);\n\n const toNodeParent = toNodeSiblings[0].parent;\n const toIndex = toNodeSiblings.findIndex(s => s.id === toNode.id);\n\n const fromNode = event.item.data as Bookmark;\n const fromNodeSiblings = this.findNodeSiblings(changedData, fromNode.id);\n const fromIndex = fromNodeSiblings.findIndex(n => n.id === fromNode.id);\n\n if (this.isToNodeChildOfFromNode(fromNode?.children, toNode)) return;\n\n if (this.dragNodeInsertToParent) {\n\n const indexOfParent = toNodeSiblings.findIndex(element => element.id === toNode.id);\n const parentNode = toNodeSiblings[indexOfParent];\n const firstChild = parentNode?.children && parentNode?.children.length > 0 ? parentNode.children[0] : null;\n let movedBookmarksWithParent = [{ ...fromNode, parent: parentNode.id, previous: null }];\n\n if (firstChild) {\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...firstChild, previous: fromNode.id }];\n }\n\n let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);\n const nextFromindexforParent = fromIndex + 1;\n fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindexforParent + 1) : fromNodeSibling;\n\n if (fromNodeSibling && fromNodeSibling.id !== parentNode.id) {\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...fromNodeSibling, previous: fromNode.previous }];\n }\n\n let previousSiblingForParentIndex = toIndex - 1;\n let parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);\n\n if (parentNodeSibling && parentNodeSibling.id == fromNode.id) {\n previousSiblingForParentIndex = previousSiblingForParentIndex - 1;\n if (previousSiblingForParentIndex >= 0) {\n parentNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, previousSiblingForParentIndex);\n }\n else {\n parentNodeSibling = null;\n }\n }\n\n movedBookmarksWithParent = [...movedBookmarksWithParent, { ...parentNode, previous: parentNodeSibling?.id }];\n\n const hasParentDups = (movedBookmarksWithParent as Bookmark[]).map(x => x.id).some(function (value, index, array) { // .some will break as soon as duplicate found (no need to itterate over all array)\n return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value\n })\n if (hasParentDups || movedBookmarksWithParent && movedBookmarksWithParent.length <= 1) return;\n\n this.store.dispatch(new MoveBookmark(movedBookmarksWithParent));\n return;\n }\n\n if (!toNodeSiblings) return;\n\n const fromNodePrevious = hasMovedUpTheTree ? toNode.previous : toNode.id;\n let movedBookmarks = [{\n ...fromNode,\n previous: toNode.index > 0 ? fromNodePrevious : undefined,\n parent: toNodeParent\n }];\n\n let fromNodeSibling = this.getSiblingFromAllSibliings(fromNodeSiblings, fromIndex + 1);\n const nextFromindex = fromIndex + 1;\n fromNodeSibling = fromNodeSibling && fromNodeSibling.id === fromNode.previous ? this.getSiblingFromAllSibliings(fromNodeSiblings, nextFromindex + 1) : fromNodeSibling;\n\n if (fromNodeSibling) {\n movedBookmarks = [...movedBookmarks, { ...fromNodeSibling, previous: fromNode.previous }];\n }\n\n\n let toNodeSiblingIndex = hasMovedUpTheTree ? toIndex : toIndex + 1;\n let toNodeSibling = this.getSiblingFromAllSibliings(toNodeSiblings, toNodeSiblingIndex);\n\n if (toNodeSibling) {\n movedBookmarks = [...movedBookmarks, { ...toNodeSibling, previous: fromNode.id }];\n }\n\n const hasDups = (movedBookmarks as Bookmark[]).map(x => x.id).some(function (value, index, array) {\n return array.indexOf(value) !== array.lastIndexOf(value); // comparing first and last indexes of the same value\n })\n if (hasDups || movedBookmarks && movedBookmarks.length <= 1) return;\n\n this.store.dispatch(new MoveBookmark(movedBookmarks));\n }\n\n private getSiblingFromAllSibliings(sibling: Bookmark[], index) {\n return sibling.length > index ? sibling[index] : undefined;\n }\n\n dragStart() {\n this.dragNodeInsertToParent = false;\n this.hoveredNode = null;\n this.isUserdragging = true;\n }\n\n dragEnd() {\n this.isUserdragging = false;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n }\n\n dragHover(event: any, node: Bookmark) {\n if (this.isUserdragging) {\n const newEvent: any = event;\n const percentageX = newEvent.offsetX / newEvent.target.clientWidth;\n if (percentageX > .55) {\n this.hoveredNode = node;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.hoverHtmlElement = event.currentTarget;\n this.hoverHtmlElement.style.borderRight = '5px solid #007bff';\n this.dragNodeInsertToParent = true;\n } else {\n this.hoveredNode = null;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.dragNodeInsertToParent = false;\n }\n }\n }\n\n dragHoverEnd(event: any, node: Bookmark) {\n if (this.isUserdragging) {\n if (!node || this.hoveredNode?.id !== node.id) {\n this.dragNodeInsertToParent = false;\n if (this.hoverHtmlElement?.style) {\n this.hoverHtmlElement.style.borderRight = '';\n }\n this.hoveredNode = null;\n }\n }\n }\n\n onNodeExpand(node: Bookmark) {\n const isExpanded = this.treeControl.isExpanded(node);\n return isExpanded ? \"toggle-children-wrapper-expanded\" : \"toggle-children-wrapper-collapsed\";\n }\n\n visibleNodes(bookmarks: Bookmark[]): Bookmark[] {\n const result = [];\n\n function addExpandedChildren(node: Bookmark, expanded: Bookmark[]) {\n result.push(node);\n if (expanded.some(bookmark => bookmark && bookmark.id === node.id) && node.children) {\n node.children.map((child) => addExpandedChildren(child, expanded));\n }\n }\n bookmarks.forEach((node) => {\n addExpandedChildren(node, this.treeControl.expansionModel.selected);\n });\n return result;\n }\n\n findNodeSiblings(arr: Array<any>, id: string): Array<any> {\n let result, subResult;\n arr.forEach((item, i) => {\n if (item.id === id) {\n result = arr;\n } else if (item?.children) {\n subResult = this.findNodeSiblings(item.children, id);\n if (subResult) result = subResult;\n }\n });\n return result;\n }\n\n rebuildTreeForData(data: any) {\n this._bookmarkNodes = data ?? [];\n this.datasource = new ArrayDataSource(this._bookmarkNodes);\n this.treeControl = new NestedTreeControl<Bookmark>(node => node.children);\n this.treeControl.dataNodes = this._bookmarkNodes;\n this.expansionModel.selected.forEach((bookmark) => {\n const node = this.treeControl.dataNodes.find((n) => n.id === bookmark.id);\n this.treeControl.expand(node);\n });\n this.treeHasChanged.emit(true);\n }\n\n isToNodeChildOfFromNode(fromNodeChildren: Bookmark[], toNode: Bookmark) {\n\n if (!fromNodeChildren) {\n return false;\n }\n\n const result = this.getNode(fromNodeChildren, toNode.id);\n return result ? true : false;\n }\n}\n","<a *ngIf=\"bookmarkNodes?.length === 0\" class=\"highlightedOutlineItem\"\n >No bookmarks created yet</a\n>\n<cdk-tree\n cdkDropList\n [cdkDropListDisabled]=\"!isDraggingOn\"\n class=\"bookmarks-tree\"\n *ngIf=\"datasource\"\n [dataSource]=\"datasource\"\n [treeControl]=\"treeControl\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <!-- This is the tree node template for leaf nodes -->\n <cdk-nested-tree-node class=\"node-wrapper\" *cdkTreeNodeDef=\"let node\">\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark\">\n <div\n class=\"node-content-wrapper nested-tree-node nest-tree-node-padding\"\n cdkDrag\n cdkDragBoundary=\".bookmarks-tree\"\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n class=\"node-wrapper\"\n *cdkTreeNodeDef=\"let node; when: hasChild\"\n >\n <div *ngIf=\"node.id !== editableBookmark; else inputBookmark2\">\n <div\n class=\"node-content-wrapper nested-tree-node\"\n cdkDrag\n [cdkDragData]=\"node\"\n (mouseenter)=\"dragHover($event, node)\"\n (mouseleave)=\"dragHoverEnd($event, node)\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragEnd()\"\n >\n <div class=\"outlineItem\">\n <span\n cdkTreeNodeToggle\n class=\"toggle-children-wrapper\"\n [ngClass]=\"onNodeExpand(node)\"\n ><span class=\"toggle-children\"></span\n ></span>\n <a (click)=\"goToBookmark(node)\">\n {{ node.name }}\n </a>\n </div>\n <button\n class=\"bookmark__rename\"\n (click)=\"editBookmark(node.id)\"\n ></button>\n <button\n class=\"bookmark__delete\"\n (click)=\"deleteBookmark2(node)\"\n ></button>\n </div>\n <!-- <div class=\"node-drop-slot\"></div> -->\n </div>\n <ng-template #inputBookmark2>\n <input\n #bookmarkName\n class=\"bookmark__input\"\n [value]=\"node.name\"\n [maxLength]=\"BOOKMARK_CHAR_LIMIT\"\n />\n <button\n class=\"bookmark__save\"\n (click)=\"updateBookmark(node, bookmarkName.value)\"\n ></button>\n </ng-template>\n <div class=\"nested-tree-node-children\" *ngIf=\"treeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n</cdk-tree>\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 @Input() currentPageNumber: number;\n @Input() isCurrentSection: boolean;\n @Input() endPage: number;\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 isViewedItem(current: Outline, next: Outline): boolean {\n if (current.pageNumber === this.currentPageNumber) {\n return true;\n }\n return next === undefined ? current.pageNumber <= this.currentPageNumber && this.endPage > this.currentPageNumber :\n current.pageNumber <= this.currentPageNumber && (next.pageNumber > this.currentPageNumber);\n }\n\n findEndPage(next: Outline): number {\n return next === undefined ? this.endPage : next.pageNumber;\n }\n\n showHighlightOutlineCss() {\n return this.isCurrentSection ? 'highlightedOutlineItem' : 'outlineItem';\n }\n}\n","<div class=\"outlineItem\">\n <div *ngIf=\"outline.items.length > 0\"\n [ngClass]=\"{ 'outlineItemToggler': true, 'outlineItemsHidden': !showOutlineItems }\"\n (click)=\"toggleOutline()\"\n (keyup.enter)=\"toggleOutline()\" tabindex=\"0\"></div>\n <a (click)=\"goToDestination(outline?.dest)\"\n (keyup.enter)=\"goToDestination(outline?.dest)\"\n [style.font-weight]=\"outline.bold ? 'bold' : ''\"\n [style.font-style]=\"outline.italic ? 'italic' : ''\"\n [ngClass]=\"showHighlightOutlineCss()\"\n tabindex=\"0\">\n <div style=\"text-align:left;\" [ngClass]=\"showHighlightOutlineCss()\">\n {{ outline.title }}\n <span style=\"float:right;\">\n {{ outline.pageNumber }}\n </span>\n </div>\n </a>\n \n <div *ngIf=\"outline.items.length > 0\" class=\"outlineItems\">\n <div *ngFor=\"let outlineItem of outline.items; index as i\">\n <mv-outline-item\n [outline]=\"outlineItem\" \n [currentPageNumber]= \"currentPageNumber\" \n [isCurrentSection]= \"isViewedItem(outlineItem, outline.items[i+1])\"\n [endPage]=\"findEndPage(outline.items[i+1])\"\n (navigationEvent)=\"goToDestination($event)\">\n </mv-outline-item>\n </div>\n </div>\n</div>\n\n","import { AfterViewInit, Component, ElementRef, HostListener, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } 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 { v4 as uuid } from 'uuid';\nimport { ViewerEventService } from '../../viewer-event.service';\nimport { BookmarksState } from '../../../store/reducers/bookmarks.reducer';\nimport { ToolbarEventService } from '../../../toolbar/toolbar-event.service';\nimport { BookmarksComponent } from './bookmarks/bookmarks.component';\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 @Input() currentPageNumber: number;\n\n @ViewChild(BookmarksComponent)\n bookmarks: BookmarksComponent;\n treeChanged: boolean = false;\n selectedView = 'outline';\n bookmarkNodes$: Observable<BookmarkNode[]>;\n scrollTop: any;\n sidebarOpen: any;\n\n private subscriptions: Subscription[] = [];\n @ViewChild('sidebar') sidebarDiv;\n\n constructor(private viewerEvents: ViewerEventService,\n private store: Store<BookmarksState>,\n private readonly toolbarEvents: ToolbarEventService,\n ) { }\n\n ngOnInit(): void {\n this.bookmarkNodes$ = this.store.pipe(select(bookmarksSelectors.getBookmarkNodes));\n this.subscriptions.push(this.store.pipe(select(bookmarksSelectors.getEditableBookmark))\n .subscribe(editable => this.selectedView = editable ? 'bookmarks' : this.selectedView));\n this.subscriptions.push(\n this.toolbarEvents.sidebarOutlineView.subscribe(toggle => {\n this.selectedView = toggle ? 'outline' : 'bookmarks';\n }),\n this.toolbarEvents.sidebarOpen.subscribe(toggle => {\n this.sidebarOpen = toggle;\n })\n );\n this.subscriptions.push(this.store.pipe(select(bookmarksSelectors.getScrollTop)).subscribe(scrollTopValue => {\n if (this.sidebarDiv?.nativeElement) {\n this.sidebarDiv.nativeElement.scrollTop = scrollTopValue\n }\n }));\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 if (this.subscriptions.length > 0) {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n }\n\n public onScroll(event: any): void {\n if (!this.treeChanged) {\n this.scrollTop = event.srcElement.scrollTop;\n }\n this.treeChanged = false;\n }\n\n goToDestination(destination: any[]) {\n this.viewerEvents.goToDestination(destination);\n }\n\n hasTreeChanged(value: boolean) {\n this.treeChanged = value;\n }\n\n toggleSidebarView(sidebarView: string) {\n this.selectedView = sidebarView;\n }\n\n isViewedItem(current: Outline, next: Outline): boolean {\n if (current.pageNumber === this.currentPageNumber) {\n return true;\n }\n return next === undefined ? current.pageNumber <= this.currentPageNumber :\n current.pageNumber <= this.currentPageNumber && (next.pageNumber > this.currentPageNumber);\n }\n\n findEndPage(next: Outline): number {\n return next === undefined ? Number.MAX_SAFE_INTEGER : next.pageNumber;\n }\n}\n","<div id=\"toolbarSidebar\">\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n class=\"splitToolbarButton toggled\"\n >\n <button\n id=\"sortBookmarkPosition\"\n class=\"splitToolbarButton left bookmark__sort__position\"\n (click)=\"bookmarks.sort(bookmarks.positionSort)\"\n title=\"Order by place in document\"\n aria-pressed=\"true\"\n ></button>\n <button\n id=\"sortBookmarkCustom\"\n class=\"splitToolbarButton left bookmark__sort__custom\"\n (click)=\"bookmarks.sort(bookmarks.customSort)\"\n title=\"Order manually\"\n aria-pressed=\"true\"\n ></button>\n </div>\n <div class=\"splitToolbarButtonSeparator\"></div>\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n class=\"splitToolbarButton right\"\n >\n <button\n id=\"addBookmark\"\n class=\"toolbarButton addBookmark\"\n (click)=\"bookmarks.onAddBookmarkClick()\"\n title=\"Add bookmark\"\n tabindex=\"3\"\n data-l10n-id=\"addBookmark\"\n >\n <span data-l10n-id=\"addBookmark_label\">{{\n \"Add bookmark\" | rpxTranslate\n }}</span>\n </button>\n </div>\n</div>\n<div #sidebar id=\"sidebarContent\" cdkScrollable (scroll)=\"onScroll($event)\" [hidden]=\"!sidebarOpen\">\n <div id=\"outlineView\" class=\"outlineWithDeepNesting\">\n <div class=\"outlineItem\" *ngIf=\"selectedView === 'outline'\">\n <mv-outline-item\n *ngFor=\"let outlineItem of outline; index as i\"\n [outline]=\"outlineItem\"\n [currentPageNumber]=\"currentPageNumber\"\n [isCurrentSection]=\"isViewedItem(outlineItem, outline[i + 1])\"\n [endPage]=\"findEndPage(outline[i + 1])\"\n (navigationEvent)=\"goToDestination($event)\"\n ></mv-outline-item>\n </div>\n <div\n *ngIf=\"annotationsEnabled && selectedView === 'bookmarks'\"\n id=\"bookmarkContainer\"\n >\n <mv-bookmarks\n [bookmarkNodes]=\"bookmarkNodes$ | async\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [parentScrollTop]=\"scrollTop\"\n (goToDestination)=\"goToDestination($event)\"\n (treeHasChanged)=\"hasTreeChanged($event)\"\n ></mv-bookmarks>\n </div>\n </div>\n</div>\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 { Directive, ElementRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\n\nimport { Rectangle } from '../../annotation-view/rectangle/rectangle.model';\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';\nimport { ToolbarEventService } from '../../../../toolbar/toolbar-event.service';\nimport { HtmlTemplatesHelper } from '../../../../shared/util/helpers/html-templates.helper';\n\n@Directive({\n selector: '[mvCreateTextHighlight]'\n})\nexport class HighlightCreateDirective implements OnInit, OnDestroy {\n pageHeight: number;\n pageWidth: number;\n zoom: number;\n rotate: number;\n allPages: object;\n\n $subscription: Subscription;\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private toolbarEvents: ToolbarEventService,\n private viewerEvents: ViewerEventService,\n private highlightService: HighlightCreateService,\n private store: Store<fromStore.AnnotationSetState>\n ) { }\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 let page: number;\n let currentElement = mouseEvent.target as HTMLElement;\n while (currentElement.offsetParent) {\n currentElement = currentElement.offsetParent as HTMLElement;\n if (currentElement.getAttribute) {\n page = parseInt(currentElement.getAttribute('data-page-number'), 10);\n if (page) {\n break;\n }\n }\n }\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(\n new fromAnnotationActions.SelectedAnnotation({\n annotationId: '',\n selected: false,\n editable: false,\n })\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\n const parentRect = HtmlTemplatesHelper\n .getAdjustedBoundingRect(localElement.closest(\".textLayer\"));\n const selectionRectangles: Rectangle[] = [];\n for (let i = 0; i < clientRects.length; i++) {\n const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);\n const findSelecttionRectangle = selectionRectangles.find(\n (rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x\n );\n if (!findSelecttionRectangle) {\n selectionRectangles.push(selectionRectangle);\n }\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 let rectangle = this.highlightService.applyRotation(\n this.pageHeight,\n this.pageWidth,\n height,\n width,\n top,\n left,\n this.rotate,\n this.zoom\n );\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 {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, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { select, Store } from '@ngrx/store';\nimport { v4 as 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 { ViewerEventService } from '../../viewers/viewer-event.service';\nimport { Redaction } from '../services/redaction.model';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\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 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 this.store.dispatch(new fromRedactionActions.ResetRedactedDocument());\n }\n}\n","<div class=\"pageContainer\">\n <div *ngFor=\"let redaction of (redactionsPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': redaction.styles.width,\n 'height.px': redaction.styles.height\n }\"\n [attr.redaction-page-num]=\"i+1\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"markBoxRedaction($event)\">\n </mv-box-highlight-create>\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let anno of redaction.anno\">\n <!-- TODO rename this to selection -->\n <mv-annotation [annotation]=\"anno\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedRedaction$ | async\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n (update)=\"onMarkerUpdate($event)\"\n (delete)=\"onMarkerDelete($event)\"\n (annotationClick)=\"selectRedaction($event)\">\n </mv-annotation>\n </ng-container>\n </div>\n </div>\n</div>\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","<div class=\"pageContainer\">\n <div *ngFor=\"let bookmarks of (bookmarksPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': bookmarks.styles.width,\n 'height.px': bookmarks.styles.height\n }\">\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let bMrk of bookmarks.bookmark\">\n <div class=\"bookmark__here\"\n [style.width]=\"16 * zoom + 'px'\"\n [style.height]=\"24 * zoom + 'px'\"\n [style.top]=\"bMrk.yCoordinate * zoom + 'px'\"\n [title]=\"bMrk.name\">\n </div>\n </ng-container>\n </div>\n </div>\n</div>\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';\nimport { IcpEventService } from '../../toolbar/icp-event.service';\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 private readonly icpEventService: IcpEventService) {}\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.icpEventService.participantsListVisible.subscribe(isVisible => this.showParticipantsList = isVisible);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","<div class=\"comments-panel comment-container icp-mode\" [ngClass]=\"{'expanded': showParticipantsList }\">\n\n <div class=\"participant__card no-shadow\">\n <p class=\"participant__name\">All Participants</p>\n </div>\n\n <div *ngIf=\"(presenter$ | async)?.username !== ''\" class=\"participant__card\">\n <div class=\"participant__header\"> Presenting </div>\n <p class=\"participant__name\">{{(presenter$ | async)?.username}}</p>\n </div>\n\n <div *ngIf=\"(participants$ | async).length > 1\" class=\"participant__card\">\n <div class=\"participant__header\">Following</div>\n <ng-container *ngFor=\"let participant of (participants$ | async)\">\n <p *ngIf=\"participant.id !== (presenter$ | async)?.id\" class=\"participant__name\">{{participant.username}}</p>\n </ng-container>\n </div>\n</div>\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 { debounceTime, 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';\nimport { IcpService } from '../../icp/icp.service';\nimport { IcpEventService } from '../../toolbar/icp-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 @Input() enableRedactSearch: 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 private icpService: IcpService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private readonly icpEventService: IcpEventService\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(this.viewerEvents.navigationEventICP.subscribe(destination => this.goToDestinationICP(destination)));\n this.$subscription.add(\n this.icpEventService.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 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 const currentRotation = this.rotation;\n this.rotateDocument(360 - this.rotation);\n this.pdfWrapper.navigateTo(destination);\n setTimeout(() => {\n this.rotateDocument(currentRotation);\n }, 10);\n }\n\n private goToDestinationICP(destination: any[]) {\n this.pdfWrapper.nativeNavigate(destination);\n }\n\n getCurrentPageNumber(): number {\n return this.pdfWrapper.getPageNumber();\n }\n}\n","<mv-side-bar\n *ngIf=\"toolbarEvents.sidebarOpen\"\n id=\"sidebarContainer\"\n [url]=\"url\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [outline]=\"documentOutline\"\n [annotationsEnabled]=\"enableAnnotations\"\n [currentPageNumber]=\"getCurrentPageNumber()\"\n>\n</mv-side-bar>\n<mv-comment-set-header\n *ngIf=\"enableAnnotations\"\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<mv-participants-list></mv-participants-list>\n<div\n class=\"pdfContainer\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ pdfContainer: true, hidden: errorMessage }\"\n>\n <mv-redaction-search-bar></mv-redaction-search-bar>\n <div\n #viewerContainer\n mvGrabNDrag\n [dragX]=\"viewerContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n id=\"viewerContainer\"\n class=\"viewer-container\"\n [class.annotations]=\"enableAnnotations\"\n [class.show-comments-panel]=\"\n (showCommentsPanel || showIcpParticipantsList) &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [class.grabNDrag]=\"enableGrabNDrag\"\n >\n <div\n #pdfViewer\n class=\"pdfViewer\"\n mvCreateTextHighlight\n [ngClass]=\"{\n hidden: false,\n highlightMode: highlightMode | async,\n drawMode: drawMode | async\n }\"\n ></div>\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n <mv-bookmark-icons [zoom]=\"zoom\" [rotate]=\"rotation\"> </mv-bookmark-icons>\n </ng-template>\n </div>\n <mv-comment-set\n [contentScrollTop]=\"viewerContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"pdfViewer.offsetHeight\"\n [pageHeights]=\"pageHeights\"\n >\n </mv-comment-set>\n <div class=\"loadingMessage\" *ngIf=\"loadingDocument\">\n <h3 class=\"govuk-heading-m\">\n {{ \"Loading...\" | rpxTranslate}}{{\n loadingDocumentProgress ? loadingDocumentProgress + \"%\" : \"\"\n }}\n </h3>\n </div>\n</div>\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 HostListener,\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';\nimport * as fromAnnotationActions from '../../store/actions/annotation.actions';\nimport { ViewerEventService } from '../viewer-event.service';\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 private viewerEvents: ViewerEventService\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 @HostListener('mousedown', ['$event'])\n onImageViewerClick(event: MouseEvent) {\n const classNme = (event.target as Element).className;\n if (classNme.startsWith('pageContainer')) {\n this.store.dispatch(\n new fromAnnotationActions.SelectedAnnotation({\n annotationId: '',\n selected: false,\n editable: false,\n })\n );\n this.viewerEvents.clearCtxToolbar();\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","<mv-comment-set-header\n [ngClass]=\"{ 'show-comments-panel': showCommentsPanel }\"\n [isHidden]=\"!showCommentsPanel\"\n [showCommentSummary]=\"toolbarButtons.showCommentSummary\"\n (showCommentSummaryDialog)=\"toggleCommentsSummary()\"\n>\n</mv-comment-set-header>\n<div\n id=\"viewer-wrapper\"\n [ngStyle]=\"{ height: height }\"\n [ngClass]=\"{ grabNDrag: enableGrabNDrag }\"\n *ngIf=\"url && !errorMessage\"\n>\n <div\n #imageContainer\n id=\"image-container\"\n mvGrabNDrag\n [dragX]=\"imageContainer\"\n [dragEnabled]=\"enableGrabNDrag\"\n (scroll)=\"($event)\"\n [ngClass]=\"{\n 'image-container': true,\n annotations: enableAnnotations,\n 'show-comments-panel': showCommentsPanel\n }\"\n >\n <img\n #img\n alt=\"\"\n [src]=\"url\"\n [ngClass]=\"'rot' + rotation\"\n (error)=\"onLoadError(url)\"\n (load)=\"onLoad(img)\"\n />\n <mv-redactions\n *ngIf=\"toolbarEvents.redactionMode | async; else annotationTemplate\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n ></mv-redactions>\n <ng-template #annotationTemplate>\n <mv-metadata-layer\n *ngIf=\"enableAnnotations && annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n >\n </mv-metadata-layer>\n </ng-template>\n </div>\n\n <mv-comment-set\n [contentScrollTop]=\"imageContainer.scrollTop\"\n *ngIf=\"\n enableAnnotations &&\n annotationSet &&\n (toolbarEvents.redactionMode | async) !== true\n \"\n [annotationSet]=\"annotationSet\"\n [zoom]=\"zoom\"\n [rotate]=\"rotation\"\n [height]=\"imageHeight\"\n >\n </mv-comment-set>\n</div>\n","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","<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"typeException, else unsupported\">The document could not be displayed, or the file type is unsupported.</span>\n Please <a #downloadLink [href]=\"url\" [download]=\"downloadFileName\">click here to download</a>.\n </p>\n <ng-template #unsupported>\n <span>This file type is not supported by this viewer.</span>\n </ng-template>\n </div>\n</div>\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';\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 { Component, ElementRef, HostListener, OnInit, ViewChild, OnDestroy, AfterViewInit } 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, AfterViewInit {\n\n @ViewChild('findInput', { static: true }) findInput: ElementRef<HTMLInputElement>;\n @ViewChild('findNext', { static: false }) findNext: ElementRef<HTMLAnchorElement>;\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 ngAfterViewInit(): void {\n this.findInput.nativeElement.focus();\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 if (this.resultCount && this.resultCount > 0 && !results.isPrevious) {\n setTimeout(() => {\n this.findNext.nativeElement.focus();\n }, 1000);\n }\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","<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Search document\"\n #findInput\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Search document\"\n placeholder=\"Search document for…\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n","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';\nimport { IcpEventService } from '../icp-event.service';\nimport { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';\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 public redactAllInProgress: boolean;\n\n public pageNumber = 1;\n public pageCount = 0;\n public isDropdownMenuOpen = false;\n public isBookmarksOpen = false;\n public isIndexOpen = false;\n public isRedactOpen = false;\n public isCommentsOpen = 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 private readonly icpEventService: IcpEventService\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.icpEventService.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 this.toolbarEvents.redactAllInProgressSubject.subscribe(disable => {\n this.redactAllInProgress = disable;\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: HTMLElement) => {\n this.allButtonsWidth += HtmlTemplatesHelper.getAdjustedBoundingRect(button).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 @HostListener('document:keydown.control.p', ['$event'])\n @HostListener('document:keydown.meta.p', ['$event'])\n public onControlPrint(event: KeyboardEvent) {\n event.preventDefault();\n this.printFile();\n }\n\n public onClickHighlightToggle() {\n this.toolbarEvents.toggleHighlightToolbar();\n }\n public onClickDrawToggle() {\n this.toolbarEvents.toggleDrawMode();\n }\n\n public toggleIndexSideBar() {\n const sidebarOpen = this.toolbarEvents.sidebarOpen.getValue();\n const sidebarView = this.toolbarEvents.sidebarOutlineView.getValue();\n if (!(sidebarOpen && !sidebarView)) {\n this.toolbarEvents.toggleSideBar(!sidebarOpen);\n }\n this.toolbarEvents.toggleSideBarView(true);\n this.isIndexOpen = !this.isIndexOpen;\n }\n\n public onToolBarOffSetChange(buttonId: string) {\n if (this.mvToolbarMain && this.mvToolbarMain.nativeElement.offsetWidth < this.widthRequiredForBtn[buttonId]) {\n return \"button-hidden-on-toolbar\";\n\n }\n return \"button-hidden-on-dropdown\";\n }\n\n public toggleBookmarksSideBar() {\n const sidebarOpen = this.toolbarEvents.sidebarOpen.getValue();\n const sidebarView = this.toolbarEvents.sidebarOutlineView.getValue();\n if (!(sidebarOpen && sidebarView)) {\n this.toolbarEvents.toggleSideBar(!sidebarOpen);\n }\n this.toolbarEvents.toggleSideBarView(false);\n this.isBookmarksOpen = !this.isBookmarksOpen;\n }\n\n public togglePresentBar() {\n this.toolbarEvents.searchBarHidden.next(true);\n this.icpEventService.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 this.isCommentsOpen = !this.isCommentsOpen;\n }\n\n public toggleRedactBar() {\n this.toolbarEvents.toggleRedactionMode();\n this.isRedactOpen = !this.isRedactOpen;\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","<div class=\"toolbar\">\n <div id=\"toolbarContainer\">\n <div class=\"mv-toolbar__container\">\n <div #mvToolbar class=\"mv-toolbar\" [class.notSupported]=\"!contentType\">\n <!-- The mvToolbarMain div contains all toolbar buttons except the \"More options\" button. This allows for calculation of the available space to display buttons -->\n <div id=\"mvToolbarMain\" class=\"mv-toolbar-main\" #mvToolbarMain>\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n <!-- The mvToolbarMoreOptions div contains the \"More options\" toolbar button (and the overlay template for the dropdown menu).\n The space occupied by the button (if visible) is excluded from the toolbar space available calculation -->\n <div id=\"mvToolbarMoreOptions\" class=\"mv-toolbar-more-options\">\n <button\n id=\"mvMoreOptionsBtn\"\n class=\"mv-button mv-toolbar__menu-button--more-options\"\n [class.mv-toolbar__menu-button--more-options__hidden]=\"\n mvToolbar.offsetWidth >= allButtonsWidth\n \"\n [attr.aria-expanded]=\"isDropdownMenuOpen\"\n (click)=\"toggleMoreOptions()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"redactAllInProgress\"\n >\n <span>{{ \"More options\" | rpxTranslate }}</span>\n </button>\n <!-- This template displays the overlay content for the dropdown menu and is connected to the \"More options\" button -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownMenuOpen\"\n [cdkConnectedOverlayPositions]=\"dropdownMenuPositions\"\n >\n <div class=\"dropdown-menu\" #dropdownMenu tabindex=\"0\">\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div id=\"mvMenuItems\" #mvMenuItems>\n <ng-template #menuItems>\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvIndexBtn\"\n title=\"Index\"\n data-l10n-id=\"index\"\n #mvIndexBtn\n class=\"mv-button mv-toolbar__menu-button--index\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvIndexBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvIndexBtn']\n \"\n [attr.aria-expanded]=\"isIndexOpen\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleIndexSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Index\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvBookmarksBtn\"\n title=\"Bookmarks\"\n data-l10n-id=\"bookmarks\"\n #mvBookmarksBtn\n [ngClass]=\"{\n 'mv-button mv-toolbar__menu-button--bookmarks': true,\n 'button-hidden-on-toolbar':\n mvToolbarMain.offsetWidth <\n widthRequiredForBtn['mvBookmarksBtn'],\n 'button-hidden-on-dropdown':\n mvToolbarMain.offsetWidth >=\n widthRequiredForBtn['mvBookmarksBtn']\n }\"\n [attr.aria-expanded]=\"isBookmarksOpen\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleBookmarksSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Bookmarks\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDrawButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvDrawBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvDrawBtn']\n \"\n [class.toggled]=\"toolbarEvents.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"onClickDrawToggle(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"draw_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvHighlightBtn\"\n #mvHighlightBtn\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight\"\n aria-label=\"Highlight\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.toggled]=\"toolbarEvents.highlightToolbarSubject | async\"\n aria-pressed=\"false\"\n (click)=\"onClickHighlightToggle(); isDropdownMenuOpen = false\"\n data-l10n-id=\"toggleHighlightButton\"\n >\n <span data-l10n-id=\"highlight_label\">{{\n \"Highlight\" | rpxTranslate\n }}</span>\n </button>\n\n <ng-container *ngIf=\"toolbarButtons.showNavigation\">\n <div\n id=\"mvPageBtn\"\n #mvPageBtn\n class=\"mv-toolbar__menu-button--page\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvPageBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvPageBtn']\n \"\n >\n <span>{{ \"Page\" | rpxTranslate }}</span>\n\n <button\n id=\"mvUpBtn\"\n [disabled]=\"pageNumber === 1 || redactAllInProgress\"\n title=\"Previous Page\"\n class=\"mv-toolbar__menu-button--up button-image\"\n data-l10n-id=\"previous\"\n (click)=\"decreasePageNumber()\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvDownBtn\"\n [disabled]=\"pageNumber === pageCount || redactAllInProgress\"\n title=\"Next Page\"\n class=\"mv-toolbar__menu-button--down button-image\"\n data-l10n-id=\"next\"\n (click)=\"increasePageNumber()\"\n >\n <span></span>\n </button>\n\n <input\n type=\"number\"\n id=\"pageNumber\"\n class=\"hmcts-toolbar-input govuk-input--width-2\"\n title=\"Page Number\"\n value=\"1\"\n size=\"4\"\n min=\"1\"\n [value]=\"pageNumber\"\n aria-label=\"page number\"\n tabindex=\"0\"\n data-l10n-id=\"page\"\n (change)=\"onPageNumberInputChange(pageNumberInput.value)\"\n [disabled]=\"redactAllInProgress\"\n #pageNumberInput\n />\n <span id=\"numPages\" class=\"toolbarLabel\">/ {{ pageCount }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"toolbarButtons.showZoom\">\n <div\n id=\"mvZoomBtn\"\n #mvZoomBtn\n class=\"mv-toolbar__menu-button--zoom\"\n aria-pressed=\"false\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvZoomBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvZoomBtn']\n \"\n >\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 0.1 ||\n redactAllInProgress\n \"\n id=\"mvMinusBtn\"\n class=\"mv-toolbar__menu-button--zoom-out button-image\"\n title=\"Zoom Out\"\n data-l10n-id=\"zoom_out\"\n (click)=\"stepZoom(-0.1)\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom Out\" | rpxTranslate\n }}</span>\n </button>\n <select\n id=\"scaleSelect\"\n class=\"hmcts-toolbar-select\"\n title=\"Zoom\"\n tabindex=\"0\"\n data-l10n-id=\"zoom\"\n (change)=\"zoom($event.target.value)\"\n aria-label=\"zoom\"\n [disabled]=\"redactAllInProgress\"\n >\n <option\n #zoomSelect\n id=\"customScaleOption\"\n title=\"\"\n [value]=\"toolbarEvents.zoomValueSubject.value\"\n >\n {{\n toolbarEvents.zoomValueSubject.value * 100\n | number : \"1.0-0\"\n }}%\n </option>\n <option\n *ngFor=\"let zoomScale of zoomScales\"\n title=\"\"\n [value]=\"zoomScale\"\n [attr.data-l10n-id]=\"'page_scale_percent_' + zoomScale * 100\"\n >\n {{ zoomScale * 100 }}%\n </option>\n </select>\n\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 5 ||\n redactAllInProgress\n \"\n id=\"mvPlusBtn\"\n class=\"mv-toolbar__menu-button--zoom-in button-image\"\n (click)=\"stepZoom(0.1)\"\n title=\"Zoom In\"\n data-l10n-id=\"zoom_in\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom In\" | rpxTranslate\n }}</span>\n </button>\n </div>\n </ng-container>\n\n <div\n *ngIf=\"toolbarButtons.showRotate\"\n id=\"mvRotateBtn\"\n #mvRotateBtn\n class=\"mv-toolbar__menu-button--rotate\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvRotateBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvRotateBtn']\n \"\n >\n <button\n id=\"mvRotateLeftBtn\"\n class=\"mv-toolbar__menu-button--rotate_left button-image\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n (click)=\"rotate(270)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvRotateRightBtn\"\n class=\"mv-toolbar__menu-button--rotate_right button-image\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n (click)=\"rotate(90)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <span>{{ \"Rotate\" | rpxTranslate }}</span>\n </div>\n\n <button\n *ngIf=\"toolbarButtons.showSearchBar\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvSearchBtn\"\n #mvSearchBtn\n title=\"Search\"\n data-l10n-id=\"searchbar\"\n class=\"mv-button mv-toolbar__menu-button--search\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvSearchBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvSearchBtn']\n \"\n aria-pressed=\"false\"\n (click)=\"toggleSearchBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Search\" | rpxTranslate }}</span>\n </button>\n <mv-search-bar\n *ngIf=\"!toolbarEvents.searchBarHidden.getValue()\"\n ></mv-search-bar>\n\n <button\n *ngIf=\"enableICP && toolbarButtons.showPresentationMode && isPdf()\"\n [disabled]=\"icpEnabled || !contentType || redactionEnabled\"\n id=\"mvPresentBtn\"\n #mvPresentBtn\n class=\"mv-button mv-toolbar__menu-button--present\"\n title=\"In-Court Presentation Mode\"\n data-l10n-id=\"icpMode_label\"\n [ngClass]=\"onToolBarOffSetChange('mvPresentBtn')\"\n aria-pressed=\"false\"\n (click)=\"togglePresentBar(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"icpMode_label\">{{\n \"Present\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"enableRedactions && toolbarButtons.showRedact\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvRedactBtn\"\n #mvRedactBtn\n title=\"Redact\"\n data-l10n-id=\"redact\"\n class=\"mv-button mv-toolbar__menu-button--redact\"\n [ngClass]=\"onToolBarOffSetChange('mvRedactBtn')\"\n [attr.aria-expanded]=\"isRedactOpen\"\n (click)=\"toggleRedactBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Redact\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showGrabNDragButton\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvGrabBtn\"\n #mvGrabBtn\n class=\"mv-button mv-toolbar__menu-button--grab\"\n title=\"Grab and drag\"\n [ngClass]=\"onToolBarOffSetChange('mvGrabBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleGrabNDrag(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Grab and drag\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDownload\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDownloadBtn\"\n #mvDownloadBtn\n class=\"mv-button mv-toolbar__menu-button--download\"\n title=\"Download\"\n data-l10n-id=\"download\"\n [ngClass]=\"onToolBarOffSetChange('mvDownloadBtn')\"\n aria-pressed=\"false\"\n (click)=\"downloadFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Download\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showPrint\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvPrintBtn\"\n #mvPrintBtn\n title=\"Print\"\n data-l10n-id=\"print\"\n class=\"mv-button mv-toolbar__menu-button--print\"\n [ngClass]=\"onToolBarOffSetChange('mvPrintBtn')\"\n aria-pressed=\"false\"\n (click)=\"printFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Print\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"enableAnnotations && toolbarButtons.showCommentSummary\"\n [disabled]=\"redactionEnabled\"\n id=\"mvCommentsBtn\"\n #mvCommentsBtn\n class=\"mv-button mv-toolbar__menu-button--comments\"\n title=\"Comments\"\n data-l10n-id=\"comments\"\n [ngClass]=\"onToolBarOffSetChange('mvCommentsBtn')\"\n [attr.aria-expanded]=\"isCommentsOpen\"\n (click)=\"toggleCommentsPanel(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Comments\" | rpxTranslate }}</span>\n </button>\n </ng-template>\n </div>\n </div>\n\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\"></div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { SearchType, 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\n@Component({\n selector: 'mv-redaction-toolbar',\n templateUrl: './redaction-toolbar.component.html'\n})\nexport class RedactionToolbarComponent implements OnInit, OnDestroy {\n\n @Input() showRedactSearch: boolean;\n\n preview = false;\n hasRedactions = false;\n\n private subscriptions: Subscription[] = [];\n redactionAllInProgress: boolean;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService,\n private store: Store<fromStore.AnnotationSetState>) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {\n this.hasRedactions = !!redactions.redactions.length;\n }));\n this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {\n this.redactionAllInProgress = inprogress;\n }));\n }\n\n onRedactAllSearch() {\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: true });\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 redactPage() {\n this.toolbarEventService.drawModeSubject.next(true);\n this.toolbarEventService.redactPage();\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n}\n","<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n","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';\nimport { IcpEventService } from '../icp-event.service';\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 public readonly icpEventService:IcpEventService) {}\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.icpEventService.becomePresenter();\n }\n\n stopPresenting() {\n this.icpEventService.stopPresenting();\n }\n\n leaveIcpSession() {\n this.icpEventService.leaveSession();\n }\n\n showParticipantsList() {\n this.toolbarEventService.toggleParticipantsList(!this.icpEventService.participantsListVisible.getValue());\n }\n}\n","<div id=\"icp-toolbar\" class=\"icpMode\">\n <div id=\"toolbar-title\">\n <label class=\"govuk-label\" data-l10n-id=\"digitalEvidence_label\">Digital evidence presentation</label>\n </div>\n\n <div id=\"presentation-mode\">\n <div class=\"item-label\">\n <label class=\"govuk-label\" data-l10n-id=\"icpInfo_label\">You are in presentation mode</label>\n </div>\n <div class=\"item-button\">\n <button class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" tabindex=\"0\"\n title=\"Leave presentation\" (click)=\"leaveIcpSession()\">\n <span data-l10n-id=\"icp-leave-presentation_label\">Leave presentation</span>\n </button>\n </div>\n </div>\n\n <div id=\"presenter-info\">\n <div class=\"item-label\">\n <label class=\"govuk-label\" *ngIf=\"!presenterName\" data-l10n-id=\"noPresenter_label\">Waiting for presenter</label>\n <label class=\"govuk-label\" *ngIf=\"presenterName && isPresenter\" data-l10n-id=\"isPresenter_label\">You are\n presenting</label>\n <label class=\"govuk-label\" *ngIf=\"presenterName && !isPresenter\"\n data-l10n-id=\"otherPresenter_label\">{{ presenterName | titlecase }}\n is presenting</label>\n </div>\n <div class=\"item-button\">\n <button *ngIf=\"!presenterName\" class=\"govuk-button\" id=\"icp-present\" tabindex=\"0\" title=\"Present\"\n (click)=\"present()\">\n <span data-l10n-id=\"icp-present_label\">Start presenting</span>\n </button>\n <button *ngIf=\"isPresenter\" class=\"govuk-button govuk-button--warning\" id=\"icp-stop-presenting\" tabindex=\"0\"\n title=\"Stop presenting\" (click)=\"stopPresenting()\">\n <span data-l10n-id=\"icp-stop-presenting_label\">Stop Presenting</span>\n </button>\n </div>\n </div>\n\n <div id=\"participant-list\">\n <button class=\"govuk-button govuk-button--secondary\" id=\"icp-participants-list\" tabindex=\"0\"\n title=\"Participants list\" (click)=\"showParticipantsList()\">\n <span\n data-l10n-id=\"icp-stop-presenting_label\">{{(icpEventService.participantsListVisible | async) ? 'Hide': 'Show'}}\n participants</span>\n </button>\n </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { SearchMode, SearchType, ToolbarEventService } from '../toolbar-event.service';\nimport { ToolbarButtonVisibilityService } from '../toolbar-button-visibility.service';\nimport * as fromStore from '../../store/reducers/reducers';\nimport { Store, select } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport * as fromRedactSelectors from '../../store/selectors/redaction.selectors';\n\n@Component({\n selector: 'mv-highlight-toolbar',\n templateUrl: './highlight-toolbar.component.html',\n styleUrls: ['./highlight-toolbar.component.scss']\n})\nexport class HighlightToolbarComponent implements OnInit, OnDestroy {\n\n private subscriptions: Subscription[] = [];\n redactionAllInProgress: boolean;\n\n constructor(public readonly toolbarEventService: ToolbarEventService,\n public readonly toolbarButtons: ToolbarButtonVisibilityService) { }\n\n ngOnInit(): void {\n this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {\n this.redactionAllInProgress = inprogress;\n }));\n }\n\n onAllSearch() {\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Highlight, isOpen: true } as SearchMode);\n }\n\n onHighlight() {\n this.toolbarEventService.toggleHighlightMode();\n }\n\n onClickDrawToggle() {\n this.toolbarEventService.toggleDrawMode();\n }\n\n onClose() {\n this.toolbarEventService.highlightToolbarSubject.next(false);\n this.toolbarEventService.highlightModeSubject.next(false);\n this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Highlight, isOpen: false } as SearchMode);\n }\n\n ngOnDestroy(): void {\n for (const subscription of this.subscriptions) {\n subscription.unsubscribe();\n }\n }\n\n}\n","<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\"\n >Highlight options</label\n >\n\n <button\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.toggled]=\"toolbarEventService.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"mvDrawBtn\"\n (click)=\"onClickDrawToggle()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"draw_label\">Draw a box</span>\n </button>\n\n <button\n id=\"highlightTextBtn\"\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight text\"\n data-l10n-id=\"highlightTextBtn\"\n (click)=\"onHighlight()\"\n [class.toggled]=\"toolbarEventService.highlightModeSubject | async\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"highlightTextBtn_label\">Highlight text</span>\n </button>\n\n <button\n id=\"mvHighlightFromSearchBtn\"\n title=\"From search\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\"\n >From search</span\n >\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"Close Redaction\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onClose()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">Close Highlight</span>\n </button>\n</div>\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","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 {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","<div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'govuk-form-group--error': errorMessage?.isInvalid }\"\n [formGroup]=\"formGroup\"\n>\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: config.legend,\n classes: 'govuk-label--m',\n id: config.id,\n hint: ' For example, 12 11 2007'\n }\"\n [isHeading]=\"false\"\n [errorMessage]=\"errorMessage\"\n >\n <mv-gov-uk-error-message\n [config]=\"{ id: 'passport' }\"\n *ngIf=\"errorMessage.isInvalid\"\n [errorMessage]=\"errorMessage\"\n >\n </mv-gov-uk-error-message>\n\n <div class=\"govuk-date-input\" [id]=\"config.id + '-date'\">\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Day',\n name: config.id,\n id: config.id + '-day',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-day'\"\n [name]=\"config.id + '-day'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'day'\"\n />\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Month',\n name: config.id + '-month',\n id: config.id + '-month',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-month'\"\n [name]=\"config.id + '-month'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'month'\"\n />\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <mv-gov-label\n [config]=\"{\n label: 'Year',\n name: config.id + '-year',\n id: config.id + '-year',\n classes: 'govuk-date-input__label'\n }\"\n >\n </mv-gov-label>\n <input\n class=\"govuk-input govuk-date-input__input govuk-input--width-4\"\n [ngClass]=\"{ 'govuk-input--error': errorMessage?.isInvalid }\"\n [id]=\"config.id + '-year'\"\n [name]=\"config.id + '-year'\"\n type=\"number\"\n value=\"\"\n pattern=\"[0-9]*\"\n [formControlName]=\"'year'\"\n />\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n</div>\n","import { Component, Input, ViewChild, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, UntypedFormControl, Validators } 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: true }) 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 fromFilterValid: boolean = true;\n toFilterValid: boolean = true;\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('', [Validators.required]),\n month: new FormControl('', [Validators.required]),\n year: new FormControl('', [Validators.required])\n }),\n dateRangeTo: new FormGroup({\n day: new FormControl('', [Validators.required]),\n month: new FormControl('', [Validators.required]),\n year: new FormControl('', [Validators.required])\n }),\n tagFilters: this.fb.group({}),\n });\n this.comments$ = this.store.pipe(select(fromSelectors.getCommentSummary));\n this.buildCheckBoxForm();\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\n\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\n this.fromFilterValid = hasDateFrom ? true : false;\n this.toFilterValid = hasDateTo ? true : false;\n\n if (this.filtersFg.valid) {\n this.store.dispatch(new fromAnnoActions.ApplyCommentSymmaryFilter({ ...value, dateRangeFrom, dateRangeTo }));\n }\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","<div id=\"modal-background\" class=\"modal\" (click)=\"onClose()\">\n <div\n #outerContainer\n id=\"modal\"\n class=\"modal-content govuk-width-container clearfix\"\n (click)=\"$event.stopPropagation()\"\n cdkTrapFocus\n tabindex=\"0\"\n >\n <div id=\"comment-container\" class=\"comment-container\" #commentContainer>\n <h2 class=\"govuk-heading-m\">{{ title }}</h2>\n <ng-container *ngIf=\"comments$ | async as comments\">\n <ng-container *ngIf=\"comments.length\">\n <button\n type=\"submit\"\n class=\"govuk-button govuk-!-margin-right-1\"\n (click)=\"onFiltersToggle()\"\n >\n {{\n !showFilters\n ? (\"Show Filters\" | rpxTranslate)\n : (\"Hide Filters\" | rpxTranslate)\n }}\n </button>\n <button\n type=\"submit\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"onClearFilters()\"\n *ngIf=\"hasFilter\"\n >\n {{ \"Clear Filters\" | rpxTranslate }}\n </button>\n <ng-container *ngIf=\"showFilters\">\n <form [formGroup]=\"filtersFg\" (ngSubmit)=\"onFilter()\">\n <div class=\"dates\">\n <div class=\"dates__from\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeFrom', legend: 'From' }\"\n [formGroup]=\"filtersFg.controls['dateRangeFrom']\"\n [errorMessage]=\"{\n isInvalid: !fromFilterValid,\n messages: ['From date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__to\">\n <mv-gov-uk-date\n [config]=\"{ id: 'dateRangeTo', legend: 'To' }\"\n [formGroup]=\"filtersFg.controls['dateRangeTo']\"\n [errorMessage]=\"{\n isInvalid: !toFilterValid,\n messages: ['To date is required']\n }\"\n ></mv-gov-uk-date>\n </div>\n <div class=\"dates__tags\">\n <mv-gov-uk-fieldset\n [config]=\"{\n legend: 'Tags',\n classes: 'govuk-label--m',\n id: 'filters'\n }\"\n [isHeading]=\"false\"\n >\n <div\n class=\"govuk-checkboxes--scroll\"\n [formGroup]=\"filtersFg.controls['tagFilters']\"\n >\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div\n class=\"govuk-checkboxes__item\"\n *ngFor=\"let item of allTags$ | async\"\n >\n <input\n [formControlName]=\"item.key\"\n class=\"govuk-checkboxes__input\"\n [value]=\"false\"\n type=\"checkbox\"\n />\n <label class=\"govuk-label govuk-checkboxes__label\">\n {{ item.key | unsnake }} ({{ item.length }})\n </label>\n </div>\n </div>\n </div>\n </mv-gov-uk-fieldset>\n </div>\n <div class=\"dates__cta\">\n <button type=\"submit\" class=\"govuk-button\">\n {{ \"Filter comments\" | rpxTranslate }}\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n <ng-container *ngIf=\"comments[0]\">\n <ngx-datatable\n [rows]=\"comments\"\n rowHeight=\"auto\"\n headerHeight=\"auto\"\n [columnMode]=\"'flex'\"\n [sorts]=\"[{ prop: 'date', dir: 'desc' }]\"\n >\n <ngx-datatable-column\n name=\"{{ 'User' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Page' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <a\n [routerLink]=\"[]\"\n class=\"comment-summary_pages\"\n (click)=\"navigateToPage(value)\"\n >{{ value }}</a\n >\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Date' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Comment' | rpxTranslate }}\"\n [flexGrow]=\"3\"\n [sortable]=\"false\"\n ></ngx-datatable-column>\n <ngx-datatable-column\n name=\"{{ 'Tags' | rpxTranslate }}\"\n [flexGrow]=\"1\"\n [sortable]=\"false\"\n >\n <ng-template ngx-datatable-cell-template let-value=\"value\">\n <span class=\"hmcts-badge\" *ngFor=\"let tag of value\">{{\n tag.label\n }}</span>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!comments[0]\">\n <h3 class=\"govuk-heading-s\">\n {{\n \"No comments available. Select text to add a highlight or comment.\"\n | rpxTranslate\n }}\n </h3>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"button-container\">\n <button (click)=\"onPrint()\" class=\"govuk-button govuk-button--secondary\">\n {{ \"Print\" | rpxTranslate }}\n </button>\n <button id=\"modal-close-button\" (click)=\"onClose()\" class=\"govuk-button\">\n {{ \"Close\" | rpxTranslate }}\n </button>\n </div>\n </div>\n</div>\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","<div class=\"govuk-width-container\">\n <div class=\"govuk-notification-banner__content\">\n <p>\n <span *ngIf=\"multimediaOn && playbackMsg === 'loading'\">{{\n \"Loading multimedia content ...\" | rpxTranslate\n }}</span>\n <span *ngIf=\"!multimediaOn\"\n >{{ \"Multimedia playback is not enabled, \" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'success'\"\n >{{ \"Use the player to play to the file or\" | rpxTranslate }}\n </span>\n <span *ngIf=\"multimediaOn && playbackMsg === 'error'\"\n >{{ \"Mime type not supported.\" | rpxTranslate }}\n </span>\n <a\n *ngIf=\"!multimediaOn || playbackMsg !== 'loading'\"\n #downloadLink\n [href]=\"url\"\n [download]=\"downloadFileName\"\n >{{ \"Click here to download\" | rpxTranslate }}</a\n >\n </p>\n <video\n #videoPlayer\n *ngIf=\"multimediaOn\"\n width=\"100%\"\n height=\"100%\"\n preload=\"auto\"\n (canplay)=\"onSuccess()\"\n controls\n >\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/mp4\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/mp4; codecs='avc1, av01, hvc1, hev1, mp4v, mp4a.40.2, opus'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/ogg\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/ogg; codecs='theora, vp8, vp9, flac, opus, vorbis'\"\n />\n <source (error)=\"onError()\" [src]=\"url\" type=\"video/webm\" />\n <source\n (error)=\"onError()\"\n [src]=\"url\"\n type=\"video/webm; codecs='vp8, vp9, vorbis, opus'\"\n />\n </video>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, 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, OnChanges {\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.$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 ngOnChanges(changes: SimpleChanges) {\n if (changes.originalUrl?.currentValue && changes.originalUrl.currentValue !== changes.originalUrl.previousValue) {\n this.store.dispatch(new fromDocumentActions.Convert(this.extractDMStoreDocId(this.originalUrl)));\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","<mv-pdf-viewer *ngIf=\"convertedUrl\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (pdfViewerException)=\"onLoadException($event)\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n [url]=\"convertedUrl\"\n [downloadUrl]=\"originalUrl\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [annotationSet]=\"enableAnnotations ? annotationSet : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"height\">\n</mv-pdf-viewer>\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 { distinctUntilChanged, 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.pipe(distinctUntilChanged()).subscribe(rotation => this.onRotate(rotation));\n\n this.$subscriptions.add(this.toolbarEvents.saveRotationSubject.subscribe(() => this.saveRotation()));\n this.$subscriptions.add(this.store.pipe(select(fromDocuments.getRotation)).subscribe(rotation => this.savedRotation = rotation));\n this.$subscriptions.add(this.store.pipe(select(fromDocuments.getDocumentId)).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 } from '@angular/core';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\nimport { IcpEventService } from '../../toolbar/icp-event.service';\n\n@Component({\n selector: 'mv-confirm-action',\n templateUrl: './confirm-action-dialog.component.html',\n})\nexport class ConfirmActionDialogComponent {\n\n constructor(private icpEventService: IcpEventService) {}\n\n onCancel() {\n this.icpEventService.leavingSession.next(false);\n }\n\n onConfirm() {\n this.icpEventService.confirmExit();\n this.icpEventService.leavingSession.next(false);\n }\n}\n","<div id=\"modal-background\" class=\"modal\" (click)=\"onCancel()\">\n <div id=\"modal\" class=\"modal-content govuk-width-container clearfix\" (click)=\"$event.stopPropagation()\">\n <h2 class=\"govuk-heading-s\">Are you sure you want to leave the presentation?</h2>\n <div class=\"button-container\">\n <button id=\"modal-close-button\" (click)=\"onConfirm()\" class=\"govuk-button\">Confirm</button>\n <button (click)=\"onCancel()\" class=\"govuk-button govuk-button--secondary\">Cancel</button>\n </div>\n </div>\n</div>\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 { 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';\nimport { IcpEventService } from './toolbar/icp-event.service';\nimport { HtmlTemplatesHelper } from './shared/util/helpers/html-templates.helper';\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 @Input() enableRedactSearch = 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 public icpEventService: IcpEventService\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 = HtmlTemplatesHelper.getAdjustedBoundingRect(this.elRef.nativeElement).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.contentType) {\n this.convertibleContent = this.needsConverting();\n this.multimediaContent = this.isMultimedia();\n this.unsupportedContent = !this.isSupported();\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) && this.documentId) {\n this.store.dispatch(new fromRedactActions.LoadRedactions(this.documentId));\n }\n if (this.contentType === 'image') {\n this.documentTitle = null;\n }\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: false,\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 // If secure mode is enabled (which adds \"documentsv2\" to the documentId), get rid of it\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","<div\n id=\"outerContainer\"\n [ngClass]=\"{\n 'has-redact-bar': toolbarEvents.redactionMode | async,\n 'icp-mode': icpEventService.enabled | async,\n 'is-redaction-preview': toolbarEvents.redactionPreview | async,\n sidebarOpen: toolbarEvents.sidebarOpen | async,\n 'has-scroll-bar': hasScrollBar,\n 'has-different-page-size': hasDifferentPageSize$ | async\n }\"\n [ngStyle]=\"{ width: width }\"\n>\n <mv-comments-summary\n *ngIf=\"showCommentSummary\"\n [title]=\"documentTitle || 'Comment Summary'\"\n [contentType]=\"contentType\"\n >\n </mv-comments-summary>\n\n <mv-confirm-action\n *ngIf=\"icpEventService.leavingSession | async\"\n ></mv-confirm-action>\n\n <div id=\"mainContainer\">\n <mv-main-toolbar\n *ngIf=\"showToolbar\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableICP]=\"enableICP\"\n [enableRedactions]=\"enableRedactions\"\n [contentType]=\"contentType\"\n >\n </mv-main-toolbar>\n <mv-redaction-toolbar\n [showRedactSearch]=\"enableRedactSearch\"\n *ngIf=\"toolbarEvents.redactionMode | async\"\n ></mv-redaction-toolbar>\n <mv-highlight-toolbar\n *ngIf=\"toolbarEvents.highlightToolbarSubject | async\"\n ></mv-highlight-toolbar>\n <mv-icp-toolbar *ngIf=\"icpEventService.enabled | async\"></mv-icp-toolbar>\n\n <div #viewerRef>\n <mv-conversion-viewer\n *ngIf=\"convertibleContent\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (viewerException)=\"onLoadException($event)\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [originalUrl]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist\n >\n </mv-conversion-viewer>\n <mv-pdf-viewer\n *ngIf=\"contentType === 'pdf'\"\n #pdfViewer\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (pdfViewerException)=\"onLoadException($event)\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [enableICP]=\"enableICP\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n [caseId]=\"caseId\"\n mvRotationPersist\n >\n </mv-pdf-viewer>\n <mv-image-viewer\n *ngIf=\"contentType === 'image'\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (imageViewerException)=\"onLoadException($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist\n >\n </mv-image-viewer>\n <mv-multimedia-player\n *ngIf=\"multimediaContent\"\n [multimediaOn]=\"multimediaPlayerEnabled\"\n [url]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n >\n </mv-multimedia-player>\n <mv-unsupported-viewer\n *ngIf=\"unsupportedContent\"\n [url]=\"url\"\n [typeException]=\"typeException\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n (unsupportedViewerException)=\"onLoadException($event)\"\n >\n </mv-unsupported-viewer>\n </div>\n </div>\n</div>\n","import { RedactionSearchBarComponent } from './redaction-search-bar/redaction-search-bar.component';\nimport { 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 { RedactionToolbarComponent } from './redaction-toolbar/redaction-toolbar.component';\nimport { IcpToolbarComponent } from './icp-toolbar/icp-toolbar.component';\nexport { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RouterModule } from '@angular/router';\nimport { HighlightToolbarComponent } from './highlight-toolbar/highlight-toolbar.component';\nimport { RpxTranslationModule } from 'rpx-xui-translation';\n\n\n@NgModule({\n declarations: [\n SearchBarComponent,\n MainToolbarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent,\n RedactionSearchBarComponent,\n HighlightToolbarComponent\n ],\n providers: [\n ToolbarButtonVisibilityService\n ],\n exports: [\n MainToolbarComponent,\n SearchBarComponent,\n RedactionToolbarComponent,\n IcpToolbarComponent,\n RedactionSearchBarComponent,\n HighlightToolbarComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n RouterModule,\n RpxTranslationModule.forChild(),\n ]\n})\nexport class ToolbarModule { }\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 { 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 { 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';\nimport { CommentService } from './comment-set/comment/comment.service';\nimport { RpxTranslationModule } from 'rpx-xui-translation';\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 RpxTranslationModule.forChild()\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 providers: [\n AnnotationApiService,\n BookmarksApiService,\n CommentSetRenderService,\n HighlightCreateService,\n CommentService,\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 { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, concatMap, 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 loadAnnotation$ = createEffect(() =>\n 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 if (res.status === 204) {\n return new annotationsActions.LoadAnnotationSetFail(res);\n }\n return new annotationsActions.LoadAnnotationSetSucess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.LoadAnnotationSetFail(error));\n }));\n }))\n );\n\n postAnnotation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION),\n concatMap((action: annotationsActions.SaveAnnotation) => {\n return this.annotationApiService.postAnnotation(action.payload).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\n deleteAnnotation$ = createEffect(() =>\n 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\n saveAnnotationSet$ = createEffect(() =>\n this.actions$.pipe(\n ofType(annotationsActions.SAVE_ANNOTATION_SET),\n map((action: annotationsActions.SaveAnnotationSet) => action.payload),\n switchMap((annotationSet) => {\n return this.annotationApiService.postAnnotationSet(annotationSet).pipe(\n map(res => {\n return new annotationsActions.SaveAnnotationSetSuccess(res);\n }),\n catchError(error => {\n return of(new annotationsActions.SaveAnnotationSetFail(error));\n }));\n }))\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, 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 loadBookmarks$ = createEffect(() =>\n 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\n createBookmark$ = createEffect(() =>\n 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\n moveBookmark$ = createEffect(() =>\n 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\n deleteBookmark$ = createEffect(() =>\n 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\n updateBookmark$ = createEffect(() =>\n 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}\n","import { Observable } from 'rxjs';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\nimport { BulkRedaction, Redaction } from './redaction.model';\n\n@Injectable()\nexport class RedactionApiService {\n\n private markupsApiUrl = '/api/markups';\n private redactApiUrl = '/api/redaction';\n private markupsSearchApiUrl = '/api/markups/search';\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 saveBulkRedaction(body): Observable<BulkRedaction> {\n return this.httpClient\n .post<BulkRedaction>(this.markupsSearchApiUrl, 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, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, exhaustMap, map, switchMap, tap } 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';\nimport { ToolbarEventService } from '../../toolbar/toolbar-event.service';\n\n@Injectable()\nexport class RedactionEffects {\n constructor(\n private actions$: Actions,\n private redactionApiService: RedactionApiService,\n private toolbarEvents: ToolbarEventService\n ) { }\n\n loadRedactions$ = createEffect(() =>\n 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\n saveRedaction$ = createEffect(() =>\n 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\n saveBulkRedaction$ = createEffect(() =>\n this.actions$.pipe(\n ofType(redactionActions.SAVE_BULK_REDACTION),\n map((action: redactionActions.SaveRedaction) => action.payload),\n exhaustMap((redaction) => {\n return this.redactionApiService.saveBulkRedaction(redaction).pipe(\n tap(() => this.toolbarEvents.redactAllInProgressSubject.next(false))).pipe(map(resp => {\n return new redactionActions.SaveBulkRedactionSuccess(resp);\n }),\n catchError(error => {\n return of(new redactionActions.SaveBulkRedactionFailure(error));\n }));\n }))\n );\n\n deleteRedaction$ = createEffect(() =>\n 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\n redact$ = createEffect(() =>\n 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\n unmarkAll$ = createEffect(() =>\n 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\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, createEffect, 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 convert$ = createEffect(() =>\n 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\n loadRotation$ = createEffect(() =>\n 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\n saveRotation$ = createEffect(() =>\n 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}\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({ providedIn: 'root' })\nexport class IcpSessionApiService {\n\n public ICP_SESSION_API = '/icp/sessions';\n\n constructor(private readonly httpClient: HttpClient) { }\n\n public loadSession(payload: { caseId: string, documentId: string }): Observable<any> {\n return this.httpClient\n .get<{ username: string, session: IcpSession }>(`${this.ICP_SESSION_API}/${payload.caseId}/${payload.documentId}`,\n { observe: 'response', withCredentials: true })\n .pipe(map(response => {\n const token = response.headers.get('X-Access-Token');\n return { \n ...response.body, \n token\n };\n }));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, 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 loadIcpSession$ = createEffect(() =>\n this.actions$.pipe(\n ofType(icpActions.LOAD_ICP_SESSION),\n map((action: icpActions.LoadIcpSession) => action.payload),\n exhaustMap((payload: { caseId: string, documentId: string }) =>\n this.icpApiService.loadSession(payload)\n .pipe(\n map(res => new icpActions.JoinIcpSocketSession(res)),\n catchError(error => of(new icpActions.LoadIcpSessionFailure(error)))\n )\n ))\n );\n\n\n joinIcpSocketSession$ = createEffect(() =>\n this.actions$.pipe(\n ofType(icpActions.JOIN_ICP_SOCKET_SESSION),\n map((action: icpActions.JoinIcpSocketSession) => action.payload),\n switchMap((res: { username: string, session: IcpSession, token: string }) =>\n this.icpUpdateService.joinSession(res.username, res.session, res.token)\n .pipe(map(participants => new icpActions.IcpSocketSessionJoined({ session: res.session, participantInfo: participants })))\n ))\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 { RpxTranslationModule } from 'rpx-xui-translation';\nimport { 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 { 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';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\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 MutableDivModule,\n CdkTreeModule,\n DragDropModule,\n RpxTranslationModule.forChild()\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,\n BookmarkIconsComponent,\n ParticipantsListComponent\n ],\n providers: [\n PdfJsWrapperFactory,\n CommentService,\n RedactionApiService,\n DocumentConversionApiService,\n RotationApiService,\n ],\n exports: [\n MediaViewerComponent\n ]\n})\nexport class MediaViewerModule { }\n","/*\n * Public API Surface of media-viewer\n */\n\nexport * from './lib/media-viewer.module';\nexport * from './lib/toolbar/toolbar.module';\nexport * from './lib/annotations/services/annotation-api/annotation-api.service';\nexport * from './lib/annotations/annotations.module';\nexport * from './lib/viewers/viewer-exception.model';\nexport * from './lib/store/reducers/annotations.reducer';\nexport * from './lib/store/selectors/annotation.selectors';\nexport * from './lib/store/actions/annotation.actions';\nexport * from './lib/store/effects/annotation.effects';\nexport * from './lib/media-viewer.component';\nexport * from './lib/toolbar/highlight-toolbar/highlight-toolbar.component';\nexport * from './lib/toolbar/main-toolbar/main-toolbar.component';\nexport * from './lib/toolbar/search-bar/search-bar.component';\nexport * from './lib/toolbar/redaction-toolbar/redaction-toolbar.component';\nexport * from './lib/toolbar/redaction-search-bar/redaction-search-bar.component';\nexport * from './lib/toolbar/icp-toolbar/icp-toolbar.component';\nexport * from './lib/annotations/annotation-set/annotation-view/annotation-view.component';\nexport * from './lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component';\nexport * from './lib/annotations/annotation-set/annotation-set.component';\nexport * from './lib/annotations/comment-set/comment-set.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-set-header.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component';\nexport * from './lib/annotations/comments-summary/comments-summary.component';\nexport * from './lib/annotations/tags/tags.component';\nexport * from './lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component';\nexport * from './lib/annotations/annotation-set/metadata-layer/metadata-layer.component';\nexport * from './lib/annotations/pipes/filter/filter.pipe';\nexport * from './lib/annotations/pipes/unsnake/unsnake.pipe';\nexport * from './lib/annotations/pipes/date/date.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["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","getRotation","rotationLoaded","getConvertedDocument","fromAnnotations.LOAD_ANNOTATION_SET","fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS","fromAnnotations.LOAD_ANNOTATION_SET_FAIL","uuid","fromAnnotations.SAVE_ANNOTATION_SET_SUCCESS","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","fromBookmarks.UPDATE_BOOKMARK_SCROLL_TOP","getScrollTop","fromRedaction.LOAD_REDACTIONS","fromRedaction.LOAD_REDACTION_SUCCESS","fromRedaction.SAVE_REDACTION_SUCCESS","fromRedaction.SAVE_BULK_REDACTION_SUCCESS","fromRedaction.SELECT_REDACTION","fromRedaction.DELETE_REDACTION_SUCCESS","fromRedaction.REDACT_SUCCESS","fromRedaction.RESET_REDACTED_DOCUMENT","fromRedaction.UNMARK_ALL_SUCCESS","getRedactionEnt","fromIcpActions.SET_CASE_ID","fromIcpActions.ICP_SOCKET_SESSION_JOINED","fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED","fromIcpActions.ICP_PRESENTER_UPDATED","fromIcpActions.LEAVE_ICP_SOCKET_SESSION","getIcpSession","getPresenter","getClient","getParticipants","fromDocument.docReducer","fromAnnotation.reducer","fromTags.tagsReducer","fromBookmarks.bookmarksReducer","fromRedaction.redactionReducer","fromIcp.icpReducer","fromFeature.getMVState","fromDocument.getDocPages","fromDocument.getDocId","fromDocument.getPdfPos","fromDocument.getHasDifferentPageSizes","fromDocument.getConvertedDocument","fromDocument.getRotation","fromDocument.rotationLoaded","i1.IcpEventService","i1.ToolbarEventService","fromIcp.getIcpSession","fromIcp.getPresenter","fromIcp.getClient","fromIcp.getParticipants","i1.SocketService","fromDocSelectors.getPdfPosition","fromIcpSelectors.getPresenter","i2.IcpUpdateService","i3","i2.ViewerEventService","i3.IcpUpdateService","i4","fromIcpSelectors.getCaseId","fromDocument.getDocumentId","fromIcpActions.LoadIcpSession","fromIcpSelectors.getIcpSession","fromIcpSelectors.getClient","fromIcpSelectors.isPresenter","fromIcpActions.IcpPresenterUpdated","fromIcpActions.IcpParticipantListUpdated","fromIcpActions.LeaveIcpSocketSession","i4.IcpPresenterService","i5.IcpFollowerService","i6","i7.IcpEventService","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","fromSelectors.getDocumentIdSetId","fromActions.SaveAnnotation","fromActions.SaveAnnotationSet","i2","fromRedactionActions.SaveBulkRedaction","i2.ToolbarButtonVisibilityService","i3.ToolbarEventService","i4.HighlightCreateService","i7","i1","i1.TagsServices","fromSelector.getComponentSearchText","i2.CommentService","i3.TagsServices","i5","i6.TextHighlightDirective","i7.TextareaAutoExpandDirective","i8.TagsComponent","i9","i10.MomentDatePipe","fromSelectors.getCommentsArray","fromSelectors.getAnnotationEntities","fromActions.SelectedAnnotation","i3.CommentSetRenderService","i4.ToolbarEventService","i6.CommentComponent","i2.ToolbarEventService","fromActions.SearchComment","i4.CommentsNavigateComponent","fromSelectors.getTagFilters","fromActions.AddFilterTags","fromSelectors.getAllTagsArr","fromActions.ClearFilterTags","i6.FilterPipe","i7.UnsnakePipe","fromTagSelectors.getTagFilters","fromAnnoSelector.getFilteredAnnotations","i4.IcpEventService","i7.CommentSearchComponent","i8.CommentsNavigateComponent","i9.CommentFilterComponent","fromBookmarks.getBookmarkPageEnt","fromBookmarks.getBookmarkEnts","fromBookmarks.getEditBookmark","fromBookmarks.getScrollTop","fromDocument.getPdfPosition","i2.HighlightCreateService","fromActions.AddOrEditComment","i4.RectangleComponent","i5.CtxToolbarComponent","fromSelectors.getSelectedAnnotation","fromActions.DeleteAnnotation","i4.AnnotationViewComponent","fromSelectors.getPageEntities","fromBookmarks.getBookmarkInfo","i4.ViewerEventService","i6.BoxHighlightCreateComponent","i7.AnnotationSetComponent","i8.CtxToolbarComponent","bookmarksSelectors.getEditableBookmark","bookmarksSelectors.getBookmarkInfo","bookmarksSelectors.getBookmarkNodes","bookmarksSelectors.getScrollTop","i1.ViewerEventService","i6.BookmarksComponent","i7.OutlineItemComponent","i8","fromAnnotationActions.SelectedAnnotation","i3.HighlightCreateService","fromRedactions.getPageEnt","fromRedactions.getSelectedRedaction","fromRedactions.getRedactedDocInfo","fromRedactions.getRedactionEnt","fromSelectors.getRedactionsPerPage","fromSelectors.getSelected","fromSelectors.getRedactedDocumentInfo","fromRedaSelectors.getRedactionArray","fromRedaActions.Redact","fromRedaActions.UnmarkAll","fromRedactionActions.SaveRedaction","fromActions.DeleteRedaction","fromActions.SelectRedaction","fromActions.SaveRedaction","fromRedactionActions.ResetRedactedDocument","i5.AnnotationViewComponent","fromSelectors.getBookmarksPerPage","fromSelectors.getParticipants","fromSelectors.getPresenter","fromSelectors.isPresenter","i3.IcpEventService","fromTagActions.ClearFilterTags","fromDocumentsSelector.getPageDifference","fromDocumentActions.AddPages","i2.PdfJsWrapperFactory","i3.PrintService","i5.ViewerEventService","i6.IcpService","i7.ToolbarButtonVisibilityService","i8.IcpEventService","i10.RedactionSearchBarComponent","i11.CommentSetComponent","i12.CommentSetHeaderComponent","i13.MetadataLayerComponent","i14.SideBarComponent","i15.GrabNDragDirective","i16.HighlightCreateDirective","i17.RedactionComponent","i18.BookmarkIconsComponent","i19.ParticipantsListComponent","i20","fromDocument.AddPages","i2.PrintService","i3.ViewerUtilService","i5.ToolbarButtonVisibilityService","i6.ViewerEventService","i8.CommentSetComponent","i9.CommentSetHeaderComponent","i10.MetadataLayerComponent","i11.GrabNDragDirective","i12.RedactionComponent","i2.ViewerUtilService","i1.ToolbarButtonVisibilityService","i3.NumberHelperService","i8.SearchBarComponent","fromRedactSelectors.getRedactionArray","fromIcpSelectors.getPresenterName","i3.GovUkErrorMessageComponent","i4.GovUkFieldsetComponent","i5.GovUkLabelComponent","fromSelectors.getCommentSummary","fromSelectors.getCommentSummaryFilters","fromTagSelectors.getAllTagsArr","fromAnnoActions.ClearCommentSummaryFilters","fromAnnoActions.ApplyCommentSymmaryFilter","i9.GovUkDateComponent","i10.GovUkFieldsetComponent","i11","i12.UnsnakePipe","fromSelectors.getConvertedDocument","fromDocumentActions.ClearConvertDocUrl","fromDocumentActions.Convert","i3.PdfViewerComponent","fromDocuments.getRotation","fromDocuments.getDocumentId","fromDocumentActions.LoadRotation","fromDocuments.rotationLoaded","fromDocumentActions.SaveRotation","fromAnnoSelectors.getAnnotationSet","fromDocumentActions.SetDocumentId","fromAnnoActions.LoadAnnotationSet","fromRedactActions.LoadRedactions","i4.AnnotationApiService","i5.CommentService","i6.IcpEventService","i8.MainToolbarComponent","i9.RedactionToolbarComponent","i10.IcpToolbarComponent","i11.HighlightToolbarComponent","i12.CommentsSummaryComponent","i13.PdfViewerComponent","i14.ImageViewerComponent","i15.UnsupportedViewerComponent","i16.MultimediaPlayerComponent","i17.ConvertibleContentViewerComponent","i18.RotationPersistDirective","i19.ConfirmActionDialogComponent","annotationsActions.LOAD_ANNOTATION_SET","annotationsActions.LoadAnnotationSetFail","annotationsActions.LoadAnnotationSetSucess","annotationsActions.SAVE_ANNOTATION","annotationsActions.SaveAnnotationSuccess","annotationsActions.DELETE_ANNOTATION","annotationsActions.DeleteAnnotationSuccess","annotationsActions.DeleteAnnotationFail","annotationsActions.SAVE_ANNOTATION_SET","annotationsActions.SaveAnnotationSetSuccess","annotationsActions.SaveAnnotationSetFail","i2.AnnotationApiService","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","i3.BookmarksApiService","redactionActions.LOAD_REDACTIONS","redactionActions.LoadRedactionSuccess","redactionActions.LoadRedactionFailure","redactionActions.SAVE_REDACTION","redactionActions.SaveRedactionSuccess","redactionActions.SaveRedactionFailure","redactionActions.SAVE_BULK_REDACTION","redactionActions.SaveBulkRedactionSuccess","redactionActions.SaveBulkRedactionFailure","redactionActions.DELETE_REDACTION","redactionActions.DeleteRedactionSuccess","redactionActions.DeleteRedactionFailure","redactionActions.REDACT","redactionActions.RedactSuccess","redactionActions.RedactFailure","redactionActions.UNMARK_ALL","redactionActions.UnmarkAllSuccess","i2.RedactionApiService","documentActions.CONVERT","documentActions.ConvertSuccess","documentActions.ConvertFailure","documentActions.LOAD_ROTATION","documentActions.LoadRotationSuccess","documentActions.LoadRotationFailure","documentActions.SAVE_ROTATION","documentActions.SaveRotationSuccess","documentActions.SaveRotationFailure","i2.DocumentConversionApiService","i3.RotationApiService","icpActions.LOAD_ICP_SESSION","icpActions.JoinIcpSocketSession","icpActions.LoadIcpSessionFailure","icpActions.JOIN_ICP_SOCKET_SESSION","icpActions.IcpSocketSessionJoined","i2.IcpSessionApiService"],"mappings":"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"}
|