@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 ADDED
@@ -0,0 +1,9 @@
1
+ # @ngutil/style
2
+
3
+ ## Installation
4
+
5
+ TODO: ...
6
+
7
+ ## Usage
8
+
9
+ TODO: ...
@@ -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
@@ -0,0 +1,2 @@
1
+ export { watchMedia } from "./services/media-watcher";
2
+ export { ColorSchemeService } from "./services/color-scheme.service";
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,5 @@
1
+ import { Observable } from "rxjs";
2
+ /**
3
+ * watchMedia("(display-mode: standalone)")
4
+ */
5
+ export declare function watchMedia(expr: string): Observable<boolean>;
@@ -0,0 +1 @@
1
+ @use "./vars" as *;
@@ -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
+ }