@smartbit4all/ng-client 4.5.39 → 4.5.41

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.
Files changed (29) hide show
  1. package/esm2022/lib/theme/theme.service.mjs +48 -0
  2. package/esm2022/lib/view-context/api/api/view.service.mjs +82 -1
  3. package/esm2022/lib/view-context/api/api-default/binaryContentData.mjs +2 -0
  4. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +1 -1
  5. package/esm2022/lib/view-context/api/model/models.mjs +4 -1
  6. package/esm2022/lib/view-context/api/model/shellProperties.mjs +13 -0
  7. package/esm2022/lib/view-context/api/model/themeDefinition.mjs +2 -0
  8. package/esm2022/lib/view-context/api/model/themeDescriptor.mjs +2 -0
  9. package/esm2022/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.mjs +35 -0
  10. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +4 -3
  11. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +6 -5
  12. package/esm2022/lib/view-context/smart-view-context.module.mjs +5 -2
  13. package/esm2022/lib/view-context/smart-view-context.service.mjs +14 -5
  14. package/fesm2022/smartbit4all-ng-client.mjs +188 -10
  15. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  16. package/lib/theme/theme.service.d.ts +17 -0
  17. package/lib/view-context/api/api/view.service.d.ts +37 -0
  18. package/lib/view-context/api/api-default/binaryContentData.d.ts +2 -0
  19. package/lib/view-context/api/model/deviceInfo.d.ts +1 -0
  20. package/lib/view-context/api/model/models.d.ts +3 -0
  21. package/lib/view-context/api/model/shellProperties.d.ts +15 -0
  22. package/lib/view-context/api/model/themeDefinition.d.ts +22 -0
  23. package/lib/view-context/api/model/themeDescriptor.d.ts +16 -0
  24. package/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.d.ts +16 -0
  25. package/lib/view-context/smart-view-context.module.d.ts +49 -48
  26. package/lib/view-context/smart-view-context.service.d.ts +4 -2
  27. package/package.json +1 -1
  28. package/smartbit4all-ng-client-4.5.41.tgz +0 -0
  29. package/smartbit4all-ng-client-4.5.39.tgz +0 -0
@@ -0,0 +1,48 @@
1
+ import { computed, Injectable, signal } from '@angular/core';
2
+ import { tap, lastValueFrom } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../view-context/api/api/api";
5
+ const THEME_CACHE_KEY = 'themeCache';
6
+ export class ThemeService {
7
+ constructor(viewService) {
8
+ this.viewService = viewService;
9
+ this._currentTheme = signal(localStorage.getItem(THEME_CACHE_KEY) ??
10
+ (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'));
11
+ this.currentTheme = computed(() => this._currentTheme());
12
+ this.themes = [];
13
+ }
14
+ setTheme(themeDescriptor) {
15
+ if (!themeDescriptor.name) {
16
+ throw new Error('No theme name given.');
17
+ }
18
+ document.documentElement.className = 'theme-' + themeDescriptor.name;
19
+ localStorage.setItem(THEME_CACHE_KEY, themeDescriptor.name);
20
+ this._currentTheme.set(themeDescriptor.name);
21
+ }
22
+ getThemes() {
23
+ return this.viewService.getThemes().pipe(tap((themes) => (this.themes = themes)));
24
+ }
25
+ async getSelectedTheme() {
26
+ if (this.themes.length === 0) {
27
+ this.themes = await lastValueFrom(this.getThemes());
28
+ }
29
+ var themeName = localStorage.getItem(THEME_CACHE_KEY) ?? this.getSystemTheme();
30
+ var theme = this.themes.find((t) => t.name === themeName) ?? this.themes.find((t) => t.name === 'light');
31
+ if (!theme) {
32
+ throw new Error('No theme found.');
33
+ }
34
+ return theme;
35
+ }
36
+ getSystemTheme() {
37
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ThemeService, deps: [{ token: i1.ViewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ThemeService, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root',
46
+ }]
47
+ }], ctorParameters: () => [{ type: i1.ViewService }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3RoZW1lL3RoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBYyxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJdEQsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDO0FBS3JDLE1BQU0sT0FBTyxZQUFZO0lBU3ZCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUnBDLGtCQUFhLEdBQUcsTUFBTSxDQUM1QixZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNuQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQ2pGLENBQUM7UUFDSyxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVuRCxXQUFNLEdBQXNCLEVBQUUsQ0FBQztJQUVRLENBQUM7SUFFekMsUUFBUSxDQUFDLGVBQWdDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztRQUNyRSxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvRSxJQUFJLEtBQUssR0FDUCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUUvRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN0RixDQUFDOytHQTNDVSxZQUFZO21IQUFaLFlBQVksY0FGWCxNQUFNOzs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaS9hcGkvYXBpJztcclxuaW1wb3J0IHsgVGhlbWVEZXNjcmlwdG9yIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XHJcblxyXG5jb25zdCBUSEVNRV9DQUNIRV9LRVkgPSAndGhlbWVDYWNoZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGhlbWVTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9jdXJyZW50VGhlbWUgPSBzaWduYWw8c3RyaW5nPihcclxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRIRU1FX0NBQ0hFX0tFWSkgPz9cclxuICAgICAgKHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCcpXHJcbiAgKTtcclxuICBwdWJsaWMgY3VycmVudFRoZW1lID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY3VycmVudFRoZW1lKCkpO1xyXG5cclxuICBwcml2YXRlIHRoZW1lczogVGhlbWVEZXNjcmlwdG9yW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3U2VydmljZTogVmlld1NlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBzZXRUaGVtZSh0aGVtZURlc2NyaXB0b3I6IFRoZW1lRGVzY3JpcHRvcik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGVtZURlc2NyaXB0b3IubmFtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRoZW1lIG5hbWUgZ2l2ZW4uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTmFtZSA9ICd0aGVtZS0nICsgdGhlbWVEZXNjcmlwdG9yLm5hbWU7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUSEVNRV9DQUNIRV9LRVksIHRoZW1lRGVzY3JpcHRvci5uYW1lKTtcclxuICAgIHRoaXMuX2N1cnJlbnRUaGVtZS5zZXQodGhlbWVEZXNjcmlwdG9yLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRoZW1lcygpOiBPYnNlcnZhYmxlPFRoZW1lRGVzY3JpcHRvcltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3U2VydmljZS5nZXRUaGVtZXMoKS5waXBlKHRhcCgodGhlbWVzKSA9PiAodGhpcy50aGVtZXMgPSB0aGVtZXMpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0ZWRUaGVtZSgpOiBQcm9taXNlPFRoZW1lRGVzY3JpcHRvcj4ge1xyXG4gICAgaWYgKHRoaXMudGhlbWVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnRoZW1lcyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5nZXRUaGVtZXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHRoZW1lTmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRIRU1FX0NBQ0hFX0tFWSkgPz8gdGhpcy5nZXRTeXN0ZW1UaGVtZSgpO1xyXG4gICAgdmFyIHRoZW1lID1cclxuICAgICAgdGhpcy50aGVtZXMuZmluZCgodCkgPT4gdC5uYW1lID09PSB0aGVtZU5hbWUpID8/IHRoaXMudGhlbWVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gJ2xpZ2h0Jyk7XHJcblxyXG4gICAgaWYgKCF0aGVtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRoZW1lIGZvdW5kLicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGVtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTeXN0ZW1UaGVtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==