@ui5/theming-ngx 0.1.0-rc.0 → 0.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Inject, Injectable, isDevMode } from '@angular/core';
1
+ import { Inject, Injectable, isDevMode, Optional } from '@angular/core';
2
2
  import { BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, takeUntil, tap, of, delay, } from 'rxjs';
3
3
  import { UI5_THEMING_CONFIGURATION, } from './ui5-theming.models';
4
4
  import * as i0 from "@angular/core";
@@ -7,8 +7,8 @@ export class Ui5ThemingService {
7
7
  this._config = _config;
8
8
  this._providers$ = new BehaviorSubject([]);
9
9
  this._currentTheme$ = new BehaviorSubject([
10
- this._config.defaultTheme,
11
- this._config.defaultTheme,
10
+ this._config?.defaultTheme || 'sap_fiori_3',
11
+ this._config?.defaultTheme || 'sap_fiori_3',
12
12
  ]);
13
13
  this._themeChanged$ = new Subject();
14
14
  this._destroyed$ = new Subject();
@@ -100,15 +100,14 @@ export class Ui5ThemingService {
100
100
  this._destroyed$.complete();
101
101
  }
102
102
  }
103
- Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
104
- Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, providedIn: 'root' });
103
+ Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
104
+ Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService });
105
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, decorators: [{
106
- type: Injectable,
107
- args: [{
108
- providedIn: 'root',
109
- }]
106
+ type: Injectable
110
107
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
108
+ type: Optional
109
+ }, {
111
110
  type: Inject,
112
111
  args: [UI5_THEMING_CONFIGURATION]
113
112
  }] }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWk1LXRoZW1pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWk1LWFuZ3VsYXItdGhlbWluZy9zcmMvdWk1LXRoZW1pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsRUFBRSxFQUFFLEtBQUssR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFFTCx5QkFBeUIsR0FHMUIsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLOUIsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNzRCxPQUFzQjtRQUF0QixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBWDNELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQW1CO1lBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7U0FDMUIsQ0FBQyxDQUFDO1FBRUssbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXZDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUt4QyxhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsV0FBVztZQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyw0RUFBNEU7U0FDbEgsQ0FBQzthQUNDLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLEVB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LGNBQWM7aUJBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzNCLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUMxQixJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7b0JBQzFCLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN2QjtnQkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7OzhHQXRJVSxpQkFBaUIsa0JBWWxCLHlCQUF5QjtrSEFaeEIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYUksTUFBTTsyQkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIGlzRGV2TW9kZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgb2YsIGRlbGF5LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFRoZW1pbmdDb25maWcsXG4gIFVJNV9USEVNSU5HX0NPTkZJR1VSQVRJT04sXG4gIFVpNVRoZW1pbmdQcm92aWRlcixcbiAgVWk1VGhlbWluZ0NvbnN1bWVyLFxufSBmcm9tICcuL3VpNS10aGVtaW5nLm1vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVaTVUaGVtaW5nU2VydmljZSBpbXBsZW1lbnRzIFVpNVRoZW1pbmdDb25zdW1lciwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvdmlkZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VWk1VGhlbWluZ1Byb3ZpZGVyW10+KFtdKTtcbiAgcHJpdmF0ZSBfY3VycmVudFRoZW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W3N0cmluZywgc3RyaW5nXT4oW1xuICAgIHRoaXMuX2NvbmZpZy5kZWZhdWx0VGhlbWUsXG4gICAgdGhpcy5fY29uZmlnLmRlZmF1bHRUaGVtZSxcbiAgXSk7XG5cbiAgcHJpdmF0ZSBfdGhlbWVDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFVJNV9USEVNSU5HX0NPTkZJR1VSQVRJT04pIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogVGhlbWluZ0NvbmZpZ1xuICApIHtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX3Byb3ZpZGVycyQsXG4gICAgICB0aGlzLl9jdXJyZW50VGhlbWUkLnBpcGUoZGVsYXkoMTAwKSkgLy8gRGVsYXkgc28gdGhhdCB0aGUgcHJvdmlkZXJzIGFyZSByZWdpc3RlcmVkLiBAdG9kbzogRmluZCBhIGJldHRlciBzb2x1dGlvblxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChbcHJvdmlkZXJzLCBbcHJldmlvdXNUaGVtZSwgbmV3VGhlbWVdXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgcHJvdmlkZXJzLm1hcChcbiAgICAgICAgICAgICAgKHByb3ZpZGVyKTogT2JzZXJ2YWJsZTxbVWk1VGhlbWluZ1Byb3ZpZGVyLCBib29sZWFuXT4gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3VwcG9ydGVkID0gcHJvdmlkZXIuc3VwcG9ydHNUaGVtZShuZXdUaGVtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpc1N1cHBvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW3Byb3ZpZGVyLCBpc1N1cHBvcnRlZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgoc3VwcG9ydGVkKSA9PiBbcHJvdmlkZXIsIHN1cHBvcnRlZF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocHJvdmlkZXJzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVuc3VwcG9ydGVkUHJvdmlkZXJzID0gcHJvdmlkZXJzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoWywgc3VwcG9ydGVkXSkgPT4gIXN1cHBvcnRlZFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAodW5zdXBwb3J0ZWRQcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgZm9sbG93aW5nIHByb3ZpZGVycyBkbyBub3Qgc3VwcG9ydCB0aGUgdGhlbWUgXCIke25ld1RoZW1lfVwiOmAsXG4gICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkUHJvdmlkZXJzLm1hcCgoW3Byb3ZpZGVyXSkgPT4gcHJvdmlkZXIubmFtZSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgIHByb3ZpZGVycy5tYXAoKFtwcm92aWRlcl0pID0+IHByb3ZpZGVyLnNldFRoZW1lKG5ld1RoZW1lKSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChwcm92aWRlclJlc3BvbnNlcykgPT4ge1xuICAgICAgICAgICAgICBpZiAocHJvdmlkZXJSZXNwb25zZXMuZXZlcnkoQm9vbGVhbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3VGhlbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVGhlbWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHRoZW1lKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdGhlbWVDaGFuZ2VkJC5uZXh0KHRoZW1lKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc3VwcG9ydHNUaGVtZSh0aGVtZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEF2YWlsYWJsZVRoZW1lcygpLnBpcGUoXG4gICAgICBtYXAoKHRoZW1lcykgPT4gdGhlbWVzLmluY2x1ZGVzKHRoZW1lTmFtZSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVRoZW1lcygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVycyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocHJvdmlkZXJzKSA9PiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgIHByb3ZpZGVycy5tYXAoKHByb3ZpZGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVUaGVtZXMgPSBwcm92aWRlci5nZXRBdmFpbGFibGVUaGVtZXMoKTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF2YWlsYWJsZVRoZW1lcykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGF2YWlsYWJsZVRoZW1lcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlVGhlbWVzO1xuICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtYXAoKHByb3ZpZGVyUmVzcG9uc2VzOiBBcnJheTxzdHJpbmdbXT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZXMgPSBwcm92aWRlclJlc3BvbnNlcy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgICBjdXJyLmZvckVhY2goKHRoZW1lKSA9PiBhY2MuYWRkKHRoZW1lKSk7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBuZXcgU2V0PHN0cmluZz4oKSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnVuaXF1ZXMudmFsdWVzKCldO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKiogUmVnaXN0ZXJzIHRoZW1pbmcgcHJvdmlkZXIgZm9yIGZ1cnRoZXIgdXNhZ2UuICovXG4gIHJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXI6IFVpNVRoZW1pbmdQcm92aWRlcik6IHZvaWQge1xuICAgIGNvbnN0IHByb3ZpZGVycyA9IHRoaXMuX3Byb3ZpZGVycyQudmFsdWU7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgIHRoaXMuX3Byb3ZpZGVycyQubmV4dChwcm92aWRlcnMpO1xuICB9XG5cbiAgLyoqIFVucmVnaXN0ZXJzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB0aGVtaW5nIHByb3ZpZGVyLiAqL1xuICB1bnJlZ2lzdGVyUHJvdmlkZXIocHJvdmlkZXI6IFVpNVRoZW1pbmdQcm92aWRlcik6IHZvaWQge1xuICAgIGNvbnN0IHByb3ZpZGVycyA9IHRoaXMuX3Byb3ZpZGVycyQudmFsdWU7XG4gICAgY29uc3QgaW5kZXggPSBwcm92aWRlcnMuaW5kZXhPZihwcm92aWRlcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcHJvdmlkZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLl9wcm92aWRlcnMkLm5leHQocHJvdmlkZXJzKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2V0cyB0aGUgdGhlbWUgdG8gdGhlIHByb3ZpZGVycyAqL1xuICBzZXRUaGVtZSh0aGVtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBjb25zdCBmaW5hbGl6ZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgIHRoaXMuX3RoZW1lQ2hhbmdlZCRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKGZpbmFsaXplciQpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2VkVGhlbWUpID0+IHtcbiAgICAgICAgICBpZiAoY2hhbmdlZFRoZW1lID09PSB0aGVtZSkge1xuICAgICAgICAgICAgZmluYWxpemVyJC5uZXh0KCk7XG4gICAgICAgICAgICBmaW5hbGl6ZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChjaGFuZ2VkVGhlbWUgPT09IHRoZW1lKTtcbiAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5fY3VycmVudFRoZW1lJC5uZXh0KFt0aGlzLl9jdXJyZW50VGhlbWUkLnZhbHVlWzFdLCB0aGVtZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBoaWRkZW4gKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWk1LXRoZW1pbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWk1LWFuZ3VsYXItdGhlbWluZy9zcmMvdWk1LXRoZW1pbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNILEVBQUUsRUFBRSxLQUFLLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBRUwseUJBQXlCLEdBRzFCLE1BQU0sc0JBQXNCLENBQUM7O0FBRzlCLE1BQU0sT0FBTyxpQkFBaUI7SUFXNUIsWUFDa0UsT0FBc0I7UUFBdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQVh2RSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUNyRSxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFtQjtZQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksSUFBSSxhQUFhO1lBQzNDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLGFBQWE7U0FDNUMsQ0FBQyxDQUFDO1FBRUssbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXZDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUt4QyxhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsV0FBVztZQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyw0RUFBNEU7U0FDbEgsQ0FBQzthQUNDLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFB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T0FBTyxFQUFRLENBQUM7WUFDdkMsSUFBSSxDQUFDLGNBQWM7aUJBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzNCLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUMxQixJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7b0JBQzFCLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN2QjtnQkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7OzhHQXRJVSxpQkFBaUIsa0JBWU4seUJBQXlCO2tIQVpwQyxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBYU4sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICBvZiwgZGVsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgVGhlbWluZ0NvbmZpZyxcbiAgVUk1X1RIRU1JTkdfQ09ORklHVVJBVElPTixcbiAgVWk1VGhlbWluZ1Byb3ZpZGVyLFxuICBVaTVUaGVtaW5nQ29uc3VtZXIsXG59IGZyb20gJy4vdWk1LXRoZW1pbmcubW9kZWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVpNVRoZW1pbmdTZXJ2aWNlIGltcGxlbWVudHMgVWk1VGhlbWluZ0NvbnN1bWVyLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm92aWRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVaTVUaGVtaW5nUHJvdmlkZXJbXT4oW10pO1xuICBwcml2YXRlIF9jdXJyZW50VGhlbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxbc3RyaW5nLCBzdHJpbmddPihbXG4gICAgdGhpcy5fY29uZmlnPy5kZWZhdWx0VGhlbWUgfHwgJ3NhcF9maW9yaV8zJyxcbiAgICB0aGlzLl9jb25maWc/LmRlZmF1bHRUaGVtZSB8fCAnc2FwX2Zpb3JpXzMnLFxuICBdKTtcblxuICBwcml2YXRlIF90aGVtZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVUk1X1RIRU1JTkdfQ09ORklHVVJBVElPTikgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBUaGVtaW5nQ29uZmlnXG4gICkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5fcHJvdmlkZXJzJCxcbiAgICAgIHRoaXMuX2N1cnJlbnRUaGVtZSQucGlwZShkZWxheSgxMDApKSAvLyBEZWxheSBzbyB0aGF0IHRoZSBwcm92aWRlcnMgYXJlIHJlZ2lzdGVyZWQuIEB0b2RvOiBGaW5kIGEgYmV0dGVyIHNvbHV0aW9uXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKFtwcm92aWRlcnMsIFtwcmV2aW91c1RoZW1lLCBuZXdUaGVtZV1dKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICBwcm92aWRlcnMubWFwKFxuICAgICAgICAgICAgICAocHJvdmlkZXIpOiBPYnNlcnZhYmxlPFtVaTVUaGVtaW5nUHJvdmlkZXIsIGJvb2xlYW5dPiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdXBwb3J0ZWQgPSBwcm92aWRlci5zdXBwb3J0c1RoZW1lKG5ld1RoZW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlzU3VwcG9ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbcHJvdmlkZXIsIGlzU3VwcG9ydGVkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChzdXBwb3J0ZWQpID0+IFtwcm92aWRlciwgc3VwcG9ydGVkXSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChwcm92aWRlcnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRQcm92aWRlcnMgPSBwcm92aWRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChbLCBzdXBwb3J0ZWRdKSA9PiAhc3VwcG9ydGVkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh1bnN1cHBvcnRlZFByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgYFRoZSBmb2xsb3dpbmcgcHJvdmlkZXJzIGRvIG5vdCBzdXBwb3J0IHRoZSB0aGVtZSBcIiR7bmV3VGhlbWV9XCI6YCxcbiAgICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWRQcm92aWRlcnMubWFwKChbcHJvdmlkZXJdKSA9PiBwcm92aWRlci5uYW1lKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLm1hcCgoW3Byb3ZpZGVyXSkgPT4gcHJvdmlkZXIuc2V0VGhlbWUobmV3VGhlbWUpKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHByb3ZpZGVyUmVzcG9uc2VzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwcm92aWRlclJlc3BvbnNlcy5ldmVyeShCb29sZWFuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdUaGVtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNUaGVtZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgodGhlbWUpID0+IHtcbiAgICAgICAgICB0aGlzLl90aGVtZUNoYW5nZWQkLm5leHQodGhlbWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzdXBwb3J0c1RoZW1lKHRoZW1lTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlVGhlbWVzKCkucGlwZShcbiAgICAgIG1hcCgodGhlbWVzKSA9PiB0aGVtZXMuaW5jbHVkZXModGhlbWVOYW1lKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVGhlbWVzKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXJzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChwcm92aWRlcnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgcHJvdmlkZXJzLm1hcCgocHJvdmlkZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZVRoZW1lcyA9IHByb3ZpZGVyLmdldEF2YWlsYWJsZVRoZW1lcygpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXZhaWxhYmxlVGhlbWVzKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoYXZhaWxhYmxlVGhlbWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVUaGVtZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJvdmlkZXJSZXNwb25zZXM6IEFycmF5PHN0cmluZ1tdPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pcXVlcyA9IHByb3ZpZGVyUmVzcG9uc2VzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgIGN1cnIuZm9yRWFjaCgodGhlbWUpID0+IGFjYy5hZGQodGhlbWUpKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIG5ldyBTZXQ8c3RyaW5nPigpKTtcbiAgICAgICAgICAgIHJldHVybiBbLi4udW5pcXVlcy52YWx1ZXMoKV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgdGhlbWluZyBwcm92aWRlciBmb3IgZnVydGhlciB1c2FnZS4gKi9cbiAgcmVnaXN0ZXJQcm92aWRlcihwcm92aWRlcjogVWk1VGhlbWluZ1Byb3ZpZGVyKTogdm9pZCB7XG4gICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5fcHJvdmlkZXJzJC52YWx1ZTtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gICAgdGhpcy5fcHJvdmlkZXJzJC5uZXh0KHByb3ZpZGVycyk7XG4gIH1cblxuICAvKiogVW5yZWdpc3RlcnMgcHJldmlvdXNseSByZWdpc3RlcmVkIHRoZW1pbmcgcHJvdmlkZXIuICovXG4gIHVucmVnaXN0ZXJQcm92aWRlcihwcm92aWRlcjogVWk1VGhlbWluZ1Byb3ZpZGVyKTogdm9pZCB7XG4gICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5fcHJvdmlkZXJzJC52YWx1ZTtcbiAgICBjb25zdCBpbmRleCA9IHByb3ZpZGVycy5pbmRleE9mKHByb3ZpZGVyKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBwcm92aWRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMuX3Byb3ZpZGVycyQubmV4dChwcm92aWRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSB0aGVtZSB0byB0aGUgcHJvdmlkZXJzICovXG4gIHNldFRoZW1lKHRoZW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IGZpbmFsaXplciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgdGhpcy5fdGhlbWVDaGFuZ2VkJFxuICAgICAgICAucGlwZSh0YWtlVW50aWwoZmluYWxpemVyJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZWRUaGVtZSkgPT4ge1xuICAgICAgICAgIGlmIChjaGFuZ2VkVGhlbWUgPT09IHRoZW1lKSB7XG4gICAgICAgICAgICBmaW5hbGl6ZXIkLm5leHQoKTtcbiAgICAgICAgICAgIGZpbmFsaXplciQuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGNoYW5nZWRUaGVtZSA9PT0gdGhlbWUpO1xuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLl9jdXJyZW50VGhlbWUkLm5leHQoW3RoaXMuX2N1cnJlbnRUaGVtZSQudmFsdWVbMV0sIHRoZW1lXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGhpZGRlbiAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, isDevMode, Injectable, Inject, NgModule, Optional } from '@angular/core';
