@ngutil/style 0.0.3-dev.16
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/README.md +9 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/ngutil-style.mjs +5 -0
- package/esm2022/services/color-scheme.service.mjs +17 -0
- package/esm2022/services/media-watcher.mjs +29 -0
- package/fesm2022/ngutil-style.mjs +50 -0
- package/fesm2022/ngutil-style.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/package.json +30 -0
- package/services/color-scheme.service.d.ts +7 -0
- package/services/media-watcher.d.ts +5 -0
- package/styles/index.scss +1 -0
- package/styles/vars.scss +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { watchMedia } from "./services/media-watcher";
|
|
2
|
+
export { ColorSchemeService } from "./services/color-scheme.service";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zdHlsZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgd2F0Y2hNZWRpYSB9IGZyb20gXCIuL3NlcnZpY2VzL21lZGlhLXdhdGNoZXJcIlxuZXhwb3J0IHsgQ29sb3JTY2hlbWVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvY29sb3Itc2NoZW1lLnNlcnZpY2VcIlxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd1dGlsLXN0eWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3R5bGUvc3JjL25ndXRpbC1zdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { map, shareReplay } from "rxjs";
|
|
3
|
+
import { watchMedia } from "./media-watcher";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ColorSchemeService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isDark = watchMedia("(prefers-color-scheme: dark)");
|
|
8
|
+
this.isLight = this.isDark.pipe(map(v => !v), shareReplay(1));
|
|
9
|
+
}
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, providedIn: "root" }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, decorators: [{
|
|
14
|
+
type: Injectable,
|
|
15
|
+
args: [{ providedIn: "root" }]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2NoZW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdHlsZS9zcmMvc2VydmljZXMvY29sb3Itc2NoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7O0FBRzVDLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFYSxXQUFNLEdBQUcsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUE7UUFDbkQsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNaLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtLQUdKOzhHQVJZLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyB3YXRjaE1lZGlhIH0gZnJvbSBcIi4vbWVkaWEtd2F0Y2hlclwiXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBDb2xvclNjaGVtZVNlcnZpY2Uge1xuICAgIHJlYWRvbmx5IGlzRGFyayA9IHdhdGNoTWVkaWEoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpXG4gICAgcmVhZG9ubHkgaXNMaWdodCA9IHRoaXMuaXNEYXJrLnBpcGUoXG4gICAgICAgIG1hcCh2ID0+ICF2KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICAvLyBUT0RPOiBzZXQgcHJlZmVycmVkIGNvbG9yIHNjaGVtZSAoZGFyay9saWdodClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { inject, NgZone } from "@angular/core";
|
|
2
|
+
import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
|
|
3
|
+
const WATCHES = {};
|
|
4
|
+
/**
|
|
5
|
+
* watchMedia("(display-mode: standalone)")
|
|
6
|
+
*/
|
|
7
|
+
export function watchMedia(expr) {
|
|
8
|
+
const existing = WATCHES[expr];
|
|
9
|
+
if (existing == null) {
|
|
10
|
+
return (WATCHES[expr] = _createWatcher(expr));
|
|
11
|
+
}
|
|
12
|
+
return existing;
|
|
13
|
+
}
|
|
14
|
+
function _createWatcher(expr) {
|
|
15
|
+
const zone = inject(NgZone);
|
|
16
|
+
return zone.runOutsideAngular(() => new Observable((sub) => {
|
|
17
|
+
const query = window.matchMedia(expr);
|
|
18
|
+
const listener = (event) => {
|
|
19
|
+
sub.next(event.matches);
|
|
20
|
+
};
|
|
21
|
+
query.addEventListener("change", listener);
|
|
22
|
+
sub.next(query.matches);
|
|
23
|
+
return () => {
|
|
24
|
+
query.removeEventListener("change", listener);
|
|
25
|
+
delete WATCHES[expr];
|
|
26
|
+
};
|
|
27
|
+
}).pipe(distinctUntilChanged(), shareReplay(1)));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0eWxlL3NyYy9zZXJ2aWNlcy9tZWRpYS13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRWhGLE1BQU0sT0FBTyxHQUEyQyxFQUFFLENBQUE7QUFFMUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVk7SUFDbkMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDL0IsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUF3QixFQUFFLEVBQUU7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtZQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUE7UUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZCLE9BQU8sR0FBRyxFQUFFO1lBQ1IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDLENBQUE7SUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEQsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5jb25zdCBXQVRDSEVTOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8Ym9vbGVhbj4gfSA9IHt9XG5cbi8qKlxuICogd2F0Y2hNZWRpYShcIihkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaE1lZGlhKGV4cHI6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gV0FUQ0hFU1tleHByXVxuICAgIGlmIChleGlzdGluZyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAoV0FUQ0hFU1tleHByXSA9IF9jcmVhdGVXYXRjaGVyKGV4cHIpKVxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVdhdGNoZXIoZXhwcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmV0dXJuIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGUoKHN1YjogU3Vic2NyaWJlcjxib29sZWFuPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShleHByKVxuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSAoZXZlbnQ6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChldmVudC5tYXRjaGVzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlcnkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBsaXN0ZW5lcilcbiAgICAgICAgICAgIHN1Yi5uZXh0KHF1ZXJ5Lm1hdGNoZXMpXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgbGlzdGVuZXIpXG4gICAgICAgICAgICAgICAgZGVsZXRlIFdBVENIRVNbZXhwcl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSlcbiAgICApXG59XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, NgZone, Injectable } from '@angular/core';
|
|
3
|
+
import { Observable, distinctUntilChanged, shareReplay, map } from 'rxjs';
|
|
4
|
+
|
|
5
|
+
const WATCHES = {};
|
|
6
|
+
/**
|
|
7
|
+
* watchMedia("(display-mode: standalone)")
|
|
8
|
+
*/
|
|
9
|
+
function watchMedia(expr) {
|
|
10
|
+
const existing = WATCHES[expr];
|
|
11
|
+
if (existing == null) {
|
|
12
|
+
return (WATCHES[expr] = _createWatcher(expr));
|
|
13
|
+
}
|
|
14
|
+
return existing;
|
|
15
|
+
}
|
|
16
|
+
function _createWatcher(expr) {
|
|
17
|
+
const zone = inject(NgZone);
|
|
18
|
+
return zone.runOutsideAngular(() => new Observable((sub) => {
|
|
19
|
+
const query = window.matchMedia(expr);
|
|
20
|
+
const listener = (event) => {
|
|
21
|
+
sub.next(event.matches);
|
|
22
|
+
};
|
|
23
|
+
query.addEventListener("change", listener);
|
|
24
|
+
sub.next(query.matches);
|
|
25
|
+
return () => {
|
|
26
|
+
query.removeEventListener("change", listener);
|
|
27
|
+
delete WATCHES[expr];
|
|
28
|
+
};
|
|
29
|
+
}).pipe(distinctUntilChanged(), shareReplay(1)));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
class ColorSchemeService {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.isDark = watchMedia("(prefers-color-scheme: dark)");
|
|
35
|
+
this.isLight = this.isDark.pipe(map(v => !v), shareReplay(1));
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, providedIn: "root" }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ColorSchemeService, decorators: [{
|
|
41
|
+
type: Injectable,
|
|
42
|
+
args: [{ providedIn: "root" }]
|
|
43
|
+
}] });
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Generated bundle index. Do not edit.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
export { ColorSchemeService, watchMedia };
|
|
50
|
+
//# sourceMappingURL=ngutil-style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngutil-style.mjs","sources":["../../../../packages/style/src/services/media-watcher.ts","../../../../packages/style/src/services/color-scheme.service.ts","../../../../packages/style/src/ngutil-style.ts"],"sourcesContent":["import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nconst WATCHES: { [key: string]: Observable<boolean> } = {}\n\n/**\n * watchMedia(\"(display-mode: standalone)\")\n */\nexport function watchMedia(expr: string): Observable<boolean> {\n const existing = WATCHES[expr]\n if (existing == null) {\n return (WATCHES[expr] = _createWatcher(expr))\n }\n return existing\n}\n\nfunction _createWatcher(expr: string): Observable<boolean> {\n const zone = inject(NgZone)\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const query = window.matchMedia(expr)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n query.addEventListener(\"change\", listener)\n sub.next(query.matches)\n return () => {\n query.removeEventListener(\"change\", listener)\n delete WATCHES[expr]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n}\n","import { Injectable } from \"@angular/core\"\n\nimport { map, shareReplay } from \"rxjs\"\n\nimport { watchMedia } from \"./media-watcher\"\n\n@Injectable({ providedIn: \"root\" })\nexport class ColorSchemeService {\n readonly isDark = watchMedia(\"(prefers-color-scheme: dark)\")\n readonly isLight = this.isDark.pipe(\n map(v => !v),\n shareReplay(1)\n )\n\n // TODO: set preferred color scheme (dark/light)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAIA,MAAM,OAAO,GAA2C,EAAE,CAAA;AAE1D;;AAEG;AACG,SAAU,UAAU,CAAC,IAAY,EAAA;AACnC,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9B,IAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAC;KAChD;AACD,IAAA,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAA;AAChC,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC3B,IAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAC1B,IAAI,UAAU,CAAC,CAAC,GAAwB,KAAI;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAI;AAC5C,YAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC3B,SAAC,CAAA;AACD,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC1C,QAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACvB,QAAA,OAAO,MAAK;AACR,YAAA,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC7C,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACxB,SAAC,CAAA;AACL,KAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAClD,CAAA;AACL;;MC1Ba,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEa,QAAA,IAAA,CAAA,MAAM,GAAG,UAAU,CAAC,8BAA8B,CAAC,CAAA;QACnD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EACZ,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AAGJ,KAAA;8GARY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACNlC;;AAEG;;;;"}
|
package/index.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ngutil/style",
|
|
3
|
+
"version": "0.0.3-dev.16",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public",
|
|
6
|
+
"directory": "../../dist/packages/style/"
|
|
7
|
+
},
|
|
8
|
+
"peerDependencies": {
|
|
9
|
+
"@angular/common": "^17.1.0",
|
|
10
|
+
"@angular/core": "^17.1.0"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"tslib": "^2.3.0"
|
|
14
|
+
},
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"sass": "./styles/index.scss",
|
|
19
|
+
"types": "./index.d.ts",
|
|
20
|
+
"esm2022": "./esm2022/ngutil-style.mjs",
|
|
21
|
+
"esm": "./esm2022/ngutil-style.mjs",
|
|
22
|
+
"default": "./fesm2022/ngutil-style.mjs"
|
|
23
|
+
},
|
|
24
|
+
"./package.json": {
|
|
25
|
+
"default": "./package.json"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"module": "fesm2022/ngutil-style.mjs",
|
|
29
|
+
"typings": "index.d.ts"
|
|
30
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ColorSchemeService {
|
|
3
|
+
readonly isDark: import("rxjs").Observable<boolean>;
|
|
4
|
+
readonly isLight: import("rxjs").Observable<boolean>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ColorSchemeService, never>;
|
|
6
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ColorSchemeService>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@use "./vars" as *;
|
package/styles/vars.scss
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
@use "sass:list";
|
|
2
|
+
@use "sass:string";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@function is-var($value) {
|
|
6
|
+
@return type-of($value) == "string" and string.index($value, "--") == 1;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@function is-varfn($value) {
|
|
10
|
+
@return type-of($value) == "string" and string.index($value, "var(") == 1 and string.index($value, ")") == string.length($value);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@function -chanin-var($vars, $idx) {
|
|
14
|
+
$res: "";
|
|
15
|
+
$curr: list.nth($vars, $idx);
|
|
16
|
+
|
|
17
|
+
@if (is-var($curr)) {
|
|
18
|
+
$res: "var(#{$curr}";
|
|
19
|
+
} @else {
|
|
20
|
+
@return $curr;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@if (list.length($vars) > $idx) {
|
|
24
|
+
@return string.unquote("#{$res}, #{-chanin-var($vars, $idx + 1)})");
|
|
25
|
+
} @else {
|
|
26
|
+
@return string.unquote("#{$res})");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@function chain-var($vars...) {
|
|
31
|
+
@if (list.length($vars) > 0) {
|
|
32
|
+
@return -chanin-var($vars, 1);
|
|
33
|
+
} @else {
|
|
34
|
+
@return "";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
.button {
|
|
41
|
+
@include cvar(button-fg, --color, #000);
|
|
42
|
+
---button-fg: var(--button-fg, var(--color), #000);
|
|
43
|
+
}
|
|
44
|
+
*/
|
|
45
|
+
@mixin cvar($name, $defaults...) {
|
|
46
|
+
---#{$name}: #{chain-var(--#{$name}, $defaults...)};
|
|
47
|
+
}
|