@hmcts/media-viewer
Version:
54 lines • 8.9 kB
JavaScript
import { Injectable } from '@angular/core';
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 element.form.nativeElement.getBoundingClientRect().height;
}
difference(a, b) { return Math.abs(a - b); }
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentSetRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentSetRenderService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentSetRenderService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZXQtcmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LXNldC1yZW5kZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLGdCQUFnQixDQUFDLGlCQUFxQyxFQUFFLFdBQWtCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDdEcsSUFBSSxXQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUF5QixFQUFFLEVBQUU7WUFDdEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsaUJBQXFDLEVBQUUsV0FBa0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUNwRyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQ3pFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF5QixFQUFFLFdBQTZCLEVBQUUsSUFBWTtRQUNoRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFtQixFQUFFLENBQW1CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLEdBQUcsQ0FBQyxTQUFrQyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUMxRixNQUFNLFlBQVksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25DLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1QixLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sWUFBWSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakUsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFZO1FBQ3pCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDbkUsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxJQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2tJQXBEakUsdUJBQXVCO3NJQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21tZW50L2NvbW1lbnQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbW1lbnRTZXRSZW5kZXJTZXJ2aWNlIHtcblxuICByZWRyYXdDb21wb25lbnRzKGNvbW1lbnRDb21wb25lbnRzOiBDb21tZW50Q29tcG9uZW50W10sIHBhZ2VIZWlnaHRzOiBhbnlbXSwgcm90YXRlOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIGxldCBwcmV2Q29tbWVudDogQ29tbWVudENvbXBvbmVudDtcbiAgICB0aGlzLnNvcnRDb21wb25lbnRzKGNvbW1lbnRDb21wb25lbnRzLCBwYWdlSGVpZ2h0cywgcm90YXRlLCB6b29tKS5mb3JFYWNoKChjb21tZW50OiBDb21tZW50Q29tcG9uZW50KSA9PiB7XG4gICAgICB0aGlzLmFkanVzdElmT3ZlcmxhcHBpbmcoY29tbWVudCwgcHJldkNvbW1lbnQsIHpvb20pO1xuICAgICAgcHJldkNvbW1lbnQgPSBjb21tZW50O1xuICAgIH0pO1xuICB9XG5cbiAgc29ydENvbXBvbmVudHMoY29tbWVudENvbXBvbmVudHM6IENvbW1lbnRDb21wb25lbnRbXSwgcGFnZUhlaWdodHM6IGFueVtdLCByb3RhdGU6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbW1lbnRDb21wb25lbnRzLnNvcnQoKGE6IENvbW1lbnRDb21wb25lbnQsIGI6IENvbW1lbnRDb21wb25lbnQpID0+IHtcbiAgICAgIGEucmVjdFRvcCA9IHRoaXMudG9wKGEuX3JlY3RhbmdsZSwgcGFnZUhlaWdodHNbYS5wYWdlIC0gMV0sIHJvdGF0ZSwgem9vbSk7XG4gICAgICBiLnJlY3RUb3AgPSB0aGlzLnRvcChiLl9yZWN0YW5nbGUsIHBhZ2VIZWlnaHRzW2IucGFnZSAtIDFdLCByb3RhdGUsIHpvb20pO1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NvcnQoYSwgYik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdElmT3ZlcmxhcHBpbmcoY29tbWVudDogQ29tbWVudENvbXBvbmVudCwgcHJldkNvbW1lbnQ6IENvbW1lbnRDb21wb25lbnQsIHpvb206IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChwcmV2Q29tbWVudCkge1xuICAgICAgY29uc3QgZW5kT2ZQcmV2Q29tbWVudCA9IHByZXZDb21tZW50LmNvbW1lbnRUb3AgKyB0aGlzLmhlaWdodChwcmV2Q29tbWVudCk7XG4gICAgICBpZiAoY29tbWVudC5jb21tZW50VG9wIDw9IGVuZE9mUHJldkNvbW1lbnQpIHtcbiAgICAgICAgY29tbWVudC5yZWN0VG9wID0gKGVuZE9mUHJldkNvbW1lbnQgLSBjb21tZW50LnRvdGFsUHJldlBhZ2VzSGVpZ2h0KSAvIHpvb207XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU29ydChhOiBDb21tZW50Q29tcG9uZW50LCBiOiBDb21tZW50Q29tcG9uZW50KTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5vblNhbWVMaW5lKGEsIGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWN0TGVmdCA+PSBiLnJlY3RMZWZ0ID8gMSA6IC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5jb21tZW50VG9wID49IGIuY29tbWVudFRvcCA/IDEgOiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgb25TYW1lTGluZShhOiBDb21tZW50Q29tcG9uZW50LCBiOiBDb21tZW50Q29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlmZmVyZW5jZShhLmNvbW1lbnRUb3AsIGIuY29tbWVudFRvcCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHRvcChyZWN0YW5nbGU6IHsgeCwgeSwgaGVpZ2h0LCB3aWR0aCB9LCBoZWlnaHQ6IG51bWJlciwgcm90YXRlOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGFjdHVhbEhlaWdodCA9IGhlaWdodCAvIHpvb207XG4gICAgc3dpdGNoIChyb3RhdGUpIHtcbiAgICAgIGNhc2UgOTA6IHJldHVybiByZWN0YW5nbGUueDtcbiAgICAgIGNhc2UgMTgwOiByZXR1cm4gYWN0dWFsSGVpZ2h0IC0gKHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgICBjYXNlIDI3MDogcmV0dXJuIGFjdHVhbEhlaWdodCAtIChyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gcmVjdGFuZ2xlLnk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoZWlnaHQoZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZm9ybS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgZGlmZmVyZW5jZShhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7IHJldHVybiBNYXRoLmFicyhhIC0gYik7IH1cbn1cbiJdfQ==