@hmcts/media-viewer
Version:
65 lines • 8.39 kB
JavaScript
import { Injectable } from '@angular/core';
import { select } from '@ngrx/store';
import { distinctUntilChanged, take } from 'rxjs/operators';
import * as fromDocSelectors from '../store/selectors/document.selectors';
import * as i0 from "@angular/core";
import * as i1 from "../toolbar/toolbar-event.service";
import * as i2 from "../viewers/viewer-event.service";
import * as i3 from "./icp-update.service";
import * as i4 from "@ngrx/store";
export class IcpFollowerService {
constructor(toolbarEvents, viewerEvents, socketService, store) {
this.toolbarEvents = toolbarEvents;
this.viewerEvents = viewerEvents;
this.socketService = socketService;
this.store = store;
this.previousRotation = null;
}
update(isFollower) {
if (isFollower) {
this.subscribe();
}
else {
this.unsubscribe();
}
}
subscribe() {
if (!this.$subscription) {
this.$subscription = this.socketService.screenUpdated()
.subscribe(screen => this.followScreenUpdate(screen));
}
}
unsubscribe() {
if (this.$subscription) {
this.$subscription.unsubscribe();
this.$subscription = undefined;
}
}
followScreenUpdate({ pdfPosition }) {
if (pdfPosition) {
this.viewerEvents.goToDestinationICP([
pdfPosition.pageNumber - 1,
{ 'name': 'XYZ' },
pdfPosition.left,
pdfPosition.top
]);
}
this.store.pipe(select(fromDocSelectors.getPdfPosition), take(1), distinctUntilChanged(undefined, a => a.rotation))
.subscribe(position => {
if (this.previousRotation === pdfPosition.rotation) {
return;
}
const rotationDelta = (pdfPosition.rotation - position.rotation) % 360;
if (rotationDelta && rotationDelta !== 0) {
this.toolbarEvents.rotate(rotationDelta);
}
});
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IcpFollowerService, deps: [{ token: i1.ToolbarEventService }, { token: i2.ViewerEventService }, { token: i3.IcpUpdateService }, { token: i4.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IcpFollowerService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IcpFollowerService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.ViewerEventService }, { type: i3.IcpUpdateService }, { type: i4.Store }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLWZvbGxvd2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9pY3AvaWNwLWZvbGxvd2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBSTVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUcxRSxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCLFlBQTZCLGFBQWtDLEVBQzVDLFlBQWdDLEVBQ2hDLGFBQStCLEVBQ3hDLEtBQXNCO1FBSEgsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDeEMsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFOeEIscUJBQWdCLEdBQWdCLElBQUksQ0FBQztJQU1ULENBQUM7SUFHckMsTUFBTSxDQUFDLFVBQW1CO1FBQ3hCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFO2lCQUNwRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBRSxXQUFXLEVBQUU7UUFDaEMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO2dCQUNuQyxXQUFXLENBQUMsVUFBVSxHQUFHLENBQUM7Z0JBQzFCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDakIsV0FBVyxDQUFDLElBQUk7Z0JBQ2hCLFdBQVcsQ0FBQyxHQUFHO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN2RSxJQUFJLGFBQWEsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7a0lBeERVLGtCQUFrQjtzSUFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWNwVXBkYXRlU2VydmljZSB9IGZyb20gJy4vaWNwLXVwZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdlckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3ZpZXdlcnMvdmlld2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJY3BTdGF0ZSwgSWNwU2Vzc2lvbiB9IGZyb20gJy4vaWNwLmludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgZnJvbURvY1NlbGVjdG9ycyBmcm9tICcuLi9zdG9yZS9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJY3BGb2xsb3dlclNlcnZpY2Uge1xuXG4gIHNlc3Npb246IEljcFNlc3Npb247XG4gIHByaXZhdGUgcHJldmlvdXNSb3RhdGlvbjogbnVtYmVyfG51bGwgPSBudWxsO1xuICAkc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld2VyRXZlbnRzOiBWaWV3ZXJFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzb2NrZXRTZXJ2aWNlOiBJY3BVcGRhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEljcFN0YXRlPikgeyB9XG5cblxuICB1cGRhdGUoaXNGb2xsb3dlcjogYm9vbGVhbikge1xuICAgIGlmIChpc0ZvbGxvd2VyKSB7XG4gICAgICB0aGlzLnN1YnNjcmliZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlKCkge1xuICAgIGlmICghdGhpcy4kc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLiRzdWJzY3JpcHRpb24gPSB0aGlzLnNvY2tldFNlcnZpY2Uuc2NyZWVuVXBkYXRlZCgpXG4gICAgICAgIC5zdWJzY3JpYmUoc2NyZWVuID0+IHRoaXMuZm9sbG93U2NyZWVuVXBkYXRlKHNjcmVlbikpO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCkge1xuICAgIGlmICh0aGlzLiRzdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuJHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy4kc3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGZvbGxvd1NjcmVlblVwZGF0ZSh7IHBkZlBvc2l0aW9uIH0pIHtcbiAgICBpZiAocGRmUG9zaXRpb24pIHtcbiAgICAgIHRoaXMudmlld2VyRXZlbnRzLmdvVG9EZXN0aW5hdGlvbklDUChbXG4gICAgICAgIHBkZlBvc2l0aW9uLnBhZ2VOdW1iZXIgLSAxLFxuICAgICAgICB7ICduYW1lJzogJ1hZWicgfSxcbiAgICAgICAgcGRmUG9zaXRpb24ubGVmdCxcbiAgICAgICAgcGRmUG9zaXRpb24udG9wXG4gICAgICBdKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KGZyb21Eb2NTZWxlY3RvcnMuZ2V0UGRmUG9zaXRpb24pLCBcbiAgICAgIHRha2UoMSksIFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodW5kZWZpbmVkLCBhID0+IGEucm90YXRpb24pKVxuICAgICAgLnN1YnNjcmliZShwb3NpdGlvbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzUm90YXRpb24gPT09IHBkZlBvc2l0aW9uLnJvdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdGF0aW9uRGVsdGEgPSAocGRmUG9zaXRpb24ucm90YXRpb24gLSBwb3NpdGlvbi5yb3RhdGlvbikgJSAzNjA7XG4gICAgICAgIGlmIChyb3RhdGlvbkRlbHRhICYmIHJvdGF0aW9uRGVsdGEgIT09IDApIHtcbiAgICAgICAgICB0aGlzLnRvb2xiYXJFdmVudHMucm90YXRlKHJvdGF0aW9uRGVsdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19