@ssv/ngx.ux 3.1.4-dev.61 → 3.2.0-dev.68
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/version.mjs +2 -2
- package/esm2022/viewport/viewport-data/viewport-data.service.mjs +8 -8
- package/esm2022/viewport/viewport.service.mjs +31 -34
- package/fesm2022/ssv-ngx.ux.mjs +38 -39
- package/fesm2022/ssv-ngx.ux.mjs.map +1 -1
- package/package.json +1 -1
- package/version.d.ts +1 -1
- package/viewport/viewport-data/viewport-data.service.d.ts +1 -2
- package/viewport/viewport.service.d.ts +11 -13
package/esm2022/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "3.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const VERSION = "3.2.0-dev.68";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmd4LnV4L3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMy4yLjAtZGV2LjY4XCI7XG4iXX0=
|
|
@@ -6,19 +6,19 @@ import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils
|
|
|
6
6
|
import { VIEWPORT_OPTIONS } from "../viewport.options";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class ViewportDataService {
|
|
9
|
-
viewport = inject(ViewportService);
|
|
10
|
-
config = inject(VIEWPORT_OPTIONS);
|
|
9
|
+
#viewport = inject(ViewportService);
|
|
10
|
+
#config = inject(VIEWPORT_OPTIONS);
|
|
11
11
|
/** Get data for match. */
|
|
12
|
-
get(dataConfig, strategy = this
|
|
13
|
-
return matchViewportData(dataConfig, sizeType, strategy, this
|
|
12
|
+
get(dataConfig, strategy = this.#config.defaultDataMatchStrategy, sizeType = this.#viewport.sizeTypeSnapshot) {
|
|
13
|
+
return matchViewportData(dataConfig, sizeType, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
14
14
|
}
|
|
15
15
|
/** Get data for match as observable. */
|
|
16
16
|
get$(dataConfig, strategy, throttle = true) {
|
|
17
|
-
return (throttle ? this
|
|
17
|
+
return (throttle ? this.#viewport.sizeType$ : this.#viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
18
18
|
}
|
|
19
19
|
/** Generate rules based on strategies for data. */
|
|
20
|
-
generateRules(dataConfig, strategy = this
|
|
21
|
-
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this
|
|
20
|
+
generateRules(dataConfig, strategy = this.#config.defaultDataMatchStrategy) {
|
|
21
|
+
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
22
22
|
}
|
|
23
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
24
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
|
|
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
29
29
|
providedIn: "root",
|
|
30
30
|
}]
|
|
31
31
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUQsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUseUNBQXlDLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFFdEIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUMsMEJBQTBCO0lBQzFCLEdBQUcsQ0FDRixVQUFpQyxFQUNqQyxXQUFzQyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUMzRSxXQUFpQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtRQUVoRSxPQUFPLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFJLENBQUksVUFBaUMsRUFBRSxRQUFvQyxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDL0UsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQzVELG9CQUFvQixFQUFFLENBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGFBQWEsQ0FDWixVQUFpQyxFQUNqQyxXQUFzQyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QjtRQUUzRSxPQUFPLHlDQUF5QyxDQUMvQyxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FDMUIsQ0FBQztJQUNILENBQUM7dUdBakNXLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRm5CLE1BQU07OzJGQUVOLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgbWF0Y2hWaWV3cG9ydERhdGEsIFZpZXdwb3J0RGF0YUNvbmZpZywgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIsIFZpZXdwb3J0RGF0YVJ1bGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnV0aWxzXCI7XG5pbXBvcnQgeyBWSUVXUE9SVF9PUFRJT05TIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm9wdGlvbnNcIjtcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnREYXRhU2VydmljZSB7XG5cblx0cmVhZG9ubHkgI3ZpZXdwb3J0ID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSk7XG5cdHJlYWRvbmx5ICNjb25maWcgPSBpbmplY3QoVklFV1BPUlRfT1BUSU9OUyk7XG5cblx0LyoqIEdldCBkYXRhIGZvciBtYXRjaC4gKi9cblx0Z2V0PFQ+KFxuXHRcdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0XHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSA9IHRoaXMuI2NvbmZpZy5kZWZhdWx0RGF0YU1hdGNoU3RyYXRlZ3ksXG5cdFx0c2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvID0gdGhpcy4jdmlld3BvcnQuc2l6ZVR5cGVTbmFwc2hvdFxuXHQpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gbWF0Y2hWaWV3cG9ydERhdGEoZGF0YUNvbmZpZywgc2l6ZVR5cGUsIHN0cmF0ZWd5LCB0aGlzLiN2aWV3cG9ydC5zaXplVHlwZXMsIHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlTWFwKTtcblx0fVxuXG5cdC8qKiBHZXQgZGF0YSBmb3IgbWF0Y2ggYXMgb2JzZXJ2YWJsZS4gKi9cblx0Z2V0JDxUPihkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sIHN0cmF0ZWd5PzogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSwgdGhyb3R0bGUgPSB0cnVlKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuICh0aHJvdHRsZSA/IHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlJCA6IHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlU25hcCQpLnBpcGUoXG5cdFx0XHRtYXAoc2l6ZVR5cGUgPT4gdGhpcy5nZXQ8VD4oZGF0YUNvbmZpZywgc3RyYXRlZ3ksIHNpemVUeXBlKSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuXHRcdCk7XG5cdH1cblxuXHQvKiogR2VuZXJhdGUgcnVsZXMgYmFzZWQgb24gc3RyYXRlZ2llcyBmb3IgZGF0YS4gKi9cblx0Z2VuZXJhdGVSdWxlczxUPihcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdFx0c3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgPSB0aGlzLiNjb25maWcuZGVmYXVsdERhdGFNYXRjaFN0cmF0ZWd5LFxuXHQpOiBWaWV3cG9ydERhdGFSdWxlPFQ+W10ge1xuXHRcdHJldHVybiBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcihcblx0XHRcdGRhdGFDb25maWcsXG5cdFx0XHRzdHJhdGVneSxcblx0XHRcdHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlcyxcblx0XHRcdHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlTWFwXG5cdFx0KTtcblx0fVxuXG59XG4iXX0=
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { Injectable, inject } from "@angular/core";
|
|
2
|
-
import {
|
|
2
|
+
import { toSignal } from "@angular/core/rxjs-interop";
|
|
3
|
+
import { fromEvent, map, distinctUntilChanged, startWith, share, shareReplay, auditTime, of, } from "rxjs";
|
|
3
4
|
import { WindowRef } from "../platform/window";
|
|
4
5
|
import { ViewportServerSizeService } from "./viewport-server-size.service";
|
|
5
6
|
import { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from "./viewport.util";
|
|
6
7
|
import { VIEWPORT_OPTIONS } from "./viewport.options";
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../platform/window";
|
|
9
|
-
import * as i2 from "./viewport-server-size.service";
|
|
10
9
|
export class ViewportService {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
#viewportServerSize = inject(ViewportServerSizeService);
|
|
11
|
+
#windowRef = inject(WindowRef);
|
|
12
|
+
#config = inject(VIEWPORT_OPTIONS);
|
|
13
|
+
/** Viewport size types list ordered by type, smallest to largest. */
|
|
14
|
+
sizeTypes = generateViewportSizeTypeInfoList(this.#config.breakpoints);
|
|
15
|
+
/** Size types refs of the generated viewport size type info. */
|
|
16
|
+
sizeTypeMap = generateViewportSizeTypeInfoRefs(this.sizeTypes);
|
|
17
|
+
/** Viewport size signal (which is also throttled). */
|
|
18
|
+
viewportSize;
|
|
19
|
+
/** Viewport size type signal (which is also throttled). */
|
|
20
|
+
sizeType;
|
|
13
21
|
/** Window resize observable. */
|
|
14
22
|
resizeSnap$;
|
|
15
23
|
/** Window resize observable (which is also throttled). */
|
|
@@ -19,58 +27,47 @@ export class ViewportService {
|
|
|
19
27
|
/** Viewport size type observable. */
|
|
20
28
|
sizeTypeSnap$;
|
|
21
29
|
/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */
|
|
22
|
-
get sizeTypeSnapshot() { return this.
|
|
30
|
+
get sizeTypeSnapshot() { return this.sizeType(); }
|
|
23
31
|
/** Viewport size observable (which is also throttled). */
|
|
24
32
|
size$;
|
|
25
33
|
/** Viewport size observable. */
|
|
26
34
|
sizeSnap$;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
_sizeTypeMap;
|
|
32
|
-
_sizeTypes;
|
|
33
|
-
_sizeTypeSnapshot;
|
|
34
|
-
constructor(windowRef, viewportServerSize) {
|
|
35
|
-
this.windowRef = windowRef;
|
|
36
|
-
this.viewportServerSize = viewportServerSize;
|
|
37
|
-
const config = inject(VIEWPORT_OPTIONS);
|
|
38
|
-
this._sizeTypes = generateViewportSizeTypeInfoList(config.breakpoints);
|
|
39
|
-
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
|
|
40
|
-
if (windowRef.hasNative) {
|
|
41
|
-
this.resizeSnap$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
42
|
-
this.resize$ = this.resizeSnap$.pipe(auditTime(config.resizePollingSpeed), share());
|
|
35
|
+
constructor() {
|
|
36
|
+
if (this.#windowRef.hasNative) {
|
|
37
|
+
this.resizeSnap$ = fromEvent(this.#windowRef.native, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
38
|
+
this.resize$ = this.resizeSnap$.pipe(auditTime(this.#config.resizePollingSpeed), share());
|
|
43
39
|
}
|
|
44
40
|
else {
|
|
45
|
-
this.resizeSnap$ = this.resize$ = of(viewportServerSize.get());
|
|
41
|
+
this.resizeSnap$ = this.resize$ = of(this.#viewportServerSize.get());
|
|
46
42
|
}
|
|
47
43
|
const size = this.getViewportSize();
|
|
48
|
-
this._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);
|
|
49
44
|
const sizeFn = (obs$) => obs$.pipe(startWith(size), distinctUntilChanged((a, b) => a.width === b.width && a.height === b.height), shareReplay(1));
|
|
50
45
|
this.sizeSnap$ = sizeFn(this.resizeSnap$);
|
|
51
46
|
this.size$ = sizeFn(this.resize$);
|
|
52
|
-
const sizeTypeFn = (obs$) => obs$.pipe(distinctUntilChanged((a, b) => a.width === b.width), map(x => getSizeTypeInfo(x.width, this.sizeTypes)), distinctUntilChanged(),
|
|
47
|
+
const sizeTypeFn = (obs$) => obs$.pipe(distinctUntilChanged((a, b) => a.width === b.width), map(x => getSizeTypeInfo(x.width, this.sizeTypes)), distinctUntilChanged(), shareReplay(1));
|
|
53
48
|
this.sizeType$ = sizeTypeFn(this.size$);
|
|
54
49
|
this.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);
|
|
50
|
+
this.viewportSize = toSignal(this.size$, { initialValue: size });
|
|
51
|
+
this.sizeType = toSignal(this.sizeTypeSnap$, { initialValue: getSizeTypeInfo(size.width, this.sizeTypes) });
|
|
55
52
|
}
|
|
56
53
|
/** Returns the current viewport size */
|
|
57
54
|
getViewportSize() {
|
|
58
|
-
if (!this
|
|
59
|
-
return this
|
|
55
|
+
if (!this.#windowRef.hasNative) {
|
|
56
|
+
return this.#viewportServerSize.get();
|
|
60
57
|
}
|
|
61
58
|
const ua = navigator.userAgent.toLowerCase();
|
|
62
59
|
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
|
|
63
60
|
return {
|
|
64
|
-
width: this
|
|
65
|
-
height: this
|
|
61
|
+
width: this.#windowRef.native.document.documentElement.clientWidth,
|
|
62
|
+
height: this.#windowRef.native.document.documentElement.clientHeight,
|
|
66
63
|
};
|
|
67
64
|
}
|
|
68
65
|
return {
|
|
69
|
-
width: this
|
|
70
|
-
height: this
|
|
66
|
+
width: this.#windowRef.native.innerWidth,
|
|
67
|
+
height: this.#windowRef.native.innerHeight,
|
|
71
68
|
};
|
|
72
69
|
}
|
|
73
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, deps: [
|
|
70
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
71
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, providedIn: "root" });
|
|
75
72
|
}
|
|
76
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, decorators: [{
|
|
@@ -78,5 +75,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
78
75
|
args: [{
|
|
79
76
|
providedIn: "root",
|
|
80
77
|
}]
|
|
81
|
-
}], ctorParameters: () => [
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LnV4L3NyYy92aWV3cG9ydC92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFTixTQUFTLEVBQ1QsRUFBRSxFQUNGLEdBQUcsRUFDSCxHQUFHLEVBQ0gsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsR0FDVCxNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFLdEQsTUFBTSxPQUFPLGVBQWU7SUFrQ2xCO0lBQ0E7SUFqQ1QsZ0NBQWdDO0lBQ3ZCLFdBQVcsQ0FBMkI7SUFFL0MsMERBQTBEO0lBQ2pELE9BQU8sQ0FBMkI7SUFFM0MsK0RBQStEO0lBQ3RELFNBQVMsQ0FBbUM7SUFFckQscUNBQXFDO0lBQzVCLGFBQWEsQ0FBbUM7SUFFekQsd0dBQXdHO0lBQ3hHLElBQUksZ0JBQWdCLEtBQTJCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUUvRSwwREFBMEQ7SUFDakQsS0FBSyxDQUEyQjtJQUV6QyxnQ0FBZ0M7SUFDdkIsU0FBUyxDQUEyQjtJQUU3QyxnRUFBZ0U7SUFDaEUsSUFBSSxXQUFXLEtBQXVDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFakYscUVBQXFF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Q0FBd0M7SUFDaEMsZUFBZTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsdUNBQXVDO1lBQ3hHLE9BQU87Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVztnQkFDakUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWTthQUNuRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVztTQUN6QyxDQUFDO0lBQ0gsQ0FBQzt1R0FoR1csZUFBZTsyR0FBZixlQUFlLGNBRmYsTUFBTTs7MkZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcblx0T2JzZXJ2YWJsZSxcblx0ZnJvbUV2ZW50LFxuXHRvZixcblx0bWFwLFxuXHR0YXAsXG5cdGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuXHRzdGFydFdpdGgsXG5cdHNoYXJlLFxuXHRzaGFyZVJlcGxheSxcblx0YXVkaXRUaW1lLFxufSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbywgVmlld3BvcnRTaXplIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gXCIuLi9wbGF0Zm9ybS93aW5kb3dcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdCwgZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnMsIGdldFNpemVUeXBlSW5mbyB9IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcbmltcG9ydCB0eXBlIHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuaW1wb3J0IHsgVklFV1BPUlRfT1BUSU9OUyB9IGZyb20gXCIuL3ZpZXdwb3J0Lm9wdGlvbnNcIjtcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIHtcblxuXHQvKiogV2luZG93IHJlc2l6ZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSByZXNpemVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBXaW5kb3cgcmVzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgcmVzaXplJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZSAod2hpY2ggaXMgYWxzbyB0aHJvdHRsZWQpLiAqL1xuXHRyZWFkb25seSBzaXplVHlwZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZS4gKi9cblx0cmVhZG9ubHkgc2l6ZVR5cGVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCB2YWx1ZS4gKFByZWZlciB1c2UgYHNpemVUeXBlJGAgb2JzZXJ2YWJsZSB3aGVuIHBvc3NpYmxlLikgKi9cblx0Z2V0IHNpemVUeXBlU25hcHNob3QoKTogVmlld3BvcnRTaXplVHlwZUluZm8geyByZXR1cm4gdGhpcy5fc2l6ZVR5cGVTbmFwc2hvdDsgfVxuXG5cdC8qKiBWaWV3cG9ydCBzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgc2l6ZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSBzaXplU25hcCQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogU2l6ZSB0eXBlcyByZWZzIG9mIHRoZSBnZW5lcmF0ZWQgdmlld3BvcnQgc2l6ZSB0eXBlIGluZm8uICovXG5cdGdldCBzaXplVHlwZU1hcCgpOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPiB7IHJldHVybiB0aGlzLl9zaXplVHlwZU1hcDsgfVxuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGVzIGxpc3Qgb3JkZXJlZCBieSB0eXBlLCBzbWFsbGVzdCB0byBsYXJnZXN0LiAqL1xuXHRnZXQgc2l6ZVR5cGVzKCk6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10geyByZXR1cm4gdGhpcy5fc2l6ZVR5cGVzOyB9XG5cblx0cHJpdmF0ZSBfc2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXHRwcml2YXRlIF9zaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW107XG5cdHByaXZhdGUgX3NpemVUeXBlU25hcHNob3Q6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydFNlcnZlclNpemU6IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UsXG5cdCkge1xuXHRcdGNvbnN0IGNvbmZpZyA9IGluamVjdChWSUVXUE9SVF9PUFRJT05TKTtcblx0XHR0aGlzLl9zaXplVHlwZXMgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdChjb25maWcuYnJlYWtwb2ludHMpO1xuXHRcdHRoaXMuX3NpemVUeXBlTWFwID0gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnModGhpcy5fc2l6ZVR5cGVzKTtcblxuXHRcdGlmICh3aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csIFwicmVzaXplXCIpLnBpcGUoXG5cdFx0XHRcdG1hcCgoKSA9PiB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5yZXNpemUkID0gdGhpcy5yZXNpemVTbmFwJC5waXBlKFxuXHRcdFx0XHRhdWRpdFRpbWUoY29uZmlnLnJlc2l6ZVBvbGxpbmdTcGVlZCksXG5cdFx0XHRcdHNoYXJlKCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gdGhpcy5yZXNpemUkID0gb2Yodmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpKTtcblx0XHR9XG5cdFx0Y29uc3Qgc2l6ZSA9IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7XG5cdFx0dGhpcy5fc2l6ZVR5cGVTbmFwc2hvdCA9IGdldFNpemVUeXBlSW5mbyhzaXplLndpZHRoLCB0aGlzLnNpemVUeXBlcyk7XG5cblx0XHRjb25zdCBzaXplRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgoc2l6ZSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQpLFxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0KTtcblxuXHRcdHRoaXMuc2l6ZVNuYXAkID0gc2l6ZUZuKHRoaXMucmVzaXplU25hcCQpO1xuXHRcdHRoaXMuc2l6ZSQgPSBzaXplRm4odGhpcy5yZXNpemUkKTtcblxuXHRcdGNvbnN0IHNpemVUeXBlRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCksXG5cdFx0XHRtYXAoeCA9PiBnZXRTaXplVHlwZUluZm8oeC53aWR0aCwgdGhpcy5zaXplVHlwZXMpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9zaXplVHlwZVNuYXBzaG90ID0geCksXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHQpO1xuXG5cdFx0dGhpcy5zaXplVHlwZSQgPSBzaXplVHlwZUZuKHRoaXMuc2l6ZSQpO1xuXHRcdHRoaXMuc2l6ZVR5cGVTbmFwJCA9IHNpemVUeXBlRm4odGhpcy5zaXplU25hcCQpO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgc2l6ZSAqL1xuXHRwcml2YXRlIGdldFZpZXdwb3J0U2l6ZSgpOiBWaWV3cG9ydFNpemUge1xuXHRcdGlmICghdGhpcy53aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3cG9ydFNlcnZlclNpemUuZ2V0KCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKHVhLmluZGV4T2YoXCJzYWZhcmlcIikgIT09IC0xICYmIHVhLmluZGV4T2YoXCJjaHJvbWVcIikgPT09IC0xKSB7IC8vIHNhZmFyaSBzdWJ0cmFjdHMgdGhlIHNjcm9sbGJhciB3aWR0aFxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0d2lkdGg6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsXG5cdFx0XHRcdGhlaWdodDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHR3aWR0aDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmlubmVyV2lkdGgsXG5cdFx0XHRoZWlnaHQ6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5pbm5lckhlaWdodCxcblx0XHR9O1xuXHR9XG5cbn1cbiJdfQ==
|
|
78
|
+
}], ctorParameters: () => [] });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LnV4L3NyYy92aWV3cG9ydC92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBb0MsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUVOLFNBQVMsRUFDVCxHQUFHLEVBRUgsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxFQUFFLEdBQ0YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUt0RCxNQUFNLE9BQU8sZUFBZTtJQUVsQixtQkFBbUIsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4RCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU1QyxxRUFBcUU7SUFDNUQsU0FBUyxHQUFHLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFaEYsZ0VBQWdFO0lBQ3ZELFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEUsc0RBQXNEO0lBQzdDLFlBQVksQ0FBdUI7SUFFNUMsMkRBQTJEO0lB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QUUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCx3Q0FBd0M7SUFDaEMsZUFBZTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsdUNBQXVDO1lBQ3hHLE9BQU87Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVztnQkFDbEUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWTthQUNwRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVztTQUMxQyxDQUFDO0lBQ0gsQ0FBQzt1R0FqR1csZUFBZTsyR0FBZixlQUFlLGNBRmYsTUFBTTs7MkZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTaWduYWwsIGluamVjdCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHtcblx0T2JzZXJ2YWJsZSxcblx0ZnJvbUV2ZW50LFxuXHRtYXAsXG5cdHRhcCxcblx0ZGlzdGluY3RVbnRpbENoYW5nZWQsXG5cdHN0YXJ0V2l0aCxcblx0c2hhcmUsXG5cdHNoYXJlUmVwbGF5LFxuXHRhdWRpdFRpbWUsXG5cdG9mLFxufSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbywgVmlld3BvcnRTaXplIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gXCIuLi9wbGF0Zm9ybS93aW5kb3dcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdCwgZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnMsIGdldFNpemVUeXBlSW5mbyB9IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcbmltcG9ydCB7IFZJRVdQT1JUX09QVElPTlMgfSBmcm9tIFwiLi92aWV3cG9ydC5vcHRpb25zXCI7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmljZSB7XG5cblx0cmVhZG9ubHkgI3ZpZXdwb3J0U2VydmVyU2l6ZSA9IGluamVjdChWaWV3cG9ydFNlcnZlclNpemVTZXJ2aWNlKTtcblx0cmVhZG9ubHkgI3dpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuXHRyZWFkb25seSAjY29uZmlnID0gaW5qZWN0KFZJRVdQT1JUX09QVElPTlMpO1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGVzIGxpc3Qgb3JkZXJlZCBieSB0eXBlLCBzbWFsbGVzdCB0byBsYXJnZXN0LiAqL1xuXHRyZWFkb25seSBzaXplVHlwZXMgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdCh0aGlzLiNjb25maWcuYnJlYWtwb2ludHMpO1xuXG5cdC8qKiBTaXplIHR5cGVzIHJlZnMgb2YgdGhlIGdlbmVyYXRlZCB2aWV3cG9ydCBzaXplIHR5cGUgaW5mby4gKi9cblx0cmVhZG9ubHkgc2l6ZVR5cGVNYXAgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmcyh0aGlzLnNpemVUeXBlcyk7XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgc2lnbmFsICh3aGljaCBpcyBhbHNvIHRocm90dGxlZCkuICovXG5cdHJlYWRvbmx5IHZpZXdwb3J0U2l6ZTogU2lnbmFsPFZpZXdwb3J0U2l6ZT47XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBzaWduYWwgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgc2l6ZVR5cGU6IFNpZ25hbDxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cblx0LyoqIFdpbmRvdyByZXNpemUgb2JzZXJ2YWJsZS4gKi9cblx0cmVhZG9ubHkgcmVzaXplU25hcCQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogV2luZG93IHJlc2l6ZSBvYnNlcnZhYmxlICh3aGljaCBpcyBhbHNvIHRocm90dGxlZCkuICovXG5cdHJlYWRvbmx5IHJlc2l6ZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSB0eXBlIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgc2l6ZVR5cGUkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZVR5cGVJbmZvPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSB0eXBlIG9ic2VydmFibGUuICovXG5cdHJlYWRvbmx5IHNpemVUeXBlU25hcCQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgdmFsdWUuIChQcmVmZXIgdXNlIGBzaXplVHlwZSRgIG9ic2VydmFibGUgd2hlbiBwb3NzaWJsZS4pICovXG5cdGdldCBzaXplVHlwZVNuYXBzaG90KCk6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHsgcmV0dXJuIHRoaXMuc2l6ZVR5cGUoKTsgfVxuXG5cdC8qKiBWaWV3cG9ydCBzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgc2l6ZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSBzaXplU25hcCQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0KSB7XG5cdFx0aWYgKHRoaXMuI3dpbmRvd1JlZi5oYXNOYXRpdmUpIHtcblx0XHRcdHRoaXMucmVzaXplU25hcCQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHRoaXMuI3dpbmRvd1JlZi5uYXRpdmUsIFwicmVzaXplXCIpLnBpcGUoXG5cdFx0XHRcdG1hcCgoKSA9PiB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5yZXNpemUkID0gdGhpcy5yZXNpemVTbmFwJC5waXBlKFxuXHRcdFx0XHRhdWRpdFRpbWUodGhpcy4jY29uZmlnLnJlc2l6ZVBvbGxpbmdTcGVlZCksXG5cdFx0XHRcdHNoYXJlKCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gdGhpcy5yZXNpemUkID0gb2YodGhpcy4jdmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpKTtcblx0XHR9XG5cdFx0Y29uc3Qgc2l6ZSA9IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7XG5cblx0XHRjb25zdCBzaXplRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgoc2l6ZSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQpLFxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0KTtcblxuXHRcdHRoaXMuc2l6ZVNuYXAkID0gc2l6ZUZuKHRoaXMucmVzaXplU25hcCQpO1xuXHRcdHRoaXMuc2l6ZSQgPSBzaXplRm4odGhpcy5yZXNpemUkKTtcblxuXHRcdGNvbnN0IHNpemVUeXBlRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCksXG5cdFx0XHRtYXAoeCA9PiBnZXRTaXplVHlwZUluZm8oeC53aWR0aCwgdGhpcy5zaXplVHlwZXMpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHQpO1xuXG5cdFx0dGhpcy5zaXplVHlwZSQgPSBzaXplVHlwZUZuKHRoaXMuc2l6ZSQpO1xuXHRcdHRoaXMuc2l6ZVR5cGVTbmFwJCA9IHNpemVUeXBlRm4odGhpcy5zaXplU25hcCQpO1xuXG5cdFx0dGhpcy52aWV3cG9ydFNpemUgPSB0b1NpZ25hbCh0aGlzLnNpemUkLCB7IGluaXRpYWxWYWx1ZTogc2l6ZSB9KTtcblx0XHR0aGlzLnNpemVUeXBlID0gdG9TaWduYWwodGhpcy5zaXplVHlwZVNuYXAkLCB7IGluaXRpYWxWYWx1ZTogZ2V0U2l6ZVR5cGVJbmZvKHNpemUud2lkdGgsIHRoaXMuc2l6ZVR5cGVzKSB9KTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZpZXdwb3J0IHNpemUgKi9cblx0cHJpdmF0ZSBnZXRWaWV3cG9ydFNpemUoKTogVmlld3BvcnRTaXplIHtcblx0XHRpZiAoIXRoaXMuI3dpbmRvd1JlZi5oYXNOYXRpdmUpIHtcblx0XHRcdHJldHVybiB0aGlzLiN2aWV3cG9ydFNlcnZlclNpemUuZ2V0KCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKHVhLmluZGV4T2YoXCJzYWZhcmlcIikgIT09IC0xICYmIHVhLmluZGV4T2YoXCJjaHJvbWVcIikgPT09IC0xKSB7IC8vIHNhZmFyaSBzdWJ0cmFjdHMgdGhlIHNjcm9sbGJhciB3aWR0aFxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0d2lkdGg6IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuXHRcdFx0XHRoZWlnaHQ6IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoOiB0aGlzLiN3aW5kb3dSZWYubmF0aXZlLmlubmVyV2lkdGgsXG5cdFx0XHRoZWlnaHQ6IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmUuaW5uZXJIZWlnaHQsXG5cdFx0fTtcblx0fVxuXG59XG4iXX0=
|
package/fesm2022/ssv-ngx.ux.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, makeEnvironmentProviders, Pipe, Directive, Input, NgModule } from '@angular/core';
|
|
3
|
-
import { fromEvent, map, share, auditTime, of, startWith, distinctUntilChanged, shareReplay,
|
|
3
|
+
import { fromEvent, map, share, auditTime, of, startWith, distinctUntilChanged, shareReplay, Subscription, tap, Subject, ReplaySubject, combineLatest, takeUntil, filter, pairwise } from 'rxjs';
|
|
4
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
4
5
|
|
|
5
6
|
var ViewportDataMatchStrategy;
|
|
6
7
|
(function (ViewportDataMatchStrategy) {
|
|
@@ -368,8 +369,17 @@ function withViewportSsrDevice(options) {
|
|
|
368
369
|
}
|
|
369
370
|
|
|
370
371
|
class ViewportService {
|
|
371
|
-
|
|
372
|
-
|
|
372
|
+
#viewportServerSize = inject(ViewportServerSizeService);
|
|
373
|
+
#windowRef = inject(WindowRef);
|
|
374
|
+
#config = inject(VIEWPORT_OPTIONS);
|
|
375
|
+
/** Viewport size types list ordered by type, smallest to largest. */
|
|
376
|
+
sizeTypes = generateViewportSizeTypeInfoList(this.#config.breakpoints);
|
|
377
|
+
/** Size types refs of the generated viewport size type info. */
|
|
378
|
+
sizeTypeMap = generateViewportSizeTypeInfoRefs(this.sizeTypes);
|
|
379
|
+
/** Viewport size signal (which is also throttled). */
|
|
380
|
+
viewportSize;
|
|
381
|
+
/** Viewport size type signal (which is also throttled). */
|
|
382
|
+
sizeType;
|
|
373
383
|
/** Window resize observable. */
|
|
374
384
|
resizeSnap$;
|
|
375
385
|
/** Window resize observable (which is also throttled). */
|
|
@@ -379,58 +389,47 @@ class ViewportService {
|
|
|
379
389
|
/** Viewport size type observable. */
|
|
380
390
|
sizeTypeSnap$;
|
|
381
391
|
/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */
|
|
382
|
-
get sizeTypeSnapshot() { return this.
|
|
392
|
+
get sizeTypeSnapshot() { return this.sizeType(); }
|
|
383
393
|
/** Viewport size observable (which is also throttled). */
|
|
384
394
|
size$;
|
|
385
395
|
/** Viewport size observable. */
|
|
386
396
|
sizeSnap$;
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
_sizeTypeMap;
|
|
392
|
-
_sizeTypes;
|
|
393
|
-
_sizeTypeSnapshot;
|
|
394
|
-
constructor(windowRef, viewportServerSize) {
|
|
395
|
-
this.windowRef = windowRef;
|
|
396
|
-
this.viewportServerSize = viewportServerSize;
|
|
397
|
-
const config = inject(VIEWPORT_OPTIONS);
|
|
398
|
-
this._sizeTypes = generateViewportSizeTypeInfoList(config.breakpoints);
|
|
399
|
-
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
|
|
400
|
-
if (windowRef.hasNative) {
|
|
401
|
-
this.resizeSnap$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
402
|
-
this.resize$ = this.resizeSnap$.pipe(auditTime(config.resizePollingSpeed), share());
|
|
397
|
+
constructor() {
|
|
398
|
+
if (this.#windowRef.hasNative) {
|
|
399
|
+
this.resizeSnap$ = fromEvent(this.#windowRef.native, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
400
|
+
this.resize$ = this.resizeSnap$.pipe(auditTime(this.#config.resizePollingSpeed), share());
|
|
403
401
|
}
|
|
404
402
|
else {
|
|
405
|
-
this.resizeSnap$ = this.resize$ = of(viewportServerSize.get());
|
|
403
|
+
this.resizeSnap$ = this.resize$ = of(this.#viewportServerSize.get());
|
|
406
404
|
}
|
|
407
405
|
const size = this.getViewportSize();
|
|
408
|
-
this._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);
|
|
409
406
|
const sizeFn = (obs$) => obs$.pipe(startWith(size), distinctUntilChanged((a, b) => a.width === b.width && a.height === b.height), shareReplay(1));
|
|
410
407
|
this.sizeSnap$ = sizeFn(this.resizeSnap$);
|
|
411
408
|
this.size$ = sizeFn(this.resize$);
|
|
412
|
-
const sizeTypeFn = (obs$) => obs$.pipe(distinctUntilChanged((a, b) => a.width === b.width), map(x => getSizeTypeInfo(x.width, this.sizeTypes)), distinctUntilChanged(),
|
|
409
|
+
const sizeTypeFn = (obs$) => obs$.pipe(distinctUntilChanged((a, b) => a.width === b.width), map(x => getSizeTypeInfo(x.width, this.sizeTypes)), distinctUntilChanged(), shareReplay(1));
|
|
413
410
|
this.sizeType$ = sizeTypeFn(this.size$);
|
|
414
411
|
this.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);
|
|
412
|
+
this.viewportSize = toSignal(this.size$, { initialValue: size });
|
|
413
|
+
this.sizeType = toSignal(this.sizeTypeSnap$, { initialValue: getSizeTypeInfo(size.width, this.sizeTypes) });
|
|
415
414
|
}
|
|
416
415
|
/** Returns the current viewport size */
|
|
417
416
|
getViewportSize() {
|
|
418
|
-
if (!this
|
|
419
|
-
return this
|
|
417
|
+
if (!this.#windowRef.hasNative) {
|
|
418
|
+
return this.#viewportServerSize.get();
|
|
420
419
|
}
|
|
421
420
|
const ua = navigator.userAgent.toLowerCase();
|
|
422
421
|
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
|
|
423
422
|
return {
|
|
424
|
-
width: this
|
|
425
|
-
height: this
|
|
423
|
+
width: this.#windowRef.native.document.documentElement.clientWidth,
|
|
424
|
+
height: this.#windowRef.native.document.documentElement.clientHeight,
|
|
426
425
|
};
|
|
427
426
|
}
|
|
428
427
|
return {
|
|
429
|
-
width: this
|
|
430
|
-
height: this
|
|
428
|
+
width: this.#windowRef.native.innerWidth,
|
|
429
|
+
height: this.#windowRef.native.innerHeight,
|
|
431
430
|
};
|
|
432
431
|
}
|
|
433
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, deps: [
|
|
432
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
434
433
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, providedIn: "root" });
|
|
435
434
|
}
|
|
436
435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportService, decorators: [{
|
|
@@ -438,7 +437,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
438
437
|
args: [{
|
|
439
438
|
providedIn: "root",
|
|
440
439
|
}]
|
|
441
|
-
}], ctorParameters: () => [
|
|
440
|
+
}], ctorParameters: () => [] });
|
|
442
441
|
|
|
443
442
|
/**
|
|
444
443
|
* Utility function to generate rules based on strategies.
|
|
@@ -540,19 +539,19 @@ function calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, isSma
|
|
|
540
539
|
}
|
|
541
540
|
|
|
542
541
|
class ViewportDataService {
|
|
543
|
-
viewport = inject(ViewportService);
|
|
544
|
-
config = inject(VIEWPORT_OPTIONS);
|
|
542
|
+
#viewport = inject(ViewportService);
|
|
543
|
+
#config = inject(VIEWPORT_OPTIONS);
|
|
545
544
|
/** Get data for match. */
|
|
546
|
-
get(dataConfig, strategy = this
|
|
547
|
-
return matchViewportData(dataConfig, sizeType, strategy, this
|
|
545
|
+
get(dataConfig, strategy = this.#config.defaultDataMatchStrategy, sizeType = this.#viewport.sizeTypeSnapshot) {
|
|
546
|
+
return matchViewportData(dataConfig, sizeType, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
548
547
|
}
|
|
549
548
|
/** Get data for match as observable. */
|
|
550
549
|
get$(dataConfig, strategy, throttle = true) {
|
|
551
|
-
return (throttle ? this
|
|
550
|
+
return (throttle ? this.#viewport.sizeType$ : this.#viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
552
551
|
}
|
|
553
552
|
/** Generate rules based on strategies for data. */
|
|
554
|
-
generateRules(dataConfig, strategy = this
|
|
555
|
-
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this
|
|
553
|
+
generateRules(dataConfig, strategy = this.#config.defaultDataMatchStrategy) {
|
|
554
|
+
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
556
555
|
}
|
|
557
556
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
558
557
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
|
|
@@ -837,7 +836,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
837
836
|
}]
|
|
838
837
|
}] });
|
|
839
838
|
|
|
840
|
-
const VERSION = "3.
|
|
839
|
+
const VERSION = "3.2.0-dev.68";
|
|
841
840
|
|
|
842
841
|
/**
|
|
843
842
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssv-ngx.ux.mjs","sources":["../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data-matcher.ts","../../../../libs/ngx.ux/src/platform/window.ts","../../../../libs/ngx.ux/src/viewport/viewport.model.ts","../../../../libs/ngx.ux/src/viewport/viewport-server-size.service.ts","../../../../libs/ngx.ux/src/viewport/viewport.util.ts","../../../../libs/ngx.ux/src/viewport/viewport.options.ts","../../../../libs/ngx.ux/src/viewport/viewport.service.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.utils.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.service.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.pipe.ts","../../../../libs/ngx.ux/src/viewport/viewport-matcher-var.directive.ts","../../../../libs/ngx.ux/src/viewport/viewport-matcher.directive.ts","../../../../libs/ngx.ux/src/viewport/viewport.module.ts","../../../../libs/ngx.ux/src/ux.module.ts","../../../../libs/ngx.ux/src/version.ts","../../../../libs/ngx.ux/src/ssv-ngx.ux.ts"],"sourcesContent":["import type { Dictionary } from \"../../internal/internal.model\";\nimport type { ViewportSizeTypeInfo } from \"../viewport.model\";\n\nexport type ViewportDataConfig<TValue = unknown, TData = Dictionary<TValue>> = TData & {\n\tdefault?: TValue\n};\n\nexport enum ViewportDataMatchStrategy {\n\t/** Indicates that size should match exact or default. */\n\texact,\n\n\t/** Indicates that size matches when exact match, first match smaller (down) or default. */\n\tsmaller,\n\n\t/** Indicates that size matches when exact match, first match larger (up) or default. */\n\tlarger,\n\n\t/** Indicates that size matches when exact match, or it tries both smaller/larger (smaller is preferred) until match or default. */\n\tclosestSmallerFirst,\n\n\t/** Indicates that size matches when exact match, or it tries both larger/smaller (larger is preferred) until match or default. */\n\tclosestLargerFirst,\n}\nexport type ViewportDataMatchStrategyLiteral = keyof typeof ViewportDataMatchStrategy;\n\nexport interface ViewportDataMatcher<T = unknown> {\n\t(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tcurrentSizeType: ViewportSizeTypeInfo,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n\t): T | undefined;\n}\n\n/**\n * Utility function to match data based on strategy and size.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param sizeType Size type to get data for.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns the matched data value.\n */\nexport function matchViewportData<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tsizeType: ViewportSizeTypeInfo,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): T | undefined {\n\tconst matchFn = matchStrategyHandlerMap[strategy];\n\tif (!matchFn) {\n\t\tthrow Error(`matchViewportData: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\tconst data = matchFn(dataConfig, sizeType, sizeTypes, sizeTypeMap) as T;\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\treturn dataConfig.default;\n}\n\n\nconst matchStrategyHandlerMap: Dictionary<ViewportDataMatcher> = {\n\t[ViewportDataMatchStrategy.exact]: matchWithExact,\n\t[ViewportDataMatchStrategy.larger]: matchWithLargerMatch,\n\t[ViewportDataMatchStrategy.smaller]: matchWithSmallerMatch,\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: matchWithClosestSmallerFirstMatch,\n\t[ViewportDataMatchStrategy.closestLargerFirst]: matchWithClosestLargerFirstMatch,\n};\n\nfunction matchWithExact<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n): T | undefined {\n\treturn dataConfig[currentSizeType.name];\n}\n\nfunction matchWithLargerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tconst largestTypeIdx = sizeTypes[sizeTypes.length - 1].type;\n\tif (currentSizeType.type >= largestTypeIdx) {\n\t\treturn undefined;\n\t}\n\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index++) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithSmallerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tif (currentSizeType.type <= 0) {\n\t\treturn undefined;\n\t}\n\n\t// eslint-disable-next-line for-direction\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index--) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithClosestSmallerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, true);\n}\n\nfunction matchWithClosestLargerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, false);\n}\n\nfunction closestMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerFirst: boolean\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tlet downIndex = currentSizeType.type;\n\tlet upIndex = currentSizeType.type;\n\n\t \n\tfor (let index = 0; index < sizeTypes.length; index++) {\n\t\tfor (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {\n\t\t\tconst sizeType = sizeTypes[idx];\n\t\t\tif (sizeType) {\n\t\t\t\tdata = dataConfig[sizeType.name];\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { InjectionToken, Injectable, inject } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>(\"Window\", {\n\tfactory: () => _window() as Window,\n});\n\nexport function _window(): unknown {\n\tif (typeof window !== \"undefined\") {\n\t\treturn window;\n\t}\n\treturn {};\n}\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class WindowRef {\n\n\tprivate readonly window = inject(WINDOW);\n\n\t/** Window underlying native object. */\n\tget native(): Window {\n\t\treturn this.window as Window;\n\t}\n\n\t/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */\n\tget hasNative(): boolean {\n\t\treturn !!this.native.window;\n\t}\n\n}\n","/**\n * The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.\n * @see UX_VIEWPORT_DEFAULT_BREAKPOINTS\n */\nexport enum ViewportSizeType {\n\txsmall = 0,\n\tsmall = 1,\n\tmedium = 2,\n\tlarge = 3,\n\txlarge = 4,\n\txxlarge = 5,\n\txxlarge1 = 6,\n}\n\nexport enum ComparisonOperation {\n\tequals = \"=\",\n\tnotEquals = \"<>\",\n\tlessThan = \"<\",\n\tlessOrEqualThan = \"<=\",\n\tgreaterThan = \">\",\n\tgreaterOrEqualThan = \">=\",\n}\n\nexport type ComparisonOperationKeyType = keyof typeof ComparisonOperation;\nexport type ComparisonOperationValueType = \"=\" | \"<>\" | \"<\" | \"<=\" | \">\" | \">=\"; // todo: find a better way to do this\nexport type ComparisonOperationLiteral = ComparisonOperationKeyType | ComparisonOperationValueType;\n\nexport enum DeviceType {\n\tdesktop = \"desktop\",\n\tmobile = \"mobile\",\n\ttablet = \"tablet\"\n}\n\nexport interface ViewportSize {\n\twidth: number;\n\theight: number;\n}\n\nexport interface ViewportSizeTypeInfo {\n\ttype: number;\n\tname: string;\n\twidthThreshold: number;\n}\n\nexport interface ViewportMatchConditions {\n\tsizeType?: string | string[] | null;\n\tsizeTypeExclude?: string | string[] | null;\n\texpression?: ViewportSizeMatcherExpression;\n}\n\nexport interface ViewportSizeMatcherExpression {\n\tsize: string;\n\toperation: ComparisonOperationLiteral;\n}\n","import { Injectable, InjectionToken, inject } from \"@angular/core\";\n\nimport { DeviceType, ViewportSize } from \"./viewport.model\";\n\n// todo: make this configurable\n/** Viewport size for SSR. */\nconst viewportSizeSSR: Record<DeviceType, ViewportSize> = {\n\t[DeviceType.desktop]: {\n\t\twidth: 1366,\n\t\theight: 768,\n\t},\n\t[DeviceType.tablet]: {\n\t\twidth: 768,\n\t\theight: 1024,\n\t},\n\t[DeviceType.mobile]: {\n\t\twidth: 414,\n\t\theight: 736,\n\t},\n};\n\nexport const VIEWPORT_SSR_DEVICE = new InjectionToken<DeviceType>(\"UX_VIEWPORT_SSR_DEVICE\", {\n\tfactory: () => DeviceType.desktop,\n\tprovidedIn: \"platform\",\n});\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportServerSizeService {\n\n\tprivate readonly deviceType = inject(VIEWPORT_SSR_DEVICE);\n\n\tget(): ViewportSize {\n\t\treturn viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport {\n\tComparisonOperation,\n\tViewportSizeMatcherExpression,\n\tViewportSizeTypeInfo,\n\tViewportMatchConditions\n} from \"./viewport.model\";\n\nexport function isViewportSizeMatcherExpression(value: unknown): value is ViewportSizeMatcherExpression {\n\tif (typeof value !== \"object\" || !value) {\n\t\treturn false;\n\t}\n\tconst args: Partial<ViewportSizeMatcherExpression> = value;\n\tif (args.size && args.operation) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isViewportSizeMatcherTupleExpression(arg: unknown): arg is [ComparisonOperation, string] {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\tif (Array.isArray(arg)) {\n\t\tif (arg.length === 2) {\n\t\t\tconst [op] = arg;\n\t\t\treturn operations.includes(op);\n\t\t}\n\t}\n\treturn false;\n}\n\n\nconst operations = Object.values(ComparisonOperation);\n\nexport const COMPARISON_OPERATION_FUNC_MAPPING: Dictionary<(a: number, b: number) => boolean> = {\n\t[ComparisonOperation.equals]: (a: number, b: number) => a === b,\n\t[ComparisonOperation.notEquals]: (a: number, b: number) => a !== b,\n\t[ComparisonOperation.lessThan]: (a: number, b: number) => a < b,\n\t[ComparisonOperation.lessOrEqualThan]: (a: number, b: number) => a <= b,\n\t[ComparisonOperation.greaterThan]: (a: number, b: number) => a > b,\n\t[ComparisonOperation.greaterOrEqualThan]: (a: number, b: number) => a >= b,\n};\n\nexport function isViewportConditionMatch(\n\tevaluateSize: ViewportSizeTypeInfo,\n\tconditions: ViewportMatchConditions,\n\tviewportSizeTypeInfoRefs: Dictionary<ViewportSizeTypeInfo>\n): boolean {\n\tconst isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);\n\tlet isIncluded;\n\tlet isExpressionTruthy;\n\n\tif (!isExcluded && conditions.expression) {\n\t\tconst ref = viewportSizeTypeInfoRefs[conditions.expression.size];\n\t\tif(!ref) {\n\t\t\tthrow new Error(`Viewport size type is invalid. Size type: '${conditions.expression.size}'`);\n\t\t}\n\t\tconst expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];\n\n\t\tisExpressionTruthy = expMatcher(evaluateSize.type, ref.type);\n\t} else {\n\t\tisIncluded = match(conditions.sizeType, evaluateSize.name, true);\n\t}\n\n\tconst shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;\n\t// console.warn(\">>> shouldRender\", { evaluateSize, conditions, shouldRender });\n\treturn !!shouldRender;\n}\n\nfunction match(value: string | string[] | null | undefined, targetValue: string, defaultValue: boolean) {\n\tif (!value) {\n\t\treturn defaultValue;\n\t}\n\n\treturn Array.isArray(value)\n\t\t? value.includes(targetValue)\n\t\t: value === targetValue;\n}\n\nexport function getSizeTypeInfo(width: number, sizeTypes: ViewportSizeTypeInfo[]): ViewportSizeTypeInfo {\n\tconst lastEntryIndex = sizeTypes.length - 1;\n\n\tfor (let idx = 0; idx < lastEntryIndex; idx++) {\n\t\tconst viewportSizeTypeInfo = sizeTypes[idx];\n\n\t\tif (width <= viewportSizeTypeInfo.widthThreshold) {\n\t\t\treturn viewportSizeTypeInfo;\n\t\t}\n\t}\n\n\treturn sizeTypes[lastEntryIndex];\n}\n\n/**\n * Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from\n * smallest to largest.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nfunction getSortedBreakpoints(breakpoints: Dictionary<number>): [string, number][] {\n\treturn Object.entries(breakpoints)\n\t\t.sort(([, widthA], [, widthB]) => widthA - widthB);\n}\n\n/**\n * A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.\n * @param breakpoints the custom breakpoints\n */\nexport function generateViewportSizeType<T extends Record<string, number>>(breakpoints: T): T & Record<number, string> {\n\treturn Object.freeze(\n\t\tgetSortedBreakpoints(breakpoints).reduce<Record<number | string, string | number>>(\n\t\t\t(dictionary, [name], index) => {\n\t\t\t\tdictionary[name] = index;\n\t\t\t\tdictionary[index] = name;\n\t\t\t\treturn dictionary;\n\t\t\t}, {}\n\t\t)\n\t) as T & Record<number, string>;\n}\n\n/**\n * Pre-processes the given breakpoints into an ordered list from smallest to largest while generating\n * all the necessary information on the viewport.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nexport function generateViewportSizeTypeInfoList(breakpoints: Dictionary<number>): ViewportSizeTypeInfo[] {\n\treturn getSortedBreakpoints(breakpoints)\n\t\t.map(([name, width], index) =>\n\t\t\t(Object.freeze({\n\t\t\t\tname,\n\t\t\t\ttype: index,\n\t\t\t\twidthThreshold: width\n\t\t\t}))\n\t\t);\n}\n\n/**\n * Converts the breakpoint list into a dictionary while using the name as key.\n * @param breakpointList the list of breakpoints\n * @internal\n */\nexport function generateViewportSizeTypeInfoRefs(breakpointList: ViewportSizeTypeInfo[]): Dictionary<ViewportSizeTypeInfo> {\n\treturn Object.freeze(\n\t\tbreakpointList.reduce<Dictionary<ViewportSizeTypeInfo>>((dictionary, breakpoint) => {\n\t\t\tdictionary[breakpoint.name] = breakpoint;\n\t\t\tdictionary[breakpoint.type] = breakpoint;\n\t\t\treturn dictionary;\n\t\t}, {})\n\t);\n}\n","import { type EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from \"@angular/core\";\n\nimport type { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data/viewport-data-matcher\";\nimport { VIEWPORT_SSR_DEVICE } from \"./viewport-server-size.service\";\nimport { DeviceType } from \"./viewport.model\";\n\n/** Default viewport breakpoints. */\nexport const UX_VIEWPORT_DEFAULT_BREAKPOINTS: Dictionary<number> = {\n\txsmall: 450,\n\tsmall: 767,\n\tmedium: 992,\n\tlarge: 1200,\n\txlarge: 1500,\n\txxlarge: 1920,\n\txxlarge1: 2100,\n};\n\nexport interface UxViewportOptions {\n\t/** Polling speed on resizing (in milliseconds). e.g. the higher the number the longer it takes to recalculate. */\n\tresizePollingSpeed: number;\n\n\t/** Breakpoints to use. Key needs to match the size type and the value the width threshold.\n\t * e.g. given width '1000' and `medium` is set to '992' => `large`.\n\t */\n\tbreakpoints: Dictionary<number>;\n\n\t/** Default data match strategy to use. */\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy;\n}\n\nconst DEFAULT_OPTIONS = Object.freeze<UxViewportOptions>({\n\tresizePollingSpeed: 33,\n\tbreakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,\n});\n\nexport const VIEWPORT_OPTIONS = new InjectionToken<UxViewportOptions>(\"SSV_UX_VIEWPORT_OPTIONS\", {\n\tfactory: () => DEFAULT_OPTIONS,\n});\n\nexport function provideSsvUxViewportOptions(\n\toptions: Partial<UxViewportOptions> | ((defaults: Readonly<UxViewportOptions>) => Partial<UxViewportOptions>),\n\t...features: EnvironmentProviders[]\n): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: VIEWPORT_OPTIONS,\n\t\t\tuseFactory: () => {\n\t\t\t\tlet opts = typeof options === \"function\" ? options(DEFAULT_OPTIONS) : options;\n\t\t\t\topts = opts\n\t\t\t\t\t? {\n\t\t\t\t\t\t...DEFAULT_OPTIONS,\n\t\t\t\t\t\t...opts, // NOTE: breakpoints shoudn't be merged\n\t\t\t\t\t}\n\t\t\t\t\t: DEFAULT_OPTIONS;\n\t\t\t\treturn opts;\n\t\t\t},\n\t\t},\n\t\t...features,\n\t]);\n}\n\nexport function withViewportSsrDevice(options: DeviceType | (() => DeviceType)): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: VIEWPORT_SSR_DEVICE,\n\t\t\tuseFactory: () => {\n\t\t\t\tconst deviceType = typeof options === \"function\" ? options() : options;\n\t\t\t\treturn deviceType;\n\t\t\t},\n\t\t},\n\t]);\n}","import { Injectable, inject } from \"@angular/core\";\nimport {\n\tObservable,\n\tfromEvent,\n\tof,\n\tmap,\n\ttap,\n\tdistinctUntilChanged,\n\tstartWith,\n\tshare,\n\tshareReplay,\n\tauditTime,\n} from \"rxjs\";\n\nimport { ViewportSizeTypeInfo, ViewportSize } from \"./viewport.model\";\nimport { WindowRef } from \"../platform/window\";\nimport { ViewportServerSizeService } from \"./viewport-server-size.service\";\nimport { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from \"./viewport.util\";\nimport type { Dictionary } from \"../internal/internal.model\";\nimport { VIEWPORT_OPTIONS } from \"./viewport.options\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportService {\n\n\t/** Window resize observable. */\n\treadonly resizeSnap$: Observable<ViewportSize>;\n\n\t/** Window resize observable (which is also throttled). */\n\treadonly resize$: Observable<ViewportSize>;\n\n\t/** Viewport size type observable (which is also throttled). */\n\treadonly sizeType$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type observable. */\n\treadonly sizeTypeSnap$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */\n\tget sizeTypeSnapshot(): ViewportSizeTypeInfo { return this._sizeTypeSnapshot; }\n\n\t/** Viewport size observable (which is also throttled). */\n\treadonly size$: Observable<ViewportSize>;\n\n\t/** Viewport size observable. */\n\treadonly sizeSnap$: Observable<ViewportSize>;\n\n\t/** Size types refs of the generated viewport size type info. */\n\tget sizeTypeMap(): Dictionary<ViewportSizeTypeInfo> { return this._sizeTypeMap; }\n\n\t/** Viewport size types list ordered by type, smallest to largest. */\n\tget sizeTypes(): ViewportSizeTypeInfo[] { return this._sizeTypes; }\n\n\tprivate _sizeTypeMap: Dictionary<ViewportSizeTypeInfo>;\n\tprivate _sizeTypes: ViewportSizeTypeInfo[];\n\tprivate _sizeTypeSnapshot: ViewportSizeTypeInfo;\n\n\tconstructor(\n\t\tprivate windowRef: WindowRef,\n\t\tprivate viewportServerSize: ViewportServerSizeService,\n\t) {\n\t\tconst config = inject(VIEWPORT_OPTIONS);\n\t\tthis._sizeTypes = generateViewportSizeTypeInfoList(config.breakpoints);\n\t\tthis._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);\n\n\t\tif (windowRef.hasNative) {\n\t\t\tthis.resizeSnap$ = fromEvent<Event>(window, \"resize\").pipe(\n\t\t\t\tmap(() => this.getViewportSize()),\n\t\t\t\tshare()\n\t\t\t);\n\n\t\t\tthis.resize$ = this.resizeSnap$.pipe(\n\t\t\t\tauditTime(config.resizePollingSpeed),\n\t\t\t\tshare(),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.resizeSnap$ = this.resize$ = of(viewportServerSize.get());\n\t\t}\n\t\tconst size = this.getViewportSize();\n\t\tthis._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);\n\n\t\tconst sizeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tstartWith(size),\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width && a.height === b.height),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeSnap$ = sizeFn(this.resizeSnap$);\n\t\tthis.size$ = sizeFn(this.resize$);\n\n\t\tconst sizeTypeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width),\n\t\t\tmap(x => getSizeTypeInfo(x.width, this.sizeTypes)),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(x => this._sizeTypeSnapshot = x),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeType$ = sizeTypeFn(this.size$);\n\t\tthis.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);\n\t}\n\n\t/** Returns the current viewport size */\n\tprivate getViewportSize(): ViewportSize {\n\t\tif (!this.windowRef.hasNative) {\n\t\t\treturn this.viewportServerSize.get();\n\t\t}\n\n\t\tconst ua = navigator.userAgent.toLowerCase();\n\t\tif (ua.indexOf(\"safari\") !== -1 && ua.indexOf(\"chrome\") === -1) { // safari subtracts the scrollbar width\n\t\t\treturn {\n\t\t\t\twidth: this.windowRef.native.document.documentElement.clientWidth,\n\t\t\t\theight: this.windowRef.native.document.documentElement.clientHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\twidth: this.windowRef.native.innerWidth,\n\t\t\theight: this.windowRef.native.innerHeight,\n\t\t};\n\t}\n\n}\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\n\nexport interface ViewportDataRule<T> {\n\tmin?: number;\n\tmax?: number;\n\tvalue: T;\n}\n\n/**\n * Utility function to generate rules based on strategies.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns a collection of rules (ordered).\n */\nexport function generateViewportRulesRangeFromDataMatcher<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): ViewportDataRule<T>[] {\n\tconst ruleBuilderFn = matchStrategyHandlerMap[strategy];\n\tif (!ruleBuilderFn) {\n\t\tthrow Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\n\tlet dataSizes: ViewportSizeTypeInfo[] = [];\n\tfor (const key in dataConfig) {\n\t\tif (Object.prototype.hasOwnProperty.call(dataConfig, key)) {\n\t\t\tconst data = dataConfig[key];\n\t\t\tif (data === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst size = sizeTypeMap[key];\n\t\t\tif (size) {\n\t\t\t\tdataSizes.push(size);\n\t\t\t}\n\t\t}\n\t}\n\tdataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);\n\n\tconst rules: ViewportDataRule<T>[] = [];\n\tif (dataConfig.default) {\n\t\trules.push({ value: dataConfig.default, min: undefined, max: undefined });\n\t}\n\n\tlet prevRule: ViewportDataRule<T> | undefined;\n\tfor (let index = 0; index < dataSizes.length; index++) {\n\t\tconst prevDataSize = dataSizes[index - 1];\n\t\tconst nextDataSize = dataSizes[index + 1];\n\t\tconst dataSize = dataSizes[index];\n\t\tconst prevSize = sizeTypes[dataSize.type - 1];\n\t\t// const nextSize = sizeTypes[dataSize.type + 1];\n\t\tconst data = dataConfig[dataSize.name];\n\t\tconst rule: ViewportDataRule<T> = {\n\t\t\tvalue: data,\n\t\t\tmin: undefined,\n\t\t\tmax: undefined,\n\t\t};\n\n\t\truleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);\n\n\t\tprevRule = rule;\n\t\trules.push(rule);\n\t}\n\treturn rules;\n}\n\nexport interface ViewportRuleRangeBuilder<T = unknown> {\n\t(\n\t\trule: ViewportDataRule<T>,\n\t\tdataSize: ViewportSizeTypeInfo,\n\t\tnextDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevSize: ViewportSizeTypeInfo | undefined,\n\t\tprevRule: ViewportDataRule<T> | undefined,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t): void;\n}\n\nconst matchStrategyHandlerMap: Dictionary<ViewportRuleRangeBuilder> = {\n\t[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {\n\t\trule.max = dataSize.widthThreshold;\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {\n\t\tif (dataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevDataSize) {\n\t\t\trule.min = prevDataSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n};\n\nfunction calculateClosestWidthThreshold(\n\tnextDataSize: ViewportSizeTypeInfo,\n\tdataSize: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerPreferred: boolean,\n) {\n\tconst fn = isSmallerPreferred ? Math.ceil : Math.floor;\n\t// get closest between curr and next\n\tconst diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);\n\tconst diffNextSize = sizeTypes[dataSize.type + diffIndex];\n\treturn (diffNextSize || dataSize).widthThreshold;\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { Observable, distinctUntilChanged, map } from \"rxjs\";\n\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportService } from \"../viewport.service\";\nimport { matchViewportData, ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\nimport { generateViewportRulesRangeFromDataMatcher, ViewportDataRule } from \"./viewport-data.utils\";\nimport { VIEWPORT_OPTIONS } from \"../viewport.options\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportDataService {\n\n\tprivate readonly viewport = inject(ViewportService);\n\tprivate readonly config = inject(VIEWPORT_OPTIONS);\n\n\t/** Get data for match. */\n\tget<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.defaultDataMatchStrategy,\n\t\tsizeType: ViewportSizeTypeInfo = this.viewport.sizeTypeSnapshot\n\t): T | undefined {\n\t\treturn matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);\n\t}\n\n\t/** Get data for match as observable. */\n\tget$<T>(dataConfig: ViewportDataConfig<T>, strategy?: ViewportDataMatchStrategy, throttle = true): Observable<T | undefined> {\n\t\treturn (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(\n\t\t\tmap(sizeType => this.get<T>(dataConfig, strategy, sizeType)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\t}\n\n\t/** Generate rules based on strategies for data. */\n\tgenerateRules<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.defaultDataMatchStrategy,\n\t): ViewportDataRule<T>[] {\n\t\treturn generateViewportRulesRangeFromDataMatcher(\n\t\t\tdataConfig,\n\t\t\tstrategy,\n\t\t\tthis.viewport.sizeTypes,\n\t\t\tthis.viewport.sizeTypeMap\n\t\t);\n\t}\n\n}\n","import { Subscription, tap } from \"rxjs\";\nimport { Pipe, PipeTransform, OnDestroy, ChangeDetectorRef } from \"@angular/core\";\n\nimport { ViewportDataConfig, ViewportDataMatchStrategy, ViewportDataMatchStrategyLiteral } from \"./viewport-data-matcher\";\nimport { ViewportDataService } from \"./viewport-data.service\";\n\n\n@Pipe({\n\tname: \"ssvViewportData\",\n\tpure: false,\n\tstandalone: true,\n})\nexport class ViewportDataPipe implements PipeTransform, OnDestroy {\n\n\tprivate markForTransform = true;\n\tprivate value: unknown;\n\tprivate data: ViewportDataConfig | undefined;\n\tprivate strategy: ViewportDataMatchStrategyLiteral | undefined;\n\tprivate data$$ = Subscription.EMPTY;\n\n\tconstructor(\n\t\tprivate viewportData: ViewportDataService,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t}\n\n\ttransform(data: ViewportDataConfig, strategy: ViewportDataMatchStrategyLiteral): unknown {\n\t\tif (!this.markForTransform && data === this.data && strategy === this.strategy) {\n\t\t\treturn this.value;\n\t\t}\n\t\tthis.data = data;\n\t\tthis.strategy = strategy;\n\n\t\tthis.data$$.unsubscribe();\n\t\tthis.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(\n\t\t\ttap(value => {\n\t\t\t\tthis.markForTransform = true;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t).subscribe();\n\n\t\tthis.markForTransform = false;\n\t\treturn this.value;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.data$$.unsubscribe();\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tViewContainerRef,\n\tEmbeddedViewRef,\n} from \"@angular/core\";\nimport { combineLatest, ReplaySubject, Subject, tap, map, takeUntil } from \"rxjs\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nconst NAME_CAMEL = \"ssvViewportMatcherVar\";\n\nexport class SsvViewportMatcherVarContext {\n\n\tconstructor(\n\t\tpublic $implicit = false,\n\t) { }\n\n}\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\tstandalone: true,\n})\nexport class SsvViewportMatcherVarDirective implements OnInit, OnDestroy {\n\n\tprivate _matchConditions: ViewportMatchConditions = {};\n\tprivate _context = new SsvViewportMatcherVarContext();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _update$ = new ReplaySubject<void>(1);\n\tprivate _viewRef!: EmbeddedViewRef<SsvViewportMatcherVarContext>;\n\n\t@Input(`${NAME_CAMEL}When`) set condition(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._matchConditions.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._matchConditions.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._matchConditions.sizeType = value;\n\t\t}\n\n\t\tthis._update$.next();\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate templateRef: TemplateRef<SsvViewportMatcherVarContext>,\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.updateView();\n\t\tcombineLatest([this.viewport.sizeType$, this._update$]).pipe(\n\t\t\tmap(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)),\n\t\t\ttap(x => this._context.$implicit = x),\n\t\t\ttap(() => this._viewRef.markForCheck()),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tprivate updateView(): void {\n\t\tthis.viewContainer.clear();\n\t\tthis._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tRenderer2,\n\tViewContainerRef,\n\tInput,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subscription, Subject, tap, filter, pairwise, startWith } from \"rxjs\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportSizeTypeInfo, ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nexport class SsvViewportMatcherContext implements ViewportMatchConditions {\n\n\tsizeType: string | string[] | null = null;\n\tsizeTypeExclude: string | string[] | null = null;\n\texpression?: ViewportSizeMatcherExpression;\n\n}\n\n@Directive({\n\tselector: \"[ssvViewportMatcher]\",\n\texportAs: \"ssvViewportMatcher\",\n\tstandalone: true,\n})\nexport class SsvViewportMatcherDirective implements OnInit, OnDestroy {\n\n\tsizeInfo: ViewportSizeTypeInfo | undefined;\n\n\tprivate _context: SsvViewportMatcherContext = new SsvViewportMatcherContext();\n\tprivate _thenTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _thenViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate sizeType$$ = Subscription.EMPTY;\n\tprivate cssClass$$ = Subscription.EMPTY;\n\tprivate readonly _update$ = new Subject<SsvViewportMatcherContext>();\n\n\t@Input() set ssvViewportMatcher(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._context.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._context.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._context.sizeType = value;\n\t\t}\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherExclude(value: string | string[]) {\n\t\tthis._context.sizeTypeExclude = value;\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherElse(templateRef: TemplateRef<SsvViewportMatcherContext> | null) {\n\t\tthis._elseTemplateRef = templateRef;\n\t\tthis._elseViewRef = null; // clear previous view if any.\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\ttemplateRef: TemplateRef<SsvViewportMatcherContext>,\n\t) {\n\t\tthis._thenTemplateRef = templateRef;\n\t}\n\n\tngOnInit(): void {\n\t\t// console.log(\"ssvViewportMatcher init\");\n\n\t\tthis._update$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - update triggered\", x)),\n\t\t\t\tfilter(() => !!this.sizeInfo),\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - updating...\", x)),\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ttap(() => this._updateView(this.sizeInfo!)),\n\t\t\t\ttap(() => this.cdr.markForCheck())\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.sizeType$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\"ssvViewportMatcher - sizeType changed\", x)),\n\t\t\t\ttap(x => this.sizeInfo = x),\n\t\t\t\ttap(() => this._update$.next(this._context)),\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.cssClass$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\tstartWith<ViewportSizeTypeInfo | undefined>(undefined),\n\t\t\t\tfilter(() => !!(this._thenViewRef || this._elseViewRef)),\n\t\t\t\tpairwise(),\n\t\t\t\ttap(([prev, curr]) => {\n\t\t\t\t\tconst el: Element = this._thenViewRef\n\t\t\t\t\t\t? this._thenViewRef.rootNodes[0]\n\t\t\t\t\t\t: this._elseViewRef?.rootNodes[0];\n\n\t\t\t\t\tif (!el.classList) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prev) {\n\t\t\t\t\t\tthis.renderer.removeClass(el, `ssv-vp-size--${prev.name}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderer.addClass(el, `ssv-vp-size--${curr?.name}`);\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cssClass$$.unsubscribe();\n\t\tthis.sizeType$$.unsubscribe();\n\t\tthis._update$.complete();\n\t}\n\n\tprivate _updateView(sizeInfo: ViewportSizeTypeInfo) {\n\t\tif (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {\n\t\t\tif (!this._thenViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._elseViewRef = null;\n\n\t\t\t\tif (this._thenTemplateRef) {\n\t\t\t\t\tthis._thenViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._thenTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._elseViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._thenViewRef = null;\n\n\t\t\t\tif (this._elseTemplateRef) {\n\t\t\t\t\tthis._elseViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._elseTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { ViewportDataPipe } from \"./viewport-data/viewport-data.pipe\";\nimport { SsvViewportMatcherVarDirective } from \"./viewport-matcher-var.directive\";\nimport { SsvViewportMatcherDirective } from \"./viewport-matcher.directive\";\n\nconst EXPORTED_IMPORTS = [\n\tSsvViewportMatcherDirective,\n\tSsvViewportMatcherVarDirective,\n\tViewportDataPipe,\n];\n\n@NgModule({\n\timports: [EXPORTED_IMPORTS],\n\texports: [EXPORTED_IMPORTS]\n})\nexport class SsvUxViewportModule {\n\n}","import { NgModule } from \"@angular/core\";\n\nimport { SsvUxViewportModule } from \"./viewport/viewport.module\";\n\nconst EXPORTED_IMPORTS = [\n\tSsvUxViewportModule,\n];\n\n@NgModule({\n\timports: [EXPORTED_IMPORTS],\n\texports: [EXPORTED_IMPORTS]\n})\nexport class SsvUxModule {\n\n}","export const VERSION = \"3.1.4-dev.61\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["matchStrategyHandlerMap","i1.WindowRef","i2.ViewportServerSizeService","i1.ViewportDataService","i1.ViewportService","EXPORTED_IMPORTS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssv-ngx.ux.mjs","sources":["../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data-matcher.ts","../../../../libs/ngx.ux/src/platform/window.ts","../../../../libs/ngx.ux/src/viewport/viewport.model.ts","../../../../libs/ngx.ux/src/viewport/viewport-server-size.service.ts","../../../../libs/ngx.ux/src/viewport/viewport.util.ts","../../../../libs/ngx.ux/src/viewport/viewport.options.ts","../../../../libs/ngx.ux/src/viewport/viewport.service.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.utils.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.service.ts","../../../../libs/ngx.ux/src/viewport/viewport-data/viewport-data.pipe.ts","../../../../libs/ngx.ux/src/viewport/viewport-matcher-var.directive.ts","../../../../libs/ngx.ux/src/viewport/viewport-matcher.directive.ts","../../../../libs/ngx.ux/src/viewport/viewport.module.ts","../../../../libs/ngx.ux/src/ux.module.ts","../../../../libs/ngx.ux/src/version.ts","../../../../libs/ngx.ux/src/ssv-ngx.ux.ts"],"sourcesContent":["import type { Dictionary } from \"../../internal/internal.model\";\nimport type { ViewportSizeTypeInfo } from \"../viewport.model\";\n\nexport type ViewportDataConfig<TValue = unknown, TData = Dictionary<TValue>> = TData & {\n\tdefault?: TValue\n};\n\nexport enum ViewportDataMatchStrategy {\n\t/** Indicates that size should match exact or default. */\n\texact,\n\n\t/** Indicates that size matches when exact match, first match smaller (down) or default. */\n\tsmaller,\n\n\t/** Indicates that size matches when exact match, first match larger (up) or default. */\n\tlarger,\n\n\t/** Indicates that size matches when exact match, or it tries both smaller/larger (smaller is preferred) until match or default. */\n\tclosestSmallerFirst,\n\n\t/** Indicates that size matches when exact match, or it tries both larger/smaller (larger is preferred) until match or default. */\n\tclosestLargerFirst,\n}\nexport type ViewportDataMatchStrategyLiteral = keyof typeof ViewportDataMatchStrategy;\n\nexport interface ViewportDataMatcher<T = unknown> {\n\t(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tcurrentSizeType: ViewportSizeTypeInfo,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n\t): T | undefined;\n}\n\n/**\n * Utility function to match data based on strategy and size.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param sizeType Size type to get data for.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns the matched data value.\n */\nexport function matchViewportData<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tsizeType: ViewportSizeTypeInfo,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): T | undefined {\n\tconst matchFn = matchStrategyHandlerMap[strategy];\n\tif (!matchFn) {\n\t\tthrow Error(`matchViewportData: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\tconst data = matchFn(dataConfig, sizeType, sizeTypes, sizeTypeMap) as T;\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\treturn dataConfig.default;\n}\n\n\nconst matchStrategyHandlerMap: Dictionary<ViewportDataMatcher> = {\n\t[ViewportDataMatchStrategy.exact]: matchWithExact,\n\t[ViewportDataMatchStrategy.larger]: matchWithLargerMatch,\n\t[ViewportDataMatchStrategy.smaller]: matchWithSmallerMatch,\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: matchWithClosestSmallerFirstMatch,\n\t[ViewportDataMatchStrategy.closestLargerFirst]: matchWithClosestLargerFirstMatch,\n};\n\nfunction matchWithExact<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n): T | undefined {\n\treturn dataConfig[currentSizeType.name];\n}\n\nfunction matchWithLargerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tconst largestTypeIdx = sizeTypes[sizeTypes.length - 1].type;\n\tif (currentSizeType.type >= largestTypeIdx) {\n\t\treturn undefined;\n\t}\n\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index++) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithSmallerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tif (currentSizeType.type <= 0) {\n\t\treturn undefined;\n\t}\n\n\t// eslint-disable-next-line for-direction\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index--) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithClosestSmallerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, true);\n}\n\nfunction matchWithClosestLargerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, false);\n}\n\nfunction closestMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerFirst: boolean\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tlet downIndex = currentSizeType.type;\n\tlet upIndex = currentSizeType.type;\n\n\t \n\tfor (let index = 0; index < sizeTypes.length; index++) {\n\t\tfor (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {\n\t\t\tconst sizeType = sizeTypes[idx];\n\t\t\tif (sizeType) {\n\t\t\t\tdata = dataConfig[sizeType.name];\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { InjectionToken, Injectable, inject } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>(\"Window\", {\n\tfactory: () => _window() as Window,\n});\n\nexport function _window(): unknown {\n\tif (typeof window !== \"undefined\") {\n\t\treturn window;\n\t}\n\treturn {};\n}\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class WindowRef {\n\n\tprivate readonly window = inject(WINDOW);\n\n\t/** Window underlying native object. */\n\tget native(): Window {\n\t\treturn this.window as Window;\n\t}\n\n\t/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */\n\tget hasNative(): boolean {\n\t\treturn !!this.native.window;\n\t}\n\n}\n","/**\n * The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.\n * @see UX_VIEWPORT_DEFAULT_BREAKPOINTS\n */\nexport enum ViewportSizeType {\n\txsmall = 0,\n\tsmall = 1,\n\tmedium = 2,\n\tlarge = 3,\n\txlarge = 4,\n\txxlarge = 5,\n\txxlarge1 = 6,\n}\n\nexport enum ComparisonOperation {\n\tequals = \"=\",\n\tnotEquals = \"<>\",\n\tlessThan = \"<\",\n\tlessOrEqualThan = \"<=\",\n\tgreaterThan = \">\",\n\tgreaterOrEqualThan = \">=\",\n}\n\nexport type ComparisonOperationKeyType = keyof typeof ComparisonOperation;\nexport type ComparisonOperationValueType = \"=\" | \"<>\" | \"<\" | \"<=\" | \">\" | \">=\"; // todo: find a better way to do this\nexport type ComparisonOperationLiteral = ComparisonOperationKeyType | ComparisonOperationValueType;\n\nexport enum DeviceType {\n\tdesktop = \"desktop\",\n\tmobile = \"mobile\",\n\ttablet = \"tablet\"\n}\n\nexport interface ViewportSize {\n\twidth: number;\n\theight: number;\n}\n\nexport interface ViewportSizeTypeInfo {\n\ttype: number;\n\tname: string;\n\twidthThreshold: number;\n}\n\nexport interface ViewportMatchConditions {\n\tsizeType?: string | string[] | null;\n\tsizeTypeExclude?: string | string[] | null;\n\texpression?: ViewportSizeMatcherExpression;\n}\n\nexport interface ViewportSizeMatcherExpression {\n\tsize: string;\n\toperation: ComparisonOperationLiteral;\n}\n","import { Injectable, InjectionToken, inject } from \"@angular/core\";\n\nimport { DeviceType, ViewportSize } from \"./viewport.model\";\n\n// todo: make this configurable\n/** Viewport size for SSR. */\nconst viewportSizeSSR: Record<DeviceType, ViewportSize> = {\n\t[DeviceType.desktop]: {\n\t\twidth: 1366,\n\t\theight: 768,\n\t},\n\t[DeviceType.tablet]: {\n\t\twidth: 768,\n\t\theight: 1024,\n\t},\n\t[DeviceType.mobile]: {\n\t\twidth: 414,\n\t\theight: 736,\n\t},\n};\n\nexport const VIEWPORT_SSR_DEVICE = new InjectionToken<DeviceType>(\"UX_VIEWPORT_SSR_DEVICE\", {\n\tfactory: () => DeviceType.desktop,\n\tprovidedIn: \"platform\",\n});\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportServerSizeService {\n\n\tprivate readonly deviceType = inject(VIEWPORT_SSR_DEVICE);\n\n\tget(): ViewportSize {\n\t\treturn viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport {\n\tComparisonOperation,\n\tViewportSizeMatcherExpression,\n\tViewportSizeTypeInfo,\n\tViewportMatchConditions\n} from \"./viewport.model\";\n\nexport function isViewportSizeMatcherExpression(value: unknown): value is ViewportSizeMatcherExpression {\n\tif (typeof value !== \"object\" || !value) {\n\t\treturn false;\n\t}\n\tconst args: Partial<ViewportSizeMatcherExpression> = value;\n\tif (args.size && args.operation) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isViewportSizeMatcherTupleExpression(arg: unknown): arg is [ComparisonOperation, string] {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\tif (Array.isArray(arg)) {\n\t\tif (arg.length === 2) {\n\t\t\tconst [op] = arg;\n\t\t\treturn operations.includes(op);\n\t\t}\n\t}\n\treturn false;\n}\n\n\nconst operations = Object.values(ComparisonOperation);\n\nexport const COMPARISON_OPERATION_FUNC_MAPPING: Dictionary<(a: number, b: number) => boolean> = {\n\t[ComparisonOperation.equals]: (a: number, b: number) => a === b,\n\t[ComparisonOperation.notEquals]: (a: number, b: number) => a !== b,\n\t[ComparisonOperation.lessThan]: (a: number, b: number) => a < b,\n\t[ComparisonOperation.lessOrEqualThan]: (a: number, b: number) => a <= b,\n\t[ComparisonOperation.greaterThan]: (a: number, b: number) => a > b,\n\t[ComparisonOperation.greaterOrEqualThan]: (a: number, b: number) => a >= b,\n};\n\nexport function isViewportConditionMatch(\n\tevaluateSize: ViewportSizeTypeInfo,\n\tconditions: ViewportMatchConditions,\n\tviewportSizeTypeInfoRefs: Dictionary<ViewportSizeTypeInfo>\n): boolean {\n\tconst isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);\n\tlet isIncluded;\n\tlet isExpressionTruthy;\n\n\tif (!isExcluded && conditions.expression) {\n\t\tconst ref = viewportSizeTypeInfoRefs[conditions.expression.size];\n\t\tif(!ref) {\n\t\t\tthrow new Error(`Viewport size type is invalid. Size type: '${conditions.expression.size}'`);\n\t\t}\n\t\tconst expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];\n\n\t\tisExpressionTruthy = expMatcher(evaluateSize.type, ref.type);\n\t} else {\n\t\tisIncluded = match(conditions.sizeType, evaluateSize.name, true);\n\t}\n\n\tconst shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;\n\t// console.warn(\">>> shouldRender\", { evaluateSize, conditions, shouldRender });\n\treturn !!shouldRender;\n}\n\nfunction match(value: string | string[] | null | undefined, targetValue: string, defaultValue: boolean) {\n\tif (!value) {\n\t\treturn defaultValue;\n\t}\n\n\treturn Array.isArray(value)\n\t\t? value.includes(targetValue)\n\t\t: value === targetValue;\n}\n\nexport function getSizeTypeInfo(width: number, sizeTypes: ViewportSizeTypeInfo[]): ViewportSizeTypeInfo {\n\tconst lastEntryIndex = sizeTypes.length - 1;\n\n\tfor (let idx = 0; idx < lastEntryIndex; idx++) {\n\t\tconst viewportSizeTypeInfo = sizeTypes[idx];\n\n\t\tif (width <= viewportSizeTypeInfo.widthThreshold) {\n\t\t\treturn viewportSizeTypeInfo;\n\t\t}\n\t}\n\n\treturn sizeTypes[lastEntryIndex];\n}\n\n/**\n * Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from\n * smallest to largest.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nfunction getSortedBreakpoints(breakpoints: Dictionary<number>): [string, number][] {\n\treturn Object.entries(breakpoints)\n\t\t.sort(([, widthA], [, widthB]) => widthA - widthB);\n}\n\n/**\n * A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.\n * @param breakpoints the custom breakpoints\n */\nexport function generateViewportSizeType<T extends Record<string, number>>(breakpoints: T): T & Record<number, string> {\n\treturn Object.freeze(\n\t\tgetSortedBreakpoints(breakpoints).reduce<Record<number | string, string | number>>(\n\t\t\t(dictionary, [name], index) => {\n\t\t\t\tdictionary[name] = index;\n\t\t\t\tdictionary[index] = name;\n\t\t\t\treturn dictionary;\n\t\t\t}, {}\n\t\t)\n\t) as T & Record<number, string>;\n}\n\n/**\n * Pre-processes the given breakpoints into an ordered list from smallest to largest while generating\n * all the necessary information on the viewport.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nexport function generateViewportSizeTypeInfoList(breakpoints: Dictionary<number>): ViewportSizeTypeInfo[] {\n\treturn getSortedBreakpoints(breakpoints)\n\t\t.map(([name, width], index) =>\n\t\t\t(Object.freeze({\n\t\t\t\tname,\n\t\t\t\ttype: index,\n\t\t\t\twidthThreshold: width\n\t\t\t}))\n\t\t);\n}\n\n/**\n * Converts the breakpoint list into a dictionary while using the name as key.\n * @param breakpointList the list of breakpoints\n * @internal\n */\nexport function generateViewportSizeTypeInfoRefs(breakpointList: ViewportSizeTypeInfo[]): Dictionary<ViewportSizeTypeInfo> {\n\treturn Object.freeze(\n\t\tbreakpointList.reduce<Dictionary<ViewportSizeTypeInfo>>((dictionary, breakpoint) => {\n\t\t\tdictionary[breakpoint.name] = breakpoint;\n\t\t\tdictionary[breakpoint.type] = breakpoint;\n\t\t\treturn dictionary;\n\t\t}, {})\n\t);\n}\n","import { type EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from \"@angular/core\";\n\nimport type { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data/viewport-data-matcher\";\nimport { VIEWPORT_SSR_DEVICE } from \"./viewport-server-size.service\";\nimport { DeviceType } from \"./viewport.model\";\n\n/** Default viewport breakpoints. */\nexport const UX_VIEWPORT_DEFAULT_BREAKPOINTS: Dictionary<number> = {\n\txsmall: 450,\n\tsmall: 767,\n\tmedium: 992,\n\tlarge: 1200,\n\txlarge: 1500,\n\txxlarge: 1920,\n\txxlarge1: 2100,\n};\n\nexport interface UxViewportOptions {\n\t/** Polling speed on resizing (in milliseconds). e.g. the higher the number the longer it takes to recalculate. */\n\tresizePollingSpeed: number;\n\n\t/** Breakpoints to use. Key needs to match the size type and the value the width threshold.\n\t * e.g. given width '1000' and `medium` is set to '992' => `large`.\n\t */\n\tbreakpoints: Dictionary<number>;\n\n\t/** Default data match strategy to use. */\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy;\n}\n\nconst DEFAULT_OPTIONS = Object.freeze<UxViewportOptions>({\n\tresizePollingSpeed: 33,\n\tbreakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,\n});\n\nexport const VIEWPORT_OPTIONS = new InjectionToken<UxViewportOptions>(\"SSV_UX_VIEWPORT_OPTIONS\", {\n\tfactory: () => DEFAULT_OPTIONS,\n});\n\nexport function provideSsvUxViewportOptions(\n\toptions: Partial<UxViewportOptions> | ((defaults: Readonly<UxViewportOptions>) => Partial<UxViewportOptions>),\n\t...features: EnvironmentProviders[]\n): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: VIEWPORT_OPTIONS,\n\t\t\tuseFactory: () => {\n\t\t\t\tlet opts = typeof options === \"function\" ? options(DEFAULT_OPTIONS) : options;\n\t\t\t\topts = opts\n\t\t\t\t\t? {\n\t\t\t\t\t\t...DEFAULT_OPTIONS,\n\t\t\t\t\t\t...opts, // NOTE: breakpoints shoudn't be merged\n\t\t\t\t\t}\n\t\t\t\t\t: DEFAULT_OPTIONS;\n\t\t\t\treturn opts;\n\t\t\t},\n\t\t},\n\t\t...features,\n\t]);\n}\n\nexport function withViewportSsrDevice(options: DeviceType | (() => DeviceType)): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: VIEWPORT_SSR_DEVICE,\n\t\t\tuseFactory: () => {\n\t\t\t\tconst deviceType = typeof options === \"function\" ? options() : options;\n\t\t\t\treturn deviceType;\n\t\t\t},\n\t\t},\n\t]);\n}","import { Injectable, Signal, inject, signal } from \"@angular/core\";\nimport { takeUntilDestroyed, toObservable, toSignal } from \"@angular/core/rxjs-interop\";\nimport {\n\tObservable,\n\tfromEvent,\n\tmap,\n\ttap,\n\tdistinctUntilChanged,\n\tstartWith,\n\tshare,\n\tshareReplay,\n\tauditTime,\n\tof,\n} from \"rxjs\";\n\nimport { ViewportSizeTypeInfo, ViewportSize } from \"./viewport.model\";\nimport { WindowRef } from \"../platform/window\";\nimport { ViewportServerSizeService } from \"./viewport-server-size.service\";\nimport { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from \"./viewport.util\";\nimport { VIEWPORT_OPTIONS } from \"./viewport.options\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportService {\n\n\treadonly #viewportServerSize = inject(ViewportServerSizeService);\n\treadonly #windowRef = inject(WindowRef);\n\treadonly #config = inject(VIEWPORT_OPTIONS);\n\n\t/** Viewport size types list ordered by type, smallest to largest. */\n\treadonly sizeTypes = generateViewportSizeTypeInfoList(this.#config.breakpoints);\n\n\t/** Size types refs of the generated viewport size type info. */\n\treadonly sizeTypeMap = generateViewportSizeTypeInfoRefs(this.sizeTypes);\n\n\t/** Viewport size signal (which is also throttled). */\n\treadonly viewportSize: Signal<ViewportSize>;\n\n\t/** Viewport size type signal (which is also throttled). */\n\treadonly sizeType: Signal<ViewportSizeTypeInfo>;\n\n\t/** Window resize observable. */\n\treadonly resizeSnap$: Observable<ViewportSize>;\n\n\t/** Window resize observable (which is also throttled). */\n\treadonly resize$: Observable<ViewportSize>;\n\n\t/** Viewport size type observable (which is also throttled). */\n\treadonly sizeType$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type observable. */\n\treadonly sizeTypeSnap$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */\n\tget sizeTypeSnapshot(): ViewportSizeTypeInfo { return this.sizeType(); }\n\n\t/** Viewport size observable (which is also throttled). */\n\treadonly size$: Observable<ViewportSize>;\n\n\t/** Viewport size observable. */\n\treadonly sizeSnap$: Observable<ViewportSize>;\n\n\tconstructor(\n\t) {\n\t\tif (this.#windowRef.hasNative) {\n\t\t\tthis.resizeSnap$ = fromEvent<Event>(this.#windowRef.native, \"resize\").pipe(\n\t\t\t\tmap(() => this.getViewportSize()),\n\t\t\t\tshare()\n\t\t\t);\n\n\t\t\tthis.resize$ = this.resizeSnap$.pipe(\n\t\t\t\tauditTime(this.#config.resizePollingSpeed),\n\t\t\t\tshare(),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.resizeSnap$ = this.resize$ = of(this.#viewportServerSize.get());\n\t\t}\n\t\tconst size = this.getViewportSize();\n\n\t\tconst sizeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tstartWith(size),\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width && a.height === b.height),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeSnap$ = sizeFn(this.resizeSnap$);\n\t\tthis.size$ = sizeFn(this.resize$);\n\n\t\tconst sizeTypeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width),\n\t\t\tmap(x => getSizeTypeInfo(x.width, this.sizeTypes)),\n\t\t\tdistinctUntilChanged(),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeType$ = sizeTypeFn(this.size$);\n\t\tthis.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);\n\n\t\tthis.viewportSize = toSignal(this.size$, { initialValue: size });\n\t\tthis.sizeType = toSignal(this.sizeTypeSnap$, { initialValue: getSizeTypeInfo(size.width, this.sizeTypes) });\n\t}\n\n\t/** Returns the current viewport size */\n\tprivate getViewportSize(): ViewportSize {\n\t\tif (!this.#windowRef.hasNative) {\n\t\t\treturn this.#viewportServerSize.get();\n\t\t}\n\n\t\tconst ua = navigator.userAgent.toLowerCase();\n\t\tif (ua.indexOf(\"safari\") !== -1 && ua.indexOf(\"chrome\") === -1) { // safari subtracts the scrollbar width\n\t\t\treturn {\n\t\t\t\twidth: this.#windowRef.native.document.documentElement.clientWidth,\n\t\t\t\theight: this.#windowRef.native.document.documentElement.clientHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\twidth: this.#windowRef.native.innerWidth,\n\t\t\theight: this.#windowRef.native.innerHeight,\n\t\t};\n\t}\n\n}\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\n\nexport interface ViewportDataRule<T> {\n\tmin?: number;\n\tmax?: number;\n\tvalue: T;\n}\n\n/**\n * Utility function to generate rules based on strategies.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns a collection of rules (ordered).\n */\nexport function generateViewportRulesRangeFromDataMatcher<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): ViewportDataRule<T>[] {\n\tconst ruleBuilderFn = matchStrategyHandlerMap[strategy];\n\tif (!ruleBuilderFn) {\n\t\tthrow Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\n\tlet dataSizes: ViewportSizeTypeInfo[] = [];\n\tfor (const key in dataConfig) {\n\t\tif (Object.prototype.hasOwnProperty.call(dataConfig, key)) {\n\t\t\tconst data = dataConfig[key];\n\t\t\tif (data === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst size = sizeTypeMap[key];\n\t\t\tif (size) {\n\t\t\t\tdataSizes.push(size);\n\t\t\t}\n\t\t}\n\t}\n\tdataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);\n\n\tconst rules: ViewportDataRule<T>[] = [];\n\tif (dataConfig.default) {\n\t\trules.push({ value: dataConfig.default, min: undefined, max: undefined });\n\t}\n\n\tlet prevRule: ViewportDataRule<T> | undefined;\n\tfor (let index = 0; index < dataSizes.length; index++) {\n\t\tconst prevDataSize = dataSizes[index - 1];\n\t\tconst nextDataSize = dataSizes[index + 1];\n\t\tconst dataSize = dataSizes[index];\n\t\tconst prevSize = sizeTypes[dataSize.type - 1];\n\t\t// const nextSize = sizeTypes[dataSize.type + 1];\n\t\tconst data = dataConfig[dataSize.name];\n\t\tconst rule: ViewportDataRule<T> = {\n\t\t\tvalue: data,\n\t\t\tmin: undefined,\n\t\t\tmax: undefined,\n\t\t};\n\n\t\truleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);\n\n\t\tprevRule = rule;\n\t\trules.push(rule);\n\t}\n\treturn rules;\n}\n\nexport interface ViewportRuleRangeBuilder<T = unknown> {\n\t(\n\t\trule: ViewportDataRule<T>,\n\t\tdataSize: ViewportSizeTypeInfo,\n\t\tnextDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevSize: ViewportSizeTypeInfo | undefined,\n\t\tprevRule: ViewportDataRule<T> | undefined,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t): void;\n}\n\nconst matchStrategyHandlerMap: Dictionary<ViewportRuleRangeBuilder> = {\n\t[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {\n\t\trule.max = dataSize.widthThreshold;\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {\n\t\tif (dataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevDataSize) {\n\t\t\trule.min = prevDataSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n};\n\nfunction calculateClosestWidthThreshold(\n\tnextDataSize: ViewportSizeTypeInfo,\n\tdataSize: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerPreferred: boolean,\n) {\n\tconst fn = isSmallerPreferred ? Math.ceil : Math.floor;\n\t// get closest between curr and next\n\tconst diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);\n\tconst diffNextSize = sizeTypes[dataSize.type + diffIndex];\n\treturn (diffNextSize || dataSize).widthThreshold;\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { Observable, distinctUntilChanged, map } from \"rxjs\";\n\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportService } from \"../viewport.service\";\nimport { matchViewportData, ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\nimport { generateViewportRulesRangeFromDataMatcher, ViewportDataRule } from \"./viewport-data.utils\";\nimport { VIEWPORT_OPTIONS } from \"../viewport.options\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportDataService {\n\n\treadonly #viewport = inject(ViewportService);\n\treadonly #config = inject(VIEWPORT_OPTIONS);\n\n\t/** Get data for match. */\n\tget<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.#config.defaultDataMatchStrategy,\n\t\tsizeType: ViewportSizeTypeInfo = this.#viewport.sizeTypeSnapshot\n\t): T | undefined {\n\t\treturn matchViewportData(dataConfig, sizeType, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);\n\t}\n\n\t/** Get data for match as observable. */\n\tget$<T>(dataConfig: ViewportDataConfig<T>, strategy?: ViewportDataMatchStrategy, throttle = true): Observable<T | undefined> {\n\t\treturn (throttle ? this.#viewport.sizeType$ : this.#viewport.sizeTypeSnap$).pipe(\n\t\t\tmap(sizeType => this.get<T>(dataConfig, strategy, sizeType)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\t}\n\n\t/** Generate rules based on strategies for data. */\n\tgenerateRules<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.#config.defaultDataMatchStrategy,\n\t): ViewportDataRule<T>[] {\n\t\treturn generateViewportRulesRangeFromDataMatcher(\n\t\t\tdataConfig,\n\t\t\tstrategy,\n\t\t\tthis.#viewport.sizeTypes,\n\t\t\tthis.#viewport.sizeTypeMap\n\t\t);\n\t}\n\n}\n","import { Subscription, tap } from \"rxjs\";\nimport { Pipe, PipeTransform, OnDestroy, ChangeDetectorRef } from \"@angular/core\";\n\nimport { ViewportDataConfig, ViewportDataMatchStrategy, ViewportDataMatchStrategyLiteral } from \"./viewport-data-matcher\";\nimport { ViewportDataService } from \"./viewport-data.service\";\n\n\n@Pipe({\n\tname: \"ssvViewportData\",\n\tpure: false,\n\tstandalone: true,\n})\nexport class ViewportDataPipe implements PipeTransform, OnDestroy {\n\n\tprivate markForTransform = true;\n\tprivate value: unknown;\n\tprivate data: ViewportDataConfig | undefined;\n\tprivate strategy: ViewportDataMatchStrategyLiteral | undefined;\n\tprivate data$$ = Subscription.EMPTY;\n\n\tconstructor(\n\t\tprivate viewportData: ViewportDataService,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t}\n\n\ttransform(data: ViewportDataConfig, strategy: ViewportDataMatchStrategyLiteral): unknown {\n\t\tif (!this.markForTransform && data === this.data && strategy === this.strategy) {\n\t\t\treturn this.value;\n\t\t}\n\t\tthis.data = data;\n\t\tthis.strategy = strategy;\n\n\t\tthis.data$$.unsubscribe();\n\t\tthis.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(\n\t\t\ttap(value => {\n\t\t\t\tthis.markForTransform = true;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t).subscribe();\n\n\t\tthis.markForTransform = false;\n\t\treturn this.value;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.data$$.unsubscribe();\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tViewContainerRef,\n\tEmbeddedViewRef,\n} from \"@angular/core\";\nimport { combineLatest, ReplaySubject, Subject, tap, map, takeUntil } from \"rxjs\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nconst NAME_CAMEL = \"ssvViewportMatcherVar\";\n\nexport class SsvViewportMatcherVarContext {\n\n\tconstructor(\n\t\tpublic $implicit = false,\n\t) { }\n\n}\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n\tstandalone: true,\n})\nexport class SsvViewportMatcherVarDirective implements OnInit, OnDestroy {\n\n\tprivate _matchConditions: ViewportMatchConditions = {};\n\tprivate _context = new SsvViewportMatcherVarContext();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _update$ = new ReplaySubject<void>(1);\n\tprivate _viewRef!: EmbeddedViewRef<SsvViewportMatcherVarContext>;\n\n\t@Input(`${NAME_CAMEL}When`) set condition(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._matchConditions.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._matchConditions.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._matchConditions.sizeType = value;\n\t\t}\n\n\t\tthis._update$.next();\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate templateRef: TemplateRef<SsvViewportMatcherVarContext>,\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.updateView();\n\t\tcombineLatest([this.viewport.sizeType$, this._update$]).pipe(\n\t\t\tmap(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)),\n\t\t\ttap(x => this._context.$implicit = x),\n\t\t\ttap(() => this._viewRef.markForCheck()),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tprivate updateView(): void {\n\t\tthis.viewContainer.clear();\n\t\tthis._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tRenderer2,\n\tViewContainerRef,\n\tInput,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subscription, Subject, tap, filter, pairwise, startWith } from \"rxjs\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportSizeTypeInfo, ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nexport class SsvViewportMatcherContext implements ViewportMatchConditions {\n\n\tsizeType: string | string[] | null = null;\n\tsizeTypeExclude: string | string[] | null = null;\n\texpression?: ViewportSizeMatcherExpression;\n\n}\n\n@Directive({\n\tselector: \"[ssvViewportMatcher]\",\n\texportAs: \"ssvViewportMatcher\",\n\tstandalone: true,\n})\nexport class SsvViewportMatcherDirective implements OnInit, OnDestroy {\n\n\tsizeInfo: ViewportSizeTypeInfo | undefined;\n\n\tprivate _context: SsvViewportMatcherContext = new SsvViewportMatcherContext();\n\tprivate _thenTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _thenViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate sizeType$$ = Subscription.EMPTY;\n\tprivate cssClass$$ = Subscription.EMPTY;\n\tprivate readonly _update$ = new Subject<SsvViewportMatcherContext>();\n\n\t@Input() set ssvViewportMatcher(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._context.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._context.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._context.sizeType = value;\n\t\t}\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherExclude(value: string | string[]) {\n\t\tthis._context.sizeTypeExclude = value;\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherElse(templateRef: TemplateRef<SsvViewportMatcherContext> | null) {\n\t\tthis._elseTemplateRef = templateRef;\n\t\tthis._elseViewRef = null; // clear previous view if any.\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\ttemplateRef: TemplateRef<SsvViewportMatcherContext>,\n\t) {\n\t\tthis._thenTemplateRef = templateRef;\n\t}\n\n\tngOnInit(): void {\n\t\t// console.log(\"ssvViewportMatcher init\");\n\n\t\tthis._update$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - update triggered\", x)),\n\t\t\t\tfilter(() => !!this.sizeInfo),\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - updating...\", x)),\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ttap(() => this._updateView(this.sizeInfo!)),\n\t\t\t\ttap(() => this.cdr.markForCheck())\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.sizeType$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\"ssvViewportMatcher - sizeType changed\", x)),\n\t\t\t\ttap(x => this.sizeInfo = x),\n\t\t\t\ttap(() => this._update$.next(this._context)),\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.cssClass$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\tstartWith<ViewportSizeTypeInfo | undefined>(undefined),\n\t\t\t\tfilter(() => !!(this._thenViewRef || this._elseViewRef)),\n\t\t\t\tpairwise(),\n\t\t\t\ttap(([prev, curr]) => {\n\t\t\t\t\tconst el: Element = this._thenViewRef\n\t\t\t\t\t\t? this._thenViewRef.rootNodes[0]\n\t\t\t\t\t\t: this._elseViewRef?.rootNodes[0];\n\n\t\t\t\t\tif (!el.classList) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prev) {\n\t\t\t\t\t\tthis.renderer.removeClass(el, `ssv-vp-size--${prev.name}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderer.addClass(el, `ssv-vp-size--${curr?.name}`);\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cssClass$$.unsubscribe();\n\t\tthis.sizeType$$.unsubscribe();\n\t\tthis._update$.complete();\n\t}\n\n\tprivate _updateView(sizeInfo: ViewportSizeTypeInfo) {\n\t\tif (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {\n\t\t\tif (!this._thenViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._elseViewRef = null;\n\n\t\t\t\tif (this._thenTemplateRef) {\n\t\t\t\t\tthis._thenViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._thenTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._elseViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._thenViewRef = null;\n\n\t\t\t\tif (this._elseTemplateRef) {\n\t\t\t\t\tthis._elseViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._elseTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { ViewportDataPipe } from \"./viewport-data/viewport-data.pipe\";\nimport { SsvViewportMatcherVarDirective } from \"./viewport-matcher-var.directive\";\nimport { SsvViewportMatcherDirective } from \"./viewport-matcher.directive\";\n\nconst EXPORTED_IMPORTS = [\n\tSsvViewportMatcherDirective,\n\tSsvViewportMatcherVarDirective,\n\tViewportDataPipe,\n];\n\n@NgModule({\n\timports: [EXPORTED_IMPORTS],\n\texports: [EXPORTED_IMPORTS]\n})\nexport class SsvUxViewportModule {\n\n}","import { NgModule } from \"@angular/core\";\n\nimport { SsvUxViewportModule } from \"./viewport/viewport.module\";\n\nconst EXPORTED_IMPORTS = [\n\tSsvUxViewportModule,\n];\n\n@NgModule({\n\timports: [EXPORTED_IMPORTS],\n\texports: [EXPORTED_IMPORTS]\n})\nexport class SsvUxModule {\n\n}","export const VERSION = \"3.2.0-dev.68\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["matchStrategyHandlerMap","i1.ViewportDataService","i1.ViewportService","EXPORTED_IMPORTS"],"mappings":"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"}
|
package/package.json
CHANGED
package/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "3.
|
|
1
|
+
export declare const VERSION = "3.2.0-dev.68";
|
|
@@ -4,8 +4,7 @@ import { ViewportDataConfig, ViewportDataMatchStrategy } from "./viewport-data-m
|
|
|
4
4
|
import { ViewportDataRule } from "./viewport-data.utils";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class ViewportDataService {
|
|
7
|
-
private
|
|
8
|
-
private readonly config;
|
|
7
|
+
#private;
|
|
9
8
|
/** Get data for match. */
|
|
10
9
|
get<T>(dataConfig: ViewportDataConfig<T>, strategy?: ViewportDataMatchStrategy, sizeType?: ViewportSizeTypeInfo): T | undefined;
|
|
11
10
|
/** Get data for match as observable. */
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { Signal } from "@angular/core";
|
|
1
2
|
import { Observable } from "rxjs";
|
|
2
3
|
import { ViewportSizeTypeInfo, ViewportSize } from "./viewport.model";
|
|
3
|
-
import { WindowRef } from "../platform/window";
|
|
4
|
-
import { ViewportServerSizeService } from "./viewport-server-size.service";
|
|
5
|
-
import type { Dictionary } from "../internal/internal.model";
|
|
6
4
|
import * as i0 from "@angular/core";
|
|
7
5
|
export declare class ViewportService {
|
|
8
|
-
private
|
|
9
|
-
|
|
6
|
+
#private;
|
|
7
|
+
/** Viewport size types list ordered by type, smallest to largest. */
|
|
8
|
+
readonly sizeTypes: ViewportSizeTypeInfo[];
|
|
9
|
+
/** Size types refs of the generated viewport size type info. */
|
|
10
|
+
readonly sizeTypeMap: import("../internal/internal.model").Dictionary<ViewportSizeTypeInfo>;
|
|
11
|
+
/** Viewport size signal (which is also throttled). */
|
|
12
|
+
readonly viewportSize: Signal<ViewportSize>;
|
|
13
|
+
/** Viewport size type signal (which is also throttled). */
|
|
14
|
+
readonly sizeType: Signal<ViewportSizeTypeInfo>;
|
|
10
15
|
/** Window resize observable. */
|
|
11
16
|
readonly resizeSnap$: Observable<ViewportSize>;
|
|
12
17
|
/** Window resize observable (which is also throttled). */
|
|
@@ -21,14 +26,7 @@ export declare class ViewportService {
|
|
|
21
26
|
readonly size$: Observable<ViewportSize>;
|
|
22
27
|
/** Viewport size observable. */
|
|
23
28
|
readonly sizeSnap$: Observable<ViewportSize>;
|
|
24
|
-
|
|
25
|
-
get sizeTypeMap(): Dictionary<ViewportSizeTypeInfo>;
|
|
26
|
-
/** Viewport size types list ordered by type, smallest to largest. */
|
|
27
|
-
get sizeTypes(): ViewportSizeTypeInfo[];
|
|
28
|
-
private _sizeTypeMap;
|
|
29
|
-
private _sizeTypes;
|
|
30
|
-
private _sizeTypeSnapshot;
|
|
31
|
-
constructor(windowRef: WindowRef, viewportServerSize: ViewportServerSizeService);
|
|
29
|
+
constructor();
|
|
32
30
|
/** Returns the current viewport size */
|
|
33
31
|
private getViewportSize;
|
|
34
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<ViewportService, never>;
|