@ngx-extensions/screenfull
Version:
Wrapper module for screenfull
142 lines (134 loc) • 12.9 kB
JavaScript
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==