@ui5/webcomponents-ngx 0.0.1-rc.4 → 0.0.1-rc.5

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,5 +1,6 @@
1
1
  import { Injectable, Optional } from '@angular/core';
2
- import { Ui5ThemingService, } from '@ui5/theming-ngx';
2
+ import { BehaviorSubject, map, of, from, tap, switchMap, } from 'rxjs';
3
+ import { Ui5ThemingService } from '@ui5/theming-ngx';
3
4
  import { registerThemePropertiesLoader } from '@ui5/webcomponents-base/dist/asset-registries/Themes.js';
4
5
  import { setTheme } from '@ui5/webcomponents-base/dist/config/Theme.js';
5
6
  import * as i0 from "@angular/core";
@@ -11,19 +12,63 @@ export class Ui5WebcomponentsThemingService {
11
12
  /** @hidden */
12
13
  constructor(_globalThemingService) {
13
14
  this._globalThemingService = _globalThemingService;
15
+ this.name = 'ui5-webcomponents-theming-service';
16
+ this.availableThemes$ = new BehaviorSubject([
17
+ 'sap_belize',
18
+ 'sap_belize_hcb',
19
+ 'sap_belize_hcw',
20
+ 'sap_fiori_3',
21
+ 'sap_fiori_3_dark',
22
+ 'sap_fiori_3_hcb',
23
+ 'sap_fiori_3_hcw',
24
+ 'sap_horizon',
25
+ 'sap_horizon_dark',
26
+ 'sap_horizon_exp',
27
+ 'sap_horizon_hcb',
28
+ 'sap_horizon_hcw',
29
+ ]);
30
+ this.themeSetters = new Map(this.availableThemes$.value.map((themeName) => {
31
+ return [
32
+ themeName,
33
+ () => {
34
+ registerThemePropertiesLoader('@ui5/webcomponents-theming', themeName, this.loadTheme);
35
+ setTheme(themeName);
36
+ return of(true);
37
+ },
38
+ ];
39
+ }));
14
40
  this._globalThemingService?.registerProvider(this);
15
41
  }
16
42
  /** @hidden */
17
43
  ngOnDestroy() {
18
44
  this._globalThemingService?.unregisterProvider(this);
19
45
  }
20
- async setTheme(theme) {
21
- registerThemePropertiesLoader('@ui5/webcomponents-theming', theme, this.loadTheme);
22
- setTheme(theme);
23
- return true;
46
+ supportsTheme(theme) {
47
+ return this.getAvailableThemes().pipe(map((themes) => themes.includes(theme)));
24
48
  }
25
- async loadTheme(theme) {
26
- return (await import(`@ui5/webcomponents-theming/dist/generated/assets/themes/${theme}/parameters-bundle.css.json`)).default;
49
+ getAvailableThemes() {
50
+ return this.availableThemes$.asObservable();
51
+ }
52
+ setTheme(theme) {
53
+ const setter = this.themeSetters.get(theme);
54
+ if (setter) {
55
+ return setter();
56
+ }
57
+ return of(false);
58
+ }
59
+ registerTheme(params) {
60
+ if (this.themeSetters.has(params.theme)) {
61
+ throw new Error(`Theme ${params.theme} is already registered.`);
62
+ }
63
+ this.themeSetters.set(params.theme, () => params.setTheme().pipe(tap((r) => {
64
+ registerThemePropertiesLoader(r.packageName, params.theme, () => Promise.resolve(r));
65
+ }), switchMap(() => from(setTheme(params.theme))), map(() => true)));
66
+ this.availableThemes$.next([...this.themeSetters.keys()]);
67
+ }
68
+ loadTheme(theme) {
69
+ return import(`@ui5/webcomponents-theming/dist/generated/assets/themes/${theme}/parameters-bundle.css.json`).then((module) => {
70
+ return module.default;
71
+ });
27
72
  }
28
73
  }
29
74
  Ui5WebcomponentsThemingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: Ui5WebcomponentsThemingService, deps: [{ token: i1.Ui5ThemingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -36,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
36
81
  }], ctorParameters: function () { return [{ type: i1.Ui5ThemingService, decorators: [{
37
82
  type: Optional
38
83
  }] }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWk1LXdlYmNvbXBvbmVudHMtdGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aTUtYW5ndWxhci9zcmMvbWFpbi91aTUtd2ViY29tcG9uZW50cy10aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBQ3hFOztHQUVHO0FBSUgsTUFBTSxPQUFPLDhCQUE4QjtJQUd6QyxjQUFjO0lBQ2QsWUFDK0IscUJBQXdDO1FBQXhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBbUI7UUFFckUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFzQjtRQUNuQyw2QkFBNkIsQ0FDM0IsNEJBQTRCLEVBQzVCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBZ0IsQ0FDdEIsQ0FBQztRQUNGLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQXNCO1FBQzVDLE9BQU8sQ0FDTCxNQUFNLE1BQU0sQ0FDViwyREFBMkQsS0FBSyw2QkFBNkIsQ0FDOUYsQ0FDRixDQUFDLE9BQU8sQ0FBQztJQUNaLENBQUM7OzJIQS9CVSw4QkFBOEI7K0hBQTlCLDhCQUE4QixjQUY3QixNQUFNOzJGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU1JLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVaTVUaGVtaW5nUHJvdmlkZXIsXG4gIFVpNVRoZW1pbmdTZXJ2aWNlLFxuICBBdmFpbGFibGVUaGVtZXMsXG59IGZyb20gJ0B1aTUvdGhlbWluZy1uZ3gnO1xuaW1wb3J0IHsgcmVnaXN0ZXJUaGVtZVByb3BlcnRpZXNMb2FkZXIgfSBmcm9tICdAdWk1L3dlYmNvbXBvbmVudHMtYmFzZS9kaXN0L2Fzc2V0LXJlZ2lzdHJpZXMvVGhlbWVzLmpzJztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnQHVpNS93ZWJjb21wb25lbnRzLWJhc2UvZGlzdC9jb25maWcvVGhlbWUuanMnO1xuLyoqXG4gKiBUaGVtaW5nIHNlcnZpY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgdWk1L3dlYmNvbXBvbmVudHMtbmd4IGNvbXBvbmVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVaTVXZWJjb21wb25lbnRzVGhlbWluZ1NlcnZpY2VcbiAgaW1wbGVtZW50cyBVaTVUaGVtaW5nUHJvdmlkZXIsIE9uRGVzdHJveVxue1xuICAvKiogQGhpZGRlbiAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9nbG9iYWxUaGVtaW5nU2VydmljZTogVWk1VGhlbWluZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fZ2xvYmFsVGhlbWluZ1NlcnZpY2U/LnJlZ2lzdGVyUHJvdmlkZXIodGhpcyk7XG4gIH1cblxuICAvKiogQGhpZGRlbiAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9nbG9iYWxUaGVtaW5nU2VydmljZT8udW5yZWdpc3RlclByb3ZpZGVyKHRoaXMpO1xuICB9XG5cbiAgYXN5bmMgc2V0VGhlbWUodGhlbWU6IEF2YWlsYWJsZVRoZW1lcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJlZ2lzdGVyVGhlbWVQcm9wZXJ0aWVzTG9hZGVyKFxuICAgICAgJ0B1aTUvd2ViY29tcG9uZW50cy10aGVtaW5nJyxcbiAgICAgIHRoZW1lLFxuICAgICAgdGhpcy5sb2FkVGhlbWUgYXMgYW55XG4gICAgKTtcbiAgICBzZXRUaGVtZSh0aGVtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRUaGVtZSh0aGVtZTogQXZhaWxhYmxlVGhlbWVzKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgaW1wb3J0KFxuICAgICAgICBgQHVpNS93ZWJjb21wb25lbnRzLXRoZW1pbmcvZGlzdC9nZW5lcmF0ZWQvYXNzZXRzL3RoZW1lcy8ke3RoZW1lfS9wYXJhbWV0ZXJzLWJ1bmRsZS5jc3MuanNvbmBcbiAgICAgIClcbiAgICApLmRlZmF1bHQ7XG4gIH1cbn1cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWk1LXdlYmNvbXBvbmVudHMtdGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aTUtYW5ndWxhci9zcmMvbWFpbi91aTUtd2ViY29tcG9uZW50cy10aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUNMLGVBQWUsRUFDZixHQUFHLEVBRUgsRUFBRSxFQUNGLElBQUksRUFDSixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFzQixpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBQ3hFOztHQUVHO0FBSUgsTUFBTSxPQUFPLDhCQUE4QjtJQXFDekMsY0FBYztJQUNkLFlBQytCLHFCQUF3QztRQUF4QywwQkFBcUIsR0FBckIscUJBQXFCLENBQW1CO1FBcEN2RSxTQUFJLEdBQUcsbUNBQW1DLENBQUM7UUFFbkMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVc7WUFDdkQsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixpQkFBaUI7U0FDbEIsQ0FBQyxDQUFDO1FBRUssaUJBQVksR0FBRyxJQUFJLEdBQUcsQ0FDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM1QyxPQUFPO2dCQUNMLFNBQVM7Z0JBQ1QsR0FBRyxFQUFFO29CQUNILDZCQUE2QixDQUMzQiw0QkFBNEIsRUFDNUIsU0FBUyxFQUNULElBQUksQ0FBQyxTQUFnQixDQUN0QixDQUFDO29CQUNGLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQU1BLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtRQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxhQUFhLENBQUMsTUFPYjtRQUNDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxNQUFNLENBQUMsS0FBSyx5QkFBeUIsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FDdkMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUiw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQzlELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ25CLENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUM3QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixPQUFPLE1BQU0sQ0FDWCwyREFBMkQsS0FBSyw2QkFBNkIsQ0FDOUYsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsySEFsR1UsOEJBQThCOytIQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTsyRkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3Q0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgZnJvbSxcbiAgdGFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVWk1VGhlbWluZ1Byb3ZpZGVyLCBVaTVUaGVtaW5nU2VydmljZSB9IGZyb20gJ0B1aTUvdGhlbWluZy1uZ3gnO1xuaW1wb3J0IHsgcmVnaXN0ZXJUaGVtZVByb3BlcnRpZXNMb2FkZXIgfSBmcm9tICdAdWk1L3dlYmNvbXBvbmVudHMtYmFzZS9kaXN0L2Fzc2V0LXJlZ2lzdHJpZXMvVGhlbWVzLmpzJztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnQHVpNS93ZWJjb21wb25lbnRzLWJhc2UvZGlzdC9jb25maWcvVGhlbWUuanMnO1xuLyoqXG4gKiBUaGVtaW5nIHNlcnZpY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgdWk1L3dlYmNvbXBvbmVudHMtbmd4IGNvbXBvbmVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVaTVXZWJjb21wb25lbnRzVGhlbWluZ1NlcnZpY2VcbiAgaW1wbGVtZW50cyBVaTVUaGVtaW5nUHJvdmlkZXIsIE9uRGVzdHJveVxue1xuICBuYW1lID0gJ3VpNS13ZWJjb21wb25lbnRzLXRoZW1pbmctc2VydmljZSc7XG5cbiAgcHJpdmF0ZSBhdmFpbGFibGVUaGVtZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW1xuICAgICdzYXBfYmVsaXplJyxcbiAgICAnc2FwX2JlbGl6ZV9oY2InLFxuICAgICdzYXBfYmVsaXplX2hjdycsXG4gICAgJ3NhcF9maW9yaV8zJyxcbiAgICAnc2FwX2Zpb3JpXzNfZGFyaycsXG4gICAgJ3NhcF9maW9yaV8zX2hjYicsXG4gICAgJ3NhcF9maW9yaV8zX2hjdycsXG4gICAgJ3NhcF9ob3Jpem9uJyxcbiAgICAnc2FwX2hvcml6b25fZGFyaycsXG4gICAgJ3NhcF9ob3Jpem9uX2V4cCcsXG4gICAgJ3NhcF9ob3Jpem9uX2hjYicsXG4gICAgJ3NhcF9ob3Jpem9uX2hjdycsXG4gIF0pO1xuXG4gIHByaXZhdGUgdGhlbWVTZXR0ZXJzID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4+KFxuICAgIHRoaXMuYXZhaWxhYmxlVGhlbWVzJC52YWx1ZS5tYXAoKHRoZW1lTmFtZSkgPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhlbWVOYW1lLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcmVnaXN0ZXJUaGVtZVByb3BlcnRpZXNMb2FkZXIoXG4gICAgICAgICAgICAnQHVpNS93ZWJjb21wb25lbnRzLXRoZW1pbmcnLFxuICAgICAgICAgICAgdGhlbWVOYW1lLFxuICAgICAgICAgICAgdGhpcy5sb2FkVGhlbWUgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRUaGVtZSh0aGVtZU5hbWUpO1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSlcbiAgKTtcblxuICAvKiogQGhpZGRlbiAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9nbG9iYWxUaGVtaW5nU2VydmljZTogVWk1VGhlbWluZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fZ2xvYmFsVGhlbWluZ1NlcnZpY2U/LnJlZ2lzdGVyUHJvdmlkZXIodGhpcyk7XG4gIH1cblxuICAvKiogQGhpZGRlbiAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9nbG9iYWxUaGVtaW5nU2VydmljZT8udW5yZWdpc3RlclByb3ZpZGVyKHRoaXMpO1xuICB9XG5cbiAgc3VwcG9ydHNUaGVtZSh0aGVtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlVGhlbWVzKCkucGlwZShcbiAgICAgIG1hcCgodGhlbWVzKSA9PiB0aGVtZXMuaW5jbHVkZXModGhlbWUpKVxuICAgICk7XG4gIH1cblxuICBnZXRBdmFpbGFibGVUaGVtZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZVRoZW1lcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3Qgc2V0dGVyID0gdGhpcy50aGVtZVNldHRlcnMuZ2V0KHRoZW1lKTtcbiAgICBpZiAoc2V0dGVyKSB7XG4gICAgICByZXR1cm4gc2V0dGVyKCk7XG4gICAgfVxuICAgIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICByZWdpc3RlclRoZW1lKHBhcmFtczoge1xuICAgIHRoZW1lOiBzdHJpbmc7XG4gICAgc2V0VGhlbWU6ICgpID0+IE9ic2VydmFibGU8e1xuICAgICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgfT47XG4gIH0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aGVtZVNldHRlcnMuaGFzKHBhcmFtcy50aGVtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlbWUgJHtwYXJhbXMudGhlbWV9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5gKTtcbiAgICB9XG4gICAgdGhpcy50aGVtZVNldHRlcnMuc2V0KHBhcmFtcy50aGVtZSwgKCkgPT5cbiAgICAgIHBhcmFtcy5zZXRUaGVtZSgpLnBpcGUoXG4gICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgIHJlZ2lzdGVyVGhlbWVQcm9wZXJ0aWVzTG9hZGVyKHIucGFja2FnZU5hbWUsIHBhcmFtcy50aGVtZSwgKCkgPT5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gZnJvbShzZXRUaGVtZShwYXJhbXMudGhlbWUpKSksXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hdmFpbGFibGVUaGVtZXMkLm5leHQoWy4uLnRoaXMudGhlbWVTZXR0ZXJzLmtleXMoKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkVGhlbWUodGhlbWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGltcG9ydChcbiAgICAgIGBAdWk1L3dlYmNvbXBvbmVudHMtdGhlbWluZy9kaXN0L2dlbmVyYXRlZC9hc3NldHMvdGhlbWVzLyR7dGhlbWV9L3BhcmFtZXRlcnMtYnVuZGxlLmNzcy5qc29uYFxuICAgICkudGhlbigobW9kdWxlKSA9PiB7XG4gICAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Output, forwardRef, NgModule, Injectable, Optional } from '@angular/core';
3
3
  import '@ui5/webcomponents-fiori/dist/Bar.js';
4
4
  import '@ui5/webcomponents-fiori/dist/BarcodeScannerDialog.js';
5
- import { NEVER, Subject, BehaviorSubject, filter, tap, map, distinctUntilChanged, switchMap, takeUntil, merge, fromEvent } from 'rxjs';
5
+ import { NEVER, Subject, BehaviorSubject, filter, tap, map, distinctUntilChanged, switchMap, takeUntil, merge, fromEvent, of, from } from 'rxjs';
6
6
  import '@ui5/webcomponents-fiori/dist/DynamicSideContent.js';
7
7
  import '@ui5/webcomponents-fiori/dist/FilterItem.js';
8
8
  import '@ui5/webcomponents-fiori/dist/FilterItemOption.js';
@@ -111,7 +111,6 @@ import '@ui5/webcomponents/dist/TreeItem.js';
111
111
  import '@ui5/webcomponents/dist/TreeItemCustom.js';
112
112
  import '@ui5/webcomponents/dist/WheelSlider.js';
113
113
  import '@ui5/webcomponents/dist/YearPicker.js';
114
- import { __awaiter } from 'tslib';
115
114
  import { registerThemePropertiesLoader } from '@ui5/webcomponents-base/dist/asset-registries/Themes.js';
116
115
  import { setTheme } from '@ui5/webcomponents-base/dist/config/Theme.js';
117
116
  import * as i1 from '@ui5/theming-ngx';
@@ -16962,6 +16961,31 @@ class Ui5WebcomponentsThemingService {
16962
16961
  constructor(_globalThemingService) {
16963
16962
  var _a;
16964
16963
  this._globalThemingService = _globalThemingService;
16964
+ this.name = 'ui5-webcomponents-theming-service';
16965
+ this.availableThemes$ = new BehaviorSubject([
16966
+ 'sap_belize',
16967
+ 'sap_belize_hcb',
16968
+ 'sap_belize_hcw',
16969
+ 'sap_fiori_3',
16970
+ 'sap_fiori_3_dark',
16971
+ 'sap_fiori_3_hcb',
16972
+ 'sap_fiori_3_hcw',
16973
+ 'sap_horizon',
16974
+ 'sap_horizon_dark',
16975
+ 'sap_horizon_exp',
16976
+ 'sap_horizon_hcb',
16977
+ 'sap_horizon_hcw',
16978
+ ]);
16979
+ this.themeSetters = new Map(this.availableThemes$.value.map((themeName) => {
16980
+ return [
16981
+ themeName,
16982
+ () => {
16983
+ registerThemePropertiesLoader('@ui5/webcomponents-theming', themeName, this.loadTheme);
16984
+ setTheme(themeName);
16985
+ return of(true);
16986
+ },
16987
+ ];
16988
+ }));
16965
16989
  (_a = this._globalThemingService) === null || _a === void 0 ? void 0 : _a.registerProvider(this);
16966
16990
  }
16967
16991
  /** @hidden */
@@ -16969,16 +16993,31 @@ class Ui5WebcomponentsThemingService {
16969
16993
  var _a;
16970
16994
  (_a = this._globalThemingService) === null || _a === void 0 ? void 0 : _a.unregisterProvider(this);
16971
16995
  }
16996
+ supportsTheme(theme) {
16997
+ return this.getAvailableThemes().pipe(map((themes) => themes.includes(theme)));
16998
+ }
16999
+ getAvailableThemes() {
17000
+ return this.availableThemes$.asObservable();
17001
+ }
16972
17002
  setTheme(theme) {
16973
- return __awaiter(this, void 0, void 0, function* () {
16974
- registerThemePropertiesLoader('@ui5/webcomponents-theming', theme, this.loadTheme);
16975
- setTheme(theme);
16976
- return true;
16977
- });
17003
+ const setter = this.themeSetters.get(theme);
17004
+ if (setter) {
17005
+ return setter();
17006
+ }
17007
+ return of(false);
17008
+ }
17009
+ registerTheme(params) {
17010
+ if (this.themeSetters.has(params.theme)) {
17011
+ throw new Error(`Theme ${params.theme} is already registered.`);
17012
+ }
17013
+ this.themeSetters.set(params.theme, () => params.setTheme().pipe(tap((r) => {
17014
+ registerThemePropertiesLoader(r.packageName, params.theme, () => Promise.resolve(r));
17015
+ }), switchMap(() => from(setTheme(params.theme))), map(() => true)));
17016
+ this.availableThemes$.next([...this.themeSetters.keys()]);
16978
17017
  }
16979
17018
  loadTheme(theme) {
16980
- return __awaiter(this, void 0, void 0, function* () {
16981
- return (yield import(`@ui5/webcomponents-theming/dist/generated/assets/themes/${theme}/parameters-bundle.css.json`)).default;
17019
+ return import(`@ui5/webcomponents-theming/dist/generated/assets/themes/${theme}/parameters-bundle.css.json`).then((module) => {
17020
+ return module.default;
16982
17021
  });
16983
17022
  }
16984
17023
  }