2
+ import { InjectionToken, isDevMode, Injectable, Optional, Inject, NgModule } from '@angular/core';
3
3
  import { BehaviorSubject, Subject, combineLatest, delay, switchMap, of, map, tap, takeUntil, Observable } from 'rxjs';
4
4
 
5
5
  const UI5_THEMING_CONFIGURATION = new InjectionToken('Ui5 global theming configuration.');
6
6
 
7
7
  class Ui5ThemingService {
8
8
  constructor(_config) {
9
+ var _a, _b;
9
10
  this._config = _config;
10
11
  this._providers$ = new BehaviorSubject([]);
11
12
  this._currentTheme$ = new BehaviorSubject([
12
- this._config.defaultTheme,
13
- this._config.defaultTheme,
13
+ ((_a = this._config) === null || _a === void 0 ? void 0 : _a.defaultTheme) || 'sap_fiori_3',
14
+ ((_b = this._config) === null || _b === void 0 ? void 0 : _b.defaultTheme) || 'sap_fiori_3',
14
15
  ]);
15
16
  this._themeChanged$ = new Subject();
16
17
  this._destroyed$ = new Subject();
@@ -102,15 +103,14 @@ class Ui5ThemingService {
102
103
  this._destroyed$.complete();
103
104
  }
104
105
  }
105
- Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
106
- Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, providedIn: 'root' });
106
+ Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
107
+ Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService });
107
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, decorators: [{
108
- type: Injectable,
109
- args: [{
110
- providedIn: 'root',
111
- }]
109
+ type: Injectable
112
110
  }], ctorParameters: function () {
113
111
  return [{ type: undefined, decorators: [{
112
+ type: Optional
113
+ }, {
114
114
  type: Inject,
115
115
  args: [UI5_THEMING_CONFIGURATION]
116
116
  }] }];
@@ -1 +1 @@
1
- {"version":3,"file":"ui5-theming-ngx.mjs","sources":["../../../../libs/ui5-angular-theming/src/ui5-theming.models.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.service.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.module.ts","../../../../libs/ui5-angular-theming/src/ui5-theming-ngx.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport interface ThemingConfig {\n defaultTheme: string;\n}\nexport const UI5_THEMING_CONFIGURATION = new InjectionToken<ThemingConfig>(\n 'Ui5 global theming configuration.'\n);\n\nexport interface Ui5ThemingProvider {\n name: string;\n getAvailableThemes(): string[] | Observable<string[]>;\n supportsTheme(themeName: string): boolean | Observable<boolean>;\n setTheme(themeName: string): Observable<boolean>;\n}\n\nexport interface Ui5ThemingConsumer extends Omit<Ui5ThemingProvider, 'name'> {\n registerProvider(provider: Ui5ThemingProvider): void;\n unregisterProvider(provider: Ui5ThemingProvider): void;\n}\n","import { Inject, Injectable, isDevMode, OnDestroy } from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subject,\n switchMap,\n takeUntil,\n tap,\n of, delay,\n} from 'rxjs';\nimport {\n ThemingConfig,\n UI5_THEMING_CONFIGURATION,\n Ui5ThemingProvider,\n Ui5ThemingConsumer,\n} from './ui5-theming.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Ui5ThemingService implements Ui5ThemingConsumer, OnDestroy {\n private readonly _providers$ = new BehaviorSubject<Ui5ThemingProvider[]>([]);\n private _currentTheme$ = new BehaviorSubject<[string, string]>([\n this._config.defaultTheme,\n this._config.defaultTheme,\n ]);\n\n private _themeChanged$ = new Subject<string>();\n\n private _destroyed$ = new Subject<void>();\n\n constructor(\n @Inject(UI5_THEMING_CONFIGURATION) private readonly _config: ThemingConfig\n ) {\n combineLatest([\n this._providers$,\n this._currentTheme$.pipe(delay(100)) // Delay so that the providers are registered. @todo: Find a better solution\n ])\n .pipe(\n switchMap(([providers, [previousTheme, newTheme]]) => {\n return combineLatest(\n providers.map(\n (provider): Observable<[Ui5ThemingProvider, boolean]> => {\n const isSupported = provider.supportsTheme(newTheme);\n if (typeof isSupported === 'boolean') {\n return of([provider, isSupported]);\n }\n return isSupported.pipe(\n map((supported) => [provider, supported])\n );\n }\n )\n ).pipe(\n switchMap((providers) => {\n const unsupportedProviders = providers.filter(\n ([, supported]) => !supported\n );\n if (unsupportedProviders.length) {\n if (isDevMode()) {\n console.warn(\n `The following providers do not support the theme \"${newTheme}\":`,\n unsupportedProviders.map(([provider]) => provider.name)\n );\n }\n }\n return combineLatest(\n providers.map(([provider]) => provider.setTheme(newTheme))\n );\n }),\n map((providerResponses) => {\n if (providerResponses.every(Boolean)) {\n return newTheme;\n }\n return previousTheme;\n })\n );\n }),\n tap((theme) => {\n this._themeChanged$.next(theme);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n supportsTheme(themeName: string): Observable<boolean> {\n return this.getAvailableThemes().pipe(\n map((themes) => themes.includes(themeName))\n );\n }\n\n getAvailableThemes(): Observable<string[]> {\n return this._providers$.pipe(\n switchMap((providers) => {\n return combineLatest(\n providers.map((provider) => {\n const availableThemes = provider.getAvailableThemes();\n if (Array.isArray(availableThemes)) {\n return of(availableThemes);\n }\n return availableThemes;\n })\n ).pipe(\n map((providerResponses: Array<string[]>) => {\n const uniques = providerResponses.reduce((acc, curr) => {\n curr.forEach((theme) => acc.add(theme));\n return acc;\n }, new Set<string>());\n return [...uniques.values()];\n })\n );\n })\n );\n }\n\n /** Registers theming provider for further usage. */\n registerProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n providers.push(provider);\n this._providers$.next(providers);\n }\n\n /** Unregisters previously registered theming provider. */\n unregisterProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n const index = providers.indexOf(provider);\n if (index !== -1) {\n providers.splice(index, 1);\n this._providers$.next(providers);\n }\n }\n\n /** Sets the theme to the providers */\n setTheme(theme: string): Observable<boolean> {\n return new Observable<boolean>((subscriber) => {\n const finalizer$ = new Subject<void>();\n this._themeChanged$\n .pipe(takeUntil(finalizer$))\n .subscribe((changedTheme) => {\n if (changedTheme === theme) {\n finalizer$.next();\n finalizer$.complete();\n }\n subscriber.next(changedTheme === theme);\n subscriber.complete();\n });\n this._currentTheme$.next([this._currentTheme$.value[1], theme]);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n Optional,\n isDevMode,\n} from '@angular/core';\nimport { Ui5ThemingService } from './ui5-theming.service';\nimport { ThemingConfig, UI5_THEMING_CONFIGURATION } from './ui5-theming.models';\n\n@NgModule({\n exports: [],\n declarations: [],\n})\nexport class Ui5ThemingModule {\n constructor(@Optional() public theming: Ui5ThemingService) {\n if (!this.theming && isDevMode()) {\n console.error(\n 'Could not find Ui5ThemingService. Make sure you called .forRoot() for Ui5ThemingModule'\n );\n }\n }\n static forRoot(config: ThemingConfig): ModuleWithProviders<Ui5ThemingModule> {\n return {\n ngModule: Ui5ThemingModule,\n providers: [\n Ui5ThemingService,\n {\n provide: UI5_THEMING_CONFIGURATION,\n useValue: config,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Ui5ThemingService"],"mappings":"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"}
1
+ {"version":3,"file":"ui5-theming-ngx.mjs","sources":["../../../../libs/ui5-angular-theming/src/ui5-theming.models.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.service.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.module.ts","../../../../libs/ui5-angular-theming/src/ui5-theming-ngx.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport interface ThemingConfig {\n defaultTheme: string;\n}\nexport const UI5_THEMING_CONFIGURATION = new InjectionToken<ThemingConfig>(\n 'Ui5 global theming configuration.'\n);\n\nexport interface Ui5ThemingProvider {\n name: string;\n getAvailableThemes(): string[] | Observable<string[]>;\n supportsTheme(themeName: string): boolean | Observable<boolean>;\n setTheme(themeName: string): Observable<boolean>;\n}\n\nexport interface Ui5ThemingConsumer extends Omit<Ui5ThemingProvider, 'name'> {\n registerProvider(provider: Ui5ThemingProvider): void;\n unregisterProvider(provider: Ui5ThemingProvider): void;\n}\n","import {Inject, Injectable, isDevMode, OnDestroy, Optional} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subject,\n switchMap,\n takeUntil,\n tap,\n of, delay,\n} from 'rxjs';\nimport {\n ThemingConfig,\n UI5_THEMING_CONFIGURATION,\n Ui5ThemingProvider,\n Ui5ThemingConsumer,\n} from './ui5-theming.models';\n\n@Injectable()\nexport class Ui5ThemingService implements Ui5ThemingConsumer, OnDestroy {\n private readonly _providers$ = new BehaviorSubject<Ui5ThemingProvider[]>([]);\n private _currentTheme$ = new BehaviorSubject<[string, string]>([\n this._config?.defaultTheme || 'sap_fiori_3',\n this._config?.defaultTheme || 'sap_fiori_3',\n ]);\n\n private _themeChanged$ = new Subject<string>();\n\n private _destroyed$ = new Subject<void>();\n\n constructor(\n @Optional() @Inject(UI5_THEMING_CONFIGURATION) private readonly _config: ThemingConfig\n ) {\n combineLatest([\n this._providers$,\n this._currentTheme$.pipe(delay(100)) // Delay so that the providers are registered. @todo: Find a better solution\n ])\n .pipe(\n switchMap(([providers, [previousTheme, newTheme]]) => {\n return combineLatest(\n providers.map(\n (provider): Observable<[Ui5ThemingProvider, boolean]> => {\n const isSupported = provider.supportsTheme(newTheme);\n if (typeof isSupported === 'boolean') {\n return of([provider, isSupported]);\n }\n return isSupported.pipe(\n map((supported) => [provider, supported])\n );\n }\n )\n ).pipe(\n switchMap((providers) => {\n const unsupportedProviders = providers.filter(\n ([, supported]) => !supported\n );\n if (unsupportedProviders.length) {\n if (isDevMode()) {\n console.warn(\n `The following providers do not support the theme \"${newTheme}\":`,\n unsupportedProviders.map(([provider]) => provider.name)\n );\n }\n }\n return combineLatest(\n providers.map(([provider]) => provider.setTheme(newTheme))\n );\n }),\n map((providerResponses) => {\n if (providerResponses.every(Boolean)) {\n return newTheme;\n }\n return previousTheme;\n })\n );\n }),\n tap((theme) => {\n this._themeChanged$.next(theme);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n supportsTheme(themeName: string): Observable<boolean> {\n return this.getAvailableThemes().pipe(\n map((themes) => themes.includes(themeName))\n );\n }\n\n getAvailableThemes(): Observable<string[]> {\n return this._providers$.pipe(\n switchMap((providers) => {\n return combineLatest(\n providers.map((provider) => {\n const availableThemes = provider.getAvailableThemes();\n if (Array.isArray(availableThemes)) {\n return of(availableThemes);\n }\n return availableThemes;\n })\n ).pipe(\n map((providerResponses: Array<string[]>) => {\n const uniques = providerResponses.reduce((acc, curr) => {\n curr.forEach((theme) => acc.add(theme));\n return acc;\n }, new Set<string>());\n return [...uniques.values()];\n })\n );\n })\n );\n }\n\n /** Registers theming provider for further usage. */\n registerProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n providers.push(provider);\n this._providers$.next(providers);\n }\n\n /** Unregisters previously registered theming provider. */\n unregisterProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n const index = providers.indexOf(provider);\n if (index !== -1) {\n providers.splice(index, 1);\n this._providers$.next(providers);\n }\n }\n\n /** Sets the theme to the providers */\n setTheme(theme: string): Observable<boolean> {\n return new Observable<boolean>((subscriber) => {\n const finalizer$ = new Subject<void>();\n this._themeChanged$\n .pipe(takeUntil(finalizer$))\n .subscribe((changedTheme) => {\n if (changedTheme === theme) {\n finalizer$.next();\n finalizer$.complete();\n }\n subscriber.next(changedTheme === theme);\n subscriber.complete();\n });\n this._currentTheme$.next([this._currentTheme$.value[1], theme]);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n Optional,\n isDevMode,\n} from '@angular/core';\nimport { Ui5ThemingService } from './ui5-theming.service';\nimport { ThemingConfig, UI5_THEMING_CONFIGURATION } from './ui5-theming.models';\n\n@NgModule({\n exports: [],\n declarations: [],\n})\nexport class Ui5ThemingModule {\n constructor(@Optional() public theming: Ui5ThemingService) {\n if (!this.theming && isDevMode()) {\n console.error(\n 'Could not find Ui5ThemingService. Make sure you called .forRoot() for Ui5ThemingModule'\n );\n }\n }\n static forRoot(config: ThemingConfig): ModuleWithProviders<Ui5ThemingModule> {\n return {\n ngModule: Ui5ThemingModule,\n providers: [\n Ui5ThemingService,\n {\n provide: UI5_THEMING_CONFIGURATION,\n useValue: config,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Ui5ThemingService"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, isDevMode, Injectable, Inject, NgModule, Optional } from '@angular/core';
2
+ import { InjectionToken, isDevMode, Injectable, Optional, Inject, NgModule } from '@angular/core';
3
3
  import { BehaviorSubject, Subject, combineLatest, delay, switchMap, of, map, tap, takeUntil, Observable } from 'rxjs';
4
4
 
5
5
  const UI5_THEMING_CONFIGURATION = new InjectionToken('Ui5 global theming configuration.');
@@ -9,8 +9,8 @@ class Ui5ThemingService {
9
9
  this._config = _config;
10
10
  this._providers$ = new BehaviorSubject([]);
11
11
  this._currentTheme$ = new BehaviorSubject([
12
- this._config.defaultTheme,
13
- this._config.defaultTheme,
12
+ this._config?.defaultTheme || 'sap_fiori_3',
13
+ this._config?.defaultTheme || 'sap_fiori_3',
14
14
  ]);
15
15
  this._themeChanged$ = new Subject();
16
16
  this._destroyed$ = new Subject();
@@ -102,14 +102,13 @@ class Ui5ThemingService {
102
102
  this._destroyed$.complete();
103
103
  }
104
104
  }
105
- Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
106
- Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, providedIn: 'root' });
105
+ Ui5ThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, deps: [{ token: UI5_THEMING_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
106
+ Ui5ThemingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService });
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: Ui5ThemingService, decorators: [{
108
- type: Injectable,
109
- args: [{
110
- providedIn: 'root',
111
- }]
108
+ type: Injectable
112
109
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
110
+ type: Optional
111
+ }, {
113
112
  type: Inject,
114
113
  args: [UI5_THEMING_CONFIGURATION]
115
114
  }] }]; } });
