UNPKG

@bcodes/ngx-theme-service

Version:

Configurable theme switching service for use with CSS variables

2 lines 2.77 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@bcodes/ngx-theme-service",["exports","@angular/common","@angular/core","rxjs","rxjs/operators"],t):t(((e=e||self).bcodes=e.bcodes||{},e.bcodes["ngx-theme-service"]={}),e.ng.common,e.ng.core,e.rxjs,e.rxjs.operators)}(this,function(e,t,n,o,r){"use strict";function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)s.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function s(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(i(arguments[t]));return e}var c=new n.InjectionToken("ThemeService: Config"),a=function(){function e(e,t){this.config=e,this.document=t,this.stopListening$=new o.Subject,this.selectedTheme=new o.BehaviorSubject(this.config.defaultTheme||""),this.selectedTheme$=this.selectedTheme.asObservable(),this.setupSubscription()}return e.prototype.switchTheme=function(e){this.selectedTheme.next(e)},e.prototype.setupSubscription=function(){var e=this,t=this.config.transitionConfig,n=this.config.themes.filter(function(t){return t!==e.config.defaultTheme});this.selectedTheme.pipe(r.tap(function(o){e.removeClasses(n);var r=s(o?[o]:[],t?[t.className]:[]);e.addClasses(r)}),t?r.switchMap(function(n){return o.timer(t.duration).pipe(r.tap(function(n){e.removeClasses([t.className])}))}):r.tap(function(e){}),r.takeUntil(this.stopListening$)).subscribe()},e.prototype.removeClasses=function(e){var t;(t=this.targetElement.classList).remove.apply(t,s(e))},e.prototype.addClasses=function(e){var t;(t=this.targetElement.classList).add.apply(t,s(e))},Object.defineProperty(e.prototype,"targetElement",{get:function(){var e;return this.config.targetElementSelector&&((e=this.document.querySelector(this.config.targetElementSelector))||console.warn(this.config.targetElementSelector+" not found, defaulting to <html>")),e||(e=this.document.documentElement),e},enumerable:!0,configurable:!0}),e.prototype.ngOnDestroy=function(){this.stopListening$.next(!0)},e.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Inject,args:[c]}]},{type:Document,decorators:[{type:n.Inject,args:[t.DOCUMENT]}]}]},e.ngInjectableDef=n.ɵɵdefineInjectable({factory:function(){return new e(n.ɵɵinject(c),n.ɵɵinject(t.DOCUMENT))},token:e,providedIn:"root"}),e}();e.THEME_CONFIG=c,e.ThemeService=a,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=bcodes-ngx-theme-service.umd.min.js.map