@hmcts/media-viewer
Version:
55 lines • 9.25 kB
JavaScript
import { Injectable } from '@angular/core';
import { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';
import * as i0 from "@angular/core";
export class CommentSetRenderService {
redrawComponents(commentComponents, pageHeights, rotate, zoom) {
let prevComment;
this.sortComponents(commentComponents, pageHeights, rotate, zoom).forEach((comment) => {
this.adjustIfOverlapping(comment, prevComment, zoom);
prevComment = comment;
});
}
sortComponents(commentComponents, pageHeights, rotate, zoom) {
return commentComponents.sort((a, b) => {
a.rectTop = this.top(a._rectangle, pageHeights[a.page - 1], rotate, zoom);
b.rectTop = this.top(b._rectangle, pageHeights[b.page - 1], rotate, zoom);
return this.processSort(a, b);
});
}
adjustIfOverlapping(comment, prevComment, zoom) {
if (prevComment) {
const endOfPrevComment = prevComment.commentTop + this.height(prevComment);
if (comment.commentTop <= endOfPrevComment) {
comment.rectTop = (endOfPrevComment - comment.totalPrevPagesHeight) / zoom;
}
}
}
processSort(a, b) {
if (this.onSameLine(a, b)) {
return a.rectLeft >= b.rectLeft ? 1 : -1;
}
return a.commentTop >= b.commentTop ? 1 : -1;
}
onSameLine(a, b) {
return this.difference(a.commentTop, b.commentTop) === 0;
}
top(rectangle, height, rotate, zoom) {
const actualHeight = height / zoom;
switch (rotate) {
case 90: return rectangle.x;
case 180: return actualHeight - (rectangle.y + rectangle.height);
case 270: return actualHeight - (rectangle.x + rectangle.width);
default: return rectangle.y;
}
}
height(element) {
return HtmlTemplatesHelper.getAdjustedBoundingRect(element.form.nativeElement)?.height | 0;
}
difference(a, b) { return Math.abs(a - b); }
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentSetRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentSetRenderService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CommentSetRenderService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtcmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LXNldC1yZW5kZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQUd0RixNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLGdCQUFnQixDQUFDLGlCQUFxQyxFQUFFLFdBQWtCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDdEcsSUFBSSxXQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUF5QixFQUFFLEVBQUU7WUFDdEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsaUJBQXFDLEVBQUUsV0FBa0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUNwRyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQ3pFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF5QixFQUFFLFdBQTZCLEVBQUUsSUFBWTtRQUNoRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLEdBQUcsQ0FBQyxTQUFrQyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUMxRixNQUFNLFlBQVksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25DLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1QixLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sWUFBWSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFZO1FBQ3pCLE9BQU8sbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxVQUFVLENBQUMsQ0FBUyxFQUFFLENBQVMsSUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztrSUFwRGpFLHVCQUF1QjtzSUFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdG1sVGVtcGxhdGVzSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3V0aWwvaGVscGVycy9odG1sLXRlbXBsYXRlcy5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbWVudFNldFJlbmRlclNlcnZpY2Uge1xuXG4gIHJlZHJhd0NvbXBvbmVudHMoY29tbWVudENvbXBvbmVudHM6IENvbW1lbnRDb21wb25lbnRbXSwgcGFnZUhlaWdodHM6IGFueVtdLCByb3RhdGU6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgbGV0IHByZXZDb21tZW50OiBDb21tZW50Q29tcG9uZW50O1xuICAgIHRoaXMuc29ydENvbXBvbmVudHMoY29tbWVudENvbXBvbmVudHMsIHBhZ2VIZWlnaHRzLCByb3RhdGUsIHpvb20pLmZvckVhY2goKGNvbW1lbnQ6IENvbW1lbnRDb21wb25lbnQpID0+IHtcbiAgICAgIHRoaXMuYWRqdXN0SWZPdmVybGFwcGluZyhjb21tZW50LCBwcmV2Q29tbWVudCwgem9vbSk7XG4gICAgICBwcmV2Q29tbWVudCA9IGNvbW1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBzb3J0Q29tcG9uZW50cyhjb21tZW50Q29tcG9uZW50czogQ29tbWVudENvbXBvbmVudFtdLCBwYWdlSGVpZ2h0czogYW55W10sIHJvdGF0ZTogbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcbiAgICByZXR1cm4gY29tbWVudENvbXBvbmVudHMuc29ydCgoYTogQ29tbWVudENvbXBvbmVudCwgYjogQ29tbWVudENvbXBvbmVudCkgPT4ge1xuICAgICAgYS5yZWN0VG9wID0gdGhpcy50b3AoYS5fcmVjdGFuZ2xlLCBwYWdlSGVpZ2h0c1thLnBhZ2UgLSAxXSwgcm90YXRlLCB6b29tKTtcbiAgICAgIGIucmVjdFRvcCA9IHRoaXMudG9wKGIuX3JlY3RhbmdsZSwgcGFnZUhlaWdodHNbYi5wYWdlIC0gMV0sIHJvdGF0ZSwgem9vbSk7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU29ydChhLCBiKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0SWZPdmVybGFwcGluZyhjb21tZW50OiBDb21tZW50Q29tcG9uZW50LCBwcmV2Q29tbWVudDogQ29tbWVudENvbXBvbmVudCwgem9vbTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHByZXZDb21tZW50KSB7XG4gICAgICBjb25zdCBlbmRPZlByZXZDb21tZW50ID0gcHJldkNvbW1lbnQuY29tbWVudFRvcCArIHRoaXMuaGVpZ2h0KHByZXZDb21tZW50KTtcbiAgICAgIGlmIChjb21tZW50LmNvbW1lbnRUb3AgPD0gZW5kT2ZQcmV2Q29tbWVudCkge1xuICAgICAgICBjb21tZW50LnJlY3RUb3AgPSAoZW5kT2ZQcmV2Q29tbWVudCAtIGNvbW1lbnQudG90YWxQcmV2UGFnZXNIZWlnaHQpIC8gem9vbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTb3J0KGE6IENvbW1lbnRDb21wb25lbnQsIGI6IENvbW1lbnRDb21wb25lbnQpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLm9uU2FtZUxpbmUoYSwgYikpIHtcbiAgICAgIHJldHVybiBhLnJlY3RMZWZ0ID49IGIucmVjdExlZnQgPyAxIDogLTE7XG4gICAgfVxuICAgIHJldHVybiBhLmNvbW1lbnRUb3AgPj0gYi5jb21tZW50VG9wID8gMSA6IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNhbWVMaW5lKGE6IENvbW1lbnRDb21wb25lbnQsIGI6IENvbW1lbnRDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaWZmZXJlbmNlKGEuY29tbWVudFRvcCwgYi5jb21tZW50VG9wKSA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgdG9wKHJlY3RhbmdsZTogeyB4LCB5LCBoZWlnaHQsIHdpZHRoIH0sIGhlaWdodDogbnVtYmVyLCByb3RhdGU6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgY29uc3QgYWN0dWFsSGVpZ2h0ID0gaGVpZ2h0IC8gem9vbTtcbiAgICBzd2l0Y2ggKHJvdGF0ZSkge1xuICAgICAgY2FzZSA5MDogcmV0dXJuIHJlY3RhbmdsZS54O1xuICAgICAgY2FzZSAxODA6IHJldHVybiBhY3R1YWxIZWlnaHQgLSAocmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICAgIGNhc2UgMjcwOiByZXR1cm4gYWN0dWFsSGVpZ2h0IC0gKHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoKTtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiByZWN0YW5nbGUueTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhlaWdodChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gSHRtbFRlbXBsYXRlc0hlbHBlci5nZXRBZGp1c3RlZEJvdW5kaW5nUmVjdChlbGVtZW50LmZvcm0ubmF0aXZlRWxlbWVudCk/LmhlaWdodCB8IDA7XG4gIH1cblxuICBwcml2YXRlIGRpZmZlcmVuY2UoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIgeyByZXR1cm4gTWF0aC5hYnMoYSAtIGIpOyB9XG59XG4iXX0=