UNPKG

@ngx-extensions/screenfull

Version:
78 lines 7.34 kB
import { Injectable } from '@angular/core'; import { distinctUntilChanged, startWith } from 'rxjs/operators'; import { Subject } from 'rxjs'; import screenfull from 'screenfull'; /** * Tracks the state of the fullscreen mode and allows interaction with its API */ var ScreenfullService = /** @class */ (function () { /** * Creates a new instance */ function ScreenfullService() { this.fullScreenSub = new Subject(); this._registerListener(); this.fullScreenActive$ = this.fullScreenSub.asObservable().pipe(startWith(this.isFullScreenModeActive), distinctUntilChanged()); } Object.defineProperty(ScreenfullService.prototype, "isFullScreenModeActive", { /** * Gets whether browser fullscreen mode is active or not. */ get: function () { return screenfull ? screenfull.isFullscreen : false; }, enumerable: true, configurable: true }); ScreenfullService.prototype.ngOnDestroy = function () { this._removeListener(); this.fullScreenSub.complete(); }; ScreenfullService.prototype.request = function () { if (screenfull) { if (screenfull.enabled) { screenfull.request(); } } }; ScreenfullService.prototype.exit = function () { if (screenfull) { if (screenfull.enabled) { screenfull.exit(); } } }; /** * Toggles the fullscreen mode of the browser */ ScreenfullService.prototype.toggle = function () { if (screenfull) { if (screenfull.enabled) { screenfull.toggle(); } } }; ScreenfullService.prototype._removeListener = function () { if (screenfull) { screenfull.off('change', function () { }); } }; ScreenfullService.prototype._registerListener = function () { var _this = this; if (screenfull) { screenfull.on('change', function (event) { _this._emitCurrent(); }); } }; ScreenfullService.prototype._emitCurrent = function () { this.fullScreenSub.next(this.isFullScreenModeActive); }; ScreenfullService.decorators = [ { type: Injectable } ]; ScreenfullService.ctorParameters = function () { return []; }; return ScreenfullService; }()); export { ScreenfullService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuZnVsbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGwvIiwic291cmNlcyI6WyJsaWIvc2NyZWVuZnVsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBRXBDOztHQUVHO0FBQ0g7SUFZRTs7T0FFRztJQUNIO1FBYmlCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQWN0RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFDdEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFiRCxzQkFBSSxxREFBc0I7UUFIMUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsQ0FBQzs7O09BQUE7SUFhRCx1Q0FBVyxHQUFYO1FBQ0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELG1DQUFPLEdBQVA7UUFDRSxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtnQkFDdEIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN0QixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDbkI7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGtDQUFNLEdBQU47UUFDRSxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtnQkFDdEIsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sMkNBQWUsR0FBdkI7UUFDRSxJQUFJLFVBQVUsRUFBRTtZQUNkLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGNBQU8sQ0FBQyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU8sNkNBQWlCLEdBQXpCO1FBQUEsaUJBTUM7UUFMQyxJQUFJLFVBQVUsRUFBRTtZQUNkLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQUEsS0FBSztnQkFDM0IsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sd0NBQVksR0FBcEI7UUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN2RCxDQUFDOztnQkF2RUYsVUFBVTs7O0lBd0VYLHdCQUFDO0NBQUEsQUF4RUQsSUF3RUM7U0F2RVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHNjcmVlbmZ1bGwgZnJvbSAnc2NyZWVuZnVsbCc7XHJcblxyXG4vKipcclxuICogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgZnVsbHNjcmVlbiBtb2RlIGFuZCBhbGxvd3MgaW50ZXJhY3Rpb24gd2l0aCBpdHMgQVBJXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5mdWxsU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBmdWxsU2NyZWVuU3ViID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICByZWFkb25seSBmdWxsU2NyZWVuQWN0aXZlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB3aGV0aGVyIGJyb3dzZXIgZnVsbHNjcmVlbiBtb2RlIGlzIGFjdGl2ZSBvciBub3QuXHJcbiAgICovXHJcbiAgZ2V0IGlzRnVsbFNjcmVlbk1vZGVBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc2NyZWVuZnVsbCA/IHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9yZWdpc3Rlckxpc3RlbmVyKCk7XHJcbiAgICB0aGlzLmZ1bGxTY3JlZW5BY3RpdmUkID0gdGhpcy5mdWxsU2NyZWVuU3ViLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmlzRnVsbFNjcmVlbk1vZGVBY3RpdmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9yZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgdGhpcy5mdWxsU2NyZWVuU3ViLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICByZXF1ZXN0KCkge1xyXG4gICAgaWYgKHNjcmVlbmZ1bGwpIHtcclxuICAgICAgaWYgKHNjcmVlbmZ1bGwuZW5hYmxlZCkge1xyXG4gICAgICAgIHNjcmVlbmZ1bGwucmVxdWVzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGl0KCkge1xyXG4gICAgaWYgKHNjcmVlbmZ1bGwpIHtcclxuICAgICAgaWYgKHNjcmVlbmZ1bGwuZW5hYmxlZCkge1xyXG4gICAgICAgIHNjcmVlbmZ1bGwuZXhpdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSBmdWxsc2NyZWVuIG1vZGUgb2YgdGhlIGJyb3dzZXJcclxuICAgKi9cclxuICB0b2dnbGUoKSB7XHJcbiAgICBpZiAoc2NyZWVuZnVsbCkge1xyXG4gICAgICBpZiAoc2NyZWVuZnVsbC5lbmFibGVkKSB7XHJcbiAgICAgICAgc2NyZWVuZnVsbC50b2dnbGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlTGlzdGVuZXIoKSB7XHJcbiAgICBpZiAoc2NyZWVuZnVsbCkge1xyXG4gICAgICBzY3JlZW5mdWxsLm9mZignY2hhbmdlJywgKCkgPT4ge30pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVnaXN0ZXJMaXN0ZW5lcigpIHtcclxuICAgIGlmIChzY3JlZW5mdWxsKSB7XHJcbiAgICAgIHNjcmVlbmZ1bGwub24oJ2NoYW5nZScsIGV2ZW50ID0+IHtcclxuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VtaXRDdXJyZW50KCkge1xyXG4gICAgdGhpcy5mdWxsU2NyZWVuU3ViLm5leHQodGhpcy5pc0Z1bGxTY3JlZW5Nb2RlQWN0aXZlKTtcclxuICB9XHJcbn1cclxuIl19