UNPKG

@hmcts/annotation-ui-lib

Version:

PDF Viewer and ability to highlight text with and comment tracking

158 lines 14.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export class Utils { /** * @param {?} rectangles * @return {?} */ buildLineRectangle(rectangles) { this.sortByY(rectangles); /** @type {?} */ const lowestY = rectangles[0].y; /** @type {?} */ const lineHeight = rectangles[0].height; this.sortByX(rectangles); /** @type {?} */ const lowestX = rectangles[0].x; /** @type {?} */ const upperX = rectangles[rectangles.length - 1].x; /** @type {?} */ const width = rectangles[rectangles.length - 1].width; /** @type {?} */ const rectangle = { y: lowestY, x: lowestX, width: (upperX - lowestX) + width, height: lineHeight }; return rectangle; } /** * @param {?} annotationRectangles * @param {?} generatedRectangles * @return {?} */ generateRectanglePerLine(annotationRectangles, generatedRectangles) { this.sortByY(annotationRectangles); /** @type {?} */ const highestY = annotationRectangles[annotationRectangles.length - 1].y; /** @type {?} */ const lowestY = annotationRectangles[0].y; /** @type {?} */ const lineHeight = this.getAnnotationLineHeight(annotationRectangles); if (this.difference(highestY, lowestY) > lineHeight) { /** @type {?} */ const currentLineRectangles = annotationRectangles.filter(rectangle => rectangle.y <= (lowestY + lineHeight)); /** @type {?} */ const nextLineRectangles = annotationRectangles.filter(rectangle => rectangle.y > (lowestY + lineHeight)); generatedRectangles.push(this.buildLineRectangle(currentLineRectangles)); this.generateRectanglePerLine(nextLineRectangles, generatedRectangles); } else { generatedRectangles.push(this.buildLineRectangle(annotationRectangles)); } } /** * @param {?} rectangles * @return {?} */ getAnnotationLineHeight(rectangles) { return rectangles[0].height; } /** * @param {?} rectangles * @param {?=} lowest * @return {?} */ sortByY(rectangles, lowest = true) { rectangles.sort(function (a, b) { /** @type {?} */ const keyA = a.y; /** @type {?} */ const keyB = b.y; if (keyA < keyB) { return lowest ? -1 : 1; } if (keyA > keyB) { return lowest ? 1 : -1; } return 0; }); } /** * @param {?} rectangles * @param {?=} lowest * @return {?} */ sortByX(rectangles, lowest = true) { rectangles.sort(function (a, b) { /** @type {?} */ const keyA = a.x; /** @type {?} */ const keyB = b.x; if (keyA < keyB) { return lowest ? -1 : 1; } if (keyA > keyB) { return lowest ? 1 : -1; } return 0; }); } /** * @param {?} a * @param {?} b * @return {?} */ sortByLinePosition(a, b) { this.sortByX(a); this.sortByX(b); return (a[0].x > b[0].x) ? 1 : -1; } /** * @param {?} a * @param {?} b * @return {?} */ difference(a, b) { return Math.abs(a - b); } /** * @param {?} event * @return {?} */ clickIsHighlight(event) { /** @type {?} */ const target = (/** @type {?} */ (event.target)); /** @type {?} */ const isHighlight = target.firstElementChild; if (isHighlight == null) { return false; } else if (isHighlight.id.includes('pdf-annotate-screenreader')) { return true; } else { return false; } } /** * @param {?} event * @return {?} */ getClickedPage(event) { /** @type {?} */ let currentParent = event.target; for (let step = 0; step < 5; step++) { if (currentParent.parentNode != null) { /** @type {?} */ const pageNumber = currentParent.parentNode.getAttribute('data-page-number'); if (pageNumber != null) { return parseInt(pageNumber, null); } currentParent = currentParent.parentNode; } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvYW5ub3RhdGlvbi11aS1saWIvIiwic291cmNlcyI6WyJsaWIvZGF0YS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTTs7Ozs7SUFFRixrQkFBa0IsQ0FBQyxVQUFVO1FBRXpCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7O2NBQ25CLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Y0FDekIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBRXZDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7O2NBQ25CLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Y0FDekIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7O2NBQzVDLEtBQUssR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLOztjQUUvQyxTQUFTLEdBQUc7WUFDZCxDQUFDLEVBQUUsT0FBTztZQUNWLENBQUMsRUFBRSxPQUFPO1lBQ1YsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEtBQUs7WUFDakMsTUFBTSxFQUFFLFVBQVU7U0FDckI7UUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3JCLENBQUM7Ozs7OztJQUVELHdCQUF3QixDQUFDLG9CQUFpQyxFQUFFLG1CQUFnQztRQUV4RixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7O2NBQzdCLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Y0FDbEUsT0FBTyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENB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QUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDckIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7Z0JBQ0QsYUFBYSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDN0MsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuL2Fubm90YXRpb24tc2V0Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcblxuICAgIGJ1aWxkTGluZVJlY3RhbmdsZShyZWN0YW5nbGVzKSB7XG5cbiAgICAgICAgdGhpcy5zb3J0QnlZKHJlY3RhbmdsZXMpO1xuICAgICAgICBjb25zdCBsb3dlc3RZID0gcmVjdGFuZ2xlc1swXS55O1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gcmVjdGFuZ2xlc1swXS5oZWlnaHQ7XG5cbiAgICAgICAgdGhpcy5zb3J0QnlYKHJlY3RhbmdsZXMpO1xuICAgICAgICBjb25zdCBsb3dlc3RYID0gcmVjdGFuZ2xlc1swXS54O1xuICAgICAgICBjb25zdCB1cHBlclggPSByZWN0YW5nbGVzW3JlY3RhbmdsZXMubGVuZ3RoIC0gMV0ueDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSByZWN0YW5nbGVzW3JlY3RhbmdsZXMubGVuZ3RoIC0gMV0ud2lkdGg7XG5cbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgeTogbG93ZXN0WSxcbiAgICAgICAgICAgIHg6IGxvd2VzdFgsXG4gICAgICAgICAgICB3aWR0aDogKHVwcGVyWCAtIGxvd2VzdFgpICsgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGxpbmVIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlY3RhbmdsZTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVJlY3RhbmdsZVBlckxpbmUoYW5ub3RhdGlvblJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdLCBnZW5lcmF0ZWRSZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSkge1xuXG4gICAgICAgIHRoaXMuc29ydEJ5WShhbm5vdGF0aW9uUmVjdGFuZ2xlcyk7XG4gICAgICAgIGNvbnN0IGhpZ2hlc3RZID0gYW5ub3RhdGlvblJlY3RhbmdsZXNbYW5ub3RhdGlvblJlY3RhbmdsZXMubGVuZ3RoIC0gMV0ueTtcbiAgICAgICAgY29uc3QgbG93ZXN0WSA9IGFubm90YXRpb25SZWN0YW5nbGVzWzBdLnk7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdldEFubm90YXRpb25MaW5lSGVpZ2h0KGFubm90YXRpb25SZWN0YW5nbGVzKTtcblxuICAgICAgICBpZiAodGhpcy5kaWZmZXJlbmNlKGhpZ2hlc3RZLCBsb3dlc3RZKSA+IGxpbmVIZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lUmVjdGFuZ2xlcyA9IGFubm90YXRpb25SZWN0YW5nbGVzLmZpbHRlcihyZWN0YW5nbGUgPT4gcmVjdGFuZ2xlLnkgPD0gKGxvd2VzdFkgKyBsaW5lSGVpZ2h0KSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0TGluZVJlY3RhbmdsZXMgPSBhbm5vdGF0aW9uUmVjdGFuZ2xlcy5maWx0ZXIocmVjdGFuZ2xlID0+IHJlY3RhbmdsZS55ID4gKGxvd2VzdFkgKyBsaW5lSGVpZ2h0KSk7XG4gICAgICAgICAgICBnZW5lcmF0ZWRSZWN0YW5nbGVzLnB1c2godGhpcy5idWlsZExpbmVSZWN0YW5nbGUoY3VycmVudExpbmVSZWN0YW5nbGVzKSk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlUmVjdGFuZ2xlUGVyTGluZShuZXh0TGluZVJlY3RhbmdsZXMsIGdlbmVyYXRlZFJlY3RhbmdsZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2VuZXJhdGVkUmVjdGFuZ2xlcy5wdXNoKHRoaXMuYnVpbGRMaW5lUmVjdGFuZ2xlKGFubm90YXRpb25SZWN0YW5nbGVzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBbm5vdGF0aW9uTGluZUhlaWdodChyZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiByZWN0YW5nbGVzWzBdLmhlaWdodDtcbiAgICB9XG5cbiAgICBzb3J0QnlZKHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdLCBsb3dlc3QgPSB0cnVlKSB7XG4gICAgICAgIHJlY3RhbmdsZXMuc29ydChcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5QSA9IGEueSxcbiAgICAgICAgICAgICAgICAgICAga2V5QiA9IGIueTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5QSA8IGtleUIpIHsgcmV0dXJuIGxvd2VzdCA/IC0xIDogMTsgfVxuICAgICAgICAgICAgICAgIGlmIChrZXlBID4ga2V5QikgeyByZXR1cm4gbG93ZXN0ID8gMSA6IC0xOyB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzb3J0QnlYKHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdLCBsb3dlc3QgPSB0cnVlKSB7XG4gICAgICAgIHJlY3RhbmdsZXMuc29ydChcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5QSA9IGEueCxcbiAgICAgICAgICAgICAgICAgICAga2V5QiA9IGIueDtcbiAgICAgICAgICAgICAgICBpZiAoa2V5QSA8IGtleUIpIHsgcmV0dXJuIGxvd2VzdCA/IC0xIDogMTsgfVxuICAgICAgICAgICAgICAgIGlmIChrZXlBID4ga2V5QikgeyByZXR1cm4gbG93ZXN0ID8gMSA6IC0xOyB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzb3J0QnlMaW5lUG9zaXRpb24oYTogUmVjdGFuZ2xlW10sIGI6IFJlY3RhbmdsZVtdKTogbnVtYmVyIHtcbiAgICAgICAgdGhpcy5zb3J0QnlYKGEpO1xuICAgICAgICB0aGlzLnNvcnRCeVgoYik7XG4gICAgICAgIHJldHVybiAoYVswXS54ID4gYlswXS54KSA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBkaWZmZXJlbmNlKGE6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHsgcmV0dXJuIE1hdGguYWJzKGEgLSBiKTsgfVxuXG4gICAgY2xpY2tJc0hpZ2hsaWdodChldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSA8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBpc0hpZ2hsaWdodCA9IHRhcmdldC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgaWYgKGlzSGlnaGxpZ2h0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hpZ2hsaWdodC5pZC5pbmNsdWRlcygncGRmLWFubm90YXRlLXNjcmVlbnJlYWRlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENsaWNrZWRQYWdlKGV2ZW50OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgY3VycmVudFBhcmVudCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCA1OyBzdGVwKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50LnBhcmVudE5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBjdXJyZW50UGFyZW50LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBhZ2UtbnVtYmVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VOdW1iZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQocGFnZU51bWJlciwgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50UGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=