@hmcts/media-viewer
Version:
61 lines • 10.3 kB
JavaScript
import { Directive, HostListener } from '@angular/core';
import * as fromDocumentActions from '../../store/actions/document.actions';
import { select } from '@ngrx/store';
import * as fromDocuments from '../../store/selectors/document.selectors';
import { distinctUntilChanged, filter, take } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/store";
import * as i2 from "../../toolbar/toolbar-button-visibility.service";
import * as i3 from "../../toolbar/toolbar-event.service";
export class RotationPersistDirective {
constructor(el, store, toolbarButtons, toolbarEvents) {
this.el = el;
this.store = store;
this.toolbarButtons = toolbarButtons;
this.toolbarEvents = toolbarEvents;
this.rotation = 0;
this.savedRotation = 0;
}
ngOnInit() {
this.$subscriptions = this.toolbarEvents.rotateSubject.pipe(distinctUntilChanged()).subscribe(rotation => this.onRotate(rotation));
this.$subscriptions.add(this.toolbarEvents.saveRotationSubject.subscribe(() => this.saveRotation()));
this.$subscriptions.add(this.store.pipe(select(fromDocuments.getRotation)).subscribe(rotation => this.savedRotation = rotation));
this.$subscriptions.add(this.store.pipe(select(fromDocuments.getDocumentId)).subscribe(documentId => this.documentId = documentId));
}
ngOnDestroy() {
this.$subscriptions.unsubscribe();
}
onMediaLoad(status) {
this.rotation = 0;
this.store.dispatch(new fromDocumentActions.LoadRotation(this.documentId));
this.store.pipe(select(fromDocuments.rotationLoaded), filter(value => !!value), take(1))
.subscribe(() => {
if (this.savedRotation) {
this.toolbarEvents.rotateSubject.next(this.savedRotation);
}
});
}
onRotate(rotation) {
this.rotation = (this.rotation + rotation) % 360;
this.toolbarButtons.showSaveRotationButton = this.savedRotation !== this.rotation;
}
saveRotation() {
const payload = {
documentId: this.documentId,
rotationAngle: this.rotation
};
this.store.dispatch(new fromDocumentActions.SaveRotation(payload));
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RotationPersistDirective, deps: [{ token: i0.ElementRef }, { token: i1.Store }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Directive }); }
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RotationPersistDirective, selector: "[mvRotationPersist]", host: { listeners: { "mediaLoadStatus": "onMediaLoad($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RotationPersistDirective, decorators: [{
type: Directive,
args: [{
selector: '[mvRotationPersist]'
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Store }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.ToolbarEventService }], propDecorators: { onMediaLoad: [{
type: HostListener,
args: ['mediaLoadStatus', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRpb24tcGVyc2lzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi92aWV3ZXJzL3JvdGF0aW9uLXBlcnNpc3Qvcm90YXRpb24tcGVyc2lzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sMENBQTBDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFZcEUsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUFvQixFQUFjLEVBQ3hCLEtBQXFDLEVBQzdCLGNBQThDLEVBQ3RELGFBQWtDO1FBSHhCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQ3RELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVI1QyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxDQUFDLENBQUM7SUFRbEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRW5JLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3RJLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBR0QsV0FBVyxDQUFDLE1BQW9CO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQ2xELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxRQUFRLENBQUMsUUFBZ0I7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3BGLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sT0FBTyxHQUFhO1lBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDN0IsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztrSUFuRFUsd0JBQXdCO3NIQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7a0xBNEJDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZnJvbURvY3VtZW50QWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudHMgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2RvY3VtZW50LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm90YXRpb24gfSBmcm9tICcuL3JvdGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZSB9IGZyb20gJy4uL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi90b29sYmFyL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXZSb3RhdGlvblBlcnNpc3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBSb3RhdGlvblBlcnNpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICByb3RhdGlvbiA9IDA7XG4gIHNhdmVkUm90YXRpb24gPSAwO1xuXG4gICRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuRG9jdW1lbnRTdGF0ZT4sXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJCdXR0b25zOiBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zID0gdGhpcy50b29sYmFyRXZlbnRzLnJvdGF0ZVN1YmplY3QucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUocm90YXRpb24gPT4gdGhpcy5vblJvdGF0ZShyb3RhdGlvbikpO1xuXG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50b29sYmFyRXZlbnRzLnNhdmVSb3RhdGlvblN1YmplY3Quc3Vic2NyaWJlKCgpID0+IHRoaXMuc2F2ZVJvdGF0aW9uKCkpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Eb2N1bWVudHMuZ2V0Um90YXRpb24pKS5zdWJzY3JpYmUocm90YXRpb24gPT4gdGhpcy5zYXZlZFJvdGF0aW9uID0gcm90YXRpb24pKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Eb2N1bWVudHMuZ2V0RG9jdW1lbnRJZCkpLnN1YnNjcmliZShkb2N1bWVudElkID0+IHRoaXMuZG9jdW1lbnRJZCA9IGRvY3VtZW50SWQpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21lZGlhTG9hZFN0YXR1cycsIFsnJGV2ZW50J10pXG4gIG9uTWVkaWFMb2FkKHN0YXR1czogUmVzcG9uc2VUeXBlKSB7XG4gICAgdGhpcy5yb3RhdGlvbiA9IDA7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbURvY3VtZW50QWN0aW9ucy5Mb2FkUm90YXRpb24odGhpcy5kb2N1bWVudElkKSk7XG4gICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnRzLnJvdGF0aW9uTG9hZGVkKSxcbiAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKSxcbiAgICAgIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2F2ZWRSb3RhdGlvbikge1xuICAgICAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yb3RhdGVTdWJqZWN0Lm5leHQodGhpcy5zYXZlZFJvdGF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uUm90YXRlKHJvdGF0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLnJvdGF0aW9uID0gKHRoaXMucm90YXRpb24gKyByb3RhdGlvbikgJSAzNjA7XG4gICAgdGhpcy50b29sYmFyQnV0dG9ucy5zaG93U2F2ZVJvdGF0aW9uQnV0dG9uID0gdGhpcy5zYXZlZFJvdGF0aW9uICE9PSB0aGlzLnJvdGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUm90YXRpb24oKSB7XG4gICAgY29uc3QgcGF5bG9hZDogUm90YXRpb24gPSB7XG4gICAgICBkb2N1bWVudElkOiB0aGlzLmRvY3VtZW50SWQsXG4gICAgICByb3RhdGlvbkFuZ2xlOiB0aGlzLnJvdGF0aW9uXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tRG9jdW1lbnRBY3Rpb25zLlNhdmVSb3RhdGlvbihwYXlsb2FkKSk7XG4gIH1cbn1cbiJdfQ==