@hmcts/media-viewer
Version:
91 lines • 14.6 kB
JavaScript
import { Component, Input, ViewEncapsulation } from '@angular/core';
import * as fromActions from '../../../store/actions/annotation.actions';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/store";
import * as i2 from "../../../toolbar/toolbar-event.service";
import * as i3 from "@angular/router";
export class CommentsNavigateComponent {
constructor(store, toolbarEvents) {
this.store = store;
this.toolbarEvents = toolbarEvents;
this.autoSelect = false;
this.navigationList = [];
this.index = 0;
}
ngOnChanges(changes) {
if (changes.annotationList) {
this.initNavigationList();
}
}
initNavigationList() {
this.index = 0;
this.navigationList = [...this.annotationList || []]
.map(annotation => ({
content: annotation.comments[0].content,
annotationId: annotation.id,
page: annotation.page,
rectangle: this.upperRectangle(annotation.rectangles),
}))
.sort(this.sortComments);
if (this.autoSelect) {
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[0].page, 0));
this.store.dispatch(new fromActions.SelectedAnnotation({
annotationId: this.navigationList[0].annotationId,
editable: false,
selected: true
}));
}
}
sortComments(mappedCommentA, mappedCommentB) {
if (mappedCommentA.page !== mappedCommentB.page) {
return mappedCommentA.page - mappedCommentB.page;
}
else {
const rectA = mappedCommentA.rectangle;
const rectB = mappedCommentB.rectangle;
if (rectA.y !== rectB.y) {
return rectA.y - rectB.y;
}
else {
return rectA.x - rectB.x;
}
}
}
nextItem() {
this.index += 1;
if (this.index === this.annotationList.length) {
this.index = 0;
}
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));
this.store.dispatch(new fromActions.SelectedAnnotation({
annotationId: this.navigationList[this.index].annotationId, editable: false, selected: true
}));
}
prevItem() {
this.index -= 1;
if (this.index < 0) {
this.index = this.navigationList.length - 1;
}
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));
this.store.dispatch(new fromActions.SelectedAnnotation({
annotationId: this.navigationList[this.index].annotationId,
editable: false,
selected: true
}));
}
upperRectangle(rectangles) {
[...rectangles].sort((rect1, rect2) => rect1.y - rect2.y);
return { x: rectangles[0].x, y: rectangles[0].y };
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentsNavigateComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CommentsNavigateComponent, selector: "mv-comments-navigate", inputs: { annotationList: "annotationList", autoSelect: "autoSelect" }, usesOnChanges: true, ngImport: i0, template: "<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", dependencies: [{ kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentsNavigateComponent, decorators: [{
type: Component,
args: [{ selector: 'mv-comments-navigate', encapsulation: ViewEncapsulation.None, template: "<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" }]
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.ToolbarEventService }], propDecorators: { annotationList: [{
type: Input
}], autoSelect: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMtbmF2aWdhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1uYXZpZ2F0ZS9jb21tZW50cy1uYXZpZ2F0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LW5hdmlnYXRlL2NvbW1lbnRzLW5hdmlnYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs5RixPQUFPLEtBQUssV0FBVyxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQVF6RSxNQUFNLE9BQU8seUJBQXlCO0lBUXBDLFlBQW9CLEtBQTBDLEVBQWtCLGFBQWtDO1FBQTlGLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBQWtCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUx6RyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBRyxDQUFDLENBQUM7SUFFMkcsQ0FBQztJQUV0SCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQzthQUNqRCxHQUFHLENBQUMs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SSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDO1lBQ3JELFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZO1lBQzFELFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsVUFBdUI7UUFDcEMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7a0lBaEZVLHlCQUF5QjtzSEFBekIseUJBQXlCLHlKQ2J0QywrWkFhQTs7NEZEQWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHNCQUFzQixpQkFFakIsaUJBQWlCLENBQUMsSUFBSTs0R0FJckIsY0FBYztzQkFBN0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsJztcbmltcG9ydCB7U3RvcmV9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQWN0aW9ucyBmcm9tICcuLi8uLi8uLi9zdG9yZS9hY3Rpb25zL2Fubm90YXRpb24uYWN0aW9ucyc7XG5pbXBvcnQge1Rvb2xiYXJFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtY29tbWVudHMtbmF2aWdhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudHMtbmF2aWdhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRzTmF2aWdhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhbm5vdGF0aW9uTGlzdDogQW5ub3RhdGlvbltdO1xuICBASW5wdXQoKSBhdXRvU2VsZWN0ID0gZmFsc2U7XG5cbiAgbmF2aWdhdGlvbkxpc3Q6IGFueVtdID0gW107XG4gIGluZGV4ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPiwgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFubm90YXRpb25MaXN0KSB7XG4gICAgICB0aGlzLmluaXROYXZpZ2F0aW9uTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXROYXZpZ2F0aW9uTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4ID0gMDtcbiAgICB0aGlzLm5hdmlnYXRpb25MaXN0ID0gWy4uLnRoaXMuYW5ub3RhdGlvbkxpc3QgfHwgW11dXG4gICAgICAubWFwKGFubm90YXRpb24gPT4gKHtcbiAgICAgICAgY29udGVudDogYW5ub3RhdGlvbi5jb21tZW50c1swXS5jb250ZW50LFxuICAgICAgICBhbm5vdGF0aW9uSWQ6IGFubm90YXRpb24uaWQsXG4gICAgICAgIHBhZ2U6IGFubm90YXRpb24ucGFnZSxcbiAgICAgICAgcmVjdGFuZ2xlOiB0aGlzLnVwcGVyUmVjdGFuZ2xlKGFubm90YXRpb24ucmVjdGFuZ2xlcyksXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KHRoaXMuc29ydENvbW1lbnRzKTtcblxuICAgIGlmICh0aGlzLmF1dG9TZWxlY3QpIHtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZXRQYWdlKE51bWJlci5wYXJzZUludCh0aGlzLm5hdmlnYXRpb25MaXN0WzBdLnBhZ2UsIDApKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlbGVjdGVkQW5ub3RhdGlvbih7XG4gICAgICAgIGFubm90YXRpb25JZDogdGhpcy5uYXZpZ2F0aW9uTGlzdFswXS5hbm5vdGF0aW9uSWQsXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBzb3J0Q29tbWVudHMobWFwcGVkQ29tbWVudEEsIG1hcHBlZENvbW1lbnRCKSB7XG4gICAgaWYgKG1hcHBlZENvbW1lbnRBLnBhZ2UgIT09IG1hcHBlZENvbW1lbnRCLnBhZ2UpIHtcbiAgICAgIHJldHVybiBtYXBwZWRDb21tZW50QS5wYWdlIC0gbWFwcGVkQ29tbWVudEIucGFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVjdEEgPSBtYXBwZWRDb21tZW50QS5yZWN0YW5nbGU7XG4gICAgICBjb25zdCByZWN0QiA9IG1hcHBlZENvbW1lbnRCLnJlY3RhbmdsZTtcbiAgICAgIGlmIChyZWN0QS55ICE9PSByZWN0Qi55KSB7XG4gICAgICAgIHJldHVybiByZWN0QS55IC0gcmVjdEIueTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZWN0QS54IC0gcmVjdEIueDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXh0SXRlbSgpIHtcbiAgICB0aGlzLmluZGV4ICs9IDE7XG4gICAgaWYgKHRoaXMuaW5kZXggPT09IHRoaXMuYW5ub3RhdGlvbkxpc3QubGVuZ3RoKSB7XG4gICAgICB0aGlzLmluZGV4ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0UGFnZShOdW1iZXIucGFyc2VJbnQodGhpcy5uYXZpZ2F0aW9uTGlzdFt0aGlzLmluZGV4XS5wYWdlLCAwKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2VsZWN0ZWRBbm5vdGF0aW9uKHtcbiAgICAgIGFubm90YXRpb25JZDogdGhpcy5uYXZpZ2F0aW9uTGlzdFt0aGlzLmluZGV4XS5hbm5vdGF0aW9uSWQsIGVkaXRhYmxlOiBmYWxzZSwgc2VsZWN0ZWQ6IHRydWVcbiAgICB9KSk7XG4gIH1cblxuXG4gIHByZXZJdGVtKCkge1xuICAgIHRoaXMuaW5kZXggLT0gMTtcbiAgICBpZiAodGhpcy5pbmRleCA8IDApIHtcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLm5hdmlnYXRpb25MaXN0Lmxlbmd0aCAtIDE7XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZXRQYWdlKE51bWJlci5wYXJzZUludCh0aGlzLm5hdmlnYXRpb25MaXN0W3RoaXMuaW5kZXhdLnBhZ2UsIDApKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5TZWxlY3RlZEFubm90YXRpb24oe1xuICAgICAgYW5ub3RhdGlvbklkOiB0aGlzLm5hdmlnYXRpb25MaXN0W3RoaXMuaW5kZXhdLmFubm90YXRpb25JZCxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiB0cnVlXG4gICAgfSkpO1xuICB9XG5cbiAgdXBwZXJSZWN0YW5nbGUocmVjdGFuZ2xlczogUmVjdGFuZ2xlW10pIHtcbiAgICBbLi4ucmVjdGFuZ2xlc10uc29ydCgocmVjdDEsIHJlY3QyKSA9PiByZWN0MS55IC0gcmVjdDIueSk7XG4gICAgcmV0dXJuIHsgeDogcmVjdGFuZ2xlc1swXS54LCB5OiByZWN0YW5nbGVzWzBdLnkgfTtcbiAgfVxufVxuIiwiPHAgY2xhc3M9XCJjb21tZW50LXNlYXJjaFwiPlxuICA8c3BhbiBjbGFzcz1cImNvbW1lbnQtc2VhcmNoX19pdGVtXCI+XG4gICAgU2hvd2luZyB7eyBpbmRleCArIDEgfX0gb2Yge3sgbmF2aWdhdGlvbkxpc3QubGVuZ3RoIH19XG4gIDwvc3Bhbj5cbiAgPGEgW3JvdXRlckxpbmtdPVwiW11cIlxuICAgICBjbGFzcz1cImNvbW1lbnQtc2VhcmNoX19pdGVtXCJcbiAgICAgdGl0bGU9XCJQcmV2aW91cyBjb21tZW50XCJcbiAgICAgKGNsaWNrKT1cInByZXZJdGVtKClcIj5QcmV2PC9hPlxuICA8YSBbcm91dGVyTGlua109XCJbXVwiXG4gICAgIGNsYXNzPVwiY29tbWVudC1zZWFyY2hfX2l0ZW1cIlxuICAgICB0aXRsZT1cIk5leHQgY29tbWVudCdcIlxuICAgICAoY2xpY2spPVwibmV4dEl0ZW0oKVwiPk5leHQ8L2E+XG48L3A+XG4iXX0=