@coreui/angular-pro 5.0.0-alpha.7 → 5.0.0-alpha.8
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.
- package/esm2022/lib/grid/row.directive.mjs +4 -4
- package/esm2022/lib/services/color-mode.service.mjs +79 -0
- package/esm2022/lib/services/in-memory-storage.service.mjs +33 -0
- package/esm2022/lib/services/local-storage.service.mjs +47 -0
- package/esm2022/lib/services/public_api.mjs +4 -1
- package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +2 -2
- package/fesm2022/coreui-angular-pro.mjs +153 -8
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/services/color-mode.service.d.ts +17 -0
- package/lib/services/in-memory-storage.service.d.ts +13 -0
- package/lib/services/local-storage.service.d.ts +18 -0
- package/lib/services/public_api.d.ts +3 -0
- package/package.json +2 -2
|
@@ -6,14 +6,14 @@ export class RowDirective {
|
|
|
6
6
|
const cols = this.xs;
|
|
7
7
|
const classes = {
|
|
8
8
|
row: true,
|
|
9
|
-
[`row-cols-${cols}`]: !!cols
|
|
9
|
+
[`row-cols-${cols}`]: !!cols
|
|
10
10
|
};
|
|
11
11
|
Object.keys(BreakpointInfix).forEach(breakpoint => {
|
|
12
12
|
// @ts-ignore
|
|
13
13
|
const value = this[breakpoint];
|
|
14
14
|
if ((typeof value === 'number') || (typeof value === 'string')) {
|
|
15
|
-
const infix = breakpoint === 'xs' ? '' : breakpoint
|
|
16
|
-
classes[`row-cols
|
|
15
|
+
const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`;
|
|
16
|
+
classes[`row-cols${infix}-${value}`] = !!value;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
return classes;
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
43
43
|
type: HostBinding,
|
|
44
44
|
args: ['class']
|
|
45
45
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZC9yb3cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBT2xELE1BQU0sT0FBTyxZQUFZO0lBZ0N2QixJQUNJLFdBQVc7UUFFYixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBRXJCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLEdBQUcsRUFBRSxJQUFJO1lBQ1QsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUk7U0FDN0IsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hELGFBQWE7WUFDYixNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUU7Z0JBQzlELE1BQU0sS0FBSyxHQUFXLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLFdBQVcsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUNoRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0FwRFUsWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBTVUsRUFBRTtzQkFBVixLQUFLO2dCQUtHLEVBQUU7c0JBQVYsS0FBSztnQkFLRyxFQUFFO3NCQUFWLEtBQUs7Z0JBS0csRUFBRTtzQkFBVixLQUFLO2dCQUtHLEVBQUU7c0JBQVYsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCcmVha3BvaW50SW5maXggfSBmcm9tICcuLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgSVJvdywgTnVtYmVyT2ZDb2x1bW5zIH0gZnJvbSAnLi9yb3cudHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjUm93XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUm93RGlyZWN0aXZlIGltcGxlbWVudHMgSVJvdyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMvb2Zmc2V0L29yZGVyIG9uIGV4dHJhIHNtYWxsIGRldmljZXMgKDw1NzZweCkuXG4gICAqIEB0eXBlIHt7IGNvbHM6ICdhdXRvJyB8IG51bWJlciB9XG4gICAqL1xuICBASW5wdXQoKSB4cz86IE51bWJlck9mQ29sdW1ucztcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucy9vZmZzZXQvb3JkZXIgb24gc21hbGwgZGV2aWNlcyAoPDc2OHB4KS5cbiAgICogQHR5cGUge3sgY29sczogJ2F1dG8nIHwgbnVtYmVyIH1cbiAgICovXG4gIEBJbnB1dCgpIHNtPzogTnVtYmVyT2ZDb2x1bW5zO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zL29mZnNldC9vcmRlciBvbiBtZWRpdW0gZGV2aWNlcyAoPDk5MnB4KS5cbiAgICogQHR5cGUge3sgY29sczogJ2F1dG8nIHwgbnVtYmVyIH1cbiAgICovXG4gIEBJbnB1dCgpIG1kPzogTnVtYmVyT2ZDb2x1bW5zO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zL29mZnNldC9vcmRlciBvbiBsYXJnZSBkZXZpY2VzICg8MTIwMHB4KS5cbiAgICogQHR5cGUge3sgY29sczogJ2F1dG8nIHwgbnVtYmVyIH1cbiAgICovXG4gIEBJbnB1dCgpIGxnPzogTnVtYmVyT2ZDb2x1bW5zO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zL29mZnNldC9vcmRlciBvbiBYLUxhcmdlIGRldmljZXMgKDwxNDAwcHgpLlxuICAgKiBAdHlwZSB7eyBjb2xzOiAnYXV0bycgfCBudW1iZXIgfVxuICAgKi9cbiAgQElucHV0KCkgeGw/OiBOdW1iZXJPZkNvbHVtbnM7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMvb2Zmc2V0L29yZGVyIG9uIFhYLUxhcmdlIGRldmljZXMgKOKJpTE0MDBweCkuXG4gICAqIEB0eXBlIHt7IGNvbHM6ICdhdXRvJyB8IG51bWJlciB9XG4gICAqL1xuICBASW5wdXQoKSB4eGw/OiBOdW1iZXJPZkNvbHVtbnM7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xuXG4gICAgY29uc3QgY29scyA9IHRoaXMueHM7XG5cbiAgICBjb25zdCBjbGFzc2VzOiBhbnkgPSB7XG4gICAgICByb3c6IHRydWUsXG4gICAgICBbYHJvdy1jb2xzLSR7Y29sc31gXTogISFjb2xzXG4gICAgfTtcblxuICAgIE9iamVjdC5rZXlzKEJyZWFrcG9pbnRJbmZpeCkuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHZhbHVlOiBhbnkgPSB0aGlzW2JyZWFrcG9pbnRdO1xuICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB8fCAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgY29uc3QgaW5maXg6IHN0cmluZyA9IGJyZWFrcG9pbnQgPT09ICd4cycgPyAnJyA6IGAtJHticmVha3BvaW50fWA7XG4gICAgICAgIGNsYXNzZXNbYHJvdy1jb2xzJHtpbmZpeH0tJHt2YWx1ZX1gXSA9ICEhdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { DestroyRef, effect, inject, Injectable, signal } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { tap } from 'rxjs/operators';
|
|
6
|
+
import { LocalStorageService } from './local-storage.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class ColorModeService {
|
|
9
|
+
#destroyRef;
|
|
10
|
+
#document;
|
|
11
|
+
#window;
|
|
12
|
+
#activatedRoute;
|
|
13
|
+
#localStorage;
|
|
14
|
+
constructor() {
|
|
15
|
+
this.#destroyRef = inject(DestroyRef);
|
|
16
|
+
this.#document = inject(DOCUMENT);
|
|
17
|
+
this.#window = this.#document.defaultView;
|
|
18
|
+
this.#activatedRoute = inject(ActivatedRoute);
|
|
19
|
+
this.#localStorage = inject(LocalStorageService);
|
|
20
|
+
this.eventName = signal('ColorSchemeChange');
|
|
21
|
+
this.localStorageItemName = signal('coreui-angular-color-scheme');
|
|
22
|
+
this.localStorageItemName$ = toObservable(this.localStorageItemName);
|
|
23
|
+
this.colorMode = signal('light');
|
|
24
|
+
this.colorModeEffect = effect(() => {
|
|
25
|
+
if (this.colorMode()) {
|
|
26
|
+
this.setStoredTheme(this.localStorageItemName(), this.colorMode());
|
|
27
|
+
this.setTheme(this.colorMode());
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
this.#activatedRoute.queryParams
|
|
31
|
+
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
32
|
+
const theme = params['theme']?.match(/^[A-Za-z0-9\s]+/)[0];
|
|
33
|
+
if (theme) {
|
|
34
|
+
this.colorMode.set(theme);
|
|
35
|
+
}
|
|
36
|
+
}))
|
|
37
|
+
.subscribe();
|
|
38
|
+
this.localStorageItemName$
|
|
39
|
+
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
40
|
+
this.colorMode.set(this.getPreferredColorScheme(params));
|
|
41
|
+
}))
|
|
42
|
+
.subscribe();
|
|
43
|
+
}
|
|
44
|
+
getStoredTheme(localStorageItemName) {
|
|
45
|
+
return this.#localStorage.getItem(localStorageItemName);
|
|
46
|
+
}
|
|
47
|
+
setStoredTheme(localStorageItemName, colorMode) {
|
|
48
|
+
return this.#localStorage.setItem(localStorageItemName, colorMode);
|
|
49
|
+
}
|
|
50
|
+
getPreferredColorScheme(localStorageItemName) {
|
|
51
|
+
if (this.#window === undefined) {
|
|
52
|
+
return 'light';
|
|
53
|
+
}
|
|
54
|
+
const storedTheme = this.getStoredTheme(localStorageItemName);
|
|
55
|
+
if (storedTheme) {
|
|
56
|
+
return storedTheme;
|
|
57
|
+
}
|
|
58
|
+
return this.#window?.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
59
|
+
}
|
|
60
|
+
;
|
|
61
|
+
setTheme(colorMode) {
|
|
62
|
+
this.#document.documentElement.dataset['coreuiTheme'] =
|
|
63
|
+
colorMode === 'auto' && this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches
|
|
64
|
+
? 'dark'
|
|
65
|
+
: colorMode;
|
|
66
|
+
const event = new Event(this.eventName());
|
|
67
|
+
this.#document.documentElement.dispatchEvent(event);
|
|
68
|
+
}
|
|
69
|
+
;
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
71
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, providedIn: 'root' }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, decorators: [{
|
|
74
|
+
type: Injectable,
|
|
75
|
+
args: [{
|
|
76
|
+
providedIn: 'root'
|
|
77
|
+
}]
|
|
78
|
+
}], ctorParameters: () => [] });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb2xvci1tb2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUVsQixXQUFXLENBQWtDO0lBQzdDLFNBQVMsQ0FBOEI7SUFDdkMsT0FBTyxDQUE4QjtJQUNyQyxlQUFlLENBQTBDO0lBQ3pELGFBQWEsQ0FBb0Q7SUFlMUU7UUFuQlMsZ0JBQVcsR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsY0FBUyxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDckMsb0JBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELGtCQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpFLGNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMs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LGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbG9yTW9kZVNlcnZpY2Uge1xuXG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjZG9jdW1lbnQ6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcmVhZG9ubHkgI3dpbmRvdyA9IHRoaXMuI2RvY3VtZW50LmRlZmF1bHRWaWV3O1xuICByZWFkb25seSAjYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgI2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICByZWFkb25seSBldmVudE5hbWUgPSBzaWduYWwoJ0NvbG9yU2NoZW1lQ2hhbmdlJyk7XG4gIHJlYWRvbmx5IGxvY2FsU3RvcmFnZUl0ZW1OYW1lID0gc2lnbmFsKCdjb3JldWktYW5ndWxhci1jb2xvci1zY2hlbWUnKTtcbiAgcmVhZG9ubHkgbG9jYWxTdG9yYWdlSXRlbU5hbWUkID0gdG9PYnNlcnZhYmxlKHRoaXMubG9jYWxTdG9yYWdlSXRlbU5hbWUpO1xuXG4gIHJlYWRvbmx5IGNvbG9yTW9kZTogV3JpdGFibGVTaWduYWw8J2xpZ2h0JyB8ICdkYXJrJyB8ICdhdXRvJz4gPSBzaWduYWwoJ2xpZ2h0Jyk7XG5cbiAgcmVhZG9ubHkgY29sb3JNb2RlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jb2xvck1vZGUoKSkge1xuICAgICAgdGhpcy5zZXRTdG9yZWRUaGVtZSh0aGlzLmxvY2FsU3RvcmFnZUl0ZW1OYW1lKCksIHRoaXMuY29sb3JNb2RlKCkpO1xuICAgICAgdGhpcy5zZXRUaGVtZSh0aGlzLmNvbG9yTW9kZSgpKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2FjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgICB0YXAocGFyYW1zID0+IHtcbiAgICAgICAgICBjb25zdCB0aGVtZSA9IHBhcmFtc1sndGhlbWUnXT8ubWF0Y2goL15bQS1aYS16MC05XFxzXSsvKVswXTtcbiAgICAgICAgICBpZiAodGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29sb3JNb2RlLnNldCh0aGVtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VJdGVtTmFtZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgICAgIHRoaXMuY29sb3JNb2RlLnNldCh0aGlzLmdldFByZWZlcnJlZENvbG9yU2NoZW1lKHBhcmFtcykpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gIH1cblxuICBnZXRTdG9yZWRUaGVtZShsb2NhbFN0b3JhZ2VJdGVtTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZUl0ZW1OYW1lKTtcbiAgfVxuXG4gIHNldFN0b3JlZFRoZW1lKGxvY2FsU3RvcmFnZUl0ZW1OYW1lOiBzdHJpbmcsIGNvbG9yTW9kZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZUl0ZW1OYW1lLCBjb2xvck1vZGUpO1xuICB9XG5cbiAgZ2V0UHJlZmVycmVkQ29sb3JTY2hlbWUobG9jYWxTdG9yYWdlSXRlbU5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLiN3aW5kb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICdsaWdodCc7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVkVGhlbWUgPSB0aGlzLmdldFN0b3JlZFRoZW1lKGxvY2FsU3RvcmFnZUl0ZW1OYW1lKTtcblxuICAgIGlmIChzdG9yZWRUaGVtZSkge1xuICAgICAgcmV0dXJuIHN0b3JlZFRoZW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiN3aW5kb3c/Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgfTtcblxuICBzZXRUaGVtZShjb2xvck1vZGU6IHN0cmluZykge1xuICAgIHRoaXMuI2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0Wydjb3JldWlUaGVtZSddID1cbiAgICAgIGNvbG9yTW9kZSA9PT0gJ2F1dG8nICYmIHRoaXMuI2RvY3VtZW50LmRlZmF1bHRWaWV3Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlc1xuICAgICAgPyAnZGFyaydcbiAgICAgIDogY29sb3JNb2RlO1xuXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQodGhpcy5ldmVudE5hbWUoKSk7XG4gICAgdGhpcy4jZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class InMemoryStorageService {
|
|
4
|
+
#storage = new Map();
|
|
5
|
+
constructor() { }
|
|
6
|
+
setItem(key, data) {
|
|
7
|
+
this.#storage.set(key, JSON.stringify(data));
|
|
8
|
+
}
|
|
9
|
+
getItem(key) {
|
|
10
|
+
return this.#storage.has(key) ? JSON.parse(this.#storage.get(key) ?? 'null') : undefined;
|
|
11
|
+
}
|
|
12
|
+
removeItem(key) {
|
|
13
|
+
this.#storage.delete(key);
|
|
14
|
+
}
|
|
15
|
+
clear() {
|
|
16
|
+
this.#storage.clear();
|
|
17
|
+
}
|
|
18
|
+
get length() {
|
|
19
|
+
return this.#storage.size;
|
|
20
|
+
}
|
|
21
|
+
key(index) {
|
|
22
|
+
return Array.from(this.#storage.keys())[index];
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, providedIn: 'root' }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, decorators: [{
|
|
28
|
+
type: Injectable,
|
|
29
|
+
args: [{
|
|
30
|
+
providedIn: 'root'
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: () => [] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUVyQyxnQkFBZ0IsQ0FBQztJQUVWLE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0YsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQWE7UUFDdEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzhHQTVCVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbk1lbW9yeVN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgU3RvcmFnZSB7XG5cbiAgI3N0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI3N0b3JhZ2Uuc2V0KGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLiNzdG9yYWdlLmhhcyhrZXkpID8gSlNPTi5wYXJzZSh0aGlzLiNzdG9yYWdlLmdldChrZXkpID8/ICdudWxsJykgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3N0b3JhZ2UuZGVsZXRlKGtleSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy4jc3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3N0b3JhZ2Uuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBrZXkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3N0b3JhZ2Uua2V5cygpKVtpbmRleF07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { InMemoryStorageService } from './in-memory-storage.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LocalStorageService {
|
|
7
|
+
constructor(platformId, document) {
|
|
8
|
+
this.platformId = platformId;
|
|
9
|
+
this.document = document;
|
|
10
|
+
this.#data$ = new BehaviorSubject(null);
|
|
11
|
+
this.data$ = this.#data$.asObservable();
|
|
12
|
+
this.localStorage = isPlatformBrowser(this.platformId) && this.document.defaultView ? this.document.defaultView?.localStorage : new InMemoryStorageService();
|
|
13
|
+
}
|
|
14
|
+
#data$;
|
|
15
|
+
setItem(key, data) {
|
|
16
|
+
this.localStorage.setItem(key, JSON.stringify(data));
|
|
17
|
+
this.#data$.next({ key, data });
|
|
18
|
+
}
|
|
19
|
+
getItem(key) {
|
|
20
|
+
const data = JSON.parse(this.localStorage.getItem(key) ?? 'null');
|
|
21
|
+
this.#data$.next({ key, data });
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
removeItem(key) {
|
|
25
|
+
this.localStorage.removeItem(key);
|
|
26
|
+
this.#data$.next({ key, data: null });
|
|
27
|
+
}
|
|
28
|
+
clear() {
|
|
29
|
+
this.localStorage.clear();
|
|
30
|
+
this.#data$.next(null);
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, deps: [{ token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
36
|
+
type: Injectable,
|
|
37
|
+
args: [{
|
|
38
|
+
providedIn: 'root'
|
|
39
|
+
}]
|
|
40
|
+
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [PLATFORM_ID]
|
|
43
|
+
}] }, { type: Document, decorators: [{
|
|
44
|
+
type: Inject,
|
|
45
|
+
args: [DOCUMENT]
|
|
46
|
+
}] }] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUtyRSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQytCLFVBQWtCLEVBQ3JCLFFBQWtCO1FBRGYsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSzlDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBb0MsSUFBSSxDQUFDLENBQUM7UUFDL0QsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFKeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQy9KLENBQUM7SUFFRCxNQUFNLENBQWdFO0lBRy9ELE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs4R0FqQ1UsbUJBQW1CLGtCQUtwQixXQUFXLGFBQ1gsUUFBUTtrSEFOUCxtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5NZW1vcnlTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuXG4gIGxvY2FsU3RvcmFnZTogU3RvcmFnZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZSA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyA/IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LmxvY2FsU3RvcmFnZSA6IG5ldyBJbk1lbW9yeVN0b3JhZ2VTZXJ2aWNlKCk7XG4gIH1cblxuICAjZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsga2V5OiBzdHJpbmcsIGRhdGE6IGFueSB9IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBkYXRhJCA9IHRoaXMuI2RhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHB1YmxpYyBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIHRoaXMuI2RhdGEkLm5leHQoeyBrZXksIGRhdGEgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpID8/ICdudWxsJyk7XG4gICAgdGhpcy4jZGF0YSQubmV4dCh7IGtleSwgZGF0YSB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIHRoaXMuI2RhdGEkLm5leHQoeyBrZXksIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLiNkYXRhJC5uZXh0KG51bGwpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { IntersectionService } from './intersection.service';
|
|
2
2
|
export { ListenersService } from './listeners.service';
|
|
3
3
|
export { ClassToggleService } from './class-toggle.service';
|
|
4
|
-
|
|
4
|
+
export { LocalStorageService } from './local-storage.service';
|
|
5
|
+
export { InMemoryStorageService } from './in-memory-storage.service';
|
|
6
|
+
export { ColorModeService } from './color-mode.service';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQTZCLE1BQU0sd0JBQXdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW50ZXJzZWN0aW9uU2VydmljZSwgSUludGVyc2VjdGlvbk9ic2VydmVySW5pdCB9IGZyb20gJy4vaW50ZXJzZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHsgTGlzdGVuZXJzU2VydmljZSwgSUxpc3RlbmVyc0NvbmZpZyB9IGZyb20gJy4vbGlzdGVuZXJzLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2xhc3NUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi9jbGFzcy10b2dnbGUuc2VydmljZSc7XG5leHBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHsgSW5NZW1vcnlTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBDb2xvck1vZGVTZXJ2aWNlIH0gZnJvbSAnLi9jb2xvci1tb2RlLnNlcnZpY2UnO1xuIl19
|
|
@@ -7,7 +7,7 @@ export class ShadowOnScrollDirective {
|
|
|
7
7
|
#destroyRef = inject(DestroyRef);
|
|
8
8
|
#document = inject(DOCUMENT);
|
|
9
9
|
#elementRef = inject(ElementRef);
|
|
10
|
-
#scrolled = signal(
|
|
10
|
+
#scrolled = signal(false);
|
|
11
11
|
#scrollEffect = effect(() => {
|
|
12
12
|
this.#elementRef.nativeElement.classList.toggle(this.#shadowClass, this.#scrolled());
|
|
13
13
|
});
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
45
45
|
}], ctorParameters: () => [], propDecorators: { cShadowOnScroll: [{
|
|
46
46
|
type: Input
|
|
47
47
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LW9uLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3V0aWxpdGllcy9zaGFkb3ctb24tc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0FBTS9DLE1BQU0sT0FBTyx1QkFBdUI7SUFFekIsV0FBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxTQUFTLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLFdBQVcsR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUE0QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkQsYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFnQjtJQUMzQixZQUFZLEdBQUcsV0FBVyxDQUFDO0lBRTNCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFDSSxlQUFlLENBQUMsS0FBcUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztpQkFDbkQsSUFBSSxDQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7aUJBQ0EsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFBQSxDQUFDOzhHQW5DUyx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBc0JLLGVBQWU7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NTaGFkb3dPblNjcm9sbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNoYWRvd09uU2Nyb2xsRGlyZWN0aXZlIHtcblxuICByZWFkb25seSAjZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcmVhZG9ubHkgI2RvY3VtZW50OiBEb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSAjc2Nyb2xsZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSAjc2Nyb2xsRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLiNzaGFkb3dDbGFzcywgdGhpcy4jc2Nyb2xsZWQoKSk7XG4gIH0pO1xuXG4gICNvYnNlcnZhYmxlITogU3Vic2NyaXB0aW9uO1xuICAjc2hhZG93Q2xhc3MgPSAnc2hhZG93LXNtJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLiNzY3JvbGxFZmZlY3Q/LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjU2hhZG93T25TY3JvbGwodmFsdWU6ICdzbScgfCAnbGcnIHwgJ25vbmUnIHwgYm9vbGVhbikge1xuICAgIHRoaXMuI3Njcm9sbGVkLnNldChmYWxzZSk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNzaGFkb3dDbGFzcyA9IHZhbHVlID09PSB0cnVlID8gJ3NoYWRvdycgOiBgc2hhZG93LSR7dmFsdWV9YDtcbiAgICAgIHRoaXMuI29ic2VydmFibGUgPSBmcm9tRXZlbnQodGhpcy4jZG9jdW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHNjcm9sbGVkID0+IHtcbiAgICAgICAgICB0aGlzLiNzY3JvbGxlZC5zZXQodGhpcy4jZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA+IDApO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jb2JzZXJ2YWJsZT8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Directive, Input, ElementRef, inject, Renderer2, booleanAttribute, NgModule, HostBinding, Injectable, Component, EventEmitter, Output, ContentChildren, HostListener, DestroyRef, signal, effect, RendererFactory2, Pipe, computed, numberAttribute, ViewChildren, PLATFORM_ID, Inject, ViewChild, forwardRef, Optional, ContentChild, ChangeDetectionStrategy, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
4
4
|
import * as i3 from '@angular/common';
|
|
5
|
-
import { NgTemplateOutlet, NgIf, DOCUMENT, NgClass, NgForOf, AsyncPipe, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, isPlatformServer, CommonModule, formatDate, I18nPluralPipe,
|
|
5
|
+
import { NgTemplateOutlet, NgIf, DOCUMENT, NgClass, NgForOf, AsyncPipe, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, isPlatformServer, isPlatformBrowser, CommonModule, formatDate, I18nPluralPipe, JsonPipe } from '@angular/common';
|
|
6
6
|
import * as i1 from '@angular/animations';
|
|
7
7
|
import { animate, animation, style, useAnimation, state, transition, trigger, query, group } from '@angular/animations';
|
|
8
|
-
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
8
|
+
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
9
9
|
import { fromEvent, Subject, BehaviorSubject, Observable, skip, distinctUntilChanged as distinctUntilChanged$1, map as map$1, debounceTime as debounceTime$1 } from 'rxjs';
|
|
10
10
|
import * as i1$1 from '@angular/router';
|
|
11
|
-
import { RouterModule, NavigationEnd, RouterLink } from '@angular/router';
|
|
11
|
+
import { RouterModule, NavigationEnd, ActivatedRoute, RouterLink } from '@angular/router';
|
|
12
12
|
import { filter, tap, distinctUntilChanged, take, finalize, withLatestFrom, zipWith, debounceTime, map, delay, combineLatestWith } from 'rxjs/operators';
|
|
13
13
|
import * as i1$2 from '@angular/cdk/a11y';
|
|
14
14
|
import { FocusMonitor, A11yModule, FocusKeyManager } from '@angular/cdk/a11y';
|
|
@@ -1167,7 +1167,7 @@ class ShadowOnScrollDirective {
|
|
|
1167
1167
|
#destroyRef = inject(DestroyRef);
|
|
1168
1168
|
#document = inject(DOCUMENT);
|
|
1169
1169
|
#elementRef = inject(ElementRef);
|
|
1170
|
-
#scrolled = signal(
|
|
1170
|
+
#scrolled = signal(false);
|
|
1171
1171
|
#scrollEffect = effect(() => {
|
|
1172
1172
|
this.#elementRef.nativeElement.classList.toggle(this.#shadowClass, this.#scrolled());
|
|
1173
1173
|
});
|
|
@@ -4090,6 +4090,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
4090
4090
|
args: [DOCUMENT]
|
|
4091
4091
|
}] }, { type: i0.RendererFactory2 }] });
|
|
4092
4092
|
|
|
4093
|
+
class InMemoryStorageService {
|
|
4094
|
+
#storage = new Map();
|
|
4095
|
+
constructor() { }
|
|
4096
|
+
setItem(key, data) {
|
|
4097
|
+
this.#storage.set(key, JSON.stringify(data));
|
|
4098
|
+
}
|
|
4099
|
+
getItem(key) {
|
|
4100
|
+
return this.#storage.has(key) ? JSON.parse(this.#storage.get(key) ?? 'null') : undefined;
|
|
4101
|
+
}
|
|
4102
|
+
removeItem(key) {
|
|
4103
|
+
this.#storage.delete(key);
|
|
4104
|
+
}
|
|
4105
|
+
clear() {
|
|
4106
|
+
this.#storage.clear();
|
|
4107
|
+
}
|
|
4108
|
+
get length() {
|
|
4109
|
+
return this.#storage.size;
|
|
4110
|
+
}
|
|
4111
|
+
key(index) {
|
|
4112
|
+
return Array.from(this.#storage.keys())[index];
|
|
4113
|
+
}
|
|
4114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4115
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, providedIn: 'root' }); }
|
|
4116
|
+
}
|
|
4117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InMemoryStorageService, decorators: [{
|
|
4118
|
+
type: Injectable,
|
|
4119
|
+
args: [{
|
|
4120
|
+
providedIn: 'root'
|
|
4121
|
+
}]
|
|
4122
|
+
}], ctorParameters: () => [] });
|
|
4123
|
+
|
|
4124
|
+
class LocalStorageService {
|
|
4125
|
+
constructor(platformId, document) {
|
|
4126
|
+
this.platformId = platformId;
|
|
4127
|
+
this.document = document;
|
|
4128
|
+
this.#data$ = new BehaviorSubject(null);
|
|
4129
|
+
this.data$ = this.#data$.asObservable();
|
|
4130
|
+
this.localStorage = isPlatformBrowser(this.platformId) && this.document.defaultView ? this.document.defaultView?.localStorage : new InMemoryStorageService();
|
|
4131
|
+
}
|
|
4132
|
+
#data$;
|
|
4133
|
+
setItem(key, data) {
|
|
4134
|
+
this.localStorage.setItem(key, JSON.stringify(data));
|
|
4135
|
+
this.#data$.next({ key, data });
|
|
4136
|
+
}
|
|
4137
|
+
getItem(key) {
|
|
4138
|
+
const data = JSON.parse(this.localStorage.getItem(key) ?? 'null');
|
|
4139
|
+
this.#data$.next({ key, data });
|
|
4140
|
+
return data;
|
|
4141
|
+
}
|
|
4142
|
+
removeItem(key) {
|
|
4143
|
+
this.localStorage.removeItem(key);
|
|
4144
|
+
this.#data$.next({ key, data: null });
|
|
4145
|
+
}
|
|
4146
|
+
clear() {
|
|
4147
|
+
this.localStorage.clear();
|
|
4148
|
+
this.#data$.next(null);
|
|
4149
|
+
}
|
|
4150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, deps: [{ token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4151
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }
|
|
4152
|
+
}
|
|
4153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
4154
|
+
type: Injectable,
|
|
4155
|
+
args: [{
|
|
4156
|
+
providedIn: 'root'
|
|
4157
|
+
}]
|
|
4158
|
+
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
4159
|
+
type: Inject,
|
|
4160
|
+
args: [PLATFORM_ID]
|
|
4161
|
+
}] }, { type: Document, decorators: [{
|
|
4162
|
+
type: Inject,
|
|
4163
|
+
args: [DOCUMENT]
|
|
4164
|
+
}] }] });
|
|
4165
|
+
|
|
4166
|
+
class ColorModeService {
|
|
4167
|
+
#destroyRef;
|
|
4168
|
+
#document;
|
|
4169
|
+
#window;
|
|
4170
|
+
#activatedRoute;
|
|
4171
|
+
#localStorage;
|
|
4172
|
+
constructor() {
|
|
4173
|
+
this.#destroyRef = inject(DestroyRef);
|
|
4174
|
+
this.#document = inject(DOCUMENT);
|
|
4175
|
+
this.#window = this.#document.defaultView;
|
|
4176
|
+
this.#activatedRoute = inject(ActivatedRoute);
|
|
4177
|
+
this.#localStorage = inject(LocalStorageService);
|
|
4178
|
+
this.eventName = signal('ColorSchemeChange');
|
|
4179
|
+
this.localStorageItemName = signal('coreui-angular-color-scheme');
|
|
4180
|
+
this.localStorageItemName$ = toObservable(this.localStorageItemName);
|
|
4181
|
+
this.colorMode = signal('light');
|
|
4182
|
+
this.colorModeEffect = effect(() => {
|
|
4183
|
+
if (this.colorMode()) {
|
|
4184
|
+
this.setStoredTheme(this.localStorageItemName(), this.colorMode());
|
|
4185
|
+
this.setTheme(this.colorMode());
|
|
4186
|
+
}
|
|
4187
|
+
});
|
|
4188
|
+
this.#activatedRoute.queryParams
|
|
4189
|
+
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
4190
|
+
const theme = params['theme']?.match(/^[A-Za-z0-9\s]+/)[0];
|
|
4191
|
+
if (theme) {
|
|
4192
|
+
this.colorMode.set(theme);
|
|
4193
|
+
}
|
|
4194
|
+
}))
|
|
4195
|
+
.subscribe();
|
|
4196
|
+
this.localStorageItemName$
|
|
4197
|
+
.pipe(takeUntilDestroyed(this.#destroyRef), tap(params => {
|
|
4198
|
+
this.colorMode.set(this.getPreferredColorScheme(params));
|
|
4199
|
+
}))
|
|
4200
|
+
.subscribe();
|
|
4201
|
+
}
|
|
4202
|
+
getStoredTheme(localStorageItemName) {
|
|
4203
|
+
return this.#localStorage.getItem(localStorageItemName);
|
|
4204
|
+
}
|
|
4205
|
+
setStoredTheme(localStorageItemName, colorMode) {
|
|
4206
|
+
return this.#localStorage.setItem(localStorageItemName, colorMode);
|
|
4207
|
+
}
|
|
4208
|
+
getPreferredColorScheme(localStorageItemName) {
|
|
4209
|
+
if (this.#window === undefined) {
|
|
4210
|
+
return 'light';
|
|
4211
|
+
}
|
|
4212
|
+
const storedTheme = this.getStoredTheme(localStorageItemName);
|
|
4213
|
+
if (storedTheme) {
|
|
4214
|
+
return storedTheme;
|
|
4215
|
+
}
|
|
4216
|
+
return this.#window?.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
4217
|
+
}
|
|
4218
|
+
;
|
|
4219
|
+
setTheme(colorMode) {
|
|
4220
|
+
this.#document.documentElement.dataset['coreuiTheme'] =
|
|
4221
|
+
colorMode === 'auto' && this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches
|
|
4222
|
+
? 'dark'
|
|
4223
|
+
: colorMode;
|
|
4224
|
+
const event = new Event(this.eventName());
|
|
4225
|
+
this.#document.documentElement.dispatchEvent(event);
|
|
4226
|
+
}
|
|
4227
|
+
;
|
|
4228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4229
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, providedIn: 'root' }); }
|
|
4230
|
+
}
|
|
4231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ColorModeService, decorators: [{
|
|
4232
|
+
type: Injectable,
|
|
4233
|
+
args: [{
|
|
4234
|
+
providedIn: 'root'
|
|
4235
|
+
}]
|
|
4236
|
+
}], ctorParameters: () => [] });
|
|
4237
|
+
|
|
4093
4238
|
class CarouselService {
|
|
4094
4239
|
constructor() {
|
|
4095
4240
|
this.carouselIndex = new BehaviorSubject({});
|
|
@@ -8614,14 +8759,14 @@ class RowDirective {
|
|
|
8614
8759
|
const cols = this.xs;
|
|
8615
8760
|
const classes = {
|
|
8616
8761
|
row: true,
|
|
8617
|
-
[`row-cols-${cols}`]: !!cols
|
|
8762
|
+
[`row-cols-${cols}`]: !!cols
|
|
8618
8763
|
};
|
|
8619
8764
|
Object.keys(BreakpointInfix).forEach(breakpoint => {
|
|
8620
8765
|
// @ts-ignore
|
|
8621
8766
|
const value = this[breakpoint];
|
|
8622
8767
|
if ((typeof value === 'number') || (typeof value === 'string')) {
|
|
8623
|
-
const infix = breakpoint === 'xs' ? '' : breakpoint
|
|
8624
|
-
classes[`row-cols
|
|
8768
|
+
const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`;
|
|
8769
|
+
classes[`row-cols${infix}-${value}`] = !!value;
|
|
8625
8770
|
}
|
|
8626
8771
|
});
|
|
8627
8772
|
return classes;
|
|
@@ -17244,5 +17389,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
17244
17389
|
* Generated bundle index. Do not edit.
|
|
17245
17390
|
*/
|
|
17246
17391
|
|
|
17247
|
-
export { AccordionButtonDirective, AccordionComponent, AccordionItemComponent, AccordionModule, AlertComponent, AlertHeadingDirective, AlertLinkDirective, AlertModule, AlignDirective, AvatarComponent, AvatarModule, BackdropService, BadgeComponent, BadgeModule, BgColorDirective, BorderDirective, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbRouterComponent, BreadcrumbRouterService, BreakpointInfix, ButtonCloseDirective, ButtonDirective, ButtonGroupComponent, ButtonGroupModule, ButtonModule, ButtonToolbarComponent, CalendarComponent, CalendarModule, CalendarMonthComponent, CalendarNavigationComponent, CalloutComponent, CalloutModule, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderActionsComponent, CardHeaderComponent, CardImgDirective, CardImgOverlayComponent, CardLinkDirective, CardModule, CardSubtitleDirective, CardTextDirective, CardTitleDirective, CarouselCaptionComponent, CarouselComponent, CarouselConfig, CarouselControlComponent, CarouselIndicatorsComponent, CarouselInnerComponent, CarouselItemComponent, CarouselModule, ClassToggleService, ColComponent, ColDirective, CollapseDirective, CollapseModule, ContainerComponent, DatePickerComponent, DatePickerModule, DateRangePickerComponent, DateRangePickerModule, DropdownCloseDirective, DropdownComponent, DropdownDividerDirective, DropdownHeaderDirective, DropdownItemDirective, DropdownItemPlainDirective, DropdownMenuDirective, DropdownModule, DropdownService, DropdownToggleDirective, ElementCoverComponent, ElementCoverModule, FooterComponent, FooterModule, FormCheckComponent, FormCheckInputDirective, FormCheckLabelDirective, FormControlDirective, FormDirective, FormFeedbackComponent, FormFloatingDirective, FormLabelDirective, FormModule, FormSelectDirective, FormTextDirective, GridModule, GutterDirective, HeaderBrandComponent, HeaderComponent, HeaderDividerComponent, HeaderModule, HeaderNavComponent, HeaderTextComponent, HeaderTogglerDirective, HtmlAttributesDirective, ImgDirective, ImgModule, InputGroupComponent, InputGroupTextDirective, IntersectionService, ListGroupDirective, ListGroupItemDirective, ListGroupModule, ListenersService, LoadingButtonComponent, LoadingButtonModule, ModalBodyComponent, ModalComponent, ModalContentComponent, ModalDialogComponent, ModalFooterComponent, ModalHeaderComponent, ModalModule, ModalService, ModalTitleDirective, ModalToggleDirective, MultiSelectComponent, MultiSelectModule, MultiSelectOptgroupComponent, MultiSelectOptgroupLabelComponent, MultiSelectOptionComponent, NavComponent, NavItemComponent, NavLinkDirective, NavModule, NavbarBrandDirective, NavbarComponent, NavbarModule, NavbarNavComponent, NavbarTextComponent, NavbarTogglerDirective, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasModule, OffcanvasService, OffcanvasTitleDirective, OffcanvasToggleDirective, PageItemComponent, PageItemDirective, PageLinkDirective, PaginationComponent, PaginationModule, PlaceholderAnimationDirective, PlaceholderDirective, PlaceholderModule, PopoverComponent, PopoverDirective, PopoverModule, ProgressBarComponent, ProgressComponent, ProgressModule, RoundedDirective, RowComponent, RowDirective, ShadowOnScrollDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerDirective, SmartPaginationComponent, SmartPaginationModule, SmartTableComponent, SmartTableFilterComponent, SmartTableModule, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabPaneComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, TabsModule, TemplateIdDirective, TextColorDirective, ThemeDirective, TimePickerComponent, TimePickerModule, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
|
|
17392
|
+
export { AccordionButtonDirective, AccordionComponent, AccordionItemComponent, AccordionModule, AlertComponent, AlertHeadingDirective, AlertLinkDirective, AlertModule, AlignDirective, AvatarComponent, AvatarModule, BackdropService, BadgeComponent, BadgeModule, BgColorDirective, BorderDirective, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbRouterComponent, BreadcrumbRouterService, BreakpointInfix, ButtonCloseDirective, ButtonDirective, ButtonGroupComponent, ButtonGroupModule, ButtonModule, ButtonToolbarComponent, CalendarComponent, CalendarModule, CalendarMonthComponent, CalendarNavigationComponent, CalloutComponent, CalloutModule, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderActionsComponent, CardHeaderComponent, CardImgDirective, CardImgOverlayComponent, CardLinkDirective, CardModule, CardSubtitleDirective, CardTextDirective, CardTitleDirective, CarouselCaptionComponent, CarouselComponent, CarouselConfig, CarouselControlComponent, CarouselIndicatorsComponent, CarouselInnerComponent, CarouselItemComponent, CarouselModule, ClassToggleService, ColComponent, ColDirective, CollapseDirective, CollapseModule, ColorModeService, ContainerComponent, DatePickerComponent, DatePickerModule, DateRangePickerComponent, DateRangePickerModule, DropdownCloseDirective, DropdownComponent, DropdownDividerDirective, DropdownHeaderDirective, DropdownItemDirective, DropdownItemPlainDirective, DropdownMenuDirective, DropdownModule, DropdownService, DropdownToggleDirective, ElementCoverComponent, ElementCoverModule, FooterComponent, FooterModule, FormCheckComponent, FormCheckInputDirective, FormCheckLabelDirective, FormControlDirective, FormDirective, FormFeedbackComponent, FormFloatingDirective, FormLabelDirective, FormModule, FormSelectDirective, FormTextDirective, GridModule, GutterDirective, HeaderBrandComponent, HeaderComponent, HeaderDividerComponent, HeaderModule, HeaderNavComponent, HeaderTextComponent, HeaderTogglerDirective, HtmlAttributesDirective, ImgDirective, ImgModule, InMemoryStorageService, InputGroupComponent, InputGroupTextDirective, IntersectionService, ListGroupDirective, ListGroupItemDirective, ListGroupModule, ListenersService, LoadingButtonComponent, LoadingButtonModule, LocalStorageService, ModalBodyComponent, ModalComponent, ModalContentComponent, ModalDialogComponent, ModalFooterComponent, ModalHeaderComponent, ModalModule, ModalService, ModalTitleDirective, ModalToggleDirective, MultiSelectComponent, MultiSelectModule, MultiSelectOptgroupComponent, MultiSelectOptgroupLabelComponent, MultiSelectOptionComponent, NavComponent, NavItemComponent, NavLinkDirective, NavModule, NavbarBrandDirective, NavbarComponent, NavbarModule, NavbarNavComponent, NavbarTextComponent, NavbarTogglerDirective, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasModule, OffcanvasService, OffcanvasTitleDirective, OffcanvasToggleDirective, PageItemComponent, PageItemDirective, PageLinkDirective, PaginationComponent, PaginationModule, PlaceholderAnimationDirective, PlaceholderDirective, PlaceholderModule, PopoverComponent, PopoverDirective, PopoverModule, ProgressBarComponent, ProgressComponent, ProgressModule, RoundedDirective, RowComponent, RowDirective, ShadowOnScrollDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerDirective, SmartPaginationComponent, SmartPaginationModule, SmartTableComponent, SmartTableFilterComponent, SmartTableModule, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabPaneComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, TabsModule, TemplateIdDirective, TextColorDirective, ThemeDirective, TimePickerComponent, TimePickerModule, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
|
|
17248
17393
|
//# sourceMappingURL=coreui-angular-pro.mjs.map
|