@ngx-extensions/screenfull
Version: 
Wrapper module for screenfull
78 lines • 7.34 kB
JavaScript
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