@@ -1 +1 @@
1
- {"version":3,"file":"ui5-theming-ngx.mjs","sources":["../../../../libs/ui5-angular-theming/src/ui5-theming.models.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.service.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.module.ts","../../../../libs/ui5-angular-theming/src/ui5-theming-ngx.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport interface ThemingConfig {\n defaultTheme: string;\n}\nexport const UI5_THEMING_CONFIGURATION = new InjectionToken<ThemingConfig>(\n 'Ui5 global theming configuration.'\n);\n\nexport interface Ui5ThemingProvider {\n name: string;\n getAvailableThemes(): string[] | Observable<string[]>;\n supportsTheme(themeName: string): boolean | Observable<boolean>;\n setTheme(themeName: string): Observable<boolean>;\n}\n\nexport interface Ui5ThemingConsumer extends Omit<Ui5ThemingProvider, 'name'> {\n registerProvider(provider: Ui5ThemingProvider): void;\n unregisterProvider(provider: Ui5ThemingProvider): void;\n}\n","import { Inject, Injectable, isDevMode, OnDestroy } from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subject,\n switchMap,\n takeUntil,\n tap,\n of, delay,\n} from 'rxjs';\nimport {\n ThemingConfig,\n UI5_THEMING_CONFIGURATION,\n Ui5ThemingProvider,\n Ui5ThemingConsumer,\n} from './ui5-theming.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Ui5ThemingService implements Ui5ThemingConsumer, OnDestroy {\n private readonly _providers$ = new BehaviorSubject<Ui5ThemingProvider[]>([]);\n private _currentTheme$ = new BehaviorSubject<[string, string]>([\n this._config.defaultTheme,\n this._config.defaultTheme,\n ]);\n\n private _themeChanged$ = new Subject<string>();\n\n private _destroyed$ = new Subject<void>();\n\n constructor(\n @Inject(UI5_THEMING_CONFIGURATION) private readonly _config: ThemingConfig\n ) {\n combineLatest([\n this._providers$,\n this._currentTheme$.pipe(delay(100)) // Delay so that the providers are registered. @todo: Find a better solution\n ])\n .pipe(\n switchMap(([providers, [previousTheme, newTheme]]) => {\n return combineLatest(\n providers.map(\n (provider): Observable<[Ui5ThemingProvider, boolean]> => {\n const isSupported = provider.supportsTheme(newTheme);\n if (typeof isSupported === 'boolean') {\n return of([provider, isSupported]);\n }\n return isSupported.pipe(\n map((supported) => [provider, supported])\n );\n }\n )\n ).pipe(\n switchMap((providers) => {\n const unsupportedProviders = providers.filter(\n ([, supported]) => !supported\n );\n if (unsupportedProviders.length) {\n if (isDevMode()) {\n console.warn(\n `The following providers do not support the theme \"${newTheme}\":`,\n unsupportedProviders.map(([provider]) => provider.name)\n );\n }\n }\n return combineLatest(\n providers.map(([provider]) => provider.setTheme(newTheme))\n );\n }),\n map((providerResponses) => {\n if (providerResponses.every(Boolean)) {\n return newTheme;\n }\n return previousTheme;\n })\n );\n }),\n tap((theme) => {\n this._themeChanged$.next(theme);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n supportsTheme(themeName: string): Observable<boolean> {\n return this.getAvailableThemes().pipe(\n map((themes) => themes.includes(themeName))\n );\n }\n\n getAvailableThemes(): Observable<string[]> {\n return this._providers$.pipe(\n switchMap((providers) => {\n return combineLatest(\n providers.map((provider) => {\n const availableThemes = provider.getAvailableThemes();\n if (Array.isArray(availableThemes)) {\n return of(availableThemes);\n }\n return availableThemes;\n })\n ).pipe(\n map((providerResponses: Array<string[]>) => {\n const uniques = providerResponses.reduce((acc, curr) => {\n curr.forEach((theme) => acc.add(theme));\n return acc;\n }, new Set<string>());\n return [...uniques.values()];\n })\n );\n })\n );\n }\n\n /** Registers theming provider for further usage. */\n registerProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n providers.push(provider);\n this._providers$.next(providers);\n }\n\n /** Unregisters previously registered theming provider. */\n unregisterProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n const index = providers.indexOf(provider);\n if (index !== -1) {\n providers.splice(index, 1);\n this._providers$.next(providers);\n }\n }\n\n /** Sets the theme to the providers */\n setTheme(theme: string): Observable<boolean> {\n return new Observable<boolean>((subscriber) => {\n const finalizer$ = new Subject<void>();\n this._themeChanged$\n .pipe(takeUntil(finalizer$))\n .subscribe((changedTheme) => {\n if (changedTheme === theme) {\n finalizer$.next();\n finalizer$.complete();\n }\n subscriber.next(changedTheme === theme);\n subscriber.complete();\n });\n this._currentTheme$.next([this._currentTheme$.value[1], theme]);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n Optional,\n isDevMode,\n} from '@angular/core';\nimport { Ui5ThemingService } from './ui5-theming.service';\nimport { ThemingConfig, UI5_THEMING_CONFIGURATION } from './ui5-theming.models';\n\n@NgModule({\n exports: [],\n declarations: [],\n})\nexport class Ui5ThemingModule {\n constructor(@Optional() public theming: Ui5ThemingService) {\n if (!this.theming && isDevMode()) {\n console.error(\n 'Could not find Ui5ThemingService. Make sure you called .forRoot() for Ui5ThemingModule'\n );\n }\n }\n static forRoot(config: ThemingConfig): ModuleWithProviders<Ui5ThemingModule> {\n return {\n ngModule: Ui5ThemingModule,\n providers: [\n Ui5ThemingService,\n {\n provide: UI5_THEMING_CONFIGURATION,\n useValue: config,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Ui5ThemingService"],"mappings":"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"}
1
+ {"version":3,"file":"ui5-theming-ngx.mjs","sources":["../../../../libs/ui5-angular-theming/src/ui5-theming.models.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.service.ts","../../../../libs/ui5-angular-theming/src/ui5-theming.module.ts","../../../../libs/ui5-angular-theming/src/ui5-theming-ngx.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport interface ThemingConfig {\n defaultTheme: string;\n}\nexport const UI5_THEMING_CONFIGURATION = new InjectionToken<ThemingConfig>(\n 'Ui5 global theming configuration.'\n);\n\nexport interface Ui5ThemingProvider {\n name: string;\n getAvailableThemes(): string[] | Observable<string[]>;\n supportsTheme(themeName: string): boolean | Observable<boolean>;\n setTheme(themeName: string): Observable<boolean>;\n}\n\nexport interface Ui5ThemingConsumer extends Omit<Ui5ThemingProvider, 'name'> {\n registerProvider(provider: Ui5ThemingProvider): void;\n unregisterProvider(provider: Ui5ThemingProvider): void;\n}\n","import {Inject, Injectable, isDevMode, OnDestroy, Optional} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n Subject,\n switchMap,\n takeUntil,\n tap,\n of, delay,\n} from 'rxjs';\nimport {\n ThemingConfig,\n UI5_THEMING_CONFIGURATION,\n Ui5ThemingProvider,\n Ui5ThemingConsumer,\n} from './ui5-theming.models';\n\n@Injectable()\nexport class Ui5ThemingService implements Ui5ThemingConsumer, OnDestroy {\n private readonly _providers$ = new BehaviorSubject<Ui5ThemingProvider[]>([]);\n private _currentTheme$ = new BehaviorSubject<[string, string]>([\n this._config?.defaultTheme || 'sap_fiori_3',\n this._config?.defaultTheme || 'sap_fiori_3',\n ]);\n\n private _themeChanged$ = new Subject<string>();\n\n private _destroyed$ = new Subject<void>();\n\n constructor(\n @Optional() @Inject(UI5_THEMING_CONFIGURATION) private readonly _config: ThemingConfig\n ) {\n combineLatest([\n this._providers$,\n this._currentTheme$.pipe(delay(100)) // Delay so that the providers are registered. @todo: Find a better solution\n ])\n .pipe(\n switchMap(([providers, [previousTheme, newTheme]]) => {\n return combineLatest(\n providers.map(\n (provider): Observable<[Ui5ThemingProvider, boolean]> => {\n const isSupported = provider.supportsTheme(newTheme);\n if (typeof isSupported === 'boolean') {\n return of([provider, isSupported]);\n }\n return isSupported.pipe(\n map((supported) => [provider, supported])\n );\n }\n )\n ).pipe(\n switchMap((providers) => {\n const unsupportedProviders = providers.filter(\n ([, supported]) => !supported\n );\n if (unsupportedProviders.length) {\n if (isDevMode()) {\n console.warn(\n `The following providers do not support the theme \"${newTheme}\":`,\n unsupportedProviders.map(([provider]) => provider.name)\n );\n }\n }\n return combineLatest(\n providers.map(([provider]) => provider.setTheme(newTheme))\n );\n }),\n map((providerResponses) => {\n if (providerResponses.every(Boolean)) {\n return newTheme;\n }\n return previousTheme;\n })\n );\n }),\n tap((theme) => {\n this._themeChanged$.next(theme);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe();\n }\n\n supportsTheme(themeName: string): Observable<boolean> {\n return this.getAvailableThemes().pipe(\n map((themes) => themes.includes(themeName))\n );\n }\n\n getAvailableThemes(): Observable<string[]> {\n return this._providers$.pipe(\n switchMap((providers) => {\n return combineLatest(\n providers.map((provider) => {\n const availableThemes = provider.getAvailableThemes();\n if (Array.isArray(availableThemes)) {\n return of(availableThemes);\n }\n return availableThemes;\n })\n ).pipe(\n map((providerResponses: Array<string[]>) => {\n const uniques = providerResponses.reduce((acc, curr) => {\n curr.forEach((theme) => acc.add(theme));\n return acc;\n }, new Set<string>());\n return [...uniques.values()];\n })\n );\n })\n );\n }\n\n /** Registers theming provider for further usage. */\n registerProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n providers.push(provider);\n this._providers$.next(providers);\n }\n\n /** Unregisters previously registered theming provider. */\n unregisterProvider(provider: Ui5ThemingProvider): void {\n const providers = this._providers$.value;\n const index = providers.indexOf(provider);\n if (index !== -1) {\n providers.splice(index, 1);\n this._providers$.next(providers);\n }\n }\n\n /** Sets the theme to the providers */\n setTheme(theme: string): Observable<boolean> {\n return new Observable<boolean>((subscriber) => {\n const finalizer$ = new Subject<void>();\n this._themeChanged$\n .pipe(takeUntil(finalizer$))\n .subscribe((changedTheme) => {\n if (changedTheme === theme) {\n finalizer$.next();\n finalizer$.complete();\n }\n subscriber.next(changedTheme === theme);\n subscriber.complete();\n });\n this._currentTheme$.next([this._currentTheme$.value[1], theme]);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n Optional,\n isDevMode,\n} from '@angular/core';\nimport { Ui5ThemingService } from './ui5-theming.service';\nimport { ThemingConfig, UI5_THEMING_CONFIGURATION } from './ui5-theming.models';\n\n@NgModule({\n exports: [],\n declarations: [],\n})\nexport class Ui5ThemingModule {\n constructor(@Optional() public theming: Ui5ThemingService) {\n if (!this.theming && isDevMode()) {\n console.error(\n 'Could not find Ui5ThemingService. Make sure you called .forRoot() for Ui5ThemingModule'\n );\n }\n }\n static forRoot(config: ThemingConfig): ModuleWithProviders<Ui5ThemingModule> {\n return {\n ngModule: Ui5ThemingModule,\n providers: [\n Ui5ThemingService,\n {\n provide: UI5_THEMING_CONFIGURATION,\n useValue: config,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Ui5ThemingService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/theming-ngx",
3
- "version": "0.1.0-rc.0",
3
+ "version": "0.1.0-rc.2",
4
4
  "license": "Apache-2.0",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "repository": {
Binary file
@@ -19,6 +19,6 @@ export declare class Ui5ThemingService implements Ui5ThemingConsumer, OnDestroy
19
19
  setTheme(theme: string): Observable<boolean>;
20
20
  /** @hidden */
21
21
  ngOnDestroy(): void;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<Ui5ThemingService, never>;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<Ui5ThemingService, [{ optional: true; }]>;
23
23
  static ɵprov: i0.ɵɵInjectableDeclaration<Ui5ThemingService>;
24
24
  }
Binary file