1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/frontend/app/ui/gallery/fullscreen.service.ts

58 lines
1.5 KiB
TypeScript
Raw Normal View History

2018-03-31 03:30:30 +08:00
import {Injectable} from '@angular/core';
import {Event} from '../../../../common/event/Event';
2016-07-06 18:53:49 +08:00
2018-11-29 06:49:33 +08:00
declare const document: {
fullscreenElement: any;
mozFullScreenElement: any;
webkitFullscreenElement: any;
exitFullscreen: () => void;
mozCancelFullScreen: () => void;
webkitExitFullscreen: () => void;
};
2016-07-06 18:53:49 +08:00
@Injectable()
export class FullScreenService {
OnFullScreenChange = new Event<boolean>();
public isFullScreenEnabled(): boolean {
return !!(document['fullscreenElement'] ||
document['mozFullScreenElement'] ||
document['webkitFullscreenElement']);
}
public showFullScreen(element: Element) {
if (this.isFullScreenEnabled()) {
return;
}
if (element.requestFullscreen) {
element.requestFullscreen().catch(console.error);
} else if ((<any>element).mozRequestFullScreen) {
(<any>element).mozRequestFullScreen();
} else if ((<any>element).webkitRequestFullscreen) {
(<any>element).webkitRequestFullscreen();
} else if ((<any>element).msRequestFullscreen) {
(<any>element).msRequestFullscreen();
2016-07-06 18:53:49 +08:00
}
this.OnFullScreenChange.trigger(true);
}
2016-07-06 18:53:49 +08:00
public exitFullScreen() {
if (!this.isFullScreenEnabled()) {
return;
2016-07-06 18:53:49 +08:00
}
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document['mozCancelFullScreen']) {
document['mozCancelFullScreen']();
} else if (document['webkitExitFullscreen']) {
document['webkitExitFullscreen']();
2016-07-06 18:53:49 +08:00
}
this.OnFullScreenChange.trigger(false);
}
2016-07-06 18:53:49 +08:00
}