UNPKG

@ngx-extensions/screenfull

Version:
142 lines (134 loc) 12.9 kB
import { Injectable, Directive, HostListener, Optional, SkipSelf, NgModule } 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; }()); /** * Binds a host element´s click to the {@see ScreenfullService} toggle method */ var ToggleFullscreenDirective = /** @class */ (function () { /** * Creates a new instance * @param _screenfullService the screen service singletone instance */ function ToggleFullscreenDirective(_screenfullService) { this._screenfullService = _screenfullService; } /** * Toggles the fullscreen mode */ ToggleFullscreenDirective.prototype.toggle = function () { this._screenfullService.toggle(); }; ToggleFullscreenDirective.decorators = [ { type: Directive, args: [{ selector: '[ngxToggleFullscreen]' },] } ]; ToggleFullscreenDirective.ctorParameters = function () { return [ { type: ScreenfullService } ]; }; ToggleFullscreenDirective.propDecorators = { toggle: [{ type: HostListener, args: ['click',] }] }; return ToggleFullscreenDirective; }()); function SCREEN_SERVICE_FACTORY(parent) { return parent || new ScreenfullService(); } var SCREEN_SERVICE_PROVIDER = { provide: ScreenfullService, deps: [[new Optional(), new SkipSelf(), ScreenfullService]], useFactory: SCREEN_SERVICE_FACTORY }; var NgxScreenfullModule = /** @class */ (function () { function NgxScreenfullModule() { } NgxScreenfullModule.decorators = [ { type: NgModule, args: [{ declarations: [ToggleFullscreenDirective], exports: [ToggleFullscreenDirective], providers: [SCREEN_SERVICE_PROVIDER] },] } ]; return NgxScreenfullModule; }()); /* * Public API Surface of @ngx-extensions/screenfull */ /** * Generated bundle index. Do not edit. */ export { SCREEN_SERVICE_FACTORY as ɵa, SCREEN_SERVICE_PROVIDER as ɵb, NgxScreenfullModule, ScreenfullService, ToggleFullscreenDirective }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWV4dGVuc2lvbnMtc2NyZWVuZnVsbC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGwvbGliL3NjcmVlbmZ1bGwuc2VydmljZS50cyIsIm5nOi8vQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGwvbGliL3RvZ2dsZS1mdWxsc2NyZWVuLmRpcmVjdGl2ZS50cyIsIm5nOi8vQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGwvbGliL3NjcmVlbmZ1bGwtc2VydmljZS5wcm92aWRlci50cyIsIm5nOi8vQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGwvbGliL3NjcmVlbmZ1bGwubW9kdWxlLnRzIiwibmc6Ly9Abmd4LWV4dGVuc2lvbnMvc2NyZWVuZnVsbC9wdWJsaWNfYXBpLnRzIiwibmc6Ly9Abmd4LWV4dGVuc2lvbnMvc2NyZWVuZnVsbC9uZ3gtZXh0ZW5zaW9ucy1zY3JlZW5mdWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBzY3JlZW5mdWxsIGZyb20gJ3NjcmVlbmZ1bGwnO1xyXG5cclxuLyoqXHJcbiAqIFRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIGZ1bGxzY3JlZW4gbW9kZSBhbmQgYWxsb3dzIGludGVyYWN0aW9uIHdpdGggaXRzIEFQSVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2NyZWVuZnVsbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZnVsbFNjcmVlblN1YiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgcmVhZG9ubHkgZnVsbFNjcmVlbkFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgd2hldGhlciBicm93c2VyIGZ1bGxzY3JlZW4gbW9kZSBpcyBhY3RpdmUgb3Igbm90LlxyXG4gICAqL1xyXG4gIGdldCBpc0Z1bGxTY3JlZW5Nb2RlQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHNjcmVlbmZ1bGwgPyBzY3JlZW5mdWxsLmlzRnVsbHNjcmVlbiA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fcmVnaXN0ZXJMaXN0ZW5lcigpO1xyXG4gICAgdGhpcy5mdWxsU2NyZWVuQWN0aXZlJCA9IHRoaXMuZnVsbFNjcmVlblN1Yi5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICBzdGFydFdpdGgodGhpcy5pc0Z1bGxTY3JlZW5Nb2RlQWN0aXZlKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fcmVtb3ZlTGlzdGVuZXIoKTtcclxuICAgIHRoaXMuZnVsbFNjcmVlblN1Yi5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVxdWVzdCgpIHtcclxuICAgIGlmIChzY3JlZW5mdWxsKSB7XHJcbiAgICAgIGlmIChzY3JlZW5mdWxsLmVuYWJsZWQpIHtcclxuICAgICAgICBzY3JlZW5mdWxsLnJlcXVlc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhpdCgpIHtcclxuICAgIGlmIChzY3JlZW5mdWxsKSB7XHJcbiAgICAgIGlmIChzY3JlZW5mdWxsLmVuYWJsZWQpIHtcclxuICAgICAgICBzY3JlZW5mdWxsLmV4aXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgZnVsbHNjcmVlbiBtb2RlIG9mIHRoZSBicm93c2VyXHJcbiAgICovXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgaWYgKHNjcmVlbmZ1bGwpIHtcclxuICAgICAgaWYgKHNjcmVlbmZ1bGwuZW5hYmxlZCkge1xyXG4gICAgICAgIHNjcmVlbmZ1bGwudG9nZ2xlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZUxpc3RlbmVyKCkge1xyXG4gICAgaWYgKHNjcmVlbmZ1bGwpIHtcclxuICAgICAgc2NyZWVuZnVsbC5vZmYoJ2NoYW5nZScsICgpID0+IHt9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlZ2lzdGVyTGlzdGVuZXIoKSB7XHJcbiAgICBpZiAoc2NyZWVuZnVsbCkge1xyXG4gICAgICBzY3JlZW5mdWxsLm9uKCdjaGFuZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbWl0Q3VycmVudCgpIHtcclxuICAgIHRoaXMuZnVsbFNjcmVlblN1Yi5uZXh0KHRoaXMuaXNGdWxsU2NyZWVuTW9kZUFjdGl2ZSk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTY3JlZW5mdWxsU2VydmljZSB9IGZyb20gJy4vc2NyZWVuZnVsbC5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBCaW5kcyBhIGhvc3QgZWxlbWVudMOCwrRzIGNsaWNrIHRvIHRoZSB7QHNlZSBTY3JlZW5mdWxsU2VydmljZX0gdG9nZ2xlIG1ldGhvZFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbmd4VG9nZ2xlRnVsbHNjcmVlbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2dnbGVGdWxsc2NyZWVuRGlyZWN0aXZlIHtcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlXHJcbiAgICogQHBhcmFtIF9zY3JlZW5mdWxsU2VydmljZSB0aGUgc2NyZWVuIHNlcnZpY2Ugc2luZ2xldG9uZSBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3NjcmVlbmZ1bGxTZXJ2aWNlOiBTY3JlZW5mdWxsU2VydmljZSkge31cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgZnVsbHNjcmVlbiBtb2RlXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIHRoaXMuX3NjcmVlbmZ1bGxTZXJ2aWNlLnRvZ2dsZSgpO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBGYWN0b3J5UHJvdmlkZXIsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU2NyZWVuZnVsbFNlcnZpY2UgfSBmcm9tICcuL3NjcmVlbmZ1bGwuc2VydmljZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU0NSRUVOX1NFUlZJQ0VfRkFDVE9SWShcclxuICBwYXJlbnQ6IFNjcmVlbmZ1bGxTZXJ2aWNlXHJcbik6IFNjcmVlbmZ1bGxTZXJ2aWNlIHtcclxuICByZXR1cm4gcGFyZW50IHx8IG5ldyBTY3JlZW5mdWxsU2VydmljZSgpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgU0NSRUVOX1NFUlZJQ0VfUFJPVklERVI6IEZhY3RvcnlQcm92aWRlciA9IHtcclxuICBwcm92aWRlOiBTY3JlZW5mdWxsU2VydmljZSxcclxuICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU2NyZWVuZnVsbFNlcnZpY2VdXSxcclxuICB1c2VGYWN0b3J5OiBTQ1JFRU5fU0VSVklDRV9GQUNUT1JZXHJcbn07XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb2dnbGVGdWxsc2NyZWVuRGlyZWN0aXZlIH0gZnJvbSAnLi90b2dnbGUtZnVsbHNjcmVlbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTQ1JFRU5fU0VSVklDRV9QUk9WSURFUiB9IGZyb20gJy4vc2NyZWVuZnVsbC1zZXJ2aWNlLnByb3ZpZGVyJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbVG9nZ2xlRnVsbHNjcmVlbkRpcmVjdGl2ZV0sXHJcbiAgZXhwb3J0czogW1RvZ2dsZUZ1bGxzY3JlZW5EaXJlY3RpdmVdLFxyXG4gIHByb3ZpZGVyczogW1NDUkVFTl9TRVJWSUNFX1BST1ZJREVSXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4U2NyZWVuZnVsbE1vZHVsZSB7fVxyXG4iLCIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQG5neC1leHRlbnNpb25zL3NjcmVlbmZ1bGxcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY3JlZW5mdWxsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjcmVlbmZ1bGwuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvZ2dsZS1mdWxsc2NyZWVuLmRpcmVjdGl2ZSc7XHJcbiIsIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtTQ1JFRU5fU0VSVklDRV9GQUNUT1JZIGFzIMOJwrVhLFNDUkVFTl9TRVJWSUNFX1BST1ZJREVSIGFzIMOJwrVifSBmcm9tICcuL2xpYi9zY3JlZW5mdWxsLXNlcnZpY2UucHJvdmlkZXInOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7QUFHQTs7OztJQWVFO1FBYmlCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQWN0RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFDdEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztLQUNIO0lBYkQsc0JBQUkscURBQXNCOzs7O2FBQTFCO1lBQ0UsT0FBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDckQ7OztPQUFBO0lBYUQsdUNBQVcsR0FBWDtRQUNFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQy9CO0lBRUQsbUNBQU8sR0FBUDtRQUNFLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN0QixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEI7U0FDRjtLQUNGO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN0QixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDbkI7U0FDRjtLQUNGOzs7O0lBS0Qsa0NBQU0sR0FBTjtRQUNFLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN0QixVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDckI7U0FDRjtLQUNGO0lBRU8sMkNBQWUsR0FBdkI7UUFDRSxJQUFJLFVBQVUsRUFBRTtZQUNkLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQVEsQ0FBQyxDQUFDO1NBQ3BDO0tBQ0Y7SUFFTyw2Q0FBaUIsR0FBekI7UUFBQSxpQkFNQztRQUxDLElBQUksVUFBVSxFQUFFO1lBQ2QsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBQSxLQUFLO2dCQUMzQixLQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckIsQ0FBQyxDQUFDO1NBQ0o7S0FDRjtJQUVPLHdDQUFZLEdBQXBCO1FBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FDdEQ7O2dCQXZFRixVQUFVOzs7SUF3RVgsd0JBQUM7Q0F4RUQ7O0FDSkE7OztBQUdBOzs7OztJQVFFLG1DQUE2QixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtLQUFJOzs7O0lBTXRFLDBDQUFNLEdBRE47UUFFRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDbEM7O2dCQWhCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEM7OztnQkFQUSxpQkFBaUI7Ozt5QkFrQnZCLFlBQVksU0FBQyxPQUFPOztJQUl2QixnQ0FBQztDQWpCRDs7Z0NDRkUsTUFBeUI7SUFFekIsT0FBTyxNQUFNLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0NBQzFDO0FBRUQsSUFBYSx1QkFBdUIsR0FBb0I7SUFDdEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELFVBQVUsRUFBRSxzQkFBc0I7Q0FDbkM7OztJQ1REO0tBS21DOztnQkFMbEMsUUFBUSxTQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN6QyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3JDOztJQUNpQywwQkFBQztDQUxuQzs7QUNMQTs7R0FFRzs7QUNGSDs7R0FFRzs7OzsifQ==